summaryrefslogtreecommitdiffstats
path: root/sql
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-07-01 18:15:00 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-07-01 18:15:00 +0000
commita2a2e32c02643a0cec111511220227703fda1cd5 (patch)
tree69cc2b631234c2a8e026b9cd4d72676c61c594df /sql
parentReleasing progress-linux version 1:10.11.8-1~progress7.99u1. (diff)
downloadmariadb-a2a2e32c02643a0cec111511220227703fda1cd5.tar.xz
mariadb-a2a2e32c02643a0cec111511220227703fda1cd5.zip
Merging upstream version 1:11.4.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sql')
-rw-r--r--sql/CMakeLists.txt36
-rw-r--r--sql/char_buffer.h103
-rw-r--r--sql/charset_collations.cc117
-rw-r--r--sql/charset_collations.h247
-rw-r--r--sql/client_settings.h1
-rw-r--r--sql/ddl_log.cc2
-rw-r--r--sql/debug.cc2
-rw-r--r--sql/debug.h1
-rw-r--r--sql/deprecation.h67
-rw-r--r--sql/encryption.cc13
-rw-r--r--sql/events.cc74
-rw-r--r--sql/events.h2
-rw-r--r--sql/field.cc16
-rw-r--r--sql/field.h86
-rw-r--r--sql/field_conv.cc82
-rw-r--r--sql/filesort.cc385
-rw-r--r--sql/filesort.h2
-rw-r--r--sql/filesort_utils.cc337
-rw-r--r--sql/filesort_utils.h85
-rw-r--r--sql/gen_win_tzname_data.ps112
-rw-r--r--sql/gtid_index.cc1434
-rw-r--r--sql/gtid_index.h521
-rw-r--r--sql/ha_partition.cc223
-rw-r--r--sql/ha_partition.h19
-rw-r--r--sql/ha_sequence.cc3
-rw-r--r--sql/handler.cc424
-rw-r--r--sql/handler.h722
-rw-r--r--sql/item.cc133
-rw-r--r--sql/item.h57
-rw-r--r--sql/item_cmpfunc.cc48
-rw-r--r--sql/item_cmpfunc.h16
-rw-r--r--sql/item_create.cc238
-rw-r--r--sql/item_func.cc64
-rw-r--r--sql/item_func.h8
-rw-r--r--sql/item_jsonfunc.cc836
-rw-r--r--sql/item_jsonfunc.h160
-rw-r--r--sql/item_strfunc.cc295
-rw-r--r--sql/item_strfunc.h103
-rw-r--r--sql/item_subselect.cc71
-rw-r--r--sql/item_timefunc.cc40
-rw-r--r--sql/item_timefunc.h4
-rw-r--r--sql/json_schema.cc2874
-rw-r--r--sql/json_schema.h827
-rw-r--r--sql/json_schema_helper.cc102
-rw-r--r--sql/json_schema_helper.h30
-rw-r--r--sql/json_table.cc26
-rw-r--r--sql/keycaches.cc141
-rw-r--r--sql/keycaches.h2
-rw-r--r--sql/lex.h3
-rw-r--r--sql/lex_charset.cc79
-rw-r--r--sql/lex_charset.h90
-rw-r--r--sql/lex_ident.h163
-rw-r--r--sql/lex_string.h25
-rw-r--r--sql/lock.cc19
-rw-r--r--sql/lock.h4
-rw-r--r--sql/log.cc1930
-rw-r--r--sql/log.h266
-rw-r--r--sql/log_cache.h272
-rw-r--r--sql/log_event.cc508
-rw-r--r--sql/log_event.h1001
-rw-r--r--sql/log_event_client.cc469
-rw-r--r--sql/log_event_old.cc2749
-rw-r--r--sql/log_event_old.h569
-rw-r--r--sql/log_event_server.cc2024
-rw-r--r--sql/mdl.h6
-rw-r--r--sql/mf_iocache_encr.cc8
-rw-r--r--sql/multi_range_read.cc255
-rw-r--r--sql/multi_range_read.h2
-rw-r--r--sql/my_json_writer.h2
-rw-r--r--sql/mysqld.cc593
-rw-r--r--sql/mysqld.h44
-rw-r--r--sql/net_serv.cc540
-rw-r--r--sql/online_alter.cc454
-rw-r--r--sql/opt_index_cond_pushdown.cc13
-rw-r--r--sql/opt_range.cc1415
-rw-r--r--sql/opt_range.h22
-rw-r--r--sql/opt_rewrite_date_cmp.cc337
-rw-r--r--sql/opt_rewrite_date_cmp.h118
-rw-r--r--sql/opt_rewrite_remove_casefold.cc148
-rw-r--r--sql/opt_split.cc139
-rw-r--r--sql/opt_subselect.cc648
-rw-r--r--sql/opt_subselect.h25
-rw-r--r--sql/opt_sum.cc54
-rw-r--r--sql/opt_trace.cc122
-rw-r--r--sql/opt_trace.h6
-rw-r--r--sql/optimizer_costs.h162
-rw-r--r--sql/optimizer_defaults.h190
-rw-r--r--sql/password.c12
-rw-r--r--sql/privilege.h285
-rw-r--r--sql/records.cc26
-rw-r--r--sql/replication.h24
-rw-r--r--sql/rowid_filter.cc215
-rw-r--r--sql/rowid_filter.h141
-rw-r--r--sql/rpl_gtid.cc431
-rw-r--r--sql/rpl_gtid.h39
-rw-r--r--sql/rpl_mi.cc13
-rw-r--r--sql/rpl_mi.h4
-rw-r--r--sql/rpl_record.cc492
-rw-r--r--sql/rpl_record.h3
-rw-r--r--sql/rpl_record_old.cc199
-rw-r--r--sql/rpl_record_old.h35
-rw-r--r--sql/rpl_rli.cc26
-rw-r--r--sql/rpl_rli.h39
-rw-r--r--sql/rpl_utility.cc6
-rw-r--r--sql/rpl_utility.h49
-rw-r--r--sql/select_handler.cc94
-rw-r--r--sql/select_handler.h65
-rw-r--r--sql/semisync_master.cc2
-rw-r--r--sql/session_tracker.cc15
-rw-r--r--sql/session_tracker.h17
-rw-r--r--sql/set_var.cc23
-rw-r--r--sql/set_var.h8
-rw-r--r--sql/share/CMakeLists.txt6
-rw-r--r--sql/share/README.md51
-rw-r--r--sql/share/errmsg-utf8.txt1537
-rwxr-xr-xsql/share/insert_translations_into_errmsg.py279
-rw-r--r--sql/simple_tokenizer.h85
-rw-r--r--sql/slave.cc598
-rw-r--r--sql/sp.cc120
-rw-r--r--sql/sp.h21
-rw-r--r--sql/sp_cache.cc1
-rw-r--r--sql/sp_head.cc1840
-rw-r--r--sql/sp_head.h1169
-rw-r--r--sql/sp_instr.cc2114
-rw-r--r--sql/sp_instr.h1626
-rw-r--r--sql/sp_rcontext.cc12
-rw-r--r--sql/sp_rcontext.h6
-rw-r--r--sql/sql_acl.cc222
-rw-r--r--sql/sql_acl.h5
-rw-r--r--sql/sql_alter.cc21
-rw-r--r--sql/sql_alter.h3
-rw-r--r--sql/sql_analyze_stmt.h3
-rw-r--r--sql/sql_base.cc136
-rw-r--r--sql/sql_base.h19
-rw-r--r--sql/sql_bitmap.h12
-rw-r--r--sql/sql_cache.cc6
-rw-r--r--sql/sql_cache.h5
-rw-r--r--sql/sql_class.cc503
-rw-r--r--sql/sql_class.h620
-rw-r--r--sql/sql_cmd.h212
-rw-r--r--sql/sql_connect.cc26
-rw-r--r--sql/sql_connect.h1
-rw-r--r--sql/sql_const.h61
-rw-r--r--sql/sql_db.cc185
-rw-r--r--sql/sql_db.h11
-rw-r--r--sql/sql_delete.cc704
-rw-r--r--sql/sql_delete.h82
-rw-r--r--sql/sql_derived.cc40
-rw-r--r--sql/sql_error.h19
-rw-r--r--sql/sql_explain.cc168
-rw-r--r--sql/sql_explain.h24
-rw-r--r--sql/sql_handler.cc7
-rw-r--r--sql/sql_help.cc47
-rw-r--r--sql/sql_insert.cc7
-rw-r--r--sql/sql_join_cache.cc16
-rw-r--r--sql/sql_lex.cc593
-rw-r--r--sql/sql_lex.h264
-rw-r--r--sql/sql_load.cc82
-rw-r--r--sql/sql_locale.cc88
-rw-r--r--sql/sql_parse.cc570
-rw-r--r--sql/sql_parse.h21
-rw-r--r--sql/sql_partition.cc15
-rw-r--r--sql/sql_plugin.cc34
-rw-r--r--sql/sql_plugin_services.inl3
-rw-r--r--sql/sql_prepare.cc313
-rw-r--r--sql/sql_prepare.h13
-rw-r--r--sql/sql_priv.h203
-rw-r--r--sql/sql_reload.cc2
-rw-r--r--sql/sql_repl.cc418
-rw-r--r--sql/sql_repl.h2
-rw-r--r--sql/sql_select.cc4719
-rw-r--r--sql/sql_select.h162
-rw-r--r--sql/sql_servers.cc2
-rw-r--r--sql/sql_show.cc754
-rw-r--r--sql/sql_show.h4
-rw-r--r--sql/sql_sort.h29
-rw-r--r--sql/sql_statistics.cc18
-rw-r--r--sql/sql_string.cc1
-rw-r--r--sql/sql_string.h12
-rw-r--r--sql/sql_table.cc752
-rw-r--r--sql/sql_test.cc33
-rw-r--r--sql/sql_time.cc316
-rw-r--r--sql/sql_time.h22
-rw-r--r--sql/sql_trigger.cc123
-rw-r--r--sql/sql_trigger.h14
-rw-r--r--sql/sql_tvc.cc29
-rw-r--r--sql/sql_type.cc158
-rw-r--r--sql/sql_type.h65
-rw-r--r--sql/sql_type_fixedbin.h2
-rw-r--r--sql/sql_type_timeofday.h67
-rw-r--r--sql/sql_udf.cc16
-rw-r--r--sql/sql_union.cc373
-rw-r--r--sql/sql_update.cc757
-rw-r--r--sql/sql_update.h89
-rw-r--r--sql/sql_used.h33
-rw-r--r--sql/sql_view.cc10
-rw-r--r--sql/sql_window.cc10
-rw-r--r--sql/sql_yacc.yy1003
-rw-r--r--sql/structs.h66
-rw-r--r--sql/sys_vars.cc639
-rw-r--r--sql/sys_vars.inl501
-rw-r--r--sql/table.cc744
-rw-r--r--sql/table.h124
-rw-r--r--sql/temporary_tables.cc12
-rw-r--r--sql/transaction.cc70
-rw-r--r--sql/tztime.cc146
-rw-r--r--sql/tztime.h14
-rw-r--r--sql/uniques.cc43
-rw-r--r--sql/uniques.h4
-rw-r--r--sql/unireg.cc4
-rw-r--r--sql/unireg.h7
-rw-r--r--sql/vers_string.h3
-rw-r--r--sql/win_tzname_data.h140
-rw-r--r--sql/winservice.c12
-rw-r--r--sql/wsrep_binlog.cc6
-rw-r--r--sql/wsrep_check_opts.cc2
-rw-r--r--sql/wsrep_client_service.cc3
-rw-r--r--sql/wsrep_event_service.cc23
-rw-r--r--sql/wsrep_event_service.h49
-rw-r--r--sql/wsrep_high_priority_service.cc3
-rw-r--r--sql/wsrep_mysqld.cc39
-rw-r--r--sql/wsrep_plugin.cc326
-rw-r--r--sql/wsrep_plugin.h36
-rw-r--r--sql/wsrep_server_state.cc59
-rw-r--r--sql/wsrep_server_state.h18
-rw-r--r--sql/wsrep_sst.cc3
-rw-r--r--sql/wsrep_status.h7
-rw-r--r--sql/wsrep_var.cc59
-rw-r--r--sql/wsrep_var.h5
-rw-r--r--sql/xa.cc12
-rw-r--r--sql/xa.h1
-rw-r--r--sql/yy_mariadb.cc55583
-rw-r--r--sql/yy_mariadb.hh191
-rw-r--r--sql/yy_oracle.cc56052
-rw-r--r--sql/yy_oracle.hh191
235 files changed, 92405 insertions, 76444 deletions
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index a16d1972..0195555e 100644
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -22,6 +22,7 @@ IF(WITH_WSREP AND NOT EMBEDDED_LIBRARY)
wsrep_server_service.cc
wsrep_storage_service.cc
wsrep_server_state.cc
+ wsrep_event_service.cc
wsrep_status.cc
wsrep_allowlist_service.cc
wsrep_utils.cc
@@ -37,7 +38,8 @@ IF(WITH_WSREP AND NOT EMBEDDED_LIBRARY)
wsrep_schema.cc
wsrep_plugin.cc
service_wsrep.cc
- )
+ )
+ MYSQL_ADD_PLUGIN(wsrep_provider ${WSREP_SOURCES} DEFAULT NOT_EMBEDDED LINK_LIBRARIES wsrep-lib wsrep_api_v26)
MYSQL_ADD_PLUGIN(wsrep ${WSREP_SOURCES} MANDATORY NOT_EMBEDDED LINK_LIBRARIES wsrep-lib wsrep_api_v26)
IF(VISIBILITY_HIDDEN_FLAG AND TARGET wsrep)
# wsrep_info plugin needs some wsrep symbols from inside mysqld
@@ -108,11 +110,13 @@ SET (SQL_SOURCE
key.cc log.cc lock.cc
log_event.cc log_event_server.cc
rpl_record.cc rpl_reporting.cc
- log_event_old.cc rpl_record_old.cc
mf_iocache.cc my_decimal.cc
mysqld.cc net_serv.cc keycaches.cc
../sql-common/client_plugin.c
- opt_range.cc opt_sum.cc
+ opt_range.cc
+ opt_rewrite_date_cmp.cc
+ opt_rewrite_remove_casefold.cc
+ opt_sum.cc
../sql-common/pack.c parse_file.cc password.c procedure.cc
protocol.cc records.cc repl_failsafe.cc rpl_filter.cc
session_tracker.cc
@@ -160,12 +164,13 @@ SET (SQL_SOURCE
opt_table_elimination.cc sql_expression_cache.cc
gcalc_slicescan.cc gcalc_tools.cc
my_apc.cc mf_iocache_encr.cc item_jsonfunc.cc
- my_json_writer.cc
- rpl_gtid.cc rpl_parallel.cc
+ my_json_writer.cc json_schema.cc json_schema_helper.cc
+ rpl_gtid.cc gtid_index.cc rpl_parallel.cc
semisync.cc semisync_master.cc semisync_slave.cc
semisync_master_ack_receiver.cc
+ sp_instr.cc
sql_schema.cc
- lex_charset.cc
+ lex_charset.cc charset_collations.cc
sql_type.cc sql_mode.cc sql_type_json.cc
sql_type_string.cc
sql_type_geom.cc
@@ -176,6 +181,7 @@ SET (SQL_SOURCE
sql_tvc.cc sql_tvc.h
opt_split.cc
rowid_filter.cc rowid_filter.h
+ optimizer_costs.h optimizer_defaults.h
opt_trace.cc
table_cache.cc encryption.cc temporary_tables.cc
json_table.cc
@@ -216,6 +222,9 @@ MYSQL_ADD_PLUGIN(partition ha_partition.cc STORAGE_ENGINE DEFAULT STATIC_ONLY
RECOMPILE_FOR_EMBEDDED)
MYSQL_ADD_PLUGIN(sql_sequence ha_sequence.cc STORAGE_ENGINE MANDATORY STATIC_ONLY
RECOMPILE_FOR_EMBEDDED)
+MYSQL_ADD_PLUGIN(online_alter_log online_alter.cc STORAGE_ENGINE MANDATORY
+STATIC_ONLY NOT_EMBEDDED)
+
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
MAYBE_DISABLE_IPO(sql)
@@ -223,10 +232,10 @@ DTRACE_INSTRUMENT(sql)
TARGET_LINK_LIBRARIES(sql
mysys mysys_ssl dbug strings vio pcre2-8
tpool
+ online_alter_log
${LIBWRAP} ${LIBCRYPT} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}
${SSL_LIBRARIES}
${LIBSYSTEMD})
-
IF(TARGET pcre2)
ADD_DEPENDENCIES(sql pcre2)
ENDIF()
@@ -290,6 +299,7 @@ IF(MSVC OR CMAKE_SYSTEM_NAME MATCHES AIX)
sql_builtins
)
IF(MSVC)
+ TARGET_LINK_LIBRARIES(server PRIVATE icuuc icuin)
IF(NOT WITHOUT_DYNAMIC_PLUGINS)
SET_TARGET_PROPERTIES(server PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
ENDIF()
@@ -482,14 +492,14 @@ IF(WIN32)
ADD_CUSTOM_COMMAND(OUTPUT
${my_bootstrap_sql}
COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/scripts
- cmd /c copy mysql_system_tables.sql+mysql_system_tables_data.sql+fill_help_tables.sql+mysql_performance_tables.sql+mysql_test_db.sql+mysql_sys_schema.sql ${native_outfile}
+ cmd /c copy mariadb_system_tables.sql+mariadb_system_tables_data.sql+fill_help_tables.sql+mariadb_performance_tables.sql+mariadb_test_db.sql+mariadb_sys_schema.sql ${native_outfile}
DEPENDS
- ${CMAKE_SOURCE_DIR}/scripts/mysql_system_tables.sql
- ${CMAKE_SOURCE_DIR}/scripts/mysql_system_tables_data.sql
+ ${CMAKE_SOURCE_DIR}/scripts/mariadb_system_tables.sql
+ ${CMAKE_SOURCE_DIR}/scripts/mariadb_system_tables_data.sql
${CMAKE_SOURCE_DIR}/scripts/fill_help_tables.sql
- ${CMAKE_SOURCE_DIR}/scripts/mysql_performance_tables.sql
- ${CMAKE_SOURCE_DIR}/scripts/mysql_test_db.sql
- ${CMAKE_BINARY_DIR}/scripts/mysql_sys_schema.sql
+ ${CMAKE_SOURCE_DIR}/scripts/mariadb_performance_tables.sql
+ ${CMAKE_SOURCE_DIR}/scripts/mariadb_test_db.sql
+ ${CMAKE_BINARY_DIR}/scripts/mariadb_sys_schema.sql
)
ADD_CUSTOM_COMMAND(
diff --git a/sql/char_buffer.h b/sql/char_buffer.h
new file mode 100644
index 00000000..7b855f54
--- /dev/null
+++ b/sql/char_buffer.h
@@ -0,0 +1,103 @@
+#ifndef CHAR_BUFFER_INCLUDED
+#define CHAR_BUFFER_INCLUDED
+/*
+ Copyright (c) 2023, MariaDB
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2 of
+ the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+*/
+
+
+/*
+ A string buffer with length.
+ This template class is useful to store things like database, table names,
+ whose maximum length a small fixed known value. Mainly to be used as
+ stack variables to store temporary values.
+
+ Can store exact string copies or casefolded string copies.
+ The stored value is returned as a LEX_CSTRING.
+*/
+template<size_t buff_sz>
+class CharBuffer
+{
+ char m_buff[buff_sz + 1 /* one extra byte for '\0' */];
+ size_t m_length;
+ bool is_sane() const
+ {
+ return m_length <= buff_sz; // One byte is still left for '\0'
+ }
+ bool buffer_overlaps(const LEX_CSTRING &str) const
+ {
+ return str.str + str.length >= m_buff && str.str <= m_buff + sizeof(m_buff);
+ }
+public:
+ constexpr size_t max_data_size() const
+ {
+ return buff_sz; // The maximum data size, without the trailing '\0' byte.
+ }
+ CharBuffer()
+ :m_length(0)
+ {
+ m_buff[0]= '\0';
+ }
+ CharBuffer<buff_sz> & copy_bin(const LEX_CSTRING &str)
+ {
+ DBUG_ASSERT(!buffer_overlaps(str));
+ m_length= MY_MIN(buff_sz, str.length);
+ memcpy(m_buff, str.str, m_length);
+ m_buff[m_length]= '\0';
+ return *this;
+ }
+ CharBuffer<buff_sz> & copy_casedn(CHARSET_INFO *cs, const LEX_CSTRING &str)
+ {
+ DBUG_ASSERT(!buffer_overlaps(str));
+ m_length= cs->cset->casedn(cs, str.str, str.length, m_buff, buff_sz);
+ /*
+ casedn() never writes outsize of buff_sz (unless a bug in casedn()),
+ so it's safe to write '\0' at the position m_length:
+ */
+ DBUG_ASSERT(is_sane());
+ m_buff[m_length]= '\0';
+ return *this;
+ }
+ CharBuffer<buff_sz> & copy_casedn(CHARSET_INFO *cs, const LEX_CSTRING &str,
+ bool casedn)
+ {
+ casedn ? copy_casedn(cs, str) : copy_bin(str);
+ return *this;
+ }
+ // Append a string with casedn conversion
+ CharBuffer<buff_sz> & append_casedn(CHARSET_INFO *cs, const LEX_CSTRING &str)
+ {
+ DBUG_ASSERT(is_sane());
+ DBUG_ASSERT(!buffer_overlaps(str));
+ size_t casedn_length= cs->casedn(str.str, str.length,
+ m_buff + m_length, buff_sz - m_length);
+ m_length+= casedn_length;
+ DBUG_ASSERT(is_sane());
+ m_buff[m_length]= '\0';
+ return *this;
+ }
+
+ LEX_CSTRING to_lex_cstring() const
+ {
+ return LEX_CSTRING{m_buff, m_length};
+ }
+
+ const char *ptr() const { return m_buff; }
+ size_t length() const { return m_length; }
+
+};
+
+#endif // CHAR_BUFFER_INCLUDED
diff --git a/sql/charset_collations.cc b/sql/charset_collations.cc
new file mode 100644
index 00000000..71321cc2
--- /dev/null
+++ b/sql/charset_collations.cc
@@ -0,0 +1,117 @@
+/* Copyright (c) 2023, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
+
+
+#include "my_global.h"
+#include "my_sys.h"
+#include "lex_charset.h"
+#include "mysqld_error.h"
+#include "charset_collations.h"
+#include "simple_tokenizer.h"
+
+bool Charset_collation_map_st::insert_or_replace(
+ const Lex_exact_charset &charset,
+ const Lex_extended_collation &collation,
+ bool error_on_conflicting_duplicate)
+{
+ Lex_exact_charset_opt_extended_collate res(charset);
+ Sql_used used;
+ if (res.merge_collation_override(&used, *this, collation))
+ return true;
+
+ if (error_on_conflicting_duplicate)
+ {
+ const Elem_st *dup;
+ if ((dup= find_elem_by_charset_id(charset.charset_info()->number)) &&
+ dup->to() != res.collation().charset_info())
+ {
+ my_error(ER_CONFLICTING_DECLARATIONS, MYF(0),
+ "", dup->to()->coll_name.str,
+ "", res.collation().charset_info()->coll_name.str);
+ return true;
+ }
+ }
+ return insert_or_replace(Elem(charset.charset_info(),
+ res.collation().charset_info()));
+}
+
+
+bool Charset_collation_map_st::insert_or_replace(
+ const LEX_CSTRING &cs_name,
+ const LEX_CSTRING &cl_name,
+ bool error_on_conflicting_duplicate,
+ myf utf8_flag)
+{
+ char charset_name_c[MY_CS_CHARACTER_SET_NAME_SIZE + 1/*for '\0'*/];
+ strmake(charset_name_c, cs_name.str, cs_name.length);
+ CHARSET_INFO *cs= get_charset_by_csname(charset_name_c,
+ MY_CS_PRIMARY, utf8_flag);
+ if (!cs)
+ {
+ my_error(ER_UNKNOWN_CHARACTER_SET, MYF(0), charset_name_c);
+ return true;
+ }
+
+ char collation_name_c[MY_CS_COLLATION_NAME_SIZE + 1/*for '\0'*/];
+ strmake(collation_name_c, cl_name.str, cl_name.length);
+
+ Lex_exact_collation tmpec(&my_charset_bin);
+ Lex_extended_collation tmp(tmpec);
+ if (tmp.set_by_name(collation_name_c, utf8_flag))
+ return true;
+
+ return insert_or_replace(Lex_exact_charset(cs), tmp,
+ error_on_conflicting_duplicate);
+}
+
+
+bool Charset_collation_map_st::from_text(const LEX_CSTRING &str, myf utf8_flag)
+{
+ init();
+ Simple_tokenizer stream(str.str, str.length);
+
+ /*
+ Allow relaxed comma parsing:
+ SET @@character_set_collations=
+ ',,,utf8mb3 = utf8mb3_bin,,latin1 = latin1_bin,,,';
+ It makes it easier for the user to edit the value
+ using SQL functions CONCAT or REGEXP_REPLACE.
+ */
+ for ( ; ; )
+ {
+ LEX_CSTRING charset_name= stream.get_ident();
+ if (charset_name.length)
+ {
+ if (stream.get_char('='))
+ return true;
+ LEX_CSTRING collation_name= stream.get_ident();
+ if (!collation_name.length)
+ return true;
+ /*
+ Don't allow duplicate conflicting declarations within the same string:
+ SET @@var='utf8mb3=utf8mb3_general_ci,utf8mb3=utf8mb3_bin';
+ */
+ if (insert_or_replace(charset_name, collation_name,
+ true/*err on dup*/, utf8_flag))
+ return true;
+ }
+ if (!stream.get_char(','))
+ continue;
+ if (stream.eof())
+ return false;
+ return true;
+ }
+ return false;
+}
diff --git a/sql/charset_collations.h b/sql/charset_collations.h
new file mode 100644
index 00000000..86d6ff6b
--- /dev/null
+++ b/sql/charset_collations.h
@@ -0,0 +1,247 @@
+/* Copyright (c) 2023, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
+
+#ifndef LEX_CHARSET_COLLATIONS_INCLUDED
+#define LEX_CHARSET_COLLATIONS_INCLUDED
+
+#include "sql_used.h"
+
+struct Charset_collation_map_st
+{
+public:
+
+ struct Elem_st
+ {
+ protected:
+ CHARSET_INFO *m_from; // From a character set
+ CHARSET_INFO *m_to; // To a collation
+ static size_t print_lex_string(char *dst, const LEX_CSTRING &str)
+ {
+ memcpy(dst, str.str, str.length);
+ return str.length;
+ }
+ public:
+ /*
+ Size in text format: 'utf8mb4=utf8mb4_unicode_ai_ci'
+ */
+ static constexpr size_t text_size_max()
+ {
+ return MY_CS_CHARACTER_SET_NAME_SIZE + 1 +
+ MY_CS_COLLATION_NAME_SIZE;
+ }
+ CHARSET_INFO *from() const
+ {
+ return m_from;
+ }
+ CHARSET_INFO *to() const
+ {
+ return m_to;
+ }
+ void set_to(CHARSET_INFO *cl)
+ {
+ m_to= cl;
+ }
+ size_t print(char *dst) const
+ {
+ const char *dst0= dst;
+ dst+= print_lex_string(dst, m_from->cs_name);
+ *dst++= '=';
+ dst+= print_lex_string(dst, m_to->coll_name);
+ return (size_t) (dst - dst0);
+ }
+ int cmp_by_charset_id(const Elem_st &rhs) const
+ {
+ return m_from->number < rhs.m_from->number ? -1 :
+ m_from->number > rhs.m_from->number ? +1 : 0;
+ }
+ };
+ class Elem: public Elem_st
+ {
+ public:
+ Elem(CHARSET_INFO *from, CHARSET_INFO *to)
+ {
+ m_from= from;
+ m_to= to;
+ }
+ };
+protected:
+ Elem_st m_element[8]; // Should be enough for now
+ uint m_count;
+ uint m_version;
+
+ static int cmp_by_charset_id(const void *a, const void *b)
+ {
+ return static_cast<const Elem_st*>(a)->
+ cmp_by_charset_id(*static_cast<const Elem_st*>(b));
+ }
+
+ void sort()
+ {
+ qsort(m_element, m_count, sizeof(Elem_st), cmp_by_charset_id);
+ }
+
+ const Elem_st *find_elem_by_charset_id(uint id) const
+ {
+ if (!m_count)
+ return NULL;
+ int first= 0, last= ((int) m_count) - 1;
+ for ( ; first <= last; )
+ {
+ const int middle= (first + last) / 2;
+ DBUG_ASSERT(middle >= 0);
+ DBUG_ASSERT(middle < (int) m_count);
+ const uint middle_id= m_element[middle].from()->number;
+ if (middle_id == id)
+ return &m_element[middle];
+ if (middle_id < id)
+ first= middle + 1;
+ else
+ last= middle - 1;
+ }
+ return NULL;
+ }
+
+ bool insert(const Elem_st &elem)
+ {
+ DBUG_ASSERT(elem.from()->state & MY_CS_PRIMARY);
+ if (m_count >= array_elements(m_element))
+ return true;
+ m_element[m_count]= elem;
+ m_count++;
+ sort();
+ return false;
+ }
+
+ bool insert_or_replace(const Elem_st &elem)
+ {
+ DBUG_ASSERT(elem.from()->state & MY_CS_PRIMARY);
+ const Elem_st *found= find_elem_by_charset_id(elem.from()->number);
+ if (found)
+ {
+ const_cast<Elem_st*>(found)->set_to(elem.to());
+ return false;
+ }
+ return insert(elem);
+ }
+
+public:
+ void init()
+ {
+ m_count= 0;
+ m_version= 0;
+ }
+ uint count() const
+ {
+ return m_count;
+ }
+ uint version() const
+ {
+ return m_version;
+ }
+ void set(const Charset_collation_map_st &rhs, uint version_increment)
+ {
+ uint version= m_version;
+ *this= rhs;
+ m_version= version + version_increment;
+ }
+ const Elem_st & operator[](uint pos) const
+ {
+ DBUG_ASSERT(pos < m_count);
+ return m_element[pos];
+ }
+ bool insert_or_replace(const class Lex_exact_charset &cs,
+ const class Lex_extended_collation &cl,
+ bool error_on_conflicting_duplicate);
+ bool insert_or_replace(const LEX_CSTRING &cs,
+ const LEX_CSTRING &cl,
+ bool error_on_conflicting_duplicate,
+ myf utf8_flag);
+ CHARSET_INFO *get_collation_for_charset(Sql_used *used,
+ CHARSET_INFO *cs) const
+ {
+ DBUG_ASSERT(cs->state & MY_CS_PRIMARY);
+ const Elem_st *elem= find_elem_by_charset_id(cs->number);
+ used->used|= Sql_used::CHARACTER_SET_COLLATIONS_USED;
+ if (elem)
+ return elem->to();
+ return cs;
+ }
+ size_t text_format_nbytes_needed() const
+ {
+ return (Elem_st::text_size_max() + 1/* for ',' */) * m_count;
+ }
+ size_t print(char *dst, size_t nbytes_available) const
+ {
+ const char *dst0= dst;
+ const char *end= dst + nbytes_available;
+ for (uint i= 0; i < m_count; i++)
+ {
+ if (Elem_st::text_size_max() + 1/* for ',' */ > (size_t) (end - dst))
+ break;
+ if (i > 0)
+ *dst++= ',';
+ dst+= m_element[i].print(dst);
+ }
+ return dst - dst0;
+ }
+ static constexpr size_t binary_size_max()
+ {
+ return 1/*count*/ + 4 * array_elements(m_element);
+ }
+ size_t to_binary(char *dst) const
+ {
+ const char *dst0= dst;
+ *dst++= (char) (uchar) m_count;
+ for (uint i= 0; i < m_count; i++)
+ {
+ int2store(dst, (uint16) m_element[i].from()->number);
+ dst+= 2;
+ int2store(dst, (uint16) m_element[i].to()->number);
+ dst+= 2;
+ }
+ return (size_t) (dst - dst0);
+ }
+ size_t from_binary(const char *src, size_t srclen)
+ {
+ const char *src0= src;
+ init();
+ if (!srclen)
+ return 0; // Empty
+ uint count= (uchar) *src++;
+ if (srclen < 1 + 4 * count)
+ return 0;
+ for (uint i= 0; i < count; i++, src+= 4)
+ {
+ CHARSET_INFO *cs, *cl;
+ if (!(cs= get_charset(uint2korr(src), MYF(0))) ||
+ !(cl= get_charset(uint2korr(src + 2), MYF(0))))
+ {
+ /*
+ Unpacking from binary format happens on the slave side.
+ If for some reasons the slave does not know about a
+ character set or a collation, just skip the pair here.
+ This pair might not even be needed.
+ */
+ continue;
+ }
+ insert_or_replace(Elem(cs, cl));
+ }
+ return src - src0;
+ }
+ bool from_text(const LEX_CSTRING &str, myf utf8_flag);
+};
+
+
+#endif // LEX_CHARSET_COLLATIONS_INCLUDED
diff --git a/sql/client_settings.h b/sql/client_settings.h
index cc4981ec..93aa7f11 100644
--- a/sql/client_settings.h
+++ b/sql/client_settings.h
@@ -20,7 +20,6 @@
#error You have already included an client_settings.h and it should not be included twice
#endif /* CLIENT_SETTINGS_INCLUDED */
-#include <thr_alarm.h>
#include <sql_common.h>
/*
diff --git a/sql/ddl_log.cc b/sql/ddl_log.cc
index ffd2c24f..0a284011 100644
--- a/sql/ddl_log.cc
+++ b/sql/ddl_log.cc
@@ -2744,6 +2744,8 @@ int ddl_log_execute_recovery()
thd->thread_stack= (char*) &thd;
thd->store_globals();
thd->init(); // Needed for error messages
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:ddl_log_execute_recovery"),
+ default_charset_info);
thd->log_all_errors= (global_system_variables.log_warnings >= 3);
recovery_state.drop_table.free();
diff --git a/sql/debug.cc b/sql/debug.cc
index beb66775..38131232 100644
--- a/sql/debug.cc
+++ b/sql/debug.cc
@@ -35,7 +35,7 @@ static const LEX_CSTRING debug_crash_counter=
static const LEX_CSTRING debug_error_counter=
{ STRING_WITH_LEN("debug_error_counter") };
-static bool debug_decrement_counter(const LEX_CSTRING *name)
+bool debug_decrement_counter(const LEX_CSTRING *name)
{
THD *thd= current_thd;
user_var_entry *entry= (user_var_entry*)
diff --git a/sql/debug.h b/sql/debug.h
index 48bae774..f0eaa79e 100644
--- a/sql/debug.h
+++ b/sql/debug.h
@@ -31,6 +31,7 @@
#ifndef DBUG_OFF
void debug_crash_here(const char *keyword);
bool debug_simulate_error(const char *keyword, uint error);
+bool debug_decrement_counter(const LEX_CSTRING *name);
#else
#define debug_crash_here(A) do { } while(0)
#define debug_simulate_error(A, B) 0
diff --git a/sql/deprecation.h b/sql/deprecation.h
new file mode 100644
index 00000000..67c45368
--- /dev/null
+++ b/sql/deprecation.h
@@ -0,0 +1,67 @@
+/*
+
+In the current release model, versions are released like the following
+(the table shows the year/quarter of the planned GA release):
+
+ Q1 Q2 Q3 Q4
+2022 10.7 10.8 10.9 10.10
+2023 10.11-LTS 11.0 11.1 11.2
+2024 11.3 11.4 11.5 11.6
+2025 11.7-LTS 12.0 12.1 12.2
+2026 12.3 12.4 12.5 12.6
+2027 12.7-LTS 13.0 13.1 13.2
+2028 13.3 13.4 13.5 13.6
+2029 13.7-LTS 14.0 14.1 14.2
+...
+
+A deprecated feature can be removed only when all releases when it's
+not deprecated have reached EOL. For example, if something was
+deprecated in 11.3, then 10.11 (where it wasn't deprecated) will reach
+EOL in Q1 2028 (standard 5 years LTS life time). Meaning, the feature can
+be removed in 13.4.
+
+When the release model changes, the table above and templates below
+have to be updated.
+*/
+
+template<uint V> static inline void check_deprecated_version(void)
+{
+ static_assert (
+ V <= 1004 ? MYSQL_VERSION_ID < 110500 : /* until 10.4 EOL */
+ V <= 1005 ? MYSQL_VERSION_ID < 120100 : /* until 10.5 EOL */
+ V <= 1010 ? MYSQL_VERSION_ID < 120500 : /* until 10.6 EOL */
+ V <= 1106 ? MYSQL_VERSION_ID < 130400 : /* until 10.11 EOL */
+ V == 999999, /* only for sys_var::do_deprecated_warning() */
+ "check_deprecated_version failed"
+ );
+}
+
+/*
+ V is the 2-component 4-digit version where something was deprecated.
+ For example, if deprecated in 11.2: warn_deprecated<1102>(thd, "something")
+*/
+template<uint V> static inline void warn_deprecated(THD *thd,
+ const char *what, const char *to= NULL)
+{
+ check_deprecated_version<V>();
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WARN_DEPRECATED_SYNTAX, ER_THD(thd, to && *to
+ ? ER_WARN_DEPRECATED_SYNTAX
+ : ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
+ what, to);
+}
+
+template<uint V> static inline void warn_deprecated(const char *what,
+ const char *to= NULL)
+{
+ check_deprecated_version<V>();
+ sql_print_warning(to && *to
+ ? "'%s' is deprecated and will be removed in a future release. Please use %s instead"
+ : "'%s' is deprecated and will be removed in a future release",
+ what, to);
+}
+
+/* Prevent direct usage of the error that bypasses the template */
+#undef ER_WARN_DEPRECATED_SYNTAX
+#undef ER_WARN_DEPRECATED_SYNTAX_WITH_VER
+#undef ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
diff --git a/sql/encryption.cc b/sql/encryption.cc
index 3c7ba2e9..ca161749 100644
--- a/sql/encryption.cc
+++ b/sql/encryption.cc
@@ -187,6 +187,10 @@ ret:
return rc;
}
+/** Run encryption or decryption on a block.
+ * `i32_1`, `i32_2`, and `i64` are used to create the initialization vector
+ * @invariant `src` and `dst` invariants are the same as in `encryption_crypt`
+ */
int do_crypt(const unsigned char* src, unsigned int slen,
unsigned char* dst, unsigned int* dlen,
struct st_encryption_scheme *scheme,
@@ -224,6 +228,10 @@ int do_crypt(const unsigned char* src, unsigned int slen,
iv, sizeof(iv), flag, scheme->key_id, key_version);
}
+/** Encrypt a block.
+ * `i32_1`, `i32_2`, and `i64` are used to create the initialization vector
+ * @invariant `src` and `dst` invariants are the same as in `encryption_crypt`
+ */
int encryption_scheme_encrypt(const unsigned char* src, unsigned int slen,
unsigned char* dst, unsigned int* dlen,
struct st_encryption_scheme *scheme,
@@ -234,7 +242,10 @@ int encryption_scheme_encrypt(const unsigned char* src, unsigned int slen,
i32_2, i64, ENCRYPTION_FLAG_NOPAD | ENCRYPTION_FLAG_ENCRYPT);
}
-
+/** Decrypt a block.
+ * `i32_1`, `i32_2`, and `i64` are used to create the initialization vector
+ * @invariant `src` and `dst` invariants are the same as in `encryption_crypt`
+ */
int encryption_scheme_decrypt(const unsigned char* src, unsigned int slen,
unsigned char* dst, unsigned int* dlen,
struct st_encryption_scheme *scheme,
diff --git a/sql/events.cc b/sql/events.cc
index 64ff2642..ec737ca5 100644
--- a/sql/events.cc
+++ b/sql/events.cc
@@ -119,7 +119,13 @@ bool Events::check_if_system_tables_error()
{
DBUG_ENTER("Events::check_if_system_tables_error");
- if (!inited)
+ if (opt_noacl)
+ {
+ my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0),
+ opt_bootstrap ? "--bootstrap" : "--skip-grant-tables");
+ DBUG_RETURN(TRUE);
+ }
+ else if (!inited)
{
my_error(ER_EVENTS_DB_ERROR, MYF(0));
DBUG_RETURN(TRUE);
@@ -341,7 +347,7 @@ Events::create_event(THD *thd, Event_parse_data *parse_data)
WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
if (lock_object_name(thd, MDL_key::EVENT,
- parse_data->dbname.str, parse_data->name.str))
+ parse_data->dbname, parse_data->name))
DBUG_RETURN(TRUE);
if (check_db_dir_existence(parse_data->dbname.str))
@@ -399,13 +405,7 @@ Events::create_event(THD *thd, Event_parse_data *parse_data)
char buffer[1024];
String log_query(buffer, sizeof(buffer), &my_charset_bin);
if (create_query_string(thd, &log_query))
- {
- my_message_sql(ER_STARTUP,
- "Event Error: An error occurred while creating query "
- "string, before writing it into binary log.",
- MYF(ME_ERROR_LOG));
- ret= true;
- }
+ ret= true; // EE_OUTOFMEMORY set by my_malloc()
else
{
/*
@@ -475,7 +475,7 @@ Events::update_event(THD *thd, Event_parse_data *parse_data,
WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
if (lock_object_name(thd, MDL_key::EVENT,
- parse_data->dbname.str, parse_data->name.str))
+ parse_data->dbname, parse_data->name))
DBUG_RETURN(TRUE);
if (check_db_dir_existence(parse_data->dbname.str))
@@ -509,8 +509,7 @@ Events::update_event(THD *thd, Event_parse_data *parse_data,
/*
Acquire mdl exclusive lock on target database name.
*/
- if (lock_object_name(thd, MDL_key::EVENT,
- new_dbname->str, new_name->str))
+ if (lock_object_name(thd, MDL_key::EVENT, *new_dbname, *new_name))
DBUG_RETURN(TRUE);
/* Check that the target database exists */
@@ -611,8 +610,7 @@ Events::drop_event(THD *thd, const LEX_CSTRING *dbname,
*/
save_binlog_format= thd->set_current_stmt_binlog_format_stmt();
- if (lock_object_name(thd, MDL_key::EVENT,
- dbname->str, name->str))
+ if (lock_object_name(thd, MDL_key::EVENT, *dbname, *name))
DBUG_RETURN(TRUE);
/* On error conditions my_error() is called so no need to handle here */
if (!(ret= db_repository->drop_event(thd, dbname, name, if_exists)))
@@ -648,14 +646,12 @@ wsrep_error_label:
*/
void
-Events::drop_schema_events(THD *thd, const char *db)
+Events::drop_schema_events(THD *thd, const LEX_CSTRING &db_lex)
{
- const LEX_CSTRING db_lex= { db, strlen(db) };
-
DBUG_ENTER("Events::drop_schema_events");
- DBUG_PRINT("enter", ("dropping events from %s", db));
+ DBUG_PRINT("enter", ("dropping events from %s", db_lex.str));
- DBUG_SLOW_ASSERT(ok_for_lower_case_names(db));
+ DBUG_SLOW_ASSERT(Lex_ident_fs(db_lex).ok_for_lower_case_names());
/*
Sic: no check if the scheduler is disabled or system tables
@@ -823,9 +819,6 @@ Events::show_create_event(THD *thd, const LEX_CSTRING *dbname,
int
Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */)
{
- const char *db= NULL;
- int ret;
- char db_tmp[SAFE_NAME_LEN];
DBUG_ENTER("Events::fill_schema_events");
/*
@@ -844,16 +837,16 @@ Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */)
*/
if (thd->lex->sql_command == SQLCOM_SHOW_EVENTS)
{
- LEX_CSTRING *lexdb= &thd->lex->first_select_lex()->db;
+ const LEX_CSTRING *lexdb= &thd->lex->first_select_lex()->db;
DBUG_ASSERT(lexdb);
if (!is_infoschema_db(lexdb) && !is_perfschema_db(lexdb) &&
check_access(thd, EVENT_ACL, lexdb->str, NULL, NULL, 0, 0))
DBUG_RETURN(1);
- db= normalize_db_name(lexdb->str, db_tmp, sizeof(db_tmp));
+ const DBNameBuffer db_tmp(*lexdb, lower_case_table_names);
+ const char *db= db_tmp.to_lex_cstring().str;
+ DBUG_RETURN(db_repository->fill_schema_events(thd, tables, db));
}
- ret= db_repository->fill_schema_events(thd, tables, db);
-
- DBUG_RETURN(ret);
+ DBUG_RETURN(db_repository->fill_schema_events(thd, tables, NULL));
}
@@ -886,14 +879,20 @@ Events::init(THD *thd, bool opt_noacl_or_bootstrap)
/*
Was disabled explicitly from the command line
*/
- if (opt_event_scheduler == Events::EVENTS_DISABLED ||
- opt_noacl_or_bootstrap)
+ if (opt_event_scheduler == Events::EVENTS_DISABLED || opt_bootstrap)
+ DBUG_RETURN(FALSE);
+ if (opt_noacl_or_bootstrap)
+ {
+ if (opt_event_scheduler == Events::EVENTS_ON)
+ sql_print_error("Event Scheduler will not function when starting with %s",
+ opt_bootstrap ? "--bootstrap" : "--skip-grant-tables");
+ opt_event_scheduler= EVENTS_DISABLED;
DBUG_RETURN(FALSE);
+ }
/* We need a temporary THD during boot */
if (!thd)
{
-
if (!(thd= new THD(0)))
{
res= TRUE;
@@ -906,6 +905,8 @@ Events::init(THD *thd, bool opt_noacl_or_bootstrap)
*/
thd->thread_stack= (char*) &thd;
thd->store_globals();
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:Events::init"),
+ default_charset_info);
/*
Set current time for the thread that handles events.
Current time is stored in data member start_time of THD class.
@@ -931,13 +932,11 @@ Events::init(THD *thd, bool opt_noacl_or_bootstrap)
}
/*
- Since we allow event DDL even if the scheduler is disabled,
+ Since we allow event DDL even if the scheduler is off,
check the system tables, as we might need them.
- If run with --skip-grant-tables or --bootstrap, don't try to do the
- check of system tables and don't complain: in these modes the tables
- are most likely not there and we're going to disable the event
- scheduler anyway.
+ If run with --skip-grant-tables or --bootstrap, we have already
+ disabled the event scheduler anyway.
*/
if (Event_db_repository::check_system_tables(thd))
{
@@ -952,7 +951,6 @@ Events::init(THD *thd, bool opt_noacl_or_bootstrap)
goto end;
}
-
DBUG_ASSERT(opt_event_scheduler == Events::EVENTS_ON ||
opt_event_scheduler == Events::EVENTS_OFF);
@@ -1294,9 +1292,7 @@ Events::load_events_from_db(THD *thd)
}
my_printf_error(ER_STARTUP,
"Event Scheduler: Loaded %d event%s",
- MYF(ME_ERROR_LOG |
- (global_system_variables.log_warnings) ?
- ME_NOTE: 0),
+ MYF(ME_ERROR_LOG | ME_NOTE),
count, (count == 1) ? "" : "s");
ret= FALSE;
diff --git a/sql/events.h b/sql/events.h
index 2fb13d7c..60231ded 100644
--- a/sql/events.h
+++ b/sql/events.h
@@ -119,7 +119,7 @@ public:
bool if_exists);
static void
- drop_schema_events(THD *thd, const char *db);
+ drop_schema_events(THD *thd, const LEX_CSTRING &db);
static bool
show_create_event(THD *thd, const LEX_CSTRING *dbname,
diff --git a/sql/field.cc b/sql/field.cc
index 4fbcc181..9cf95ec5 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -10613,7 +10613,6 @@ void Column_definition::create_length_to_internal_length_newdecimal()
bool check_expression(Virtual_column_info *vcol, const LEX_CSTRING *name,
enum_vcol_info_type type, Alter_info *alter_info)
-
{
bool ret;
Item::vcol_func_processor_result res;
@@ -10758,7 +10757,7 @@ bool Column_definition::check(THD *thd)
{
DBUG_ASSERT(vcol_info->expr);
vcol_info->set_handler(type_handler());
- if (check_expression(vcol_info, &field_name, vcol_info->stored_in_db
+ if (check_expression(vcol_info, &field_name, vcol_info->is_stored()
? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL))
DBUG_RETURN(TRUE);
}
@@ -11162,9 +11161,7 @@ bool Column_definition::set_compressed(const char *method)
bool Column_definition::set_compressed_deprecated(THD *thd, const char *method)
{
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
+ warn_deprecated<1004>(thd,
"<data type> <character set clause> ... COMPRESSED...",
"'<data type> COMPRESSED... <character set clause> ...'");
return set_compressed(method);
@@ -11607,6 +11604,15 @@ void Field::register_field_in_read_map()
}
+LEX_STRING Field::val_lex_string_strmake(MEM_ROOT *mem)
+{
+ StringBuffer<MAX_FIELD_WIDTH> str;
+ val_str(&str);
+ char *to= strmake_root(mem, str.ptr(), str.length());
+ return to ? LEX_STRING{to, str.length()} : LEX_STRING{NULL, 0};
+}
+
+
bool Field::val_str_nopad(MEM_ROOT *mem_root, LEX_CSTRING *to)
{
StringBuffer<MAX_FIELD_WIDTH> str;
diff --git a/sql/field.h b/sql/field.h
index 16cf689d..39e0da61 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -595,7 +595,6 @@ private:
public:
/* Flag indicating that the field is physically stored in the database */
- bool stored_in_db;
bool utf8; /* Already in utf8 */
bool automatic_name;
bool if_not_exists;
@@ -607,7 +606,7 @@ public:
Virtual_column_info()
:Type_handler_hybrid_field_type(&type_handler_null),
vcol_type((enum_vcol_info_type)VCOL_TYPE_NONE),
- in_partitioning_expr(FALSE), stored_in_db(FALSE),
+ in_partitioning_expr(FALSE),
utf8(TRUE), automatic_name(FALSE), expr(NULL), flags(0)
{
name.str= NULL;
@@ -636,11 +635,8 @@ public:
}
bool is_stored() const
{
- return stored_in_db;
- }
- void set_stored_in_db_flag(bool stored)
- {
- stored_in_db= stored;
+ /* after reading the row vcol value is already in the buffer */
+ return vcol_type == VCOL_GENERATED_STORED;
}
bool is_in_partitioning_expr() const
{
@@ -770,15 +766,15 @@ protected:
}
void error_generated_column_function_is_not_allowed(THD *thd, bool error)
const;
- static void do_field_eq(Copy_field *copy);
- static void do_field_int(Copy_field *copy);
- static void do_field_real(Copy_field *copy);
- static void do_field_string(Copy_field *copy);
- static void do_field_date(Copy_field *copy);
- static void do_field_temporal(Copy_field *copy, date_mode_t fuzzydate);
- static void do_field_datetime(Copy_field *copy);
- static void do_field_timestamp(Copy_field *copy);
- static void do_field_decimal(Copy_field *copy);
+ static void do_field_eq(const Copy_field *copy);
+ static void do_field_int(const Copy_field *copy);
+ static void do_field_real(const Copy_field *copy);
+ static void do_field_string(const Copy_field *copy);
+ static void do_field_date(const Copy_field *copy);
+ static void do_field_temporal(const Copy_field *copy, date_mode_t fuzzydate);
+ static void do_field_datetime(const Copy_field *copy);
+ static void do_field_timestamp(const Copy_field *copy);
+ static void do_field_decimal(const Copy_field *copy);
public:
static void *operator new(size_t size, MEM_ROOT *mem_root) throw ()
{ return alloc_root(mem_root, size); }
@@ -927,7 +923,7 @@ public:
Convenience definition of a copy function returned by
Field::get_copy_func()
*/
- typedef void Copy_func(Copy_field*);
+ typedef void Copy_func(const Copy_field*);
virtual Copy_func *get_copy_func(const Field *from) const= 0;
virtual Copy_func *get_copy_func_to(const Field *to) const
{
@@ -994,11 +990,6 @@ public:
enum_check_fields check_level);
int store_text(const char *to, size_t length, CHARSET_INFO *cs,
enum_check_fields check_level);
- int store(const LEX_STRING *ls, CHARSET_INFO *cs)
- {
- DBUG_ASSERT(ls->length < UINT_MAX32);
- return store(ls->str, (uint) ls->length, cs);
- }
int store(const LEX_CSTRING *ls, CHARSET_INFO *cs)
{
DBUG_ASSERT(ls->length < UINT_MAX32);
@@ -1074,6 +1065,20 @@ public:
return to->copy((const char *) ptr, pack_length());
}
String *val_int_as_str(String *val_buffer, bool unsigned_flag);
+
+ /*
+ Copy the Field::val_str() value to MEM_ROOT as a 0x00-teminated string.
+
+ @param mem_root The memory root to put the value to.
+ @returns {NULL,0} in case of EOM, or the field value otherwise.
+
+ Only one 0x00 terminating byte is put in the end, even in case
+ of complex character sets like UCS2/UTF16/UTF32.
+ This is OK, since this method is used to read system tables,
+ which are in utf8.
+ */
+ LEX_STRING val_lex_string_strmake(MEM_ROOT *mem_root);
+
/*
Return the field value as a LEX_CSTRING, without padding to full length
(MODE_PAD_CHAR_TO_FULL_LENGTH is temporarily suppressed during the call).
@@ -1206,7 +1211,7 @@ public:
{
bitmap_set_bit(&table->has_value_set, field_index);
}
- bool has_explicit_value()
+ bool has_explicit_value() const
{
return bitmap_is_set(&table->has_value_set, field_index);
}
@@ -1443,7 +1448,7 @@ public:
null_bit= static_cast<uchar>(p_null_bit);
}
- bool stored_in_db() const { return !vcol_info || vcol_info->stored_in_db; }
+ bool stored_in_db() const { return !vcol_info || vcol_info->is_stored(); }
bool check_vcol_sql_mode_dependency(THD *, vcol_init_mode mode) const;
virtual sql_mode_t value_depends_on_sql_mode() const
@@ -3608,7 +3613,7 @@ protected:
void store_TIME(const Time &t) { return store_TIME(t.get_mysql_time()); }
int store_TIME_with_warning(const Time *ltime, const ErrConv *str, int warn);
bool check_zero_in_date_with_warn(date_mode_t fuzzydate);
- static void do_field_time(Copy_field *copy);
+ static void do_field_time(const Copy_field *copy);
public:
Field_time(uchar *ptr_arg, uint length_arg, uchar *null_ptr_arg,
uchar null_bit_arg, enum utype unireg_check_arg,
@@ -4408,8 +4413,8 @@ protected:
*/
String read_value;
- static void do_copy_blob(Copy_field *copy);
- static void do_conv_blob(Copy_field *copy);
+ static void do_copy_blob(const Copy_field *copy);
+ static void do_conv_blob(const Copy_field *copy);
uint get_key_image_itRAW(const uchar *ptr_arg, uchar *buff, uint length) const;
public:
Field_blob(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg,
@@ -4767,7 +4772,7 @@ private:
class Field_enum :public Field_str {
- static void do_field_enum(Copy_field *copy_field);
+ static void do_field_enum(const Copy_field *copy_field);
longlong val_int(const uchar *) const;
Data_type_compatibility can_optimize_range_or_keypart_ref(
const Item_bool_func *cond,
@@ -5376,7 +5381,9 @@ public:
- find a _bin collation if the BINARY comparison style was specified, e.g.:
CREATE TABLE t1 (a VARCHAR(10) BINARY) CHARSET utf8;
*/
- bool prepare_charset_for_string(const Column_derived_attributes *dattr);
+ bool prepare_charset_for_string(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Column_derived_attributes *dattr);
/**
Prepare a SET/ENUM field.
@@ -5457,7 +5464,7 @@ public:
bool check(THD *thd);
bool validate_check_constraint(THD *thd);
- bool stored_in_db() const { return !vcol_info || vcol_info->stored_in_db; }
+ bool stored_in_db() const { return !vcol_info || vcol_info->is_stored(); }
ha_storage_media field_storage_type() const
{
@@ -5531,10 +5538,11 @@ public:
bool check_vcol_for_key(THD *thd) const;
- void set_charset_collation_attrs(const
+ void set_charset_collation_attrs(Sql_used *used,
+ const Charset_collation_map_st &map, const
Lex_column_charset_collation_attrs_st &lc)
{
- charset= lc.charset_info();
+ charset= lc.charset_info(used, map);
if (lc.is_contextually_typed_collation())
flags|= CONTEXT_COLLATION_FLAG;
else
@@ -5613,8 +5621,8 @@ public:
*/
class Spvar_definition: public Column_definition
{
- Qualified_column_ident *m_column_type_ref; // for %TYPE
- Table_ident *m_table_rowtype_ref; // for table%ROWTYPE
+ const Qualified_column_ident *m_column_type_ref; // for %TYPE
+ Table_ident *m_table_rowtype_ref; // for table%ROWTYPE
bool m_cursor_rowtype_ref; // for cursor%ROWTYPE
uint m_cursor_rowtype_offset; // for cursor%ROWTYPE
Row_definition_list *m_row_field_definitions; // for ROW
@@ -5647,11 +5655,11 @@ public:
!is_table_rowtype_ref() &&
!is_cursor_rowtype_ref();
}
- Qualified_column_ident *column_type_ref() const
+ const Qualified_column_ident *column_type_ref() const
{
return m_column_type_ref;
}
- void set_column_type_ref(Qualified_column_ident *ref)
+ void set_column_type_ref(const Qualified_column_ident *ref)
{
m_column_type_ref= ref;
}
@@ -5892,14 +5900,14 @@ public:
*/
uint from_length,to_length;
Field *from_field,*to_field;
- String tmp; // For items
+ mutable String tmp; // For items
Copy_field() = default;
~Copy_field() = default;
void set(Field *to,Field *from,bool save); // Field to field
void set(uchar *to,Field *from); // Field to string
- void (*do_copy)(Copy_field *);
- void (*do_copy2)(Copy_field *); // Used to handle null values
+ void (*do_copy)(const Copy_field *);
+ void (*do_copy2)(const Copy_field *); // Used to handle null values
};
diff --git a/sql/field_conv.cc b/sql/field_conv.cc
index 94b6bf0c..c0d632cc 100644
--- a/sql/field_conv.cc
+++ b/sql/field_conv.cc
@@ -30,30 +30,30 @@
#include "sql_class.h" // THD
#include <m_ctype.h>
-void Field::do_field_eq(Copy_field *copy)
+void Field::do_field_eq(const Copy_field *copy)
{
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
}
-static void do_field_1(Copy_field *copy)
+static void do_field_1(const Copy_field *copy)
{
copy->to_ptr[0]=copy->from_ptr[0];
}
-static void do_field_2(Copy_field *copy)
+static void do_field_2(const Copy_field *copy)
{
copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1];
}
-static void do_field_3(Copy_field *copy)
+static void do_field_3(const Copy_field *copy)
{
copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1];
copy->to_ptr[2]=copy->from_ptr[2];
}
-static void do_field_4(Copy_field *copy)
+static void do_field_4(const Copy_field *copy)
{
copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1];
@@ -61,7 +61,7 @@ static void do_field_4(Copy_field *copy)
copy->to_ptr[3]=copy->from_ptr[3];
}
-static void do_field_6(Copy_field *copy)
+static void do_field_6(const Copy_field *copy)
{ // For blob field
copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1];
@@ -71,7 +71,7 @@ static void do_field_6(Copy_field *copy)
copy->to_ptr[5]=copy->from_ptr[5];
}
-static void do_field_8(Copy_field *copy)
+static void do_field_8(const Copy_field *copy)
{
copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1];
@@ -84,7 +84,7 @@ static void do_field_8(Copy_field *copy)
}
-static void do_field_to_null_str(Copy_field *copy)
+static void do_field_to_null_str(const Copy_field *copy)
{
if (*copy->from_null_ptr & copy->from_bit)
{
@@ -99,7 +99,7 @@ static void do_field_to_null_str(Copy_field *copy)
}
-static void do_outer_field_to_null_str(Copy_field *copy)
+static void do_outer_field_to_null_str(const Copy_field *copy)
{
if (*copy->null_row ||
(copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit)))
@@ -220,7 +220,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
}
-static void do_skip(Copy_field *copy __attribute__((unused)))
+static void do_skip(const Copy_field *copy __attribute__((unused)))
{
}
@@ -233,7 +233,7 @@ static void do_skip(Copy_field *copy __attribute__((unused)))
set to NULLs, so we don't need to check table->null_row here.
*/
-static void do_copy_null(Copy_field *copy)
+static void do_copy_null(const Copy_field *copy)
{
if (*copy->from_null_ptr & copy->from_bit)
{
@@ -252,7 +252,7 @@ static void do_copy_null(Copy_field *copy)
field)
*/
-static void do_outer_field_null(Copy_field *copy)
+static void do_outer_field_null(const Copy_field *copy)
{
if (*copy->null_row ||
(copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit)))
@@ -271,7 +271,7 @@ static void do_outer_field_null(Copy_field *copy)
Copy: (not-NULL field in table that can be NULL-complemented) -> (not-NULL
field)
*/
-static void do_copy_nullable_row_to_notnull(Copy_field *copy)
+static void do_copy_nullable_row_to_notnull(const Copy_field *copy)
{
if (*copy->null_row ||
(copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit)))
@@ -288,7 +288,7 @@ static void do_copy_nullable_row_to_notnull(Copy_field *copy)
}
/* Copy: (NULL-able field) -> (not NULL-able field) */
-static void do_copy_not_null(Copy_field *copy)
+static void do_copy_not_null(const Copy_field *copy)
{
if (*copy->from_null_ptr & copy->from_bit)
{
@@ -302,7 +302,7 @@ static void do_copy_not_null(Copy_field *copy)
/* Copy: (non-NULLable field) -> (NULLable field) */
-static void do_copy_maybe_null(Copy_field *copy)
+static void do_copy_maybe_null(const Copy_field *copy)
{
*copy->to_null_ptr&= ~copy->to_bit;
(copy->do_copy2)(copy);
@@ -310,7 +310,7 @@ static void do_copy_maybe_null(Copy_field *copy)
/* timestamp and next_number has special handling in case of NULL values */
-static void do_copy_timestamp(Copy_field *copy)
+static void do_copy_timestamp(const Copy_field *copy)
{
if (*copy->from_null_ptr & copy->from_bit)
{
@@ -322,7 +322,7 @@ static void do_copy_timestamp(Copy_field *copy)
}
-static void do_copy_next_number(Copy_field *copy)
+static void do_copy_next_number(const Copy_field *copy)
{
if (*copy->from_null_ptr & copy->from_bit)
{
@@ -335,12 +335,12 @@ static void do_copy_next_number(Copy_field *copy)
}
-void Field_blob::do_copy_blob(Copy_field *copy)
+void Field_blob::do_copy_blob(const Copy_field *copy)
{
((Field_blob*) copy->to_field)->copy_value(((Field_blob*) copy->from_field));
}
-void Field_blob::do_conv_blob(Copy_field *copy)
+void Field_blob::do_conv_blob(const Copy_field *copy)
{
copy->from_field->val_str(&copy->tmp);
((Field_blob *) copy->to_field)->store(copy->tmp.ptr(),
@@ -350,7 +350,7 @@ void Field_blob::do_conv_blob(Copy_field *copy)
/** Save blob in copy->tmp for GROUP BY. */
-static void do_save_blob(Copy_field *copy)
+static void do_save_blob(const Copy_field *copy)
{
char buff[MAX_FIELD_WIDTH];
String res(buff,sizeof(buff),copy->tmp.charset());
@@ -362,7 +362,7 @@ static void do_save_blob(Copy_field *copy)
}
-void Field::do_field_string(Copy_field *copy)
+void Field::do_field_string(const Copy_field *copy)
{
char buff[MAX_FIELD_WIDTH];
String res(buff, sizeof(buff), copy->from_field->charset());
@@ -373,7 +373,7 @@ void Field::do_field_string(Copy_field *copy)
}
-void Field_enum::do_field_enum(Copy_field *copy)
+void Field_enum::do_field_enum(const Copy_field *copy)
{
if (copy->from_field->val_int() == 0)
((Field_enum *) copy->to_field)->store_type((ulonglong) 0);
@@ -382,7 +382,7 @@ void Field_enum::do_field_enum(Copy_field *copy)
}
-static void do_field_varbinary_pre50(Copy_field *copy)
+static void do_field_varbinary_pre50(const Copy_field *copy)
{
char buff[MAX_FIELD_WIDTH];
copy->tmp.set_buffer_if_not_allocated(buff,sizeof(buff),copy->tmp.charset());
@@ -397,35 +397,35 @@ static void do_field_varbinary_pre50(Copy_field *copy)
}
-void Field::do_field_int(Copy_field *copy)
+void Field::do_field_int(const Copy_field *copy)
{
longlong value= copy->from_field->val_int();
copy->to_field->store(value,
MY_TEST(copy->from_field->flags & UNSIGNED_FLAG));
}
-void Field::do_field_real(Copy_field *copy)
+void Field::do_field_real(const Copy_field *copy)
{
double value=copy->from_field->val_real();
copy->to_field->store(value);
}
-void Field::do_field_decimal(Copy_field *copy)
+void Field::do_field_decimal(const Copy_field *copy)
{
my_decimal value(copy->from_field);
copy->to_field->store_decimal(&value);
}
-void Field::do_field_timestamp(Copy_field *copy)
+void Field::do_field_timestamp(const Copy_field *copy)
{
// XXX why couldn't we do it everywhere?
copy->from_field->save_in_field(copy->to_field);
}
-void Field::do_field_temporal(Copy_field *copy, date_mode_t fuzzydate)
+void Field::do_field_temporal(const Copy_field *copy, date_mode_t fuzzydate)
{
MYSQL_TIME ltime;
// TODO: we now need to check result
@@ -436,19 +436,19 @@ void Field::do_field_temporal(Copy_field *copy, date_mode_t fuzzydate)
}
-void Field::do_field_datetime(Copy_field *copy)
+void Field::do_field_datetime(const Copy_field *copy)
{
return do_field_temporal(copy, Datetime::Options(TIME_CONV_NONE, current_thd));
}
-void Field::do_field_date(Copy_field *copy)
+void Field::do_field_date(const Copy_field *copy)
{
return do_field_temporal(copy, Date::Options(TIME_CONV_NONE));
}
-void Field_time::do_field_time(Copy_field *copy)
+void Field_time::do_field_time(const Copy_field *copy)
{
return do_field_temporal(copy, Time::Options(current_thd));
}
@@ -459,7 +459,7 @@ void Field_time::do_field_time(Copy_field *copy)
from string.
*/
-static void do_cut_string(Copy_field *copy)
+static void do_cut_string(const Copy_field *copy)
{
CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->to_length);
@@ -480,7 +480,7 @@ static void do_cut_string(Copy_field *copy)
from string.
*/
-static void do_cut_string_complex(Copy_field *copy)
+static void do_cut_string_complex(const Copy_field *copy)
{ // Shorter string field
CHARSET_INFO *cs= copy->from_field->charset();
const uchar *from_end= copy->from_ptr + copy->from_length;
@@ -512,7 +512,7 @@ static void do_cut_string_complex(Copy_field *copy)
-static void do_expand_binary(Copy_field *copy)
+static void do_expand_binary(const Copy_field *copy)
{
CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
@@ -522,7 +522,7 @@ static void do_expand_binary(Copy_field *copy)
-static void do_expand_string(Copy_field *copy)
+static void do_expand_string(const Copy_field *copy)
{
CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
@@ -539,7 +539,7 @@ static void do_expand_string(Copy_field *copy)
- non-compressed and compressed columns
- single byte and multi-byte character sets
*/
-static void do_varstring1_no_truncation(Copy_field *copy)
+static void do_varstring1_no_truncation(const Copy_field *copy)
{
uint length= (uint) *(uchar*) copy->from_ptr;
DBUG_ASSERT(length <= copy->to_length - 1);
@@ -555,7 +555,7 @@ static void do_varstring1_no_truncation(Copy_field *copy)
- non-compressed and compressed columns
- single byte and multi-byte character sets
*/
-static void do_varstring2_no_truncation(Copy_field *copy)
+static void do_varstring2_no_truncation(const Copy_field *copy)
{
uint length= uint2korr(copy->from_ptr);
DBUG_ASSERT(length <= copy->to_length - HA_KEY_BLOB_LENGTH);
@@ -565,7 +565,7 @@ static void do_varstring2_no_truncation(Copy_field *copy)
}
-static void do_varstring1(Copy_field *copy)
+static void do_varstring1(const Copy_field *copy)
{
uint length= (uint) *(uchar*) copy->from_ptr;
if (length > copy->to_length- 1)
@@ -582,7 +582,7 @@ static void do_varstring1(Copy_field *copy)
}
-static void do_varstring1_mb(Copy_field *copy)
+static void do_varstring1_mb(const Copy_field *copy)
{
CHARSET_INFO *cs= copy->from_field->charset();
uint from_length= (uint) *(uchar*) copy->from_ptr;
@@ -600,7 +600,7 @@ static void do_varstring1_mb(Copy_field *copy)
}
-static void do_varstring2(Copy_field *copy)
+static void do_varstring2(const Copy_field *copy)
{
uint length=uint2korr(copy->from_ptr);
if (length > copy->to_length- HA_KEY_BLOB_LENGTH)
@@ -618,7 +618,7 @@ static void do_varstring2(Copy_field *copy)
}
-static void do_varstring2_mb(Copy_field *copy)
+static void do_varstring2_mb(const Copy_field *copy)
{
CHARSET_INFO *cs= copy->from_field->charset();
uint char_length= (copy->to_length - HA_KEY_BLOB_LENGTH) / cs->mbmaxlen;
diff --git a/sql/filesort.cc b/sql/filesort.cc
index d4c290f2..abcd4127 100644
--- a/sql/filesort.cc
+++ b/sql/filesort.cc
@@ -63,10 +63,6 @@ static Addon_fields *get_addon_fields(TABLE *table, uint sortlength,
uint *addon_length,
uint *m_packable_length);
-static bool check_if_pq_applicable(Sort_param *param, SORT_INFO *info,
- TABLE *table,
- ha_rows records, size_t memory_available);
-
static void store_key_part_length(uint32 num, uchar *to, uint bytes)
{
switch(bytes) {
@@ -91,42 +87,62 @@ static uint32 read_keypart_length(const uchar *from, uint bytes)
}
-// @param sortlen [Maximum] length of the sort key
-void Sort_param::init_for_filesort(uint sortlen, TABLE *table,
- ha_rows maxrows, Filesort *filesort)
+/*
+ Initialize Sort_param for doing a filesort
+
+ @param table Table to sort
+ @param Filesort Filesort parameter to filesort()
+ @param sortlen [Maximum] length of the sort key
+ @param limit_rows Number of rows to return (may be less than rows to sort)
+*/
+
+void Sort_param::init_for_filesort(TABLE *table, Filesort *filesort,
+ uint sortlen, ha_rows limit_rows_arg)
{
DBUG_ASSERT(addon_fields == NULL);
- sort_length= sortlen;
- ref_length= table->file->ref_length;
- accepted_rows= filesort->accepted_rows;
-
if (!(table->file->ha_table_flags() & HA_FAST_KEY_READ) &&
!table->fulltext_searched && !filesort->sort_positions)
{
- /*
- Get the descriptors of all fields whose values are appended
+ /*
+ Get the descriptors of all fields whose values are appended
to sorted fields and get its total length in addon_buf.length
*/
- addon_fields= get_addon_fields(table, sort_length, &addon_length,
+ addon_fields= get_addon_fields(table, sortlen, &addon_length,
&m_packable_length);
}
- if (using_addon_fields())
+ DBUG_ASSERT((using_addon_fields() == 0 || addon_length != 0));
+
+ setup_lengths_and_limit(table, sortlen, addon_length, limit_rows_arg);
+ accepted_rows= filesort->accepted_rows;
+}
+
+
+void Sort_param::setup_lengths_and_limit(TABLE *table,
+ uint sort_len_arg,
+ uint addon_length_arg,
+ ha_rows limit_rows_arg)
+{
+ sort_form= table;
+ sort_length= sort_len_arg;
+ limit_rows= limit_rows_arg;
+ ref_length= table->file->ref_length;
+
+ if (addon_length_arg)
{
- DBUG_ASSERT(addon_length < UINT_MAX32);
- res_length= addon_length;
+ DBUG_ASSERT(addon_length_arg < UINT_MAX32);
+ res_length= addon_length_arg;
}
else
{
res_length= ref_length;
/*
- The reference to the record is considered
- as an additional sorted field
+ The reference (rowid) to the record is considered as an additional
+ sorted field as we want to access rows in rowid order if possible.
*/
sort_length+= ref_length;
}
- rec_length= sort_length + addon_length;
- max_rows= maxrows;
+ rec_length= sort_length + addon_length_arg;
}
@@ -161,6 +177,7 @@ void Sort_param::try_to_pack_addons(ulong max_length_for_sort_data)
rec_length+= sz;
}
+
/**
Sort a table.
Creates a set of pointers that can be used to read the rows
@@ -204,7 +221,8 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
bool allow_packing_for_sortkeys;
Bounded_queue<uchar, uchar> pq;
SQL_SELECT *const select= filesort->select;
- ha_rows max_rows= filesort->limit;
+ Sort_costs costs;
+ ha_rows limit_rows= filesort->limit;
uint s_length= 0, sort_len;
Sort_keys *sort_keys;
DBUG_ENTER("filesort");
@@ -249,7 +267,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
param.sort_keys= sort_keys;
sort_len= sortlength(thd, sort_keys, &allow_packing_for_sortkeys);
- param.init_for_filesort(sort_len, table, max_rows, filesort);
+ param.init_for_filesort(table, filesort, sort_len, limit_rows);
if (!param.accepted_rows)
param.accepted_rows= &not_used;
@@ -264,21 +282,54 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
else
thd->inc_status_sort_scan();
thd->query_plan_flags|= QPLAN_FILESORT;
- tracker->report_use(thd, max_rows);
+ tracker->report_use(thd, limit_rows);
// If number of rows is not known, use as much of sort buffer as possible.
num_rows= table->file->estimate_rows_upper_bound();
- if (check_if_pq_applicable(&param, sort,
- table, num_rows, memory_available))
+ costs.compute_sort_costs(&param, num_rows, memory_available,
+ param.using_addon_fields());
+
+ if (costs.fastest_sort == NO_SORT_POSSIBLE_OUT_OF_MEM)
{
- DBUG_PRINT("info", ("filesort PQ is applicable"));
+ my_error(ER_OUT_OF_SORTMEMORY,MYF(ME_ERROR_LOG + ME_FATAL));
+ goto err;
+ }
+
+ if (costs.fastest_sort == PQ_SORT_ALL_FIELDS ||
+ costs.fastest_sort == PQ_SORT_ORDER_BY_FIELDS)
+ {
+ /* We are going to use priorty queue */
thd->query_plan_flags|= QPLAN_FILESORT_PRIORITY_QUEUE;
status_var_increment(thd->status_var.filesort_pq_sorts_);
tracker->incr_pq_used();
param.using_pq= true;
const size_t compare_length= param.sort_length;
DBUG_ASSERT(param.using_packed_sortkeys() == false);
+
+ if (costs.fastest_sort == PQ_SORT_ORDER_BY_FIELDS && sort->addon_fields)
+ {
+ /*
+ Upper code have addon_fields enabled, which we have decided to
+ not use. Let's delete them.
+ */
+ my_free(sort->addon_fields);
+ sort->addon_fields= NULL;
+ param.addon_fields= NULL;
+ param.res_length= param.ref_length;
+ /*
+ Add the ref (rowid which is stored last in the sort key) to the sort,
+ as we want to retrive rows in id order, if possible.
+ */
+ param.sort_length+= param.ref_length;
+ param.rec_length= param.sort_length;
+ }
+
+ /* Priority queues needs one extra element for doing INSERT */
+ param.max_keys_per_buffer= (uint) param.limit_rows + 1;
+ if (!sort->alloc_sort_buffer(param.max_keys_per_buffer, param.rec_length))
+ goto err;
+
/*
For PQ queries (with limit) we know exactly how many pointers/records
we have in the buffer, so to simplify things, we initialize
@@ -286,7 +337,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
point in doing lazy initialization).
*/
sort->init_record_pointers();
- if (pq.init(param.max_rows,
+ if (pq.init(param.limit_rows,
true, // max_at_top
NULL, // compare_function
compare_length,
@@ -312,9 +363,10 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
tracker->report_sort_keys_format(param.using_packed_sortkeys());
param.using_pq= false;
+ /* Allocate sort buffer. Use as much memory as possible. */
size_t min_sort_memory= MY_MAX(MIN_SORT_MEMORY,
param.sort_length*MERGEBUFF2);
- set_if_bigger(min_sort_memory, sizeof(Merge_chunk*)*MERGEBUFF2);
+ set_if_bigger(min_sort_memory, sizeof(Merge_chunk*) * MERGEBUFF2);
while (memory_available >= min_sort_memory)
{
ulonglong keys= memory_available / (param.rec_length + sizeof(char*));
@@ -346,18 +398,17 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
if (param.tmp_buffer.alloc(param.sort_length))
goto err;
- if (open_cached_file(&buffpek_pointers,mysql_tmpdir,TEMP_PREFIX,
- DISK_BUFFER_SIZE, MYF(MY_WME)))
+ if (open_cached_file(&buffpek_pointers, mysql_tmpdir, TEMP_PREFIX,
+ DISK_CHUNK_SIZE, MYF(MY_WME)))
goto err;
- param.sort_form= table;
param.local_sortorder=
Bounds_checked_array<SORT_FIELD>(filesort->sortorder, s_length);
num_rows= find_all_keys(thd, &param, select,
sort,
&buffpek_pointers,
- &tempfile,
+ &tempfile,
pq.is_initialized() ? &pq : NULL,
&sort->found_rows);
if (num_rows == HA_POS_ERROR)
@@ -397,10 +448,10 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
sort->buffpek.length= maxbuffer;
buffpek= (Merge_chunk *) sort->buffpek.str;
close_cached_file(&buffpek_pointers);
- /* Open cached file if it isn't open */
- if (! my_b_inited(outfile) &&
- open_cached_file(outfile,mysql_tmpdir,TEMP_PREFIX,READ_RECORD_BUFFER,
- MYF(MY_WME)))
+ /* Open cached file if it isn't open */
+ if (!my_b_inited(outfile) &&
+ open_cached_file(outfile, mysql_tmpdir, TEMP_PREFIX, DISK_CHUNK_SIZE,
+ MYF(MY_WME)))
goto err;
if (reinit_io_cache(outfile,WRITE_CACHE,0L,0,0))
goto err;
@@ -416,11 +467,11 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
maxbuffer--; // Offset from 0
if (merge_many_buff(&param, sort->get_raw_buf(),
- buffpek,&maxbuffer,
- &tempfile))
+ buffpek, &maxbuffer,
+ &tempfile))
goto err;
if (flush_io_cache(&tempfile) ||
- reinit_io_cache(&tempfile,READ_CACHE,0L,0,0))
+ reinit_io_cache(&tempfile, READ_CACHE, 0L,0,0))
goto err;
if (merge_index(&param,
sort->get_raw_buf(),
@@ -431,10 +482,10 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
goto err;
}
- if (num_rows > param.max_rows)
+ if (num_rows > param.limit_rows)
{
// If find_all_keys() produced more results than the query LIMIT.
- num_rows= param.max_rows;
+ num_rows= param.limit_rows;
}
error= 0;
@@ -497,7 +548,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
else
thd->inc_status_sort_rows(num_rows);
- sort->examined_rows= param.examined_rows;
+ sort->m_examined_rows= param.examined_rows;
sort->return_rows= num_rows;
#ifdef SKIP_DBUG_IN_FILESORT
DBUG_POP_EMPTY; /* Ok to DBUG */
@@ -505,7 +556,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
DBUG_PRINT("exit",
("num_rows: %lld examined_rows: %lld found_rows: %lld",
- (longlong) sort->return_rows, (longlong) sort->examined_rows,
+ (longlong) sort->return_rows, (longlong) sort->m_examined_rows,
(longlong) sort->found_rows));
MYSQL_FILESORT_DONE(error, num_rows);
@@ -810,7 +861,7 @@ static void dbug_print_record(TABLE *table, bool print_rowid)
{
if (no free space in sort_keys buffers)
{
- sort sort_keys buffer;
+ qsort sort_keys buffer;
dump sorted sequence to 'tempfile';
dump BUFFPEK describing sequence location into 'buffpek_pointers';
}
@@ -837,7 +888,7 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
ha_rows *found_rows)
{
int error, quick_select;
- uint idx, indexpos;
+ uint num_elements_in_buffer, indexpos;
uchar *ref_pos, *next_pos, ref_buff[MAX_REFLENGTH];
TABLE *sort_form;
handler *file;
@@ -852,15 +903,14 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
(select ? select->quick ? "ranges" : "where":
"every row")));
- idx=indexpos=0;
- error=quick_select=0;
- sort_form=param->sort_form;
- file=sort_form->file;
- ref_pos= ref_buff;
- quick_select=select && select->quick;
+ num_elements_in_buffer= indexpos= 0;
+ error= 0;
*found_rows= 0;
- ref_pos= &file->ref[0];
- next_pos=ref_pos;
+ sort_form= param->sort_form;
+ file= sort_form->file;
+ ref_pos= ref_buff;
+ quick_select= select && select->quick;
+ next_pos= ref_pos= &file->ref[0];
DBUG_EXECUTE_IF("show_explain_in_find_all_keys",
dbug_serve_apcs(thd, 1);
@@ -868,7 +918,7 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
if (!quick_select)
{
- next_pos=(uchar*) 0; /* Find records in sequence */
+ next_pos= (uchar*) 0; /* Find records in sequence */
DBUG_EXECUTE_IF("bug14365043_1",
DBUG_SET("+d,ha_rnd_init_fail"););
if (unlikely(file->ha_rnd_init_with_error(1)))
@@ -935,6 +985,7 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
if (likely(error == 0))
{
param->examined_rows++;
+ thd->inc_examined_row_count_fast();
if (select && select->cond)
{
/*
@@ -967,12 +1018,13 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
{
if (fs_info->isfull())
{
- if (write_keys(param, fs_info, idx, buffpek_pointers, tempfile))
+ if (write_keys(param, fs_info, num_elements_in_buffer,
+ buffpek_pointers, tempfile))
goto err;
- idx= 0;
+ num_elements_in_buffer= 0;
indexpos++;
}
- if (idx == 0)
+ if (num_elements_in_buffer == 0)
fs_info->init_next_record_pointer();
uchar *start_of_rec= fs_info->get_next_record_pointer();
@@ -980,7 +1032,7 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
ref_pos, using_packed_sortkeys);
if (packed_format && rec_sz != param->rec_length)
fs_info->adjust_next_record_pointer(rec_sz);
- idx++;
+ num_elements_in_buffer++;
}
num_records++;
(*param->accepted_rows)++;
@@ -1016,8 +1068,9 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
file->print_error(error,MYF(ME_ERROR_LOG));
DBUG_RETURN(HA_POS_ERROR);
}
- if (indexpos && idx &&
- write_keys(param, fs_info, idx, buffpek_pointers, tempfile))
+ if (indexpos && num_elements_in_buffer &&
+ write_keys(param, fs_info, num_elements_in_buffer, buffpek_pointers,
+ tempfile))
DBUG_RETURN(HA_POS_ERROR); /* purecov: inspected */
(*found_rows)= num_records;
@@ -1066,7 +1119,7 @@ write_keys(Sort_param *param, SORT_INFO *fs_info, uint count,
fs_info->sort_buffer(param, count);
if (!my_b_inited(tempfile) &&
- open_cached_file(tempfile, mysql_tmpdir, TEMP_PREFIX, DISK_BUFFER_SIZE,
+ open_cached_file(tempfile, mysql_tmpdir, TEMP_PREFIX, DISK_CHUNK_SIZE,
MYF(MY_WME)))
DBUG_RETURN(1); /* purecov: inspected */
/* check we won't have more buffpeks than we can possibly keep in memory */
@@ -1074,15 +1127,13 @@ write_keys(Sort_param *param, SORT_INFO *fs_info, uint count,
DBUG_RETURN(1);
buffpek.set_file_position(my_b_tell(tempfile));
- if ((ha_rows) count > param->max_rows)
- count=(uint) param->max_rows; /* purecov: inspected */
+ if ((ha_rows) count > param->limit_rows)
+ count=(uint) param->limit_rows; /* purecov: inspected */
buffpek.set_rowcount(static_cast<ha_rows>(count));
for (uint ix= 0; ix < count; ++ix)
{
uchar *record= fs_info->get_sorted_record(ix);
-
-
if (my_b_write(tempfile, record, param->get_record_length(record)))
DBUG_RETURN(1); /* purecov: inspected */
}
@@ -1497,144 +1548,6 @@ static bool save_index(Sort_param *param, uint count,
}
-/**
- Test whether priority queue is worth using to get top elements of an
- ordered result set. If it is, then allocates buffer for required amount of
- records
-
- @param param Sort parameters.
- @param filesort_info Filesort information.
- @param table Table to sort.
- @param num_rows Estimate of number of rows in source record set.
- @param memory_available Memory available for sorting.
-
- DESCRIPTION
- Given a query like this:
- SELECT ... FROM t ORDER BY a1,...,an LIMIT max_rows;
- This function tests whether a priority queue should be used to keep
- the result. Necessary conditions are:
- - estimate that it is actually cheaper than merge-sort
- - enough memory to store the <max_rows> records.
-
- If we don't have space for <max_rows> records, but we *do* have
- space for <max_rows> keys, we may rewrite 'table' to sort with
- references to records instead of additional data.
- (again, based on estimates that it will actually be cheaper).
-
- @retval
- true - if it's ok to use PQ
- false - PQ will be slower than merge-sort, or there is not enough memory.
-*/
-
-static bool check_if_pq_applicable(Sort_param *param,
- SORT_INFO *filesort_info,
- TABLE *table, ha_rows num_rows,
- size_t memory_available)
-{
- DBUG_ENTER("check_if_pq_applicable");
-
- /*
- How much Priority Queue sort is slower than qsort.
- Measurements (see unit test) indicate that PQ is roughly 3 times slower.
- */
- const double PQ_slowness= 3.0;
-
- if (param->max_rows == HA_POS_ERROR)
- {
- DBUG_PRINT("info", ("No LIMIT"));
- DBUG_RETURN(false);
- }
-
- if (param->max_rows + 2 >= UINT_MAX)
- {
- DBUG_PRINT("info", ("Too large LIMIT"));
- DBUG_RETURN(false);
- }
-
- size_t num_available_keys=
- memory_available / (param->rec_length + sizeof(char*));
- // We need 1 extra record in the buffer, when using PQ.
- param->max_keys_per_buffer= (uint) param->max_rows + 1;
-
- if (num_rows < num_available_keys)
- {
- // The whole source set fits into memory.
- if (param->max_rows < num_rows/PQ_slowness )
- {
- filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
- param->rec_length);
- DBUG_RETURN(filesort_info->sort_buffer_size() != 0);
- }
- else
- {
- // PQ will be slower.
- DBUG_RETURN(false);
- }
- }
-
- // Do we have space for LIMIT rows in memory?
- if (param->max_keys_per_buffer < num_available_keys)
- {
- filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
- param->rec_length);
- DBUG_RETURN(filesort_info->sort_buffer_size() != 0);
- }
-
- // Try to strip off addon fields.
- if (param->addon_fields)
- {
- const size_t row_length=
- param->sort_length + param->ref_length + sizeof(char*);
- num_available_keys= memory_available / row_length;
-
- // Can we fit all the keys in memory?
- if (param->max_keys_per_buffer < num_available_keys)
- {
- const double sort_merge_cost=
- get_merge_many_buffs_cost_fast(num_rows,
- num_available_keys,
- (uint)row_length);
- /*
- PQ has cost:
- (insert + qsort) * log(queue size) / TIME_FOR_COMPARE_ROWID +
- cost of file lookup afterwards.
- The lookup cost is a bit pessimistic: we take scan_time and assume
- that on average we find the row after scanning half of the file.
- A better estimate would be lookup cost, but note that we are doing
- random lookups here, rather than sequential scan.
- */
- const double pq_cpu_cost=
- (PQ_slowness * num_rows + param->max_keys_per_buffer) *
- log((double) param->max_keys_per_buffer) / TIME_FOR_COMPARE_ROWID;
- const double pq_io_cost=
- param->max_rows * table->file->scan_time() / 2.0;
- const double pq_cost= pq_cpu_cost + pq_io_cost;
-
- if (sort_merge_cost < pq_cost)
- DBUG_RETURN(false);
-
- filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
- param->sort_length + param->ref_length);
-
- if (filesort_info->sort_buffer_size() > 0)
- {
- /* Make attached data to be references instead of fields. */
- my_free(filesort_info->addon_fields);
- filesort_info->addon_fields= NULL;
- param->addon_fields= NULL;
-
- param->res_length= param->ref_length;
- param->sort_length+= param->ref_length;
- param->rec_length= param->sort_length;
-
- DBUG_RETURN(true);
- }
- }
- }
- DBUG_RETURN(false);
-}
-
-
/** Merge buffers to make < MERGEBUFF2 buffers. */
int merge_many_buff(Sort_param *param, Sort_buffer sort_buffer,
@@ -1646,28 +1559,28 @@ int merge_many_buff(Sort_param *param, Sort_buffer sort_buffer,
DBUG_ENTER("merge_many_buff");
if (*maxbuffer < MERGEBUFF2)
- DBUG_RETURN(0); /* purecov: inspected */
+ DBUG_RETURN(0); /* purecov: inspected */
if (flush_io_cache(t_file) ||
- open_cached_file(&t_file2,mysql_tmpdir,TEMP_PREFIX,DISK_BUFFER_SIZE,
- MYF(MY_WME)))
+ open_cached_file(&t_file2, mysql_tmpdir, TEMP_PREFIX, DISK_CHUNK_SIZE,
+ MYF(MY_WME)))
DBUG_RETURN(1); /* purecov: inspected */
- from_file= t_file ; to_file= &t_file2;
+ from_file= t_file; to_file= &t_file2;
while (*maxbuffer >= MERGEBUFF2)
{
- if (reinit_io_cache(from_file,READ_CACHE,0L,0,0))
+ if (reinit_io_cache(from_file, READ_CACHE, 0L, 0, 0))
goto cleanup;
- if (reinit_io_cache(to_file,WRITE_CACHE,0L,0,0))
+ if (reinit_io_cache(to_file, WRITE_CACHE,0L, 0, 0))
goto cleanup;
lastbuff=buffpek;
- for (i=0 ; i <= *maxbuffer-MERGEBUFF*3/2 ; i+=MERGEBUFF)
+ for (i= 0; i <= *maxbuffer - MERGEBUFF * 3 / 2 ; i+= MERGEBUFF)
{
- if (merge_buffers(param,from_file,to_file,sort_buffer, lastbuff++,
- buffpek+i,buffpek+i+MERGEBUFF-1,0))
+ if (merge_buffers(param, from_file, to_file, sort_buffer, lastbuff++,
+ buffpek + i, buffpek + i + MERGEBUFF - 1, 0))
goto cleanup;
}
- if (merge_buffers(param,from_file,to_file,sort_buffer, lastbuff++,
- buffpek+i,buffpek+ *maxbuffer,0))
+ if (merge_buffers(param, from_file, to_file, sort_buffer, lastbuff++,
+ buffpek + i, buffpek + *maxbuffer, 0))
break; /* purecov: inspected */
if (flush_io_cache(to_file))
break; /* purecov: inspected */
@@ -1765,7 +1678,7 @@ ulong read_to_buffer(IO_CACHE *fromfile, Merge_chunk *buffpek,
num_bytes_read= bytes_to_read;
buffpek->init_current_key();
- buffpek->advance_file_position(num_bytes_read); /* New filepos */
+ buffpek->advance_file_position(num_bytes_read); /* New filepos */
buffpek->decrement_rowcount(count);
buffpek->set_mem_count(count);
return (ulong) num_bytes_read;
@@ -1864,7 +1777,7 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
maxcount= (ulong) (param->max_keys_per_buffer/((uint) (Tb-Fb) +1));
to_start_filepos= my_b_tell(to_file);
strpos= sort_buffer.array();
- org_max_rows=max_rows= param->max_rows;
+ org_max_rows= max_rows= param->limit_rows;
set_if_bigger(maxcount, 1);
@@ -1879,17 +1792,17 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
first_cmp_arg= param->get_compare_argument(&sort_length);
}
if (unlikely(init_queue(&queue, (uint) (Tb-Fb)+1,
- offsetof(Merge_chunk,m_current_key), 0,
+ offsetof(Merge_chunk,m_current_key), 0,
(queue_compare) cmp, first_cmp_arg, 0, 0)))
DBUG_RETURN(1); /* purecov: inspected */
- const size_t chunk_sz = (sort_buffer.size()/((uint) (Tb-Fb) +1));
- for (buffpek= Fb ; buffpek <= Tb ; buffpek++)
+ const size_t chunk_sz= (sort_buffer.size()/((uint) (Tb-Fb) +1));
+ for (buffpek= Fb; buffpek <= Tb; buffpek++)
{
buffpek->set_buffer(strpos, strpos + chunk_sz);
buffpek->set_max_keys(maxcount);
bytes_read= read_to_buffer(from_file, buffpek, param, packed_format);
if (unlikely(bytes_read == (ulong) -1))
- goto err; /* purecov: inspected */
+ goto err; /* purecov: inspected */
strpos+= chunk_sz;
// If less data in buffers than expected
buffpek->set_max_keys(buffpek->mem_count());
@@ -1971,11 +1884,11 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
*/
if (!check_dupl_count || dupl_count >= min_dupl_count)
{
- if(my_b_write(to_file,
- src + (offset_for_packing ?
- rec_length - res_length : // sort length
- wr_offset),
- bytes_to_write))
+ if (my_b_write(to_file,
+ src + (offset_for_packing ?
+ rec_length - res_length : // sort length
+ wr_offset),
+ bytes_to_write))
goto err; /* purecov: inspected */
}
if (cmp)
@@ -2085,7 +1998,7 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
bytes_read != 0);
end:
- lastbuff->set_rowcount(MY_MIN(org_max_rows-max_rows, param->max_rows));
+ lastbuff->set_rowcount(MY_MIN(org_max_rows - max_rows, param->limit_rows));
lastbuff->set_file_position(to_start_filepos);
cleanup:
@@ -2172,8 +2085,8 @@ Type_handler_timestamp_common::sort_length(THD *thd,
void
Type_handler_int_result::sort_length(THD *thd,
- const Type_std_attributes *item,
- SORT_FIELD_ATTR *sortorder) const
+ const Type_std_attributes *item,
+ SORT_FIELD_ATTR *sortorder) const
{
sortorder->original_length= sortorder->length= 8; // Sizof intern longlong
}
@@ -2181,8 +2094,8 @@ Type_handler_int_result::sort_length(THD *thd,
void
Type_handler_real_result::sort_length(THD *thd,
- const Type_std_attributes *item,
- SORT_FIELD_ATTR *sortorder) const
+ const Type_std_attributes *item,
+ SORT_FIELD_ATTR *sortorder) const
{
sortorder->original_length= sortorder->length= sizeof(double);
}
@@ -2206,13 +2119,13 @@ Type_handler_decimal_result::sort_length(THD *thd,
@param thd Thread handler
@param sortorder Order of items to sort
@param s_length Number of items to sort
- @param allow_packing_for_sortkeys [out] set to false if packing sort keys is not
- allowed
+ @param allow_packing_for_sortkeys [out] set to false if packing sort keys
+ is not allowed
@note
- * sortorder->length and other members are updated for each sort item.
- * TODO what is the meaning of this value if some fields are using packing while
- others are not?
+ - sortorder->length and other members are updated for each sort item.
+ - TODO what is the meaning of this value if some fields are using packing
+ while others are not?
@return
Total length of sort buffer in bytes
diff --git a/sql/filesort.h b/sql/filesort.h
index 8c7931e7..f2da3b84 100644
--- a/sql/filesort.h
+++ b/sql/filesort.h
@@ -160,7 +160,7 @@ public:
Also how many rows in record_pointers, if used
*/
ha_rows return_rows;
- ha_rows examined_rows; /* How many rows read */
+ ha_rows m_examined_rows; /* How many rows read. Already in thd */
ha_rows found_rows; /* How many rows was accepted */
/** Sort filesort_buffer */
diff --git a/sql/filesort_utils.cc b/sql/filesort_utils.cc
index 5a51300a..e1cd7c56 100644
--- a/sql/filesort_utils.cc
+++ b/sql/filesort_utils.cc
@@ -19,23 +19,106 @@
#include "sql_const.h"
#include "sql_sort.h"
#include "table.h"
-
+#include "optimizer_defaults.h"
PSI_memory_key key_memory_Filesort_buffer_sort_keys;
-namespace {
+const LEX_CSTRING filesort_names[]=
+{
+ { STRING_WITH_LEN("priority_queue with addon fields")},
+ { STRING_WITH_LEN("priority_queue with row lookup")},
+ { STRING_WITH_LEN("merge_sort with addon fields")},
+ { STRING_WITH_LEN("merge_sort with row lookup)")},
+ { STRING_WITH_LEN("Error while computing filesort cost")}
+};
+
+/*
+ Different ways to do sorting:
+ Merge Sort -> Without addon Fields, with fixed length
+ Merge Sort -> Without addon Fields, with dynamic length
+ Merge Sort -> With addon Fields, with fixed length
+ Merge Sort -> With addon Fields, with dynamic length
+
+ Priority queue -> Without addon fields
+ Priority queue -> With addon fields
+
+ With PQ (Priority queue) we could have a simple key (memcmp) or a
+ complex key (double & varchar for example). This cost difference
+ is currently not considered.
+*/
+
+
/**
- A local helper function. See comments for get_merge_buffers_cost().
- */
-double get_merge_cost(ha_rows num_elements, ha_rows num_buffers, uint elem_size)
+ Compute the cost of running qsort over a set of rows.
+ @param num_rows How many rows will be sorted.
+ @param with_addon_fields Set to true if the sorted rows include the whole
+ row (with addon fields) or just the keys themselves.
+
+ @retval
+ Cost of the operation.
+*/
+
+double get_qsort_sort_cost(ha_rows num_rows, bool with_addon_fields)
{
- return
- 2.0 * ((double) num_elements * elem_size) / IO_SIZE
- + (double) num_elements * log((double) num_buffers) /
- (TIME_FOR_COMPARE_ROWID * M_LN2);
+ const double row_copy_cost= with_addon_fields ? DEFAULT_ROW_COPY_COST :
+ DEFAULT_KEY_COPY_COST;
+ const double key_cmp_cost= DEFAULT_KEY_COMPARE_COST;
+ const double qsort_constant_factor= QSORT_SORT_SLOWNESS_CORRECTION_FACTOR *
+ (row_copy_cost + key_cmp_cost);
+
+ return qsort_constant_factor * num_rows * log2(1.0 + num_rows);
}
+
+
+/**
+ Compute the cost of sorting num_rows and only retrieving queue_size rows.
+ @param num_rows How many rows will be sorted.
+ @param queue_size How many rows will be returned by the priority
+ queue.
+ @param with_addon_fields Set to true if the sorted rows include the whole
+ row (with addon fields) or just the keys themselves.
+
+ @retval
+ Cost of the operation.
+*/
+
+double get_pq_sort_cost(size_t num_rows, size_t queue_size,
+ bool with_addon_fields)
+{
+ const double row_copy_cost= with_addon_fields ? DEFAULT_ROW_COPY_COST :
+ DEFAULT_KEY_COPY_COST;
+ const double key_cmp_cost= DEFAULT_KEY_COMPARE_COST;
+ /* 2 -> 1 insert, 1 pop from the queue*/
+ const double pq_sort_constant_factor= PQ_SORT_SLOWNESS_CORRECTION_FACTOR *
+ 2.0 * (row_copy_cost + key_cmp_cost);
+
+ return pq_sort_constant_factor * num_rows * log2(1.0 + queue_size);
+}
+
+
+/**
+ Compute the cost of merging "num_buffers" sorted buffers using a priority
+ queue.
+
+ See comments for get_merge_buffers_cost().
+*/
+
+static
+double get_merge_cost(ha_rows num_elements, ha_rows num_buffers,
+ size_t elem_size, double compare_cost,
+ double disk_read_cost)
+{
+ /* 2 -> 1 read + 1 write */
+ const double io_cost= (2.0 * (num_elements * elem_size +
+ DISK_CHUNK_SIZE - 1) /
+ DISK_CHUNK_SIZE) * disk_read_cost;
+ /* 2 -> 1 insert, 1 pop for the priority queue used to merge the buffers. */
+ const double cpu_cost= (2.0 * num_elements * log2(1.0 + num_buffers) *
+ compare_cost) * PQ_SORT_SLOWNESS_CORRECTION_FACTOR;
+ return io_cost + cpu_cost;
}
+
/**
This is a simplified, and faster version of @see get_merge_many_buffs_cost().
We calculate the cost of merging buffers, by simulating the actions
@@ -43,40 +126,52 @@ double get_merge_cost(ha_rows num_elements, ha_rows num_buffers, uint elem_size)
see comments for get_merge_buffers_cost().
TODO: Use this function for Unique::get_use_cost().
*/
+
double get_merge_many_buffs_cost_fast(ha_rows num_rows,
ha_rows num_keys_per_buffer,
- uint elem_size)
+ size_t elem_size,
+ double key_compare_cost,
+ double disk_read_cost,
+ bool with_addon_fields)
{
+ DBUG_ASSERT(num_keys_per_buffer != 0);
+
ha_rows num_buffers= num_rows / num_keys_per_buffer;
ha_rows last_n_elems= num_rows % num_keys_per_buffer;
double total_cost;
+ double full_buffer_sort_cost;
- // Calculate CPU cost of sorting buffers.
- total_cost=
- ((num_buffers * num_keys_per_buffer * log(1.0 + num_keys_per_buffer) +
- last_n_elems * log(1.0 + last_n_elems)) /
- TIME_FOR_COMPARE_ROWID);
-
- // Simulate behavior of merge_many_buff().
+ /* Calculate cost for sorting all merge buffers + the last one. */
+ full_buffer_sort_cost= get_qsort_sort_cost(num_keys_per_buffer,
+ with_addon_fields);
+ total_cost= (num_buffers * full_buffer_sort_cost +
+ get_qsort_sort_cost(last_n_elems, with_addon_fields));
+
+ if (num_buffers >= MERGEBUFF2)
+ total_cost+= TMPFILE_CREATE_COST * 2; // We are creating 2 files.
+
+ /* Simulate behavior of merge_many_buff(). */
while (num_buffers >= MERGEBUFF2)
{
- // Calculate # of calls to merge_buffers().
- const ha_rows loop_limit= num_buffers - MERGEBUFF*3/2;
- const ha_rows num_merge_calls= 1 + loop_limit/MERGEBUFF;
+ /* Calculate # of calls to merge_buffers(). */
+ const ha_rows loop_limit= num_buffers - MERGEBUFF * 3 / 2;
+ const ha_rows num_merge_calls= 1 + loop_limit / MERGEBUFF;
const ha_rows num_remaining_buffs=
num_buffers - num_merge_calls * MERGEBUFF;
- // Cost of merge sort 'num_merge_calls'.
+ /* Cost of merge sort 'num_merge_calls'. */
total_cost+=
num_merge_calls *
- get_merge_cost(num_keys_per_buffer * MERGEBUFF, MERGEBUFF, elem_size);
+ get_merge_cost(num_keys_per_buffer * MERGEBUFF, MERGEBUFF, elem_size,
+ key_compare_cost, disk_read_cost);
// # of records in remaining buffers.
last_n_elems+= num_remaining_buffs * num_keys_per_buffer;
// Cost of merge sort of remaining buffers.
total_cost+=
- get_merge_cost(last_n_elems, 1 + num_remaining_buffs, elem_size);
+ get_merge_cost(last_n_elems, 1 + num_remaining_buffs, elem_size,
+ key_compare_cost, disk_read_cost);
num_buffers= num_merge_calls;
num_keys_per_buffer*= MERGEBUFF;
@@ -84,10 +179,139 @@ double get_merge_many_buffs_cost_fast(ha_rows num_rows,
// Simulate final merge_buff call.
last_n_elems+= num_keys_per_buffer * num_buffers;
- total_cost+= get_merge_cost(last_n_elems, 1 + num_buffers, elem_size);
+ total_cost+= get_merge_cost(last_n_elems, 1 + num_buffers, elem_size,
+ key_compare_cost, disk_read_cost);
return total_cost;
}
+
+void Sort_costs::compute_fastest_sort()
+{
+ lowest_cost= DBL_MAX;
+ uint min_idx= NO_SORT_POSSIBLE_OUT_OF_MEM;
+ for (uint i= 0; i < FINAL_SORT_TYPE; i++)
+ {
+ if (lowest_cost > costs[i])
+ {
+ min_idx= i;
+ lowest_cost= costs[i];
+ }
+ }
+ fastest_sort= static_cast<enum sort_type>(min_idx);
+}
+
+
+/*
+ Calculate cost of using priority queue for filesort.
+ There are two options: using addon fields or not
+*/
+
+void Sort_costs::compute_pq_sort_costs(Sort_param *param, ha_rows num_rows,
+ size_t memory_available,
+ bool with_addon_fields)
+{
+ /*
+ Implementation detail of PQ. To be able to keep a PQ of size N we need
+ N+1 elements allocated so we can use the last element as "swap" space
+ for the "insert" operation.
+ TODO(cvicentiu): This should be left as an implementation detail inside
+ the PQ, not have the optimizer take it into account.
+ */
+ size_t queue_size= param->limit_rows + 1;
+ size_t row_length, num_available_keys;
+
+ costs[PQ_SORT_ALL_FIELDS]= DBL_MAX;
+ costs[PQ_SORT_ORDER_BY_FIELDS]= DBL_MAX;
+
+ /*
+ We can't use priority queue if there's no limit or the limit is
+ too big.
+ */
+ if (param->limit_rows == HA_POS_ERROR ||
+ param->limit_rows >= UINT_MAX - 2)
+ return;
+
+ /* Calculate cost without addon keys (probably using less memory) */
+ row_length= param->sort_length + param->ref_length + sizeof(char*);
+ num_available_keys= memory_available / row_length;
+
+ if (queue_size < num_available_keys)
+ {
+ handler *file= param->sort_form->file;
+ costs[PQ_SORT_ORDER_BY_FIELDS]=
+ get_pq_sort_cost(num_rows, queue_size, false) +
+ file->cost(file->ha_rnd_pos_call_time(MY_MIN(queue_size - 1, num_rows)));
+ }
+
+ /* Calculate cost with addon fields */
+ if (with_addon_fields)
+ {
+ row_length= param->rec_length + sizeof(char *);
+ num_available_keys= memory_available / row_length;
+
+ if (queue_size < num_available_keys)
+ costs[PQ_SORT_ALL_FIELDS]= get_pq_sort_cost(num_rows, queue_size, true);
+ }
+}
+
+/*
+ Calculate cost of using qsort optional merge sort for resolving filesort.
+ There are two options: using addon fields or not
+*/
+
+void Sort_costs::compute_merge_sort_costs(Sort_param *param,
+ ha_rows num_rows,
+ size_t memory_available,
+ bool with_addon_fields)
+{
+ size_t row_length= param->sort_length + param->ref_length + sizeof(char *);
+ size_t num_available_keys= memory_available / row_length;
+
+ costs[MERGE_SORT_ALL_FIELDS]= DBL_MAX;
+ costs[MERGE_SORT_ORDER_BY_FIELDS]= DBL_MAX;
+
+ if (num_available_keys)
+ {
+ handler *file= param->sort_form->file;
+ costs[MERGE_SORT_ORDER_BY_FIELDS]=
+ get_merge_many_buffs_cost_fast(num_rows, num_available_keys,
+ row_length, DEFAULT_KEY_COMPARE_COST,
+ default_optimizer_costs.disk_read_cost,
+ false) +
+ file->cost(file->ha_rnd_pos_call_time(MY_MIN(param->limit_rows, num_rows)));
+ }
+ if (with_addon_fields)
+ {
+ /* Compute cost of merge sort *if* we strip addon fields. */
+ row_length= param->rec_length + sizeof(char *);
+ num_available_keys= memory_available / row_length;
+
+ if (num_available_keys)
+ costs[MERGE_SORT_ALL_FIELDS]=
+ get_merge_many_buffs_cost_fast(num_rows, num_available_keys,
+ row_length, DEFAULT_KEY_COMPARE_COST,
+ DISK_READ_COST_THD(thd),
+ true);
+ }
+
+ /*
+ TODO(cvicentiu) we do not handle dynamic length fields yet.
+ The code should decide here if the format is FIXED length or DYNAMIC
+ and fill in the appropriate costs.
+ */
+}
+
+void Sort_costs::compute_sort_costs(Sort_param *param, ha_rows num_rows,
+ size_t memory_available,
+ bool with_addon_fields)
+{
+ compute_pq_sort_costs(param, num_rows, memory_available,
+ with_addon_fields);
+ compute_merge_sort_costs(param, num_rows, memory_available,
+ with_addon_fields);
+ compute_fastest_sort();
+}
+
/*
alloc_sort_buffer()
@@ -173,7 +397,7 @@ void Filesort_buffer::sort_buffer(const Sort_param *param, uint count)
uchar **buffer= NULL;
if (!param->using_packed_sortkeys() &&
- radixsort_is_appliccable(count, param->sort_length) &&
+ radixsort_is_applicable(count, param->sort_length) &&
(buffer= (uchar**) my_malloc(PSI_INSTRUMENT_ME, count*sizeof(char*),
MYF(MY_THREAD_SPECIFIC))))
{
@@ -186,3 +410,66 @@ void Filesort_buffer::sort_buffer(const Sort_param *param, uint count)
param->get_compare_function(),
param->get_compare_argument(&size));
}
+
+
+static
+size_t get_sort_length(THD *thd, Item_field *item)
+{
+ SORT_FIELD_ATTR sort_attr;
+ sort_attr.type= ((item->field)->is_packable() ?
+ SORT_FIELD_ATTR::VARIABLE_SIZE :
+ SORT_FIELD_ATTR::FIXED_SIZE);
+ item->type_handler()->sort_length(thd, item, &sort_attr);
+
+ return sort_attr.length + (item->maybe_null() ? 1 : 0);
+}
+
+
+/**
+ Calculate the cost of doing a filesort
+
+ @param table Table to sort
+ @param Order_by Fields to sort
+ @param rows_to_read Number of rows to be sorted
+ @param limit_rows Number of rows in result (when using limit)
+ @param used_sort_type Set to the sort algorithm used
+
+ @result cost of sorting
+*/
+
+
+double cost_of_filesort(TABLE *table, ORDER *order_by, ha_rows rows_to_read,
+ ha_rows limit_rows, enum sort_type *used_sort_type)
+{
+ THD *thd= table->in_use;
+ Sort_costs costs;
+ Sort_param param;
+ size_t memory_available= (size_t) thd->variables.sortbuff_size;
+ uint sort_len= 0;
+ uint addon_field_length, num_addon_fields, num_nullable_fields;
+ uint packable_length;
+ bool with_addon_fields;
+
+ for (ORDER *ptr= order_by; ptr ; ptr= ptr->next)
+ {
+ Item_field *field= (Item_field*) (*ptr->item)->real_item();
+ size_t length= get_sort_length(thd, field);
+ set_if_smaller(length, thd->variables.max_sort_length);
+ sort_len+= (uint) length;
+ }
+
+ with_addon_fields=
+ filesort_use_addons(table, sort_len, &addon_field_length,
+ &num_addon_fields, &num_nullable_fields,
+ &packable_length);
+
+ /* Fill in the Sort_param structure so we can compute the sort costs */
+ param.setup_lengths_and_limit(table, sort_len, addon_field_length,
+ limit_rows);
+
+ costs.compute_sort_costs(&param, rows_to_read, memory_available,
+ with_addon_fields);
+
+ *used_sort_type= costs.fastest_sort;
+ return costs.lowest_cost;
+}
diff --git a/sql/filesort_utils.h b/sql/filesort_utils.h
index 946b1cb4..776e986e 100644
--- a/sql/filesort_utils.h
+++ b/sql/filesort_utils.h
@@ -16,16 +16,20 @@
#ifndef FILESORT_UTILS_INCLUDED
#define FILESORT_UTILS_INCLUDED
+#include "my_global.h"
#include "my_base.h"
#include "sql_array.h"
+#include "handler.h"
class Sort_param;
-/*
+
+/**
Calculate cost of merge sort
@param num_rows Total number of rows.
@param num_keys_per_buffer Number of keys per buffer.
@param elem_size Size of each element.
+ @param key_compare_cost Cost to compare two keys during QSort & merge
Calculates cost of merge sort by simulating call to merge_many_buff().
@@ -38,19 +42,82 @@ class Sort_param;
See also comments get_merge_many_buffs_cost().
*/
-
double get_merge_many_buffs_cost_fast(ha_rows num_rows,
ha_rows num_keys_per_buffer,
- uint elem_size);
+ size_t elem_size,
+ double compare_cost,
+ bool with_addon_fields);
+
/**
+ These are the current sorting algorithms we compute cost for:
+
+ PQ_SORT_ALL_FIELDS Sort via priority queue, with addon fields.
+ PQ_SORT_ORDER_BY_FIELDS Sort via priority queue, without addon fields.
+
+ MERGE_SORT_ALL_FIELDS Sort via merge sort, with addon fields.
+ MERGE_SORT_ORDER_BY_FIELDS Sort via merge sort, without addon fields.
+
+ Note:
+ There is the possibility to do merge-sorting with dynamic length fields.
+ This is more expensive than if there are only fixed length fields,
+ however we do not (yet) account for that extra cost. We can extend the
+ cost computation in the future to cover that case as well.
+
+ Effectively there are 4 possible combinations for merge sort:
+ With/without addon fields
+ With/without dynamic length fields.
+*/
+
+enum sort_type
+{
+ PQ_SORT_ALL_FIELDS= 0,
+ PQ_SORT_ORDER_BY_FIELDS,
+ MERGE_SORT_ALL_FIELDS,
+ MERGE_SORT_ORDER_BY_FIELDS,
+
+ NO_SORT_POSSIBLE_OUT_OF_MEM, /* In case of errors */
+ FINAL_SORT_TYPE= NO_SORT_POSSIBLE_OUT_OF_MEM
+};
+
+struct Sort_costs
+{
+ Sort_costs() :
+ fastest_sort(NO_SORT_POSSIBLE_OUT_OF_MEM), lowest_cost(DBL_MAX) {}
+
+ void compute_sort_costs(Sort_param *param, ha_rows num_rows,
+ size_t memory_available,
+ bool with_addon_fields);
+
+ /* Cache value for fastest_sort. */
+ enum sort_type fastest_sort;
+ /* Cache value for lowest cost. */
+ double lowest_cost;
+private:
+ /*
+ Array to hold all computed costs.
+ TODO(cvicentiu) This array is only useful for debugging. If it's not
+ used in debugging code, it can be removed to reduce memory usage.
+ */
+ double costs[FINAL_SORT_TYPE];
+
+ void compute_pq_sort_costs(Sort_param *param, ha_rows num_rows,
+ size_t memory_available,
+ bool with_addon_fields);
+ void compute_merge_sort_costs(Sort_param *param, ha_rows num_rows,
+ size_t memory_available,
+ bool with_addon_fields);
+ void compute_fastest_sort();
+};
+
+/**
A wrapper class around the buffer used by filesort().
The sort buffer is a contiguous chunk of memory,
containing both records to be sorted, and pointers to said records:
- <start of buffer | still unused | end of buffer>
- |rec 0|record 1 |rec 2| ............ |ptr to rec2|ptr to rec1|ptr to rec0|
+ <start of buffer | still unused | end of buffer>
+ | rec0 | rec1 | rec2 | ............ |ptr to rec2|ptr to rec1|ptr to rec0|
Records will be inserted "left-to-right". Records are not necessarily
fixed-size, they can be packed and stored without any "gaps".
@@ -268,8 +335,14 @@ private:
longlong m_idx;
};
+/* Names for sort_type */
+extern const LEX_CSTRING filesort_names[];
+
+double cost_of_filesort(TABLE *table, ORDER *order_by, ha_rows rows_to_read,
+ ha_rows limit_rows, enum sort_type *used_sort_type);
+
+double get_qsort_sort_cost(ha_rows num_rows, bool with_addon_fields);
int compare_packed_sort_keys(void *sort_keys, unsigned char **a,
unsigned char **b);
qsort2_cmp get_packed_keys_compare_ptr();
-
#endif // FILESORT_UTILS_INCLUDED
diff --git a/sql/gen_win_tzname_data.ps1 b/sql/gen_win_tzname_data.ps1
deleted file mode 100644
index 474ab889..00000000
--- a/sql/gen_win_tzname_data.ps1
+++ /dev/null
@@ -1,12 +0,0 @@
-# Generates a header file for converting between Windows timezone names to tzdb names
-# using CLDR data.
-# Usage: powershell -File gen_win_tzname_data.ps1 > win_tzname_data.h
-
-write-output "/* This file was generated using gen_win_tzname_data.ps1 */"
-$xdoc = new-object System.Xml.XmlDocument
-[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
-$xdoc.load("https://raw.githubusercontent.com/unicode-org/cldr/master/common/supplemental/windowsZones.xml")
-$nodes = $xdoc.SelectNodes("//mapZone[@territory='001']") # use default territory (001)
-foreach ($node in $nodes) {
- write-output ('{L"'+ $node.other + '","'+ $node.type+'"},')
-}
diff --git a/sql/gtid_index.cc b/sql/gtid_index.cc
new file mode 100644
index 00000000..0467c7cf
--- /dev/null
+++ b/sql/gtid_index.cc
@@ -0,0 +1,1434 @@
+/*
+ Copyright (c) 2023 Kristian Nielsen <knielsen@knielsen-hq.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include "gtid_index.h"
+#include "sql_const.h"
+#include "log.h"
+
+
+static const uchar GTID_INDEX_MAGIC[4]= {
+ 254, 254, 12, 1,
+};
+
+Gtid_index_writer *Gtid_index_writer::hot_index_list= nullptr;
+/* gtid_index_mutex is inited in MYSQL_LOG::init_pthread_objects(). */
+mysql_mutex_t Gtid_index_writer::gtid_index_mutex;
+
+
+Gtid_index_writer::Gtid_index_writer(const char *filename, uint32 offset,
+ rpl_binlog_state_base *binlog_state,
+ uint32 opt_page_size,
+ my_off_t opt_span_min)
+ : offset_min_threshold(opt_span_min),
+ nodes(nullptr), previous_offset(0),
+ max_level(0), index_file(-1),
+ error_state(false), file_header_written(false), in_hot_index_list(false)
+{
+ uint32 count;
+ rpl_gtid *gtid_list;
+ page_size= opt_page_size;
+ pending_state.init();
+
+ if (alloc_level_if_missing(0))
+ {
+ give_error("Out of memory allocating node list");
+ return;
+ }
+
+ /*
+ Lock the index mutex at this point just before we create the new index
+ file on disk. From this point on, and until the index is fully written,
+ the reader will find us in the "hot index" list and will be able to read
+ from the index while it's still being constructed.
+ */
+ lock_gtid_index();
+
+ build_index_filename(filename);
+ int create_flags= O_WRONLY|O_TRUNC|O_BINARY|O_EXCL;
+ index_file= mysql_file_create(key_file_gtid_index, index_file_name,
+ CREATE_MODE, create_flags, MYF(0));
+ if (index_file < 0 && my_errno == EEXIST)
+ {
+ /*
+ It shouldn't happen that an old GTID index file remains, as we remove
+ them as part of RESET MASTER and PURGE BINARY LOGS. But if it happens
+ due to some external file copy of the user or something, delete any old
+ GTID index file first.
+ */
+ sql_print_information("Old GTID index file found '%s', deleting",
+ index_file_name);
+ my_errno= 0;
+ mysql_file_delete(key_file_gtid_index, index_file_name, MYF(0));
+ index_file= mysql_file_create(key_file_gtid_index, index_file_name,
+ CREATE_MODE, create_flags, MYF(0));
+ }
+ if (index_file < 0)
+ {
+ give_error("Failed to open new index file for writing");
+ goto err;
+ }
+
+ /*
+ Write out an initial index record, i.e. corresponding to the GTID_LIST
+ event / binlog state at the start of the binlog file.
+ */
+ count= binlog_state->count_nolock();
+ gtid_list= gtid_list_buffer(count);
+ if (count > 0)
+ {
+ if (!gtid_list)
+ goto err;
+ binlog_state->get_gtid_list_nolock(gtid_list, count);
+ }
+ write_record(offset, gtid_list, count);
+
+ insert_in_hot_index();
+
+err:
+ unlock_gtid_index();
+}
+
+
+Gtid_index_writer::~Gtid_index_writer()
+{
+ if (in_hot_index_list)
+ {
+ lock_gtid_index();
+ close();
+ unlock_gtid_index();
+ }
+
+ if (index_file > 0)
+ {
+ /*
+ Should have been closed by call to Gtid_index_writer::close().
+ We can at least avoid leaking file descriptor.
+ */
+ mysql_file_close(index_file, MYF(0));
+ }
+
+ if (nodes)
+ {
+ for (uint32 i= 0; i <= max_level; ++i)
+ delete nodes[i];
+ my_free(nodes);
+ }
+
+ /*
+ state.free() is not needed here, will be called from rpl_binlog_state_base
+ destructor.
+ */
+}
+
+
+void
+Gtid_index_writer::gtid_index_init()
+{
+ mysql_mutex_init(key_gtid_index_lock, &gtid_index_mutex, MY_MUTEX_INIT_SLOW);
+}
+
+void
+Gtid_index_writer::gtid_index_cleanup()
+{
+ mysql_mutex_destroy(&gtid_index_mutex);
+}
+
+
+const Gtid_index_writer *
+Gtid_index_writer::find_hot_index(const char *file_name)
+{
+ mysql_mutex_assert_owner(&gtid_index_mutex);
+
+ for (const Gtid_index_writer *p= hot_index_list; p; p= p->next_hot_index)
+ {
+ if (0 == strcmp(file_name, p->index_file_name))
+ return p;
+ }
+ return nullptr;
+}
+
+void
+Gtid_index_writer::insert_in_hot_index()
+{
+ mysql_mutex_assert_owner(&gtid_index_mutex);
+
+ next_hot_index= hot_index_list;
+ hot_index_list= this;
+ in_hot_index_list= true;
+}
+
+
+void
+Gtid_index_writer::remove_from_hot_index()
+{
+ mysql_mutex_assert_owner(&gtid_index_mutex);
+
+ Gtid_index_writer **next_ptr_ptr= &hot_index_list;
+ for (;;)
+ {
+ Gtid_index_writer *p= *next_ptr_ptr;
+ if (!p)
+ break;
+ if (p == this)
+ {
+ *next_ptr_ptr= p->next_hot_index;
+ break;
+ }
+ next_ptr_ptr= &p->next_hot_index;
+ }
+ next_hot_index= nullptr;
+ in_hot_index_list= false;
+}
+
+void
+Gtid_index_writer::process_gtid(uint32 offset, const rpl_gtid *gtid)
+{
+ rpl_gtid *gtid_list;
+ uint32 gtid_count;
+
+ if (process_gtid_check_batch(offset, gtid, &gtid_list, &gtid_count))
+ return; // Error
+
+ if (gtid_list)
+ async_update(offset, gtid_list, gtid_count);
+}
+
+
+int
+Gtid_index_writer::process_gtid_check_batch(uint32 offset, const rpl_gtid *gtid,
+ rpl_gtid **out_gtid_list,
+ uint32 *out_gtid_count)
+{
+ uint32 count;
+ rpl_gtid *gtid_list;
+
+ mysql_mutex_assert_not_owner(&gtid_index_mutex);
+
+ if (unlikely(pending_state.update_nolock(gtid)))
+ {
+ give_error("Out of memory processing GTID for binlog GTID index");
+ return 1;
+ }
+ /*
+ Sparse index; we record only selected GTIDs, and scan the binlog forward
+ from there to find the exact spot.
+ */
+ if (offset - previous_offset < offset_min_threshold)
+ {
+ *out_gtid_list= nullptr;
+ *out_gtid_count= 0;
+ return 0;
+ }
+
+ count= pending_state.count_nolock();
+ DBUG_ASSERT(count > 0 /* Since we just updated with a GTID. */);
+ gtid_list= (rpl_gtid *)
+ my_malloc(key_memory_binlog_gtid_index, count*sizeof(*gtid_list), MYF(0));
+ if (unlikely(!gtid_list))
+ {
+ give_error("Out of memory allocating GTID list for binlog GTID index");
+ return 1;
+ }
+ if (unlikely(pending_state.get_gtid_list_nolock(gtid_list, count)))
+ {
+ /* Shouldn't happen as we allocated the list with the correct length. */
+ DBUG_ASSERT(false);
+ give_error("Internal error allocating GTID list for binlog GTID index");
+ my_free(gtid_list);
+ return 1;
+ }
+ pending_state.reset_nolock();
+ previous_offset= offset;
+ *out_gtid_list= gtid_list;
+ *out_gtid_count= count;
+ return 0;
+}
+
+
+int
+Gtid_index_writer::async_update(uint32 event_offset,
+ rpl_gtid *gtid_list,
+ uint32 gtid_count)
+{
+ lock_gtid_index();
+ int res= write_record(event_offset, gtid_list, gtid_count);
+ unlock_gtid_index();
+ my_free(gtid_list);
+ return res;
+}
+
+
+void
+Gtid_index_writer::close()
+{
+ lock_gtid_index();
+ if (!error_state)
+ {
+
+ /*
+ Write out the remaining pending pages, and insert the final child pointer
+ in interior nodes.
+ */
+ for (uint32 level= 0; ; ++level)
+ {
+ uint32 node_ptr= write_current_node(level, level==max_level);
+ nodes[level]->reset();
+ if (!node_ptr || level >= max_level)
+ break;
+ add_child_ptr(level+1, node_ptr);
+ }
+ }
+ remove_from_hot_index();
+ unlock_gtid_index();
+
+ if (!error_state)
+ {
+ if (mysql_file_sync(index_file, MYF(0)))
+ give_error("Error syncing index file to disk");
+ }
+
+ mysql_file_close(index_file, MYF(0));
+ index_file= (File)-1;
+}
+
+
+Gtid_index_base::Index_node_base::Index_node_base()
+ : first_page(nullptr), current_page(nullptr), current_ptr(nullptr)
+{
+}
+
+
+Gtid_index_base::Index_node_base::~Index_node_base()
+{
+ free_pages();
+}
+
+
+void
+Gtid_index_base::Index_node_base::free_pages()
+{
+ for (Node_page *p= first_page; p; )
+ {
+ Node_page *q= p->next;
+ my_free(p);
+ p= q;
+ }
+}
+
+
+void
+Gtid_index_base::Index_node_base::reset()
+{
+ free_pages();
+ first_page= current_page= nullptr;
+}
+
+
+Gtid_index_base::Gtid_index_base()
+ : gtid_buffer(nullptr), gtid_buffer_alloc(0)
+{
+}
+
+
+Gtid_index_base::~Gtid_index_base()
+{
+ if (gtid_buffer_alloc > 0)
+ my_free(gtid_buffer);
+}
+
+
+void
+Gtid_index_base::make_gtid_index_file_name(char *out_name, size_t bufsize,
+ const char *base_filename)
+{
+ char *p= strmake(out_name, base_filename, bufsize-1);
+ size_t remain= bufsize - (p - out_name);
+ strmake(p, ".idx", remain-1);
+}
+
+
+void
+Gtid_index_base::build_index_filename(const char *filename)
+{
+ make_gtid_index_file_name(index_file_name, sizeof(index_file_name), filename);
+}
+
+
+rpl_gtid *
+Gtid_index_base::gtid_list_buffer(uint32 count)
+{
+ if (gtid_buffer_alloc >= count)
+ return gtid_buffer;
+ rpl_gtid *new_buffer= (rpl_gtid *)
+ my_malloc(key_memory_binlog_gtid_index, count*sizeof(*new_buffer), MYF(0));
+ if (!new_buffer)
+ {
+ give_error("Out of memory allocating buffer for GTID list");
+ return NULL;
+ }
+ my_free(gtid_buffer);
+ gtid_buffer= new_buffer;
+ gtid_buffer_alloc= count;
+ return new_buffer;
+}
+
+
+Gtid_index_writer::Index_node::Index_node(uint32 level_)
+ : num_records(0), level(level_), force_spill_page(false)
+{
+ state.init();
+}
+
+
+Gtid_index_writer::Index_node::~Index_node()
+{
+ free_pages();
+}
+
+
+uint32
+Gtid_index_writer::write_current_node(uint32 level, bool is_root)
+{
+ Index_node *n= nodes[level];
+
+ uint32 node_pos= (uint32)mysql_file_tell(index_file, MYF(0));
+
+ for (Node_page *p= n->first_page; p ; p= p->next)
+ {
+ if (unlikely(is_root))
+ *(p->flag_ptr) |= PAGE_FLAG_ROOT;
+ if (likely(!p->next))
+ *(p->flag_ptr) |= PAGE_FLAG_LAST;
+ int4store(p->page + page_size - CHECKSUM_LEN,
+ my_checksum(0, p->page, page_size - CHECKSUM_LEN));
+ if (mysql_file_write(index_file, p->page, page_size, MYF(MY_NABP)))
+ {
+ give_error("Error writing index page");
+ return 0;
+ }
+ }
+
+ DBUG_ASSERT(node_pos % page_size == 0);
+ /* Page numbers are +1 just so that zero can denote invalid page pointer. */
+ return 1 + (node_pos / (uint32)page_size);
+}
+
+
+void
+Gtid_index_writer::Index_node::reset()
+{
+ Index_node_base::reset();
+ state.reset_nolock();
+ num_records= 0;
+ force_spill_page= false;
+}
+
+
+/*
+ Make sure there is requested space in the current page, by allocating a
+ new spill page if necessary.
+*/
+int
+Gtid_index_writer::reserve_space(Index_node *n, size_t bytes)
+{
+ DBUG_ASSERT(bytes <= page_size);
+ if (likely(n->current_page) &&
+ likely(n->current_ptr - n->current_page->page + bytes <=
+ (page_size - CHECKSUM_LEN)))
+ return 0;
+ /* Not enough room, allocate a spill page. */
+ Node_page *page= alloc_page();
+ n->force_spill_page= false;
+ if (!page)
+ return 1;
+ n->current_ptr=
+ init_header(page, n->level==0, !n->current_page);
+ if (n->current_page)
+ n->current_page->next= page;
+ else
+ n->first_page= page;
+ n->current_page= page;
+ return 0;
+}
+
+
+int
+Gtid_index_writer::do_write_record(uint32 level,
+ uint32 event_offset,
+ const rpl_gtid *gtid_list,
+ uint32 gtid_count)
+{
+ DBUG_ASSERT(level <= max_level);
+ Index_node *n= nodes[level];
+ if (reserve_space(n, 8))
+ return 1;
+ /* Store the count as +1, so that 0 can mean "no more records". */
+ int4store(n->current_ptr, gtid_count+1);
+ int4store(n->current_ptr+4, event_offset);
+ n->current_ptr+= 8;
+ for (uint32 i= 0; i < gtid_count; ++i)
+ {
+ if (reserve_space(n, 16))
+ return 1;
+ int4store(n->current_ptr, gtid_list[i].domain_id);
+ int4store(n->current_ptr+4, gtid_list[i].server_id);
+ int8store(n->current_ptr+8, gtid_list[i].seq_no);
+ n->current_ptr+= 16;
+ }
+
+ ++n->num_records;
+ return 0;
+}
+
+
+/*
+ Add a child pointer to the current node on LEVEL.
+ The first page has node_ptr=1 just so that a zero node_ptr can be used as
+ a no/invalid value (effectively node_ptr points to the end of the target
+ page, in unit of pages).
+
+ Adding a child pointer shouldn't spill to a new page, code must make sure that
+ there is always room for the final child pointer in current non-leaf node.
+*/
+int
+Gtid_index_writer::add_child_ptr(uint32 level, my_off_t node_offset)
+{
+ DBUG_ASSERT(level <= max_level);
+ DBUG_ASSERT(node_offset > 0);
+ Index_node *n= nodes[level];
+ if (reserve_space(n, 4))
+ return 1;
+ DBUG_ASSERT(n->current_page);
+ DBUG_ASSERT((size_t)(n->current_ptr - n->current_page->page + 4) <=
+ page_size - CHECKSUM_LEN);
+
+ int4store(n->current_ptr, node_offset);
+ n->current_ptr+= 4;
+ return 0;
+}
+
+
+/*
+ Write one index record to the GTID index, flushing nodes and allocating
+ new nodes as necessary.
+*/
+int
+Gtid_index_writer::write_record(uint32 event_offset,
+ const rpl_gtid *gtid_list,
+ uint32 gtid_count)
+{
+ if (error_state)
+ return 1; /* Avoid continuing on a possibly corrupt state. */
+
+ uint32 level= 0;
+ /*
+ The most frequent case is when there is room in the current page for the
+ current position to be written, in which case we exit early in the first
+ iteration of the following loop.
+
+ In the general case, we move up through the path to the root, writing
+ lower-level node page to disk and adding child pointers in higher-level
+ nodes, until we reach a node that has room. This final node may be a
+ freshly allocated new root node in the few times when the height of the
+ tree increases.
+ */
+ for (;;)
+ {
+ Index_node *n= nodes[level];
+ if (update_gtid_state(&n->state, gtid_list, gtid_count))
+ return give_error("Out of memory updating the local GTID state");
+
+ if (check_room(level, gtid_count))
+ {
+ /* There is room in the node, just add the index record. */
+ return do_write_record(level, event_offset, gtid_list, gtid_count);
+ }
+
+ /*
+ This node is full:
+ - First, write out this node to disk.
+ - Add a child pointer in the parent node (allocating one if needed).
+ - On level 0, allocate a new leaf node and add the index record there.
+ - On levels >0, skip the last index record when the node gets full
+ (B+-Tree has (k-1) keys for k child pointers).
+ - Loop to the parent node to add an index record there.
+ */
+ uint32 node_ptr= write_current_node(level, false);
+ if (!node_ptr)
+ return 1;
+ if (alloc_level_if_missing(level+1) ||
+ add_child_ptr(level+1, node_ptr))
+ return 1;
+ uint32 new_count= n->state.count_nolock();
+ rpl_gtid *new_gtid_list= gtid_list_buffer(new_count);
+ if (new_count > 0 && !new_gtid_list)
+ return 1;
+ if (n->state.get_gtid_list_nolock(new_gtid_list, new_count))
+ return give_error("Internal error processing GTID state");
+ n->reset();
+ if (level == 0)
+ {
+ if (do_write_record(level, event_offset, new_gtid_list, new_count))
+ return 1;
+ }
+ else
+ {
+ /*
+ Allocate a page for the node. This is mostly to help the reader of hot
+ index to not see NULL pointers, and we will need the page later anyway
+ to put at least one child pointer to the level below.
+ */
+ if (reserve_space(n, 4))
+ return 1;
+ }
+ gtid_list= new_gtid_list;
+ gtid_count= new_count;
+ ++level;
+ }
+ // NotReached.
+}
+
+
+bool
+Gtid_index_writer::check_room(uint32 level, uint32 gtid_count)
+{
+ Index_node *n= nodes[level];
+ /* There's always room in an empty (to-be-allocated) page. */
+ if (!n->current_page || n->num_records == 0)
+ return true;
+ /*
+ Make sure we use at least 1/2 a page of room after the initial record,
+ setting a flag to allocate a spill page later if needed.
+ */
+ size_t avail= page_size - CHECKSUM_LEN - (n->current_ptr - n->current_page->page);
+ if (n->num_records==1 && avail < page_size/2)
+ {
+ n->force_spill_page= true;
+ return true;
+ }
+ if (n->force_spill_page)
+ return true;
+ size_t needed= 8 + 16*gtid_count;
+ /* Non-leaf pages need extra 4 bytes for a child pointer. */
+ if (level > 0)
+ needed+= 4;
+ return needed <= avail;
+}
+
+
+int
+Gtid_index_writer::alloc_level_if_missing(uint32 level)
+{
+ if (likely(nodes))
+ {
+ if (likely(max_level >= level))
+ return 0;
+ DBUG_ASSERT(level == max_level+1); // Alloc one at a time
+ }
+
+ Index_node *node= new Index_node(level);
+ if (!node)
+ return give_error("Out of memory allocating new node");
+ Index_node **new_nodes= (Index_node **)
+ my_realloc(key_memory_binlog_gtid_index, nodes, (level+1)*sizeof(*nodes),
+ MYF(MY_ALLOW_ZERO_PTR|MY_ZEROFILL));
+ if (!new_nodes)
+ {
+ delete node;
+ return give_error("Out of memory allocating larger node list");
+ }
+ new_nodes[level]= node;
+ nodes= new_nodes;
+ max_level= level;
+ return 0;
+}
+
+
+/*
+ Initialize the start of a data page.
+ This is at the start of a page, except for the very first page where it
+ comes after the global file header.
+ Format:
+ 0 flags.
+ 1-3 unused padding/reserved.
+
+ The argument FIRST denotes if this is the first page (if false it is a
+ continuation page).
+*/
+uchar *
+Gtid_index_writer::init_header(Node_page *page, bool is_leaf, bool is_first)
+{
+ uchar *p= page->page;
+ bool is_file_header= !file_header_written;
+
+ if (unlikely(is_file_header))
+ {
+ memcpy(p, GTID_INDEX_MAGIC, sizeof(GTID_INDEX_MAGIC));
+ p+= sizeof(GTID_INDEX_MAGIC);
+ *p++= GTID_INDEX_VERSION_MAJOR;
+ *p++= GTID_INDEX_VERSION_MINOR;
+ /* Flags/padding currently unused. */
+ *p++= 0;
+ *p++= 0;
+ int4store(p, page_size);
+ p+= 4;
+ DBUG_ASSERT(p == page->page + GTID_INDEX_FILE_HEADER_SIZE);
+ file_header_written= true;
+ }
+
+ uchar flags= 0;
+ if (is_leaf)
+ flags|= PAGE_FLAG_IS_LEAF;
+ if (unlikely(!is_first))
+ flags|= PAGE_FLAG_IS_CONT;
+ page->flag_ptr= p;
+ *p++= flags;
+ /* Padding/reserved. */
+ p+= 3;
+ DBUG_ASSERT(p == page->page +
+ (is_file_header ? GTID_INDEX_FILE_HEADER_SIZE : 0) +
+ GTID_INDEX_PAGE_HEADER_SIZE);
+ DBUG_ASSERT((size_t)(p - page->page) < page_size - CHECKSUM_LEN);
+ return p;
+}
+
+
+int
+Gtid_index_base::update_gtid_state(rpl_binlog_state_base *state,
+ const rpl_gtid *gtid_list, uint32 gtid_count)
+{
+ for (uint32 i= 0; i < gtid_count; ++i)
+ if (state->update_nolock(&gtid_list[i]))
+ return 1;
+ return 0;
+}
+
+
+Gtid_index_base::Node_page *Gtid_index_base::alloc_page()
+{
+ Node_page *new_node= (Node_page *)
+ my_malloc(key_memory_binlog_gtid_index,
+ sizeof(Node_page) + page_size,
+ MYF(MY_ZEROFILL));
+ if (!new_node)
+ give_error("Out of memory for allocating index page");
+ return new_node;
+}
+
+
+int Gtid_index_writer::give_error(const char *msg)
+{
+ if (!error_state)
+ {
+ sql_print_information("Error during binlog GTID index creation, will "
+ "fallback to slower sequential binlog scan. "
+ "Error is: %s", msg);
+ error_state= true;
+ }
+ return 1;
+}
+
+
+Gtid_index_reader::Gtid_index_reader()
+ : n(nullptr), index_file(-1),
+ file_open(false), index_valid(false), has_root_node(false),
+ version_major(0), version_minor(0)
+{
+ current_state.init();
+ compare_state.init();
+}
+
+
+Gtid_index_reader::~Gtid_index_reader()
+{
+ if (file_open)
+ mysql_file_close(index_file, MYF(0));
+}
+
+
+int
+Gtid_index_reader::search_offset(uint32 in_offset,
+ uint32 *out_offset, uint32 *out_gtid_count)
+{
+ in_search_offset= in_offset;
+ search_cmp_function= &Gtid_index_reader::search_cmp_offset;
+
+ return do_index_search(out_offset, out_gtid_count);
+}
+
+int
+Gtid_index_reader::search_gtid_pos(slave_connection_state *in_gtid_pos,
+ uint32 *out_offset, uint32 *out_gtid_count)
+{
+ in_search_gtid_pos= in_gtid_pos;
+ search_cmp_function= &Gtid_index_reader::search_cmp_gtid_pos;
+
+ int res= do_index_search(out_offset, out_gtid_count);
+ /* Let's not leave a dangling pointer to the caller's memory. */
+ in_search_gtid_pos= nullptr;
+
+ return res;
+}
+
+rpl_gtid *
+Gtid_index_reader::search_gtid_list()
+{
+ return gtid_buffer;
+}
+
+
+int
+Gtid_index_reader::search_cmp_offset(uint32 offset,
+ rpl_binlog_state_base *state)
+{
+ if (offset <= in_search_offset)
+ return 0;
+ else
+ return -1;
+}
+
+
+int
+Gtid_index_reader::search_cmp_gtid_pos(uint32 offset,
+ rpl_binlog_state_base *state)
+{
+ if (state->is_before_pos(in_search_gtid_pos))
+ return 0;
+ else
+ return -1;
+}
+
+
+int
+Gtid_index_reader::next_page()
+{
+ if (!read_page->next)
+ return 1;
+ read_page= read_page->next;
+ read_ptr= read_page->flag_ptr + 4;
+ return 0;
+}
+
+
+int
+Gtid_index_reader::find_bytes(uint32 num_bytes)
+{
+ if ((my_ptrdiff_t)(read_ptr - read_page->page + num_bytes) <=
+ (my_ptrdiff_t)(page_size - CHECKSUM_LEN))
+ return 0;
+ return next_page();
+}
+
+
+int
+Gtid_index_reader::get_child_ptr(uint32 *out_child_ptr)
+{
+ if (find_bytes(4))
+ return give_error("Corrupt index, short index node");
+ *out_child_ptr= (uint32)uint4korr(read_ptr);
+ read_ptr+= 4;
+ return 0;
+}
+
+
+/*
+ Read the start of an index record (count of GTIDs in the differential state
+ and offset).
+ Returns:
+ 0 ok
+ 1 EOF, no more data in this node
+*/
+int
+Gtid_index_reader::get_offset_count(uint32 *out_offset, uint32 *out_gtid_count)
+{
+ if (find_bytes(8))
+ return 1;
+ uint32 gtid_count= uint4korr(read_ptr);
+ if (gtid_count == 0)
+ {
+ /* 0 means invalid/no record (we store N+1 for N GTIDs in record). */
+ return 1;
+ }
+ *out_gtid_count= gtid_count - 1;
+ *out_offset= uint4korr(read_ptr + 4);
+ read_ptr+= 8;
+ return 0;
+}
+
+
+int
+Gtid_index_reader::get_gtid_list(rpl_gtid *out_gtid_list, uint32 count)
+{
+ for (uint32 i= 0; i < count; ++i)
+ {
+ if (find_bytes(16))
+ return give_error("Corrupt index, short index node");
+ out_gtid_list[i].domain_id= uint4korr(read_ptr);
+ out_gtid_list[i].server_id= uint4korr(read_ptr + 4);
+ out_gtid_list[i].seq_no= uint8korr(read_ptr + 8);
+ read_ptr+= 16;
+ }
+ return 0;
+}
+
+
+int
+Gtid_index_reader::open_index_file(const char *binlog_filename)
+{
+ close_index_file();
+ build_index_filename(binlog_filename);
+ if ((index_file= mysql_file_open(key_file_gtid_index, index_file_name,
+ O_RDONLY|O_BINARY, MYF(0))) < 0)
+ return 1; // No error for missing index (eg. upgrade)
+
+ file_open= true;
+ if (read_file_header())
+ return 1;
+
+ return 0;
+}
+
+void
+Gtid_index_reader::close_index_file()
+{
+ if (!file_open)
+ return;
+ mysql_file_close(index_file, MYF(0));
+ file_open= false;
+ index_valid= false;
+}
+
+
+int
+Gtid_index_reader::do_index_search(uint32 *out_offset, uint32 *out_gtid_count)
+{
+ /* In cold index, we require a complete index with a valid root node. */
+ if (!has_root_node)
+ return -1;
+
+ return do_index_search_root(out_offset, out_gtid_count);
+}
+
+
+int
+Gtid_index_reader::do_index_search_root(uint32 *out_offset,
+ uint32 *out_gtid_count)
+{
+ current_state.reset_nolock();
+ compare_state.reset_nolock();
+ /*
+ These states will be initialized to the full state stored at the start of
+ the root node and then incrementally updated.
+ */
+ bool current_state_updated= false;
+
+ if (read_root_node())
+ return -1;
+ for (;;)
+ {
+ if (*n->first_page->flag_ptr & PAGE_FLAG_IS_LEAF)
+ break;
+
+ if (compare_state.load_nolock(&current_state))
+ {
+ give_error("Out of memory allocating GTID list");
+ return -1;
+ }
+ uint32 child_ptr;
+ if (get_child_ptr(&child_ptr))
+ return -1;
+
+ /* Scan over the keys in the node to find the child pointer to follow */
+ for (;;)
+ {
+ uint32 offset, gtid_count;
+ int res= get_offset_count(&offset, &gtid_count);
+ if (res == 1) // EOF?
+ {
+ /* Follow the right-most child pointer. */
+ if (read_node(child_ptr))
+ return -1;
+ break;
+ }
+ rpl_gtid *gtid_list= gtid_list_buffer(gtid_count);
+ uint32 child2_ptr;
+ if ((gtid_count > 0 && !gtid_list) ||
+ get_gtid_list(gtid_list, gtid_count) ||
+ get_child_ptr(&child2_ptr))
+ return -1;
+ if (update_gtid_state(&compare_state, gtid_list, gtid_count))
+ return -1;
+ int cmp= (this->*search_cmp_function)(offset, &compare_state);
+ if (cmp < 0)
+ {
+ /* Follow the left child of this key. */
+ if (read_node(child_ptr))
+ return -1;
+ break;
+ }
+ /* Continue to scan the next key. */
+ update_gtid_state(&current_state, gtid_list, gtid_count);
+ current_state_updated= true;
+ current_offset= offset;
+ child_ptr= child2_ptr;
+ }
+ }
+ return do_index_search_leaf(current_state_updated,
+ out_offset, out_gtid_count);
+}
+
+int Gtid_index_reader::do_index_search_leaf(bool current_state_updated,
+ uint32 *out_offset,
+ uint32 *out_gtid_count)
+{
+ uint32 offset, gtid_count;
+ int res= get_offset_count(&offset, &gtid_count);
+ if (res == 1)
+ {
+ DBUG_ASSERT(0);
+ give_error("Corrupt index; empty leaf node");
+ return -1;
+ }
+ rpl_gtid *gtid_list= gtid_list_buffer(gtid_count);
+ if ((gtid_count > 0 && !gtid_list) ||
+ get_gtid_list(gtid_list, gtid_count))
+ return -1;
+ /*
+ The first key is ignored (already included in the current state), unless
+ it is the very first state in the index.
+ */
+ if (!current_state_updated)
+ update_gtid_state(&current_state, gtid_list, gtid_count);
+ current_offset= offset;
+ if (compare_state.load_nolock(&current_state))
+ {
+ give_error("Out of memory allocating GTID state");
+ return -1;
+ }
+ int cmp= (this->*search_cmp_function)(offset, &compare_state);
+ if (cmp < 0)
+ return 0; // Search position is before start of index.
+
+ /* Scan over the keys in the leaf node. */
+ for (;;)
+ {
+ uint32 offset, gtid_count;
+ int res= get_offset_count(&offset, &gtid_count);
+ if (res == 1) // EOF?
+ {
+ /* Reached end of leaf, last key is the one searched for. */
+ break;
+ }
+ gtid_list= gtid_list_buffer(gtid_count);
+ if ((gtid_count > 0 && !gtid_list) ||
+ get_gtid_list(gtid_list, gtid_count))
+ return -1;
+ if (update_gtid_state(&compare_state, gtid_list, gtid_count))
+ return -1;
+ cmp= (this->*search_cmp_function)(offset, &compare_state);
+ if (cmp < 0)
+ {
+ /* Next key is larger, so current state is the one searched for. */
+ break;
+ }
+ update_gtid_state(&current_state, gtid_list, gtid_count);
+ current_offset= offset;
+ }
+
+ *out_offset= current_offset;
+ *out_gtid_count= current_state.count_nolock();
+ /* Save the result in the shared gtid list buffer. */
+ if ((!(gtid_list= gtid_list_buffer(*out_gtid_count)) && *out_gtid_count > 0) ||
+ current_state.get_gtid_list_nolock(gtid_list, *out_gtid_count))
+ return -1;
+
+ return 1;
+}
+
+
+/*
+ Read the file header and check that it's valid and that the format is not
+ too new a version for us to be able to read it.
+*/
+int
+Gtid_index_reader::read_file_header()
+{
+ if (!file_open)
+ return 1;
+
+ uchar buf[GTID_INDEX_FILE_HEADER_SIZE + GTID_INDEX_PAGE_HEADER_SIZE];
+
+ if (MY_FILEPOS_ERROR == mysql_file_seek(index_file, 0, MY_SEEK_SET, MYF(0)) ||
+ mysql_file_read(index_file, buf,
+ GTID_INDEX_FILE_HEADER_SIZE + GTID_INDEX_PAGE_HEADER_SIZE,
+ MYF(MY_NABP)))
+ return give_error("Error reading page from index file");
+ if (memcmp(&buf[0], GTID_INDEX_MAGIC, sizeof(GTID_INDEX_MAGIC)))
+ return give_error("Corrupt index file, magic not found in header");
+ version_major= buf[4];
+ version_minor= buf[5];
+ /* We cannot safely read a major version we don't know about. */
+ if (version_major > GTID_INDEX_VERSION_MAJOR)
+ return give_error("Incompatible index file, version too high");
+ page_size= uint4korr(&buf[8]);
+
+ /* Verify checksum integrity of page_size and major/minor version. */
+ uint32 crc= my_checksum(0, buf, sizeof(buf));
+ uchar *buf3= (uchar *)
+ my_malloc(key_memory_binlog_gtid_index, page_size - sizeof(buf), MYF(0));
+ if (!buf3)
+ return give_error("Error allocating memory for index page");
+ int res= 0;
+ if (mysql_file_read(index_file, buf3, page_size - sizeof(buf), MYF(MY_NABP)))
+ res= give_error("Error reading page from index file");
+ else
+ {
+ crc= my_checksum(crc, buf3, page_size - sizeof(buf) - CHECKSUM_LEN);
+ if (crc != uint4korr(buf3 + page_size - sizeof(buf) - CHECKSUM_LEN))
+ res= give_error("Corrupt page, invalid checksum");
+ }
+ my_free(buf3);
+ if (res)
+ return res;
+
+ /*
+ Check that there is a valid root node at the end of the file.
+ If there is not, the index may be a "hot index" that is currently being
+ constructed. Or it was only partially written before server crash and not
+ recovered for some reason.
+ */
+ uchar flags= buf[GTID_INDEX_PAGE_HEADER_SIZE];
+ constexpr uchar needed_flags= PAGE_FLAG_ROOT|PAGE_FLAG_LAST;
+ if ((flags & needed_flags) == needed_flags)
+ {
+ /* Special case: the index is a single page, which is the root node. */
+ has_root_node= true;
+ }
+ else
+ {
+ uchar buf2[GTID_INDEX_PAGE_HEADER_SIZE];
+ if (MY_FILEPOS_ERROR == mysql_file_seek(index_file, -(int32)page_size,
+ MY_SEEK_END, MYF(0)) ||
+ mysql_file_read(index_file, buf2, GTID_INDEX_PAGE_HEADER_SIZE,
+ MYF(MY_NABP)))
+ return give_error("Error reading root page from index file");
+ flags= buf2[0];
+ has_root_node= ((flags & needed_flags) == needed_flags);
+ /* No need to verify checksum here, will be done by read_root_node(). */
+ }
+ index_valid= true;
+ return 0;
+}
+
+
+int
+Gtid_index_reader::verify_checksum(Gtid_index_base::Node_page *page)
+{
+ uint32 calc_checksum= my_checksum(0, page->page, page_size - CHECKSUM_LEN);
+ uint32 read_checksum= uint4korr(page->page + page_size - CHECKSUM_LEN);
+ if (calc_checksum != read_checksum)
+ return give_error("Corrupt page, invalid checksum");
+ return 0;
+}
+
+
+Gtid_index_base::Node_page *
+Gtid_index_reader::alloc_and_read_page()
+{
+ Node_page *page= alloc_page();
+ if (!page)
+ {
+ give_error("Error allocating memory for index page");
+ return nullptr;
+ }
+ if (mysql_file_read(index_file, page->page, page_size, MYF(MY_NABP)))
+ {
+ my_free(page);
+ give_error("Error reading page from index file");
+ return nullptr;
+ }
+ if (verify_checksum(page))
+ {
+ my_free(page);
+ return nullptr;
+ }
+ return page;
+}
+
+
+int
+Gtid_index_reader::read_root_node()
+{
+ if (!index_valid || !has_root_node)
+ return 1;
+
+ cold_node.reset();
+ n= &cold_node;
+ /*
+ Read pages one by one from the back of the file until we have a complete
+ root node.
+ */
+ if (MY_FILEPOS_ERROR == mysql_file_seek(index_file, -(int32)page_size,
+ MY_SEEK_END, MYF(0)))
+ return give_error("Error seeking index file");
+
+ for (;;)
+ {
+ Node_page *page= alloc_and_read_page();
+ if (!page)
+ return 1;
+ if (mysql_file_tell(index_file, MYF(0)) == page_size)
+ page->flag_ptr= &page->page[GTID_INDEX_FILE_HEADER_SIZE];
+ else
+ page->flag_ptr= &page->page[0];
+ page->next= n->first_page;
+ n->first_page= page;
+ uchar flags= *page->flag_ptr;
+ if (unlikely(!(flags & PAGE_FLAG_ROOT)))
+ return give_error("Corrupt or truncated index, no root node found");
+ if (!(flags & PAGE_FLAG_IS_CONT))
+ break; // Found start of root node
+ if (MY_FILEPOS_ERROR == mysql_file_seek(index_file, -(int32)(2*page_size),
+ MY_SEEK_CUR, MYF(0)))
+ return give_error("Error seeking index file for multi-page root node");
+ }
+
+ read_page= n->first_page;
+ read_ptr= read_page->flag_ptr + GTID_INDEX_PAGE_HEADER_SIZE;
+ return 0;
+}
+
+
+int
+Gtid_index_reader::read_node(uint32 page_ptr)
+{
+ DBUG_ASSERT(page_ptr != 0 /* No zero child pointers in on-disk pages. */);
+ if (!index_valid || !page_ptr)
+ return 1;
+ return read_node_cold(page_ptr);
+}
+
+
+int
+Gtid_index_reader::read_node_cold(uint32 page_ptr)
+{
+ if (MY_FILEPOS_ERROR == mysql_file_seek(index_file, (page_ptr-1)*page_size,
+ MY_SEEK_SET, MYF(0)))
+ return give_error("Error seeking index file");
+
+ bool file_header= (page_ptr == 1);
+ cold_node.reset();
+ n= &cold_node;
+ Node_page **next_ptr_ptr= &n->first_page;
+ for (;;)
+ {
+ Node_page *page= alloc_and_read_page();
+ if (!page)
+ return 1;
+ page->flag_ptr= &page->page[file_header ? GTID_INDEX_FILE_HEADER_SIZE : 0];
+ file_header= false;
+ /* Insert the page at the end of the list. */
+ page->next= nullptr;
+ *next_ptr_ptr= page;
+ next_ptr_ptr= &page->next;
+
+ uchar flags= *(page->flag_ptr);
+ if (flags & PAGE_FLAG_LAST)
+ break;
+ }
+
+ read_page= n->first_page;
+ read_ptr= read_page->flag_ptr + GTID_INDEX_PAGE_HEADER_SIZE;
+ return 0;
+}
+
+
+int Gtid_index_reader::give_error(const char *msg)
+{
+ sql_print_information("Error reading binlog GTID index, will "
+ "fallback to slower sequential binlog scan. "
+ "Error is: %s", msg);
+ return 1;
+}
+
+
+Gtid_index_reader_hot::Gtid_index_reader_hot()
+ : hot_writer(nullptr)
+{
+}
+
+
+int
+Gtid_index_reader_hot::get_child_ptr(uint32 *out_child_ptr)
+{
+ if (find_bytes(4))
+ {
+ /*
+ If reading hot index, EOF or zero child ptr means the child pointer has
+ not yet been written. A zero out_child_ptr makes read_node() read the
+ hot node for the child.
+ */
+ if (hot_writer)
+ {
+ *out_child_ptr= 0;
+ return 0;
+ }
+ return give_error("Corrupt index, short index node");
+ }
+ *out_child_ptr= (uint32)uint4korr(read_ptr);
+ read_ptr+= 4;
+ return 0;
+}
+
+
+int
+Gtid_index_reader_hot::do_index_search(uint32 *out_offset,
+ uint32 *out_gtid_count)
+{
+ /* Check for a "hot" index. */
+ Gtid_index_writer::lock_gtid_index();
+ hot_writer= Gtid_index_writer::find_hot_index(index_file_name);
+ if (!hot_writer)
+ {
+ Gtid_index_writer::unlock_gtid_index();
+ /*
+ Check the index file header (and index end) again, in case it was
+ hot when open_index_file() was called, but became cold in the meantime.
+ */
+ if (!has_root_node && Gtid_index_reader::read_file_header())
+ return -1;
+ }
+
+ int res= do_index_search_root(out_offset, out_gtid_count);
+
+ if (hot_writer)
+ {
+ hot_writer= nullptr;
+ Gtid_index_writer::unlock_gtid_index();
+ }
+ return res;
+}
+
+
+int
+Gtid_index_reader_hot::read_file_header()
+{
+ if (!file_open)
+ return 1;
+
+ Gtid_index_writer::lock_gtid_index();
+ hot_writer= Gtid_index_writer::find_hot_index(index_file_name);
+ if (!hot_writer)
+ Gtid_index_writer::unlock_gtid_index();
+
+ int res;
+ if (hot_writer && hot_writer->max_level == 0)
+ {
+ /*
+ No pages from the hot index have been written to disk, there's just a
+ single incomplete node at level 0.
+ We have to read the file header from the in-memory page.
+ */
+ uchar *p= hot_writer->nodes[0]->first_page->page;
+ page_size= uint4korr(p + 8);
+ has_root_node= false;
+ index_valid= true;
+ res= 0;
+ }
+ else
+ res= Gtid_index_reader::read_file_header();
+
+ if (hot_writer)
+ {
+ hot_writer= nullptr;
+ Gtid_index_writer::unlock_gtid_index();
+ }
+ return res;
+}
+
+
+int
+Gtid_index_reader_hot::read_root_node()
+{
+ if (!index_valid)
+ return 1;
+
+ if (hot_writer)
+ {
+ hot_level= hot_writer->max_level;
+ return read_node_hot();
+ }
+ if (has_root_node)
+ {
+ return Gtid_index_reader::read_root_node();
+ }
+ return 1;
+}
+
+
+int
+Gtid_index_reader_hot::read_node(uint32 page_ptr)
+{
+ if (!index_valid || (!page_ptr && !hot_writer))
+ return 1;
+
+ if (hot_writer)
+ {
+ if (!page_ptr)
+ {
+ /*
+ The "hot" index is only partially written. Not yet written child pages
+ are indicated by zero child pointers. Such child pages are found from
+ the list of active nodes in the writer.
+ */
+ if (hot_level <= 0)
+ {
+ DBUG_ASSERT(0 /* Should be no child pointer to follow on leaf page. */);
+ return give_error("Corrupt hot index (child pointer on leaf page");
+ }
+ DBUG_ASSERT(n == hot_writer->nodes[hot_level]);
+ --hot_level;
+ return read_node_hot();
+ }
+
+ /*
+ We started searching the "hot" index, but now we've reached a "cold"
+ part of the index that's already fully written. So leave the "hot index"
+ mode and continue reading pages from the on-disk index from here.
+ */
+ hot_writer= nullptr;
+ Gtid_index_writer::unlock_gtid_index();
+ }
+
+ return read_node_cold(page_ptr);
+}
+
+
+int
+Gtid_index_reader_hot::read_node_hot()
+{
+ if (hot_writer->error_state)
+ return give_error("Cannot access hot index");
+ n= hot_writer->nodes[hot_level];
+ read_page= n->first_page;
+ /* The writer should allocate pages for all nodes. */
+ DBUG_ASSERT(read_page != nullptr);
+ if (!read_page)
+ return give_error("Page not available in hot index");
+ read_ptr= read_page->flag_ptr + GTID_INDEX_PAGE_HEADER_SIZE;
+ return 0;
+}
diff --git a/sql/gtid_index.h b/sql/gtid_index.h
new file mode 100644
index 00000000..4674bf97
--- /dev/null
+++ b/sql/gtid_index.h
@@ -0,0 +1,521 @@
+/*
+ Copyright (c) 2023 Kristian Nielsen <knielsen@knielsen-hq.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef GTID_INDEX_H
+#define GTID_INDEX_H
+
+#include "my_global.h"
+#include "mysqld.h"
+#include "mariadb.h"
+#include "rpl_gtid.h"
+
+/*
+ This implements an on-disk index for each binlog file to speed up access to
+ the binlog at a specific offset or GTID position. This is primarily used when
+ a slave connects to the master, but also by user calling BINLOG_GTID_POS().
+
+ A connecting slave first scans the binlog files to find the last one with an
+ initial GTID_LIST event that lies before the starting GTID position. Then a
+ sequential scan of the binlog file is done until the requested GTID position
+ is found.
+
+ The binlog index conceptually extends this using index records corresponding
+ to different offset within one binlog file. Each record functions as if it
+ was the initial GTID_LIST event of a new binlog file, allowing the
+ sequential scan to start from the corresponding position. By having
+ sufficiently many index records, the scan will be fast.
+
+ The code that adds one record to the index is in two parts, a "sync" path
+ and an "async" path. The "sync" path in process_gtid_check_batch() does the
+ minimum amount of work which needs to run as part of transaction commit. The
+ actual writing of the index, in async_update(), can then be done as a
+ background task, minimizing the performance impact on transaction processing.
+ The "sync" and "async" paths each run single threaded, but can execute in
+ parallel with each other.
+
+ The index file is written incrementally together with the binlog file.
+ However there is no fsync()'s of the index file needed while writing. A
+ partially written index left by a crashing server will be re-written during
+ binlog recovery. A reader is allowed to use the index as it is begin written
+ (for the "hot" binlog file); such access is protected by mutex.
+
+ In case of lost or corrupt index, fallback to full sequential scan is done
+ (so performance will be affected but not correct functionality).
+
+ The index file is structured like a B+-tree. The index is append-only, so
+ also resembles a log-structured merge-tree, but with no merging of levels
+ needed as it covers a single fixed-size binlog file. This makes the building
+ of the tree relatively simple.
+
+ Keys in the tree consist of a GTID state (corresponding to a GTID_LIST
+ event) and the associated binlog file offset. All keys (except the first key
+ in each level of the tree) are delta-compressed to save space, holding only
+ the (domain_id, server_id) pairs that differ from the previous record.
+
+ The file is page-based. The first page contains the leftmost leaf node, and
+ the root node is at the end of the file. An incompletely written index file
+ can be detected by the last page in the file not being a root node page.
+ Nodes in the B+-tree usually fit in one page, but a node can be split across
+ multiple pages if GTID states are very large.
+
+ Page format:
+
+ The first page contains an extra file header:
+
+ Offset Size Description
+ 0 4 MAGIC header identifying the file as a binlog index
+ 4 1 Major version number. A new major version of the file format
+ is not readable by older server versions.
+ 5 1 Minor version number. Formats differing only in minor version
+ are backwards compatible and can be read by older servers.
+ 6 2 Padding/unused.
+ 8 4 Page size.
+
+ Each page additionally contains this header:
+
+ Offset Size Description
+ 0 1 Flags
+ 1 3 Padding/unused
+
+ The last 4 bytes of each page is a 32-bit CRC.
+
+ An interior node is a sequence of
+ <child ptr> <key> <child ptr> <key> ... <key> <child ptr>
+ while a leaf node has only keys.
+
+ A child pointer is stored as 4 byte integer. The first page is 1, so that
+ 0 can be used to denote "not present".
+
+ Format of a key:
+
+ Offset Size Description
+ 0 4 Number of GTIDs in the key, plus 1. Or 0 for EOF.
+ 4 4 Binlog file offset
+ 8 4 Domain_id of first GTID
+ 12 4 Server_id of first GTID
+ 16 8 Seq_no of first GTID
+ ... and so on for each GTID in the key.
+
+ A node typically fits in one page. But if the GTID state is very big (or
+ the page size very small), multiple pages may be used. When a node is split,
+ it can be split after a child pointer or before or after a GTID, but not
+ elsewhere.
+
+Here is an example GTID index with page_size=64 containing 3 records:
+ Offset GTID state
+ 0x11d [empty]
+ 0x20e [0-1-1]
+ 0x2ad [0-1-2]
+The example contains 3 nodes, each stored in a single page. Two leaf nodes and
+one interior root node.
+
+Page 1 (leaf node page with file header):
+ fe fe 0c 01 "magic" identifying the file as a binlog GTID index
+ 01 00 Major version 1, minor version 0
+ 00 00 Padding / currently unused
+ 40 00 00 00 Page size (64 bytes in this example)
+ 05 Flag PAGE_FLAG_IS_LEAF | PAGE_FLAG_LAST (single-page leaf node)
+ 00 00 00 Padding / current unused
+Key 1:
+ 01 00 00 00 <GTID_count + 1> = 1 (entry has zero GTIDs in it)
+ 1d 01 00 00 Binlog file offset = 0x11d
+ [Empty GTID state at the very start of the binlog]
+Key 2:
+ 02 00 00 00 GTID_count = 1
+ 0e 02 00 00 Binlog file offset = 0x20e
+ 00 00 00 00 01 00 00 00
+ 01 00 00 00 00 00 00 00 GTID 0-1-1
+
+ 00 00 00 00 00 Zero denotes end-of-node
+ 00 00 00 00 00 00 00 (Unused space in the page)
+ 0e 4f ac 43 Checksum / CRC
+
+Page 2 (leaf node):
+ 05 Flag PAGE_FLAG_IS_LEAF | PAGE_FLAG_LAST (single-page leaf node)
+ 00 00 00 Unused
+Key 1:
+ 02 00 00 00 GTID_count = 1
+ ad 02 00 00 Binlog file offset = 0x2ad
+ 00 00 00 00 01 00 00 00
+ 02 00 00 00 00 00 00 00 GTID 0-1-2
+
+ 00 00 00 00 End-of-node
+ 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ 00 00 00 00 (Unused space in the page)
+ 0c 4e c2 b9 CRC
+
+Page 3 (root node):
+ 0c PAGE_FLAG_ROOT | PAGE_FLAG_LAST (interior root node)
+ 00 00 00 Unused
+Child pointer:
+ 01 00 00 00 Pointer to page 1
+Key for next child page:
+ 02 00 00 00 GTID_count = 1
+ ad 02 00 00 Binlog offset = 0x2ad
+ 00 00 00 00 01 00 00 00
+ 02 00 00 00 00 00 00 00 GTID 0-1-2
+Child pointer:
+ 02 00 00 00 Pointer to page 2
+
+ 00 00 0 000 Zero denotes end-of-node
+ 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ 00 00 00 00 (Unused)
+ 8155 a3c7 CRC
+
+ Below is an example of the logical B-Tree structure of a larger GTID index
+ with a total of 12 keys.
+
+ We use S0, S1, ..., S11 to denote a key, which consists of a GTID state (as
+ seen in @@binlog_gtid_state and GTID_LIST_EVENT) and the associated binlog
+ file offset. D1, D2, ..., D11 denote the same keys, but delta-compressed, so
+ that D1 stores only those GTIDs that are not the same as in S0.
+
+ Pages are denoted by P1, P2, ..., P8. In the example, P1, P2, P3, P5, and P6
+ are leaf pages, the rest are interior node pages. P8 is the root node (the
+ root is always the last page in the index).
+
+ The contents of each page is listed in square brackets [...]. So P1[S0 D1 D2]
+ is a leaf page with 3 keys, and P7[P5 <D10+D11> P6] is an interior node page
+ with one key <D10+D11> and two child-page pointers to P5 and P6. The
+ notation <D10+D11> denotes the delta-compression of key S11 relative to S9;
+ all GTIDs in S11 that are not present in S9. In the code, this is computed
+ by combining D10 and D11, hence the use of the notation "D10+D11" instead of
+ the equivalent "S11-S9".
+
+ Here is the example B-Tree. It has 3 levels, with the leaf nodes at the top:
+
+ P1[S0 D1 D2] P2[D3 D4 D5] P3[D6 D7 D8] P5[D9 D10] P6[D11]
+ P4[P1 <S3> P2 <D4+D5+D6> P3] P7[P5 <D10+D11> P6]
+ P8[P4 <S9> P7]
+
+ To find eg. S4, we start from the root P8. S4<S9, so we follow the left child
+ pointer to P4. S4>S3 and S4<S6 (S6=(S3+D4+D5+D6)), so we follow the child
+ pointer to leaf page P2.
+
+ The index is written completely append-only; this is possible since keys are
+ always inserted in-order, at the end of the index. One page is kept in-memory
+ at each level of the B-Tree; when a new key no longer fits the page, it is
+ written out to disk and a new in-memory page is allocated for it.
+
+ Here are the operations that occur while writing the index file from the
+ above example. The left column is each key added to the index as the
+ corresponding GTID is written into the binlog file (<EOF> is when the index
+ is closed at binlog rotation). The right column are the operations performed,
+ as follows:
+ alloc(p) Allocate page p
+ add_key(p,k) Insert the key k into the page p
+ add_ptr(p,q) Insert a pointer to child page q in parent page p
+ write(p) Write out page p to disk at the end of the index file.
+
+ GTID STATE OPERATIONS
+ S0 alloc(P1) add_key(P1,S0)
+ D1 add_key(P1,D1)
+ D2 add_key(P1,D2)
+ D3 write(P1) alloc(P4) add_ptr(P4,P1)
+ alloc(P2) add_key(P2,D3) add_key(P4,S3)
+ D4 add_key(P2,D4)
+ D5 add_key(P2,D5)
+ D6 write(P2) add_ptr(P4,P2)
+ alloc(P3) add_key(P3,D6) add_key(P4,D4+D5+D6)
+ D7 add_key(P3,D7)
+ D8 add_key(P3,D8)
+ D9 write(P3) add_ptr(P4,P3)
+ alloc(P5) add_key(P5,D9)
+ write(P4) alloc(P8) add_ptr(P8,P4) alloc(P7) add_key(P8,S9)
+ D10 add_key(P5,D10)
+ D11 write(P5) add_ptr(P7,P5)
+ alloc(P6) add_key(P6,D11) add_key(P7,D10+D11)
+ <EOF> write(P6) add_ptr(P7,P6)
+ write(P7) add_ptr(P8,P7)
+ write(P8)
+
+ After adding each record to the index, there is exactly one partial page
+ allocated in-memory for each level present in the B-Tree; new pages being
+ allocated as old pages fill up and are written to disk.
+*/
+
+
+class Gtid_index_base
+{
+public:
+ /* +4 for ".idx" prefix. */
+ static constexpr size_t GTID_INDEX_FILENAME_MAX_SIZE= FN_REFLEN+4;
+
+protected:
+ enum enum_page_flags {
+ /* Set for a leaf node page, cleared for an interior node page. */
+ PAGE_FLAG_IS_LEAF= 1,
+ /* This is a continuation page. */
+ PAGE_FLAG_IS_CONT= 2,
+ /* No continuation page follows (the last page in a group). */
+ PAGE_FLAG_LAST= 4,
+ /*
+ Flag set to mark the root node. (The root node is normally the last page
+ in the index file, but having an explicit flag allows us to detect a
+ partially written index file with the root node missing.
+ */
+ PAGE_FLAG_ROOT= 8,
+ };
+
+ /*
+ Minor version increment represents a backwards-compatible format (can be
+ read by any server version that knows the format of the major version).
+ Major version increment means a server should not attempt to read from the
+ index.
+ */
+ static constexpr uchar GTID_INDEX_VERSION_MAJOR= 1;
+ static constexpr uchar GTID_INDEX_VERSION_MINOR= 0;
+ static constexpr size_t GTID_INDEX_FILE_HEADER_SIZE= 12;
+ static constexpr size_t GTID_INDEX_PAGE_HEADER_SIZE= 4;
+ static constexpr size_t CHECKSUM_LEN= 4;
+
+#ifdef _MSC_VER
+/*
+ Flexible array member is part of C99, but it is not standard in C++.
+ All the compilers and platforms we support do support it, though.
+ Just we need to disable on Windows a warning about using a non-standard
+ C++ extension.
+*/
+#pragma warning(disable : 4200)
+#endif
+ struct Node_page
+ {
+ Node_page *next;
+ /* Pointer to allow to update the "flags" byte at page writeout. */
+ uchar *flag_ptr;
+ /* Flexible array member; will be allocated to opt_gtid_index_page_size. */
+ uchar page[];
+ };
+
+ struct Index_node_base
+ {
+ Node_page *first_page;
+ Node_page *current_page;
+ /* The current_ptr is only valid if current_page != 0. */
+ uchar *current_ptr;
+
+ Index_node_base();
+ ~Index_node_base();
+ void free_pages();
+ void reset();
+ };
+
+public:
+ static void make_gtid_index_file_name(char *out_name, size_t bufsize,
+ const char *base_filename);
+
+protected:
+ int update_gtid_state(rpl_binlog_state_base *state,
+ const rpl_gtid *gtid_list, uint32 gtid_count);
+ Node_page *alloc_page();
+ rpl_gtid *gtid_list_buffer(uint32 count);
+ void build_index_filename(const char *filename);
+ virtual int give_error(const char *msg) = 0;
+
+ /*
+ A buffer to hold a gtid_list temporarily.
+ Increased as needed to hold largest needed list.
+ */
+ rpl_gtid *gtid_buffer;
+ uint32 gtid_buffer_alloc;
+ size_t page_size;
+public:
+ char index_file_name[GTID_INDEX_FILENAME_MAX_SIZE];
+
+protected:
+ Gtid_index_base();
+ virtual ~Gtid_index_base();
+};
+
+
+class Gtid_index_writer : public Gtid_index_base
+{
+private:
+ const my_off_t offset_min_threshold;
+
+ struct Index_node : public Index_node_base
+ {
+ rpl_binlog_state_base state;
+ uint32 num_records;
+ uint32 level;
+ bool force_spill_page;
+
+ Index_node(uint32 level_);
+ ~Index_node();
+ void reset();
+ };
+
+public:
+ static void gtid_index_init();
+ static void gtid_index_cleanup();
+protected:
+ friend class Gtid_index_reader_hot;
+ static void lock_gtid_index() { mysql_mutex_lock(&gtid_index_mutex); }
+ static void unlock_gtid_index() { mysql_mutex_unlock(&gtid_index_mutex); }
+ static const Gtid_index_writer *find_hot_index(const char *file_name);
+
+public:
+ Gtid_index_writer(const char *filename, uint32 offset,
+ rpl_binlog_state_base *binlog_state,
+ uint32 opt_page_size, my_off_t opt_span_min);
+ virtual ~Gtid_index_writer();
+ void process_gtid(uint32 offset, const rpl_gtid *gtid);
+ int process_gtid_check_batch(uint32 offset, const rpl_gtid *gtid,
+ rpl_gtid **out_gtid_list,
+ uint32 *out_gtid_count);
+ int async_update(uint32 event_offset, rpl_gtid *gtid_list, uint32 gtid_count);
+ void close();
+
+private:
+ void insert_in_hot_index();
+ void remove_from_hot_index();
+ uint32 write_current_node(uint32 level, bool is_root);
+ int reserve_space(Index_node *n, size_t bytes);
+ int do_write_record(uint32 level, uint32 event_offset,
+ const rpl_gtid *gtid_list, uint32 gtid_count);
+ int add_child_ptr(uint32 level, my_off_t node_offset);
+ int write_record(uint32 event_offset, const rpl_gtid *gtid_list,
+ uint32 gtid_count);
+ bool check_room(uint32 level, uint32 gtid_count);
+ int alloc_level_if_missing(uint32 level);
+ uchar *init_header(Node_page *page, bool is_leaf, bool is_first);
+ int give_error(const char *msg) override;
+
+ static mysql_mutex_t gtid_index_mutex;
+ static Gtid_index_writer *hot_index_list;
+
+ rpl_binlog_state_base pending_state;
+ /* Next pointer for the hot_index_list linked list. */
+ Gtid_index_writer *next_hot_index;
+ /* The currently being built index nodes, from leaf[0] to root[max_level]. */
+ Index_node **nodes;
+ my_off_t previous_offset;
+ uint32 max_level;
+
+ File index_file;
+
+ /*
+ This is set if we encounter an error (such as out-of-memory or I/O error).
+ Then we will no longer do any updates to the index, to prevent leaving a
+ corrupt index. This is not fatal; the partial index will work up to where
+ it got the error, and the code can fall-back to sequential scan of the
+ binlog.
+ */
+ bool error_state;
+ /* Flag to help put the file header at the start of the very first page. */
+ bool file_header_written;
+ /* Flag set while this object is visible in the "hot index" list. */
+ bool in_hot_index_list;
+};
+
+
+class Gtid_index_reader : public Gtid_index_base
+{
+public:
+ Gtid_index_reader();
+ virtual ~Gtid_index_reader();
+
+ int open_index_file(const char *binlog_filename);
+ void close_index_file();
+ /*
+ The search functions take either a binlog offset or GTID position to search
+ for. They return:
+ 0 for "not found" (searched position is earlier than start of index).
+ 1 for "found"
+ -1 for error.
+ When found, the returned position is the last position in the index that
+ lies at or before the searched position. The offset of the returned
+ position is written to *out_offset. The number of GTIDs in the returned
+ GTID state is written to *out_gtid_count; the list of found GTIDs can be
+ accessed with search_gtid_list() and is valid only until next search or
+ freeing of the Gtid_index_reader object.
+ */
+ int search_offset(uint32 in_offset, uint32 *out_offset,
+ uint32 *out_gtid_count);
+ int search_gtid_pos(slave_connection_state *in_gtid_pos, uint32 *out_offset,
+ uint32 *out_gtid_count);
+ rpl_gtid *search_gtid_list();
+
+protected:
+ int search_cmp_offset(uint32 offset, rpl_binlog_state_base *state);
+ int search_cmp_gtid_pos(uint32 offset, rpl_binlog_state_base *state);
+ virtual int do_index_search(uint32 *out_offset, uint32 *out_gtid_count);
+ int do_index_search_root(uint32 *out_offset, uint32 *out_gtid_count);
+ int do_index_search_leaf(bool current_state_updated,
+ uint32 *out_offset, uint32 *out_gtid_count);
+ int next_page();
+ int find_bytes(uint32 num_bytes);
+ virtual int get_child_ptr(uint32 *out_child_ptr);
+ int get_offset_count(uint32 *out_offset, uint32 *out_gtid_count);
+ int get_gtid_list(rpl_gtid *out_gtid_list, uint32 count);
+ virtual int read_file_header();
+ int verify_checksum(Node_page *page);
+ Node_page *alloc_and_read_page();
+ virtual int read_root_node();
+ virtual int read_node(uint32 page_ptr);
+ int read_node_cold(uint32 page_ptr);
+ int give_error(const char *msg) override;
+
+ rpl_binlog_state_base current_state;
+ rpl_binlog_state_base compare_state;
+ Index_node_base cold_node;
+ /* n points to either cold node or hot node in writer. */
+ Index_node_base *n;
+ int (Gtid_index_reader::* search_cmp_function)(uint32, rpl_binlog_state_base *);
+ slave_connection_state *in_search_gtid_pos;
+ Node_page *read_page;
+ uchar *read_ptr;
+ File index_file;
+ uint32 current_offset;
+ uint32 in_search_offset;
+ bool file_open;
+ bool index_valid;
+ bool has_root_node;
+ uchar version_major;
+ uchar version_minor;
+};
+
+
+/*
+ Sub-class of Gtid_index_reader that can additionally access in-memory "hot"
+ pages of the index, which are partially filled pages of the current binlog
+ file, not yet written to disk.
+*/
+class Gtid_index_reader_hot : public Gtid_index_reader
+{
+public:
+ Gtid_index_reader_hot();
+ virtual ~Gtid_index_reader_hot() { }
+
+private:
+ int do_index_search(uint32 *out_offset, uint32 *out_gtid_count) override;
+ int get_child_ptr(uint32 *out_child_ptr) override;
+ int read_file_header() override;
+ int read_root_node() override;
+ int read_node(uint32 page_ptr) override;
+ int read_node_hot();
+
+ /* Pointer to the writer object, if we're reading a hot index. */
+ const Gtid_index_writer *hot_writer;
+ /* The level we are currently reading in the hot writer .*/
+ uint32 hot_level;
+};
+
+#endif /* GTID_INDEX_H */
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 8cd1cb47..177f49fb 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -75,8 +75,7 @@
HA_REC_NOT_IN_SEQ | \
HA_CAN_REPAIR | \
HA_REUSES_FILE_NAMES)
-#define PARTITION_DISABLED_TABLE_FLAGS (HA_CAN_GEOMETRY | \
- HA_DUPLICATE_POS | \
+#define PARTITION_DISABLED_TABLE_FLAGS (HA_DUPLICATE_POS | \
HA_CAN_INSERT_DELAYED | \
HA_READ_BEFORE_WRITE_REMOVAL |\
HA_CAN_TABLES_WITHOUT_ROLLBACK)
@@ -99,19 +98,19 @@ int ha_partition::notify_tabledef_changed(LEX_CSTRING *db,
LEX_CUSTRING *frm,
LEX_CUSTRING *version)
{
- char from_buff[FN_REFLEN + 1], from_lc_buff[FN_REFLEN + 1];
- const char *from_path, *name_buffer_ptr, *from;
+ char from_buff[FN_REFLEN + 1];
+ Table_path_buffer from_lc_buff;
+ const char *from_path, *name_buffer_ptr;
int res= 0;
handler **file= m_file;
DBUG_ENTER("ha_partition::notify_tabledef_changed");
- from= table->s->normalized_path.str;
-
/* setup m_name_buffer_ptr */
if (read_par_file(table->s->normalized_path.str))
DBUG_RETURN(1);
- from_path= get_canonical_filename(*file, from, from_lc_buff);
+ from_path= file[0]->get_canonical_filename(table->s->normalized_path,
+ &from_lc_buff).str;
name_buffer_ptr= m_name_buffer_ptr;
do
{
@@ -771,7 +770,8 @@ int ha_partition::create(const char *name, TABLE *table_arg,
{
int error;
THD *thd= ha_thd();
- char name_buff[FN_REFLEN + 1], name_lc_buff[FN_REFLEN];
+ char name_buff[FN_REFLEN + 1];
+ Table_path_buffer name_lc_buff;
char *name_buffer_ptr;
const char *path;
uint i;
@@ -821,7 +821,8 @@ int ha_partition::create(const char *name, TABLE *table_arg,
The appended #P#<partname>[#SP#<subpartname>] will remain in current case.
Using the first partitions handler, since mixing handlers is not allowed.
*/
- path= get_canonical_filename(*file, name, name_lc_buff);
+ path= file[0]->get_canonical_filename(Lex_cstring_strlen(name),
+ &name_lc_buff).str;
for (i= 0; i < m_part_info->num_parts; i++)
{
part_elem= part_it++;
@@ -913,8 +914,8 @@ int ha_partition::drop_partitions(const char *path)
Assert that it works without HA_FILE_BASED and lower_case_table_name = 2.
We use m_file[0] as long as all partitions have the same storage engine.
*/
- DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
- part_name_buff)));
+ DBUG_ASSERT(m_file[0]->is_canonical_filename(Lex_cstring_strlen(path)));
+
do
{
partition_element *part_elem= part_it++;
@@ -1018,8 +1019,7 @@ int ha_partition::rename_partitions(const char *path)
Assert that it works without HA_FILE_BASED and lower_case_table_name = 2.
We use m_file[0] as long as all partitions have the same storage engine.
*/
- DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
- norm_name_buff)));
+ DBUG_ASSERT(m_file[0]->is_canonical_filename(Lex_cstring_strlen(path)));
DEBUG_SYNC(ha_thd(), "before_rename_partitions");
if (temp_partitions)
@@ -1857,8 +1857,8 @@ int ha_partition::change_partitions(HA_CREATE_INFO *create_info,
Assert that it works without HA_FILE_BASED and lower_case_table_name = 2.
We use m_file[0] as long as all partitions have the same storage engine.
*/
- DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
- part_name_buff)));
+ DBUG_ASSERT(m_file[0]->is_canonical_filename(Lex_cstring_strlen(path)));
+
m_reorged_parts= 0;
if (!m_part_info->is_sub_partitioned())
num_subparts= 1;
@@ -2441,8 +2441,8 @@ uint ha_partition::del_ren_table(const char *from, const char *to)
{
int save_error= 0;
int error;
- char from_buff[FN_REFLEN + 1], to_buff[FN_REFLEN + 1],
- from_lc_buff[FN_REFLEN], to_lc_buff[FN_REFLEN];
+ char from_buff[FN_REFLEN + 1], to_buff[FN_REFLEN + 1];
+ Table_path_buffer from_lc_buff, to_lc_buff;
char *name_buffer_ptr;
const char *from_path;
const char *to_path= NULL;
@@ -2482,9 +2482,11 @@ uint ha_partition::del_ren_table(const char *from, const char *to)
The appended #P#<partname>[#SP#<subpartname>] will remain in current case.
Using the first partitions handler, since mixing handlers is not allowed.
*/
- from_path= get_canonical_filename(*file, from, from_lc_buff);
+ from_path= file[0]->get_canonical_filename(Lex_cstring_strlen(from),
+ &from_lc_buff).str;
if (to != NULL)
- to_path= get_canonical_filename(*file, to, to_lc_buff);
+ to_path= file[0]->get_canonical_filename(Lex_cstring_strlen(to),
+ &to_lc_buff).str;
do
{
if (unlikely((error= create_partition_name(from_buff, sizeof(from_buff),
@@ -4775,8 +4777,8 @@ exit:
part_share->next_auto_inc_val if needed.
(not to be used if auto_increment on secondary field in a multi-column
index)
- mysql_update does not set table->next_number_field, so we use
- table->found_next_number_field instead.
+ Sql_cmd_update::update_single_table() does not set table->next_number_field,
+ so we use table->found_next_number_field instead.
Also checking that the field is marked in the write set.
*/
if (table->found_next_number_field &&
@@ -4889,7 +4891,7 @@ int ha_partition::delete_row(const uchar *buf)
Called from item_sum.cc by Item_func_group_concat::clear(),
Item_sum_count::clear(), and Item_func_group_concat::clear().
- Called from sql_delete.cc by mysql_delete().
+ Called from sql_delete.cc by Sql_cmd_delete::delete_single_table().
Called from sql_select.cc by JOIN::reset().
Called from sql_union.cc by st_select_lex_unit::exec().
*/
@@ -6655,7 +6657,7 @@ ha_rows ha_partition::multi_range_read_info_const(uint keyno,
RANGE_SEQ_IF *seq,
void *seq_init_param,
uint n_ranges, uint *bufsz,
- uint *mrr_mode,
+ uint *mrr_mode, ha_rows limit,
Cost_estimate *cost)
{
int error;
@@ -6709,14 +6711,14 @@ ha_rows ha_partition::multi_range_read_info_const(uint keyno,
ha_rows tmp_rows;
uint tmp_mrr_mode;
m_mrr_buffer_size[i]= 0;
- part_cost.reset();
+ part_cost.reset(*file);
tmp_mrr_mode= *mrr_mode;
tmp_rows= (*file)->
multi_range_read_info_const(keyno, &m_part_seq_if,
&m_partition_part_key_multi_range_hld[i],
m_part_mrr_range_length[i],
&m_mrr_buffer_size[i],
- &tmp_mrr_mode, &part_cost);
+ &tmp_mrr_mode, limit, &part_cost);
if (tmp_rows == HA_POS_ERROR)
{
m_part_spec= save_part_spec;
@@ -6760,7 +6762,7 @@ ha_rows ha_partition::multi_range_read_info(uint keyno, uint n_ranges,
{
ha_rows tmp_rows;
m_mrr_buffer_size[i]= 0;
- part_cost.reset();
+ part_cost.reset(*file);
if ((tmp_rows= (*file)->multi_range_read_info(keyno, n_ranges, keys,
key_parts,
&m_mrr_buffer_size[i],
@@ -9860,16 +9862,28 @@ uint ha_partition::get_biggest_used_partition(uint *part_index)
time for scan
*/
-double ha_partition::scan_time()
+IO_AND_CPU_COST ha_partition::scan_time()
{
- double scan_time= 0;
+ IO_AND_CPU_COST scan_time= {0,0};
uint i;
DBUG_ENTER("ha_partition::scan_time");
for (i= bitmap_get_first_set(&m_part_info->read_partitions);
i < m_tot_parts;
i= bitmap_get_next_set(&m_part_info->read_partitions, i))
- scan_time+= m_file[i]->scan_time();
+ {
+ IO_AND_CPU_COST cost= m_file[i]->scan_time();
+ scan_time.io+= cost.io;
+ scan_time.cpu+= cost.cpu;
+ }
+ if (m_tot_parts)
+ {
+ /*
+ Add TABLE_SCAN_SETUP_COST for partitions to make cost similar to
+ in ha_scan_time()
+ */
+ scan_time.cpu+= TABLE_SCAN_SETUP_COST * (m_tot_parts - 1);
+ }
DBUG_RETURN(scan_time);
}
@@ -9883,34 +9897,78 @@ double ha_partition::scan_time()
@return time for scanning index inx
*/
-double ha_partition::key_scan_time(uint inx)
+IO_AND_CPU_COST ha_partition::key_scan_time(uint inx, ha_rows rows)
{
- double scan_time= 0;
+ IO_AND_CPU_COST scan_time= {0,0};
uint i;
+ uint partitions= bitmap_bits_set(&m_part_info->read_partitions);
+ ha_rows rows_per_part;
DBUG_ENTER("ha_partition::key_scan_time");
+
+ if (partitions == 0)
+ DBUG_RETURN(scan_time);
+ set_if_bigger(rows, 1);
+ rows_per_part= (rows + partitions - 1)/partitions;
+
for (i= bitmap_get_first_set(&m_part_info->read_partitions);
i < m_tot_parts;
i= bitmap_get_next_set(&m_part_info->read_partitions, i))
- scan_time+= m_file[i]->key_scan_time(inx);
+ {
+ IO_AND_CPU_COST cost= m_file[i]->key_scan_time(inx, rows_per_part);
+ scan_time.io+= cost.io;
+ scan_time.cpu+= cost.cpu;
+ }
DBUG_RETURN(scan_time);
}
-double ha_partition::keyread_time(uint inx, uint ranges, ha_rows rows)
+IO_AND_CPU_COST ha_partition::keyread_time(uint inx, ulong ranges, ha_rows rows,
+ ulonglong blocks)
{
- double read_time= 0;
+ IO_AND_CPU_COST read_time= {0,0};
uint i;
+ uint partitions= bitmap_bits_set(&m_part_info->read_partitions);
DBUG_ENTER("ha_partition::keyread_time");
- if (!ranges)
- DBUG_RETURN(handler::keyread_time(inx, ranges, rows));
+ if (partitions == 0)
+ DBUG_RETURN(read_time);
+
+ ha_rows rows_per_part= (rows + partitions - 1)/partitions;
for (i= bitmap_get_first_set(&m_part_info->read_partitions);
i < m_tot_parts;
i= bitmap_get_next_set(&m_part_info->read_partitions, i))
- read_time+= m_file[i]->keyread_time(inx, ranges, rows);
+ {
+ IO_AND_CPU_COST cost= m_file[i]->keyread_time(inx, ranges, rows_per_part,
+ blocks);
+ read_time.io+= cost.io;
+ read_time.cpu+= cost.cpu;
+ }
+ /* Add that we have to do a key lookup for all ranges in all partitions */
+ read_time.cpu= (partitions-1) * ranges * KEY_LOOKUP_COST;
DBUG_RETURN(read_time);
}
+IO_AND_CPU_COST ha_partition::rnd_pos_time(ha_rows rows)
+{
+ IO_AND_CPU_COST read_time= {0,0};
+ uint i;
+ uint partitions= bitmap_bits_set(&m_part_info->read_partitions);
+ if (partitions == 0)
+ return read_time;
+
+ ha_rows rows_per_part= (rows + partitions - 1)/partitions;
+ for (i= bitmap_get_first_set(&m_part_info->read_partitions);
+ i < m_tot_parts;
+ i= bitmap_get_next_set(&m_part_info->read_partitions, i))
+ {
+ IO_AND_CPU_COST cost= m_file[i]->rnd_pos_time(rows_per_part);
+ read_time.io+= cost.io;
+ read_time.cpu+= cost.cpu;
+ }
+ return read_time;
+}
+
+
/**
Find number of records in a range.
@param inx Index number
@@ -9967,6 +10025,8 @@ ha_rows ha_partition::records_in_range(uint inx, const key_range *min_key,
if (estimated_rows && checked_rows &&
checked_rows >= min_rows_to_check)
{
+ /* We cannot use page ranges when there is more than one partion */
+ *pages= unused_page_range;
DBUG_PRINT("info",
("records_in_range(inx %u): %lu (%lu * %lu / %lu)",
inx,
@@ -9980,6 +10040,8 @@ ha_rows ha_partition::records_in_range(uint inx, const key_range *min_key,
DBUG_PRINT("info", ("records_in_range(inx %u): %lu",
inx,
(ulong) estimated_rows));
+ /* We cannot use page ranges when there is more than one partion */
+ *pages= unused_page_range;
DBUG_RETURN(estimated_rows);
}
@@ -10010,33 +10072,6 @@ ha_rows ha_partition::estimate_rows_upper_bound()
}
-/*
- Get time to read
-
- SYNOPSIS
- read_time()
- index Index number used
- ranges Number of ranges
- rows Number of rows
-
- RETURN VALUE
- time for read
-
- DESCRIPTION
- This will be optimised later to include whether or not the index can
- be used with partitioning. To achieve we need to add another parameter
- that specifies how many of the index fields that are bound in the ranges.
- Possibly added as a new call to handlers.
-*/
-
-double ha_partition::read_time(uint index, uint ranges, ha_rows rows)
-{
- DBUG_ENTER("ha_partition::read_time");
-
- DBUG_RETURN(get_open_file_sample()->read_time(index, ranges, rows));
-}
-
-
/**
Number of rows in table. see handler.h
@@ -10874,13 +10909,6 @@ int ha_partition::cmp_ref(const uchar *ref1, const uchar *ref2)
DBUG_RETURN(0);
}
- /*
- In Innodb we compare with either primary key value or global DB_ROW_ID so
- it is not possible that the two references are equal and are in different
- partitions, but in myisam it is possible since we are comparing offsets.
- Remove this assert if DB_ROW_ID is changed to be per partition.
- */
- DBUG_ASSERT(!m_innodb);
DBUG_RETURN(diff2 > diff1 ? -1 : 1);
}
@@ -12256,6 +12284,59 @@ ha_partition::can_convert_nocopy(const Field &field,
return true;
}
+/*
+ Get table costs for the current statement that should be stored in
+ handler->cost variables.
+
+ When we want to support many different table handlers, we should set
+ m_file[i]->costs to point to an unique cost structure per open
+ instance and call something similar as
+ TABLE_SHARE::update_optimizer_costs(handlerton *hton) and
+ handler::update_optimizer_costs(&costs) on it.
+*/
+
+
+void ha_partition::set_optimizer_costs(THD *thd)
+{
+ handler::set_optimizer_costs(thd);
+ for (uint i= bitmap_get_first_set(&m_part_info->read_partitions);
+ i < m_tot_parts;
+ i= bitmap_get_next_set(&m_part_info->read_partitions, i))
+ m_file[i]->set_optimizer_costs(thd);
+}
+
+/*
+ Get unique table costs for the first instance of the handler and store
+ in table->share
+*/
+
+void ha_partition::update_optimizer_costs(OPTIMIZER_COSTS *costs)
+{
+ uint i= bitmap_get_first_set(&m_part_info->read_partitions);
+ m_file[i]->update_optimizer_costs(costs);
+}
+
+ulonglong ha_partition::row_blocks()
+{
+ ulonglong active_partitions= bitmap_bits_set(&m_part_info->read_partitions);
+ return handler::row_blocks() + MY_MAX(active_partitions,1)-1;
+}
+
+ulonglong ha_partition::index_blocks(uint index, uint ranges, ha_rows rows)
+{
+ ulonglong blocks= 0;
+ ulonglong active_partitions= bitmap_bits_set(&m_part_info->read_partitions);
+ /* Assume rows are evenly dived among partitions */
+ rows= (rows+ active_partitions -1) / MY_MAX(active_partitions, 1);
+
+ for (uint i= bitmap_get_first_set(&m_part_info->read_partitions);
+ i < m_tot_parts;
+ i= bitmap_get_next_set(&m_part_info->read_partitions, i))
+ blocks+= m_file[i]->index_blocks(index, ranges, rows);
+ return blocks;
+}
+
+
struct st_mysql_storage_engine partition_storage_engine=
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
diff --git a/sql/ha_partition.h b/sql/ha_partition.h
index a252b0e9..51e199d3 100644
--- a/sql/ha_partition.h
+++ b/sql/ha_partition.h
@@ -920,7 +920,7 @@ public:
ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param,
uint n_ranges, uint *bufsz,
- uint *mrr_mode,
+ uint *mrr_mode, ha_rows limit,
Cost_estimate *cost) override;
ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys,
uint key_parts, uint *bufsz,
@@ -1036,17 +1036,15 @@ public:
/*
Called in test_quick_select to determine if indexes should be used.
*/
- double scan_time() override;
+ IO_AND_CPU_COST scan_time() override;
- double key_scan_time(uint inx) override;
+ IO_AND_CPU_COST key_scan_time(uint inx, ha_rows rows) override;
- double keyread_time(uint inx, uint ranges, ha_rows rows) override;
+ IO_AND_CPU_COST keyread_time(uint inx, ulong ranges, ha_rows rows,
+ ulonglong blocks) override;
+ IO_AND_CPU_COST rnd_pos_time(ha_rows rows) override;
/*
- The next method will never be called if you do not implement indexes.
- */
- double read_time(uint index, uint ranges, ha_rows rows) override;
- /*
For the given range how many records are estimated to be in this range.
Used by optimiser to calculate cost of using a particular index.
*/
@@ -1653,5 +1651,10 @@ public:
bool can_convert_nocopy(const Field &field,
const Column_definition &new_field) const override;
void handler_stats_updated() override;
+ void set_optimizer_costs(THD *thd) override;
+ void update_optimizer_costs(OPTIMIZER_COSTS *costs) override;
+ virtual ulonglong index_blocks(uint index, uint ranges, ha_rows rows) override;
+ virtual ulonglong row_blocks() override;
};
+
#endif /* HA_PARTITION_INCLUDED */
diff --git a/sql/ha_sequence.cc b/sql/ha_sequence.cc
index 92b307ff..a3b5c209 100644
--- a/sql/ha_sequence.cc
+++ b/sql/ha_sequence.cc
@@ -300,8 +300,7 @@ int ha_sequence::write_row(const uchar *buf)
sequence->copy(&tmp_seq);
rows_changed++;
/* We have to do the logging while we hold the sequence mutex */
- if (row_logging)
- error= binlog_log_row(table, 0, buf, log_func);
+ error= binlog_log_row(0, buf, log_func);
}
/* Row is already logged, don't log it again in ha_write_row() */
diff --git a/sql/handler.cc b/sql/handler.cc
index db25d254..18d67cb5 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -42,10 +42,12 @@
#include <pfs_transaction_provider.h>
#include <mysql/psi/mysql_transaction.h>
#include "debug_sync.h" // DEBUG_SYNC
+#include "debug.h" // debug_decrement_counter
#include "sql_audit.h"
#include "ha_sequence.h"
#include "rowid_filter.h"
#include "mysys_err.h"
+#include "optimizer_defaults.h"
#ifdef WITH_PARTITION_STORAGE_ENGINE
#include "ha_partition.h"
@@ -527,7 +529,8 @@ static int full_discover_for_existence(handlerton *, const char *, const char *)
static int ext_based_existence(handlerton *, const char *, const char *)
{ return 0; }
-static int hton_ext_based_table_discovery(handlerton *hton, LEX_CSTRING *db,
+static int hton_ext_based_table_discovery(handlerton *hton,
+ const LEX_CSTRING *db,
MY_DIR *dir, handlerton::discovered_list *result)
{
/*
@@ -559,7 +562,7 @@ int ha_drop_table(THD *thd, handlerton *hton, const char *path)
static int hton_drop_table(handlerton *hton, const char *path)
{
- char tmp_path[FN_REFLEN];
+ Table_path_buffer tmp_path;
handler *file= get_new_handler(nullptr, current_thd->mem_root, hton);
if (!file)
{
@@ -569,7 +572,7 @@ static int hton_drop_table(handlerton *hton, const char *path)
*/
return my_errno == ENOMEM ? ENOMEM : ENOENT;
}
- path= get_canonical_filename(file, path, tmp_path);
+ path= file->get_canonical_filename(Lex_cstring_strlen(path), &tmp_path).str;
int error= file->delete_table(path);
delete file;
return error;
@@ -618,6 +621,43 @@ int ha_finalize_handlerton(st_plugin_int *plugin)
}
+/*
+ Get a pointer to the global engine optimizer costs (like
+ innodb.disk_read_cost) and store the pointer in the handlerton.
+
+ This is called once when a handlerton is created.
+ We also update the not set global costs with the default costs
+ to allow information_schema to print the real used values.
+*/
+
+static bool update_optimizer_costs(handlerton *hton)
+{
+ OPTIMIZER_COSTS costs= default_optimizer_costs;
+ LEX_CSTRING *name= hton_name(hton);
+
+ if (hton->update_optimizer_costs)
+ hton->update_optimizer_costs(&costs);
+
+ mysql_mutex_lock(&LOCK_optimizer_costs);
+ hton->optimizer_costs= get_or_create_optimizer_costs(name->str,
+ name->length);
+ if (!hton->optimizer_costs)
+ {
+ mysql_mutex_unlock(&LOCK_optimizer_costs);
+ return 1; // OOM
+ }
+
+ /* Update not set values from current default costs */
+ for (uint i=0 ; i < sizeof(OPTIMIZER_COSTS)/sizeof(double) ; i++)
+ {
+ double *var= ((double*) hton->optimizer_costs)+i;
+ if (*var == OPTIMIZER_COST_UNDEF)
+ *var= ((double*) &costs)[i];
+ }
+ mysql_mutex_unlock(&LOCK_optimizer_costs);
+ return 0;
+}
+
const char *hton_no_exts[]= { 0 };
static bool ddl_recovery_done= false;
@@ -722,6 +762,10 @@ int ha_initialize_handlerton(st_plugin_int *plugin)
hton->savepoint_offset= savepoint_alloc_size;
savepoint_alloc_size+= tmp;
hton2plugin[hton->slot]=plugin;
+
+ if (!(hton->flags & HTON_HIDDEN) && update_optimizer_costs(hton))
+ goto err_deinit;
+
if (hton->prepare)
{
total_ha_2pc++;
@@ -2591,7 +2635,7 @@ static bool xarecover_decide_to_commit(xid_recovery_member* member,
static void xarecover_do_commit_or_rollback(handlerton *hton,
xarecover_complete_arg *arg)
{
- xid_t x;
+ XA_data x;
my_bool rc;
xid_recovery_member *member= arg->member;
Binlog_offset *ptr_commit_max= arg->binlog_coord;
@@ -3124,9 +3168,8 @@ bool ha_flush_logs()
/**
@brief make canonical filename
- @param[in] file table handler
@param[in] path original path
- @param[out] tmp_path buffer for canonized path
+ @param[out] buff buffer for canonized path
@details Lower case db name and table name path parts for
non file based tables when lower_case_table_names
@@ -3134,8 +3177,7 @@ bool ha_flush_logs()
Filesystem path prefix (mysql_data_home or tmpdir)
is left intact.
- @note tmp_path may be left intact if no conversion was
- performed.
+ @note buff may be left intact if no conversion was performed.
@retval canonized path
@@ -3143,29 +3185,40 @@ bool ha_flush_logs()
gets built. Convert this function to something like
ASSERT_CANONICAL_FILENAME.
*/
-const char *get_canonical_filename(handler *file, const char *path,
- char *tmp_path)
+
+Lex_cstring handler::get_canonical_filename(const Lex_cstring &path,
+ Table_path_buffer *buff) const
{
+ /* Ensure that table handler get path in lower case */
uint i;
- if (!file->needs_lower_case_filenames())
+ if (!needs_lower_case_filenames())
return path;
for (i= 0; i <= mysql_tmpdir_list.max; i++)
{
- if (is_prefix(path, mysql_tmpdir_list.list[i]))
+ if (is_prefix(path.str, mysql_tmpdir_list.list[i]))
return path;
}
-
- /* Ensure that table handler get path in lower case */
- if (tmp_path != path)
- strmov(tmp_path, path);
-
/*
we only should turn into lowercase database/table part
- so start the process after homedirectory
+ so start lower-casing after homedirectory
+ */
+ DBUG_ASSERT(path.starts_with({mysql_data_home, mysql_data_home_len}));
+ /*
+ QQ: important for upgrade from MySQL-5.0 with --lower-case-table-names=2
+
+ In case if both the table name and the database name are encoded
+ using tablename_to_filename(), the it's ok to lower-case the entire
+ "/db/table" part using files_charset_info.
+
+ Otherwise, in case if either of the table name or the database name
+ starts with '#mysql50#', it's probably not correct to lower-case using
+ files_charset_info. Shoudn't we lower-case '#mysql50#name' using
+ character_set_filesystem instead?
*/
- my_casedn_str(files_charset_info, tmp_path + mysql_data_home_len);
- return tmp_path;
+ return buff->set_casedn(path.left(mysql_data_home_len),
+ files_charset_info,
+ path.substr(mysql_data_home_len)).to_lex_cstring();
}
@@ -3272,7 +3325,9 @@ handler *handler::clone(const char *name, MEM_ROOT *mem_root)
if (new_handler->ha_open(table, name, table->db_stat,
HA_OPEN_IGNORE_IF_LOCKED, mem_root))
goto err;
+
new_handler->handler_stats= handler_stats;
+ new_handler->set_optimizer_costs(ha_thd());
return new_handler;
@@ -3306,30 +3361,111 @@ LEX_CSTRING *handler::engine_name()
/*
- It is assumed that the value of the parameter 'ranges' can be only 0 or 1.
- If ranges == 1 then the function returns the cost of index only scan
- by index 'keyno' of one range containing 'rows' key entries.
- If ranges == 0 then the function returns only the cost of copying
- those key entries into the engine buffers.
+ Calclate the number of index blocks we are going to access when
+ doing 'ranges' index dives reading a total of 'rows' rows.
+*/
+
+ulonglong handler::index_blocks(uint index, uint ranges, ha_rows rows)
+{
+ if (!stats.block_size)
+ return 0; // No disk storage
+ size_t len= table->key_storage_length(index);
+ ulonglong blocks= (rows * len / INDEX_BLOCK_FILL_FACTOR_DIV *
+ INDEX_BLOCK_FILL_FACTOR_MUL) / stats.block_size + ranges;
+ return blocks * stats.block_size / IO_SIZE;
+}
+
+
+/*
+ Calculate cost for an index scan for given index and number of records.
+
+ @param index Index to use
+ @param ranges Number of ranges (b-tree dives in case of b-tree).
+ Used by partition engine
+ @param rows Number of expected rows
+ @param blocks Number of disk blocks to read (from range optimizer).
+ 0 if not known
+
+ This function does not take in account into looking up the key,
+ copying the key to record and finding the next key. These cost are
+ handled in ha_keyread_time()
*/
-double handler::keyread_time(uint index, uint ranges, ha_rows rows)
+IO_AND_CPU_COST handler::keyread_time(uint index, ulong ranges, ha_rows rows,
+ ulonglong blocks)
{
- DBUG_ASSERT(ranges == 0 || ranges == 1);
- size_t len= table->key_info[index].key_length + ref_length;
- if (table->file->is_clustering_key(index))
- len= table->s->stored_rec_length;
- double cost= (double)rows*len/(stats.block_size+1)*IDX_BLOCK_COPY_COST;
- if (ranges)
+ IO_AND_CPU_COST cost;
+ ulonglong io_blocks= 0;
+ DBUG_ASSERT(ranges > 0);
+
+ /* memory engine has stats.block_size == 0 */
+ if (stats.block_size)
{
- uint keys_per_block= (uint) (stats.block_size*3/4/len+1);
- ulonglong blocks= (rows+ keys_per_block- 1)/keys_per_block;
- cost+= blocks;
+ if (!blocks)
+ {
+ /* Estimate length of index data */
+ if (rows <= 1) // EQ_REF optimization
+ {
+ blocks= 1;
+ io_blocks= (stats.block_size + IO_SIZE - 1)/ IO_SIZE;
+ }
+ else
+ {
+ size_t len= table->key_storage_length(index);
+ blocks= ((ulonglong) ((rows * len / INDEX_BLOCK_FILL_FACTOR_DIV *
+ INDEX_BLOCK_FILL_FACTOR_MUL +
+ stats.block_size-1)) / stats.block_size +
+ (ranges - 1));
+ io_blocks= blocks * stats.block_size / IO_SIZE;
+ }
+ }
+ else
+ io_blocks= blocks * stats.block_size / IO_SIZE;
}
+ cost.io= (double) io_blocks;
+ cost.cpu= blocks * INDEX_BLOCK_COPY_COST;
return cost;
}
+/*
+ Cost of doing a set of range scans and finding the key position.
+ This function is used both with index scans (in which case there should be
+ an additional KEY_COPY_COST) and when normal index + fetch row scan,
+ in which case there should an additional rnd_pos_time() cost.
+*/
+
+IO_AND_CPU_COST handler::ha_keyread_time(uint index, ulong ranges,
+ ha_rows rows,
+ ulonglong blocks)
+{
+ if (rows < ranges)
+ rows= ranges;
+ IO_AND_CPU_COST cost= keyread_time(index, ranges, rows, blocks);
+ cost.cpu+= ranges * KEY_LOOKUP_COST + (rows - ranges) * KEY_NEXT_FIND_COST;
+ return cost;
+}
+
+
+/*
+ Read rows from a clustered index
+
+ Cost is similar to ha_rnd_pos_call_time() as a index_read() on a clustered
+ key has identical code as rnd_pos() (At least in InnoDB:)
+*/
+
+IO_AND_CPU_COST
+handler::ha_keyread_clustered_time(uint index, ulong ranges,
+ ha_rows rows,
+ ulonglong blocks)
+{
+ if (rows < ranges)
+ rows= ranges;
+ IO_AND_CPU_COST cost= keyread_time(index, ranges, rows, blocks);
+ cost.cpu+= (ranges * ROW_LOOKUP_COST + (rows - ranges) * ROW_NEXT_FIND_COST);
+ return cost;
+}
+
THD *handler::ha_thd(void) const
{
DBUG_ASSERT(!table || !table->in_use || table->in_use == current_thd);
@@ -3402,7 +3538,7 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode,
name, ht->db_type, table_arg->db_stat, mode,
test_if_locked));
- table= table_arg;
+ set_table(table_arg);
DBUG_ASSERT(table->s == table_share);
DBUG_ASSERT(m_lock_type == F_UNLCK);
DBUG_PRINT("info", ("old m_lock_type: %d F_UNLCK %d", m_lock_type, F_UNLCK));
@@ -3449,7 +3585,7 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode,
m_psi= PSI_CALL_open_table(ha_table_share_psi(), this);
}
- if (table->s->db_options_in_use & HA_OPTION_READ_ONLY_DATA)
+ if (table_share->db_options_in_use & HA_OPTION_READ_ONLY_DATA)
table->db_stat|=HA_READ_ONLY;
(void) extra(HA_EXTRA_NO_READCHECK); // Not needed in SQL
@@ -3463,8 +3599,23 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode,
else
dup_ref=ref+ALIGN_SIZE(ref_length);
cached_table_flags= table_flags();
+ /* Cache index flags */
+ for (uint index= 0 ; index < table_share->keys ; index++)
+ table->key_info[index].index_flags= index_flags(index, 0, 1);
+
+ if (!table_share->optimizer_costs_inited)
+ {
+ table_share->optimizer_costs_inited=1;
+ /* Copy data from global 'engine'.optimizer_costs to TABLE_SHARE */
+ table_share->update_optimizer_costs(partition_ht());
+ /* Update costs depend on table structure */
+ update_optimizer_costs(&table_share->optimizer_costs);
+ }
+
+ /* Copy current optimizer costs. Needed in case clone() is used */
+ reset_statistics();
}
- reset_statistics();
+
DBUG_RETURN(error);
}
@@ -3492,6 +3643,15 @@ int handler::ha_close(void)
DBUG_RETURN(close());
}
+void handler::change_table_ptr(TABLE *table_arg, TABLE_SHARE *share)
+{
+ DBUG_ASSERT(table_arg->s == share);
+ table= table_arg;
+ table_share= share;
+ costs= &share->optimizer_costs;
+ reset_statistics();
+}
+
int handler::ha_rnd_next(uchar *buf)
{
@@ -3501,6 +3661,15 @@ int handler::ha_rnd_next(uchar *buf)
m_lock_type != F_UNLCK);
DBUG_ASSERT(inited == RND);
+ DBUG_EXECUTE_IF("ha_rnd_next_error",
+ {
+ LEX_CSTRING user_var= { STRING_WITH_LEN("ha_rnd_next_error_counter") };
+ if (debug_decrement_counter(&user_var))
+ {
+ print_error(HA_ERR_WRONG_IN_RECORD,MYF(0));
+ DBUG_RETURN(HA_ERR_WRONG_IN_RECORD);
+ }
+ });
do
{
TABLE_IO_WAIT(tracker, PSI_TABLE_FETCH_ROW, MAX_KEY, result,
@@ -3524,6 +3693,9 @@ int handler::ha_rnd_next(uchar *buf)
}
table->status=result ? STATUS_NOT_FOUND: 0;
+
+ DEBUG_SYNC(ha_thd(), "handler_rnd_next_end");
+
DBUG_RETURN(result);
}
@@ -3746,7 +3918,7 @@ int handler::read_first_row(uchar * buf, uint primary_key)
TODO remove the test for HA_READ_ORDER
*/
if (stats.deleted < 10 || primary_key >= MAX_KEY ||
- !(index_flags(primary_key, 0, 0) & HA_READ_ORDER))
+ !(table->key_info[primary_key].index_flags & HA_READ_ORDER))
{
if (likely(!(error= ha_rnd_init(1))))
{
@@ -6004,7 +6176,7 @@ int ha_create_table(THD *thd, const char *path, const char *db,
{
int error= 1;
TABLE table;
- char name_buff[FN_REFLEN];
+ Table_path_buffer name_buff;
const char *name;
TABLE_SHARE share;
Abort_on_warning_instant_set old_abort_on_warning(thd, 0);
@@ -6043,7 +6215,7 @@ int ha_create_table(THD *thd, const char *path, const char *db,
update_create_info_from_table(create_info, &table);
- name= get_canonical_filename(table.file, share.path.str, name_buff);
+ name= table.file->get_canonical_filename(share.path, &name_buff).str;
error= table.file->ha_create(name, &table, create_info);
@@ -6548,7 +6720,7 @@ bool Discovered_table_list::add_file(const char *fname)
{
bool is_temp= strncmp(fname, STRING_WITH_LEN(tmp_file_prefix)) == 0;
- if (is_temp && !with_temps)
+ if ((is_temp && !with_temps) || !strncmp(fname,STRING_WITH_LEN(ROCKSDB_DIRECTORY_NAME)))
return 0;
char tname[SAFE_NAME_LEN + 1];
@@ -6592,7 +6764,7 @@ void Discovered_table_list::remove_duplicates()
struct st_discover_names_args
{
- LEX_CSTRING *db;
+ const LEX_CSTRING *db;
MY_DIR *dirp;
Discovered_table_list *result;
uint possible_duplicates;
@@ -6637,7 +6809,7 @@ static my_bool discover_names(THD *thd, plugin_ref plugin,
for DROP DATABASE (as it needs to know and delete non-table files).
*/
-int ha_discover_table_names(THD *thd, LEX_CSTRING *db, MY_DIR *dirp,
+int ha_discover_table_names(THD *thd, const LEX_CSTRING *db, MY_DIR *dirp,
Discovered_table_list *result, bool reusable)
{
int error;
@@ -6863,17 +7035,25 @@ extern "C" check_result_t handler_index_cond_check(void* h_arg)
check_result_t res;
DEBUG_SYNC(thd, "handler_index_cond_check");
- enum thd_kill_levels abort_at= h->has_rollback() ?
- THD_ABORT_SOFTLY : THD_ABORT_ASAP;
- if (thd_kill_level(thd) > abort_at)
- return CHECK_ABORTED_BY_USER;
- if (h->end_range && h->compare_key2(h->end_range) > 0)
+ enum thd_kill_levels killed= thd_kill_level(thd);
+ if (unlikely(killed != THD_IS_NOT_KILLED))
+ {
+ enum thd_kill_levels abort_at= (h->has_transactions() ?
+ THD_ABORT_SOFTLY :
+ THD_ABORT_ASAP);
+ if (killed > abort_at)
+ return CHECK_ABORTED_BY_USER;
+ }
+ if (unlikely(h->end_range) && h->compare_key2(h->end_range) > 0)
return CHECK_OUT_OF_RANGE;
h->increment_statistics(&SSV::ha_icp_attempts);
- if ((res= h->pushed_idx_cond->val_int()? CHECK_POS : CHECK_NEG) ==
- CHECK_POS)
- h->increment_statistics(&SSV::ha_icp_match);
+ res= CHECK_NEG;
+ if (h->pushed_idx_cond->val_int())
+ {
+ res= CHECK_POS;
+ h->fast_increment_statistics(&SSV::ha_icp_match);
+ }
return res;
}
@@ -6897,17 +7077,23 @@ check_result_t handler_rowid_filter_check(void *h_arg)
{
THD *thd= h->table->in_use;
DEBUG_SYNC(thd, "handler_rowid_filter_check");
- enum thd_kill_levels abort_at= h->has_transactions() ?
- THD_ABORT_SOFTLY : THD_ABORT_ASAP;
- if (thd_kill_level(thd) > abort_at)
- return CHECK_ABORTED_BY_USER;
+
+ enum thd_kill_levels killed= thd_kill_level(thd);
+ if (unlikely(killed != THD_IS_NOT_KILLED))
+ {
+ enum thd_kill_levels abort_at= (h->has_transactions() ?
+ THD_ABORT_SOFTLY :
+ THD_ABORT_ASAP);
+ if (killed > abort_at)
+ return CHECK_ABORTED_BY_USER;
+ }
if (h->end_range && h->compare_key2(h->end_range) > 0)
return CHECK_OUT_OF_RANGE;
}
h->position(tab->record[0]);
- return h->pushed_rowid_filter->check((char*)h->ref)? CHECK_POS: CHECK_NEG;
+ return h->pushed_rowid_filter->check((char*)h->ref) ? CHECK_POS: CHECK_NEG;
}
@@ -6918,8 +7104,7 @@ check_result_t handler_rowid_filter_check(void *h_arg)
extern "C" int handler_rowid_filter_is_active(void *h_arg)
{
- if (!h_arg)
- return false;
+ DBUG_ASSERT(h_arg);
handler *h= (handler*) h_arg;
return h->rowid_filter_is_active;
}
@@ -7143,25 +7328,62 @@ bool handler::check_table_binlog_row_based_internal()
mysql_bin_log.is_open()));
}
-
-int handler::binlog_log_row(TABLE *table,
- const uchar *before_record,
- const uchar *after_record,
- Log_func *log_func)
+static int binlog_log_row_to_binlog(TABLE* table,
+ const uchar *before_record,
+ const uchar *after_record,
+ Log_func *log_func,
+ bool has_trans)
{
- bool error;
- THD *thd= table->in_use;
- DBUG_ENTER("binlog_log_row");
+ bool error= 0;
+ THD *const thd= table->in_use;
+
+ DBUG_ENTER("binlog_log_row_to_binlog");
if (!thd->binlog_table_maps &&
thd->binlog_write_table_maps())
DBUG_RETURN(HA_ERR_RBR_LOGGING_FAILED);
- error= (*log_func)(thd, table, row_logging_has_trans,
- before_record, after_record);
+ DBUG_ASSERT(thd->is_current_stmt_binlog_format_row());
+ DBUG_ASSERT((WSREP_NNULL(thd) && wsrep_emulate_bin_log)
+ || mysql_bin_log.is_open());
+
+ auto *cache_mngr= thd->binlog_setup_trx_data();
+ if (cache_mngr == NULL)
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+
+ /* Ensure that all events in a GTID group are in the same cache */
+ if (thd->variables.option_bits & OPTION_GTID_BEGIN)
+ has_trans= 1;
+
+ auto *cache= binlog_get_cache_data(cache_mngr,
+ use_trans_cache(thd, has_trans));
+
+ error= (*log_func)(thd, table, mysql_bin_log.as_event_log(), cache,
+ has_trans, thd->variables.binlog_row_image,
+ before_record, after_record);
DBUG_RETURN(error ? HA_ERR_RBR_LOGGING_FAILED : 0);
}
+int handler::binlog_log_row(const uchar *before_record,
+ const uchar *after_record,
+ Log_func *log_func)
+{
+ DBUG_ENTER("handler::binlog_log_row");
+
+ int error = 0;
+ if (row_logging)
+ error= binlog_log_row_to_binlog(table, before_record, after_record,
+ log_func, row_logging_has_trans);
+
+#ifdef HAVE_REPLICATION
+ if (unlikely(!error && table->s->online_alter_binlog && is_root_handler()))
+ error= online_alter_log_row(table, before_record, after_record,
+ log_func);
+#endif // HAVE_REPLICATION
+
+ DBUG_RETURN(error);
+}
+
int handler::ha_external_lock(THD *thd, int lock_type)
{
@@ -7696,18 +7918,7 @@ int handler::ha_write_row(const uchar *buf)
if ((error= ha_check_overlaps(NULL, buf)))
DBUG_RETURN(error);
- /*
- NOTE: this != table->file is true in 3 cases:
-
- 1. under copy_partitions() (REORGANIZE PARTITION): that does not
- require long unique check as it does not introduce new rows or new index.
- 2. under partition's ha_write_row() (INSERT): check_duplicate_long_entries()
- was already done by ha_partition::ha_write_row(), no need to check it
- again for each single partition.
- 3. under ha_mroonga::wrapper_write_row()
- */
-
- if (table->s->long_unique_table && this == table->file)
+ if (table->s->long_unique_table && is_root_handler())
{
DBUG_ASSERT(inited == NONE || lookup_handler != this);
if ((error= check_duplicate_long_entries(buf)))
@@ -7730,11 +7941,9 @@ int handler::ha_write_row(const uchar *buf)
if (likely(!error))
{
rows_changed++;
- if (row_logging)
- {
- Log_func *log_func= Write_rows_log_event::binlog_row_logging_function;
- error= binlog_log_row(table, 0, buf, log_func);
- }
+ Log_func *log_func= Write_rows_log_event::binlog_row_logging_function;
+ error= binlog_log_row(0, buf, log_func);
+
#ifdef WITH_WSREP
if (WSREP_NNULL(ha_thd()) && table_share->tmp_table == NO_TMP_TABLE &&
ht->flags & HTON_WSREP_REPLICATION &&
@@ -7765,14 +7974,7 @@ int handler::ha_update_row(const uchar *old_data, const uchar *new_data)
uint saved_status= table->status;
error= ha_check_overlaps(old_data, new_data);
- /*
- NOTE: this != table->file is true under partition's ha_update_row():
- check_duplicate_long_entries_update() was already done by
- ha_partition::ha_update_row(), no need to check it again for each single
- partition. Same applies to ha_mroonga wrapper.
- */
-
- if (!error && table->s->long_unique_table && this == table->file)
+ if (!error && table->s->long_unique_table && is_root_handler())
error= check_duplicate_long_entries_update(new_data);
table->status= saved_status;
@@ -7790,11 +7992,9 @@ int handler::ha_update_row(const uchar *old_data, const uchar *new_data)
if (likely(!error))
{
rows_changed++;
- if (row_logging)
- {
- Log_func *log_func= Update_rows_log_event::binlog_row_logging_function;
- error= binlog_log_row(table, old_data, new_data, log_func);
- }
+ Log_func *log_func= Update_rows_log_event::binlog_row_logging_function;
+ error= binlog_log_row(old_data, new_data, log_func);
+
#ifdef WITH_WSREP
THD *thd= ha_thd();
if (WSREP_NNULL(thd))
@@ -7868,11 +8068,9 @@ int handler::ha_delete_row(const uchar *buf)
if (likely(!error))
{
rows_changed++;
- if (row_logging)
- {
- Log_func *log_func= Delete_rows_log_event::binlog_row_logging_function;
- error= binlog_log_row(table, buf, 0, log_func);
- }
+ Log_func *log_func= Delete_rows_log_event::binlog_row_logging_function;
+ error= binlog_log_row(buf, 0, log_func);
+
#ifdef WITH_WSREP
THD *thd= ha_thd();
if (WSREP_NNULL(thd))
@@ -8861,3 +9059,21 @@ Table_scope_and_contents_source_st::fix_period_fields(THD *thd,
}
return false;
}
+
+/*
+ Copy upper level cost to the engine as part of start statement
+
+ This is needed to provide fast access to these variables during
+ optimization (as we refer to them multiple times during one query).
+
+ The other option would be to access them from THD, but that would
+ require a function call (as we cannot easily access THD from an
+ inline handler function) and two extra memory accesses for each
+ variable.
+*/
+
+void handler::set_optimizer_costs(THD *thd)
+{
+ optimizer_where_cost= thd->variables.optimizer_where_cost;
+ optimizer_scan_setup_cost= thd->variables.optimizer_scan_setup_cost;
+}
diff --git a/sql/handler.h b/sql/handler.h
index 6958692e..0db07ed7 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -28,6 +28,7 @@
#include "sql_const.h"
#include "sql_basic_types.h"
#include "mysqld.h" /* server_id */
+#include "optimizer_costs.h"
#include "sql_plugin.h" /* plugin_ref, st_plugin_int, plugin */
#include "thr_lock.h" /* thr_lock_type, THR_LOCK_DATA */
#include "sql_cache.h"
@@ -36,6 +37,7 @@
#include "mdl.h"
#include "vers_string.h"
#include "ha_handler_stats.h"
+#include "optimizer_costs.h"
#include "sql_analyze_stmt.h" // for Exec_time_tracker
@@ -56,6 +58,7 @@ class Field_string;
class Field_varstring;
class Field_blob;
class Column_definition;
+class select_result;
// the following is for checking tables
@@ -248,7 +251,7 @@ enum chf_create_flags {
Example:
UPDATE a=1 WHERE pk IN (<keys>)
- mysql_update()
+ Sql_cmd_update::update_single_table()
{
if (<conditions for starting read removal>)
start_read_removal()
@@ -368,7 +371,10 @@ enum chf_create_flags {
/* Implements SELECT ... FOR UPDATE SKIP LOCKED */
#define HA_CAN_SKIP_LOCKED (1ULL << 61)
-#define HA_LAST_TABLE_FLAG HA_CAN_SKIP_LOCKED
+/* This engine is not compatible with Online ALTER TABLE */
+#define HA_NO_ONLINE_ALTER (1ULL << 62)
+
+#define HA_LAST_TABLE_FLAG HA_NO_ONLINE_ALTER
/* bits in index_flags(index_number) for what you can do with index */
@@ -551,6 +557,7 @@ enum legacy_db_type
DB_TYPE_BLACKHOLE_DB=19,
DB_TYPE_PARTITION_DB=20,
DB_TYPE_BINLOG=21,
+ DB_TYPE_ONLINE_ALTER=22,
DB_TYPE_PBXT=23,
DB_TYPE_PERFORMANCE_SCHEMA=28,
DB_TYPE_S3=41,
@@ -651,7 +658,13 @@ given at all. */
#define HA_CREATE_PRINT_ALL_OPTIONS (1UL << 26)
typedef ulonglong alter_table_operations;
-typedef bool Log_func(THD*, TABLE*, bool, const uchar*, const uchar*);
+
+class Event_log;
+class Cache_flip_event_log;
+class binlog_cache_data;
+class online_alter_cache_data;
+typedef bool Log_func(THD*, TABLE*, Event_log *, binlog_cache_data *, bool,
+ ulong, const uchar*, const uchar*);
/*
These flags are set by the parser and describes the type of
@@ -877,6 +890,7 @@ typedef ulonglong my_xid; // this line is the same as in log_event.h
#define COMPATIBLE_DATA_YES 0
#define COMPATIBLE_DATA_NO 1
+
/**
struct xid_t is binary compatible with the XID structure as
in the X/Open CAE Specification, Distributed Transaction Processing:
@@ -960,6 +974,13 @@ struct xid_t {
};
typedef struct xid_t XID;
+struct Online_alter_cache_list;
+struct XA_data: XID
+{
+ Online_alter_cache_list *online_alter_cache= NULL;
+ XA_data &operator=(const XID &x) { XID::operator=(x); return *this; }
+};
+
/*
Enumerates a sequence in the order of
their creation that is in the top-down order of the index file.
@@ -1046,9 +1067,12 @@ enum enum_schema_tables
SCH_KEYWORDS,
SCH_KEY_CACHES,
SCH_KEY_COLUMN_USAGE,
+ SCH_KEY_PERIOD_USAGE,
SCH_OPEN_TABLES,
+ SCH_OPTIMIZER_COSTS,
SCH_OPT_TRACE,
SCH_PARAMETERS,
+ SCH_PERIODS,
SCH_PARTITIONS,
SCH_PLUGINS,
SCH_PROCESSLIST,
@@ -1069,7 +1093,8 @@ enum enum_schema_tables
SCH_TABLE_PRIVILEGES,
SCH_TRIGGERS,
SCH_USER_PRIVILEGES,
- SCH_VIEWS
+ SCH_VIEWS,
+ SCH_ENUM_SIZE
};
struct TABLE_SHARE;
@@ -1083,6 +1108,7 @@ enum ha_stat_type { HA_ENGINE_STATUS, HA_ENGINE_LOGS, HA_ENGINE_MUTEX };
extern MYSQL_PLUGIN_IMPORT st_plugin_int *hton2plugin[MAX_HA];
struct handlerton;
+
#define view_pseudo_hton ((handlerton *)1)
/*
@@ -1205,6 +1231,7 @@ class derived_handler;
class select_handler;
struct Query;
typedef class st_select_lex SELECT_LEX;
+typedef class st_select_lex_unit SELECT_LEX_UNIT;
typedef struct st_order ORDER;
/*
@@ -1497,6 +1524,10 @@ struct handlerton
/* Called for all storage handlers after ddl recovery is done */
int (*signal_ddl_recovery_done)(handlerton *hton);
+ /* Called at startup to update default engine costs */
+ void (*update_optimizer_costs)(OPTIMIZER_COSTS *costs);
+ void *optimizer_costs; /* Costs are stored here */
+
/*
Optional clauses in the CREATE/ALTER TABLE
*/
@@ -1546,10 +1577,18 @@ struct handlerton
derived_handler *(*create_derived)(THD *thd, TABLE_LIST *derived);
/*
- Create and return a select_handler if the storage engine can execute
- the select statement 'select, otherwise return NULL
+ Create and return a select_handler for a single SELECT.
+ If the storage engine cannot execute the select statement, return NULL
+ */
+ select_handler *(*create_select) (THD *thd, SELECT_LEX *select_lex,
+ SELECT_LEX_UNIT *select_lex_unit);
+
+ /*
+ Create and return a select_handler for a unit (i.e. multiple SELECTs
+ combined with UNION/EXCEPT/INTERSECT). If the storage engine cannot execute
+ the statement, return NULL
*/
- select_handler *(*create_select) (THD *thd, SELECT_LEX *select);
+ select_handler *(*create_unit)(THD *thd, SELECT_LEX_UNIT *select_unit);
/*********************************************************************
Table discovery API.
@@ -1595,7 +1634,8 @@ struct handlerton
Returns 0 on success and 1 on error.
*/
- int (*discover_table_names)(handlerton *hton, LEX_CSTRING *db, MY_DIR *dir,
+ int (*discover_table_names)(handlerton *hton, const LEX_CSTRING *db,
+ MY_DIR *dir,
discovered_list *result);
/*
@@ -1802,7 +1842,8 @@ struct THD_TRANS
modified non-transactional tables of top-level statements. At
the end of the previous statement and at the beginning of the session,
it is reset to FALSE. If such functions
- as mysql_insert, mysql_update, mysql_delete etc modify a
+ as mysql_insert(), Sql_cmd_update::update_single_table,
+ Sql_cmd_delete::delete_single_table modify a
non-transactional table, they set this flag to TRUE. At the
end of the statement, the value of stmt.modified_non_trans_table
is merged with all.modified_non_trans_table and gets reset.
@@ -1889,7 +1930,6 @@ struct THD_TRANS
};
-
/**
Either statement transaction or normal transaction - related
thread-specific storage engine data.
@@ -2349,32 +2389,42 @@ struct Table_specification_st: public HA_CREATE_INFO,
convert_charset_collation.init();
}
- bool add_table_option_convert_charset(CHARSET_INFO *cs)
+ bool add_table_option_convert_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ CHARSET_INFO *cs)
{
// cs can be NULL, e.g.: ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT;
used_fields|= (HA_CREATE_USED_CHARSET | HA_CREATE_USED_DEFAULT_CHARSET);
return cs ?
- convert_charset_collation.merge_exact_charset(Lex_exact_charset(cs)) :
+ convert_charset_collation.merge_exact_charset(used, map,
+ Lex_exact_charset(cs)) :
convert_charset_collation.merge_charset_default();
}
- bool add_table_option_convert_collation(const Lex_extended_collation_st &cl)
+ bool add_table_option_convert_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_extended_collation_st &cl)
{
used_fields|= (HA_CREATE_USED_CHARSET | HA_CREATE_USED_DEFAULT_CHARSET);
- return convert_charset_collation.merge_collation(cl);
+ return convert_charset_collation.merge_collation(used, map, cl);
}
- bool add_table_option_default_charset(CHARSET_INFO *cs)
+ bool add_table_option_default_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ CHARSET_INFO *cs)
{
// cs can be NULL, e.g.: CREATE TABLE t1 (..) CHARACTER SET DEFAULT;
used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
return cs ?
- default_charset_collation.merge_exact_charset(Lex_exact_charset(cs)) :
+ default_charset_collation.merge_exact_charset(used, map,
+ Lex_exact_charset(cs)) :
default_charset_collation.merge_charset_default();
}
- bool add_table_option_default_collation(const Lex_extended_collation_st &cl)
+ bool add_table_option_default_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_extended_collation_st &cl)
{
used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
- return default_charset_collation.merge_collation(cl);
+ return default_charset_collation.merge_collation(used, map, cl);
}
bool resolve_to_charset_collation_context(THD *thd,
@@ -2767,113 +2817,123 @@ typedef struct st_range_seq_if
typedef bool (*SKIP_INDEX_TUPLE_FUNC) (range_seq_t seq, range_id_t range_info);
+#define MARIADB_NEW_COST_MODEL 1
+/* Separated costs for IO and CPU */
+
+struct IO_AND_CPU_COST
+{
+ double io;
+ double cpu;
+
+ void add(IO_AND_CPU_COST cost)
+ {
+ io+= cost.io;
+ cpu+= cost.cpu;
+ }
+};
+
+/* Cost for reading a row through an index */
+struct ALL_READ_COST
+{
+ IO_AND_CPU_COST index_cost, row_cost;
+ longlong max_index_blocks, max_row_blocks;
+ /* index_only_read = index_cost + copy_cost */
+ double copy_cost;
+
+ void reset()
+ {
+ row_cost= {0,0};
+ index_cost= {0,0};
+ max_index_blocks= max_row_blocks= 0;
+ copy_cost= 0.0;
+ }
+};
+
+
class Cost_estimate
{
public:
- double io_count; /* number of I/O to fetch records */
double avg_io_cost; /* cost of an average I/O oper. to fetch records */
- double idx_io_count; /* number of I/O to read keys */
- double idx_avg_io_cost; /* cost of an average I/O oper. to fetch records */
- double cpu_cost; /* total cost of operations in CPU */
- double idx_cpu_cost; /* cost of operations in CPU for index */
- double import_cost; /* cost of remote operations */
- double mem_cost; /* cost of used memory */
-
- static constexpr double IO_COEFF= 1;
- static constexpr double CPU_COEFF= 1;
- static constexpr double MEM_COEFF= 1;
- static constexpr double IMPORT_COEFF= 1;
+ double cpu_cost; /* Cpu cost unrelated to engine costs */
+ double comp_cost; /* Cost of comparing found rows with WHERE clause */
+ double copy_cost; /* Copying the data to 'record' */
+ double limit_cost; /* Total cost when restricting rows with limit */
+ double setup_cost; /* MULTI_RANGE_READ_SETUP_COST or similar */
+ IO_AND_CPU_COST index_cost;
+ IO_AND_CPU_COST row_cost;
Cost_estimate()
{
reset();
}
+ /*
+ Total cost for the range
+ Note that find_cost() + compare_cost() + data_copy_cost() == total_cost()
+ */
+
double total_cost() const
{
- return IO_COEFF*io_count*avg_io_cost +
- IO_COEFF*idx_io_count*idx_avg_io_cost +
- CPU_COEFF*(cpu_cost + idx_cpu_cost) +
- MEM_COEFF*mem_cost + IMPORT_COEFF*import_cost;
+ return ((index_cost.io + row_cost.io) * avg_io_cost+
+ index_cost.cpu + row_cost.cpu + copy_cost +
+ comp_cost + cpu_cost + setup_cost);
}
- double index_only_cost()
+ /* Cost for just fetching and copying a row (no compare costs) */
+ double fetch_cost() const
{
- return IO_COEFF*idx_io_count*idx_avg_io_cost +
- CPU_COEFF*idx_cpu_cost;
+ return ((index_cost.io + row_cost.io) * avg_io_cost+
+ index_cost.cpu + row_cost.cpu + copy_cost);
}
- /**
- Whether or not all costs in the object are zero
-
- @return true if all costs are zero, false otherwise
+ /*
+ Cost of copying the row or key to 'record'
*/
- bool is_zero() const
+ inline double data_copy_cost() const
{
- return io_count == 0.0 && idx_io_count == 0.0 && cpu_cost == 0.0 &&
- import_cost == 0.0 && mem_cost == 0.0;
+ return copy_cost;
}
- void reset()
- {
- avg_io_cost= 1.0;
- idx_avg_io_cost= 1.0;
- io_count= idx_io_count= cpu_cost= idx_cpu_cost= mem_cost= import_cost= 0.0;
- }
-
- void multiply(double m)
+ /*
+ Multiply costs to simulate a scan where we read
+ We assume that io blocks will be cached and we only
+ allocate memory once. There should also be no import_cost
+ that needs to be done multiple times
+ */
+ void multiply(uint n)
{
- io_count *= m;
- cpu_cost *= m;
- idx_io_count *= m;
- idx_cpu_cost *= m;
- import_cost *= m;
- /* Don't multiply mem_cost */
+ index_cost.io*= n;
+ index_cost.cpu*= n;
+ row_cost.io*= n;
+ row_cost.cpu*= n;
+ copy_cost*= n;
+ comp_cost*= n;
+ cpu_cost*= n;
}
- void add(const Cost_estimate* cost)
+ void add(Cost_estimate *cost)
{
- if (cost->io_count != 0.0)
- {
- double io_count_sum= io_count + cost->io_count;
- avg_io_cost= (io_count * avg_io_cost +
- cost->io_count * cost->avg_io_cost)
- /io_count_sum;
- io_count= io_count_sum;
- }
- if (cost->idx_io_count != 0.0)
- {
- double idx_io_count_sum= idx_io_count + cost->idx_io_count;
- idx_avg_io_cost= (idx_io_count * idx_avg_io_cost +
- cost->idx_io_count * cost->idx_avg_io_cost)
- /idx_io_count_sum;
- idx_io_count= idx_io_count_sum;
- }
- cpu_cost += cost->cpu_cost;
- idx_cpu_cost += cost->idx_cpu_cost;
- import_cost += cost->import_cost;
+ avg_io_cost= cost->avg_io_cost;
+ index_cost.io+= cost->index_cost.io;
+ index_cost.cpu+= cost->index_cost.cpu;
+ row_cost.io+= cost->row_cost.io;
+ row_cost.cpu+= cost->row_cost.cpu;
+ copy_cost+= cost->copy_cost;
+ comp_cost+= cost->comp_cost;
+ cpu_cost+= cost->cpu_cost;
+ setup_cost+= cost->setup_cost;
}
- void add_io(double add_io_cnt, double add_avg_cost)
+ inline void reset()
{
- /* In edge cases add_io_cnt may be zero */
- if (add_io_cnt > 0)
- {
- double io_count_sum= io_count + add_io_cnt;
- avg_io_cost= (io_count * avg_io_cost +
- add_io_cnt * add_avg_cost) / io_count_sum;
- io_count= io_count_sum;
- }
+ avg_io_cost= 0;
+ comp_cost= cpu_cost= 0.0;
+ copy_cost= limit_cost= 0.0;
+ setup_cost= 0.0;
+ index_cost= {0,0};
+ row_cost= {0,0};
}
-
- /// Add to CPU cost
- void add_cpu(double add_cpu_cost) { cpu_cost+= add_cpu_cost; }
-
- /// Add to import cost
- void add_import(double add_import_cost) { import_cost+= add_import_cost; }
-
- /// Add to memory cost
- void add_mem(double add_mem_cost) { mem_cost+= add_mem_cost; }
+ inline void reset(handler *file);
/*
To be used when we go from old single value-based cost calculations to
@@ -2882,13 +2942,10 @@ public:
void convert_from_cost(double cost)
{
reset();
- io_count= cost;
+ cpu_cost= cost;
}
};
-void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
- Cost_estimate *cost);
-
/*
Indicates that all scanned ranges will be singlepoint (aka equality) ranges.
The ranges may not use the full key but all of them will use the same number
@@ -3062,6 +3119,40 @@ enum class Compare_keys : uint32_t
NotEqual
};
+
+/*
+ This class stores a table file name in the format:
+ homedir/db/table
+ where db and table use tablename_to_filename() compatible encoding.
+*/
+class Table_path_buffer: public CharBuffer<FN_REFLEN>
+{
+public:
+ Table_path_buffer()
+ { }
+ /**
+ Make a lower-cased path for a table.
+ @homedir - home directory, get copied to the buffer as is
+ (without lower-casing)
+ @db_and_table - the database and the table name part in the format
+ "/db/table", can be in arbitrary letter case. It gets
+ converted to lower case during copying to the buffer.
+ The "db" and "table" parts can be prefixed with '#myql50#'.
+
+ Makes the path in the format "homedir/db/table".
+ */
+ Table_path_buffer & set_casedn(const Lex_cstring &homedir,
+ CHARSET_INFO *db_and_table_charset,
+ const Lex_cstring &db_and_table)
+ {
+ DBUG_ASSERT(homedir.length + db_and_table.length <= max_data_size());
+ copy_bin(homedir);
+ append_casedn(db_and_table_charset, db_and_table);
+ return *this;
+ }
+};
+
+
/**
The handler class is the interface for dynamically loadable
storage engines. Do not add ifdefs and take care when adding or
@@ -3125,9 +3216,10 @@ protected:
ha_handler_stats active_handler_stats;
void set_handler_stats();
public:
- handlerton *ht; /* storage engine of this handler */
- uchar *ref; /* Pointer to current row */
- uchar *dup_ref; /* Pointer to duplicate row */
+ handlerton *ht; /* storage engine of this handler */
+ OPTIMIZER_COSTS *costs; /* Points to table->share->costs */
+ uchar *ref; /* Pointer to current row */
+ uchar *dup_ref; /* Pointer to duplicate row */
uchar *lookup_buffer;
/* General statistics for the table like number of row, file sizes etc */
@@ -3145,6 +3237,7 @@ public:
HANDLER_BUFFER *multi_range_buffer; /* MRR buffer info */
uint ranges_in_seq; /* Total number of ranges in the traversed sequence */
/** Current range (the one we're now returning rows from) */
+
KEY_MULTI_RANGE mrr_cur_range;
/** The following are for read_range() */
@@ -3325,13 +3418,16 @@ private:
For non partitioned handlers this is &TABLE_SHARE::ha_share.
*/
Handler_share **ha_share;
-
public:
+
+ double optimizer_where_cost; // Copy of THD->...optimzer_where_cost
+ double optimizer_scan_setup_cost; // Copy of THD->...optimzer_scan_...
+
handler(handlerton *ht_arg, TABLE_SHARE *share_arg)
:table_share(share_arg), table(0),
estimation_rows_to_insert(0),
lookup_handler(this),
- ht(ht_arg), ref(0), lookup_buffer(NULL), handler_stats(NULL),
+ ht(ht_arg), costs(0), ref(0), lookup_buffer(NULL), handler_stats(NULL),
end_range(NULL), implicit_emptied(0),
mark_trx_read_write_done(0),
check_table_binlog_row_based_done(0),
@@ -3355,12 +3451,19 @@ public:
m_psi_numrows(0),
m_psi_locker(NULL),
row_logging(0), row_logging_init(0),
- m_lock_type(F_UNLCK), ha_share(NULL)
+ m_lock_type(F_UNLCK), ha_share(NULL), optimizer_where_cost(0),
+ optimizer_scan_setup_cost(0)
{
DBUG_PRINT("info",
("handler created F_UNLCK %d F_RDLCK %d F_WRLCK %d",
F_UNLCK, F_RDLCK, F_WRLCK));
reset_statistics();
+ /*
+ The following variables should be updated in set_optimizer_costs()
+ which is to be run as part of setting up the table for the query
+ */
+ MEM_UNDEFINED(&optimizer_where_cost, sizeof(optimizer_where_cost));
+ MEM_UNDEFINED(&optimizer_scan_setup_cost, sizeof(optimizer_scan_setup_cost));
active_handler_stats.active= 0;
}
virtual ~handler(void)
@@ -3464,21 +3567,46 @@ public:
int ha_delete_row(const uchar * buf);
void ha_release_auto_increment();
- bool keyread_enabled() { return keyread < MAX_KEY; }
- int ha_start_keyread(uint idx)
+ inline bool keyread_enabled() { return keyread < MAX_KEY; }
+ inline int ha_start_keyread(uint idx)
{
- int res= keyread_enabled() ? 0 : extra_opt(HA_EXTRA_KEYREAD, idx);
+ DBUG_ASSERT(!keyread_enabled());
keyread= idx;
- return res;
+ return extra_opt(HA_EXTRA_KEYREAD, idx);
}
- int ha_end_keyread()
+ inline int ha_end_keyread()
{
- if (!keyread_enabled())
+ if (!keyread_enabled()) /* Enably lazy usage */
return 0;
keyread= MAX_KEY;
return extra(HA_EXTRA_NO_KEYREAD);
}
+ /*
+ End any active keyread. Return state so that we can restore things
+ at end.
+ */
+ int ha_end_active_keyread()
+ {
+ int org_keyread;
+ if (!keyread_enabled())
+ return MAX_KEY;
+ org_keyread= keyread;
+ ha_end_keyread();
+ return org_keyread;
+ }
+ /* Restore state to before ha_end_active_keyread */
+ void ha_restart_keyread(int org_keyread)
+ {
+ DBUG_ASSERT(!keyread_enabled());
+ if (org_keyread != MAX_KEY)
+ ha_start_keyread(org_keyread);
+ }
+
+protected:
+ bool is_root_handler() const;
+
+public:
int check_collation_compatibility();
int check_long_hash_compatibility() const;
int ha_check_for_upgrade(HA_CHECK_OPT *check_opt);
@@ -3563,51 +3691,262 @@ public:
bzero(&copy_info, sizeof(copy_info));
reset_copy_info();
}
- virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share)
+ virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share);
+
+ inline double io_cost(IO_AND_CPU_COST cost)
{
- table= table_arg;
- table_share= share;
- reset_statistics();
+ return cost.io * DISK_READ_COST * DISK_READ_RATIO;
}
- virtual double scan_time()
+
+ inline double cost(IO_AND_CPU_COST cost)
{
- return ((ulonglong2double(stats.data_file_length) / stats.block_size + 2) *
- avg_io_cost());
+ return io_cost(cost) + cost.cpu;
}
- virtual double key_scan_time(uint index)
+ /*
+ Calculate cost with capping io_blocks to the given maximum.
+ This is done here instead of earlier to allow filtering to work
+ with the original' io_block counts.
+ */
+ inline double cost(ALL_READ_COST *cost)
{
- return keyread_time(index, 1, records());
+ double blocks= (MY_MIN(cost->index_cost.io,(double) cost->max_index_blocks) +
+ MY_MIN(cost->row_cost.io, (double) cost->max_row_blocks));
+ return ((cost->index_cost.cpu + cost->row_cost.cpu + cost->copy_cost) +
+ blocks * DISK_READ_COST * DISK_READ_RATIO);
}
+ /*
+ Same as above but without capping.
+ This is only used for comparing cost with s->quick_read time, which
+ does not do any capping.
+ */
- virtual double avg_io_cost()
+ inline double cost_no_capping(ALL_READ_COST *cost)
{
- return 1.0;
+ double blocks= (cost->index_cost.io + cost->row_cost.io);
+ return ((cost->index_cost.cpu + cost->row_cost.cpu + cost->copy_cost) +
+ blocks * DISK_READ_COST * DISK_READ_RATIO);
}
- /**
- The cost of reading a set of ranges from the table using an index
- to access it.
-
- @param index The index number.
- @param ranges The number of ranges to be read. If 0, it means that
- we calculate separately the cost of reading the key.
- @param rows Total number of rows to be read.
-
- This method can be used to calculate the total cost of scanning a table
- using an index by calling it using read_time(index, 1, table_size).
+ /*
+ Calculate cost when we are going to excute the given read method
+ multiple times
+ */
+ inline double cost_for_reading_multiple_times(double multiple,
+ ALL_READ_COST *cost)
+
+ {
+ double blocks= (MY_MIN(cost->index_cost.io * multiple,
+ (double) cost->max_index_blocks) +
+ MY_MIN(cost->row_cost.io * multiple,
+ (double) cost->max_row_blocks));
+ return ((cost->index_cost.cpu + cost->row_cost.cpu + cost->copy_cost) *
+ multiple +
+ blocks * DISK_READ_COST * DISK_READ_RATIO);
+ }
+
+ virtual ulonglong row_blocks()
+ {
+ return (stats.data_file_length + IO_SIZE-1) / IO_SIZE;
+ }
+
+ virtual ulonglong index_blocks(uint index, uint ranges, ha_rows rows);
+
+ inline ulonglong index_blocks(uint index)
+ {
+ return index_blocks(index, 1, stats.records);
+ }
+
+ /*
+ Time for a full table data scan. To be overrided by engines, should not
+ be used by the sql level.
*/
- virtual double read_time(uint index, uint ranges, ha_rows rows)
- { return rows2double(ranges+rows); }
+protected:
+ virtual IO_AND_CPU_COST scan_time()
+ {
+ IO_AND_CPU_COST cost;
+ ulonglong length= stats.data_file_length;
+ cost.io= (double) (length / IO_SIZE);
+ cost.cpu= (!stats.block_size ? 0.0 :
+ (double) ((length + stats.block_size-1)/stats.block_size) *
+ INDEX_BLOCK_COPY_COST);
+ return cost;
+ }
+public:
+
+ /*
+ Time for a full table scan
+
+ @param records Number of records from the engine or records from
+ status tables stored by ANALYZE TABLE.
+
+ The TABLE_SCAN_SETUP_COST is there to prefer range scans to full
+ table scans. This is mainly to make the test suite happy as
+ many tests has very few rows. In real life tables has more than
+ a few rows and the extra cost has no practical effect.
+ */
+
+ inline IO_AND_CPU_COST ha_scan_time(ha_rows rows)
+ {
+ IO_AND_CPU_COST cost= scan_time();
+ cost.cpu+= (TABLE_SCAN_SETUP_COST +
+ (double) rows * (ROW_NEXT_FIND_COST + ROW_COPY_COST));
+ return cost;
+ }
+
+ /*
+ Time for a full table scan, fetching the rows from the table and comparing
+ the row with the where clause
+ */
+ inline IO_AND_CPU_COST ha_scan_and_compare_time(ha_rows rows)
+ {
+ IO_AND_CPU_COST cost= ha_scan_time(rows);
+ cost.cpu+= (double) rows * WHERE_COST;
+ return cost;
+ }
+
+ /*
+ Update table->share optimizer costs for this particular table.
+ Called once when table is opened the first time.
+ */
+ virtual void update_optimizer_costs(OPTIMIZER_COSTS *costs) {}
+
+ /*
+ Set handler optimizer cost variables.
+ Called for each table used by the statment
+ This is virtual mainly for the partition engine.
+ */
+ virtual void set_optimizer_costs(THD *thd);
+
+protected:
+ /*
+ Cost of reading 'rows' number of rows with a rowid
+ */
+ virtual IO_AND_CPU_COST rnd_pos_time(ha_rows rows)
+ {
+ double r= rows2double(rows);
+ return
+ {
+ r * ((stats.block_size + IO_SIZE -1 )/IO_SIZE), // Blocks read
+ r * INDEX_BLOCK_COPY_COST // Copy block from cache
+ };
+ }
+public:
+
+ /*
+ Time for doing and internal rnd_pos() inside the engine. For some
+ engine, this is more efficient than the SQL layer calling
+ rnd_pos() as there is no overhead in converting/checking the
+ rnd_pos_value. This is used when calculating the cost of fetching
+ a key+row in one go (like when scanning an index and fetching the
+ row).
+ */
+
+ inline IO_AND_CPU_COST ha_rnd_pos_time(ha_rows rows)
+ {
+ IO_AND_CPU_COST cost= rnd_pos_time(rows);
+ set_if_smaller(cost.io, (double) row_blocks());
+ cost.cpu+= rows2double(rows) * (ROW_LOOKUP_COST + ROW_COPY_COST);
+ return cost;
+ }
+
+ /*
+ This cost if when we are calling rnd_pos() explict in the call
+ For the moment this function is identical to ha_rnd_pos time,
+ but that may change in the future after we do more cost checks for
+ more engines.
+ */
+ inline IO_AND_CPU_COST ha_rnd_pos_call_time(ha_rows rows)
+ {
+ IO_AND_CPU_COST cost= rnd_pos_time(rows);
+ set_if_smaller(cost.io, (double) row_blocks());
+ cost.cpu+= rows2double(rows) * (ROW_LOOKUP_COST + ROW_COPY_COST);
+ return cost;
+ }
+
+ inline IO_AND_CPU_COST ha_rnd_pos_call_and_compare_time(ha_rows rows)
+ {
+ IO_AND_CPU_COST cost;
+ cost= ha_rnd_pos_call_time(rows);
+ cost.cpu+= rows2double(rows) * WHERE_COST;
+ return cost;
+ }
/**
- Calculate cost of 'keyread' scan for given index and number of records.
+ Calculate cost of 'index_only' scan for given index, a number of ranges
+ and number of records.
- @param index index to read
- @param ranges #of ranges to read
- @param rows #of records to read
+ @param index Index to read
+ @param rows #of records to read
+ @param blocks Number of IO blocks that needs to be accessed.
+ 0 if not known (in which case it's calculated)
*/
- virtual double keyread_time(uint index, uint ranges, ha_rows rows);
+protected:
+ virtual IO_AND_CPU_COST keyread_time(uint index, ulong ranges, ha_rows rows,
+ ulonglong blocks);
+public:
+
+ /*
+ Calculate cost of 'keyread' scan for given index and number of records
+ including fetching the key to the 'record' buffer.
+ */
+ IO_AND_CPU_COST ha_keyread_time(uint index, ulong ranges, ha_rows rows,
+ ulonglong blocks);
+
+ /* Same as above, but take into account copying the key the the SQL layer */
+ inline IO_AND_CPU_COST ha_keyread_and_copy_time(uint index, ulong ranges,
+ ha_rows rows,
+ ulonglong blocks)
+ {
+ IO_AND_CPU_COST cost= ha_keyread_time(index, ranges, rows, blocks);
+ cost.cpu+= (double) rows * KEY_COPY_COST;
+ return cost;
+ }
+
+ inline IO_AND_CPU_COST ha_keyread_and_compare_time(uint index, ulong ranges,
+ ha_rows rows,
+ ulonglong blocks)
+ {
+ IO_AND_CPU_COST cost= ha_keyread_time(index, ranges, rows, blocks);
+ cost.cpu+= (double) rows * (KEY_COPY_COST + WHERE_COST);
+ return cost;
+ }
+
+ IO_AND_CPU_COST ha_keyread_clustered_time(uint index,
+ ulong ranges,
+ ha_rows rows,
+ ulonglong blocks);
+ /*
+ Time for a full table index scan (without copy or compare cost).
+ To be overrided by engines, sql level should use ha_key_scan_time().
+ Note that IO_AND_CPU_COST does not include avg_io_cost() !
+ */
+protected:
+ virtual IO_AND_CPU_COST key_scan_time(uint index, ha_rows rows)
+ {
+ return keyread_time(index, 1, MY_MAX(rows, 1), 0);
+ }
+public:
+
+ /* Cost of doing a full index scan */
+ inline IO_AND_CPU_COST ha_key_scan_time(uint index, ha_rows rows)
+ {
+ IO_AND_CPU_COST cost= key_scan_time(index, rows);
+ cost.cpu+= (INDEX_SCAN_SETUP_COST + KEY_LOOKUP_COST +
+ (double) rows * (KEY_NEXT_FIND_COST + KEY_COPY_COST));
+ return cost;
+ }
+
+ /*
+ Cost of doing a full index scan with record copy and compare
+ @param rows Rows from stat tables
+ */
+ inline IO_AND_CPU_COST ha_key_scan_and_compare_time(uint index, ha_rows rows)
+ {
+ IO_AND_CPU_COST cost= ha_key_scan_time(index, rows);
+ cost.cpu+= (double) rows * WHERE_COST;
+ return cost;
+ }
virtual const key_map *keys_to_use_for_scanning() { return &key_map_empty; }
@@ -3921,7 +4260,7 @@ public:
virtual ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param,
uint n_ranges, uint *bufsz,
- uint *mrr_mode,
+ uint *mrr_mode, ha_rows limit,
Cost_estimate *cost);
virtual ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys,
uint key_parts, uint *bufsz,
@@ -3930,6 +4269,13 @@ public:
uint n_ranges, uint mrr_mode,
HANDLER_BUFFER *buf);
virtual int multi_range_read_next(range_id_t *range_info);
+private:
+ inline void calculate_costs(Cost_estimate *cost, uint keyno,
+ uint ranges, uint multi_row_ranges, uint flags,
+ ha_rows total_rows,
+ ulonglong io_blocks,
+ ulonglong unassigned_single_point_ranges);
+public:
/*
Return string representation of the MRR plan.
@@ -4139,7 +4485,7 @@ public:
@return The handler error code or zero for success.
*/
virtual int
- get_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list)
+ get_foreign_key_list(const THD *thd, List<FOREIGN_KEY_INFO> *f_key_list)
{ return 0; }
/**
Get the list of foreign keys referencing this table.
@@ -4153,7 +4499,7 @@ public:
@return The handler error code or zero for success.
*/
virtual int
- get_parent_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list)
+ get_parent_foreign_key_list(const THD *thd, List<FOREIGN_KEY_INFO> *f_key_list)
{ return 0; }
virtual uint referenced_by_foreign_key() { return 0;}
virtual void init_table_handle_for_HANDLER()
@@ -4225,8 +4571,7 @@ public:
than lock_count() claimed. This can happen when the MERGE children
are not attached when this is called from another thread.
*/
- virtual THR_LOCK_DATA **store_lock(THD *thd,
- THR_LOCK_DATA **to,
+ virtual THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
enum thr_lock_type lock_type)=0;
/** Type of table for caching query */
@@ -4335,6 +4680,7 @@ public:
For a clustered (primary) key, the following should also hold:
index_flags() should contain HA_CLUSTERED_INDEX
+ index_flags() should not contain HA_KEYREAD_ONLY or HA_DO_RANGE_FILTER_PUSHDOWN
table_flags() should contain HA_TABLE_SCAN_ON_INDEX
For a reference key the following should also hold:
@@ -4345,20 +4691,9 @@ public:
*/
/* The following code is for primary keys */
- bool pk_is_clustering_key(uint index) const
- {
- /*
- We have to check for MAX_INDEX as table->s->primary_key can be
- MAX_KEY in the case where there is no primary key.
- */
- return index != MAX_KEY && is_clustering_key(index);
- }
+ inline bool pk_is_clustering_key(uint index) const;
/* Same as before but for other keys, in which case we can skip the check */
- bool is_clustering_key(uint index) const
- {
- DBUG_ASSERT(index != MAX_KEY);
- return (index_flags(index, 0, 1) & HA_CLUSTERED_INDEX);
- }
+ inline bool is_clustering_key(uint index) const;
virtual int cmp_ref(const uchar *ref1, const uchar *ref2)
{
@@ -4441,7 +4776,11 @@ public:
virtual void cancel_pushed_rowid_filter()
{
pushed_rowid_filter= NULL;
- rowid_filter_is_active= false;
+ if (rowid_filter_is_active)
+ {
+ rowid_filter_is_active= false;
+ rowid_filter_changed();
+ }
}
virtual void disable_pushed_rowid_filter()
@@ -4449,10 +4788,14 @@ public:
DBUG_ASSERT(pushed_rowid_filter != NULL &&
save_pushed_rowid_filter == NULL);
save_pushed_rowid_filter= pushed_rowid_filter;
- if (rowid_filter_is_active)
- save_rowid_filter_is_active= rowid_filter_is_active;
+ save_rowid_filter_is_active= rowid_filter_is_active;
pushed_rowid_filter= NULL;
- rowid_filter_is_active= false;
+
+ if (rowid_filter_is_active)
+ {
+ rowid_filter_is_active= false;
+ rowid_filter_changed();
+ }
}
virtual void enable_pushed_rowid_filter()
@@ -4460,12 +4803,17 @@ public:
DBUG_ASSERT(save_pushed_rowid_filter != NULL &&
pushed_rowid_filter == NULL);
pushed_rowid_filter= save_pushed_rowid_filter;
+ save_pushed_rowid_filter= NULL;
if (save_rowid_filter_is_active)
+ {
rowid_filter_is_active= true;
- save_pushed_rowid_filter= NULL;
+ rowid_filter_changed();
+ }
}
virtual bool rowid_filter_push(Rowid_filter *rowid_filter) { return true; }
+ /* Signal that rowid filter may have been enabled / disabled */
+ virtual void rowid_filter_changed() {}
/* Needed for partition / spider */
virtual TABLE_LIST *get_next_global_for_child() { return NULL; }
@@ -4765,8 +5113,7 @@ public:
bool check_table_binlog_row_based();
bool prepare_for_row_logging();
int prepare_for_insert(bool do_create);
- int binlog_log_row(TABLE *table,
- const uchar *before_record,
+ int binlog_log_row(const uchar *before_record,
const uchar *after_record,
Log_func *log_func);
@@ -4804,7 +5151,6 @@ private:
}
}
-private:
bool check_old_types() const;
void mark_trx_read_write_internal();
bool check_table_binlog_row_based_internal();
@@ -4823,7 +5169,13 @@ protected:
However, engines that implement read_range_XXX() (like MariaRocks)
or embed other engines (like ha_partition) may need to call these also
*/
+ /*
+ Increment statistics. As a side effect increase accessed_rows_and_keys
+ and checks if lex->limit_rows_examined_cnt is reached
+ */
inline void increment_statistics(ulong SSV::*offset) const;
+ /* Same as increment_statistics but doesn't increase accessed_rows_and_keys */
+ inline void fast_increment_statistics(ulong SSV::*offset) const;
inline void decrement_statistics(ulong SSV::*offset) const;
private:
@@ -5082,7 +5434,7 @@ public:
ha_share= arg_ha_share;
return false;
}
- void set_table(TABLE* table_arg) { table= table_arg; }
+ inline void set_table(TABLE* table_arg);
int get_lock_type() const { return m_lock_type; }
public:
/* XXX to be removed, see ha_partition::partition_ht() */
@@ -5143,11 +5495,21 @@ public:
file system) and the storage is not HA_FILE_BASED, we need to provide
a lowercase file name for the engine.
*/
- inline bool needs_lower_case_filenames()
+ inline bool needs_lower_case_filenames() const
{
return (lower_case_table_names == 2 && !(ha_table_flags() & HA_FILE_BASED));
}
+ Lex_cstring get_canonical_filename(const Lex_cstring &path,
+ Table_path_buffer *tmp_path)
+ const;
+
+ bool is_canonical_filename(const LEX_CSTRING &path) const
+ {
+ Table_path_buffer cpath;
+ return !strcmp(path.str, get_canonical_filename(path, &cpath).str);
+ }
+
bool log_not_redoable_operation(const char *operation);
protected:
@@ -5155,6 +5517,12 @@ protected:
void set_ha_share_ptr(Handler_share *arg_ha_share);
void lock_shared_ha_data();
void unlock_shared_ha_data();
+
+ /*
+ Mroonga needs to call some xxx_time() directly for it's internal handler
+ methods
+ */
+ friend class ha_mroonga;
};
#include "multi_range_read.h"
@@ -5271,7 +5639,7 @@ public:
};
int ha_discover_table(THD *thd, TABLE_SHARE *share);
-int ha_discover_table_names(THD *thd, LEX_CSTRING *db, MY_DIR *dirp,
+int ha_discover_table_names(THD *thd, const LEX_CSTRING *db, MY_DIR *dirp,
Discovered_table_list *result, bool reusable);
bool ha_table_exists(THD *thd, const LEX_CSTRING *db,
const LEX_CSTRING *table_name,
@@ -5323,8 +5691,7 @@ void trans_register_ha(THD *thd, bool all, handlerton *ht,
#define trans_need_2pc(thd, all) ((total_ha_2pc > 1) && \
!((all ? &thd->transaction.all : &thd->transaction.stmt)->no_2pc))
-const char *get_canonical_filename(handler *file, const char *path,
- char *tmp_path);
+
void commit_checkpoint_notify_ha(void *cookie);
inline const LEX_CSTRING *table_case_name(HA_CREATE_INFO *info, const LEX_CSTRING *name)
@@ -5332,11 +5699,6 @@ inline const LEX_CSTRING *table_case_name(HA_CREATE_INFO *info, const LEX_CSTRIN
return ((lower_case_table_names == 2 && info->alias.str) ? &info->alias : name);
}
-typedef bool Log_func(THD*, TABLE*, bool, const uchar*, const uchar*);
-int binlog_log_row(TABLE* table,
- const uchar *before_record,
- const uchar *after_record,
- Log_func *log_func);
/**
@def MYSQL_TABLE_IO_WAIT
@@ -5429,4 +5791,10 @@ uint ha_count_rw_2pc(THD *thd, bool all);
uint ha_check_and_coalesce_trx_read_only(THD *thd, Ha_trx_info *ha_list,
bool all);
+inline void Cost_estimate::reset(handler *file)
+{
+ reset();
+ avg_io_cost= file->DISK_READ_COST * file->DISK_READ_RATIO;
+}
+
#endif /* HANDLER_INCLUDED */
diff --git a/sql/item.cc b/sql/item.cc
index aacacaa9..1e3f7e8e 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -43,6 +43,7 @@
// RESOLVED_AGAINST_ALIAS, ...
#include "sql_expression_cache.h"
#include "sql_lex.h" // empty_clex_str
+#include "my_json_writer.h" // for dbug_print_opt_trace()
const String my_null_string("NULL", 4, default_charset_info);
const String my_default_string("DEFAULT", 7, default_charset_info);
@@ -412,7 +413,7 @@ int Item::save_str_value_in_field(Field *field, String *result)
Item::Item(THD *thd):
- name(null_clex_str), orig_name(0), is_expensive_cache(-1)
+ name(null_clex_str), orig_name(null_clex_str), is_expensive_cache(-1)
{
DBUG_ASSERT(thd);
base_flags= item_base_t::FIXED;
@@ -445,7 +446,7 @@ Item::Item(THD *thd):
*/
Item::Item():
- name(null_clex_str), orig_name(0), is_expensive_cache(-1)
+ name(null_clex_str), orig_name(null_clex_str), is_expensive_cache(-1)
{
DBUG_ASSERT(!mysqld_server_started); // Created early
base_flags= item_base_t::FIXED;
@@ -556,11 +557,8 @@ void Item::cleanup()
DBUG_PRINT("enter", ("this: %p", this));
marker= MARKER_UNUSED;
join_tab_idx= MAX_TABLES;
- if (orig_name)
- {
- name.str= orig_name;
- name.length= strlen(orig_name);
- }
+ if (orig_name.str)
+ name= orig_name;
DBUG_VOID_RETURN;
}
@@ -1568,7 +1566,7 @@ bool Item_field::check_vcol_func_processor(void *arg)
uint r= VCOL_FIELD_REF;
context= 0;
vcol_func_processor_result *res= (vcol_func_processor_result *) arg;
- if (res && res->alter_info)
+ if (res->alter_info)
r|= res->alter_info->check_vcol_field(this);
else if (field)
{
@@ -3281,9 +3279,6 @@ LEX_CSTRING Item_ident::full_name_cstring() const
void Item_ident::print(String *str, enum_query_type query_type)
{
THD *thd= current_thd;
- char d_name_buff[MAX_ALIAS_NAME], t_name_buff[MAX_ALIAS_NAME];
- LEX_CSTRING d_name= db_name;
- LEX_CSTRING t_name= table_name;
bool use_table_name= table_name.str && table_name.str[0];
bool use_db_name= use_table_name && db_name.str && db_name.str[0] &&
!alias_name_used;
@@ -3324,32 +3319,18 @@ void Item_ident::print(String *str, enum_query_type query_type)
return;
}
- if (lower_case_table_names== 1 ||
- (lower_case_table_names == 2 && !alias_name_used))
- {
- if (use_table_name)
- {
- strmov(t_name_buff, table_name.str);
- my_casedn_str(files_charset_info, t_name_buff);
- t_name= Lex_cstring_strlen(t_name_buff);
- }
- if (use_db_name)
- {
- strmov(d_name_buff, db_name.str);
- my_casedn_str(files_charset_info, d_name_buff);
- d_name= Lex_cstring_strlen(d_name_buff);
- }
- }
+ bool casedn= lower_case_table_names== 1 ||
+ (lower_case_table_names == 2 && !alias_name_used);
if (use_db_name)
{
- append_identifier(thd, str, d_name.str, (uint) d_name.length);
+ append_identifier_opt_casedn(thd, str, db_name, casedn);
str->append('.');
DBUG_ASSERT(use_table_name);
}
if (use_table_name)
{
- append_identifier(thd, str, t_name.str, (uint) t_name.length);
+ append_identifier_opt_casedn(thd, str, table_name, casedn);
str->append('.');
}
append_identifier(thd, str, &field_name);
@@ -5474,7 +5455,7 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list)
LEX_CSTRING field_name;
ORDER *found_group= NULL;
int found_match_degree= 0;
- char name_buff[SAFE_NAME_LEN+1];
+ IdentBuffer<SAFE_NAME_LEN> db_name_buff;
if (find_item->type() == Item::FIELD_ITEM ||
find_item->type() == Item::REF_ITEM)
@@ -5489,9 +5470,7 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list)
if (db_name.str && lower_case_table_names)
{
/* Convert database to lower case for comparison */
- strmake_buf(name_buff, db_name.str);
- my_casedn_str(files_charset_info, name_buff);
- db_name= Lex_cstring_strlen(name_buff);
+ db_name= db_name_buff.copy_casedn(db_name).to_lex_cstring();
}
DBUG_ASSERT(field_name.str != 0);
@@ -6479,6 +6458,24 @@ Item_equal *Item_field::find_item_equal(COND_EQUAL *cond_equal)
}
+/*
+ Check if field is is equal to current field or any of the fields in
+ item_equal
+*/
+
+bool Item_field::contains(Field *field_arg)
+{
+ if (field == field_arg)
+ return 1;
+ /*
+ Check if there is a multiple equality that allows to infer that field
+ (see also: compute_part_of_sort_key_for_equals)
+ */
+ if (item_equal && item_equal->contains(field_arg))
+ return 1;
+ return 0;
+}
+
/**
Set a pointer to the multiple equality the field reference belongs to
(if any).
@@ -6664,7 +6661,7 @@ String *Item::check_well_formed_result(String *str, bool send_error)
char hexbuf[7];
uint diff= str->length() - wlen;
set_if_smaller(diff, 3);
- octet2hex(hexbuf, str->ptr() + wlen, diff);
+ octet2hex(hexbuf, (uchar*)str->ptr() + wlen, diff);
if (send_error)
{
my_error(ER_INVALID_CHARACTER_STRING, MYF(0),
@@ -6716,7 +6713,7 @@ String_copier_for_item::copy_with_warn(CHARSET_INFO *dstcs, String *dst,
char buf[16];
int mblen= srccs->charlen(pos, src + src_length);
DBUG_ASSERT(mblen > 0 && mblen * 2 + 1 <= (int) sizeof(buf));
- octet2hex(buf, pos, mblen);
+ octet2hex(buf, (uchar*)pos, mblen);
push_warning_printf(m_thd, Sql_condition::WARN_LEVEL_WARN,
ER_CANNOT_CONVERT_CHARACTER,
ER_THD(m_thd, ER_CANNOT_CONVERT_CHARACTER),
@@ -7073,7 +7070,8 @@ Item *Item_int::clone_item(THD *thd)
}
-void Item_datetime::set(longlong packed, enum_mysql_timestamp_type ts_type)
+void Item_datetime::set_from_packed(longlong packed,
+ enum_mysql_timestamp_type ts_type)
{
unpack_time(packed, &ltime, ts_type);
}
@@ -7089,6 +7087,16 @@ longlong Item_datetime::val_int()
return TIME_to_ulonglong(&ltime);
}
+void Item_datetime::print(String *str, enum_query_type query_type)
+{
+ Datetime dt(current_thd, this);
+ String dt_str;
+ dt.to_string(&dt_str, decimals);
+ str->append('\'');
+ str->append(dt_str);
+ str->append('\'');
+}
+
int Item_decimal::save_in_field(Field *field, bool no_conversions)
{
field->set_notnull();
@@ -7457,6 +7465,17 @@ void Item_datetime_literal::print(String *str, enum_query_type query_type)
}
+void Item_timestamp_literal::print(String *str, enum_query_type query_type)
+{
+ str->append(STRING_WITH_LEN("TIMESTAMP/*WITH LOCAL TIME ZONE*/'"));
+ char buf[MAX_DATE_STRING_REP_LENGTH];
+ Datetime dt= m_value.to_datetime(current_thd);
+ int length= my_datetime_to_str(dt.get_mysql_time(), buf, decimals);
+ str->append(buf, length);
+ str->append('\'');
+}
+
+
Item *Item_datetime_literal::clone_item(THD *thd)
{
return new (thd->mem_root) Item_datetime_literal(thd, &cached_time, decimals);
@@ -11009,6 +11028,25 @@ table_map Item_direct_view_ref::not_null_tables() const
return get_null_ref_table()->map;
}
+void Item_direct_view_ref::print(String *str, enum_query_type query_type)
+{
+ /*
+ If the view/derived table was not merged then this field name must
+ be complemented with the view name/derived table alias.
+ For example, for "SELECT a FROM (SELECT a FROM t1) q" field `a` in the
+ select list must be printed as `q`.`a`.
+ Ancestor class Item_ident contains the correct table_name for that case.
+ But if the view was merged then the initial `q` does not make sense
+ any more so print the Item_ref contents. Field `a` will be printed
+ as `t1`.`a` then
+ */
+ if (!view->merged)
+ Item_ident::print(str, query_type);
+ else
+ Item_ref::print(str, query_type);
+
+}
+
/*
we add RAND_TABLE_BIT to prevent moving this item from HAVING to WHERE
*/
@@ -11047,6 +11085,29 @@ const char *dbug_print_item(Item *item)
return "Couldn't fit into buffer";
}
+
+/*
+ Return the optimizer trace collected so far for the current thread.
+*/
+
+const char *dbug_print_opt_trace()
+{
+ if (current_thd)
+ {
+ if (current_thd->opt_trace.is_started())
+ {
+ String *s= const_cast<String *>(current_thd->opt_trace
+ .get_current_json()->output.get_string());
+ return s->c_ptr();
+ }
+ else
+ return "Trace empty";
+ }
+ else
+ return "No Thread";
+}
+
+
const char *dbug_print_select(SELECT_LEX *sl)
{
char *buf= dbug_item_print_buf;
diff --git a/sql/item.h b/sql/item.h
index be41878a..d7df8670 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -1052,7 +1052,7 @@ public:
LEX_CSTRING name; /* Name of item */
/* Original item name (if it was renamed)*/
- const char *orig_name;
+ LEX_CSTRING orig_name;
/* All common bool variables for an Item is stored here */
item_base_t base_flags;
@@ -2517,6 +2517,10 @@ public:
{ return this; }
virtual Item *multiple_equality_transformer(THD *thd, uchar *arg)
{ return this; }
+ virtual Item* varchar_upper_cmp_transformer(THD *thd, uchar *arg)
+ { return this; }
+ virtual Item* date_conds_transformer(THD *thd, uchar *arg)
+ { return this; }
virtual bool expr_cache_is_needed(THD *) { return FALSE; }
virtual Item *safe_charset_converter(THD *thd, CHARSET_INFO *tocs);
bool needs_charset_converter(uint32 length, CHARSET_INFO *tocs) const
@@ -3574,8 +3578,9 @@ public:
*/
bool collect_outer_ref_processor(void *arg) override;
friend bool insert_fields(THD *thd, Name_resolution_context *context,
- const char *db_name,
- const char *table_name, List_iterator<Item> *it,
+ const LEX_CSTRING &db_name,
+ const LEX_CSTRING &table_name,
+ List_iterator<Item> *it,
bool any_privileges, bool returning_field);
};
@@ -3796,6 +3801,7 @@ public:
Item_equal *get_item_equal() override { return item_equal; }
void set_item_equal(Item_equal *item_eq) override { item_equal= item_eq; }
Item_equal *find_item_equal(COND_EQUAL *cond_equal) override;
+ bool contains(Field *field);
Item* propagate_equal_fields(THD *, const Context &, COND_EQUAL *) override;
Item *replace_equal_field(THD *thd, uchar *arg) override;
uint32 max_display_length() const override
@@ -4521,15 +4527,24 @@ protected:
MYSQL_TIME ltime;
public:
Item_datetime(THD *thd): Item_int(thd, 0) { unsigned_flag=0; }
+ Item_datetime(THD *thd, const Datetime &dt, decimal_digits_t dec)
+ :Item_int(thd, 0),
+ ltime(*dt.get_mysql_time())
+ {
+ unsigned_flag= 0;
+ decimals= dec;
+ }
int save_in_field(Field *field, bool no_conversions) override;
longlong val_int() override;
double val_real() override { return (double)val_int(); }
- void set(longlong packed, enum_mysql_timestamp_type ts_type);
+ void set(const MYSQL_TIME *datetime) { ltime= *datetime; }
+ void set_from_packed(longlong packed, enum_mysql_timestamp_type ts_type);
bool get_date(THD *thd, MYSQL_TIME *to, date_mode_t fuzzydate) override
{
*to= ltime;
return false;
}
+ void print(String *str, enum_query_type query_type) override;
};
@@ -5045,9 +5060,23 @@ class Item_timestamp_literal: public Item_literal
public:
Item_timestamp_literal(THD *thd)
:Item_literal(thd)
- { }
+ {
+ collation= DTCollation_numeric();
+ }
+ Item_timestamp_literal(THD *thd,
+ const Timestamp_or_zero_datetime &value,
+ decimal_digits_t dec)
+ :Item_literal(thd),
+ m_value(value)
+ {
+ DBUG_ASSERT(value.is_zero_datetime() ||
+ !value.to_timestamp().fraction_remainder(dec));
+ collation= DTCollation_numeric();
+ decimals= dec;
+ }
const Type_handler *type_handler() const override
{ return &type_handler_timestamp2; }
+ void print(String *str, enum_query_type query_type) override;
int save_in_field(Field *field, bool) override
{
Timestamp_or_zero_datetime_native native(m_value, decimals);
@@ -5079,6 +5108,10 @@ public:
{
return m_value.to_native(to, decimals);
}
+ const Timestamp_or_zero_datetime &value() const
+ {
+ return m_value;
+ }
void set_value(const Timestamp_or_zero_datetime &value)
{
m_value= value;
@@ -6285,6 +6318,7 @@ public:
Item *field_transformer_for_having_pushdown(THD *, uchar *) override
{ return this; }
Item *remove_item_direct_ref() override { return this; }
+ void print(String *str, enum_query_type query_type) override;
};
@@ -7008,6 +7042,14 @@ private:
public:
/* Next in list of all Item_trigger_field's in trigger */
Item_trigger_field *next_trg_field;
+
+ /**
+ Pointer to the next list of Item_trigger_field objects. This pointer
+ is used to organize an intrusive list of lists of Item_trigger_field
+ objects managed by sp_head.
+ */
+ SQL_I_List<Item_trigger_field> *next_trig_field_list;
+
/* Pointer to Table_trigger_list object for table of this trigger */
Table_triggers_list *triggers;
/* Is this item represents row from NEW or OLD row ? */
@@ -7042,7 +7084,8 @@ Item_trigger_field(THD *thd, Name_resolution_context *context_arg,
const LEX_CSTRING &field_name_arg,
privilege_t priv, const bool ro)
:Item_field(thd, context_arg, field_name_arg),
- table_grants(NULL), next_trg_field(NULL), triggers(NULL),
+ table_grants(nullptr), next_trg_field(nullptr),
+ next_trig_field_list(nullptr), triggers(nullptr),
row_version(row_ver_arg), field_idx(NO_CACHED_FIELD_INDEX),
read_only (ro), original_privilege(priv), want_privilege(priv)
{
@@ -7870,7 +7913,7 @@ bool fix_escape_item(THD *thd, Item *escape_item, String *tmp_str,
inline bool Virtual_column_info::is_equal(const Virtual_column_info* vcol) const
{
return type_handler() == vcol->type_handler()
- && stored_in_db == vcol->is_stored()
+ && is_stored() == vcol->is_stored()
&& expr->eq(vcol->expr, true);
}
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 9d76c9e4..880634fc 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -392,6 +392,9 @@ static bool convert_const_to_int(THD *thd, Item_field *field_item,
This directly contradicts the manual (number and a string should
be compared as doubles), but seems to provide more
"intuitive" behavior in some cases (but less intuitive in others).
+
+ This method should be moved to Type_handler::convert_item_for_comparison()
+ eventually.
*/
void Item_func::convert_const_compared_to_int_field(THD *thd)
{
@@ -412,6 +415,43 @@ void Item_func::convert_const_compared_to_int_field(THD *thd)
}
+bool Item_func::aggregate_args2_for_comparison_with_conversion(
+ THD *thd,
+ Type_handler_hybrid_field_type *th)
+{
+ DBUG_ASSERT(arg_count >= 2);
+ for (bool done= false ; !done ; )
+ {
+ if (th->aggregate_for_comparison(func_name_cstring(), args, 2, false))
+ return true;
+ if (thd->lex->is_ps_or_view_context_analysis())
+ return false;
+ done= true;
+ for (uint subject= 0; subject < 2; subject++)
+ {
+ uint other_side= subject == 0 ? 1 : 0;
+ /* See comment in convert_const_to_int() */
+ if (!args[subject]->with_sum_func() &&
+ args[subject]->can_eval_in_optimize())
+ {
+ Item *item= th->type_handler()->convert_item_for_comparison(thd,
+ args[subject],
+ args[other_side]);
+ if (!item)
+ return true; // An error happened, e.g. EOM
+ if (item != args[subject])
+ {
+ thd->change_item_tree(&args[subject], item);
+ done= false; // Aggregate again, using the replacement item
+ break;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+
/*
Iterate through arguments and compare them to the original arguments
in "old_args". If some argument was replaced:
@@ -487,7 +527,7 @@ bool Item_bool_rowready_func2::fix_length_and_dec(THD *thd)
Item_args old_args(args[0], args[1]);
convert_const_compared_to_int_field(thd);
Type_handler_hybrid_field_type tmp;
- if (tmp.aggregate_for_comparison(func_name_cstring(), args, 2, false) ||
+ if (aggregate_args2_for_comparison_with_conversion(thd, &tmp) ||
tmp.type_handler()->Item_bool_rowready_func2_fix_length_and_dec(thd,
this))
{
@@ -2810,7 +2850,10 @@ Item_func_nullif::fix_length_and_dec(THD *thd)
set_maybe_null();
m_arg0= args[0];
convert_const_compared_to_int_field(thd);
- if (cmp.set_cmp_func(thd, this, &args[0], &args[1], true/*set_null*/))
+ Type_handler_hybrid_field_type tmp;
+ if (aggregate_args2_for_comparison_with_conversion(thd, &tmp) ||
+ cmp.set_cmp_func(thd, this, tmp.type_handler(),
+ &args[0], &args[1], true/*set_null*/))
return true;
/*
A special code for EXECUTE..PREPARE.
@@ -7970,3 +8013,4 @@ Item *Item_equal::multiple_equality_transformer(THD *thd, uchar *arg)
break;
}
}
+
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index 59cc5c5e..7bcb24d0 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -25,6 +25,7 @@
#include "item_func.h" /* Item_int_func, Item_bool_func */
#include "item.h"
+#include "opt_rewrite_date_cmp.h"
extern Item_result item_cmp_type(Item_result a,Item_result b);
inline Item_result item_cmp_type(const Item *a, const Item *b)
@@ -811,6 +812,9 @@ public:
friend class Arg_comparator;
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_func_eq>(thd, this); }
+ Item* date_conds_transformer(THD *thd, uchar *arg) override
+ { return do_date_conds_transformation(thd, this); }
+ Item* varchar_upper_cmp_transformer(THD *thd, uchar *arg) override;
};
class Item_func_equal final :public Item_bool_rowready_func2
@@ -860,6 +864,8 @@ public:
Item *negated_item(THD *thd) override;
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_func_ge>(thd, this); }
+ Item* date_conds_transformer(THD *thd, uchar *arg) override
+ { return do_date_conds_transformation(thd, this); }
};
@@ -880,6 +886,8 @@ public:
Item *negated_item(THD *thd) override;
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_func_gt>(thd, this); }
+ Item* date_conds_transformer(THD *thd, uchar *arg) override
+ { return do_date_conds_transformation(thd, this); }
};
@@ -900,6 +908,8 @@ public:
Item *negated_item(THD *thd) override;
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_func_le>(thd, this); }
+ Item* date_conds_transformer(THD *thd, uchar *arg) override
+ { return do_date_conds_transformation(thd, this); }
};
@@ -920,6 +930,8 @@ public:
Item *negated_item(THD *thd) override;
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_func_lt>(thd, this); }
+ Item* date_conds_transformer(THD *thd, uchar *arg) override
+ { return do_date_conds_transformation(thd, this); }
};
@@ -1613,7 +1625,7 @@ public:
{
packed_longlong *val= reinterpret_cast<packed_longlong*>(base)+pos;
Item_datetime *dt= static_cast<Item_datetime*>(item);
- dt->set(val->val, type_handler()->mysql_timestamp_type());
+ dt->set_from_packed(val->val, type_handler()->mysql_timestamp_type());
}
friend int cmp_longlong(void *cmp_arg, packed_longlong *a,packed_longlong *b);
};
@@ -2662,6 +2674,7 @@ public:
Item *in_predicate_to_in_subs_transformer(THD *thd, uchar *arg) override;
Item *in_predicate_to_equality_transformer(THD *thd, uchar *arg) override;
uint32 max_length_of_left_expr();
+ Item* varchar_upper_cmp_transformer(THD *thd, uchar *arg) override;
};
class cmp_item_row :public cmp_item
@@ -3083,6 +3096,7 @@ public:
bool is_const() const { return m_is_const; }
void set_const(bool arg) { m_is_const= arg; }
CHARSET_INFO * library_charset() const { return m_library_charset; }
+ void unset_flag(int flag) { m_library_flags&= ~flag; }
};
diff --git a/sql/item_create.cc b/sql/item_create.cc
index 156a6b3f..a347f49a 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -140,10 +140,11 @@ protected:
};
-class Create_func_aes_encrypt : public Create_func_arg2
+class Create_func_aes_encrypt : public Create_native_func
{
public:
- virtual Item *create_2_arg(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create_native(THD *thd, const LEX_CSTRING *name,
+ List<Item> *item_list);
static Create_func_aes_encrypt s_singleton;
@@ -153,10 +154,11 @@ protected:
};
-class Create_func_aes_decrypt : public Create_func_arg2
+class Create_func_aes_decrypt : public Create_native_func
{
public:
- virtual Item *create_2_arg(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create_native(THD *thd, const LEX_CSTRING *name,
+ List<Item> *item_list);
static Create_func_aes_decrypt s_singleton;
@@ -166,6 +168,20 @@ protected:
};
+class Create_func_kdf : public Create_native_func
+{
+public:
+ virtual Item *create_native(THD *thd, const LEX_CSTRING *name,
+ List<Item> *item_list);
+
+ static Create_func_kdf s_singleton;
+
+protected:
+ Create_func_kdf() = default;
+ virtual ~Create_func_kdf() = default;
+};
+
+
class Create_func_asin : public Create_func_arg1
{
public:
@@ -848,6 +864,19 @@ protected:
};
+class Create_func_format_pico_time : public Create_func_arg1
+{
+public:
+ virtual Item *create_1_arg(THD *thd, Item *arg1);
+
+ static Create_func_format_pico_time s_singleton;
+
+protected:
+ Create_func_format_pico_time() = default;
+ virtual ~Create_func_format_pico_time() = default;
+};
+
+
class Create_func_format : public Create_native_func
{
public:
@@ -1032,6 +1061,17 @@ protected:
virtual ~Create_func_json_normalize() = default;
};
+class Create_func_json_object_to_array : public Create_func_arg1
+{
+public:
+ virtual Item *create_1_arg(THD *thd, Item *arg1);
+
+ static Create_func_json_object_to_array s_singleton;
+
+protected:
+ Create_func_json_object_to_array() {}
+ virtual ~Create_func_json_object_to_array() {}
+};
class Create_func_json_equals : public Create_func_arg2
{
@@ -1426,6 +1466,56 @@ protected:
virtual ~Create_func_json_overlaps() {}
};
+class Create_func_json_schema_valid: public Create_func_arg2
+{
+public:
+ virtual Item *create_2_arg(THD *thd, Item *arg1, Item *arg2);
+
+ static Create_func_json_schema_valid s_singleton;
+
+protected:
+ Create_func_json_schema_valid() {}
+ virtual ~Create_func_json_schema_valid() {}
+};
+
+class Create_func_json_key_value : public Create_func_arg2
+{
+public:
+ virtual Item *create_2_arg(THD *thd, Item *arg1, Item *arg2);
+
+ static Create_func_json_key_value s_singleton;
+
+protected:
+ Create_func_json_key_value() = default;
+ virtual ~Create_func_json_key_value() = default;
+};
+
+
+class Create_func_json_array_intersect : public Create_func_arg2
+{
+public:
+ virtual Item *create_2_arg(THD *thd, Item *arg1, Item *arg2);
+
+ static Create_func_json_array_intersect s_singleton;
+
+protected:
+ Create_func_json_array_intersect() {}
+ virtual ~Create_func_json_array_intersect() {}
+};
+
+
+class Create_func_json_object_filter_keys : public Create_func_arg2
+{
+public:
+ virtual Item *create_2_arg(THD *thd, Item *arg1, Item *arg2);
+
+ static Create_func_json_object_filter_keys s_singleton;
+
+protected:
+ Create_func_json_object_filter_keys() {}
+ virtual ~Create_func_json_object_filter_keys() {}
+};
+
class Create_func_last_day : public Create_func_arg1
{
@@ -3088,18 +3178,86 @@ Create_func_addmonths::create_2_arg(THD *thd, Item *arg1, Item *arg2)
Create_func_aes_encrypt Create_func_aes_encrypt::s_singleton;
Item*
-Create_func_aes_encrypt::create_2_arg(THD *thd, Item *arg1, Item *arg2)
+Create_func_aes_encrypt::create_native(THD *thd, const LEX_CSTRING *name,
+ List<Item> *item_list)
{
- return new (thd->mem_root) Item_func_aes_encrypt(thd, arg1, arg2);
+ Item *a[4];
+ uint arg_count= 0;
+
+ if (item_list != NULL)
+ arg_count= item_list->elements;
+
+ for (uint i=0; i < MY_MIN(array_elements(a), arg_count); i++)
+ a[i]= item_list->pop();
+ switch (arg_count)
+ {
+ case 2:
+ return new (thd->mem_root) Item_func_aes_encrypt(thd, a[0], a[1]);
+ case 3:
+ return new (thd->mem_root) Item_func_aes_encrypt(thd, a[0], a[1], a[2]);
+ case 4:
+ return new (thd->mem_root) Item_func_aes_encrypt(thd, a[0], a[1], a[2], a[3]);
+ }
+ my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name->str);
+ return NULL;
}
Create_func_aes_decrypt Create_func_aes_decrypt::s_singleton;
Item*
-Create_func_aes_decrypt::create_2_arg(THD *thd, Item *arg1, Item *arg2)
+Create_func_aes_decrypt::create_native(THD *thd, const LEX_CSTRING *name,
+ List<Item> *item_list)
{
- return new (thd->mem_root) Item_func_aes_decrypt(thd, arg1, arg2);
+ Item *a[4];
+ uint arg_count= 0;
+
+ if (item_list != NULL)
+ arg_count= item_list->elements;
+
+ for (uint i=0; i < MY_MIN(array_elements(a), arg_count); i++)
+ a[i]= item_list->pop();
+ switch (arg_count)
+ {
+ case 2:
+ return new (thd->mem_root) Item_func_aes_decrypt(thd, a[0], a[1]);
+ case 3:
+ return new (thd->mem_root) Item_func_aes_decrypt(thd, a[0], a[1], a[2]);
+ case 4:
+ return new (thd->mem_root) Item_func_aes_decrypt(thd, a[0], a[1], a[2], a[3]);
+ }
+ my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name->str);
+ return NULL;
+}
+
+
+Create_func_kdf Create_func_kdf::s_singleton;
+
+Item*
+Create_func_kdf::create_native(THD *thd, const LEX_CSTRING *name,
+ List<Item> *item_list)
+{
+ Item *a[5];
+ uint arg_count= 0;
+
+ if (item_list != NULL)
+ arg_count= item_list->elements;
+
+ for (uint i=0; i < MY_MIN(array_elements(a), arg_count); i++)
+ a[i]= item_list->pop();
+ switch (arg_count)
+ {
+ case 2:
+ return new (thd->mem_root) Item_func_kdf(thd, a[0], a[1]);
+ case 3:
+ return new (thd->mem_root) Item_func_kdf(thd, a[0], a[1], a[2]);
+ case 4:
+ return new (thd->mem_root) Item_func_kdf(thd, a[0], a[1], a[2], a[3]);
+ case 5:
+ return new (thd->mem_root) Item_func_kdf(thd, a[0], a[1], a[2], a[3], a[4]);
+ }
+ my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name->str);
+ return NULL;
}
@@ -3836,6 +3994,15 @@ Create_func_floor::create_1_arg(THD *thd, Item *arg1)
}
+Create_func_format_pico_time Create_func_format_pico_time::s_singleton;
+
+Item*
+Create_func_format_pico_time::create_1_arg(THD *thd, Item *arg1)
+{
+ return new (thd->mem_root) Item_func_format_pico_time(thd, arg1);
+}
+
+
Create_func_format Create_func_format::s_singleton;
Item*
@@ -4038,6 +4205,15 @@ Create_func_json_normalize::create_1_arg(THD *thd, Item *arg1)
return new (thd->mem_root) Item_func_json_normalize(thd, arg1);
}
+Create_func_json_object_to_array Create_func_json_object_to_array::s_singleton;
+
+Item*
+Create_func_json_object_to_array::create_1_arg(THD *thd, Item *arg1)
+{
+ status_var_increment(thd->status_var.feature_json);
+ return new (thd->mem_root) Item_func_json_object_to_array(thd, arg1);
+}
+
Create_func_json_equals Create_func_json_equals::s_singleton;
@@ -4424,6 +4600,27 @@ Create_func_json_length::create_native(THD *thd, const LEX_CSTRING *name,
return func;
}
+Create_func_json_array_intersect Create_func_json_array_intersect::s_singleton;
+Item*
+Create_func_json_array_intersect::create_2_arg(THD *thd, Item *arg1, Item *arg2)
+{
+ if (unlikely( ( !arg1 || !arg2 ) )) // json, json
+ {
+ my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0));
+ }
+ status_var_increment(thd->status_var.feature_json);
+ return new (thd->mem_root) Item_func_json_array_intersect(thd, arg1, arg2);
+}
+
+Create_func_json_object_filter_keys Create_func_json_object_filter_keys::s_singleton;
+
+Item*
+Create_func_json_object_filter_keys::create_2_arg(THD *thd, Item *arg1, Item *arg2)
+{
+ status_var_increment(thd->status_var.feature_json);
+ return new (thd->mem_root) Item_func_json_object_filter_keys(thd, arg1, arg2);
+}
+
Create_func_json_merge Create_func_json_merge::s_singleton;
@@ -4650,6 +4847,24 @@ Create_func_last_insert_id::create_native(THD *thd, const LEX_CSTRING *name,
return func;
}
+Create_func_json_schema_valid Create_func_json_schema_valid::s_singleton;
+
+Item*
+Create_func_json_schema_valid::create_2_arg(THD *thd, Item *arg1, Item *arg2)
+{
+ status_var_increment(thd->status_var.feature_json);
+ return new (thd->mem_root) Item_func_json_schema_valid(thd, arg1, arg2);
+}
+
+Create_func_json_key_value Create_func_json_key_value::s_singleton;
+
+Item*
+Create_func_json_key_value::create_2_arg(THD *thd, Item *arg1, Item *arg2)
+{
+ status_var_increment(thd->status_var.feature_json);
+ return new (thd->mem_root) Item_func_json_key_value(thd, arg1, arg2);
+}
+
Create_func_lcase Create_func_lcase::s_singleton;
@@ -6093,6 +6308,7 @@ const Native_func_registry func_array[] =
{ { STRING_WITH_LEN("FIELD") }, BUILDER(Create_func_field)},
{ { STRING_WITH_LEN("FIND_IN_SET") }, BUILDER(Create_func_find_in_set)},
{ { STRING_WITH_LEN("FLOOR") }, BUILDER(Create_func_floor)},
+ { { STRING_WITH_LEN("FORMAT_PICO_TIME") }, BUILDER(Create_func_format_pico_time)},
{ { STRING_WITH_LEN("FORMAT") }, BUILDER(Create_func_format)},
{ { STRING_WITH_LEN("FOUND_ROWS") }, BUILDER(Create_func_found_rows)},
{ { STRING_WITH_LEN("FROM_BASE64") }, BUILDER(Create_func_from_base64)},
@@ -6109,6 +6325,7 @@ const Native_func_registry func_array[] =
{ { STRING_WITH_LEN("JSON_ARRAY") }, BUILDER(Create_func_json_array)},
{ { STRING_WITH_LEN("JSON_ARRAY_APPEND") }, BUILDER(Create_func_json_array_append)},
{ { STRING_WITH_LEN("JSON_ARRAY_INSERT") }, BUILDER(Create_func_json_array_insert)},
+ { { STRING_WITH_LEN("JSON_ARRAY_INTERSECT") }, BUILDER(Create_func_json_array_intersect)},
{ { STRING_WITH_LEN("JSON_COMPACT") }, BUILDER(Create_func_json_compact)},
{ { STRING_WITH_LEN("JSON_CONTAINS") }, BUILDER(Create_func_json_contains)},
{ { STRING_WITH_LEN("JSON_CONTAINS_PATH") }, BUILDER(Create_func_json_contains_path)},
@@ -6119,6 +6336,7 @@ const Native_func_registry func_array[] =
{ { STRING_WITH_LEN("JSON_EXISTS") }, BUILDER(Create_func_json_exists)},
{ { STRING_WITH_LEN("JSON_EXTRACT") }, BUILDER(Create_func_json_extract)},
{ { STRING_WITH_LEN("JSON_INSERT") }, BUILDER(Create_func_json_insert)},
+ { { STRING_WITH_LEN("JSON_KEY_VALUE") }, BUILDER(Create_func_json_key_value)},
{ { STRING_WITH_LEN("JSON_KEYS") }, BUILDER(Create_func_json_keys)},
{ { STRING_WITH_LEN("JSON_LENGTH") }, BUILDER(Create_func_json_length)},
{ { STRING_WITH_LEN("JSON_LOOSE") }, BUILDER(Create_func_json_loose)},
@@ -6129,15 +6347,19 @@ const Native_func_registry func_array[] =
{ { STRING_WITH_LEN("JSON_QUERY") }, BUILDER(Create_func_json_query)},
{ { STRING_WITH_LEN("JSON_QUOTE") }, BUILDER(Create_func_json_quote)},
{ { STRING_WITH_LEN("JSON_OBJECT") }, BUILDER(Create_func_json_object)},
+ { { STRING_WITH_LEN("JSON_OBJECT_FILTER_KEYS") }, BUILDER(Create_func_json_object_filter_keys)},
+ { { STRING_WITH_LEN("JSON_OBJECT_TO_ARRAY") }, BUILDER(Create_func_json_object_to_array)},
{ { STRING_WITH_LEN("JSON_OVERLAPS") }, BUILDER(Create_func_json_overlaps)},
{ { STRING_WITH_LEN("JSON_REMOVE") }, BUILDER(Create_func_json_remove)},
{ { STRING_WITH_LEN("JSON_REPLACE") }, BUILDER(Create_func_json_replace)},
+ { { STRING_WITH_LEN("JSON_SCHEMA_VALID") }, BUILDER(Create_func_json_schema_valid)},
{ { STRING_WITH_LEN("JSON_SET") }, BUILDER(Create_func_json_set)},
{ { STRING_WITH_LEN("JSON_SEARCH") }, BUILDER(Create_func_json_search)},
{ { STRING_WITH_LEN("JSON_TYPE") }, BUILDER(Create_func_json_type)},
{ { STRING_WITH_LEN("JSON_UNQUOTE") }, BUILDER(Create_func_json_unquote)},
{ { STRING_WITH_LEN("JSON_VALID") }, BUILDER(Create_func_json_valid)},
{ { STRING_WITH_LEN("JSON_VALUE") }, BUILDER(Create_func_json_value)},
+ { { STRING_WITH_LEN("KDF") }, BUILDER(Create_func_kdf)},
{ { STRING_WITH_LEN("LAST_DAY") }, BUILDER(Create_func_last_day)},
{ { STRING_WITH_LEN("LAST_INSERT_ID") }, BUILDER(Create_func_last_insert_id)},
{ { STRING_WITH_LEN("LCASE") }, BUILDER(Create_func_lcase)},
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 9743c9a2..4cd4b3b7 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -290,7 +290,6 @@ bool Item_func::check_argument_types_scalar(uint start, uint end) const
return false;
}
-
/*
Resolve references to table column for a function and its argument
@@ -384,6 +383,7 @@ Item_func::fix_fields(THD *thd, Item **ref)
return TRUE;
}
base_flags|= item_base_t::FIXED;
+
return FALSE;
}
@@ -7095,14 +7095,24 @@ longlong Item_func_nextval::val_int()
}
+bool Item_func_nextval::print_table_list_identifier(THD *thd, String *to) const
+{
+ if (table_list->db.str && table_list->db.str[0])
+ {
+ if (append_identifier_opt_casedn(thd, to, table_list->db,
+ lower_case_table_names) ||
+ to->append('.'))
+ return true;
+ }
+ return append_identifier_opt_casedn(thd, to, table_list->table_name,
+ lower_case_table_names);
+}
+
+
/* Print for nextval and lastval */
void Item_func_nextval::print(String *str, enum_query_type query_type)
{
- char d_name_buff[MAX_ALIAS_NAME], t_name_buff[MAX_ALIAS_NAME];
- LEX_CSTRING d_name= table_list->db;
- LEX_CSTRING t_name= table_list->table_name;
- bool use_db_name= d_name.str && d_name.str[0];
THD *thd= current_thd; // Don't trust 'table'
str->append(func_name_cstring());
@@ -7112,26 +7122,8 @@ void Item_func_nextval::print(String *str, enum_query_type query_type)
for next_val we assume that table_list has been updated to contain
the current db.
*/
+ print_table_list_identifier(thd, str);
- if (lower_case_table_names > 0)
- {
- strmake(t_name_buff, t_name.str, MAX_ALIAS_NAME-1);
- t_name.length= my_casedn_str(files_charset_info, t_name_buff);
- t_name.str= t_name_buff;
- if (use_db_name)
- {
- strmake(d_name_buff, d_name.str, MAX_ALIAS_NAME-1);
- d_name.length= my_casedn_str(files_charset_info, d_name_buff);
- d_name.str= d_name_buff;
- }
- }
-
- if (use_db_name)
- {
- append_identifier(thd, str, &d_name);
- str->append('.');
- }
- append_identifier(thd, str, &t_name);
str->append(')');
}
@@ -7223,10 +7215,6 @@ longlong Item_func_setval::val_int()
void Item_func_setval::print(String *str, enum_query_type query_type)
{
- char d_name_buff[MAX_ALIAS_NAME], t_name_buff[MAX_ALIAS_NAME];
- LEX_CSTRING d_name= table_list->db;
- LEX_CSTRING t_name= table_list->table_name;
- bool use_db_name= d_name.str && d_name.str[0];
THD *thd= current_thd; // Don't trust 'table'
str->append(func_name_cstring());
@@ -7236,26 +7224,8 @@ void Item_func_setval::print(String *str, enum_query_type query_type)
for next_val we assume that table_list has been updated to contain
the current db.
*/
+ print_table_list_identifier(thd, str);
- if (lower_case_table_names > 0)
- {
- strmake(t_name_buff, t_name.str, MAX_ALIAS_NAME-1);
- t_name.length= my_casedn_str(files_charset_info, t_name_buff);
- t_name.str= t_name_buff;
- if (use_db_name)
- {
- strmake(d_name_buff, d_name.str, MAX_ALIAS_NAME-1);
- d_name.length= my_casedn_str(files_charset_info, d_name_buff);
- d_name.str= d_name_buff;
- }
- }
-
- if (use_db_name)
- {
- append_identifier(thd, str, &d_name);
- str->append('.');
- }
- append_identifier(thd, str, &t_name);
str->append(',');
str->append_longlong(nextval);
str->append(',');
diff --git a/sql/item_func.h b/sql/item_func.h
index 749c8fc4..cdcbddba 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -83,6 +83,8 @@ protected:
return print_sql_mode_qualified_name(to, query_type, func_name_cstring());
}
+ bool aggregate_args2_for_comparison_with_conversion(THD *thd,
+ Type_handler_hybrid_field_type *th);
public:
// Print an error message for a builtin-schema qualified function call
@@ -110,6 +112,7 @@ public:
JSON_EXTRACT_FUNC, JSON_VALID_FUNC, ROWNUM_FUNC,
CASE_SEARCHED_FUNC, // Used by ColumnStore/Spider
CASE_SIMPLE_FUNC, // Used by ColumnStore/spider,
+ DATE_FUNC, YEAR_FUNC
};
/*
@@ -3875,10 +3878,12 @@ public:
}
bool set(const Type_handler *handler,
const Lex_length_and_dec_st & length_and_dec,
+ Sql_used *used,
+ const Charset_collation_map_st &map,
const Lex_column_charset_collation_attrs_st &cscl,
CHARSET_INFO *defcs)
{
- CHARSET_INFO *tmp= cscl.resolved_to_character_set(defcs);
+ CHARSET_INFO *tmp= cscl.resolved_to_character_set(used, map, defcs);
if (!tmp)
return true;
set(handler, length_and_dec, tmp);
@@ -4227,6 +4232,7 @@ class Item_func_nextval :public Item_longlong_func
protected:
TABLE_LIST *table_list;
TABLE *table;
+ bool print_table_list_identifier(THD *thd, String *to) const;
public:
Item_func_nextval(THD *thd, TABLE_LIST *table_list_arg):
Item_longlong_func(thd), table_list(table_list_arg) {}
diff --git a/sql/item_jsonfunc.cc b/sql/item_jsonfunc.cc
index 87197371..ed07ad4a 100644
--- a/sql/item_jsonfunc.cc
+++ b/sql/item_jsonfunc.cc
@@ -19,6 +19,11 @@
#include "sql_class.h"
#include "item.h"
#include "sql_parse.h" // For check_stack_overrun
+#include "json_schema_helper.h"
+
+static bool get_current_value(json_engine_t *, const uchar *&, size_t &);
+static int check_overlaps(json_engine_t *, json_engine_t *, bool);
+static int json_find_overlap_with_object(json_engine_t *, json_engine_t *, bool);
#ifndef DBUG_OFF
static int dbug_json_check_min_stack_requirement()
@@ -786,12 +791,13 @@ bool Json_engine_scan::check_and_get_value_scalar(String *res, int *error)
js_len= value_len;
}
-
return st_append_json(res, json_cs, js, js_len);
}
-bool Json_engine_scan::check_and_get_value_complex(String *res, int *error)
+bool Json_engine_scan::check_and_get_value_complex(String *res, int *error,
+ json_value_types
+ cur_value_type)
{
if (json_value_scalar(this))
{
@@ -808,6 +814,13 @@ bool Json_engine_scan::check_and_get_value_complex(String *res, int *error)
return true;
}
+ if (cur_value_type != JSON_VALUE_UNINITIALIZED &&
+ value_type != cur_value_type)
+ {
+ *error= 1;
+ return true;
+ }
+
res->set((const char *) value, (uint32)(s.c_str - tmp_value), s.cs);
return false;
}
@@ -2148,7 +2161,7 @@ return_null:
String *Item_func_json_array_insert::val_str(String *str)
{
json_engine_t je;
- String *js= args[0]->val_json(&tmp_js);
+ String *js= args[0]->val_str(&tmp_js);
uint n_arg, n_path;
THD *thd= current_thd;
@@ -4410,7 +4423,7 @@ bool Item_func_json_normalize::fix_length_and_dec(THD *thd)
left in the object that we no longer want to compare. In this case,
we want to skip the current item.
*/
-void json_skip_current_level(json_engine_t *js, json_engine_t *value)
+static void json_skip_current_level(json_engine_t *js, json_engine_t *value)
{
json_skip_level(js);
json_skip_level(value);
@@ -4418,7 +4431,7 @@ void json_skip_current_level(json_engine_t *js, json_engine_t *value)
/* At least one of the two arguments is a scalar. */
-bool json_find_overlap_with_scalar(json_engine_t *js, json_engine_t *value)
+static bool json_find_overlap_with_scalar(json_engine_t *js, json_engine_t *value)
{
if (json_value_scalar(value))
{
@@ -4470,7 +4483,7 @@ bool json_find_overlap_with_scalar(json_engine_t *js, json_engine_t *value)
array is object, then compare the two objects entirely. If they are
equal return true else return false.
*/
-bool json_compare_arr_and_obj(json_engine_t *js, json_engine_t *value)
+static bool json_compare_arr_and_obj(json_engine_t *js, json_engine_t *value)
{
st_json_engine_t loc_val= *value;
while (json_scan_next(js) == 0 && js->state == JST_VALUE)
@@ -4518,7 +4531,7 @@ bool json_compare_arrays_in_order(json_engine_t *js, json_engine_t *value)
}
-int json_find_overlap_with_array(json_engine_t *js, json_engine_t *value,
+static int json_find_overlap_with_array(json_engine_t *js, json_engine_t *value,
bool compare_whole)
{
if (value->value_type == JSON_VALUE_ARRAY)
@@ -4603,7 +4616,9 @@ int compare_nested_object(json_engine_t *js, json_engine_t *value)
return MY_TEST(result);
}
-int json_find_overlap_with_object(json_engine_t *js, json_engine_t *value,
+
+
+static int json_find_overlap_with_object(json_engine_t *js, json_engine_t *value,
bool compare_whole)
{
if (value->value_type == JSON_VALUE_OBJECT)
@@ -4759,7 +4774,7 @@ int json_find_overlap_with_object(json_engine_t *js, json_engine_t *value,
FALSE - If two json documents do not overlap
TRUE - if two json documents overlap
*/
-int check_overlaps(json_engine_t *js, json_engine_t *value, bool compare_whole)
+static int check_overlaps(json_engine_t *js, json_engine_t *value, bool compare_whole)
{
DBUG_EXECUTE_IF("json_check_min_stack_requirement",
return dbug_json_check_min_stack_requirement(););
@@ -4829,3 +4844,806 @@ bool Item_func_json_overlaps::fix_length_and_dec(THD *thd)
return Item_bool_func::fix_length_and_dec(thd);
}
+
+longlong Item_func_json_schema_valid::val_int()
+{
+ json_engine_t ve;
+ int is_valid= 1;
+
+ if (!schema_parsed)
+ {
+ null_value= 1;
+ return 0;
+ }
+
+ val= args[1]->val_json(&tmp_val);
+
+ if (!val)
+ {
+ null_value= 1;
+ return 0;
+ }
+ null_value= 0;
+
+ if (!val->length())
+ return 1;
+
+ json_scan_start(&ve, val->charset(), (const uchar *) val->ptr(),
+ (const uchar *) val->end());
+
+ if (json_read_value(&ve))
+ goto end;
+
+ if (!keyword_list.is_empty())
+ {
+ List_iterator <Json_schema_keyword> it(keyword_list);;
+ Json_schema_keyword* curr_keyword= NULL;
+ while ((curr_keyword=it++))
+ {
+ if (curr_keyword->validate(&ve, NULL, NULL))
+ {
+ is_valid= 0;
+ break;
+ }
+ }
+ }
+
+ if (is_valid && !ve.s.error && !json_scan_ended(&ve))
+ {
+ while (json_scan_next(&ve) == 0) /* no-op */;
+ }
+
+end:
+ if (unlikely(ve.s.error))
+ {
+ is_valid= 0;
+ report_json_error(val, &ve, 1);
+ }
+
+ return is_valid;
+}
+
+/*
+Idea behind implementation:
+JSON schema basically has same structure as that of json object, consisting of
+key-value pairs. So it can be parsed in the same manner as any json object.
+
+However, none of the keywords are mandatory, so making guess about the json value
+type based only on the keywords would be incorrect. Hence we need separate objects
+denoting each keyword.
+
+So during create_object_and_handle_keyword() we create appropriate objects
+based on the keywords and validate each of them individually on the json
+document by calling respective validate() function if the type matches.
+If any of them fails, return false, else return true.
+*/
+bool Item_func_json_schema_valid::fix_length_and_dec(THD *thd)
+{
+ json_engine_t je;
+ bool res= 0, is_schema_constant= args[0]->const_item();
+
+ String *js= NULL;
+
+ if (!is_schema_constant)
+ {
+
+ my_error(ER_JSON_NO_VARIABLE_SCHEMA, MYF(0));
+ null_value= 1;
+ return 0;
+ }
+ null_value= args[0]->null_value;
+ js= args[0]->val_json(&tmp_js);
+
+ if (!js)
+ {
+ null_value= 1;
+ return 0;
+ }
+ json_scan_start(&je, js->charset(), (const uchar *) js->ptr(),
+ (const uchar *) js->ptr() + js->length());
+ if (!create_object_and_handle_keyword(thd, &je, &keyword_list,
+ &all_keywords))
+ schema_parsed= true;
+ else
+ schema_parsed= false;
+
+ /*
+ create_object_and_handle_keyword fails when either the json value for
+ keyword is invalid or when there is syntax error. Return NULL in both
+ these cases.
+ */
+ if (!schema_parsed)
+ {
+ if (je.s.error)
+ report_json_error(js, &je, 0);
+ set_maybe_null();
+ }
+
+ return res || Item_bool_func::fix_length_and_dec(thd);
+}
+
+void Item_func_json_schema_valid::cleanup()
+{
+ DBUG_ENTER("Item_func_json_schema_valid::cleanup");
+ Item_bool_func::cleanup();
+
+ List_iterator<Json_schema_keyword> it2(all_keywords);
+ Json_schema_keyword *curr_schema;
+ while ((curr_schema= it2++))
+ {
+ delete curr_schema;
+ curr_schema= nullptr;
+ }
+ all_keywords.empty();
+ keyword_list.empty();
+
+ DBUG_VOID_RETURN;
+}
+
+
+bool Item_func_json_key_value::get_key_value(json_engine_t *je, String *str)
+{
+ int level= je->stack_p;
+
+ if (str->append('['))
+ goto error_return;
+
+ while (json_scan_next(je) == 0 && je->stack_p >= level)
+ {
+ const uchar *key_start, *key_end, *value_begin;
+ size_t v_len;
+
+ switch (je->state)
+ {
+ case JST_KEY:
+
+ key_start= je->s.c_str;
+ do
+ {
+ key_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ if (unlikely(je->s.error))
+ goto error_return;
+
+ if (json_read_value(je))
+ goto error_return;
+
+ value_begin= je->value_begin;
+ if (json_value_scalar(je))
+ v_len= je->value_end - value_begin;
+ else
+ {
+ if (json_skip_level(je))
+ goto error_return;
+ v_len= je->s.c_str - value_begin;
+ }
+
+ size_t key_len= (size_t)(key_end-key_start);
+
+ if (str->append('{') ||
+ str->append('"') || str->append("key", 3) || str->append('"') ||
+ str->append(": ", 2) ||
+ str->append('"') || str->append((const char*)key_start, key_len) || str->append('"') ||
+ str->append(", ",2) ||
+ str->append('"') || str->append("value", 5) || str->append('"') ||
+ str->append(": ", 2) ||
+ str->append((const char*)value_begin, v_len) ||
+ str->append('}') ||
+ str->append(", ", 2))
+ goto error_return;
+ }
+ }
+
+ if (je->s.error)
+ goto error_return;
+
+ if (str->length() > 1)
+ {
+ /* remove the last comma and space. */
+ str->chop();
+ str->chop();
+ }
+
+ /* close the array */
+ if (str->append(']'))
+ goto error_return;
+
+ return false;
+
+error_return:
+ str->length(0);
+ return true;
+}
+
+String* Item_func_json_key_value::val_str(String *str)
+{
+ json_engine_t je;
+
+ if ((null_value= args[0]->null_value) ||
+ (null_value= args[1]->null_value))
+ {
+ goto return_null;
+ }
+
+ null_value= Json_path_extractor::extract(&tmp_str, args[0], args[1],
+ collation.collation);
+ if (null_value)
+ return NULL;
+
+ json_scan_start(&je, tmp_str.charset(), (const uchar *) tmp_str.ptr(),
+ (const uchar *) tmp_str.ptr() + tmp_str.length());
+ if (json_read_value(&je))
+ {
+ report_json_error(str, &je, 0);
+ goto return_null;
+ }
+
+ str->length(0);
+ if (get_key_value(&je, str))
+ {
+ report_json_error(str, &je, 0);
+ goto return_null;
+ }
+
+ return str;
+
+return_null:
+ null_value= 1;
+ return NULL;
+}
+
+
+bool Item_func_json_key_value::fix_length_and_dec(THD *thd)
+{
+ collation.set(args[0]->collation);
+
+ tmp_str.set("", 0, collation.collation);
+
+ max_length= args[0]->max_length*2;
+ set_constant_flag(args[1]->const_item());
+ set_maybe_null();
+
+ return FALSE;
+}
+
+
+static bool create_hash(json_engine_t *value, HASH *items, bool &hash_inited,
+ MEM_ROOT *hash_root)
+{
+ int level= value->stack_p;
+ if (my_hash_init(PSI_INSTRUMENT_ME, items, value->s.cs, 0, 0, 0,
+ (my_hash_get_key) get_key_name, NULL, 0))
+ return true;
+ hash_inited= true;
+
+ while (json_scan_next(value) == 0 && value->stack_p >= level)
+ {
+ const uchar *value_start= NULL;
+ size_t value_len= 0;
+ DYNAMIC_STRING norm_val;
+
+ if (json_read_value(value) ||
+ get_current_value(value, value_start, value_len) ||
+ init_dynamic_string(&norm_val, NULL, 0, 0))
+ return true;
+
+ if (json_normalize(&norm_val, (const char*) value_start,
+ value_len, value->s.cs))
+ {
+ dynstr_free(&norm_val);
+ return true;
+ }
+
+ char *new_entry= (char*)alloc_root(hash_root,
+ norm_val.length+1);
+ if (!new_entry)
+ {
+ dynstr_free(&norm_val);
+ return true;
+ }
+ else
+ {
+ strncpy(new_entry, norm_val.str, norm_val.length);
+ new_entry[norm_val.length]='\0';
+
+ dynstr_free(&norm_val);
+
+ if (my_hash_insert(items, (const uchar *) new_entry))
+ {
+ my_free(new_entry);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+
+/*
+ Get the starting pointer and length of the value of the current layer.
+ RETURN
+ FALSE - The function was successfully completed without errors.
+ TRUE - An error occurred while running.
+*/
+static bool get_current_value(json_engine_t *js, const uchar *&value_start,
+ size_t &value_len)
+{
+ value_start= js->value_begin;
+
+ if (json_value_scalar(js))
+ {
+ value_len= js->value_end - value_start;
+ }
+ else
+ {
+ if (json_skip_level(js))
+ return true;
+ value_len= js->s.c_str - value_start;
+ }
+ return false;
+}
+
+
+/*
+ If the outermost layer of JSON is an array,
+ the intersection of arrays is independent of order.
+ Create a hash containing all elements in the array,
+ itterate over another array and add the common elements
+ to the result.
+
+ RETURN
+ FALSE - if two array documents have intersection
+ TRUE - If two array documents do not have intersection
+*/
+static bool get_intersect_between_arrays(String *str, json_engine_t *value,
+ HASH items)
+{
+ bool res= true, has_value= false;
+ int level= value->stack_p;
+ String temp_str(0);
+
+ temp_str.append('[');
+ while (json_scan_next(value) == 0 && value->stack_p >= level)
+ {
+ const uchar *value_start= NULL;
+ size_t value_len= 0;
+ DYNAMIC_STRING norm_val;
+
+ if (json_read_value(value) ||
+ get_current_value(value, value_start, value_len) ||
+ init_dynamic_string(&norm_val, NULL, 0, 0))
+ goto error;
+
+ if (json_normalize(&norm_val, (const char*) value_start,
+ value_len, value->s.cs))
+ {
+ dynstr_free(&norm_val);
+ goto error;
+ }
+
+ char *new_entry= (char*)malloc(norm_val.length+1);
+ if (!new_entry)
+ {
+ dynstr_free(&norm_val);
+ goto error;
+ }
+ strncpy(new_entry, norm_val.str, norm_val.length);
+ new_entry[norm_val.length]='\0';
+
+ dynstr_free(&norm_val);
+
+ /*
+ If the same value is found in the hash table, add
+ that value to str. At the same time, update the number
+ of times the value appears in the hash table.
+ */
+ uchar * found= NULL;
+ if ((found= my_hash_search(&items,
+ (const uchar *) new_entry,
+ strlen(new_entry))))
+ {
+ has_value= true;
+ temp_str.append( (const char*) value_start, value_len);
+ temp_str.append(',');
+ if (my_hash_delete(&items, found))
+ {
+ free(new_entry);
+ goto error;
+ }
+ }
+ free(new_entry);
+ }
+
+ res= false;
+
+ if (has_value)
+ {
+ temp_str.chop(); /* remove last comma because there are no values after that. */
+ temp_str.append(']');
+ str->append(temp_str.ptr(), temp_str.length());
+ }
+
+error:
+ return res;
+}
+
+
+String* Item_func_json_array_intersect::val_str(String *str)
+{
+ DBUG_ASSERT(fixed());
+
+ json_engine_t je2, res_je, je1;
+ String *js2= args[1]->val_json(&tmp_js2), *js1= args[0]->val_json(&tmp_js1);
+
+ if (parse_for_each_row)
+ {
+ if (args[0]->null_value)
+ goto null_return;
+ if (hash_inited)
+ my_hash_free(&items);
+ if (root_inited)
+ free_root(&hash_root, MYF(0));
+ root_inited= false;
+ hash_inited= false;
+ prepare_json_and_create_hash(&je1, js1);
+ }
+
+ if (null_value || args[1]->null_value)
+ goto null_return;
+
+ str->set_charset(js2->charset());
+ str->length(0);
+
+ json_scan_start(&je2, js2->charset(), (const uchar *) js2->ptr(),
+ (const uchar *) js2->ptr() + js2->length());
+
+ if (json_read_value(&je2) || je2.value_type != JSON_VALUE_ARRAY)
+ goto error_return;
+
+ if (get_intersect_between_arrays(str, &je2, items))
+ goto error_return;
+
+ if (str->length())
+ {
+ json_scan_start(&res_je, str->charset(), (const uchar *) str->ptr(),
+ (const uchar *) str->ptr() + str->length());
+ str= &tmp_js1;
+ if (json_nice(&res_je, str, Item_func_json_format::LOOSE))
+ goto error_return;
+
+ null_value= 0;
+ return str;
+ }
+ else
+ {
+ goto null_return;
+ }
+
+error_return:
+ if (je2.s.error)
+ report_json_error(js2, &je2, 1);
+null_return:
+ null_value= 1;
+ return NULL;
+}
+
+void Item_func_json_array_intersect::prepare_json_and_create_hash(json_engine_t *je1, String *js)
+{
+ json_scan_start(je1, js->charset(), (const uchar *) js->ptr(),
+ (const uchar *) js->ptr() + js->length());
+ /*
+ Scan value uses the hash table to get the intersection of two arrays.
+ */
+
+ if (!root_inited)
+ init_alloc_root(PSI_NOT_INSTRUMENTED, &hash_root, 1024, 0, MYF(0));
+ root_inited= true;
+
+ if (json_read_value(je1) || je1->value_type != JSON_VALUE_ARRAY ||
+ create_hash(je1, &items, hash_inited, &hash_root))
+ {
+ if (je1->s.error)
+ report_json_error(js, je1, 0);
+ null_value= 1;
+ }
+
+ max_length= (args[0]->max_length < args[1]->max_length) ?
+ args[0]->max_length : args[1]->max_length;
+}
+
+bool Item_func_json_array_intersect::fix_length_and_dec(THD *thd)
+{
+ json_engine_t je1;
+ String *js1;
+
+ if (!args[0]->const_item())
+ {
+ if (args[1]->const_item())
+ {
+ std::swap(args[0], args[1]);
+ }
+ else
+ {
+ parse_for_each_row= true;
+ goto end;
+ }
+ }
+
+ js1= args[0]->val_json(&tmp_js1);
+ prepare_json_and_create_hash(&je1, js1);
+
+end:
+ set_maybe_null();
+ return FALSE;
+}
+
+
+static bool filter_keys(json_engine_t *je1, String *str, HASH items)
+{
+ int level= je1->stack_p;
+ String temp_str(0);
+ bool res= true, has_value= false;
+
+ temp_str.append('{');
+ while (json_scan_next(je1)==0 && level <= je1->stack_p)
+ {
+ switch(je1->state)
+ {
+ case JST_KEY:
+ {
+ const uchar *key_start= je1->s.c_str;
+ const uchar *key_end;
+ String str("", 0, je1->s.cs);
+ str.append('"');
+
+ do
+ {
+ key_end= je1->s.c_str;
+ } while (json_read_keyname_chr(je1) == 0);
+
+ if (unlikely(je1->s.error))
+ goto error;
+ if (json_read_value(je1))
+ goto error;
+
+ const uchar* value_start= NULL;
+ size_t value_len= 0;
+ if (get_current_value(je1, value_start, value_len))
+ goto error;
+
+ str.append((const char*)key_start, (size_t)(key_end-key_start));
+ str.append('"');
+ str.append('\0');
+
+ char *curr_key= (char*)malloc((size_t)(key_end-key_start+3));
+ strncpy(curr_key, str.ptr(), str.length());
+
+ if (my_hash_search(&items, (const uchar*)curr_key, strlen(curr_key)))
+ {
+ has_value= true;
+
+ temp_str.append('"');
+ temp_str.append((const char*)key_start, (size_t)(key_end-key_start));
+ temp_str.append('"');
+
+ temp_str.append(':');
+
+ temp_str.append((const char*)value_start, value_len);
+
+ temp_str.append(',');
+ }
+ free(curr_key);
+ }
+ }
+ }
+
+ res= false;
+
+ if (has_value)
+ {
+ temp_str.chop();
+ temp_str.append('}');
+ str->append(temp_str.ptr(), temp_str.length());
+ }
+
+error:
+ return res;
+}
+
+String* Item_func_json_object_filter_keys::val_str(String *str)
+{
+ DBUG_ASSERT(fixed());
+
+ json_engine_t je1, res_je;
+ String *js1= args[0]->val_json(&tmp_js1);
+
+ if (null_value || args[0]->null_value)
+ goto null_return;
+
+ str->set_charset(js1->charset());
+ str->length(0);
+
+ json_scan_start(&je1, js1->charset(),(const uchar *) js1->ptr(),
+ (const uchar *) js1->ptr() + js1->length());
+
+ if (json_read_value(&je1) || je1.value_type != JSON_VALUE_OBJECT)
+ goto error_return;
+
+ if(filter_keys(&je1, str, items))
+ goto null_return;
+
+ if (str->length())
+ {
+ json_scan_start(&res_je, str->charset(), (const uchar *) str->ptr(),
+ (const uchar *) str->ptr() + str->length());
+ str= &tmp_js1;
+ if (json_nice(&res_je, str, Item_func_json_format::LOOSE))
+ goto error_return;
+
+ null_value= 0;
+ return str;
+ }
+ else
+ {
+ goto null_return;
+ }
+
+
+error_return:
+ if (je1.s.error)
+ report_json_error(js1, &je1, 0);
+null_return:
+ null_value= 1;
+ return NULL;
+}
+
+
+bool Item_func_json_object_filter_keys::fix_length_and_dec(THD *thd)
+{
+ String *js2= args[1]->val_json(&tmp_js2);
+ json_engine_t je2;
+
+ if (args[1]->null_value)
+ {
+ null_value= 1;
+ return FALSE;
+ }
+
+ json_scan_start(&je2, js2->charset(),(const uchar *) js2->ptr(),
+ (const uchar *) js2->ptr() + js2->length());
+ if (!root_inited)
+ init_alloc_root(PSI_NOT_INSTRUMENTED, &hash_root, 1024, 0, MYF(0));
+ root_inited= true;
+
+ if (json_read_value(&je2) || je2.value_type != JSON_VALUE_ARRAY ||
+ create_hash(&je2, &items, hash_inited, &hash_root))
+ {
+ if (je2.s.error)
+ report_json_error(js2, &je2, 0);
+ null_value= 1;
+ return FALSE;
+ }
+
+ max_length= args[0]->max_length;
+ set_maybe_null();
+
+ return FALSE;
+}
+
+static bool convert_to_array(json_engine_t *je, String *str)
+{
+ int level= je->stack_p;
+ String temp_str(0);
+ temp_str.append('[');
+
+ while (json_scan_next(je)==0 && level <= je->stack_p)
+ {
+ switch(je->state)
+ {
+ case JST_KEY:
+ {
+ temp_str.append('[');
+
+ const uchar *key_start= je->s.c_str;
+ const uchar *key_end;
+
+ do
+ {
+ key_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ if (unlikely(je->s.error))
+ return true;
+
+ temp_str.append('"');
+ temp_str.append((const char*)key_start, (size_t)(key_end-key_start));
+ temp_str.append('"');
+
+ temp_str.append(',');
+
+ int v_len= 0;
+ const uchar *value= NULL;
+
+ if (json_read_value(je))
+ return true;
+ value= je->value_begin;
+ if (json_value_scalar(je))
+ v_len= (int)(je->value_end - value);
+ else
+ {
+ if (json_skip_level(je))
+ return true;
+ v_len= (int)(je->s.c_str - value);
+ }
+ temp_str.append((const char *) value, v_len);
+
+ temp_str.append(']');
+ temp_str.append(',');
+ }
+ }
+ }
+ if (je->s.error)
+ return true;
+
+ temp_str.chop(); /* remove the last comma. */
+ temp_str.append(']');
+ str->append(temp_str.ptr(), temp_str.length());
+ return false;
+}
+
+String* Item_func_json_object_to_array::val_str(String *str)
+{
+ DBUG_ASSERT(fixed());
+
+ json_engine_t je;
+ String *js1= args[0]->val_str(&tmp);
+
+ if (args[0]->null_value)
+ goto null_return;
+
+ str->set_charset(js1->charset());
+ str->length(0);
+
+ json_scan_start(&je, js1->charset(),(const uchar *) js1->ptr(),
+ (const uchar *) js1->ptr() + js1->length());
+
+ if (json_read_value(&je))
+ goto error_return;
+ if (je.value_type != JSON_VALUE_OBJECT)
+ goto null_return;
+
+ if (convert_to_array(&je, str))
+ goto error_return;
+
+ if (str->length())
+ {
+ json_scan_start(&je, str->charset(), (const uchar *) str->ptr(),
+ (const uchar *) str->ptr() + str->length());
+ str= &tmp;
+ if (json_nice(&je, str, Item_func_json_format::LOOSE))
+ goto error_return;
+
+ null_value= 0;
+ return str;
+ }
+ else
+ {
+ goto null_return;
+ }
+
+error_return:
+ if (je.s.error)
+ report_json_error(js1, &je, 0);
+null_return:
+ null_value= 1;
+ return NULL;
+}
+
+
+bool Item_func_json_object_to_array::fix_length_and_dec(THD *thd)
+{
+ max_length= args[0]->max_length + (args[0]->max_length/2);
+ set_maybe_null();
+ return FALSE;
+}
diff --git a/sql/item_jsonfunc.h b/sql/item_jsonfunc.h
index 1694013f..eb8b723e 100644
--- a/sql/item_jsonfunc.h
+++ b/sql/item_jsonfunc.h
@@ -25,6 +25,7 @@
#include "item_strfunc.h" // Item_str_func
#include "item_sum.h"
#include "sql_type_json.h"
+#include "json_schema.h"
class json_path_with_flags
{
@@ -47,19 +48,6 @@ void report_path_error_ex(const char *ps, json_path_t *p,
void report_json_error_ex(const char *js, json_engine_t *je,
const char *fname, int n_param,
Sql_condition::enum_warning_level lv);
-int check_overlaps(json_engine_t *js, json_engine_t *value, bool compare_whole);
-int json_find_overlap_with_object(json_engine_t *js,
- json_engine_t *value,
- bool compare_whole);
-void json_skip_current_level(json_engine_t *js, json_engine_t *value);
-bool json_find_overlap_with_scalar(json_engine_t *js, json_engine_t *value);
-bool json_compare_arrays_in_order_in_order(json_engine_t *js, json_engine_t *value);
-bool json_compare_arr_and_obj(json_engine_t *js, json_engine_t* value);
-int json_find_overlap_with_array(json_engine_t *js,
- json_engine_t *value,
- bool compare_whole);
-
-
class Json_engine_scan: public json_engine_t
{
@@ -73,7 +61,9 @@ public:
(const uchar *) str.end())
{ }
bool check_and_get_value_scalar(String *res, int *error);
- bool check_and_get_value_complex(String *res, int *error);
+ bool check_and_get_value_complex(String *res, int *error,
+ json_value_types cur_value_type=
+ JSON_VALUE_UNINITIALIZED);
};
@@ -226,7 +216,7 @@ public:
bool check_and_get_value(Json_engine_scan *je,
String *res, int *error) override
{
- return je->check_and_get_value_complex(res, error);
+ return je->check_and_get_value_complex(res, error, JSON_VALUE_UNINITIALIZED);
}
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_func_json_query>(thd, this); }
@@ -503,6 +493,25 @@ public:
};
+class Item_func_json_object_to_array: public Item_json_func
+{
+ protected:
+ String tmp;
+public:
+ Item_func_json_object_to_array(THD *thd, Item *a):
+ Item_json_func(thd, a) {}
+ String *val_str(String *) override;
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("json_object_to_array") };
+ return name;
+ }
+ bool fix_length_and_dec(THD *thd) override;
+ Item *get_copy(THD *thd) override
+ { return get_item_copy<Item_func_json_object_to_array>(thd, this); }
+};
+
+
class Item_func_json_length: public Item_long_func
{
bool check_arguments() const override
@@ -800,7 +809,8 @@ class Item_func_json_overlaps: public Item_bool_func
String tmp_val, *val;
public:
Item_func_json_overlaps(THD *thd, Item *a, Item *b):
- Item_bool_func(thd, a, b) {}
+ Item_bool_func(thd, a, b)
+ {}
LEX_CSTRING func_name_cstring() const override
{
static LEX_CSTRING name= {STRING_WITH_LEN("json_overlaps") };
@@ -812,4 +822,122 @@ public:
{ return get_item_copy<Item_func_json_overlaps>(thd, this); }
};
+class Item_func_json_schema_valid: public Item_bool_func
+{
+ String tmp_js;
+ bool schema_parsed;
+ String tmp_val, *val;
+ List<Json_schema_keyword> keyword_list;
+ List<Json_schema_keyword> all_keywords;
+
+public:
+ Item_func_json_schema_valid(THD *thd, Item *a, Item *b):
+ Item_bool_func(thd, a, b)
+ {
+ val= NULL;
+ schema_parsed= false;
+ set_maybe_null();
+ }
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("json_schema_valid") };
+ return name;
+ }
+ bool fix_length_and_dec(THD *thd) override;
+ longlong val_int() override;
+ Item *get_copy(THD *thd) override
+ { return get_item_copy<Item_func_json_schema_valid>(thd, this); }
+ void cleanup() override;
+};
+
+class Item_func_json_key_value: public Item_json_func,
+ public Json_path_extractor
+{
+
+ String tmp_str;
+
+public:
+ Item_func_json_key_value(THD *thd, Item *js, Item *i_path):
+ Item_json_func(thd, js, i_path) {}
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("json_key_value") };
+ return name;
+ }
+ bool fix_length_and_dec(THD *thd) override;
+ String *val_str(String *to) override;
+ bool check_and_get_value(Json_engine_scan *je,
+ String *res, int *error) override
+ {
+ return je->check_and_get_value_complex(res, error, JSON_VALUE_OBJECT);
+ }
+ bool get_key_value(json_engine_t *je, String *str);
+ Item *get_copy(THD *thd) override
+ { return get_item_copy<Item_func_json_key_value>(thd, this); }
+};
+
+
+
+class Item_func_json_array_intersect: public Item_str_func
+{
+protected:
+ String tmp_js1, tmp_js2;
+ bool hash_inited, root_inited;
+ HASH items;
+ MEM_ROOT hash_root;
+ bool parse_for_each_row;
+public:
+ Item_func_json_array_intersect(THD *thd, Item *a, Item *b):
+ Item_str_func(thd, a, b) { hash_inited= root_inited= parse_for_each_row= false; }
+ String *val_str(String *) override;
+ bool fix_length_and_dec(THD *thd) override;
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("json_array_intersect") };
+ return name;
+ }
+ Item *get_copy(THD *thd) override
+ { return get_item_copy<Item_func_json_array_intersect>(thd, this); }
+ void cleanup() override
+ {
+ Item_str_func::cleanup();
+ if (hash_inited)
+ my_hash_free(&items);
+ if (root_inited)
+ free_root(&hash_root, MYF(0));
+ }
+ void prepare_json_and_create_hash(json_engine_t *je1, String *js);
+};
+
+class Item_func_json_object_filter_keys: public Item_str_func
+{
+protected:
+ String tmp_js1, tmp_js2;
+ bool hash_inited, root_inited;
+ HASH items;
+ MEM_ROOT hash_root;
+public:
+ Item_func_json_object_filter_keys(THD *thd, Item *a, Item *b):
+ Item_str_func(thd, a, b) { hash_inited= root_inited= false; }
+ String *val_str(String *) override;
+ bool fix_length_and_dec(THD *thd) override;
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("json_object_filter_keys") };
+ return name;
+ }
+ Item *get_copy(THD *thd) override
+ { return get_item_copy<Item_func_json_object_filter_keys>(thd, this); }
+
+ void cleanup() override
+ {
+ Item_str_func::cleanup();
+ if (hash_inited)
+ my_hash_free(&items);
+ if (root_inited)
+ free_root(&hash_root, MYF(0));
+ }
+};
+
+
#endif /* ITEM_JSONFUNC_INCLUDED */
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 19e011d5..462a6d38 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -54,6 +54,11 @@ C_MODE_END
#include "sql_show.h" // append_identifier
#include <sql_repl.h>
#include "sql_statistics.h"
+#include "strfunc.h"
+
+#ifdef HAVE_hkdf
+#include <openssl/kdf.h>
+#endif
/* fmtlib include (https://fmt.dev/). */
#define FMT_STATIC_THOUSANDS_SEPARATOR ','
@@ -309,24 +314,54 @@ bool Item_func_sha2::fix_length_and_dec(THD *thd)
break;
default:
THD *thd= current_thd;
- push_warning_printf(thd,
- Sql_condition::WARN_LEVEL_WARN,
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
ER_WRONG_PARAMETERS_TO_NATIVE_FCT,
- ER_THD(thd, ER_WRONG_PARAMETERS_TO_NATIVE_FCT),
- "sha2");
+ ER_THD(thd, ER_WRONG_PARAMETERS_TO_NATIVE_FCT), "sha2");
}
return FALSE;
}
+const char *block_encryption_mode_values[]= {
+ "aes-128-ecb", "aes-192-ecb", "aes-256-ecb",
+ "aes-128-cbc", "aes-192-cbc", "aes-256-cbc",
+ "aes-128-ctr", "aes-192-ctr", "aes-256-ctr",
+ NullS };
+TYPELIB block_encryption_mode_typelib= {9, 0, block_encryption_mode_values, 0};
+static inline uint block_encryption_mode_to_key_length(ulong bem)
+{ return (bem % 3 + 2) * 64; }
+static inline my_aes_mode block_encryption_mode_to_aes_mode(ulong bem)
+{ return (my_aes_mode)(bem / 3); }
+
/* Implementation of AES encryption routines */
+int Item_aes_crypt::parse_mode()
+{
+ StringBuffer<80> buf;
+ String *ptr= args[3]->val_str_ascii(&buf);
+ ulong bem;
+
+ if (ptr == NULL)
+ goto err;
+
+ bem= find_type(&block_encryption_mode_typelib, ptr->ptr(), ptr->length(), 0);
+ if (!bem)
+ goto err;
+
+ aes_key_length= block_encryption_mode_to_key_length(bem - 1);
+ aes_mode= block_encryption_mode_to_aes_mode(bem - 1);
+ return 0;
+err:
+ return 1;
+}
+
+
void Item_aes_crypt::create_key(String *user_key, uchar *real_key)
{
- uchar *real_key_end= real_key + AES_KEY_LENGTH / 8;
+ uchar *real_key_end= real_key + aes_key_length / 8;
uchar *ptr;
const char *sptr= user_key->ptr();
const char *key_end= sptr + user_key->length();
- bzero(real_key, AES_KEY_LENGTH / 8);
+ bzero(real_key, aes_key_length / 8);
for (ptr= real_key; sptr < key_end; ptr++, sptr++)
{
@@ -340,28 +375,41 @@ void Item_aes_crypt::create_key(String *user_key, uchar *real_key)
String *Item_aes_crypt::val_str(String *str2)
{
DBUG_ASSERT(fixed());
- StringBuffer<80> user_key_buf;
+ StringBuffer<80> user_key_buf, iv_buf;
String *sptr= args[0]->val_str(&tmp_value);
- String *user_key= args[1]->val_str(&user_key_buf);
+ String *user_key= args[1]->val_str(&user_key_buf);
+ String *iv= NULL;
uint32 aes_length;
if (sptr && user_key) // we need both arguments to be not NULL
{
- null_value=0;
- aes_length=my_aes_get_size(MY_AES_ECB, sptr->length());
+ if (arg_count > 3 && (null_value= parse_mode()))
+ return 0;
+
+ if (aes_mode != MY_AES_ECB)
+ {
+ if (arg_count > 2)
+ iv= args[2]->val_str(&iv_buf);
+ if ((null_value= (!iv || iv->length() < MY_AES_BLOCK_SIZE)))
+ return 0;
+ }
+
+ aes_length=my_aes_get_size(aes_mode, sptr->length());
if (!str2->alloc(aes_length)) // Ensure that memory is free
{
- uchar rkey[AES_KEY_LENGTH / 8];
+ uchar *rkey= (uchar*)alloca(aes_key_length / 8);
create_key(user_key, rkey);
- if (!my_aes_crypt(MY_AES_ECB, what, (uchar*)sptr->ptr(), sptr->length(),
+ if (!my_aes_crypt(aes_mode, what, (uchar*)sptr->ptr(), sptr->length(),
(uchar*)str2->ptr(), &aes_length,
- rkey, AES_KEY_LENGTH / 8, 0, 0))
+ rkey, aes_key_length / 8,
+ iv ? (uchar*)iv->ptr() : 0, iv ? iv->length() : 0))
{
str2->length((uint) aes_length);
DBUG_ASSERT(collation.collation == &my_charset_bin);
str2->set_charset(&my_charset_bin);
+ null_value= 0;
return str2;
}
}
@@ -370,23 +418,142 @@ String *Item_aes_crypt::val_str(String *str2)
return 0;
}
+bool Item_aes_crypt::fix_fields(THD *thd, Item **ref)
+{
+ aes_key_length= block_encryption_mode_to_key_length(thd->variables.block_encryption_mode);
+ aes_mode= block_encryption_mode_to_aes_mode(thd->variables.block_encryption_mode);
+ return Item_str_binary_checksum_func::fix_fields(thd, ref);
+}
+
bool Item_func_aes_encrypt::fix_length_and_dec(THD *thd)
{
max_length=my_aes_get_size(MY_AES_ECB, args[0]->max_length);
- what= ENCRYPTION_FLAG_ENCRYPT;
return FALSE;
}
-
-
bool Item_func_aes_decrypt::fix_length_and_dec(THD *thd)
{
max_length=args[0]->max_length;
set_maybe_null();
- what= ENCRYPTION_FLAG_DECRYPT;
return FALSE;
}
+bool Item_func_kdf::fix_length_and_dec(THD *thd)
+{
+ if (arg_count > 4 && args[4]->const_item())
+ {
+ if (((key_length= (uint)args[4]->val_int()) % 8) || key_length > 65536)
+ key_length= 0;
+ }
+ else if (arg_count <= 4)
+ key_length= block_encryption_mode_to_key_length(thd->variables.block_encryption_mode);
+ else
+ key_length= 0;
+ key_length/= 8;
+ max_length= key_length ? key_length : 256/8;
+ set_maybe_null();
+ return FALSE;
+}
+
+static void invalid_argument_error(const char *func, const char *val)
+{
+ THD *thd= current_thd;
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_STD_INVALID_ARGUMENT, ER_THD(thd, ER_STD_INVALID_ARGUMENT),
+ val, func);
+}
+
+String *Item_func_kdf::val_str(String *buf)
+{
+ // KDF(key_str, salt [, {info | iterations} [, kdf_name [, width ]]])
+ DBUG_ASSERT(fixed());
+ StringBuffer<80> key_buf, salt_buf;
+ String *key= args[0]->val_str(&key_buf);
+ String *salt= args[1]->val_str(&salt_buf);
+ bool use_hkdf= false;
+ size_t klen= key_length;
+ bool ok= false;
+
+ if (!key || !salt)
+ goto ret_null;
+
+ if (arg_count > 3)
+ {
+ if (String *s= args[3]->val_str(buf))
+ {
+ if (strcasecmp(s->c_ptr(), "hkdf") == 0)
+ use_hkdf= true;
+ else if (strcasecmp(s->c_ptr(), "pbkdf2_hmac") != 0)
+ {
+ invalid_argument_error(func_name(), ErrConvStringQ(s).ptr());
+ goto ret_null;
+ }
+ }
+ else
+ goto ret_null;
+ }
+ if (!klen)
+ {
+ klen= args[4]->val_int();
+ if (!klen || klen % 8 || klen > 65536)
+ {
+ if (!args[4]->null_value)
+ invalid_argument_error(func_name(),
+ ErrConvInteger({(ssize_t)klen, args[4]->unsigned_flag}).ptr());
+ goto ret_null;
+ }
+ klen/= 8;
+ }
+ buf->reserve(klen);
+ buf->length(klen);
+
+ if (use_hkdf)
+ {
+#ifdef HAVE_hkdf
+ StringBuffer<80> info_buf;
+ String *info= arg_count > 2 ? args[2]->val_str(&info_buf) : 0;
+
+ EVP_PKEY_CTX *ctx= EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL);
+ ok= EVP_PKEY_derive_init(ctx) > 0 &&
+ EVP_PKEY_CTX_set_hkdf_md(ctx, EVP_sha512()) > 0 &&
+ EVP_PKEY_CTX_set1_hkdf_key(ctx, (const uchar*)key->ptr(), key->length()) > 0 &&
+ EVP_PKEY_CTX_set1_hkdf_salt(ctx, (const uchar*)salt->ptr(), salt->length()) > 0 &&
+ (!info || EVP_PKEY_CTX_add1_hkdf_info(ctx, (const uchar*)info->ptr(), info->length()) > 0) &&
+ EVP_PKEY_derive(ctx, (uchar*)buf->ptr(), &klen) > 0;
+
+ EVP_PKEY_CTX_free(ctx);
+#else
+ THD *thd= current_thd;
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_NOT_SUPPORTED_YET, ER_THD(thd, ER_NOT_SUPPORTED_YET),
+ "kdf(..., 'hkdf')");
+#endif
+ }
+ else
+ {
+ longlong iter= arg_count > 2 ? args[2]->val_int() : 1000;
+ if (iter <= 0)
+ {
+ if (!args[2]->null_value)
+ invalid_argument_error(func_name(),
+ ErrConvInteger({iter, args[2]->unsigned_flag}).ptr());
+ }
+ else
+ ok= PKCS5_PBKDF2_HMAC(key->ptr(), key->length(),
+ (const uchar*)salt->ptr(), salt->length(), (int)iter,
+ EVP_sha512(), (int)klen, (uchar*)buf->ptr());
+ }
+
+ if (ok)
+ {
+ null_value= 0;
+ return buf;
+ }
+
+ret_null:
+ null_value=1;
+ return 0;
+}
bool Item_func_to_base64::fix_length_and_dec(THD *thd)
{
@@ -738,9 +905,7 @@ bool Item_func_des_encrypt::fix_length_and_dec(THD *thd)
set_maybe_null();
/* 9 = MAX ((8- (arg_len % 8)) + 1) */
max_length = args[0]->max_length + 9;
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
- func_name_cstring().str);
+ warn_deprecated<1010>(thd, func_name_cstring().str);
return FALSE;
}
@@ -851,9 +1016,7 @@ bool Item_func_des_decrypt::fix_length_and_dec(THD *thd)
max_length= args[0]->max_length;
if (max_length >= 9U)
max_length-= 9U;
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
- func_name_cstring().str);
+ warn_deprecated<1010>(thd, func_name_cstring().str);
return FALSE;
}
@@ -3775,8 +3938,8 @@ String *Item_func_conv::val_str(String *str)
// Note that abs(INT_MIN) is undefined.
if (args[0]->null_value || args[1]->null_value || args[2]->null_value ||
from_base == INT_MIN || to_base == INT_MIN ||
- abs(to_base) > 36 || abs(to_base) < 2 ||
- abs(from_base) > 36 || abs(from_base) < 2 || !(res->length()))
+ abs(to_base) > 62 || abs(to_base) < 2 ||
+ abs(from_base) > 62 || abs(from_base) < 2 || !(res->length()))
{
null_value= 1;
return NULL;
@@ -3883,7 +4046,9 @@ bool Item_func_set_collation::fix_length_and_dec(THD *thd)
if (agg_arg_charsets_for_string_result(collation, args, 1))
return true;
Lex_exact_charset_opt_extended_collate cl(collation.collation, true);
- if (cl.merge_collation_override(m_set_collation))
+ if (cl.merge_collation_override(thd,
+ thd->variables.character_set_collations,
+ m_set_collation))
return true;
collation.set(cl.collation().charset_info(), DERIVATION_EXPLICIT,
args[0]->collation.repertoire);
@@ -5886,6 +6051,84 @@ bool Item_func_natural_sort_key::check_vcol_func_processor(void *arg)
VCOL_NON_DETERMINISTIC);
}
+String *Item_func_format_pico_time::val_str_ascii(String *)
+{
+ double time_val= args[0]->val_real();
+
+ null_value= args[0]->null_value;
+ if (null_value)
+ return 0;
+
+ constexpr ulonglong nano{1000};
+ constexpr ulonglong micro{1000 * nano};
+ constexpr ulonglong milli{1000 * micro};
+ constexpr ulonglong sec{1000 * milli};
+ constexpr ulonglong min{60 * sec};
+ constexpr ulonglong hour{60 * min};
+ constexpr ulonglong day{24 * hour};
+
+ double time_abs= fabs(time_val);
+
+ ulonglong divisor;
+ size_t len;
+ const char *unit;
+
+ /* SI-approved time units. */
+ if (time_abs >= day)
+ {
+ divisor= day;
+ unit= "d";
+ }
+ else if (time_abs >= hour)
+ {
+ divisor= hour;
+ unit= "h";
+ }
+ else if (time_abs >= min)
+ {
+ divisor= min;
+ unit= "min";
+ }
+ else if (time_abs >= sec)
+ {
+ divisor= sec;
+ unit= "s";
+ }
+ else if (time_abs >= milli)
+ {
+ divisor= milli;
+ unit= "ms";
+ }
+ else if (time_abs >= micro)
+ {
+ divisor= micro;
+ unit= "us";
+ }
+ else if (time_abs >= nano)
+ {
+ divisor= nano;
+ unit= "ns";
+ }
+ else
+ {
+ divisor= 1;
+ unit= "ps";
+ }
+
+ if (divisor == 1)
+ len= my_snprintf(m_value_buffer, sizeof(m_value_buffer), "%3d %s", (int)time_val, unit);
+ else
+ {
+ double value= time_val / divisor;
+ if (fabs(value) >= 100000.0)
+ len= snprintf(m_value_buffer, sizeof(m_value_buffer), "%4.2e %s", value, unit);
+ else
+ len= my_snprintf(m_value_buffer, sizeof(m_value_buffer), "%4.2f %s", value, unit);
+ }
+ m_value.length(len);
+ return &m_value;
+}
+
#ifdef WITH_WSREP
#include "wsrep_mysqld.h"
#include "wsrep_server_state.h"
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index 340847dd..8fba6e6f 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -129,6 +129,12 @@ public:
:Item_str_func(thd, a) { }
Item_str_binary_checksum_func(THD *thd, Item *a, Item *b)
:Item_str_func(thd, a, b) { }
+ Item_str_binary_checksum_func(THD *thd, Item *a, Item *b, Item *c)
+ :Item_str_func(thd, a, b, c) { }
+ Item_str_binary_checksum_func(THD *thd, Item *a, Item *b, Item *c, Item *d)
+ :Item_str_func(thd, a, b, c, d) { }
+ Item_str_binary_checksum_func(THD *thd, Item *a, Item *b, Item *c, Item *d, Item *e)
+ :Item_str_func(thd, a, b, c, d, e) { }
bool eq(const Item *item, bool binary_cmp) const
{
/*
@@ -229,23 +235,39 @@ public:
class Item_aes_crypt :public Item_str_binary_checksum_func
{
- enum { AES_KEY_LENGTH = 128 };
void create_key(String *user_key, uchar* key);
-
-protected:
- int what;
+ int parse_mode();
String tmp_value;
+ const int what;
+ uint aes_key_length;
+ enum my_aes_mode aes_mode;
+
public:
- Item_aes_crypt(THD *thd, Item *a, Item *b)
- :Item_str_binary_checksum_func(thd, a, b) {}
- String *val_str(String *);
+ Item_aes_crypt(THD *thd, int what, Item *a, Item *b)
+ : Item_str_binary_checksum_func(thd, a, b), what(what) {}
+ Item_aes_crypt(THD *thd, int what, Item *a, Item *b, Item *c)
+ : Item_str_binary_checksum_func(thd, a, b, c), what(what) {}
+ Item_aes_crypt(THD *thd, int what, Item *a, Item *b, Item *c, Item *d)
+ : Item_str_binary_checksum_func(thd, a, b, c, d), what(what) {}
+ bool fix_fields(THD *thd, Item **ref) override;
+ String *val_str(String *) override;
+ bool check_vcol_func_processor(void *arg) override
+ {
+ if (arg_count > 3)
+ return FALSE;
+ return mark_unsupported_function(func_name(), "()", arg, VCOL_SESSION_FUNC);
+ }
};
class Item_func_aes_encrypt :public Item_aes_crypt
{
public:
Item_func_aes_encrypt(THD *thd, Item *a, Item *b)
- :Item_aes_crypt(thd, a, b) {}
+ :Item_aes_crypt(thd, ENCRYPTION_FLAG_ENCRYPT, a, b) {}
+ Item_func_aes_encrypt(THD *thd, Item *a, Item *b, Item *c)
+ :Item_aes_crypt(thd, ENCRYPTION_FLAG_ENCRYPT, a, b, c) {}
+ Item_func_aes_encrypt(THD *thd, Item *a, Item *b, Item *c, Item *d)
+ :Item_aes_crypt(thd, ENCRYPTION_FLAG_ENCRYPT, a, b, c, d) {}
bool fix_length_and_dec(THD *thd) override;
LEX_CSTRING func_name_cstring() const override
{
@@ -260,7 +282,11 @@ class Item_func_aes_decrypt :public Item_aes_crypt
{
public:
Item_func_aes_decrypt(THD *thd, Item *a, Item *b):
- Item_aes_crypt(thd, a, b) {}
+ Item_aes_crypt(thd, ENCRYPTION_FLAG_DECRYPT, a, b) {}
+ Item_func_aes_decrypt(THD *thd, Item *a, Item *b, Item *c):
+ Item_aes_crypt(thd, ENCRYPTION_FLAG_DECRYPT, a, b, c) {}
+ Item_func_aes_decrypt(THD *thd, Item *a, Item *b, Item *c, Item *d):
+ Item_aes_crypt(thd, ENCRYPTION_FLAG_DECRYPT, a, b, c, d) {}
bool fix_length_and_dec(THD *thd) override;
LEX_CSTRING func_name_cstring() const override
{
@@ -271,6 +297,35 @@ public:
{ return get_item_copy<Item_func_aes_decrypt>(thd, this); }
};
+class Item_func_kdf :public Item_str_binary_checksum_func
+{
+ uint key_length;
+public:
+ Item_func_kdf(THD *thd, Item *a, Item *b)
+ : Item_str_binary_checksum_func(thd, a, b) {}
+ Item_func_kdf(THD *thd, Item *a, Item *b, Item *c)
+ : Item_str_binary_checksum_func(thd, a, b, c) {}
+ Item_func_kdf(THD *thd, Item *a, Item *b, Item *c, Item *d)
+ : Item_str_binary_checksum_func(thd, a, b, c, d) {}
+ Item_func_kdf(THD *thd, Item *a, Item *b, Item *c, Item *d, Item *e)
+ : Item_str_binary_checksum_func(thd, a, b, c, d, e) {}
+ bool fix_length_and_dec(THD *thd) override;
+ String *val_str(String *) override;
+ bool check_vcol_func_processor(void *arg) override
+ {
+ if (arg_count > 4)
+ return FALSE;
+ return mark_unsupported_function(func_name(), "()", arg, VCOL_SESSION_FUNC);
+ }
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("kdf") };
+ return name;
+ }
+ Item *get_copy(THD *thd) override
+ { return get_item_copy<Item_func_kdf>(thd, this); }
+};
+
class Item_func_natural_sort_key : public Item_str_func
{
public:
@@ -412,8 +467,7 @@ public:
}
bool check_vcol_func_processor(void *arg) override
{
- return mark_unsupported_function(func_name(), "()", arg,
- VCOL_NON_DETERMINISTIC | VCOL_NEXTVAL);
+ return mark_unsupported_function(func_name(), "()", arg, VCOL_NON_DETERMINISTIC);
}
Item *get_copy(THD *thd) override
{
@@ -2311,6 +2365,33 @@ public:
Item *get_copy(THD *thd) override
{ return get_item_copy<Item_temptable_rowid>(thd, this); }
};
+
+class Item_func_format_pico_time : public Item_str_ascii_func
+{
+ /* Format is 'AAAA.BB UUU' = 11 characters or 'AAA ps' = 6 characters. */
+ char m_value_buffer[12];
+ String m_value;
+
+public:
+ Item_func_format_pico_time(THD *thd, Item *a): Item_str_ascii_func(thd, a) {}
+ String *val_str_ascii(String *) override;
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("format_pico_time")};
+ return name;
+ }
+ bool fix_length_and_dec(THD *thd) override
+ {
+ m_value.set(m_value_buffer, sizeof(m_value_buffer), default_charset());
+ fix_length_and_charset(sizeof(m_value_buffer), default_charset());
+ return false;
+ }
+ Item *get_copy(THD *thd) override
+ {
+ return get_item_copy<Item_func_format_pico_time>(thd, this);
+ }
+};
+
#ifdef WITH_WSREP
#include "wsrep_api.h"
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 0a37a2ec..22913641 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -42,6 +42,7 @@
#include "sql_parse.h" // check_stack_overrun
#include "sql_cte.h"
#include "sql_test.h"
+#include "opt_trace.h"
double get_post_group_estimate(JOIN* join, double join_op_rows);
@@ -1609,8 +1610,9 @@ Item_exists_subselect::Item_exists_subselect(THD *thd,
{
DBUG_ENTER("Item_exists_subselect::Item_exists_subselect");
-
init(select_lex, new (thd->mem_root) select_exists_subselect(thd, this));
+ select_lex->distinct= 1;
+ select_lex->master_unit()->distinct= 1;
max_columns= UINT_MAX;
null_value= FALSE; //can't be NULL
base_flags&= ~item_base_t::MAYBE_NULL; //can't be NULL
@@ -1661,6 +1663,39 @@ Item_in_subselect::Item_in_subselect(THD *thd, Item * left_exp,
Item_row(thd, static_cast<Item_row*>(left_exp));
func= &eq_creator;
init(select_lex, new (thd->mem_root) select_exists_subselect(thd, this));
+ select_lex->distinct= 1;
+
+ /*
+ If the IN subquery (xxx IN (SELECT ...) is a join without grouping,
+ we don't need duplicates from the tables it is joining. These
+ tables can be derived tables, like shown in the following
+ example. In this case, it's useful to indicate that we don't need
+ duplicates from them either.
+
+ Example:
+ col IN (SELECT ... -- this is the select_lex
+ FROM
+ (SELECT ... FROM t1) AS t1, -- child1, first_inner_init().
+ (SELECT ... FROM t2) AS t2, -- child2
+ WHERE
+ ...
+ )
+
+ We don't need duplicates from either child1 or child2.
+ We only indicate this to child1 (select_lex->first_inner_unit()), as that
+ catches most of practically important use cases.
+
+ (The check for item==NULL is to make sure the subquery is a derived table
+ and not any other kind of subquery like another IN (SELECT ...) or a scalar-
+ context (SELECT 'foo'))
+ */
+
+ select_lex->master_unit()->distinct= 1;
+ if (!select_lex->with_sum_func &&
+ select_lex->first_inner_unit() &&
+ select_lex->first_inner_unit()->item == NULL)
+ select_lex->first_inner_unit()->distinct= 1;
+
max_columns= UINT_MAX;
set_maybe_null();
reset();
@@ -1688,6 +1723,16 @@ Item_allany_subselect::Item_allany_subselect(THD *thd, Item * left_exp,
Item_row(thd, static_cast<Item_row*>(left_exp));
func= func_creator(all_arg);
init(select_lex, new (thd->mem_root) select_exists_subselect(thd, this));
+ select_lex->distinct= 1;
+ /*
+ If this is is 'xxx IN (SELECT ...) mark that the we are only interested in
+ unique values for the select
+ */
+ select_lex->master_unit()->distinct= 1;
+ if (!select_lex->with_sum_func &&
+ select_lex->first_inner_unit() &&
+ select_lex->first_inner_unit()->item == NULL)
+ select_lex->first_inner_unit()->distinct= 1;
max_columns= 1;
reset();
//if test_limit will fail then error will be reported to client
@@ -2922,7 +2967,9 @@ bool Item_exists_subselect::select_prepare_to_be_in()
if (!optimizer &&
(thd->lex->sql_command == SQLCOM_SELECT ||
thd->lex->sql_command == SQLCOM_UPDATE_MULTI ||
- thd->lex->sql_command == SQLCOM_DELETE_MULTI) &&
+ thd->lex->sql_command == SQLCOM_DELETE_MULTI ||
+ thd->lex->sql_command == SQLCOM_UPDATE ||
+ thd->lex->sql_command == SQLCOM_DELETE) &&
!unit->first_select()->is_part_of_union() &&
optimizer_flag(thd, OPTIMIZER_SWITCH_EXISTS_TO_IN) &&
(is_top_level_item() ||
@@ -3318,6 +3365,14 @@ bool Item_exists_subselect::exists2in_processor(void *opt_arg)
set possible optimization strategies
*/
in_subs->emb_on_expr_nest= emb_on_expr_nest;
+
+ {
+ OPT_TRACE_TRANSFORM(thd, trace_wrapper, trace_transform,
+ in_subs->get_select_lex()->select_number,
+ "EXISTS (SELECT)", "IN (SELECT)");
+ trace_transform.add( "upper_not", ( upper_not?true:false ) );
+ }
+
res= check_and_do_in_subquery_rewrites(join);
first_select->join->prepare_stage2();
@@ -4027,6 +4082,7 @@ int subselect_single_select_engine::exec()
char const *save_where= thd->where;
SELECT_LEX *save_select= thd->lex->current_select;
thd->lex->current_select= select_lex;
+ bool exec_error= 0;
DBUG_ENTER("subselect_single_select_engine::exec");
if (join->optimization_state == JOIN::NOT_OPTIMIZED)
@@ -4118,7 +4174,7 @@ int subselect_single_select_engine::exec()
}
}
- join->exec();
+ exec_error= join->exec();
/* Enable the optimizations back */
for (JOIN_TAB **ptab= changed_tabs; ptab != last_changed_tab; ptab++)
@@ -4136,7 +4192,7 @@ int subselect_single_select_engine::exec()
item->make_const();
thd->where= save_where;
thd->lex->current_select= save_select;
- DBUG_RETURN(join->error || thd->is_fatal_error || thd->is_error());
+ DBUG_RETURN(exec_error || thd->is_error());
}
thd->where= save_where;
thd->lex->current_select= save_select;
@@ -5233,7 +5289,7 @@ bool subselect_hash_sj_engine::init(List<Item> *tmp_columns, uint subquery_id)
//fprintf(stderr, "Q: %s\n", current_thd->query());
DBUG_ASSERT(0);
DBUG_ASSERT(
- tmp_table->s->uniques ||
+ (tmp_table->key_info->flags & HA_UNIQUE_HASH) ||
tmp_table->key_info->key_length >= tmp_table->file->max_key_length() ||
tmp_table->key_info->user_defined_key_parts >
tmp_table->file->max_key_parts());
@@ -5687,9 +5743,8 @@ int subselect_hash_sj_engine::exec()
/* The subquery should be optimized, and materialized only once. */
DBUG_ASSERT(materialize_join->optimization_state == JOIN::OPTIMIZATION_DONE &&
!is_materialized);
- materialize_join->exec();
- if (unlikely((res= MY_TEST(materialize_join->error || thd->is_fatal_error ||
- thd->is_error()))))
+ res= materialize_join->exec();
+ if (unlikely((res= (res || thd->is_error()))))
goto err;
/*
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index 0ac75f90..2cf63c2d 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -473,15 +473,17 @@ err:
Create a formatted date/time value in a string.
*/
-static bool make_date_time(const String *format, const MYSQL_TIME *l_time,
- timestamp_type type, const MY_LOCALE *locale,
- String *str)
+static bool make_date_time(THD *thd, const String *format,
+ const MYSQL_TIME *l_time, timestamp_type type,
+ const MY_LOCALE *locale, String *str)
{
char intbuff[15];
uint hours_i;
uint weekday;
ulong length;
const uchar *ptr, *end;
+ struct my_tz curr_tz;
+ Time_zone* curr_timezone= 0;
str->length(0);
@@ -694,6 +696,32 @@ static bool make_date_time(const String *format, const MYSQL_TIME *l_time,
str->append_zerofill(weekday, 1);
break;
+ case 'z':
+ {
+ if (!curr_timezone)
+ {
+ curr_timezone= thd->variables.time_zone;
+ curr_timezone->get_timezone_information(&curr_tz, l_time);
+ }
+ long minutes= labs(curr_tz.seconds_offset)/60, diff_hr, diff_min;
+ diff_hr= minutes/60;
+ diff_min= minutes%60;
+
+ str->append(curr_tz.seconds_offset < 0 ? '-' : '+');
+ str->append(static_cast<char>('0' + diff_hr/10));
+ str->append(static_cast<char>('0' + diff_hr%10));
+ str->append(static_cast<char>('0' + diff_min/10));
+ str->append(static_cast<char>('0' + diff_min%10));
+ break;
+ }
+ case 'Z':
+ if (!curr_timezone)
+ {
+ curr_timezone= thd->variables.time_zone;
+ curr_timezone->get_timezone_information(&curr_tz, l_time);
+ }
+ str->append(curr_tz.abbreviation, strlen(curr_tz.abbreviation));
+ break;
default:
str->append_wc(wc);
break;
@@ -1822,6 +1850,7 @@ uint Item_func_date_format::format_length(const String *format)
case 'X': /* Year, used with 'v, where week starts with Monday' */
size += 4;
break;
+ case 'Z': /* time zone abbreviation */
case 'a': /* locale's abbreviated weekday name (Sun..Sat) */
case 'b': /* locale's abbreviated month name (Jan.Dec) */
size += 32; /* large for UTF8 locale data */
@@ -1860,6 +1889,9 @@ uint Item_func_date_format::format_length(const String *format)
case 'f': /* microseconds */
size += 6;
break;
+ case 'z': /* time zone offset */
+ size += 5;
+ break;
case 'w': /* day (of the week), numeric */
case '%':
default:
@@ -1907,7 +1939,7 @@ String *Item_func_date_format::val_str(String *str)
/* Create the result string */
str->set_charset(collation.collation);
- if (!make_date_time(format, &l_time,
+ if (!make_date_time(thd, format, &l_time,
is_time_format ? MYSQL_TIMESTAMP_TIME :
MYSQL_TIMESTAMP_DATE,
lc, str))
diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h
index 5485f6c1..084fee85 100644
--- a/sql/item_timefunc.h
+++ b/sql/item_timefunc.h
@@ -462,6 +462,7 @@ public:
static LEX_CSTRING name= {STRING_WITH_LEN("year") };
return name;
}
+ enum Functype functype() const override { return YEAR_FUNC; }
enum_monotonicity_info get_monotonicity_info() const override;
longlong val_int_endpoint(bool left_endp, bool *incl_endp) override;
bool fix_length_and_dec(THD *thd) override
@@ -1342,6 +1343,7 @@ public:
{
print_cast_temporal(str, query_type);
}
+ enum Functype functype() const override { return DATE_FUNC; }
bool get_date(THD *thd, MYSQL_TIME *ltime, date_mode_t fuzzydate) override;
bool fix_length_and_dec(THD *thd) override
{
@@ -2033,6 +2035,4 @@ public:
return false;
}
};
-
-
#endif /* ITEM_TIMEFUNC_INCLUDED */
diff --git a/sql/json_schema.cc b/sql/json_schema.cc
new file mode 100644
index 00000000..8f818abc
--- /dev/null
+++ b/sql/json_schema.cc
@@ -0,0 +1,2874 @@
+/* Copyright (c) 2016, 2022, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+
+#include "mariadb.h"
+#include "sql_class.h"
+#include "sql_parse.h" // For check_stack_overrun
+#include <m_string.h>
+#include "json_schema.h"
+#include "json_schema_helper.h"
+#include "pcre2.h"
+static HASH all_keywords_hash;
+
+static Json_schema_keyword *create_json_schema_keyword(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_keyword();
+}
+static Json_schema_keyword *create_json_schema_type(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_type();
+}
+static Json_schema_keyword *create_json_schema_enum(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_enum();
+}
+static Json_schema_keyword *create_json_schema_const(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_const();
+}
+static Json_schema_keyword *create_json_schema_maximum(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_maximum();
+}
+static Json_schema_keyword *create_json_schema_minimum(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_minimum();
+}
+static Json_schema_keyword *create_json_schema_ex_max(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_ex_maximum();
+}
+static Json_schema_keyword *create_json_schema_ex_min(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_ex_minimum();
+}
+static Json_schema_keyword *create_json_schema_multiple_of(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_multiple_of();
+}
+static Json_schema_keyword *create_json_schema_max_len(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_max_len();
+}
+static Json_schema_keyword *create_json_schema_min_len(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_min_len();
+}
+static Json_schema_keyword *create_json_schema_pattern(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_pattern();
+}
+static Json_schema_keyword *create_json_schema_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_items();
+}
+static Json_schema_keyword *create_json_schema_max_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_max_items();
+}
+static Json_schema_keyword *create_json_schema_min_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_min_items();
+}
+static Json_schema_keyword *create_json_schema_prefix_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_prefix_items();
+}
+static Json_schema_keyword *create_json_schema_contains(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_contains();
+}
+static Json_schema_keyword *create_json_schema_max_contains(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_max_contains();
+}
+static Json_schema_keyword *create_json_schema_min_contains(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_min_contains();
+}
+static Json_schema_keyword *create_json_schema_unique_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_unique_items();
+}
+static Json_schema_keyword *create_json_schema_additional_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_additional_items();
+}
+static Json_schema_keyword *create_json_schema_unevaluated_items(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_unevaluated_items();
+}
+static Json_schema_keyword *create_json_schema_properties(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_properties();
+}
+static Json_schema_keyword *create_json_schema_pattern_properties(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_pattern_properties();
+}
+static Json_schema_keyword *create_json_schema_additional_properties(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_additional_properties();
+}
+static Json_schema_keyword *create_json_schema_unevaluated_properties(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_unevaluated_properties();
+}
+static Json_schema_keyword *create_json_schema_property_names(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_property_names();
+}
+static Json_schema_keyword *create_json_schema_max_prop(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_max_prop();
+}
+static Json_schema_keyword *create_json_schema_min_prop(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_min_prop();
+}
+static Json_schema_keyword *create_json_schema_required(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_required();
+}
+static Json_schema_keyword *create_json_schema_dependent_required(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_dependent_required();
+}
+static Json_schema_keyword *create_json_schema_dependent_schemas(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_dependent_schemas();
+}
+static Json_schema_keyword *create_json_schema_not(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_not();
+}
+static Json_schema_keyword *create_json_schema_all_of(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_all_of();
+}
+static Json_schema_keyword *create_json_schema_any_of(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_any_of();
+}
+static Json_schema_keyword *create_json_schema_one_of(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_one_of();
+}
+static Json_schema_keyword *create_json_schema_if(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_if();
+}
+static Json_schema_keyword *create_json_schema_then(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_then();
+}
+static Json_schema_keyword *create_json_schema_else(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_else();
+}
+static Json_schema_keyword *create_json_schema_annotation(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_annotation();
+}
+static Json_schema_keyword *create_json_schema_format(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_format();
+}
+static Json_schema_keyword *create_json_schema_media_string(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_media_string();
+}
+static Json_schema_keyword *create_json_schema_reference(THD *thd)
+{
+ return new (thd->mem_root) Json_schema_reference();
+}
+
+ static st_json_schema_keyword_map json_schema_func_array[]=
+{
+ {{ STRING_WITH_LEN("type") }, create_json_schema_type, JSON_SCHEMA_COMMON_KEYWORD},
+ {{ STRING_WITH_LEN("const") }, create_json_schema_const, JSON_SCHEMA_COMMON_KEYWORD},
+ {{ STRING_WITH_LEN("enum") }, create_json_schema_enum, JSON_SCHEMA_COMMON_KEYWORD},
+
+ {{ STRING_WITH_LEN("maximum") }, create_json_schema_maximum, JSON_SCHEMA_NUMBER_KEYWORD},
+ {{ STRING_WITH_LEN("minimum") }, create_json_schema_minimum, JSON_SCHEMA_NUMBER_KEYWORD},
+ {{ STRING_WITH_LEN("exclusiveMaximum") }, create_json_schema_ex_max, JSON_SCHEMA_NUMBER_KEYWORD},
+ {{ STRING_WITH_LEN("exclusiveMinimum") }, create_json_schema_ex_min, JSON_SCHEMA_NUMBER_KEYWORD},
+ {{ STRING_WITH_LEN("multipleOf") }, create_json_schema_multiple_of, JSON_SCHEMA_NUMBER_KEYWORD},
+
+ {{ STRING_WITH_LEN("maxLength") }, create_json_schema_max_len, JSON_SCHEMA_STRING_KEYWORD},
+ {{ STRING_WITH_LEN("minLength") }, create_json_schema_min_len, JSON_SCHEMA_STRING_KEYWORD},
+ {{ STRING_WITH_LEN("pattern") }, create_json_schema_pattern, JSON_SCHEMA_STRING_KEYWORD},
+
+ {{ STRING_WITH_LEN("items") }, create_json_schema_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("maxItems") }, create_json_schema_max_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("minItems") }, create_json_schema_min_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("additionalItems") }, create_json_schema_additional_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("unevaluatedItems") }, create_json_schema_unevaluated_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("prefixItems") }, create_json_schema_prefix_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("uniqueItems") }, create_json_schema_unique_items, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("contains") }, create_json_schema_contains, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("maxContains") }, create_json_schema_max_contains, JSON_SCHEMA_ARRAY_KEYWORD},
+ {{ STRING_WITH_LEN("minContains") }, create_json_schema_min_contains, JSON_SCHEMA_ARRAY_KEYWORD},
+
+ {{ STRING_WITH_LEN("properties") }, create_json_schema_properties, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("patternProperties") }, create_json_schema_pattern_properties, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("propertyNames") }, create_json_schema_property_names, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("maxProperties") }, create_json_schema_max_prop, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("minProperties") }, create_json_schema_min_prop, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("dependentRequired") }, create_json_schema_dependent_required, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("dependentSchemas") }, create_json_schema_dependent_schemas, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("required") }, create_json_schema_required, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("additionalProperties") }, create_json_schema_additional_properties, JSON_SCHEMA_OBJECT_KEYWORD},
+ {{ STRING_WITH_LEN("unevaluatedProperties") }, create_json_schema_unevaluated_properties, JSON_SCHEMA_OBJECT_KEYWORD},
+
+ {{ STRING_WITH_LEN("not") }, create_json_schema_not, JSON_SCHEMA_LOGIC_KEYWORD},
+ {{ STRING_WITH_LEN("allOf") }, create_json_schema_all_of, JSON_SCHEMA_LOGIC_KEYWORD},
+ {{ STRING_WITH_LEN("anyOf") }, create_json_schema_any_of, JSON_SCHEMA_LOGIC_KEYWORD},
+ {{ STRING_WITH_LEN("oneOf") }, create_json_schema_one_of, JSON_SCHEMA_LOGIC_KEYWORD},
+
+ {{ STRING_WITH_LEN("if") }, create_json_schema_if, JSON_SCHEMA_CONDITION_KEYWORD},
+ {{ STRING_WITH_LEN("then") }, create_json_schema_then, JSON_SCHEMA_CONDITION_KEYWORD},
+ {{ STRING_WITH_LEN("else") }, create_json_schema_else, JSON_SCHEMA_CONDITION_KEYWORD},
+
+ {{ STRING_WITH_LEN("title") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("description") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("comment") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("$schema") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("deprecated") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("readOnly") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("writeOnly") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("example") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("default") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+ {{ STRING_WITH_LEN("$vocabulary") }, create_json_schema_annotation, JSON_SCHEMA_ANNOTATION_KEYWORD},
+
+ {{ STRING_WITH_LEN("date-time") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("date") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("time") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("duration") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("email") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("idn-email") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("hostname") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("idn-hostname") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("ipv4") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("ipv6") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("uri") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("uri-reference") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("iri") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("iri-reference") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("uuid") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("json-pointer") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("relative-json-pointer") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+ {{ STRING_WITH_LEN("regex") }, create_json_schema_format, JSON_SCHEMA_FORMAT_KEYWORD},
+
+ {{ STRING_WITH_LEN("contentMediaType") }, create_json_schema_media_string, JSON_SCHEMA_MEDIA_KEYWORD},
+ {{ STRING_WITH_LEN("conentEncoding") }, create_json_schema_media_string, JSON_SCHEMA_MEDIA_KEYWORD},
+ {{ STRING_WITH_LEN("contentSchema") }, create_json_schema_media_string, JSON_SCHEMA_MEDIA_KEYWORD},
+
+ {{ STRING_WITH_LEN("$ref") }, create_json_schema_reference, JSON_SCHEMA_REFERENCE_KEYWORD},
+ {{ STRING_WITH_LEN("$id") }, create_json_schema_reference, JSON_SCHEMA_REFERENCE_KEYWORD},
+ {{ STRING_WITH_LEN("$anchor") }, create_json_schema_reference, JSON_SCHEMA_REFERENCE_KEYWORD},
+ {{ STRING_WITH_LEN("$defs") }, create_json_schema_reference, JSON_SCHEMA_REFERENCE_KEYWORD},
+ {{ STRING_WITH_LEN("$dynamicRef") }, create_json_schema_reference, JSON_SCHEMA_REFERENCE_KEYWORD},
+ {{ STRING_WITH_LEN("$dynamicAnchor") }, create_json_schema_reference, JSON_SCHEMA_REFERENCE_KEYWORD},
+};
+
+static st_json_schema_keyword_map empty_func_map=
+ {{ STRING_WITH_LEN("") }, create_json_schema_keyword, JSON_SCHEMA_EMPTY_KEYWORD};
+
+/*
+ When some schemas dont validate, we want to check the annotation
+ for an alternate schema. Example, when we have "properties" and
+ "patternProperties", if "properties" does not validate for a certain
+ keyname, then we want to check if it validates for "patternProperties".
+ In this case "patterProperties" will be alternate schema for "properties".
+*/
+bool Json_schema_keyword::fall_back_on_alternate_schema(const json_engine_t
+ *je,
+ const uchar* k_start,
+ const uchar* k_end)
+{
+ if (alternate_schema)
+ {
+ if (alternate_schema->allowed)
+ {
+ if (alternate_schema->validate_as_alternate(je, k_start, k_end))
+ return true;
+ }
+ else
+ return true;
+ }
+ return false;
+}
+
+bool Json_schema_annotation::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ bool is_invalid_value_type= false, res= false;
+
+ if (this->keyword_map == &(json_schema_func_array[38]) ||
+ this->keyword_map == &(json_schema_func_array[39]) ||
+ this->keyword_map == &(json_schema_func_array[40]) ||
+ this->keyword_map == &(json_schema_func_array[41]))
+ {
+ if (je->value_type != JSON_VALUE_STRING)
+ is_invalid_value_type= true;
+ }
+ else if (this->keyword_map == &(json_schema_func_array[42]) ||
+ this->keyword_map == &(json_schema_func_array[43]) ||
+ this->keyword_map == &(json_schema_func_array[44]))
+ {
+ if (je->value_type != JSON_VALUE_TRUE &&
+ je->value_type != JSON_VALUE_FALSE)
+ is_invalid_value_type= true;
+ }
+ else if (this->keyword_map == &(json_schema_func_array[45]))
+ {
+ if (je->value_type != JSON_VALUE_ARRAY)
+ is_invalid_value_type= true;
+ if (json_skip_level(je))
+ return true;
+ }
+ else if (this->keyword_map == &(json_schema_func_array[46]))
+ return false;
+
+ if (is_invalid_value_type)
+ {
+ res= true;
+ String keyword(0);
+ keyword.append((const char*)key_start, (int)(key_end-key_start));
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), keyword.ptr());
+ }
+ return res;
+}
+
+bool Json_schema_format::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_STRING)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "format");
+ }
+ return false;
+}
+
+bool Json_schema_type::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ return !((1 << je->value_type) & type);
+}
+
+bool Json_schema_type::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type == JSON_VALUE_ARRAY)
+ {
+ int level= je->stack_p;
+ while (json_scan_next(je)==0 && je->stack_p >= level)
+ {
+ if (json_read_value(je))
+ return true;
+ json_assign_type(&type, je);
+ }
+ return je->s.error ? true : false;
+ }
+ else if (je->value_type == JSON_VALUE_STRING)
+ {
+ return json_assign_type(&type, je);
+ }
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "type");
+ return true;
+ }
+}
+
+bool Json_schema_const::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je;
+ curr_je= *je;
+ const char *start= (char*)curr_je.value;
+ const char *end= (char*)curr_je.value+curr_je.value_len;
+ json_engine_t temp_je= *je;
+ json_engine_t temp_je_2;
+ String a_res("", 0, curr_je.s.cs);
+ int err= 0;
+
+ if (type != curr_je.value_type)
+ return true;
+
+ if (curr_je.value_type <= JSON_VALUE_NUMBER)
+ {
+ if (!json_value_scalar(&temp_je))
+ {
+ if (json_skip_level(&temp_je))
+ {
+ curr_je= temp_je;
+ return true;
+ }
+ end= (char*)temp_je.s.c_str;
+ }
+ String val((char*)temp_je.value, end-start, temp_je.s.cs);
+
+ json_scan_start(&temp_je_2, temp_je.s.cs, (const uchar *) val.ptr(),
+ (const uchar *) val.end());
+
+ if (temp_je.value_type != JSON_VALUE_STRING)
+ {
+ if (json_read_value(&temp_je_2))
+ {
+ curr_je= temp_je;
+ return true;
+ }
+ json_get_normalized_string(&temp_je_2, &a_res, &err);
+ if (err)
+ return true;
+ }
+ else
+ a_res.append(val.ptr(), val.length(), temp_je.s.cs);
+
+ if (a_res.length() == strlen(const_json_value) &&
+ !strncmp((const char*)const_json_value, a_res.ptr(),
+ a_res.length()))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool Json_schema_const::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ const char *start= (char*)je->value, *end= (char*)je->value+je->value_len;
+ json_engine_t temp_je;
+ String a_res("", 0, je->s.cs);
+ int err;
+
+ type= je->value_type;
+
+ if (!json_value_scalar(je))
+ {
+ if (json_skip_level(je))
+ return true;
+ end= (char*)je->s.c_str;
+ }
+
+ String val((char*)je->value, end-start, je->s.cs);
+
+ json_scan_start(&temp_je, je->s.cs, (const uchar *) val.ptr(),
+ (const uchar *) val.end());
+ if (je->value_type != JSON_VALUE_STRING)
+ {
+ if (json_read_value(&temp_je))
+ return true;
+ json_get_normalized_string(&temp_je, &a_res, &err);
+ if (err)
+ return true;
+ }
+ else
+ a_res.append(val.ptr(), val.length(), je->s.cs);
+
+ this->const_json_value= (char*)alloc_root(thd->mem_root,
+ a_res.length()+1);
+ if (!const_json_value)
+ return true;
+
+ const_json_value[a_res.length()]= '\0';
+ strncpy(const_json_value, (const char*)a_res.ptr(), a_res.length());
+
+ return false;
+}
+
+bool Json_schema_enum::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t temp_je;
+ temp_je= *je;
+
+ String norm_str((char*)"",0, je->s.cs);
+
+ String a_res("", 0, je->s.cs);
+ int err= 1;
+
+ if (temp_je.value_type > JSON_VALUE_NUMBER)
+ {
+ if (!(enum_scalar & (1 << temp_je.value_type)))
+ return true;
+ else
+ return false;
+ }
+ json_get_normalized_string(&temp_je, &a_res, &err);
+ if (err)
+ return true;
+
+ norm_str.append((const char*)a_res.ptr(), a_res.length(), je->s.cs);
+
+ if (my_hash_search(&this->enum_values, (const uchar*)(norm_str.ptr()),
+ strlen((const char*)(norm_str.ptr()))))
+ return false;
+ else
+ return true;
+}
+
+bool Json_schema_enum::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int count= 0;
+ if (my_hash_init(PSI_INSTRUMENT_ME,
+ &this->enum_values,
+ je->s.cs, 1024, 0, 0, (my_hash_get_key) get_key_name,
+ NULL, 0))
+ return true;
+
+ if (je->value_type == JSON_VALUE_ARRAY)
+ {
+ int curr_level= je->stack_p;
+ while(json_scan_next(je) == 0 && curr_level <= je->stack_p)
+ {
+ if (json_read_value(je))
+ return true;
+ count++;
+ if (je->value_type > JSON_VALUE_NUMBER)
+ {
+ if (!(enum_scalar & (1 << je->value_type)))
+ enum_scalar|= 1 << je->value_type;
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "enum");
+ return true;
+ }
+ }
+ else
+ {
+ char *norm_str;
+ int err= 1;
+ String a_res("", 0, je->s.cs);
+
+ json_get_normalized_string(je, &a_res, &err);
+ if (err)
+ return true;
+
+ norm_str= (char*)alloc_root(thd->mem_root,
+ a_res.length()+1);
+ if (!norm_str)
+ return true;
+ else
+ {
+ norm_str[a_res.length()]= '\0';
+ strncpy(norm_str, (const char*)a_res.ptr(), a_res.length());
+ if (!my_hash_search(&this->enum_values, (uchar*)norm_str,
+ strlen(norm_str)))
+ {
+ if (my_hash_insert(&this->enum_values, (uchar*)norm_str))
+ return true;
+ }
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "enum");
+ return true;
+ }
+ }
+ }
+ }
+ if (!count)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "enum");
+ return true;
+ }
+ return false;
+ }
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "enum");
+ return true;
+ }
+}
+
+bool Json_schema_maximum::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ return false;
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ return (val <= value) ? false : true;
+}
+
+bool Json_schema_maximum::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maximum");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ value= val;
+
+ return false;
+}
+
+bool Json_schema_minimum::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ return false;
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ return val >= value ? false : true;
+}
+
+bool Json_schema_minimum::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minimum");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ value= val;
+
+ return false;
+}
+
+bool Json_schema_ex_minimum::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ return false;
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ return (val > value) ? false : true;
+}
+
+bool Json_schema_ex_minimum::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "exclusiveMinimum");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ value= val;
+
+ return false;
+}
+
+bool Json_schema_ex_maximum::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ return false;
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ return (val < value) ? false : true;
+}
+
+bool Json_schema_ex_maximum::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "exclusiveMaximum");
+ return true;
+ }
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ value= val;
+
+ return false;
+}
+
+bool Json_schema_multiple_of::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ return false;
+ if (je->num_flags & JSON_NUM_FRAC_PART)
+ return true;
+
+ longlong val= je->s.cs->strntoll((char *) je->value,
+ je->value_len, 10, &end, &err);
+
+ return val % multiple_of;
+}
+
+bool Json_schema_multiple_of::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER || (je->num_flags & JSON_NUM_FRAC_PART))
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "multipleOf");
+ return true;
+ }
+
+ longlong val= je->s.cs->strntoll((char *) je->value,
+ je->value_len, 10, &end, &err);
+ if (val <= 0)
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "multipleOf");
+ multiple_of= val;
+
+ return false;
+}
+
+
+bool Json_schema_max_len::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ if (je->value_type != JSON_VALUE_STRING)
+ return false;
+ return (uint)(je->value_len) <= value ? false : true;
+}
+
+bool Json_schema_max_len::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxLength");
+ return true;
+ }
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxLength");
+ return true;
+ }
+ value= (int)val;
+
+ return false;
+}
+
+bool Json_schema_min_len::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ if (je->value_type != JSON_VALUE_STRING)
+ return false;
+ return (uint)(je->value_len) >= value ? false : true;
+}
+
+bool Json_schema_min_len::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minLength");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minLength");
+ return true;
+ }
+ value= (int)val;
+
+ return false;
+}
+
+bool Json_schema_pattern::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ bool pattern_matches= false;
+
+ /*
+ We want to match a single pattern against multiple
+ string when (see below):
+ 1) with "pattern" when there are different json strings
+ to be validated against one pattern.
+ 2) with "propertyNames", where there is one pattern but
+ multiple property names to be validated against one
+ pattern
+ */
+ if (!k_start && !k_end)
+ {
+ /* 1) */
+ if (je->value_type != JSON_VALUE_STRING)
+ return false;
+ str->str_value.set_or_copy_aligned((const char*)je->value,
+ (size_t)je->value_len, je->s.cs);
+ }
+ else
+ {
+ /* 2) */
+ str->str_value.set_or_copy_aligned((const char*)k_start,
+ (size_t)(k_end-k_start), je->s.cs);
+ }
+ if (re.recompile(pattern))
+ return true;
+ if (re.exec(str, 0, 0))
+ return true;
+ pattern_matches= re.match();
+
+ return pattern_matches ? false : true;
+}
+
+bool Json_schema_pattern::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_STRING)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "pattern");
+ return true;
+ }
+
+ my_repertoire_t repertoire= my_charset_repertoire(je->s.cs);
+ pattern= thd->make_string_literal((const char*)je->value,
+ je->value_len, repertoire);
+ str= new (thd->mem_root) Item_string(thd, "", (uint) 0, je->s.cs);
+ re.init(je->s.cs, 0);
+ re.unset_flag(PCRE2_CASELESS);
+
+ return false;
+}
+
+bool Json_schema_max_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ uint count= 0;
+ json_engine_t curr_je;
+
+ curr_je= *je;
+
+ if (curr_je.value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ int level= curr_je.stack_p;
+ while(json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ count++;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ return count > value ? true : false;
+}
+
+bool Json_schema_max_items::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxItems");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxItems");
+ return true;
+ }
+ value= (int)val;
+
+ return false;
+}
+
+bool Json_schema_min_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ uint count= 0;
+ json_engine_t curr_je;
+
+ curr_je= *je;
+
+ if (curr_je.value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ int level= curr_je.stack_p;
+ while(json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ count++;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ return count < value ? true : false;
+}
+
+bool Json_schema_min_items::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minItems");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxLength");
+ return true;
+ }
+ value= (int)val;
+
+ return false;
+}
+
+bool Json_schema_max_contains::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxContains");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxContains");
+ return true;
+ }
+ value= val;
+ return false;
+}
+
+
+bool Json_schema_min_contains::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minContains");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ value= val;
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minContains");
+ return true;
+ }
+
+ return false;
+}
+
+
+bool Json_schema_contains::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ uint contains_count=0;
+ json_engine_t curr_je; curr_je= *je;
+ int level= je->stack_p;
+ bool validated= true;
+
+ if (curr_je.value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ while(json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ validated= true;
+ if (validate_schema_items(&curr_je, &contains))
+ validated= false;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ if (validated)
+ contains_count++;
+ }
+
+ if ((max_contains ? contains_count <= max_contains->value :
+ contains_count>0) &&
+ (min_contains ? contains_count >= min_contains->value :
+ contains_count>0))
+ return false;
+
+ return true;
+}
+
+bool Json_schema_contains::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "contains");
+ return true;
+ }
+ return create_object_and_handle_keyword(thd, je, &contains, all_keywords);
+}
+
+
+bool Json_schema_items::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type == JSON_VALUE_FALSE)
+ {
+ set_allowed(false);
+ return false;
+ }
+ if (je->value_type == JSON_VALUE_OBJECT)
+ {
+ return create_object_and_handle_keyword(thd, je, &items_schema,
+ all_keywords);
+ }
+ else if (je->value_type != JSON_VALUE_TRUE)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "items");
+ return true;
+ }
+ return false;
+}
+
+bool Json_schema_items::validate_as_alternate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ /*
+ The indexes in prefix array were less than that in the json array.
+ So validate remaining using the json schema
+ */
+ return validate_schema_items(je, &items_schema);
+}
+
+bool Json_schema_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+
+ /*
+ There was no "prefixItesm", so we validate all values in the
+ array using one schema.
+ */
+ int level= je->stack_p, count=0;
+ bool is_false= false;
+ json_engine_t curr_je= *je;
+
+ if (je->value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ if (!allowed)
+ is_false= true;
+
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ count++;
+ if (validate_schema_items(&curr_je, &items_schema))
+ return true;
+ }
+
+ return is_false ? (!count ? false : true) : false;
+}
+
+bool Json_schema_prefix_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ int level= je->stack_p;
+ json_engine_t curr_je= *je;
+ List_iterator <List<Json_schema_keyword>> it1 (prefix_items);
+ List<Json_schema_keyword> *curr_prefix;
+
+ if (curr_je.value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ while(curr_je.s.c_str < curr_je.s.str_end && json_scan_next(&curr_je)==0 &&
+ curr_je.stack_p >= level)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ if (!(curr_prefix=it1++))
+ {
+ if (fall_back_on_alternate_schema(&curr_je))
+ return true;
+ else
+ {
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ }
+ else
+ {
+ if (validate_schema_items(&curr_je, &(*curr_prefix)))
+ return true;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool Json_schema_prefix_items::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_ARRAY)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "prefixItems");
+ return true;
+ }
+
+ int level= je->stack_p;
+ while(json_scan_next(je)==0 && je->stack_p >= level)
+ {
+ json_engine_t temp_je;
+ char *begin, *end;
+ int len;
+
+ if (json_read_value(je))
+ return true;
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "items");
+ return true;
+ }
+ begin= (char*)je->value;
+
+ if (json_skip_level(je))
+ return true;
+
+ end= (char*)je->s.c_str;
+ len= (int)(end-begin);
+
+ json_scan_start(&temp_je, je->s.cs, (const uchar *) begin,
+ (const uchar *)begin+len);
+ List<Json_schema_keyword> *keyword_list=
+ new (thd->mem_root) List<Json_schema_keyword>;
+
+ if (!keyword_list)
+ return true;
+ if (create_object_and_handle_keyword(thd, &temp_je, keyword_list,
+ all_keywords))
+ return true;
+
+ prefix_items.push_back(keyword_list, thd->mem_root);
+ }
+
+ return false;
+}
+
+bool Json_schema_unique_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ HASH unique_items;
+ List <char> norm_str_list;
+ json_engine_t curr_je= *je;
+ int res= true, level= curr_je.stack_p, scalar_val= 0;
+
+ if (curr_je.value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ if (my_hash_init(PSI_INSTRUMENT_ME, &unique_items, curr_je.s.cs,
+ 1024, 0, 0, (my_hash_get_key) get_key_name, NULL, 0))
+ return true;
+
+ while(json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ int err= 1;
+ char *norm_str;
+ String a_res("", 0, curr_je.s.cs);
+
+ if (json_read_value(&curr_je))
+ goto end;
+
+ json_get_normalized_string(&curr_je, &a_res, &err);
+
+ if (err)
+ goto end;
+
+ norm_str= (char*)malloc(a_res.length()+1);
+ if (!norm_str)
+ goto end;
+
+ norm_str[a_res.length()]= '\0';
+ strncpy(norm_str, (const char*)a_res.ptr(), a_res.length());
+ norm_str_list.push_back(norm_str);
+
+ if (curr_je.value_type > JSON_VALUE_NUMBER)
+ {
+ if (scalar_val & 1 << curr_je.value_type)
+ goto end;
+ scalar_val|= 1 << curr_je.value_type;
+ }
+ else
+ {
+ if (!my_hash_search(&unique_items, (uchar*)norm_str,
+ strlen(((const char*)norm_str))))
+ {
+ if (my_hash_insert(&unique_items, (uchar*)norm_str))
+ goto end;
+ }
+ else
+ goto end;
+ }
+ a_res.set("", 0, curr_je.s.cs);
+ }
+
+ res= false;
+
+ end:
+ if (!norm_str_list.is_empty())
+ {
+ List_iterator<char> it(norm_str_list);
+ char *curr_norm_str;
+ while ((curr_norm_str= it++))
+ free(curr_norm_str);
+ norm_str_list.empty();
+ }
+ my_hash_free(&unique_items);
+ return res;
+}
+
+bool Json_schema_unique_items::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type == JSON_VALUE_TRUE)
+ is_unique= true;
+ else if (je->value_type == JSON_VALUE_FALSE)
+ is_unique= false;
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "uniqueItems");
+ return true;
+ }
+ return false;
+}
+
+
+bool Json_schema_max_prop::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ uint properties_count= 0;
+ json_engine_t curr_je= *je;
+ int curr_level= je->stack_p;
+
+ if (curr_je.value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ while (json_scan_next(&curr_je)== 0 && je->stack_p >= curr_level)
+ {
+ switch (curr_je.state)
+ {
+ case JST_KEY:
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ properties_count++;
+
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ }
+ }
+ return properties_count > value ? true : false;
+}
+
+bool Json_schema_max_prop::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxProperties");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "maxProperties");
+ return true;
+ }
+ value= (int)val;
+
+ return false;
+}
+
+bool Json_schema_min_prop::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ uint properties_count= 0;
+ int curr_level= je->stack_p;
+ json_engine_t curr_je= *je;
+
+ if (curr_je.value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ while (json_scan_next(&curr_je)== 0 && je->stack_p >= curr_level)
+ {
+ switch (curr_je.state)
+ {
+ case JST_KEY:
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ properties_count++;
+
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ }
+ }
+ return properties_count < value ? true : false;
+}
+
+bool Json_schema_min_prop::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int err= 0;
+ char *end;
+
+ if (je->value_type != JSON_VALUE_NUMBER)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minProperties");
+ return true;
+ }
+
+ double val= je->s.cs->strntod((char *) je->value,
+ je->value_len, &end, &err);
+ if (val < 0)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "minProperties");
+ return true;
+ }
+ value= (int)val;
+
+ return false;
+}
+
+bool Json_schema_required::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+ List<char> malloc_mem_list;
+ HASH required;
+ int res= true, curr_level= curr_je.stack_p;
+ List_iterator<String> it(required_properties);
+ String *curr_str;
+
+ if (curr_je.value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ if(my_hash_init(PSI_INSTRUMENT_ME, &required,
+ curr_je.s.cs, 1024, 0, 0, (my_hash_get_key) get_key_name,
+ NULL, 0))
+ return true;
+ while (json_scan_next(&curr_je)== 0 && curr_je.stack_p >= curr_level)
+ {
+ switch (curr_je.state)
+ {
+ case JST_KEY:
+ {
+ const uchar *key_end, *key_start;
+ int key_len;
+ char *str;
+
+ key_start= curr_je.s.c_str;
+ do
+ {
+ key_end= curr_je.s.c_str;
+ } while (json_read_keyname_chr(&curr_je) == 0);
+
+ key_len= (int)(key_end-key_start);
+ str= (char*)malloc((size_t)(key_len)+1);
+ strncpy(str, (const char*)key_start, key_len);
+ str[key_len]='\0';
+
+ if (my_hash_insert(&required, (const uchar*)str))
+ goto error;
+ malloc_mem_list.push_back(str);
+ }
+ }
+ }
+ while ((curr_str= it++))
+ {
+ if (!my_hash_search(&required, (const uchar*)curr_str->ptr(),
+ curr_str->length()))
+ goto error;
+ }
+ res= false;
+ error:
+ if (!malloc_mem_list.is_empty())
+ {
+ List_iterator<char> it(malloc_mem_list);
+ char *curr_ptr;
+ while ((curr_ptr= it++))
+ free(curr_ptr);
+ malloc_mem_list.empty();
+ }
+ my_hash_free(&required);
+ return res;
+}
+
+bool Json_schema_required::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ int level= je->stack_p;
+
+ if (je->value_type != JSON_VALUE_ARRAY)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "required");
+ return true;
+ }
+ while(json_scan_next(je)==0 && level <= je->stack_p)
+ {
+ if (json_read_value(je))
+ return true;
+ if (je->value_type != JSON_VALUE_STRING)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "required");
+ return true;
+ }
+ else
+ {
+ String *str= new (thd->mem_root)String((char*)je->value,
+ je->value_len, je->s.cs);
+ this->required_properties.push_back(str, thd->mem_root);
+ }
+ }
+ return je->s.error ? true : false;
+}
+
+bool Json_schema_dependent_required::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+ HASH properties;
+ bool res= true;
+ int curr_level= curr_je.stack_p;
+ List <char> malloc_mem_list;
+ List_iterator<st_dependent_keywords> it(dependent_required);
+ st_dependent_keywords *curr_keyword= NULL;
+
+ if (curr_je.value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ if (my_hash_init(PSI_INSTRUMENT_ME, &properties,
+ curr_je.s.cs, 1024, 0, 0, (my_hash_get_key) get_key_name,
+ NULL, 0))
+ return true;
+
+ while (json_scan_next(&curr_je)== 0 && curr_je.stack_p >= curr_level)
+ {
+ switch (curr_je.state)
+ {
+ case JST_KEY:
+ {
+ const uchar *key_end, *key_start;
+ int key_len;
+ char *str;
+
+ key_start= curr_je.s.c_str;
+ do
+ {
+ key_end= curr_je.s.c_str;
+ } while (json_read_keyname_chr(&curr_je) == 0);
+
+ key_len= (int)(key_end-key_start);
+ str= (char*)malloc((size_t)(key_len)+1);
+ strncpy(str, (const char*)key_start, key_len);
+ str[(int)(key_end-key_start)]='\0';
+
+ if (my_hash_insert(&properties, (const uchar*)str))
+ goto error;
+ malloc_mem_list.push_back(str);
+ }
+ }
+ }
+ while ((curr_keyword= it++))
+ {
+ if (my_hash_search(&properties,
+ (const uchar*)curr_keyword->property->ptr(),
+ curr_keyword->property->length()))
+ {
+ List_iterator<String> it2(curr_keyword->dependents);
+ String *curr_depended_keyword;
+ while ((curr_depended_keyword= it2++))
+ {
+ if (!my_hash_search(&properties,
+ (const uchar*)curr_depended_keyword->ptr(),
+ curr_depended_keyword->length()))
+ {
+ goto error;
+ }
+ }
+ }
+ }
+ res= false;
+
+ error:
+ my_hash_free(&properties);
+ if (!malloc_mem_list.is_empty())
+ {
+ List_iterator<char> it(malloc_mem_list);
+ char *curr_ptr;
+ while ((curr_ptr= it++))
+ free(curr_ptr);
+ malloc_mem_list.empty();
+ }
+ return res;
+}
+
+bool Json_schema_dependent_required::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type == JSON_VALUE_OBJECT)
+ {
+ int level1= je->stack_p;
+ while (json_scan_next(je)==0 && level1 <= je->stack_p)
+ {
+ switch(je->state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start;
+ int k_len;
+
+ k_start= je->s.c_str;
+ do
+ {
+ k_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ k_len= (int)(k_end-k_start);
+ if (json_read_value(je))
+ return true;
+
+ if (je->value_type == JSON_VALUE_ARRAY)
+ {
+ st_dependent_keywords *curr_dependent_keywords=
+ (st_dependent_keywords *) alloc_root(thd->mem_root,
+ sizeof(st_dependent_keywords));
+
+ if (curr_dependent_keywords)
+ {
+ curr_dependent_keywords->property=
+ new (thd->mem_root)String((char*)k_start,
+ k_len, je->s.cs);
+ curr_dependent_keywords->dependents.empty();
+ int level2= je->stack_p;
+ while (json_scan_next(je)==0 && level2 <= je->stack_p)
+ {
+ if (json_read_value(je) || je->value_type != JSON_VALUE_STRING)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0),
+ "dependentRequired");
+ return true;
+ }
+ else
+ {
+ String *str=
+ new (thd->mem_root)String((char*)je->value,
+ je->value_len, je->s.cs);
+ curr_dependent_keywords->dependents.push_back(str, thd->mem_root);
+ }
+ }
+ dependent_required.push_back(curr_dependent_keywords, thd->mem_root);
+ }
+ else
+ {
+ return true;
+ }
+ }
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0),
+ "dependentRequired");
+ return true;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "dependentRequired");
+ return true;
+ }
+ return je->s.error ? true : false;
+}
+
+bool Json_schema_property_names::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+ int level= curr_je.stack_p;
+
+ if (je->value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ switch(curr_je.state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start;
+ k_start= curr_je.s.c_str;
+ do
+ {
+ k_end= curr_je.s.c_str;
+ } while (json_read_keyname_chr(&curr_je) == 0);
+
+ if (json_read_value(&curr_je))
+ return true;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+
+ List_iterator <Json_schema_keyword> it1 (property_names);
+ Json_schema_keyword *curr_schema= NULL;
+ while((curr_schema= it1++))
+ {
+ if (curr_schema->validate(&curr_je, k_start, k_end))
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+bool Json_schema_property_names::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "propertyNames");
+ return true;
+ }
+ if (create_object_and_handle_keyword(thd, je, &property_names,
+ all_keywords))
+ return true;
+
+ return false;
+}
+
+/*
+ additiona_items, additional_properties, unevaluated_items,
+ unevaluated_properties are all going to be schemas
+ (basically of object type). So they all can be handled
+ just like any other schema.
+*/
+bool
+Json_schema_additional_and_unevaluated::handle_keyword(THD *thd,
+ json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type == JSON_VALUE_FALSE)
+ {
+ set_allowed(false);
+ return false;
+ }
+ else if (je->value_type == JSON_VALUE_OBJECT)
+ {
+ return create_object_and_handle_keyword(thd, je, &schema_list,
+ all_keywords);
+ }
+ if (je->value_type != JSON_VALUE_TRUE)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), keyword_map->func_name.str);
+ return true;
+ }
+ return false;
+}
+
+/*
+ Validating properties as an alternate shcema happens only when we have
+ logic keywords. Example we have allOf, and one key is not
+ validated against allOf but it is present in "properties" and validates
+ against it. Then the validation result should be true. So we would want that
+ key to be validated against "properties", with "properties" begin
+ alternate schema.
+*/
+bool Json_schema_properties::validate_as_alternate(const json_engine_t *je,
+ const uchar* k_start,
+ const uchar* k_end)
+{
+ st_property *curr_property= NULL;
+ json_engine_t curr_je= *je;
+ if ((curr_property=
+ (st_property*)my_hash_search(&properties,
+ (const uchar*)k_start,
+ (size_t)(k_end-k_start))))
+ {
+ if (validate_schema_items(&curr_je, curr_property->curr_schema))
+ return true;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ else
+ {
+ if (alternate_schema && alternate_schema->validate_as_alternate(je, k_start, k_end))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+Json_schema_additional_and_unevaluated::
+ validate_as_alternate(const json_engine_t *je,
+ const uchar* k_start,
+ const uchar* k_end)
+{
+ if (!allowed)
+ return true;
+ return validate_schema_items(je, &schema_list);
+}
+
+
+/*
+ Makes sense on its own, without existence of additionalProperties,
+ properties, patternProperties.
+*/
+bool Json_schema_unevaluated_properties::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+ int level= curr_je.stack_p, count= 0;
+ bool has_false= false;
+
+ if (je->value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ if (!allowed)
+ has_false= true;
+
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ count++;
+ if (validate_schema_items(&curr_je, &schema_list))
+ return true;
+ }
+ return has_false ? (!count ? false: true) : false;
+}
+
+/*
+ Unlike additionalItems, additionalProperties makes sense on its own
+ without existence of properties and patternProperties,
+*/
+bool Json_schema_additional_properties::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+ int level= curr_je.stack_p;
+
+ if (je->value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ switch(curr_je.state)
+ {
+ case JST_KEY:
+ if (json_read_value(&curr_je))
+ return true;
+ if (validate_schema_items(&curr_je, &schema_list))
+ return true;
+ }
+ }
+
+ return false;
+}
+
+/*
+ When items/prefix Items is present and if a key is not validated
+ against it, then additionalItems is validated as an "alternate validation".
+ It will be present/linked as alternate keyword and will not be present
+ in the schema list for that level. This function called when
+ "items"/"prefixItems" is absent, i.e when additionalItems appears
+ in the schema list for that level.
+ So additional Properties on its own will not make sense.
+*/
+bool Json_schema_additional_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ return false;
+}
+bool Json_schema_unevaluated_items::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ /*
+ Makes sense on its own without adjacent keywords.
+ */
+ int level= je->stack_p, count=0;
+ bool is_false= false;
+ json_engine_t curr_je= *je;
+
+ if (je->value_type != JSON_VALUE_ARRAY)
+ return false;
+
+ if (!allowed)
+ is_false= true;
+
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ if (json_read_value(&curr_je))
+ return true;
+ count++;
+ if (validate_schema_items(&curr_je, &schema_list))
+ return true;
+ }
+
+ return is_false ? (!count ? false : true) : false;
+}
+
+bool Json_schema_properties::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+
+ if (curr_je.value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ int level= curr_je.stack_p;
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ switch(curr_je.state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start= curr_je.s.c_str;
+ do
+ {
+ k_end= curr_je.s.c_str;
+ } while (json_read_keyname_chr(&curr_je) == 0);
+
+ if (json_read_value(&curr_je))
+ return true;
+
+ st_property *curr_property= NULL;
+ if ((curr_property=
+ (st_property*)my_hash_search(&properties,
+ (const uchar*)k_start,
+ (size_t)(k_end-k_start))))
+ {
+ if (validate_schema_items(&curr_je, curr_property->curr_schema))
+ return true;
+ }
+ else
+ {
+ if (fall_back_on_alternate_schema(&curr_je, k_start, k_end))
+ return true;
+ }
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+bool Json_schema_properties::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "properties");
+ return true;
+ }
+
+ if (my_hash_init(PSI_INSTRUMENT_ME,
+ &this->properties,
+ je->s.cs, 1024, 0, 0,
+ (my_hash_get_key) get_key_name_for_property,
+ NULL, 0))
+ return true;
+ is_hash_inited= true;
+
+ int level= je->stack_p;
+ while (json_scan_next(je)==0 && level <= je->stack_p)
+ {
+ switch(je->state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start= je->s.c_str;
+ do
+ {
+ k_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ if (json_read_value(je))
+ return true;
+
+ st_property *curr_property=
+ (st_property*)alloc_root(thd->mem_root,
+ sizeof(st_property));
+ if (curr_property)
+ {
+ curr_property->key_name= (char*)alloc_root(thd->mem_root,
+ (size_t)(k_end-k_start)+1);
+ curr_property->curr_schema=
+ new (thd->mem_root) List<Json_schema_keyword>;
+ if (curr_property->key_name)
+ {
+ curr_property->key_name[(int)(k_end-k_start)]= '\0';
+ strncpy((char*)curr_property->key_name, (const char*)k_start,
+ (size_t)(k_end-k_start));
+ if (create_object_and_handle_keyword(thd, je,
+ curr_property->curr_schema,
+ all_keywords))
+ return true;
+ if (my_hash_insert(&properties, (const uchar*)curr_property))
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return je->s.error ? true : false;
+}
+
+bool Json_schema_pattern_properties::
+ validate_as_alternate(const json_engine_t *curr_je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ bool match_found= false;
+ List_iterator <st_pattern_to_property> it1 (pattern_properties);
+ st_pattern_to_property *curr_pattern_property= NULL;
+
+ str->str_value.set_or_copy_aligned((const char*)k_start,
+ (size_t)(k_end-k_start), curr_je->s.cs);
+
+ while ((curr_pattern_property= it1++))
+ {
+ if (curr_pattern_property->re.recompile(curr_pattern_property->pattern))
+ return true;
+ if (curr_pattern_property->re.exec(str, 0, 0))
+ return true;
+ if (curr_pattern_property->re.match())
+ {
+ match_found= true;
+ if (validate_schema_items(curr_je, curr_pattern_property->curr_schema))
+ return true;
+ break;
+ }
+ }
+ if (!match_found)
+ {
+ if (fall_back_on_alternate_schema(curr_je))
+ return true;
+ }
+ return false;
+}
+
+
+bool Json_schema_pattern_properties::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ json_engine_t curr_je= *je;
+ int level= je->stack_p;
+ bool match_found= false;
+
+ if (je->value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ switch(curr_je.state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start= curr_je.s.c_str;
+ do
+ {
+ k_end= curr_je.s.c_str;
+ } while (json_read_keyname_chr(&curr_je) == 0);
+
+ str->str_value.set_or_copy_aligned((const char*)k_start,
+ (size_t)(k_end-k_start), curr_je.s.cs);
+
+ if (json_read_value(&curr_je))
+ return true;
+
+ List_iterator <st_pattern_to_property> it1 (pattern_properties);
+ st_pattern_to_property *curr_pattern_property= NULL;
+
+ while ((curr_pattern_property= it1++))
+ {
+ if (curr_pattern_property->re.recompile(curr_pattern_property->pattern))
+ return true;
+ if (curr_pattern_property->re.exec(str, 0, 0))
+ return true;
+ if (curr_pattern_property->re.match())
+ {
+ match_found= true;
+ if (validate_schema_items(&curr_je, curr_pattern_property->curr_schema))
+ return true;
+ }
+ }
+ if (!match_found)
+ {
+ if (fall_back_on_alternate_schema(&curr_je, k_start, k_end))
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+
+
+bool Json_schema_pattern_properties::handle_keyword(THD *thd,
+ json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "patternProperties");
+ return true;
+ }
+
+ str= new (thd->mem_root) Item_string(thd, "", (uint) 0, je->s.cs);
+
+ int level= je->stack_p;
+ while (json_scan_next(je)==0 && level <= je->stack_p)
+ {
+ switch(je->state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start= je->s.c_str;
+ do
+ {
+ k_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ if (json_read_value(je))
+ return true;
+
+ st_pattern_to_property *curr_pattern_to_property= NULL;
+
+ curr_pattern_to_property= new (thd->mem_root) pattern_to_property();
+ if (curr_pattern_to_property)
+ {
+ my_repertoire_t repertoire= my_charset_repertoire(je->s.cs);
+ curr_pattern_to_property->pattern=
+ thd->make_string_literal((const char*)k_start,
+ (size_t)(k_end-k_start),
+ repertoire);
+ curr_pattern_to_property->re.init(je->s.cs, 0);
+ curr_pattern_to_property->re.unset_flag(PCRE2_CASELESS);
+ curr_pattern_to_property->curr_schema=
+ new (thd->mem_root) List<Json_schema_keyword>;
+
+ if (curr_pattern_to_property->curr_schema)
+ {
+ if (create_object_and_handle_keyword(thd, je,
+ curr_pattern_to_property->curr_schema,
+ all_keywords))
+ return true;
+ }
+
+ pattern_properties.push_back(curr_pattern_to_property, thd->mem_root);
+ }
+ }
+ }
+ }
+ return false;
+}
+
+bool Json_schema_logic::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_ARRAY)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), keyword_map->func_name.str);
+ return true;
+ }
+
+ int level= je->stack_p;
+ while(json_scan_next(je)==0 && je->stack_p >= level)
+ {
+ json_engine_t temp_je;
+ char *begin, *end;
+ int len;
+
+ if (json_read_value(je))
+ return true;
+ begin= (char*)je->value;
+
+ if (json_skip_level(je))
+ return true;
+
+ end= (char*)je->s.c_str;
+ len= (int)(end-begin);
+
+ json_scan_start(&temp_je, je->s.cs, (const uchar *) begin,
+ (const uchar *)begin+len);
+ List<Json_schema_keyword> *keyword_list=
+ new (thd->mem_root) List<Json_schema_keyword>;
+
+ if (!keyword_list)
+ return true;
+ if (create_object_and_handle_keyword(thd, &temp_je, keyword_list,
+ all_keywords))
+ return true;
+
+ schema_items.push_back(keyword_list, thd->mem_root);
+ }
+
+ return false;
+}
+
+bool Json_schema_logic::check_validation(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar *k_end)
+{
+ List_iterator <List<Json_schema_keyword>> it1 (schema_items);
+ List<Json_schema_keyword> *curr_schema= NULL;
+ Json_schema_keyword *curr_alternate_schema= NULL;
+ uint count_validations= 0;
+ bool validated= true;
+
+ if (je->value_type == JSON_VALUE_ARRAY)
+ curr_alternate_schema= alternate_choice1;
+ else if (je->value_type == JSON_VALUE_OBJECT)
+ curr_alternate_schema= alternate_choice2;
+
+ while ((curr_schema= it1++))
+ {
+ List_iterator<Json_schema_keyword> it2(*curr_schema);
+ Json_schema_keyword *curr_keyword= NULL;
+ validated= true;
+
+ while ((curr_keyword=it2++))
+ {
+ if (!curr_keyword->alternate_schema)
+ curr_keyword->alternate_schema= curr_alternate_schema;
+ if (curr_keyword->validate(je))
+ {
+ validated= false;
+ break;
+ }
+ }
+ if (validated)
+ {
+ count_validations++;
+ if (logic_flag & HAS_NOT)
+ return true;
+ }
+ }
+
+ if (validate_count(&count_validations, &schema_items.elements))
+ return true;
+
+ return false;
+}
+bool Json_schema_logic::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar* k_end)
+{
+ return check_validation(je, k_start, k_end);
+}
+
+bool Json_schema_not::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ bool res= false;
+
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), keyword_map->func_name.str);
+ return true;
+ }
+
+ res= create_object_and_handle_keyword(thd, je, &schema_list, all_keywords);
+
+ schema_items.push_back(&schema_list, thd->mem_root);
+
+ return res;
+}
+
+
+bool Json_schema_keyword::validate_schema_items(const json_engine_t *je,
+ List<Json_schema_keyword>
+ *schema_items)
+{
+ json_engine_t curr_je= *je;
+ List_iterator<Json_schema_keyword> it1(*schema_items);
+ Json_schema_keyword *curr_schema= NULL;
+
+ while((curr_schema= it1++))
+ {
+ if (curr_schema->validate(&curr_je))
+ return true;
+ }
+
+ return false;
+}
+
+bool Json_schema_conditional::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar *k_end)
+{
+ if (if_cond)
+ {
+ if (!if_cond->validate_schema_items(je,
+ if_cond->get_validation_keywords()))
+ {
+ if (then_cond)
+ {
+ if (then_cond->validate_schema_items(je,
+ then_cond->get_validation_keywords()))
+ return true;
+ }
+ }
+ else
+ {
+ if (else_cond)
+ {
+ if (else_cond->validate_schema_items(je,
+ else_cond->get_validation_keywords()))
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+
+bool Json_schema_conditional::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), keyword_map->func_name.str);
+ return true;
+ }
+ return create_object_and_handle_keyword(thd, je, &conditions_schema,
+ all_keywords);
+}
+
+bool Json_schema_dependent_schemas::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_OBJECT)
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "properties");
+ return true;
+ }
+
+ if (my_hash_init(PSI_INSTRUMENT_ME,
+ &this->properties,
+ je->s.cs, 1024, 0, 0,
+ (my_hash_get_key) get_key_name_for_property,
+ NULL, 0))
+ return true;
+ is_hash_inited= true;
+
+ int level= je->stack_p;
+ while (json_scan_next(je)==0 && level <= je->stack_p)
+ {
+ switch(je->state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start= je->s.c_str;
+ do
+ {
+ k_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ if (json_read_value(je))
+ return true;
+
+ st_property *curr_property=
+ (st_property*)alloc_root(thd->mem_root,
+ sizeof(st_property));
+ if (curr_property)
+ {
+ curr_property->key_name= (char*)alloc_root(thd->mem_root,
+ (size_t)(k_end-k_start)+1);
+ curr_property->curr_schema=
+ new (thd->mem_root) List<Json_schema_keyword>;
+ if (curr_property->key_name)
+ {
+ curr_property->key_name[(int)(k_end-k_start)]= '\0';
+ strncpy((char*)curr_property->key_name, (const char*)k_start,
+ (size_t)(k_end-k_start));
+ if (create_object_and_handle_keyword(thd, je,
+ curr_property->curr_schema,
+ all_keywords))
+ return true;
+ if (my_hash_insert(&properties, (const uchar*)curr_property))
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+}
+
+bool Json_schema_dependent_schemas::validate(const json_engine_t *je,
+ const uchar *k_start,
+ const uchar *k_end)
+{
+ json_engine_t curr_je= *je;
+
+ if (curr_je.value_type != JSON_VALUE_OBJECT)
+ return false;
+
+ int level= curr_je.stack_p;
+ while (json_scan_next(&curr_je)==0 && level <= curr_je.stack_p)
+ {
+ switch(curr_je.state)
+ {
+ case JST_KEY:
+ {
+ const uchar *k_end, *k_start= curr_je.s.c_str;
+ do
+ {
+ k_end= curr_je.s.c_str;
+ } while (json_read_keyname_chr(&curr_je) == 0);
+
+ if (json_read_value(&curr_je))
+ return true;
+
+ st_property *curr_property= NULL;
+ if ((curr_property=
+ (st_property*)my_hash_search(&properties,
+ (const uchar*)k_start,
+ (size_t)(k_end-k_start))))
+ {
+ if (validate_schema_items(je, curr_property->curr_schema))
+ return true;
+ if (!json_value_scalar(&curr_je))
+ {
+ if (json_skip_level(&curr_je))
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+bool Json_schema_media_string::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ if (je->value_type != JSON_VALUE_STRING)
+ {
+ String curr_keyword((char*)key_start, key_end-key_start, je->s.cs);
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), curr_keyword.ptr());
+ return true;
+ }
+
+ return false;
+}
+
+bool Json_schema_reference::handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword>
+ *all_keywords)
+{
+ String keyword(0);
+ keyword.append((const char*)key_start, (int)(key_end-key_start));
+ my_error(ER_JSON_SCHEMA_KEYWORD_UNSUPPORTED, MYF(0), keyword.ptr());
+ return true;
+}
+
+Json_schema_keyword* create_object(THD *thd,
+ Json_schema_keyword *curr_keyword,
+ const uchar* key_start,
+ const uchar* key_end)
+{
+ st_json_schema_keyword_map *curr_keyword_map= NULL;
+ curr_keyword_map=
+ (st_json_schema_keyword_map*)
+ my_hash_search(&all_keywords_hash,
+ key_start,
+ (size_t)(key_end-key_start));
+ if (!curr_keyword_map)
+ {
+ curr_keyword_map= &empty_func_map;
+ }
+ curr_keyword= (curr_keyword_map->func)(thd);
+ curr_keyword->keyword_map= curr_keyword_map;
+
+ return curr_keyword;
+}
+
+static int sort_by_priority(Json_schema_keyword* el1, Json_schema_keyword* el2,
+ void *arg)
+{
+ return el1->priority > el2->priority;
+}
+
+void fix_keyword_list(List <Json_schema_keyword> *keyword_list)
+{
+ bubble_sort<Json_schema_keyword>(keyword_list, sort_by_priority, NULL);
+
+ if (keyword_list && !keyword_list->is_empty())
+ {
+ int count= 1;
+
+ List_iterator<Json_schema_keyword> it2(*keyword_list);
+ Json_schema_keyword *curr_schema= NULL;
+
+ while((curr_schema=it2++))
+ {
+ curr_schema->set_alternate_schema(keyword_list->elem(count));
+ count++;
+ }
+ }
+ return;
+}
+
+/*
+ Some schemas are interdependent: they are evaluated only if their
+ adjacent schemas fail to evaluate. So the need to be linked
+ in a way that if one fails to evaluate a value, we can try
+ an alternate schema.
+ Hence push such keywords in a temporary list, adjust the interdependence
+ and then add them to main schema list.
+*/
+bool
+add_schema_interdependence(THD *thd, List<Json_schema_keyword> *temporary,
+ List<Json_schema_keyword> *keyword_list)
+{
+ List_iterator<Json_schema_keyword> temp_it(*temporary);
+ List<Json_schema_keyword> array_prop, object_prop, logic_prop, conditional_prop;
+ Json_schema_keyword *temp_keyword= NULL, *contains= NULL,
+ *max_contains= NULL, *min_contains= NULL,
+ *if_cond= NULL, *then_cond= NULL, *else_cond= NULL;
+
+ while((temp_keyword= temp_it++))
+ {
+ size_t len= strlen(temp_keyword->keyword_map->func_name.str);
+ st_json_schema_keyword_map *curr_element= NULL;
+ if ((curr_element= (st_json_schema_keyword_map*) my_hash_search(&all_keywords_hash,
+ (uchar*)(temp_keyword->keyword_map->func_name.str), len)))
+ {
+ if (temp_keyword->priority > 0)
+ {
+ if (curr_element->flag == JSON_SCHEMA_ARRAY_KEYWORD)
+ array_prop.push_back(temp_keyword);
+ else if (curr_element->flag == JSON_SCHEMA_OBJECT_KEYWORD)
+ object_prop.push_back(temp_keyword);
+ else if (curr_element->flag == JSON_SCHEMA_LOGIC_KEYWORD)
+ logic_prop.push_back(temp_keyword);
+ }
+ else if (temp_keyword->keyword_map == &(json_schema_func_array[35]))
+ if_cond= temp_keyword;
+ else if (temp_keyword->keyword_map == &(json_schema_func_array[36]))
+ then_cond= temp_keyword;
+ else if (temp_keyword->keyword_map == &(json_schema_func_array[37]))
+ else_cond= temp_keyword;
+ else if (temp_keyword->keyword_map == &(json_schema_func_array[18]))
+ contains= temp_keyword;
+ else if (temp_keyword->keyword_map == &(json_schema_func_array[20]))
+ min_contains= temp_keyword;
+ else if (temp_keyword->keyword_map == &(json_schema_func_array[19]))
+ max_contains= temp_keyword;
+ else
+ keyword_list->push_back(temp_keyword, thd->mem_root);
+ }
+ }
+
+ if (if_cond)
+ {
+ Json_schema_conditional *cond_schema=
+ new (current_thd->mem_root) Json_schema_conditional();
+ if (cond_schema)
+ cond_schema->set_conditions(if_cond, then_cond, else_cond);
+ keyword_list->push_back(cond_schema, thd->mem_root);
+ }
+ if (contains)
+ {
+ contains->set_dependents(min_contains, max_contains);
+ keyword_list->push_back(contains, thd->mem_root);
+ }
+
+ fix_keyword_list(&array_prop);
+ fix_keyword_list(&object_prop);
+
+ /*
+ We want to check for alternate schema
+ When a key is not validated by logic keywords, we would want to also check
+ schema like properties, items etc to make sure the key is not validated by
+ any schema in order to return correct result. So "link" other schemas as
+ alternate when logic properties is present and only push logic keywords
+ to the schema list.
+ */
+ if (!logic_prop.is_empty())
+ {
+ List_iterator<Json_schema_keyword> it(logic_prop);
+ Json_schema_keyword *curr_schema= NULL;
+ while((curr_schema= it++))
+ {
+ curr_schema->set_alternate_schema_choice(array_prop.elem(0),
+ object_prop.elem(0));
+ keyword_list->push_back(curr_schema, thd->mem_root);
+ }
+ array_prop.empty();
+ object_prop.empty();
+ }
+ else
+ {
+ if (array_prop.elem(0))
+ keyword_list->push_back(array_prop.elem(0), thd->mem_root);
+ if (object_prop.elem(0))
+ keyword_list->push_back(object_prop.elem(0), thd->mem_root);
+ }
+ return false;
+}
+
+
+/*
+ Scan all keywords on the current level and put them in a temporary
+ list. Once scanning is done, adjust the dependency if needed, and
+ add the keywords in keyword_list
+*/
+bool create_object_and_handle_keyword(THD *thd, json_engine_t *je,
+ List<Json_schema_keyword> *keyword_list,
+ List<Json_schema_keyword> *all_keywords)
+{
+ int level= je->stack_p;
+ List<Json_schema_keyword> temporary_list;
+
+ DBUG_EXECUTE_IF("json_check_min_stack_requirement",
+ {
+ long arbitrary_var;
+ long stack_used_up=
+ (available_stack_size(thd->thread_stack,
+ &arbitrary_var));
+ ALLOCATE_MEM_ON_STACK(my_thread_stack_size-stack_used_up-STACK_MIN_SIZE);
+ });
+ if (check_stack_overrun(thd, STACK_MIN_SIZE , NULL))
+ return 1;
+
+ while (json_scan_next(je)== 0 && je->stack_p >= level)
+ {
+ switch(je->state)
+ {
+ case JST_KEY:
+ {
+ const uchar *key_end, *key_start;
+
+ key_start= je->s.c_str;
+ do
+ {
+ key_end= je->s.c_str;
+ } while (json_read_keyname_chr(je) == 0);
+
+ if (json_read_value(je))
+ return true;
+
+ Json_schema_keyword *curr_keyword= NULL;
+ curr_keyword= create_object(thd, curr_keyword,
+ key_start, key_end);
+ if (all_keywords)
+ all_keywords->push_back(curr_keyword, thd->mem_root);
+ if (curr_keyword->handle_keyword(thd, je,
+ (const char*)key_start,
+ (const char*)key_end, all_keywords))
+ {
+ return true;
+ }
+ temporary_list.push_back(curr_keyword, thd->mem_root);
+ break;
+ }
+ }
+ }
+
+ if (add_schema_interdependence(thd, &temporary_list, keyword_list))
+ return true;
+
+ return je->s.error ? true : false;
+}
+
+uchar* get_key_name_for_property(const char *key_name, size_t *length,
+ my_bool /* unused */)
+{
+ st_property * curr_property= (st_property*)(key_name);
+
+ *length= strlen(curr_property->key_name);
+ return (uchar*) curr_property->key_name;
+}
+
+uchar* get_key_name_for_func(const char *key_name, size_t *length,
+ my_bool /* unused */)
+{
+ st_json_schema_keyword_map * curr_keyword=
+ (st_json_schema_keyword_map*)(key_name);
+
+ *length= curr_keyword->func_name.length;
+ return (uchar*)curr_keyword->func_name.str;
+}
+
+bool setup_json_schema_keyword_hash()
+{
+ if (my_hash_init(PSI_INSTRUMENT_ME,
+ &all_keywords_hash,
+ system_charset_info, 1024, 0, 0,
+ (my_hash_get_key) get_key_name_for_func,
+ NULL, 0))
+ return true;
+
+ int size= sizeof(json_schema_func_array)/sizeof(json_schema_func_array[0]);
+ for (int i= 0; i < size; i++)
+ {
+ if (my_hash_insert(&all_keywords_hash, (uchar*)(&json_schema_func_array[i])))
+ return true;
+ }
+ return false;
+}
+
+void cleanup_json_schema_keyword_hash()
+{
+ my_hash_free(&all_keywords_hash);
+
+ return;
+}
diff --git a/sql/json_schema.h b/sql/json_schema.h
new file mode 100644
index 00000000..96e5f8f6
--- /dev/null
+++ b/sql/json_schema.h
@@ -0,0 +1,827 @@
+#ifndef JSON_SCHEMA_INCLUDED
+#define JSON_SCHEMA_INCLUDED
+
+/* Copyright (c) 2016, 2021, MariaDB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+
+/* This file defines all json schema classes. */
+
+#include "sql_class.h"
+#include "sql_type_json.h"
+#include "json_schema_helper.h"
+
+struct st_json_schema_keyword_map;
+
+class Json_schema_keyword : public Sql_alloc
+{
+ public:
+ Json_schema_keyword *alternate_schema;
+ st_json_schema_keyword_map *keyword_map;
+ double value;
+ uint priority;
+ bool allowed;
+
+ Json_schema_keyword() : alternate_schema(NULL), keyword_map(NULL),
+ value(0), priority(0), allowed(true)
+ {
+ }
+ virtual ~Json_schema_keyword() = default;
+
+ /*
+ Called for each keyword on the current level.
+ */
+ virtual bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL)
+ { return false; }
+ virtual bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords)
+ {
+ return false;
+ }
+ virtual List<Json_schema_keyword>* get_validation_keywords()
+ {
+ return NULL;
+ }
+ void set_alternate_schema(Json_schema_keyword *schema)
+ {
+ alternate_schema= schema;
+ }
+ virtual bool fall_back_on_alternate_schema(const json_engine_t *je,
+ const uchar* k_start= NULL,
+ const uchar* k_end= NULL);
+ virtual bool validate_as_alternate(const json_engine_t *je,
+ const uchar* k_start= NULL,
+ const uchar* k_end= NULL)
+ {
+ return false;
+ }
+ virtual bool validate_schema_items(const json_engine_t *je,
+ List<Json_schema_keyword>*schema_items);
+ virtual void set_alternate_schema_choice(Json_schema_keyword *schema1,
+ Json_schema_keyword *schema2)
+ {
+ return;
+ }
+ virtual void set_dependents(Json_schema_keyword *schema1,
+ Json_schema_keyword *schema2)
+ {
+ return;
+ }
+};
+
+/*
+ Additional and unvaluated keywords and items handle
+ keywords and validate schema in same way, so it makes sense
+ to have a base class for them.
+*/
+class Json_schema_additional_and_unevaluated : public Json_schema_keyword
+{
+ public:
+ List<Json_schema_keyword> schema_list;
+ Json_schema_additional_and_unevaluated()
+ {
+ allowed= true;
+ }
+ void set_allowed(bool allowed_val)
+ {
+ allowed= allowed_val;
+ }
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ bool validate(const json_engine_t *je,
+ const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override
+ {
+ return false;
+ }
+ bool validate_as_alternate(const json_engine_t *je, const uchar *k_start,
+ const uchar *k_end) override;
+};
+
+
+class Json_schema_annotation : public Json_schema_keyword
+{
+ public:
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_format : public Json_schema_keyword
+{
+ public:
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+typedef List<Json_schema_keyword> List_schema_keyword;
+
+class Json_schema_type : public Json_schema_keyword
+{
+ private:
+ uint type;
+
+ public:
+ bool validate(const json_engine_t *je,
+ const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd,
+ json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_type()
+ {
+ type= 0;
+ }
+};
+
+class Json_schema_const : public Json_schema_keyword
+{
+ private:
+ char *const_json_value;
+
+ public:
+ enum json_value_types type;
+ bool validate(const json_engine_t *je,
+ const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_const()
+ {
+ const_json_value= NULL;
+ }
+};
+
+
+class Json_schema_enum : public Json_schema_keyword
+{
+ private:
+ HASH enum_values;
+ uint enum_scalar;
+
+ public:
+ bool validate(const json_engine_t *je,
+ const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_enum()
+ {
+ enum_scalar= 0;
+ }
+ ~Json_schema_enum()
+ {
+ my_hash_free(&enum_values);
+ }
+};
+
+class Json_schema_maximum : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je,
+ const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_minimum : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je,
+ const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_multiple_of : public Json_schema_keyword
+{
+ private:
+ longlong multiple_of;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_ex_maximum : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_ex_minimum : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_max_len : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_min_len : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_pattern : public Json_schema_keyword
+{
+ private:
+ Regexp_processor_pcre re;
+ Item *pattern;
+ Item_string *str;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_pattern()
+ {
+ str= NULL;
+ pattern= NULL;
+ }
+ ~Json_schema_pattern() { re.cleanup(); }
+};
+
+class Json_schema_max_items : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_min_items : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_max_contains : public Json_schema_keyword
+{
+ public:
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_min_contains : public Json_schema_keyword
+{
+ public:
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+/*
+ The value of max_contains and min_contains is only
+ relevant when contains keyword is present.
+ Hence the pointers to access them directly.
+*/
+class Json_schema_contains : public Json_schema_keyword
+{
+ public:
+ List <Json_schema_keyword> contains;
+ Json_schema_keyword *max_contains;
+ Json_schema_keyword *min_contains;
+
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ void set_dependents(Json_schema_keyword *min, Json_schema_keyword *max) override
+ {
+ min_contains= min;
+ max_contains= max;
+ }
+};
+
+class Json_schema_unique_items : public Json_schema_keyword
+{
+ private:
+ bool is_unique;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+
+class Json_schema_prefix_items : public Json_schema_keyword
+{
+ public:
+ List <List_schema_keyword> prefix_items;
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_prefix_items()
+ {
+ priority= 1;
+ }
+};
+
+class Json_schema_unevaluated_items :
+ public Json_schema_additional_and_unevaluated
+{
+ public:
+ Json_schema_unevaluated_items()
+ {
+ priority= 4;
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+};
+
+class Json_schema_additional_items :
+ public Json_schema_additional_and_unevaluated
+{
+ public:
+ Json_schema_additional_items()
+ {
+ priority= 3;
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+};
+
+class Json_schema_items : public Json_schema_keyword
+{
+ private:
+ List<Json_schema_keyword> items_schema;
+ public:
+ Json_schema_items()
+ {
+ priority= 2;
+ }
+ void set_allowed(bool allowed_val) { allowed= allowed_val; }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ bool validate_as_alternate(const json_engine_t *je, const uchar *k_start,
+ const uchar *k_end) override;
+};
+
+
+class Json_schema_property_names : public Json_schema_keyword
+{
+ protected:
+ List <Json_schema_keyword> property_names;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+typedef struct property
+{
+ List<Json_schema_keyword> *curr_schema;
+ char *key_name;
+} st_property;
+
+class Json_schema_properties : public Json_schema_keyword
+{
+ private:
+ HASH properties;
+ bool is_hash_inited;
+
+ public:
+ Json_schema_properties()
+ {
+ priority= 1;
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ ~Json_schema_properties()
+ {
+ if (is_hash_inited)
+ my_hash_free(&properties);
+ }
+ bool validate_as_alternate(const json_engine_t *je, const uchar *k_start,
+ const uchar *k_end) override;
+ };
+
+class Json_schema_dependent_schemas : public Json_schema_keyword
+{
+ private:
+ HASH properties;
+ bool is_hash_inited;
+
+ public:
+ ~Json_schema_dependent_schemas()
+ {
+ if (is_hash_inited)
+ my_hash_free(&properties);
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+
+class Json_schema_additional_properties :
+ public Json_schema_additional_and_unevaluated
+{
+ public:
+ Json_schema_additional_properties()
+ {
+ priority= 3;
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+};
+
+class Json_schema_unevaluated_properties :
+ public Json_schema_additional_and_unevaluated
+{
+ public:
+ Json_schema_unevaluated_properties()
+ {
+ priority= 4;
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+};
+
+typedef struct pattern_to_property : public Sql_alloc
+{
+ Regexp_processor_pcre re;
+ Item *pattern;
+ List<Json_schema_keyword> *curr_schema;
+}st_pattern_to_property;
+
+class Json_schema_pattern_properties : public Json_schema_keyword
+{
+ private:
+ Item_string *str;
+ List<st_pattern_to_property> pattern_properties;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_pattern_properties()
+ {
+ priority= 2;
+ }
+ ~Json_schema_pattern_properties()
+ {
+ str= NULL;
+ if (!pattern_properties.is_empty())
+ {
+ st_pattern_to_property *curr_pattern_to_property= NULL;
+ List_iterator<st_pattern_to_property> it(pattern_properties);
+ while((curr_pattern_to_property= it++))
+ {
+ curr_pattern_to_property->re.cleanup();
+ curr_pattern_to_property->pattern= NULL;
+ delete curr_pattern_to_property;
+ curr_pattern_to_property= nullptr;
+ }
+ }
+ }
+ bool validate_as_alternate(const json_engine_t *je, const uchar *k_start,
+ const uchar *k_end) override;
+};
+
+
+class Json_schema_max_prop : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_min_prop : public Json_schema_keyword
+{
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_required : public Json_schema_keyword
+{
+ private:
+ List <String> required_properties;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+typedef struct dependent_keyowrds
+{
+ String *property;
+ List <String> dependents;
+} st_dependent_keywords;
+
+class Json_schema_dependent_required : public Json_schema_keyword
+{
+ private:
+ List<st_dependent_keywords> dependent_required;
+
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+enum logic_enum { HAS_ALL_OF= 2, HAS_ANY_OF= 4, HAS_ONE_OF= 8, HAS_NOT= 16};
+class Json_schema_logic : public Json_schema_keyword
+{
+ protected:
+ uint logic_flag;
+ List <List_schema_keyword> schema_items;
+ Json_schema_keyword *alternate_choice1, *alternate_choice2;
+ public:
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ Json_schema_logic()
+ {
+ logic_flag= 0;
+ alternate_choice1= alternate_choice2= NULL;
+ priority= 1;
+ }
+ virtual bool validate_count(uint* count, uint* total) { return false; }
+ void set_alternate_schema_choice(Json_schema_keyword *schema1,
+ Json_schema_keyword* schema2) override
+ {
+ alternate_choice1= schema1;
+ alternate_choice2= schema2;
+ }
+ bool check_validation(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL);
+};
+
+class Json_schema_not : public Json_schema_logic
+{
+ private:
+ List <Json_schema_keyword> schema_list;
+ public:
+ Json_schema_not()
+ {
+ logic_flag= HAS_NOT;
+ }
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ bool validate_count(uint *count, uint *total) override
+ {
+ return *count !=0;
+ }
+};
+
+class Json_schema_one_of : public Json_schema_logic
+{
+ public:
+ Json_schema_one_of()
+ {
+ logic_flag= HAS_ONE_OF;
+ }
+ bool validate_count(uint *count, uint *total) override
+ {
+ return !(*count == 1);
+ }
+};
+
+class Json_schema_any_of : public Json_schema_logic
+{
+ public:
+ Json_schema_any_of()
+ {
+ logic_flag= HAS_ANY_OF;
+ }
+ bool validate_count(uint *count, uint *total) override
+ {
+ return *count == 0;
+ }
+};
+
+class Json_schema_all_of : public Json_schema_logic
+{
+ public:
+ Json_schema_all_of()
+ {
+ logic_flag= HAS_ALL_OF;
+ }
+ bool validate_count(uint *count, uint *total) override
+ {
+ return *count != *total;
+ }
+};
+
+class Json_schema_conditional : public Json_schema_keyword
+{
+ private:
+ Json_schema_keyword *if_cond, *else_cond, *then_cond;
+
+ public:
+ List<Json_schema_keyword> conditions_schema;
+ Json_schema_conditional()
+ {
+ if_cond= NULL;
+ then_cond= NULL;
+ else_cond= NULL;
+ }
+ bool validate(const json_engine_t *je, const uchar *k_start= NULL,
+ const uchar *k_end= NULL) override;
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+ void set_conditions(Json_schema_keyword *if_val,
+ Json_schema_keyword* then_val,
+ Json_schema_keyword *else_val)
+ {
+ if_cond= if_val;
+ then_cond= then_val;
+ else_cond= else_val;
+ }
+ List<Json_schema_keyword>* get_validation_keywords() override
+ {
+ return &conditions_schema;
+ }
+
+};
+
+class Json_schema_if : public Json_schema_conditional
+{
+};
+
+class Json_schema_else : public Json_schema_conditional
+{
+};
+
+class Json_schema_then : public Json_schema_conditional
+{
+};
+
+class Json_schema_media_string : public Json_schema_keyword
+{
+ public:
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+class Json_schema_reference : public Json_schema_keyword
+{
+ public:
+ bool handle_keyword(THD *thd, json_engine_t *je,
+ const char* key_start,
+ const char* key_end,
+ List<Json_schema_keyword> *all_keywords) override;
+};
+
+bool create_object_and_handle_keyword(THD *thd, json_engine_t *je,
+ List<Json_schema_keyword> *keyword_list,
+ List<Json_schema_keyword> *all_keywords);
+uchar* get_key_name_for_property(const char *key_name, size_t *length,
+ my_bool /* unused */);
+uchar* get_key_name_for_func(const char *key_name, size_t *length,
+ my_bool /* unused */);
+
+enum keyword_flag
+{
+ JSON_SCHEMA_COMMON_KEYWORD= 0,
+ JSON_SCHEMA_NUMBER_KEYWORD= 1,
+ JSON_SCHEMA_STRING_KEYWORD= 2,
+ JSON_SCHEMA_ARRAY_KEYWORD= 3,
+ JSON_SCHEMA_OBJECT_KEYWORD= 4,
+ JSON_SCHEMA_LOGIC_KEYWORD= 5,
+ JSON_SCHEMA_CONDITION_KEYWORD= 6,
+ JSON_SCHEMA_ANNOTATION_KEYWORD= 7,
+ JSON_SCHEMA_FORMAT_KEYWORD= 8,
+ JSON_SCHEMA_MEDIA_KEYWORD= 9,
+ JSON_SCHEMA_REFERENCE_KEYWORD= 10,
+ JSON_SCHEMA_EMPTY_KEYWORD= 11
+};
+
+typedef struct st_json_schema_keyword_map
+{
+ LEX_CSTRING func_name;
+ Json_schema_keyword*(*func)(THD*);
+ enum keyword_flag flag;
+} json_schema_keyword_map;
+
+bool setup_json_schema_keyword_hash();
+void cleanup_json_schema_keyword_hash();
+
+#endif
diff --git a/sql/json_schema_helper.cc b/sql/json_schema_helper.cc
new file mode 100644
index 00000000..1b75b156
--- /dev/null
+++ b/sql/json_schema_helper.cc
@@ -0,0 +1,102 @@
+/* Copyright (c) 2016, 2022, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+
+#include "mariadb.h"
+#include "sql_class.h"
+#include "sql_parse.h" // For check_stack_overrun
+#include <m_string.h>
+#include "json_schema_helper.h"
+
+
+bool json_key_equals(const char* key, LEX_CSTRING val, int key_len)
+{
+ return (size_t)key_len == val.length && !strncmp(key, val.str, key_len);
+}
+
+bool json_assign_type(uint *curr_type, json_engine_t *je)
+{
+ const char* curr_value= (const char*)je->value;
+ int len= je->value_len;
+
+ if (json_key_equals(curr_value, { STRING_WITH_LEN("number") }, len))
+ *curr_type|= (1 << JSON_VALUE_NUMBER);
+ else if(json_key_equals(curr_value, { STRING_WITH_LEN("string") }, len))
+ *curr_type|= (1 << JSON_VALUE_STRING);
+ else if(json_key_equals(curr_value, { STRING_WITH_LEN("array") }, len))
+ *curr_type|= (1 << JSON_VALUE_ARRAY);
+ else if(json_key_equals(curr_value, { STRING_WITH_LEN("object") }, len))
+ *curr_type|= (1 << JSON_VALUE_OBJECT);
+ else if (json_key_equals(curr_value, { STRING_WITH_LEN("boolean") }, len))
+ *curr_type|= ((1 << JSON_VALUE_TRUE) | (1 << JSON_VALUE_FALSE));
+ else if (json_key_equals(curr_value, { STRING_WITH_LEN("null") }, len))
+ *curr_type|= (1 << JSON_VALUE_NULL);
+ else
+ {
+ my_error(ER_JSON_INVALID_VALUE_FOR_KEYWORD, MYF(0), "type");
+ return true;
+ }
+ return false;
+}
+
+uchar* get_key_name(const char *key_name, size_t *length,
+ my_bool /* unused */)
+{
+ *length= strlen(key_name);
+ return (uchar*) key_name;
+}
+
+void json_get_normalized_string(json_engine_t *je, String *res,
+ int *error)
+{
+ char *val_begin= (char*)je->value, *val_end= NULL;
+ String val("",0,je->s.cs);
+ DYNAMIC_STRING a_res;
+
+ if (init_dynamic_string(&a_res, NULL, 0, 0))
+ goto error;
+
+ if (!json_value_scalar(je))
+ {
+ if (json_skip_level(je))
+ goto error;
+ }
+
+ val_end= json_value_scalar(je) ? val_begin+je->value_len :
+ (char *)je->s.c_str;
+ val.set((const char*)val_begin, val_end-val_begin, je->s.cs);
+
+ if (je->value_type == JSON_VALUE_NUMBER ||
+ je->value_type == JSON_VALUE_ARRAY ||
+ je->value_type == JSON_VALUE_OBJECT)
+ {
+ if (json_normalize(&a_res, (const char*)val.ptr(),
+ val_end-val_begin, je->s.cs))
+ goto error;
+ }
+ else if(je->value_type == JSON_VALUE_STRING)
+ {
+ strncpy((char*)a_res.str, val.ptr(), je->value_len);
+ a_res.length= je->value_len;
+ }
+
+ res->append(a_res.str, a_res.length, je->s.cs);
+ *error= 0;
+
+ error:
+ dynstr_free(&a_res);
+
+ return;
+}
diff --git a/sql/json_schema_helper.h b/sql/json_schema_helper.h
new file mode 100644
index 00000000..4a596b0b
--- /dev/null
+++ b/sql/json_schema_helper.h
@@ -0,0 +1,30 @@
+#ifndef JSON_SCHEMA_HELPER
+#define JSON_SCHEMA_HELPER
+
+/* Copyright (c) 2016, 2021, MariaDB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+#include "sql_type_json.h"
+#include <m_string.h>
+#include "json_schema.h"
+
+bool json_key_equals(const char* key, LEX_CSTRING val, int key_len);
+
+bool json_assign_type(uint *curr_type, json_engine_t *je);
+uchar* get_key_name(const char *key_name, size_t *length,
+ my_bool /* unused */);
+void json_get_normalized_string(json_engine_t *je, String *res,
+ int *error);
+#endif
diff --git a/sql/json_table.cc b/sql/json_table.cc
index 4f3cfb6b..6713e796 100644
--- a/sql/json_table.cc
+++ b/sql/json_table.cc
@@ -29,22 +29,6 @@
#define HA_ERR_JSON_TABLE (HA_ERR_LAST+1)
-/*
- Allocating memory and *also* using it (reading and
- writing from it) because some build instructions cause
- compiler to optimize out stack_used_up. Since alloca()
- here depends on stack_used_up, it doesnt get executed
- correctly and causes json_debug_nonembedded to fail
- ( --error ER_STACK_OVERRUN_NEED_MORE does not occur).
-*/
-#define ALLOCATE_MEM_ON_STACK(A) do \
- { \
- uchar *array= (uchar*)alloca(A); \
- array[0]= 1; \
- array[0]++; \
- array[0] ? array[0]++ : array[0]--; \
- } while(0)
-
class table_function_handlerton
{
public:
@@ -54,6 +38,7 @@ public:
bzero(&m_hton, sizeof(m_hton));
m_hton.tablefile_extensions= hton_no_exts;
m_hton.slot= HA_SLOT_UNDEF;
+ m_hton.flags= HTON_HIDDEN;
}
};
@@ -245,6 +230,10 @@ public:
int open(const char *name, int mode, uint test_if_locked) override
{ return 0; }
int close(void) override { return 0; }
+ void update_optimizer_costs(OPTIMIZER_COSTS *costs) override
+ {
+ memcpy(costs, &heap_optimizer_costs, sizeof(*costs));
+ }
int rnd_init(bool scan) override;
int rnd_next(uchar *buf) override;
int rnd_pos(uchar * buf, uchar *pos) override;
@@ -936,7 +925,10 @@ int Json_table_column::set(THD *thd, enum_type ctype, const LEX_CSTRING &path,
return set(thd, ctype, path, nullptr);
CHARSET_INFO *tmp;
- if (!(tmp= cl.resolved_to_character_set(&my_charset_utf8mb4_general_ci)))
+ if (!(tmp= cl.resolved_to_character_set(
+ thd,
+ thd->variables.character_set_collations,
+ &my_charset_utf8mb4_general_ci)))
return 1;
return set(thd, ctype, path, tmp);
}
diff --git a/sql/keycaches.cc b/sql/keycaches.cc
index 10bec7c1..250a287e 100644
--- a/sql/keycaches.cc
+++ b/sql/keycaches.cc
@@ -15,6 +15,10 @@
#include "mariadb.h"
#include "keycaches.h"
+#include "optimizer_costs.h"
+#include "optimizer_defaults.h"
+#include "handler.h"
+#include "sql_class.h"
/****************************************************************************
Named list handling
@@ -22,10 +26,13 @@
NAMED_ILIST key_caches;
NAMED_ILIST rpl_filters;
+NAMED_ILIST linked_optimizer_costs;
extern "C" PSI_memory_key key_memory_KEY_CACHE;
extern PSI_memory_key key_memory_NAMED_ILINK_name;
+LEX_CSTRING default_base= {STRING_WITH_LEN("default")};
+
/**
ilink (intrusive list element) with a name
*/
@@ -46,7 +53,7 @@ public:
}
inline bool cmp(const char *name_cmp, size_t length)
{
- return length == name_length && !memcmp(name, name_cmp, length);
+ return !system_charset_info->strnncoll(name, name_length, name_cmp, length);
}
~NAMED_ILINK()
{
@@ -72,7 +79,8 @@ uchar* find_named(I_List<NAMED_ILINK> *list, const char *name, size_t length,
}
-bool NAMED_ILIST::delete_element(const char *name, size_t length, void (*free_element)(const char *name, void*))
+bool NAMED_ILIST::delete_element(const char *name, size_t length,
+ void (*free_element)(const char *name, void*))
{
I_List_iterator<NAMED_ILINK> it(*this);
NAMED_ILINK *element;
@@ -104,14 +112,12 @@ void NAMED_ILIST::delete_elements(void (*free_element)(const char *name, void*))
/* Key cache functions */
-LEX_CSTRING default_key_cache_base= {STRING_WITH_LEN("default")};
-
KEY_CACHE zero_key_cache; ///< @@nonexistent_cache.param->value_ptr() points here
KEY_CACHE *get_key_cache(const LEX_CSTRING *cache_name)
{
if (!cache_name || ! cache_name->length)
- cache_name= &default_key_cache_base;
+ cache_name= &default_base;
return ((KEY_CACHE*) find_named(&key_caches,
cache_name->str, cache_name->length, 0));
}
@@ -234,3 +240,128 @@ void free_all_rpl_filters()
{
rpl_filters.delete_elements(free_rpl_filter);
}
+
+
+/******************************************************************************
+ Optimizer costs functions
+******************************************************************************/
+
+LEX_CSTRING default_costs_base= {STRING_WITH_LEN("default")};
+
+OPTIMIZER_COSTS default_optimizer_costs=
+{
+ DEFAULT_DISK_READ_COST, // disk_read_cost
+ DEFAULT_INDEX_BLOCK_COPY_COST, // index_block_copy_cost
+ DEFAULT_WHERE_COST/4, // key_cmp_cost
+ DEFAULT_KEY_COPY_COST, // key_copy_cost
+ DEFAULT_KEY_LOOKUP_COST, // key_lookup_cost
+ DEFAULT_KEY_NEXT_FIND_COST, // key_next_find_cost
+ DEFAULT_DISK_READ_RATIO, // disk_read_ratio
+ DEFAULT_ROW_COPY_COST, // row_copy_cost
+ DEFAULT_ROW_LOOKUP_COST, // row_lookup_cost
+ DEFAULT_ROW_NEXT_FIND_COST, // row_next_find_cost
+ DEFAULT_ROWID_COMPARE_COST, // rowid_compare_cost
+ DEFAULT_ROWID_COPY_COST, // rowid_copy_cost
+ 1 // Cannot be deleted
+};
+
+OPTIMIZER_COSTS heap_optimizer_costs, tmp_table_optimizer_costs;
+
+OPTIMIZER_COSTS *get_optimizer_costs(const LEX_CSTRING *cache_name)
+{
+ if (!cache_name->length)
+ return &default_optimizer_costs;
+ return ((OPTIMIZER_COSTS*) find_named(&linked_optimizer_costs,
+ cache_name->str, cache_name->length,
+ 0));
+}
+
+OPTIMIZER_COSTS *create_optimizer_costs(const char *name, size_t length)
+{
+ OPTIMIZER_COSTS *optimizer_costs;
+ DBUG_ENTER("create_optimizer_costs");
+ DBUG_PRINT("enter",("name: %.*s", (int) length, name));
+
+ if ((optimizer_costs= (OPTIMIZER_COSTS*)
+ my_malloc(key_memory_KEY_CACHE,
+ sizeof(OPTIMIZER_COSTS), MYF(MY_ZEROFILL | MY_WME))))
+ {
+ if (!new NAMED_ILINK(&linked_optimizer_costs, name, length,
+ (uchar*) optimizer_costs))
+ {
+ my_free(optimizer_costs);
+ optimizer_costs= 0;
+ }
+ else
+ {
+ /* Mark that values are not yet set */
+ for (uint i=0 ; i < sizeof(OPTIMIZER_COSTS)/sizeof(double) ; i++)
+ ((double*) optimizer_costs)[i]= OPTIMIZER_COST_UNDEF;
+ }
+ }
+ DBUG_RETURN(optimizer_costs);
+}
+
+
+OPTIMIZER_COSTS *get_or_create_optimizer_costs(const char *name, size_t length)
+{
+ LEX_CSTRING optimizer_costs_name;
+ OPTIMIZER_COSTS *optimizer_costs;
+
+ optimizer_costs_name.str= name;
+ optimizer_costs_name.length= length;
+ if (!(optimizer_costs= get_optimizer_costs(&optimizer_costs_name)))
+ optimizer_costs= create_optimizer_costs(name, length);
+ return optimizer_costs;
+}
+
+extern "C"
+{
+bool process_optimizer_costs(process_optimizer_costs_t func, TABLE *param)
+{
+ I_List_iterator<NAMED_ILINK> it(linked_optimizer_costs);
+ NAMED_ILINK *element;
+ int res= 0;
+
+ while ((element= it++))
+ {
+ LEX_CSTRING name= { element->name, element->name_length };
+ OPTIMIZER_COSTS *costs= (OPTIMIZER_COSTS *) element->data;
+ res |= func(&name, costs, param);
+ }
+ return res != 0;
+}
+}
+
+bool create_default_optimizer_costs()
+{
+ return (new NAMED_ILINK(&linked_optimizer_costs,
+ default_base.str, default_base.length,
+ (uchar*) &default_optimizer_costs)) == 0;
+}
+
+
+/*
+ Make a copy of heap and tmp_table engine costs to be able to create
+ internal temporary tables without taking a mutex.
+*/
+
+void copy_tmptable_optimizer_costs()
+{
+ memcpy(&heap_optimizer_costs, heap_hton->optimizer_costs,
+ sizeof(heap_optimizer_costs));
+ memcpy(&tmp_table_optimizer_costs, TMP_ENGINE_HTON->optimizer_costs,
+ sizeof(tmp_table_optimizer_costs));
+}
+
+
+static void free_optimizer_costs(const char *name, void *cost)
+{
+ if ((OPTIMIZER_COSTS*) cost != &default_optimizer_costs)
+ my_free(cost);
+}
+
+void free_all_optimizer_costs()
+{
+ linked_optimizer_costs.delete_elements(free_optimizer_costs);
+}
diff --git a/sql/keycaches.h b/sql/keycaches.h
index 68c3dd3a..721251b6 100644
--- a/sql/keycaches.h
+++ b/sql/keycaches.h
@@ -35,7 +35,7 @@ class NAMED_ILIST: public I_List<NAMED_ILINK>
};
/* For key cache */
-extern LEX_CSTRING default_key_cache_base;
+extern LEX_CSTRING default_base;
extern KEY_CACHE zero_key_cache;
extern NAMED_ILIST key_caches;
diff --git a/sql/lex.h b/sql/lex.h
index ad37c39b..38b0039a 100644
--- a/sql/lex.h
+++ b/sql/lex.h
@@ -618,6 +618,8 @@ SYMBOL symbols[] = {
{ "SQLEXCEPTION", SYM(SQLEXCEPTION_SYM)},
{ "SQLSTATE", SYM(SQLSTATE_SYM)},
{ "SQLWARNING", SYM(SQLWARNING_SYM)},
+ { "SQL_AFTER_GTIDS", SYM(SQL_AFTER_GTIDS_SYM)},
+ { "SQL_BEFORE_GTIDS", SYM(SQL_BEFORE_GTIDS_SYM)},
{ "SQL_BIG_RESULT", SYM(SQL_BIG_RESULT)},
{ "SQL_BUFFER_RESULT", SYM(SQL_BUFFER_RESULT)},
{ "SQL_CACHE", SYM(SQL_CACHE_SYM)},
@@ -711,6 +713,7 @@ SYMBOL symbols[] = {
{ "UTC_DATE", SYM(UTC_DATE_SYM)},
{ "UTC_TIME", SYM(UTC_TIME_SYM)},
{ "UTC_TIMESTAMP", SYM(UTC_TIMESTAMP_SYM)},
+ { "VALIDATION", SYM(VALIDATION_SYM)},
{ "VALUE", SYM(VALUE_SYM)},
{ "VALUES", SYM(VALUES)},
{ "VARBINARY", SYM(VARBINARY)},
diff --git a/sql/lex_charset.cc b/sql/lex_charset.cc
index cfb74a0b..aef1235c 100644
--- a/sql/lex_charset.cc
+++ b/sql/lex_charset.cc
@@ -197,7 +197,9 @@ Lex_context_collation::raise_if_not_equal(const Lex_context_collation &cl) const
CREATE DATABASE db1 COLLATE DEFAULT CHARACTER SET latin1;
*/
bool Lex_exact_charset_opt_extended_collate::
- merge_context_collation_override(const Lex_context_collation &cl)
+ merge_context_collation_override(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_context_collation &cl)
{
DBUG_ASSERT(m_ci);
@@ -215,7 +217,7 @@ bool Lex_exact_charset_opt_extended_collate::
// COLLATE DEFAULT
if (cl.is_contextually_typed_collate_default())
{
- CHARSET_INFO *ci= find_default_collation();
+ CHARSET_INFO *ci= find_mapped_default_collation(used, map);
DBUG_ASSERT(ci);
if (!ci)
return true;
@@ -238,7 +240,9 @@ bool Lex_exact_charset_opt_extended_collate::
}
-bool Lex_extended_collation_st::merge_exact_charset(const Lex_exact_charset &cs)
+bool Lex_extended_collation_st::merge_exact_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &cs)
{
switch (m_type) {
case TYPE_EXACT:
@@ -250,7 +254,7 @@ bool Lex_extended_collation_st::merge_exact_charset(const Lex_exact_charset &cs)
{
// COLLATE DEFAULT .. CHARACTER SET latin1
Lex_exact_charset_opt_extended_collate tmp(cs);
- if (tmp.merge_context_collation(Lex_context_collation(m_ci)))
+ if (tmp.merge_context_collation(used, map, Lex_context_collation(m_ci)))
return true;
*this= Lex_extended_collation(tmp.collation());
return false;
@@ -419,7 +423,7 @@ CHARSET_INFO *Lex_exact_charset_opt_extended_collate::find_bin_collation() const
CHARSET_INFO *
-Lex_exact_charset_opt_extended_collate::find_default_collation() const
+Lex_exact_charset_opt_extended_collate::find_compiled_default_collation() const
{
// See comments in find_bin_collation()
DBUG_ASSERT(m_ci->cs_name.length !=4 || memcmp(m_ci->cs_name.str, "utf8", 4));
@@ -447,6 +451,17 @@ Lex_exact_charset_opt_extended_collate::find_default_collation() const
}
+CHARSET_INFO *
+Lex_exact_charset_opt_extended_collate::
+ find_mapped_default_collation(Sql_used *used,
+ const Charset_collation_map_st &map) const
+{
+ CHARSET_INFO *cs= find_compiled_default_collation();
+ if (!cs)
+ return nullptr;
+ return map.get_collation_for_charset(used, cs);
+}
+
/*
Resolve an empty or a contextually typed collation according to the
upper level default character set (and optionally a collation), e.g.:
@@ -459,7 +474,9 @@ Lex_exact_charset_opt_extended_collate::find_default_collation() const
"def" is the upper level CHARACTER SET clause (e.g. of a table)
*/
CHARSET_INFO *Lex_exact_charset_extended_collation_attrs_st::
- resolved_to_character_set(CHARSET_INFO *def) const
+ resolved_to_character_set(Sql_used *used,
+ const Charset_collation_map_st &map,
+ CHARSET_INFO *def) const
{
DBUG_ASSERT(def);
@@ -467,6 +484,10 @@ CHARSET_INFO *Lex_exact_charset_extended_collation_attrs_st::
case TYPE_EMPTY:
return def;
case TYPE_CHARACTER_SET:
+ {
+ DBUG_ASSERT(m_ci);
+ return map.get_collation_for_charset(used, m_ci);
+ }
case TYPE_CHARACTER_SET_COLLATE_EXACT:
case TYPE_COLLATE_EXACT:
DBUG_ASSERT(m_ci);
@@ -474,7 +495,7 @@ CHARSET_INFO *Lex_exact_charset_extended_collation_attrs_st::
case TYPE_COLLATE_CONTEXTUALLY_TYPED:
{
Lex_exact_charset_opt_extended_collate tmp(def, true);
- if (tmp.merge_context_collation_override(Lex_context_collation(m_ci)))
+ if (tmp.merge_context_collation_override(used, map, Lex_context_collation(m_ci)))
return NULL;
return tmp.collation().charset_info();
}
@@ -526,7 +547,9 @@ bool Lex_exact_charset_extended_collation_attrs_st::
bool Lex_exact_charset_extended_collation_attrs_st::
- merge_context_collation(const Lex_context_collation &cl)
+ merge_context_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_context_collation &cl)
{
switch (m_type) {
case TYPE_EMPTY:
@@ -540,7 +563,7 @@ bool Lex_exact_charset_extended_collation_attrs_st::
{
// CHARACTER SET latin1 .. COLLATE DEFAULT
Lex_exact_charset_opt_extended_collate tmp(m_ci, false);
- if (tmp.merge_context_collation(cl))
+ if (tmp.merge_context_collation(used, map, cl))
return true;
*this= Lex_exact_charset_extended_collation_attrs(tmp);
return false;
@@ -582,24 +605,29 @@ bool Lex_exact_charset_opt_extended_collate::
bool Lex_exact_charset_opt_extended_collate::
- merge_context_collation(const Lex_context_collation &cl)
+ merge_context_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_context_collation &cl)
{
// CHARACTER SET latin1 [COLLATE latin1_bin] .. COLLATE DEFAULT
if (m_with_collate)
return Lex_exact_collation(m_ci).
raise_if_conflicts_with_context_collation(cl, false);
- return merge_context_collation_override(cl);
+ return merge_context_collation_override(used, map, cl);
}
bool Lex_exact_charset_extended_collation_attrs_st::
- merge_collation(const Lex_extended_collation_st &cl)
+ merge_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_extended_collation_st &cl)
{
switch (cl.type()) {
case Lex_extended_collation_st::TYPE_EXACT:
return merge_exact_collation(Lex_exact_collation(cl.charset_info()));
case Lex_extended_collation_st::TYPE_CONTEXTUALLY_TYPED:
- return merge_context_collation(Lex_context_collation(cl.charset_info()));
+ return merge_context_collation(used, map,
+ Lex_context_collation(cl.charset_info()));
}
DBUG_ASSERT(0);
return false;
@@ -613,7 +641,9 @@ bool Lex_exact_charset_extended_collation_attrs_st::
@param cs - The "CHARACTER SET exact_charset_name".
*/
bool Lex_exact_charset_extended_collation_attrs_st::
- merge_exact_charset(const Lex_exact_charset &cs)
+ merge_exact_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &cs)
{
DBUG_ASSERT(cs.charset_info());
@@ -643,7 +673,7 @@ bool Lex_exact_charset_extended_collation_attrs_st::
// COLLATE DEFAULT .. CHARACTER SET cs
{
Lex_exact_charset_opt_extended_collate tmp(cs);
- if (tmp.merge_context_collation(Lex_context_collation(m_ci)))
+ if (tmp.merge_context_collation(used, map, Lex_context_collation(m_ci)))
return true;
*this= Lex_exact_charset_extended_collation_attrs(tmp);
return false;
@@ -664,11 +694,14 @@ bool Lex_extended_charset_extended_collation_attrs_st::merge_charset_default()
bool Lex_extended_charset_extended_collation_attrs_st::
- merge_exact_charset(const Lex_exact_charset &cs)
+ merge_exact_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &cs)
{
if (m_charset_order == CHARSET_TYPE_EMPTY)
m_charset_order= CHARSET_TYPE_EXACT;
- return Lex_exact_charset_extended_collation_attrs_st::merge_exact_charset(cs);
+ return Lex_exact_charset_extended_collation_attrs_st::
+ merge_exact_charset(used, map, cs);
}
@@ -691,13 +724,16 @@ bool Lex_extended_charset_extended_collation_attrs_st::
CHARSET_INFO *
Lex_extended_charset_extended_collation_attrs_st::
- resolved_to_context(const Charset_collation_context &ctx) const
+ resolved_to_context(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Charset_collation_context &ctx) const
{
if (Lex_opt_context_charset_st::is_empty())
{
// Without CHARACTER SET DEFAULT
return Lex_exact_charset_extended_collation_attrs_st::
- resolved_to_character_set(ctx.collate_default().charset_info());
+ resolved_to_character_set(used, map,
+ ctx.collate_default().charset_info());
}
// With CHARACTER SET DEFAULT
@@ -767,8 +803,9 @@ Lex_extended_charset_extended_collation_attrs_st::
ALTER DATABASE db1 COLLATE DEFAULT CHARACTER SET DEFAULT;
*/
return Lex_exact_charset_extended_collation_attrs_st::
- resolved_to_character_set(ctx.charset_default().
- collation().charset_info());
+ resolved_to_character_set(used, map,
+ ctx.charset_default().
+ collation().charset_info());
}
DBUG_ASSERT(0);
return NULL;
diff --git a/sql/lex_charset.h b/sql/lex_charset.h
index 2bbeff8a..43854c37 100644
--- a/sql/lex_charset.h
+++ b/sql/lex_charset.h
@@ -16,6 +16,7 @@
#ifndef LEX_CHARSET_INCLUDED
#define LEX_CHARSET_INCLUDED
+#include "charset_collations.h"
/*
An extention for Charset_loader_mysys,
@@ -296,7 +297,9 @@ public:
bool set_by_name(const char *name, myf my_flags); // e.g. MY_UTF8_IS_UTF8MB3
bool raise_if_conflicts_with_context_collation(const Lex_context_collation &)
const;
- bool merge_exact_charset(const Lex_exact_charset &rhs);
+ bool merge_exact_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &rhs);
bool merge_exact_collation(const Lex_exact_collation &rhs);
bool merge(const Lex_extended_collation_st &rhs);
};
@@ -347,7 +350,10 @@ public:
}
bool with_collate() const { return m_with_collate; }
CHARSET_INFO *find_bin_collation() const;
- CHARSET_INFO *find_default_collation() const;
+ CHARSET_INFO *find_compiled_default_collation() const;
+ CHARSET_INFO *find_mapped_default_collation(
+ Sql_used *used,
+ const Charset_collation_map_st &map) const;
bool raise_if_charsets_differ(const Lex_exact_charset &cs) const;
bool raise_if_not_applicable(const Lex_exact_collation &cl) const;
/*
@@ -355,18 +361,23 @@ public:
So the full syntax looks like:
CHARACTER SET cs [COLLATE cl] ... COLLATE cl2
*/
- bool merge_collation(const Lex_extended_collation_st &cl)
+ bool merge_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_extended_collation_st &cl)
{
switch (cl.type()) {
case Lex_extended_collation_st::TYPE_EXACT:
return merge_exact_collation(Lex_exact_collation(cl.charset_info()));
case Lex_extended_collation_st::TYPE_CONTEXTUALLY_TYPED:
- return merge_context_collation(Lex_context_collation(cl.charset_info()));
+ return merge_context_collation(used, map,
+ Lex_context_collation(cl.charset_info()));
}
DBUG_ASSERT(0);
return false;
}
- bool merge_collation_override(const Lex_extended_collation_st &cl)
+ bool merge_collation_override(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_extended_collation_st &cl)
{
switch (cl.type()) {
case Lex_extended_collation_st::TYPE_EXACT:
@@ -374,7 +385,7 @@ public:
Lex_exact_collation(cl.charset_info()));
case Lex_extended_collation_st::TYPE_CONTEXTUALLY_TYPED:
return merge_context_collation_override(
- Lex_context_collation(cl.charset_info()));
+ used, map, Lex_context_collation(cl.charset_info()));
}
DBUG_ASSERT(0);
return false;
@@ -383,8 +394,12 @@ public:
Add a context collation:
CHARACTER SET cs [COLLATE cl] ... COLLATE DEFAULT
*/
- bool merge_context_collation(const Lex_context_collation &cl);
- bool merge_context_collation_override(const Lex_context_collation &cl);
+ bool merge_context_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_context_collation &cl);
+ bool merge_context_collation_override(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_context_collation &cl);
/*
Add an exact collation:
CHARACTER SET cs [COLLATE cl] ... COLLATE latin1_bin
@@ -399,7 +414,7 @@ public:
{
if ((m_ci->state & MY_CS_PRIMARY))
return Lex_exact_charset(m_ci);
- return Lex_exact_charset(find_default_collation());
+ return Lex_exact_charset(find_compiled_default_collation());
}
};
@@ -507,11 +522,13 @@ public:
m_ci= cs.charset_info();
m_type= TYPE_CHARACTER_SET;
}
- bool set_charset_collate_default(const Lex_exact_charset &cs)
+ bool set_charset_collate_default(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &cs)
{
CHARSET_INFO *ci;
if (!(ci= Lex_exact_charset_opt_extended_collate(cs).
- find_default_collation()))
+ find_mapped_default_collation(used, map)))
return true;
m_ci= ci;
m_type= TYPE_CHARACTER_SET_COLLATE_EXACT;
@@ -544,6 +561,21 @@ public:
{
return m_ci;
}
+ CHARSET_INFO *charset_info(Sql_used *used,
+ const Charset_collation_map_st &map) const
+ {
+ switch (m_type)
+ {
+ case TYPE_CHARACTER_SET:
+ return map.get_collation_for_charset(used, m_ci);
+ case TYPE_EMPTY:
+ case TYPE_CHARACTER_SET_COLLATE_EXACT:
+ case TYPE_COLLATE_CONTEXTUALLY_TYPED:
+ case TYPE_COLLATE_EXACT:
+ break;
+ }
+ return m_ci;
+ }
Type type() const
{
return m_type;
@@ -552,7 +584,9 @@ public:
{
return m_type == TYPE_COLLATE_CONTEXTUALLY_TYPED;
}
- CHARSET_INFO *resolved_to_character_set(CHARSET_INFO *cs) const;
+ CHARSET_INFO *resolved_to_character_set(Sql_used *used,
+ const Charset_collation_map_st &map,
+ CHARSET_INFO *cs) const;
/*
Merge the column CHARACTER SET clause to:
- an exact collation name
@@ -561,15 +595,17 @@ public:
"cl" corresponds to the COLLATE clause
*/
bool merge_column_charset_clause_and_collate_clause(
+ Sql_used *used,
+ const Charset_collation_map_st &map,
const Lex_exact_charset_extended_collation_attrs_st &cl)
{
switch (cl.type()) {
case TYPE_EMPTY:
return false;
case TYPE_COLLATE_EXACT:
- return merge_exact_collation(Lex_exact_collation(cl.charset_info()));
+ return merge_exact_collation(Lex_exact_collation(cl.m_ci));
case TYPE_COLLATE_CONTEXTUALLY_TYPED:
- return merge_context_collation(Lex_context_collation(cl.charset_info()));
+ return merge_context_collation(used, map, Lex_context_collation(cl.m_ci));
case TYPE_CHARACTER_SET:
case TYPE_CHARACTER_SET_COLLATE_EXACT:
break;
@@ -584,6 +620,8 @@ public:
in an independent COLLATE clause in a column attribute.
*/
bool merge_column_collate_clause_and_collate_clause(
+ Sql_used *used,
+ const Charset_collation_map_st &map,
const Lex_exact_charset_extended_collation_attrs_st &cl)
{
DBUG_ASSERT(m_type != TYPE_CHARACTER_SET);
@@ -591,9 +629,9 @@ public:
case TYPE_EMPTY:
return false;
case TYPE_COLLATE_EXACT:
- return merge_exact_collation(Lex_exact_collation(cl.charset_info()));
+ return merge_exact_collation(Lex_exact_collation(cl.m_ci));
case TYPE_COLLATE_CONTEXTUALLY_TYPED:
- return merge_context_collation(Lex_context_collation(cl.charset_info()));
+ return merge_context_collation(used, map, Lex_context_collation(cl.m_ci));
case TYPE_CHARACTER_SET:
case TYPE_CHARACTER_SET_COLLATE_EXACT:
break;
@@ -601,10 +639,16 @@ public:
DBUG_ASSERT(0);
return false;
}
- bool merge_exact_charset(const Lex_exact_charset &cs);
+ bool merge_exact_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &cs);
bool merge_exact_collation(const Lex_exact_collation &cl);
- bool merge_context_collation(const Lex_context_collation &cl);
- bool merge_collation(const Lex_extended_collation_st &cl);
+ bool merge_context_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_context_collation &cl);
+ bool merge_collation(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_extended_collation_st &cl);
};
@@ -713,9 +757,13 @@ public:
}
bool raise_if_charset_conflicts_with_default(
const Lex_exact_charset_opt_extended_collate &def) const;
- CHARSET_INFO *resolved_to_context(const Charset_collation_context &ctx) const;
+ CHARSET_INFO *resolved_to_context(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Charset_collation_context &ctx) const;
bool merge_charset_default();
- bool merge_exact_charset(const Lex_exact_charset &cs);
+ bool merge_exact_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_exact_charset &cs);
};
diff --git a/sql/lex_ident.h b/sql/lex_ident.h
new file mode 100644
index 00000000..f39273b7
--- /dev/null
+++ b/sql/lex_ident.h
@@ -0,0 +1,163 @@
+#ifndef LEX_IDENT_INCLUDED
+#define LEX_IDENT_INCLUDED
+/*
+ Copyright (c) 2023, MariaDB
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2 of
+ the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+*/
+
+#include "char_buffer.h"
+
+
+/*
+ Identifiers for the database objects stored on disk,
+ e.g. databases, tables, triggers.
+*/
+class Lex_ident_fs: public LEX_CSTRING
+{
+public:
+ Lex_ident_fs()
+ :LEX_CSTRING({0,0})
+ { }
+ Lex_ident_fs(const char *str, size_t length)
+ :LEX_CSTRING({str, length})
+ { }
+ explicit Lex_ident_fs(const LEX_CSTRING &str)
+ :LEX_CSTRING(str)
+ { }
+ static bool check_body(const char *name, size_t length,
+ bool disallow_path_chars);
+ bool check_db_name() const;
+ bool check_db_name_with_error() const;
+#ifndef DBUG_OFF
+ bool is_in_lower_case() const;
+ bool ok_for_lower_case_names() const;
+#endif
+};
+
+
+/**
+ A valid database name identifier,
+ checked with check_db_name().
+ It's not known if it was lower-cased or is
+ in the user typed way.
+*/
+class Lex_ident_db: public Lex_ident_fs
+{
+ // {empty_c_string,0} is used by derived tables
+ bool is_empty() const
+ {
+ return length == 0 && str != NULL;
+ }
+public:
+ Lex_ident_db()
+ :Lex_ident_fs(NULL, 0)
+ { }
+ Lex_ident_db(const char *str, size_t length)
+ :Lex_ident_fs(str, length)
+ {
+ DBUG_SLOW_ASSERT(is_empty() || !check_db_name());
+ }
+};
+
+
+/**
+ A normalized database name:
+ - checked with check_db_name()
+ - lower-cased if lower_case_table_names>0
+*/
+class Lex_ident_db_normalized: public Lex_ident_db
+{
+public:
+ Lex_ident_db_normalized(const char *str, size_t length)
+ :Lex_ident_db(str, length)
+ {
+ DBUG_SLOW_ASSERT(ok_for_lower_case_names());
+ }
+ explicit Lex_ident_db_normalized(const LEX_CSTRING &str)
+ :Lex_ident_db(str.str, str.length)
+ {
+ DBUG_SLOW_ASSERT(ok_for_lower_case_names());
+ }
+};
+
+
+template<size_t buff_sz>
+class IdentBuffer: public CharBuffer<buff_sz>
+{
+ constexpr static CHARSET_INFO *charset()
+ {
+ return &my_charset_utf8mb3_general_ci;
+ }
+public:
+ IdentBuffer()
+ { }
+ IdentBuffer<buff_sz> & copy_casedn(const LEX_CSTRING &str)
+ {
+ CharBuffer<buff_sz>::copy_casedn(charset(), str);
+ return *this;
+ }
+};
+
+
+template<size_t buff_sz>
+class IdentBufferCasedn: public IdentBuffer<buff_sz>
+{
+public:
+ IdentBufferCasedn(const LEX_CSTRING &str)
+ {
+ IdentBuffer<buff_sz>::copy_casedn(str);
+ }
+};
+
+
+/*
+ A helper class to store temporary database names in a buffer.
+ After constructing it's typically should be checked using
+ Lex_ident_fs::check_db_name().
+
+ Note, the database name passed to the constructor can originally
+ come from the parser and can be of an atribtrary long length.
+ Let's reserve additional buffer space for one extra character
+ (SYSTEM_CHARSET_MBMAXLEN bytes), so check_db_name() can still
+ detect too long names even if the constructor cuts the data.
+*/
+class DBNameBuffer: public CharBuffer<SAFE_NAME_LEN + MY_CS_MBMAXLEN>
+{
+public:
+ DBNameBuffer()
+ { }
+ DBNameBuffer(const LEX_CSTRING &db, bool casedn)
+ {
+ copy_casedn(&my_charset_utf8mb3_general_ci, db, casedn);
+ }
+ Lex_ident_db to_lex_ident_db() const
+ {
+ const LEX_CSTRING tmp= to_lex_cstring();
+ if (Lex_ident_fs(tmp).check_db_name())
+ return Lex_ident_db();
+ return Lex_ident_db(tmp.str, tmp.length);
+ }
+ Lex_ident_db to_lex_ident_db_with_error() const
+ {
+ const LEX_CSTRING tmp= to_lex_cstring();
+ if (Lex_ident_fs(tmp).check_db_name_with_error())
+ return Lex_ident_db();
+ return Lex_ident_db(tmp.str, tmp.length);
+ }
+};
+
+
+#endif // LEX_IDENT_INCLUDED
diff --git a/sql/lex_string.h b/sql/lex_string.h
index 56f37706..c296d50e 100644
--- a/sql/lex_string.h
+++ b/sql/lex_string.h
@@ -104,6 +104,31 @@ class Lex_cstring : public LEX_CSTRING
return tmp.rtrim_whitespace(cs);
}
+ /*
+ Return the "n" leftmost bytes if this[0] is longer than "n" bytes,
+ or return this[0] itself otherwise.
+ */
+ Lex_cstring left(size_t n) const
+ {
+ return Lex_cstring(str, MY_MIN(length, n));
+ }
+ /*
+ If this[0] is shorter than "pos" bytes, then return an empty string.
+ Otherwise, return a substring of this[0] starting from
+ the byte position "pos" until the end.
+ */
+ Lex_cstring substr(size_t pos) const
+ {
+ return length <= pos ? Lex_cstring(str + length, (size_t) 0) :
+ Lex_cstring(str + pos, length - pos);
+ }
+ // Check if a prefix of this[0] is equal to "rhs".
+ bool starts_with(const LEX_CSTRING &rhs) const
+ {
+ DBUG_ASSERT(str);
+ DBUG_ASSERT(rhs.str);
+ return length >= rhs.length && !memcmp(str, rhs.str, rhs.length);
+ }
};
diff --git a/sql/lock.cc b/sql/lock.cc
index ef8c2ba3..a9c866a7 100644
--- a/sql/lock.cc
+++ b/sql/lock.cc
@@ -816,9 +816,8 @@ MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table_ptr, uint count, uint flags)
enum thr_lock_type lock_type;
THR_LOCK_DATA **locks_start;
- if (!((likely(!table->s->tmp_table) ||
- (table->s->tmp_table == TRANSACTIONAL_TMP_TABLE)) &&
- (!(flags & GET_LOCK_SKIP_SEQUENCES) || table->s->sequence == 0)))
+ if ((table->s->tmp_table && table->s->tmp_table != TRANSACTIONAL_TMP_TABLE)
+ || (flags & GET_LOCK_SKIP_SEQUENCES && table->s->sequence != NULL))
continue;
lock_type= table->reginfo.lock_type;
DBUG_ASSERT(lock_type != TL_WRITE_DEFAULT && lock_type != TL_READ_DEFAULT);
@@ -882,7 +881,7 @@ MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table_ptr, uint count, uint flags)
or this connection was killed.
*/
-bool lock_schema_name(THD *thd, const char *db)
+bool lock_schema_name(THD *thd, const Lex_ident_db_normalized &db)
{
MDL_request_list mdl_requests;
MDL_request global_request;
@@ -899,7 +898,7 @@ bool lock_schema_name(THD *thd, const char *db)
return TRUE;
MDL_REQUEST_INIT(&global_request, MDL_key::BACKUP, "", "", MDL_BACKUP_DDL,
MDL_STATEMENT);
- MDL_REQUEST_INIT(&mdl_request, MDL_key::SCHEMA, db, "", MDL_EXCLUSIVE,
+ MDL_REQUEST_INIT(&mdl_request, MDL_key::SCHEMA, db.str, "", MDL_EXCLUSIVE,
MDL_TRANSACTION);
mdl_requests.push_front(&mdl_request);
@@ -936,14 +935,14 @@ bool lock_schema_name(THD *thd, const char *db)
*/
bool lock_object_name(THD *thd, MDL_key::enum_mdl_namespace mdl_type,
- const char *db, const char *name)
+ const LEX_CSTRING &db, const LEX_CSTRING &name)
{
MDL_request_list mdl_requests;
MDL_request global_request;
MDL_request schema_request;
MDL_request mdl_request;
- DBUG_SLOW_ASSERT(ok_for_lower_case_names(db));
+ DBUG_SLOW_ASSERT(Lex_ident_fs(db).ok_for_lower_case_names());
if (thd->locked_tables_mode)
{
@@ -952,16 +951,16 @@ bool lock_object_name(THD *thd, MDL_key::enum_mdl_namespace mdl_type,
return TRUE;
}
- DBUG_ASSERT(name);
+ DBUG_ASSERT(name.str);
DEBUG_SYNC(thd, "before_wait_locked_pname");
if (thd->has_read_only_protection())
return TRUE;
MDL_REQUEST_INIT(&global_request, MDL_key::BACKUP, "", "", MDL_BACKUP_DDL,
MDL_STATEMENT);
- MDL_REQUEST_INIT(&schema_request, MDL_key::SCHEMA, db, "",
+ MDL_REQUEST_INIT(&schema_request, MDL_key::SCHEMA, db.str, "",
MDL_INTENTION_EXCLUSIVE, MDL_TRANSACTION);
- MDL_REQUEST_INIT(&mdl_request, mdl_type, db, name, MDL_EXCLUSIVE,
+ MDL_REQUEST_INIT(&mdl_request, mdl_type, db.str, name.str, MDL_EXCLUSIVE,
MDL_TRANSACTION);
mdl_requests.push_front(&mdl_request);
diff --git a/sql/lock.h b/sql/lock.h
index 85a93b9a..cfce47cc 100644
--- a/sql/lock.h
+++ b/sql/lock.h
@@ -36,10 +36,10 @@ int mysql_lock_remove(THD *thd, MYSQL_LOCK *locked,TABLE *table);
bool mysql_lock_abort_for_thread(THD *thd, TABLE *table);
MYSQL_LOCK *mysql_lock_merge(MYSQL_LOCK *a, MYSQL_LOCK *b, THD *thd= NULL);
/* Lock based on name */
-bool lock_schema_name(THD *thd, const char *db);
+bool lock_schema_name(THD *thd, const Lex_ident_db_normalized &db);
/* Lock based on stored routine name */
bool lock_object_name(THD *thd, MDL_key::enum_mdl_namespace mdl_type,
- const char *db, const char *name);
+ const LEX_CSTRING &db, const LEX_CSTRING &name);
/* flags for get_lock_data */
#define GET_LOCK_UNLOCK 0
diff --git a/sql/log.cc b/sql/log.cc
index 0c3475d9..259ff7c1 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -40,11 +40,13 @@
#include "sql_audit.h"
#include "mysqld.h"
#include "ddl_log.h"
+#include "gtid_index.h"
#include <my_dir.h>
#include <m_ctype.h> // For test_if_number
#include <set_var.h> // for Sys_last_gtid_ptr
+#include <ilist.h>
#ifdef _WIN32
#include "message.h"
@@ -58,6 +60,7 @@
#include "sp_rcontext.h"
#include "sp_head.h"
#include "sql_table.h"
+#include "log_cache.h"
#include "wsrep_mysqld.h"
#ifdef WITH_WSREP
@@ -74,9 +77,6 @@
/* max size of the log message */
#define MAX_LOG_BUFFER_SIZE 1024
#define MAX_TIME_SIZE 32
-#define MY_OFF_T_UNDEF (~(my_off_t)0UL)
-/* Truncate cache log files bigger than this */
-#define CACHE_FILE_TRUNC_SIZE 65536
#define FLAGSTR(V,F) ((V)&(F)?#F" ":"")
@@ -107,6 +107,16 @@ static const LEX_CSTRING write_error_msg=
{ STRING_WITH_LEN("error writing to the binary log") };
static my_bool opt_optimize_thread_scheduling= TRUE;
+/*
+ The binlog_checksum_options value is accessed protected under LOCK_log. As
+ the checksum option used must be consistent across an entire binlog file,
+ and log rotation is needed whenever this is changed.
+
+ As an exception, event checksums are precomputed using a non-locked read
+ of binlog_checksum_options. Later, the value is checked against the option
+ value, this time under LOCK_log, and checksums are re-computed if the value
+ differs.
+*/
ulong binlog_checksum_options;
#ifndef DBUG_OFF
ulong opt_binlog_dbug_fsync_sleep= 0;
@@ -155,12 +165,44 @@ static SHOW_VAR binlog_status_vars_detail[]=
Variables for the binlog background thread.
Protected by the MYSQL_BIN_LOG::LOCK_binlog_background_thread mutex.
*/
+struct Binlog_background_job
+{
+ union
+ {
+ MYSQL_BIN_LOG::xid_count_per_binlog *notify_entry;
+ struct {
+ Gtid_index_writer *gi;
+ rpl_gtid *gtid_list;
+ uint32 gtid_count;
+ uint32 offset;
+ } gtid_index_data;
+ };
+ Binlog_background_job *next;
+ enum enum_job_type {
+ CHECKPOINT_NOTIFY,
+ GTID_INDEX_UPDATE,
+ GTID_INDEX_CLOSE,
+ SENTINEL
+ } job_type;
+};
static bool binlog_background_thread_started= false;
static bool binlog_background_thread_stop= false;
-static MYSQL_BIN_LOG::xid_count_per_binlog *
- binlog_background_thread_queue= NULL;
+static bool binlog_background_thread_sentinel= false;
+static Binlog_background_job *binlog_background_thread_queue= NULL;
+static Binlog_background_job **binlog_background_thread_endptr=
+ &binlog_background_thread_queue;
+static Binlog_background_job *binlog_background_freelist= NULL;
static bool start_binlog_background_thread();
+static int queue_binlog_background_checkpoint_notify(
+ MYSQL_BIN_LOG::xid_count_per_binlog *entry);
+static int queue_binlog_background_gtid_index_update(Gtid_index_writer *gi,
+ uint32 offset,
+ rpl_gtid *gtid_list,
+ uint32 count);
+static int queue_binlog_background_gtid_index_close(Gtid_index_writer *gi);
+static int queue_binlog_background_sentinel();
+static void binlog_background_wait_for_sentinel();
static rpl_binlog_state rpl_global_gtid_binlog_state;
@@ -272,229 +314,6 @@ void make_default_log_name(char **out, const char* log_ext, bool once)
Helper classes to store non-transactional and transactional data
before copying it to the binary log.
*/
-class binlog_cache_data
-{
-public:
- binlog_cache_data(): m_pending(0), status(0),
- before_stmt_pos(MY_OFF_T_UNDEF),
- incident(FALSE),
- saved_max_binlog_cache_size(0), ptr_binlog_cache_use(0),
- ptr_binlog_cache_disk_use(0)
- { }
-
- ~binlog_cache_data()
- {
- DBUG_ASSERT(empty());
- close_cached_file(&cache_log);
- }
-
- /*
- Return 1 if there is no relevant entries in the cache
-
- This is:
- - Cache is empty
- - There are row or critical (DDL?) events in the cache
-
- The status test is needed to avoid writing entries with only
- a table map entry, which would crash in do_apply_event() on the slave
- as it assumes that there is always a row entry after a table map.
- */
- bool empty() const
- {
- return (pending() == NULL &&
- (my_b_write_tell(&cache_log) == 0 ||
- ((status & (LOGGED_ROW_EVENT | LOGGED_CRITICAL)) == 0)));
- }
-
- Rows_log_event *pending() const
- {
- return m_pending;
- }
-
- void set_pending(Rows_log_event *const pending_arg)
- {
- m_pending= pending_arg;
- }
-
- void set_incident(void)
- {
- incident= TRUE;
- }
-
- bool has_incident(void)
- {
- return(incident);
- }
-
- void reset()
- {
- bool cache_was_empty= empty();
- bool truncate_file= (cache_log.file != -1 &&
- my_b_write_tell(&cache_log) > CACHE_FILE_TRUNC_SIZE);
- truncate(0,1); // Forget what's in cache
- if (!cache_was_empty)
- compute_statistics();
- if (truncate_file)
- my_chsize(cache_log.file, 0, 0, MYF(MY_WME));
-
- status= 0;
- incident= FALSE;
- before_stmt_pos= MY_OFF_T_UNDEF;
- DBUG_ASSERT(empty());
- }
-
- my_off_t get_byte_position() const
- {
- return my_b_tell(&cache_log);
- }
-
- my_off_t get_prev_position()
- {
- return(before_stmt_pos);
- }
-
- void set_prev_position(my_off_t pos)
- {
- before_stmt_pos= pos;
- }
-
- void restore_prev_position()
- {
- truncate(before_stmt_pos);
- }
-
- void restore_savepoint(my_off_t pos)
- {
- truncate(pos);
- if (pos < before_stmt_pos)
- before_stmt_pos= MY_OFF_T_UNDEF;
- }
-
- void set_binlog_cache_info(my_off_t param_max_binlog_cache_size,
- ulong *param_ptr_binlog_cache_use,
- ulong *param_ptr_binlog_cache_disk_use)
- {
- /*
- The assertions guarantee that the set_binlog_cache_info is
- called just once and information passed as parameters are
- never zero.
-
- This is done while calling the constructor binlog_cache_mngr.
- We cannot set information in the constructor binlog_cache_data
- because the space for binlog_cache_mngr is allocated through
- a placement new.
-
- In the future, we can refactor this and change it to avoid
- the set_binlog_info.
- */
- DBUG_ASSERT(saved_max_binlog_cache_size == 0);
- DBUG_ASSERT(param_max_binlog_cache_size != 0);
- DBUG_ASSERT(ptr_binlog_cache_use == 0);
- DBUG_ASSERT(param_ptr_binlog_cache_use != 0);
- DBUG_ASSERT(ptr_binlog_cache_disk_use == 0);
- DBUG_ASSERT(param_ptr_binlog_cache_disk_use != 0);
-
- saved_max_binlog_cache_size= param_max_binlog_cache_size;
- ptr_binlog_cache_use= param_ptr_binlog_cache_use;
- ptr_binlog_cache_disk_use= param_ptr_binlog_cache_disk_use;
- cache_log.end_of_file= saved_max_binlog_cache_size;
- }
-
- void add_status(enum_logged_status status_arg)
- {
- status|= status_arg;
- }
-
- /*
- Cache to store data before copying it to the binary log.
- */
- IO_CACHE cache_log;
-
-private:
- /*
- Pending binrows event. This event is the event where the rows are currently
- written.
- */
- Rows_log_event *m_pending;
-
- /*
- Bit flags for what has been writing to cache. Used to
- discard logs without any data changes.
- see enum_logged_status;
- */
- uint32 status;
-
- /*
- Binlog position before the start of the current statement.
- */
- my_off_t before_stmt_pos;
-
- /*
- This indicates that some events did not get into the cache and most likely
- it is corrupted.
- */
- bool incident;
-
- /**
- This function computes binlog cache and disk usage.
- */
- void compute_statistics()
- {
- statistic_increment(*ptr_binlog_cache_use, &LOCK_status);
- if (cache_log.disk_writes != 0)
- {
-#ifdef REAL_STATISTICS
- statistic_add(*ptr_binlog_cache_disk_use,
- cache_log.disk_writes, &LOCK_status);
-#else
- statistic_increment(*ptr_binlog_cache_disk_use, &LOCK_status);
-#endif
- cache_log.disk_writes= 0;
- }
- }
-
- /*
- Stores the values of maximum size of the cache allowed when this cache
- is configured. This corresponds to either
- . max_binlog_cache_size or max_binlog_stmt_cache_size.
- */
- my_off_t saved_max_binlog_cache_size;
-
- /*
- Stores a pointer to the status variable that keeps track of the in-memory
- cache usage. This corresponds to either
- . binlog_cache_use or binlog_stmt_cache_use.
- */
- ulong *ptr_binlog_cache_use;
-
- /*
- Stores a pointer to the status variable that keeps track of the disk
- cache usage. This corresponds to either
- . binlog_cache_disk_use or binlog_stmt_cache_disk_use.
- */
- ulong *ptr_binlog_cache_disk_use;
-
- /*
- It truncates the cache to a certain position. This includes deleting the
- pending event.
- */
- void truncate(my_off_t pos, bool reset_cache=0)
- {
- DBUG_PRINT("info", ("truncating to position %lu", (ulong) pos));
- cache_log.error=0;
- if (pending())
- {
- delete pending();
- set_pending(0);
- }
- reinit_io_cache(&cache_log, WRITE_CACHE, pos, 0, reset_cache);
- cache_log.end_of_file= saved_max_binlog_cache_size;
- }
-
- binlog_cache_data& operator=(const binlog_cache_data& info);
- binlog_cache_data(const binlog_cache_data& info);
-};
-
void Log_event_writer::add_status(enum_logged_status status)
{
@@ -508,6 +327,38 @@ void Log_event_writer::set_incident()
}
+/**
+ Select if and how to write checksum for an event written to the binlog.
+
+ - When writing directly to the binlog, the user-configured checksum option
+ is used.
+ - When writing to a transaction or statement cache, we have
+ binlog_cache_data that contains the checksum option to use (pre-computed
+ checksums).
+ - Otherwise, no checksum used.
+*/
+enum_binlog_checksum_alg
+Log_event::select_checksum_alg(const binlog_cache_data *data)
+{
+ if (cache_type == Log_event::EVENT_NO_CACHE)
+ {
+ DBUG_ASSERT(!data);
+ /*
+ When we're selecting the checksum algorithm to write directly to the
+ actual binlog, we must be holding the LOCK_log, otherwise the checksum
+ configuration could change just after we read it.
+ */
+ mysql_mutex_assert_owner(mysql_bin_log.get_log_lock());
+ return (enum_binlog_checksum_alg)binlog_checksum_options;
+ }
+
+ if (data)
+ return data->checksum_opt;
+
+ return BINLOG_CHECKSUM_ALG_OFF;
+}
+
+
class binlog_cache_mngr {
public:
binlog_cache_mngr(my_off_t param_max_binlog_stmt_cache_size,
@@ -515,8 +366,10 @@ public:
ulong *param_ptr_binlog_stmt_cache_use,
ulong *param_ptr_binlog_stmt_cache_disk_use,
ulong *param_ptr_binlog_cache_use,
- ulong *param_ptr_binlog_cache_disk_use)
- : last_commit_pos_offset(0), using_xa(FALSE), xa_xid(0)
+ ulong *param_ptr_binlog_cache_disk_use,
+ bool precompute_checksums)
+ : stmt_cache(precompute_checksums), trx_cache(precompute_checksums),
+ last_commit_pos_offset(0), using_xa(FALSE), xa_xid(0)
{
stmt_cache.set_binlog_cache_info(param_max_binlog_stmt_cache_size,
param_ptr_binlog_stmt_cache_use,
@@ -578,6 +431,7 @@ public:
ulong binlog_id;
/* Set if we get an error during commit that must be returned from unlog(). */
bool delayed_error;
+
//Will be reset when gtid is written into binlog
uchar gtid_flags3;
decltype (rpl_gtid::seq_no) sa_seq_no;
@@ -1763,12 +1617,11 @@ binlog_trans_log_truncate(THD *thd, my_off_t pos)
DBUG_ENTER("binlog_trans_log_truncate");
DBUG_PRINT("enter", ("pos: %lu", (ulong) pos));
- DBUG_ASSERT(thd_get_ha_data(thd, binlog_hton) != NULL);
+ DBUG_ASSERT(thd->binlog_get_cache_mngr() != NULL);
/* Only true if binlog_trans_log_savepos() wasn't called before */
DBUG_ASSERT(pos != ~(my_off_t) 0);
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
cache_mngr->trx_cache.restore_savepoint(pos);
DBUG_VOID_RETURN;
}
@@ -1808,8 +1661,7 @@ int binlog_init(void *p)
static int binlog_close_connection(handlerton *hton, THD *thd)
{
DBUG_ENTER("binlog_close_connection");
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
#ifdef WITH_WSREP
if (WSREP(thd) && cache_mngr && !cache_mngr->trx_cache.empty()) {
IO_CACHE* cache= cache_mngr->get_binlog_cache_log(true);
@@ -2057,29 +1909,31 @@ static int
binlog_truncate_trx_cache(THD *thd, binlog_cache_mngr *cache_mngr, bool all)
{
DBUG_ENTER("binlog_truncate_trx_cache");
+
+ if(!WSREP_EMULATE_BINLOG_NNULL(thd) && !mysql_bin_log.is_open())
+ DBUG_RETURN(0);
+
int error=0;
- /*
- This function handles transactional changes and as such this flag
- equals to true.
- */
- bool const is_transactional= TRUE;
DBUG_PRINT("info", ("thd->options={ %s %s}, transaction: %s",
FLAGSTR(thd->variables.option_bits, OPTION_NOT_AUTOCOMMIT),
FLAGSTR(thd->variables.option_bits, OPTION_BEGIN),
all ? "all" : "stmt"));
- thd->binlog_remove_pending_rows_event(TRUE, is_transactional);
+ auto &trx_cache= cache_mngr->trx_cache;
+ MYSQL_BIN_LOG::remove_pending_rows_event(thd, &trx_cache);
+ thd->reset_binlog_for_next_statement();
+
/*
If rolling back an entire transaction or a single statement not
inside a transaction, we reset the transaction cache.
*/
if (ending_trans(thd, all))
{
- if (cache_mngr->trx_cache.has_incident())
+ if (trx_cache.has_incident())
error= mysql_bin_log.write_incident(thd);
- thd->reset_binlog_for_next_statement();
+ DBUG_ASSERT(thd->binlog_table_maps == 0);
cache_mngr->reset(false, true);
}
@@ -2088,9 +1942,9 @@ binlog_truncate_trx_cache(THD *thd, binlog_cache_mngr *cache_mngr, bool all)
transaction cache to remove the statement.
*/
else
- cache_mngr->trx_cache.restore_prev_position();
+ trx_cache.restore_prev_position();
- DBUG_ASSERT(thd->binlog_get_pending_rows_event(is_transactional) == NULL);
+ DBUG_ASSERT(trx_cache.pending() == NULL);
DBUG_RETURN(error);
}
@@ -2167,7 +2021,6 @@ int binlog_rollback_by_xid(handlerton *hton, XID *xid)
DBUG_ASSERT(thd->lex->sql_command == SQLCOM_XA_ROLLBACK ||
(thd->transaction->xid_state.get_state_code() == XA_ROLLBACK_ONLY));
-
rc= binlog_rollback(hton, thd, TRUE);
thd->ha_data[hton->slot].ha_info[1].reset();
@@ -2250,6 +2103,7 @@ static int binlog_commit_flush_xa_prepare(THD *thd, bool all,
return (binlog_flush_cache(thd, cache_mngr, &end_evt, all, TRUE, TRUE));
}
+
/**
This function is called once after each statement.
@@ -2266,9 +2120,12 @@ int binlog_commit(THD *thd, bool all, bool ro_1pc)
PSI_stage_info org_stage;
DBUG_ENTER("binlog_commit");
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ bool is_ending_transaction= ending_trans(thd, all);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
+ /*
+ cache_mngr can be NULL in case if binlog logging is disabled.
+ */
if (!cache_mngr)
{
DBUG_ASSERT(WSREP(thd) ||
@@ -2328,7 +2185,7 @@ int binlog_commit(THD *thd, bool all, bool ro_1pc)
- We are in a transaction and a full transaction is committed.
Otherwise, we accumulate the changes.
*/
- if (likely(!error) && ending_trans(thd, all))
+ if (likely(!error) && is_ending_transaction)
{
bool is_xa_prepare= is_preparing_xa(thd);
@@ -2368,9 +2225,9 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
{
DBUG_ENTER("binlog_rollback");
+ bool is_ending_trans= ending_trans(thd, all);
int error= 0;
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
if (!cache_mngr)
{
@@ -2411,7 +2268,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
thd->reset_binlog_for_next_statement();
DBUG_RETURN(error);
}
- if (!wsrep_emulate_bin_log && mysql_bin_log.check_write_error(thd))
+ if (!wsrep_emulate_bin_log && Event_log::check_write_error(thd))
{
/*
"all == true" means that a "rollback statement" triggered the error and
@@ -2429,7 +2286,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
else if (likely(!error))
{
ulong binlog_format= thd->wsrep_binlog_format(thd->variables.binlog_format);
- if (ending_trans(thd, all) && trans_cannot_safely_rollback(thd, all))
+ if (is_ending_trans && trans_cannot_safely_rollback(thd, all))
error= binlog_rollback_flush_trx_cache(thd, all, cache_mngr);
/*
Truncate the cache if:
@@ -2441,7 +2298,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
. the format is not MIXED or no temporary non-trans table
was updated.
*/
- else if (ending_trans(thd, all) ||
+ else if (is_ending_trans ||
(!(thd->transaction->stmt.has_created_dropped_temp_table() &&
!thd->is_current_stmt_binlog_format_row()) &&
(!stmt_has_updated_non_trans_table(thd) ||
@@ -2464,19 +2321,20 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
void binlog_reset_cache(THD *thd)
{
- binlog_cache_mngr *const cache_mngr= opt_bin_log ?
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton) : 0;
+ binlog_cache_mngr *const cache_mngr= opt_bin_log ?
+ thd->binlog_get_cache_mngr() : 0;
DBUG_ENTER("binlog_reset_cache");
if (cache_mngr)
{
- thd->binlog_remove_pending_rows_event(TRUE, TRUE);
+ MYSQL_BIN_LOG::remove_pending_rows_event(thd, &cache_mngr->trx_cache);
+ thd->reset_binlog_for_next_statement();
cache_mngr->reset(true, true);
}
DBUG_VOID_RETURN;
}
-void MYSQL_BIN_LOG::set_write_error(THD *thd, bool is_transactional)
+void Event_log::set_write_error(THD *thd, bool is_transactional)
{
DBUG_ENTER("MYSQL_BIN_LOG::set_write_error");
@@ -2516,7 +2374,7 @@ void MYSQL_BIN_LOG::set_write_error(THD *thd, bool is_transactional)
DBUG_VOID_RETURN;
}
-bool MYSQL_BIN_LOG::check_write_error(THD *thd)
+bool Event_log::check_write_error(THD *thd)
{
DBUG_ENTER("MYSQL_BIN_LOG::check_write_error");
@@ -2545,7 +2403,7 @@ bool MYSQL_BIN_LOG::check_write_error(THD *thd)
event to the binlog rather than write corrupt data to it.
*/
bool
-MYSQL_BIN_LOG::check_cache_error(THD *thd, binlog_cache_data *cache_data)
+Event_log::check_cache_error(THD *thd, binlog_cache_data *cache_data)
{
if (!cache_data)
return false;
@@ -2621,18 +2479,13 @@ static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
Write ROLLBACK TO SAVEPOINT to the binlog cache if we have updated some
non-transactional table. Otherwise, truncate the binlog cache starting
from the SAVEPOINT command.
- */
-#ifdef WITH_WSREP
- /* for streaming replication, we must replicate savepoint rollback so that
- slaves can maintain SR transactions
+
+ For streaming replication, we must replicate savepoint rollback so that
+ slaves can maintain SR transactions
*/
- if (unlikely(thd->wsrep_trx().is_streaming() ||
- (trans_has_updated_non_trans_table(thd)) ||
- (thd->variables.option_bits & OPTION_BINLOG_THIS_TRX)))
-#else
- if (unlikely(trans_has_updated_non_trans_table(thd) ||
- (thd->variables.option_bits & OPTION_BINLOG_THIS_TRX)))
-#endif /* WITH_WSREP */
+ if (IF_WSREP(thd->wsrep_trx().is_streaming(),0) ||
+ trans_has_updated_non_trans_table(thd) ||
+ (thd->variables.option_bits & OPTION_BINLOG_THIS_TRX))
{
char buf[1024];
String log_query(buf, sizeof(buf), &my_charset_bin);
@@ -3091,13 +2944,14 @@ void MYSQL_LOG::close(uint exiting)
{
end_io_cache(&log_file);
- if (log_type == LOG_BIN && mysql_file_sync(log_file.file, MYF(MY_WME)) && ! write_error)
+ if (log_type == LOG_BIN && log_file.file >= 0 &&
+ mysql_file_sync(log_file.file, MYF(MY_WME)) && ! write_error)
{
write_error= 1;
sql_print_error(ER_DEFAULT(ER_ERROR_ON_WRITE), name, errno);
}
- if (!(exiting & LOG_CLOSE_DELAYED_CLOSE) &&
+ if (!(exiting & LOG_CLOSE_DELAYED_CLOSE) && log_file.file >= 0 &&
mysql_file_close(log_file.file, MYF(MY_WME)) && ! write_error)
{
write_error= 1;
@@ -3592,12 +3446,12 @@ const char *MYSQL_LOG::generate_name(const char *log_name,
MYSQL_BIN_LOG::MYSQL_BIN_LOG(uint *sync_period)
:reset_master_pending(0), mark_xid_done_waiting(0),
- bytes_written(0), last_used_log_number(0),
- file_id(1), open_count(1),
+ bytes_written(0), binlog_space_total(0),
+ last_used_log_number(0), file_id(1), open_count(1),
group_commit_queue(0), group_commit_queue_busy(FALSE),
num_commits(0), num_group_commits(0),
group_commit_trigger_count(0), group_commit_trigger_timeout(0),
- group_commit_trigger_lock_wait(0),
+ group_commit_trigger_lock_wait(0), gtid_index(nullptr),
sync_period_ptr(sync_period), sync_counter(0),
state_file_deleted(false), binlog_state_recover_done(false),
is_relay_log(0), relay_signal_cnt(0),
@@ -3610,7 +3464,7 @@ MYSQL_BIN_LOG::MYSQL_BIN_LOG(uint *sync_period)
We don't want to initialize locks here as such initialization depends on
safe_mutex (when using safe_mutex) which depends on MY_INIT(), which is
called only in main(). Doing initialization here would make it happen
- before main().
+ before main(). init_pthread_objects() can be called for that purpose.
*/
index_file_name[0] = 0;
bzero((char*) &index_file, sizeof(index_file));
@@ -3702,7 +3556,7 @@ void MYSQL_BIN_LOG::init(ulong max_size_arg)
void MYSQL_BIN_LOG::init_pthread_objects()
{
- MYSQL_LOG::init_pthread_objects();
+ Event_log::init_pthread_objects();
mysql_mutex_init(m_key_LOCK_index, &LOCK_index, MY_MUTEX_INIT_SLOW);
mysql_mutex_setflags(&LOCK_index, MYF_NO_DEADLOCK_DETECTION);
mysql_mutex_init(key_BINLOG_LOCK_xid_list,
@@ -3718,9 +3572,6 @@ void MYSQL_BIN_LOG::init_pthread_objects()
&COND_binlog_background_thread, 0);
mysql_cond_init(key_BINLOG_COND_binlog_background_thread_end,
&COND_binlog_background_thread_end, 0);
-
- mysql_mutex_init(m_key_LOCK_binlog_end_pos, &LOCK_binlog_end_pos,
- MY_MUTEX_INIT_SLOW);
}
@@ -3791,6 +3642,71 @@ bool MYSQL_BIN_LOG::open_index_file(const char *index_file_name_arg,
}
+bool Event_log::open(enum cache_type io_cache_type_arg)
+{
+ bool error= init_io_cache(&log_file, -1, LOG_BIN_IO_SIZE, io_cache_type_arg,
+ 0, 0, MYF(MY_WME | MY_NABP | MY_WAIT_IF_FULL));
+
+ log_state= LOG_OPENED;
+ inited= true;
+ if (error)
+ return error;
+
+ longlong bytes_written= write_description_event(BINLOG_CHECKSUM_ALG_OFF,
+ false, true, false);
+ status_var_add(current_thd->status_var.binlog_bytes_written, bytes_written);
+ return bytes_written < 0;
+}
+
+longlong
+Event_log::write_description_event(enum_binlog_checksum_alg checksum_alg,
+ bool encrypt, bool dont_set_created,
+ bool is_relay_log)
+{
+ Format_description_log_event s(BINLOG_VERSION, NULL, checksum_alg);
+ /*
+ don't set LOG_EVENT_BINLOG_IN_USE_F for SEQ_READ_APPEND io_cache
+ as we won't be able to reset it later
+ */
+ if (io_cache_type == WRITE_CACHE)
+ s.flags |= LOG_EVENT_BINLOG_IN_USE_F;
+ if (is_relay_log)
+ s.set_relay_log_event();
+
+ crypto.scheme = 0;
+ if (!s.is_valid())
+ return -1;
+ s.dont_set_created= dont_set_created;
+ if (write_event(&s, checksum_alg, 0, &log_file))
+ return -1;
+
+ if (encrypt)
+ {
+ uint key_version= encryption_key_get_latest_version(ENCRYPTION_KEY_SYSTEM_DATA);
+ if (key_version == ENCRYPTION_KEY_VERSION_INVALID)
+ {
+ sql_print_error("Failed to enable encryption of binary logs");
+ return -1;
+ }
+
+ if (key_version != ENCRYPTION_KEY_NOT_ENCRYPTED)
+ {
+ if (my_random_bytes(crypto.nonce, sizeof(crypto.nonce)))
+ return -1;
+
+ Start_encryption_log_event sele(1, key_version, crypto.nonce);
+ if (write_event(&sele, checksum_alg, 0, &log_file))
+ return -1;
+
+ // Start_encryption_log_event is written, enable the encryption
+ if (crypto.init(sele.crypto_scheme, key_version))
+ return -1;
+ }
+ }
+ return (longlong)s.data_written;
+}
+
+
/**
Open a (new) binlog file.
@@ -3916,17 +3832,7 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
}
{
- /*
- In 4.x we put Start event only in the first binlog. But from 5.0 we
- want a Start event even if this is not the very first binlog.
- */
- Format_description_log_event s(BINLOG_VERSION);
- /*
- don't set LOG_EVENT_BINLOG_IN_USE_F for SEQ_READ_APPEND io_cache
- as we won't be able to reset it later
- */
- if (io_cache_type == WRITE_CACHE)
- s.flags |= LOG_EVENT_BINLOG_IN_USE_F;
+ enum_binlog_checksum_alg alg;
if (is_relay_log)
{
@@ -3934,45 +3840,16 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
relay_log_checksum_alg=
opt_slave_sql_verify_checksum ? (enum_binlog_checksum_alg) binlog_checksum_options
: BINLOG_CHECKSUM_ALG_OFF;
- s.checksum_alg= relay_log_checksum_alg;
- s.set_relay_log_event();
+ alg= relay_log_checksum_alg;
}
else
- s.checksum_alg= (enum_binlog_checksum_alg)binlog_checksum_options;
+ alg= (enum_binlog_checksum_alg)binlog_checksum_options;
- crypto.scheme = 0;
- DBUG_ASSERT(s.checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
- if (!s.is_valid())
- goto err;
- s.dont_set_created= null_created_arg;
- if (write_event(&s))
+ longlong written= write_description_event(alg, encrypt_binlog,
+ null_created_arg, is_relay_log);
+ if (written == -1)
goto err;
- bytes_written+= s.data_written;
-
- if (encrypt_binlog)
- {
- uint key_version= encryption_key_get_latest_version(ENCRYPTION_KEY_SYSTEM_DATA);
- if (key_version == ENCRYPTION_KEY_VERSION_INVALID)
- {
- sql_print_error("Failed to enable encryption of binary logs");
- goto err;
- }
-
- if (key_version != ENCRYPTION_KEY_NOT_ENCRYPTED)
- {
- if (my_random_bytes(crypto.nonce, sizeof(crypto.nonce)))
- goto err;
-
- Start_encryption_log_event sele(1, key_version, crypto.nonce);
- sele.checksum_alg= s.checksum_alg;
- if (write_event(&sele))
- goto err;
-
- // Start_encryption_log_event is written, enable the encryption
- if (crypto.init(sele.crypto_scheme, key_version))
- goto err;
- }
- }
+ bytes_written+= written;
if (!is_relay_log)
{
@@ -4016,6 +3893,26 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
if (write_event(&gl_ev))
goto err;
+ /* Open an index file for this binlog file. */
+ DBUG_ASSERT(!gtid_index); /* Binlog close should clear it. */
+ if (gtid_index)
+ delete gtid_index;
+ if (opt_binlog_gtid_index)
+ {
+ my_off_t offset= my_b_tell(&log_file);
+ gtid_index=
+ new Gtid_index_writer(log_file_name, (uint32)offset,
+ &rpl_global_gtid_binlog_state,
+ (uint32)opt_binlog_gtid_index_page_size,
+ (my_off_t)opt_binlog_gtid_index_span_min);
+ if (!gtid_index)
+ sql_print_information("Could not create GTID index for binlog "
+ "file '%s'. Accesses to this binlog file will "
+ "fallback to slower sequential scan.");
+ }
+ else
+ gtid_index= nullptr;
+
/* Output a binlog checkpoint event at the start of the binlog file. */
/*
@@ -4091,7 +3988,8 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
/* Don't set log_pos in event header */
description_event_for_queue->set_artificial_event();
- if (write_event(description_event_for_queue))
+ if (write_event(description_event_for_queue,
+ description_event_for_queue->used_checksum_alg))
goto err;
bytes_written+= description_event_for_queue->data_written;
}
@@ -4340,7 +4238,8 @@ int MYSQL_BIN_LOG::find_log_pos(LOG_INFO *linfo, const char *log_name,
log_name ? log_name : "NULL", full_log_name));
/* As the file is flushed, we can't get an error here */
- (void) reinit_io_cache(&index_file, READ_CACHE, (my_off_t) 0, 0, 0);
+ error= reinit_io_cache(&index_file, READ_CACHE, (my_off_t) 0, 0, 0);
+ DBUG_ASSERT(!error);
for (;;)
{
@@ -4561,12 +4460,31 @@ bool MYSQL_BIN_LOG::reset_logs(THD *thd, bool create_new_log,
no new ones will be written. So we can proceed to delete the logs.
*/
mysql_mutex_unlock(&LOCK_xid_list);
+
+ /*
+ Push a sentinel through the binlog background thread and wait for it to
+ return. When it does, we know that no more GTID index operations are
+ pending as we are holding LOCK_log.
+ (This is normally already the case as we pushed a binlog checkpoint
+ request through. But if no XID-capable engines are enabled (eg. running
+ without InnoDB), then that is a no-op).
+ */
+ queue_binlog_background_sentinel();
+ binlog_background_wait_for_sentinel();
}
/* Save variables so that we can reopen the log */
save_name=name;
name=0; // Protect against free
- close(LOG_CLOSE_TO_BE_OPENED);
+
+ /*
+ Close the active log.
+ Close the active GTID index synchroneously. We don't want the close
+ running in the background while we delete the gtid index file. And we just
+ pushed a sentinel through the binlog background thread while holding
+ LOCK_log, so no other GTID index operations can be pending.
+ */
+ close(LOG_CLOSE_TO_BE_OPENED|LOG_CLOSE_SYNC_GTID_INDEX);
last_used_log_number= 0; // Reset log number cache
@@ -4591,6 +4509,28 @@ bool MYSQL_BIN_LOG::reset_logs(THD *thd, bool create_new_log,
for (;;)
{
+ /* Delete any GTID index file. */
+ char buf[Gtid_index_base::GTID_INDEX_FILENAME_MAX_SIZE];
+ Gtid_index_base::make_gtid_index_file_name(buf, sizeof(buf),
+ linfo.log_file_name);
+ if (my_delete(buf, MYF(0)))
+ {
+ /* If ENOENT, the GTID index file is already deleted or never existed. */
+ if (my_errno != ENOENT)
+ {
+ if (thd)
+ {
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_CANT_DELETE_FILE, ER_THD(thd, ER_CANT_DELETE_FILE),
+ buf, my_errno);
+ }
+ sql_print_information("Failed to delete file '%s' (errno=%d)",
+ buf, my_errno);
+ }
+ my_errno= 0;
+ }
+
+ /* Delete the binlog file. */
if (unlikely((error= my_delete(linfo.log_file_name, MYF(0)))))
{
if (my_errno == ENOENT)
@@ -4699,6 +4639,7 @@ err:
reset_master_pending--;
reset_master_count++;
mysql_mutex_unlock(&LOCK_xid_list);
+ binlog_space_total= 0;
}
mysql_mutex_unlock(&LOCK_index);
@@ -5017,7 +4958,6 @@ int MYSQL_BIN_LOG::open_purge_index_file(bool destroy)
{
int error= 0;
File file= -1;
-
DBUG_ENTER("MYSQL_BIN_LOG::open_purge_index_file");
if (destroy)
@@ -5101,6 +5041,7 @@ int MYSQL_BIN_LOG::purge_index_entry(THD *thd, ulonglong *reclaimed_space,
int error= 0;
LOG_INFO log_info;
LOG_INFO check_log_info;
+ char buf[Gtid_index_base::GTID_INDEX_FILENAME_MAX_SIZE];
DBUG_ASSERT(my_b_inited(&purge_index_file));
@@ -5134,6 +5075,24 @@ int MYSQL_BIN_LOG::purge_index_entry(THD *thd, ulonglong *reclaimed_space,
/* Get rid of the trailing '\n' */
log_info.log_file_name[length-1]= 0;
+ Gtid_index_base::make_gtid_index_file_name(buf, sizeof(buf),
+ log_info.log_file_name);
+ if (my_delete(buf, MYF(0)))
+ {
+ /* If ENOENT, the GTID index file is already deleted or never existed. */
+ if (my_errno != ENOENT)
+ {
+ if (thd)
+ {
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_CANT_DELETE_FILE, ER_THD(thd, ER_CANT_DELETE_FILE),
+ buf, my_errno);
+ }
+ sql_print_information("Failed to delete file '%s'", buf);
+ }
+ my_errno= 0;
+ }
+
if (unlikely(!mysql_file_stat(m_key_file_log, log_info.log_file_name, &s,
MYF(0))))
{
@@ -5299,8 +5258,7 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time)
if (unlikely((error=find_log_pos(&log_info, NullS, 0 /*no mutex*/))))
goto err;
- while (strcmp(log_file_name, log_info.log_file_name) &&
- can_purge_log(log_info.log_file_name))
+ while (can_purge_log(log_info.log_file_name))
{
if (!mysql_file_stat(m_key_file_log,
log_info.log_file_name, &stat_area, MYF(0)))
@@ -5338,46 +5296,246 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time)
}
else
{
- if (stat_area.st_mtime < purge_time)
- strmake_buf(to_log, log_info.log_file_name);
- else
+ if (stat_area.st_mtime >= purge_time)
break;
+ strmake_buf(to_log, log_info.log_file_name);
}
if (find_next_log(&log_info, 0))
break;
}
- error= (to_log[0] ? purge_logs(to_log, 1, 0, 1, (ulonglong *) 0) : 0);
+ if (to_log[0])
+ {
+ ulonglong reclaimed_space= 0;
+ error= purge_logs(to_log, 1, 0, 1, &reclaimed_space);
+ binlog_space_total-= reclaimed_space;
+ }
+
+err:
+ mysql_mutex_unlock(&LOCK_index);
+ DBUG_RETURN(error);
+}
+
+
+/**
+ Purge old logs so that we have a total size lower than binlog_space_limit.
+
+ @note
+ If any of the logs before the deleted one is in use,
+ only purge logs up to this one.
+
+ @retval
+ 0 ok
+ @retval
+ LOG_INFO_FATAL if any other than ENOENT error from
+ mysql_file_stat() or mysql_file_delete()
+*/
+
+int MYSQL_BIN_LOG::real_purge_logs_by_size(ulonglong binlog_pos)
+{
+ int error= 0;
+ LOG_INFO log_info;
+ MY_STAT stat_area;
+ char to_log[FN_REFLEN];
+ ulonglong found_space= 0;
+ DBUG_ENTER("real_purge_logs_by_size");
+
+ mysql_mutex_lock(&LOCK_index);
+
+ /* Check if another user changed the value of binlog_space_limit just now */
+ if (! binlog_space_limit)
+ goto err;
+
+ if ((error = find_log_pos(&log_info, NullS,
+ false /*need_lock_index=false*/)))
+ goto err;
+
+ to_log[0] = 0;
+ while (can_purge_log(log_info.log_file_name))
+ {
+ if (!mysql_file_stat(m_key_file_log, log_info.log_file_name, &stat_area,
+ MYF(0)))
+ {
+ if (my_errno != ENOENT)
+ {
+ /*
+ Other than ENOENT are fatal
+ */
+ THD *thd = current_thd;
+ if (thd)
+ {
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_BINLOG_PURGE_FATAL_ERR,
+ "A problem with getting info on being purged %s; "
+ "consider examining correspondence "
+ "of your binlog index file "
+ "to the actual binlog files",
+ log_info.log_file_name);
+ }
+ else
+ {
+ sql_print_warning("Failed to stat log file '%s'",
+ log_info.log_file_name);
+ }
+ error= LOG_INFO_FATAL;
+ goto err;
+ }
+ }
+ else
+ {
+ found_space+= stat_area.st_size;
+ strmake(to_log, log_info.log_file_name, sizeof(to_log) - 1);
+ if (binlog_space_total + binlog_pos - found_space <= binlog_space_limit)
+ break; // Found enough
+ if (find_next_log(&log_info, false /*need_lock_index=false*/))
+ break;
+ }
+ }
+ if (found_space)
+ {
+ ulonglong reclaimed_space= 0;
+ purge_logs(to_log, true, false /*need_lock_index=false*/,
+ true /*need_update_threads=true*/,
+ &reclaimed_space);
+ DBUG_ASSERT(reclaimed_space == found_space);
+ binlog_space_total-= reclaimed_space;
+ /*
+ The following is here to handle cases where something goes wrong.
+ Like a bug or if somethings adds data to an existing log file.
+ */
+ DBUG_ASSERT((longlong) binlog_space_total >= 0);
+ if ((longlong) binlog_space_total <= 0)
+ count_binlog_space();
+ }
err:
mysql_mutex_unlock(&LOCK_index);
DBUG_RETURN(error);
}
+/*
+ The following variables are here to allows us to quickly check if
+ the can_purge_log(log_file_name_arg) name will fail in the
+ 'log_in_use' call.
+
+ waiting_for_slave_to_change_binlog is 1 if last log_in_use failed.
+ purge_binlog_name is the last failed log_file_name_arg.
+
+ sending_new_binlog_file, cached in purge_sending_new_binlog_file,
+ is incremented every time a slave changes to use a new binary log.
+*/
+
+static bool waiting_for_slave_to_change_binlog= 0;
+static ulonglong purge_sending_new_binlog_file= 0;
+static char purge_binlog_name[FN_REFLEN];
bool
MYSQL_BIN_LOG::can_purge_log(const char *log_file_name_arg)
{
- xid_count_per_binlog *b;
+ THD *thd= current_thd; // May be NULL at startup
+ bool res;
- if (is_active(log_file_name_arg))
- return false;
- mysql_mutex_lock(&LOCK_xid_list);
+ if (is_active(log_file_name_arg) ||
+ (!is_relay_log && waiting_for_slave_to_change_binlog &&
+ purge_sending_new_binlog_file == sending_new_binlog_file &&
+ !strcmp(log_file_name_arg, purge_binlog_name)))
+ return false;
+
+ DBUG_ASSERT(!is_relay_log || binlog_xid_count_list.is_empty());
+ if (!is_relay_log)
{
- I_List_iterator<xid_count_per_binlog> it(binlog_xid_count_list);
- while ((b= it++) &&
- 0 != strncmp(log_file_name_arg+dirname_length(log_file_name_arg),
- b->binlog_name, b->binlog_name_len))
- ;
+ xid_count_per_binlog *b;
+ mysql_mutex_lock(&LOCK_xid_list);
+ {
+ I_List_iterator<xid_count_per_binlog> it(binlog_xid_count_list);
+ while ((b= it++) &&
+ 0 != strncmp(log_file_name_arg+dirname_length(log_file_name_arg),
+ b->binlog_name, b->binlog_name_len))
+ ;
+ }
+ mysql_mutex_unlock(&LOCK_xid_list);
+ if (b)
+ return false;
}
- mysql_mutex_unlock(&LOCK_xid_list);
- if (b)
- return false;
- return !log_in_use(log_file_name_arg);
+
+ if (!is_relay_log)
+ {
+ waiting_for_slave_to_change_binlog= 0;
+ purge_sending_new_binlog_file= sending_new_binlog_file;
+ }
+ if ((res= log_in_use(log_file_name_arg,
+ (is_relay_log ||
+ (thd && thd->lex->sql_command == SQLCOM_PURGE)) ?
+ 0 : slave_connections_needed_for_purge)))
+ {
+ if (!is_relay_log)
+ {
+ waiting_for_slave_to_change_binlog= 1;
+ strmake(purge_binlog_name, log_file_name_arg,
+ sizeof(purge_binlog_name)-1);
+ }
+ }
+ return !res;
}
#endif /* HAVE_REPLICATION */
+/**
+ Count a total size of binary logs (except the active one) to the variable
+ binlog_space_total.
+
+ @retval
+ 0 ok
+ @retval
+ LOG_INFO_FATAL if any other than ENOENT error from
+ mysql_file_stat() or mysql_file_delete()
+*/
+
+int MYSQL_BIN_LOG::count_binlog_space()
+{
+ int error;
+ LOG_INFO log_info;
+ DBUG_ENTER("count_binlog_space");
+
+ binlog_space_total = 0;
+ if ((error= find_log_pos(&log_info, NullS, false /*need_lock_index=false*/)))
+ goto done;
+
+ MY_STAT stat_area;
+ while (!is_active(log_info.log_file_name))
+ {
+ if (!mysql_file_stat(m_key_file_log, log_info.log_file_name, &stat_area,
+ MYF(0)))
+ {
+ if (my_errno != ENOENT)
+ {
+ error= LOG_INFO_FATAL;
+ goto done;
+ }
+ }
+ else
+ binlog_space_total+= stat_area.st_size;
+ if (find_next_log(&log_info, false /*need_lock_index=false*/))
+ break;
+ }
+done:
+ DBUG_RETURN(error);
+}
+
+
+ulonglong MYSQL_BIN_LOG::get_binlog_space_total()
+{
+ ulonglong used_space= 0;
+ mysql_mutex_lock(&LOCK_log);
+ /* Get position in current log file */
+ used_space= my_b_tell(&log_file);
+ mysql_mutex_lock(&LOCK_index);
+ mysql_mutex_unlock(&LOCK_log);
+ used_space+= binlog_space_total;
+ mysql_mutex_unlock(&LOCK_index);
+ return used_space;
+}
+
bool
MYSQL_BIN_LOG::is_xidlist_idle()
{
@@ -5484,6 +5642,7 @@ int MYSQL_BIN_LOG::new_file_without_locking()
@note
The new file name is stored last in the index file
+ binlog_space_total will be updated if binlog_space_limit is set
*/
int MYSQL_BIN_LOG::new_file_impl()
@@ -5530,17 +5689,19 @@ int MYSQL_BIN_LOG::new_file_impl()
*/
Rotate_log_event r(new_name + dirname_length(new_name), 0, LOG_EVENT_OFFSET,
is_relay_log ? Rotate_log_event::RELAY_LOG : 0);
+ enum_binlog_checksum_alg checksum_alg = BINLOG_CHECKSUM_ALG_UNDEF;
/*
The current relay-log's closing Rotate event must have checksum
value computed with an algorithm of the last relay-logged FD event.
*/
if (is_relay_log)
- r.checksum_alg= relay_log_checksum_alg;
- DBUG_ASSERT(!is_relay_log ||
- relay_log_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
+ checksum_alg= relay_log_checksum_alg;
+ else
+ checksum_alg= (enum_binlog_checksum_alg)binlog_checksum_options;
+ DBUG_ASSERT(checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
if ((DBUG_IF("fault_injection_new_file_rotate_event") &&
(error= close_on_error= TRUE)) ||
- (error= write_event(&r)))
+ (error= write_event(&r, checksum_alg)))
{
DBUG_EXECUTE_IF("fault_injection_new_file_rotate_event", errno= 2;);
close_on_error= TRUE;
@@ -5563,7 +5724,6 @@ int MYSQL_BIN_LOG::new_file_impl()
goto end;
}
update_binlog_end_pos();
-
old_name=name;
name=0; // Don't free name
close_flag= LOG_CLOSE_TO_BE_OPENED | LOG_CLOSE_INDEX;
@@ -5578,6 +5738,8 @@ int MYSQL_BIN_LOG::new_file_impl()
old_file= log_file.file;
close_flag|= LOG_CLOSE_DELAYED_CLOSE;
delay_close= true;
+ if (binlog_space_limit)
+ binlog_space_total+= binlog_end_pos;
}
close(close_flag);
if (checksum_alg_reset != BINLOG_CHECKSUM_ALG_UNDEF)
@@ -5657,31 +5819,43 @@ end2:
DBUG_RETURN(error);
}
-bool MYSQL_BIN_LOG::write_event(Log_event *ev, binlog_cache_data *cache_data,
- IO_CACHE *file)
+bool Event_log::write_event(Log_event *ev, binlog_cache_data *data,
+ IO_CACHE *file)
+{
+ return write_event(ev, ev->select_checksum_alg(data), data, file);
+}
+
+bool MYSQL_BIN_LOG::write_event(Log_event *ev)
{
- Log_event_writer writer(file, 0, &crypto);
+ return write_event(ev, ev->select_checksum_alg(NULL), 0, &log_file);
+}
+
+bool Event_log::write_event(Log_event *ev,
+ enum_binlog_checksum_alg checksum_alg,
+ binlog_cache_data *cache_data, IO_CACHE *file)
+{
+ Log_event_writer writer(file, cache_data, checksum_alg, &crypto);
if (crypto.scheme && file == &log_file)
{
writer.ctx= alloca(crypto.ctx_size);
writer.set_encrypted_writer();
}
- if (cache_data)
- cache_data->add_status(ev->logged_status());
return writer.write(ev);
}
-bool MYSQL_BIN_LOG::append(Log_event *ev)
+bool MYSQL_BIN_LOG::append(Log_event *ev,
+ enum_binlog_checksum_alg checksum_alg)
{
bool res;
mysql_mutex_lock(&LOCK_log);
- res= append_no_lock(ev);
+ res= append_no_lock(ev, checksum_alg);
mysql_mutex_unlock(&LOCK_log);
return res;
}
-bool MYSQL_BIN_LOG::append_no_lock(Log_event* ev)
+bool MYSQL_BIN_LOG::append_no_lock(Log_event* ev,
+ enum_binlog_checksum_alg checksum_alg)
{
bool error = 0;
DBUG_ENTER("MYSQL_BIN_LOG::append");
@@ -5689,7 +5863,7 @@ bool MYSQL_BIN_LOG::append_no_lock(Log_event* ev)
mysql_mutex_assert_owner(&LOCK_log);
DBUG_ASSERT(log_file.type == SEQ_READ_APPEND);
- if (write_event(ev))
+ if (write_event(ev, checksum_alg))
{
error=1;
goto err;
@@ -5719,7 +5893,7 @@ bool MYSQL_BIN_LOG::write_event_buffer(uchar* buf, uint len)
{
DBUG_ASSERT(crypto.scheme == 1);
- uint elen;
+ uint elen= len - 4;
uchar iv[BINLOG_IV_LENGTH];
ebuf= (uchar*)my_safe_alloca(len);
@@ -5821,8 +5995,7 @@ bool MYSQL_BIN_LOG::is_query_in_union(THD *thd, query_id_t query_id_param)
bool
trans_has_updated_trans_table(const THD* thd)
{
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
return (cache_mngr ? !cache_mngr->trx_cache.empty() : 0);
}
@@ -5871,8 +6044,7 @@ bool use_trans_cache(const THD* thd, bool is_transactional)
{
if (is_transactional)
return 1;
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ auto *const cache_mngr= thd->binlog_get_cache_mngr();
return ((thd->is_current_stmt_binlog_format_row() ||
thd->variables.binlog_direct_non_trans_update) ? 0 :
@@ -5943,17 +6115,11 @@ bool stmt_has_updated_non_trans_table(const THD* thd)
binlog_hton, which has internal linkage.
*/
-binlog_cache_mngr *THD::binlog_setup_trx_data()
+static binlog_cache_mngr *binlog_setup_cache_mngr(THD *thd)
{
- DBUG_ENTER("THD::binlog_setup_trx_data");
- binlog_cache_mngr *cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
-
- if (cache_mngr)
- DBUG_RETURN(cache_mngr); // Already set up
-
- cache_mngr= (binlog_cache_mngr*) my_malloc(key_memory_binlog_cache_mngr,
- sizeof(binlog_cache_mngr), MYF(MY_ZEROFILL));
+ auto *cache_mngr= (binlog_cache_mngr*) my_malloc(key_memory_binlog_cache_mngr,
+ sizeof(binlog_cache_mngr),
+ MYF(MY_ZEROFILL));
if (!cache_mngr ||
open_cached_file(&cache_mngr->stmt_cache.cache_log, mysql_tmpdir,
LOG_PREFIX, (size_t)binlog_stmt_cache_size, MYF(MY_WME)) ||
@@ -5961,17 +6127,42 @@ binlog_cache_mngr *THD::binlog_setup_trx_data()
LOG_PREFIX, (size_t)binlog_cache_size, MYF(MY_WME)))
{
my_free(cache_mngr);
- DBUG_RETURN(0); // Didn't manage to set it up
+ return NULL;
}
- thd_set_ha_data(this, binlog_hton, cache_mngr);
+ /*
+ Don't attempt to precompute checksums if:
+ - Disabled by user request, --binlog-legacy-event-pos
+ - Binlog is encrypted, cannot use precomputed checksums
+ - WSREP/Galera.
+ */
+ bool precompute_checksums=
+ !WSREP_NNULL(thd) && !encrypt_binlog && !opt_binlog_legacy_event_pos;
cache_mngr= new (cache_mngr)
- binlog_cache_mngr(max_binlog_stmt_cache_size,
- max_binlog_cache_size,
- &binlog_stmt_cache_use,
- &binlog_stmt_cache_disk_use,
- &binlog_cache_use,
- &binlog_cache_disk_use);
+ binlog_cache_mngr(max_binlog_stmt_cache_size,
+ max_binlog_cache_size,
+ &binlog_stmt_cache_use,
+ &binlog_stmt_cache_disk_use,
+ &binlog_cache_use,
+ &binlog_cache_disk_use,
+ precompute_checksums);
+
+ return cache_mngr;
+}
+
+binlog_cache_mngr *THD::binlog_setup_trx_data()
+{
+ DBUG_ENTER("THD::binlog_setup_trx_data");
+ binlog_cache_mngr *cache_mngr=
+ (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
+
+ if (!cache_mngr)
+ {
+ cache_mngr= binlog_setup_cache_mngr(this);
+ thd_set_ha_data(this, binlog_hton, cache_mngr);
+ }
+
+
DBUG_RETURN(cache_mngr);
}
@@ -6038,7 +6229,7 @@ void THD::set_binlog_start_alter_seq_no(uint64 s_no)
void
THD::binlog_start_trans_and_stmt()
{
- binlog_cache_mngr *cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
+ binlog_cache_mngr *cache_mngr= binlog_get_cache_mngr();
DBUG_ENTER("binlog_start_trans_and_stmt");
DBUG_PRINT("enter", ("cache_mngr: %p cache_mngr->trx_cache.get_prev_position(): %lu",
cache_mngr,
@@ -6081,7 +6272,8 @@ THD::binlog_start_trans_and_stmt()
uchar *buf= 0;
size_t len= 0;
IO_CACHE tmp_io_cache;
- Log_event_writer writer(&tmp_io_cache, 0);
+ // Replicated events in writeset doesn't have checksum
+ Log_event_writer writer(&tmp_io_cache, 0, BINLOG_CHECKSUM_ALG_OFF, NULL);
if(!open_cached_file(&tmp_io_cache, mysql_tmpdir, TEMP_PREFIX,
128, MYF(MY_WME)))
{
@@ -6096,8 +6288,6 @@ THD::binlog_start_trans_and_stmt()
}
Gtid_log_event gtid_event(this, seqno, domain_id, true,
LOG_EVENT_SUPPRESS_USE_F, true, 0);
- // Replicated events in writeset doesn't have checksum
- gtid_event.checksum_alg= BINLOG_CHECKSUM_ALG_OFF;
gtid_event.server_id= server_id;
writer.write(&gtid_event);
wsrep_write_cache_buf(&tmp_io_cache, &buf, &len);
@@ -6125,8 +6315,7 @@ THD::binlog_start_trans_and_stmt()
}
void THD::binlog_set_stmt_begin() {
- binlog_cache_mngr *cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
+ binlog_cache_mngr *cache_mngr= binlog_get_cache_mngr();
/*
The call to binlog_trans_log_savepos() might create the cache_mngr
@@ -6136,7 +6325,7 @@ void THD::binlog_set_stmt_begin() {
*/
my_off_t pos= 0;
binlog_trans_log_savepos(this, &pos);
- cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
+ cache_mngr= binlog_get_cache_mngr();
cache_mngr->trx_cache.set_prev_position(pos);
}
@@ -6243,7 +6432,7 @@ bool THD::binlog_write_table_maps()
}
if (table->file->row_logging)
{
- if (binlog_write_table_map(table, with_annotate))
+ if (mysql_bin_log.write_table_map(this, table, with_annotate))
DBUG_RETURN(1);
with_annotate= 0;
}
@@ -6276,7 +6465,7 @@ bool THD::binlog_write_table_maps()
nonzero if an error pops up when writing the table map event.
*/
-bool THD::binlog_write_table_map(TABLE *table, bool with_annotate)
+bool MYSQL_BIN_LOG::write_table_map(THD *thd, TABLE *table, bool with_annotate)
{
int error= 1;
bool is_transactional= table->file->row_logging_has_trans;
@@ -6290,21 +6479,21 @@ bool THD::binlog_write_table_map(TABLE *table, bool with_annotate)
(table->s->table_map_id & MAX_TABLE_MAP_ID) != 0);
/* Ensure that all events in a GTID group are in the same cache */
- if (variables.option_bits & OPTION_GTID_BEGIN)
+ if (thd->variables.option_bits & OPTION_GTID_BEGIN)
is_transactional= 1;
Table_map_log_event
- the_event(this, table, table->s->table_map_id, is_transactional);
+ the_event(thd, table, table->s->table_map_id, is_transactional);
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
binlog_cache_data *cache_data= (cache_mngr->
get_binlog_cache_data(is_transactional));
IO_CACHE *file= &cache_data->cache_log;
- Log_event_writer writer(file, cache_data);
+ Log_event_writer writer(file, cache_data,
+ the_event.select_checksum_alg(cache_data), NULL);
if (with_annotate)
- if (binlog_write_annotated_row(&writer))
+ if (thd->binlog_write_annotated_row(&writer))
goto write_err;
DBUG_EXECUTE_IF("table_map_write_error",
@@ -6322,74 +6511,74 @@ bool THD::binlog_write_table_map(TABLE *table, bool with_annotate)
DBUG_RETURN(0);
write_err:
- mysql_bin_log.set_write_error(this, is_transactional);
+ set_write_error(thd, is_transactional);
/*
For non-transactional engine or multi statement transaction with mixed
engines, data is written to table but writing to binary log failed. In
these scenarios rollback is not possible. Hence report an incident.
*/
- if (mysql_bin_log.check_cache_error(this, cache_data) &&
- lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) &&
+ if (check_cache_error(thd, cache_data) &&
+ thd->lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) &&
table->current_lock == F_WRLCK)
cache_data->set_incident();
DBUG_RETURN(error);
}
+binlog_cache_mngr *THD::binlog_get_cache_mngr() const
+{
+ return (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
+}
+
+
/**
This function retrieves a pending row event from a cache which is
specified through the parameter @c is_transactional. Respectively, when it
is @c true, the pending event is returned from the transactional cache.
Otherwise from the non-transactional cache.
- @param is_transactional @c true indicates a transactional cache,
+ @param cache_mngr cache manager to return pending row from
+ @param use_trans_cache @c true indicates a transactional cache,
otherwise @c false a non-transactional.
@return
The row event if any.
*/
-Rows_log_event*
-THD::binlog_get_pending_rows_event(bool is_transactional) const
+Rows_log_event* binlog_get_pending_rows_event(binlog_cache_mngr *cache_mngr,
+ bool use_trans_cache)
{
- Rows_log_event* rows= NULL;
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
-
- /*
- This is less than ideal, but here's the story: If there is no cache_mngr,
- prepare_pending_rows_event() has never been called (since the cache_mngr
- is set up there). In that case, we just return NULL.
- */
- if (cache_mngr)
- {
- binlog_cache_data *cache_data=
- cache_mngr->get_binlog_cache_data(use_trans_cache(this, is_transactional));
-
- rows= cache_data->pending();
- }
- return (rows);
+ DBUG_ASSERT(cache_mngr);
+ return cache_mngr->get_binlog_cache_data(use_trans_cache)->pending();
}
-/**
- This function stores a pending row event into a cache which is specified
- through the parameter @c is_transactional. Respectively, when it is @c
- true, the pending event is stored into the transactional cache. Otherwise
- into the non-transactional cache.
-
- @param evt a pointer to the row event.
- @param is_transactional @c true indicates a transactional cache,
- otherwise @c false a non-transactional.
-*/
-void
-THD::binlog_set_pending_rows_event(Rows_log_event* ev, bool is_transactional)
+binlog_cache_data* binlog_get_cache_data(binlog_cache_mngr *cache_mngr,
+ bool use_trans_cache)
{
- binlog_cache_mngr *const cache_mngr= binlog_setup_trx_data();
-
- DBUG_ASSERT(cache_mngr);
+ return cache_mngr->get_binlog_cache_data(use_trans_cache);
+}
- binlog_cache_data *cache_data=
- cache_mngr->get_binlog_cache_data(use_trans_cache(this, is_transactional));
+int binlog_flush_pending_rows_event(THD *thd, bool stmt_end,
+ bool is_transactional,
+ Event_log *bin_log,
+ binlog_cache_data *cache_data)
+{
+ int error= 0;
+ auto *pending= cache_data->pending();
+ if (pending)
+ {
+ /*
+ Mark the event as the last event of a statement if the stmt_end
+ flag is set.
+ */
+ if (stmt_end)
+ {
+ pending->set_flags(Rows_log_event::STMT_END_F);
+ thd->reset_binlog_for_next_statement();
+ }
- cache_data->set_pending(ev);
+ error= bin_log->flush_and_set_pending_rows_event(thd, 0, cache_data,
+ is_transactional);
+ }
+ return error;
}
@@ -6403,18 +6592,10 @@ THD::binlog_set_pending_rows_event(Rows_log_event* ev, bool is_transactional)
otherwise @c false a non-transactional.
*/
int
-MYSQL_BIN_LOG::remove_pending_rows_event(THD *thd, bool is_transactional)
+MYSQL_BIN_LOG::remove_pending_rows_event(THD *thd, binlog_cache_data *cache_data)
{
DBUG_ENTER("MYSQL_BIN_LOG::remove_pending_rows_event");
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
-
- DBUG_ASSERT(cache_mngr);
-
- binlog_cache_data *cache_data=
- cache_mngr->get_binlog_cache_data(use_trans_cache(thd, is_transactional));
-
if (Rows_log_event* pending= cache_data->pending())
{
delete pending;
@@ -6428,6 +6609,7 @@ MYSQL_BIN_LOG::remove_pending_rows_event(THD *thd, bool is_transactional)
Moves the last bunch of rows from the pending Rows event to a cache (either
transactional cache if is_transaction is @c true, or the non-transactional
cache otherwise. Sets a new pending event.
+ In case of error during flushing, sets write_error=1 to itself.
@param thd a pointer to the user thread.
@param evt a pointer to the row event.
@@ -6435,27 +6617,20 @@ MYSQL_BIN_LOG::remove_pending_rows_event(THD *thd, bool is_transactional)
otherwise @c false a non-transactional.
*/
int
-MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
- Rows_log_event* event,
- bool is_transactional)
+Event_log::flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event,
+ binlog_cache_data *cache_data,
+ bool is_transactional)
{
- DBUG_ENTER("MYSQL_BIN_LOG::flush_and_set_pending_rows_event(event)");
- DBUG_ASSERT(WSREP_EMULATE_BINLOG(thd) || mysql_bin_log.is_open());
+ DBUG_ENTER("Event_log::flush_and_set_pending_rows_event(event)");
+ DBUG_ASSERT(WSREP_EMULATE_BINLOG(thd) || is_open());
DBUG_PRINT("enter", ("event: %p", event));
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
-
- DBUG_ASSERT(cache_mngr);
-
- binlog_cache_data *cache_data=
- cache_mngr->get_binlog_cache_data(use_trans_cache(thd, is_transactional));
-
DBUG_PRINT("info", ("cache_mngr->pending(): %p", cache_data->pending()));
if (Rows_log_event* pending= cache_data->pending())
{
- Log_event_writer writer(&cache_data->cache_log, cache_data);
+ Log_event_writer writer(&cache_data->cache_log, cache_data,
+ pending->select_checksum_alg(cache_data), NULL);
/*
Write pending event to the cache.
@@ -6495,11 +6670,89 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
delete pending;
}
- thd->binlog_set_pending_rows_event(event, is_transactional);
+ cache_data->set_pending(event);
DBUG_RETURN(0);
}
+/*
+ Member function for ensuring that there is an rows log
+ event of the apropriate type before proceeding.
+
+ POST CONDITION:
+ If a non-NULL pointer is returned, the pending event for thread 'thd' will
+ be an event created by callback hold by event_factory, and
+ will be either empty or have enough space to hold 'needed' bytes.
+ In addition, the columns bitmap will be correct for the row, meaning that
+ the pending event will be flushed if the columns in the event differ from
+ the columns suppled to the function.
+
+ RETURNS
+ If no error, a non-NULL pending event (either one which already existed or
+ the newly created one).
+ If error, NULL.
+ */
+
+Rows_log_event*
+Event_log::prepare_pending_rows_event(THD *thd, TABLE* table,
+ binlog_cache_data *cache_data,
+ uint32 serv_id, size_t needed,
+ bool is_transactional,
+ Rows_event_factory event_factory)
+{
+ DBUG_ENTER("MYSQL_BIN_LOG::prepare_pending_rows_event");
+ /* Pre-conditions */
+ DBUG_ASSERT(table->s->table_map_id != ~0UL);
+
+ /*
+ There is no good place to set up the transactional data, so we
+ have to do it here.
+ */
+ Rows_log_event* pending= cache_data->pending();
+
+ if (unlikely(pending && !pending->is_valid()))
+ DBUG_RETURN(NULL);
+
+ /*
+ Check if the current event is non-NULL and a write-rows
+ event. Also check if the table provided is mapped: if it is not,
+ then we have switched to writing to a new table.
+ If there is no pending event, we need to create one. If there is a pending
+ event, but it's not about the same table id, or not of the same type
+ (between Write, Update and Delete), or not the same affected columns, or
+ going to be too big, flush this event to disk and create a new pending
+ event.
+ */
+ if (!pending ||
+ pending->server_id != serv_id ||
+ pending->get_table_id() != table->s->table_map_id ||
+ pending->get_general_type_code() != event_factory.type_code ||
+ pending->get_data_size() + needed > opt_binlog_rows_event_max_size ||
+ pending->read_write_bitmaps_cmp(table) == FALSE)
+ {
+ /* Create a new RowsEventT... */
+ Rows_log_event* const
+ ev= event_factory.create(thd, table, table->s->table_map_id,
+ is_transactional);
+ if (unlikely(!ev))
+ DBUG_RETURN(NULL);
+ ev->server_id= serv_id; // I don't like this, it's too easy to forget.
+ /*
+ flush the pending event and replace it with the newly created
+ event...
+ */
+ if (unlikely(flush_and_set_pending_rows_event(thd, ev, cache_data,
+ is_transactional)))
+ {
+ delete ev;
+ DBUG_RETURN(NULL);
+ }
+
+ DBUG_RETURN(ev); /* This is the new pending event */
+ }
+ DBUG_RETURN(pending); /* This is the current pending event */
+}
+
/* Generate a new global transaction ID, and write it to the binlog */
@@ -7014,6 +7267,8 @@ err:
{
bool synced;
+ update_gtid_index((uint32)offset, thd->get_last_commit_gtid());
+
if ((error= flush_and_sync(&synced)))
{
}
@@ -7091,6 +7346,30 @@ err:
}
+void
+MYSQL_BIN_LOG::update_gtid_index(uint32 offset, rpl_gtid gtid)
+{
+ if (!unlikely(gtid_index))
+ return;
+
+ rpl_gtid *gtid_list;
+ uint32 gtid_count;
+ int err= gtid_index->process_gtid_check_batch(offset, &gtid,
+ &gtid_list, &gtid_count);
+ if (err)
+ return;
+ if (gtid_list)
+ {
+ /*
+ Perform the GTID index update in the binlog background thread,
+ as we are running under the critical LOCK_log mutex.
+ */
+ if (queue_binlog_background_gtid_index_update(gtid_index, offset,
+ gtid_list, gtid_count))
+ my_free(gtid_list);
+ }
+}
+
int error_log_print(enum loglevel level, const char *format,
va_list args)
{
@@ -7239,6 +7518,7 @@ MYSQL_BIN_LOG::do_checkpoint_request(ulong binlog_id)
int MYSQL_BIN_LOG::rotate(bool force_rotate, bool* check_purge)
{
int error= 0;
+ ulonglong binlog_pos;
DBUG_ENTER("MYSQL_BIN_LOG::rotate");
#ifdef WITH_WSREP
@@ -7254,7 +7534,8 @@ int MYSQL_BIN_LOG::rotate(bool force_rotate, bool* check_purge)
//todo: fix the macro def and restore safe_mutex_assert_owner(&LOCK_log);
*check_purge= false;
- if (force_rotate || (my_b_tell(&log_file) >= (my_off_t) max_size))
+ binlog_pos= my_b_tell(&log_file);
+ if (force_rotate || binlog_pos >= max_size)
{
ulong binlog_id= current_binlog_id;
/*
@@ -7296,18 +7577,31 @@ int MYSQL_BIN_LOG::rotate(bool force_rotate, bool* check_purge)
mark_xid_done(binlog_id, false);
}
else
+ {
*check_purge= true;
+ binlog_pos= my_b_tell(&log_file);
+ }
}
+ /*
+ Purge by size here for every write. Purge based on timestamps is done
+ by purge() when rotate has been done().
+ */
+#ifdef HAVE_REPLICATION
+ purge_logs_by_size(binlog_pos);
+#endif
DBUG_RETURN(error);
}
/**
The method executes logs purging routine.
+ @param all If false, purge only based on binlog_expire_logs_seconds.
+ If true, purge also based on binlog_space_limit.
@retval
nonzero - error in rotating routine.
*/
-void MYSQL_BIN_LOG::purge()
+
+void MYSQL_BIN_LOG::purge(bool all)
{
mysql_mutex_assert_not_owner(&LOCK_log);
#ifdef HAVE_REPLICATION
@@ -7322,14 +7616,21 @@ void MYSQL_BIN_LOG::purge()
}
DEBUG_SYNC(current_thd, "after_purge_logs_before_date");
}
+ if (all && binlog_space_limit)
+ {
+ ulonglong binlog_pos;
+ mysql_mutex_lock(&LOCK_log);
+ binlog_pos= my_b_tell(&log_file);
+ purge_logs_by_size(binlog_pos);
+ mysql_mutex_unlock(&LOCK_log);
+ }
#endif
}
-
void MYSQL_BIN_LOG::checkpoint_and_purge(ulong binlog_id)
{
do_checkpoint_request(binlog_id);
- purge();
+ purge(0);
}
@@ -7509,37 +7810,27 @@ uint MYSQL_BIN_LOG::next_file_id()
return res;
}
-class CacheWriter: public Log_event_writer
-{
-public:
- size_t remains;
-
- CacheWriter(THD *thd_arg, IO_CACHE *file_arg, bool do_checksum,
- Binlog_crypt_data *cr)
- : Log_event_writer(file_arg, 0, cr), remains(0), thd(thd_arg),
- first(true)
- { checksum_len= do_checksum ? BINLOG_CHECKSUM_LEN : 0; }
- ~CacheWriter()
- { status_var_add(thd->status_var.binlog_bytes_written, bytes_written); }
+int Event_log::write_cache_raw(THD *thd, IO_CACHE *cache)
+{
+ DBUG_ENTER("Event_log::write_cache_raw");
+ mysql_mutex_assert_owner(&LOCK_log);
+ if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0))
+ DBUG_RETURN(ER_ERROR_ON_WRITE);
- int write(uchar* pos, size_t len)
+ IO_CACHE *file= get_log_file();
+ IF_DBUG(size_t total= cache->end_of_file,);
+ do
{
- DBUG_ENTER("CacheWriter::write");
- if (first)
- write_header(pos, len);
- else
- write_data(pos, len);
-
- remains -= len;
- if ((first= !remains))
- write_footer();
- DBUG_RETURN(0);
- }
-private:
- THD *thd;
- bool first;
-};
+ size_t read_len= cache->read_end - cache->read_pos;
+ int res= my_b_safe_write(file, cache->read_pos, read_len);
+ if (unlikely(res))
+ DBUG_RETURN(res);
+ IF_DBUG(total-= read_len,);
+ } while (my_b_fill(cache));
+ DBUG_ASSERT(total == 0);
+ DBUG_RETURN(0);
+}
/*
Write the contents of a cache to the binary log.
@@ -7558,18 +7849,37 @@ private:
events prior to fill in the binlog cache.
*/
-int MYSQL_BIN_LOG::write_cache(THD *thd, IO_CACHE *cache)
+int Event_log::write_cache(THD *thd, binlog_cache_data *cache_data)
{
- DBUG_ENTER("MYSQL_BIN_LOG::write_cache");
-
+ DBUG_ENTER("Event_log::write_cache");
+ IO_CACHE *cache= &cache_data->cache_log;
mysql_mutex_assert_owner(&LOCK_log);
+
+ /*
+ If possible, just copy the cache over byte-by-byte with pre-computed
+ checksums.
+ */
+ if (likely(binlog_checksum_options == (ulong)cache_data->checksum_opt) &&
+ likely(!crypto.scheme) &&
+ likely(!opt_binlog_legacy_event_pos))
+ {
+ int res= my_b_copy_all_to_cache(cache, &log_file);
+ status_var_add(thd->status_var.binlog_bytes_written, my_b_tell(cache));
+ DBUG_RETURN(res ? ER_ERROR_ON_WRITE : 0);
+ }
+
if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0))
DBUG_RETURN(ER_ERROR_ON_WRITE);
- size_t length= my_b_bytes_in_cache(cache), group, carry, hdr_offs;
- size_t val;
- size_t end_log_pos_inc= 0; // each event processed adds BINLOG_CHECKSUM_LEN 2 t
- uchar header[LOG_EVENT_HEADER_LEN];
- CacheWriter writer(thd, &log_file, binlog_checksum_options, &crypto);
+ /* Amount of remaining bytes in the IO_CACHE read buffer. */
+ size_t log_file_pos;
+ uchar header_buf[LOG_EVENT_HEADER_LEN];
+ Log_event_writer writer(get_log_file(), 0,
+ (enum_binlog_checksum_alg)binlog_checksum_options,
+ &crypto);
+ uint checksum_len= writer.checksum_len;
+ uint old_checksum_len= (cache_data->checksum_opt != BINLOG_CHECKSUM_ALG_OFF) ?
+ BINLOG_CHECKSUM_LEN : 0;
+ int err= 0;
if (crypto.scheme)
{
@@ -7594,129 +7904,79 @@ int MYSQL_BIN_LOG::write_cache(THD *thd, IO_CACHE *cache)
split.
*/
- group= (size_t)my_b_tell(&log_file);
- hdr_offs= carry= 0;
-
- do
+ log_file_pos= (size_t)my_b_tell(get_log_file());
+ for (;;)
{
/*
- if we only got a partial header in the last iteration,
- get the other half now and process a full header.
+ Empty cache at an event boundary means we are done (but empty cache
+ elsewhere is an error).
*/
- if (unlikely(carry > 0))
- {
- DBUG_ASSERT(carry < LOG_EVENT_HEADER_LEN);
- size_t tail= LOG_EVENT_HEADER_LEN - carry;
-
- /* assemble both halves */
- memcpy(&header[carry], (char *)cache->read_pos, tail);
-
- uint32 len= uint4korr(header + EVENT_LEN_OFFSET);
- writer.remains= len;
-
- /* fix end_log_pos */
- end_log_pos_inc += writer.checksum_len;
- val= uint4korr(header + LOG_POS_OFFSET) + group + end_log_pos_inc;
- int4store(header + LOG_POS_OFFSET, val);
-
- /* fix len */
- len+= writer.checksum_len;
- int4store(header + EVENT_LEN_OFFSET, len);
-
- if (writer.write(header, LOG_EVENT_HEADER_LEN))
- DBUG_RETURN(ER_ERROR_ON_WRITE);
-
- cache->read_pos+= tail;
- length-= tail;
- carry= 0;
-
- /* next event header at ... */
- hdr_offs= len - LOG_EVENT_HEADER_LEN - writer.checksum_len;
- }
-
- /* if there is anything to write, process it. */
+ if (my_b_tell(cache) == cache->end_of_file)
+ break;
- if (likely(length > 0))
- {
- DBUG_EXECUTE_IF("fail_binlog_write_1",
- errno= 28; DBUG_RETURN(ER_ERROR_ON_WRITE););
- /*
- process all event-headers in this (partial) cache.
- if next header is beyond current read-buffer,
- we'll get it later (though not necessarily in the
- very next iteration, just "eventually").
- */
+ DBUG_EXECUTE_IF("fail_binlog_write_1",
+ {
+ errno= 28;
+ goto error_in_write;
+ });
- if (hdr_offs >= length)
+ if (my_b_read(cache, header_buf, LOG_EVENT_HEADER_LEN))
+ goto error_in_read;
+
+ /* Adjust the length and end_log_pos appropriately. */
+ uint ev_len= uint4korr(&header_buf[EVENT_LEN_OFFSET]); // netto len
+ DBUG_ASSERT(ev_len >= LOG_EVENT_HEADER_LEN + old_checksum_len);
+ if (unlikely(ev_len < LOG_EVENT_HEADER_LEN + old_checksum_len))
+ goto error_in_read;
+ uint new_len= ev_len - old_checksum_len + checksum_len;
+ int4store(&header_buf[EVENT_LEN_OFFSET], new_len);
+ log_file_pos+= new_len;
+ int4store(&header_buf[LOG_POS_OFFSET], log_file_pos);
+
+ /* Write the header to the binlog. */
+ if (writer.write_header(header_buf, LOG_EVENT_HEADER_LEN))
+ goto error_in_write;
+ ev_len-= (LOG_EVENT_HEADER_LEN + old_checksum_len);
+
+ /* Write the rest of the event. */
+ size_t length= my_b_bytes_in_cache(cache);
+ while (ev_len > 0)
+ {
+ if (length == 0)
{
- if (writer.write(cache->read_pos, length))
- DBUG_RETURN(ER_ERROR_ON_WRITE);
+ if (!(length= my_b_fill(cache)))
+ goto error_in_read;
}
+ uint chunk= MY_MIN(ev_len, (uint)length);
+ if (writer.write_data(cache->read_pos, chunk))
+ goto error_in_write;
+ cache->read_pos+= chunk;
+ length-= chunk;
+ ev_len-= chunk;
+ }
+ /*
+ Discard any old precomputed checksum len (any needed checksum will be
+ written by writer.write_footer()).
+ */
+ if (old_checksum_len > 0 && my_b_read(cache, header_buf, old_checksum_len))
+ goto error_in_read;
+ if (writer.write_footer())
+ goto error_in_write;
- while (hdr_offs < length)
- {
- /*
- finish off with remains of the last event that crawls
- from previous into the current buffer
- */
- if (writer.remains != 0)
- {
- if (writer.write(cache->read_pos, hdr_offs))
- DBUG_RETURN(ER_ERROR_ON_WRITE);
- }
-
- /*
- partial header only? save what we can get, process once
- we get the rest.
- */
- if (hdr_offs + LOG_EVENT_HEADER_LEN > length)
- {
- carry= length - hdr_offs;
- memcpy(header, (char *)cache->read_pos + hdr_offs, carry);
- length= hdr_offs;
- }
- else
- {
- /* we've got a full event-header, and it came in one piece */
- uchar *ev= (uchar *)cache->read_pos + hdr_offs;
- uint ev_len= uint4korr(ev + EVENT_LEN_OFFSET); // netto len
- uchar *log_pos= ev + LOG_POS_OFFSET;
-
- end_log_pos_inc += writer.checksum_len;
- /* fix end_log_pos */
- val= uint4korr(log_pos) + group + end_log_pos_inc;
- int4store(log_pos, val);
-
- /* fix length */
- int4store(ev + EVENT_LEN_OFFSET, ev_len + writer.checksum_len);
-
- writer.remains= ev_len;
- if (writer.write(ev, MY_MIN(ev_len, length - hdr_offs)))
- DBUG_RETURN(ER_ERROR_ON_WRITE);
-
- /* next event header at ... */
- hdr_offs += ev_len; // incr by the netto len
-
- DBUG_ASSERT(!writer.checksum_len || writer.remains == 0 || hdr_offs >= length);
- }
- }
+ }
+ goto end; // All OK
- /*
- Adjust hdr_offs. Note that it may still point beyond the segment
- read in the next iteration; if the current event is very long,
- it may take a couple of read-iterations (and subsequent adjustments
- of hdr_offs) for it to point into the then-current segment.
- If we have a split header (!carry), hdr_offs will be set at the
- beginning of the next iteration, overwriting the value we set here:
- */
- hdr_offs -= length;
- }
- } while ((length= my_b_fill(cache)));
+error_in_write:
+ err= ER_ERROR_ON_WRITE;
+ goto end;
- DBUG_ASSERT(carry == 0);
- DBUG_ASSERT(!writer.checksum_len || writer.remains == 0);
+error_in_read:
+ err= ER_ERROR_ON_READ;
+ goto end;
- DBUG_RETURN(0); // All OK
+end:
+ status_var_add(thd->status_var.binlog_bytes_written, writer.bytes_written);
+ DBUG_RETURN(err);
}
/*
@@ -7836,15 +8096,19 @@ MYSQL_BIN_LOG::
write_binlog_checkpoint_event_already_locked(const char *name_arg, uint len)
{
my_off_t offset;
+ bool err;
Binlog_checkpoint_log_event ev(name_arg, len);
+
/*
Note that we must sync the binlog checkpoint to disk.
Otherwise a subsequent log purge could delete binlogs that XA recovery
thinks are needed (even though they are not really).
*/
- if (!write_event(&ev) && !flush_and_sync(0))
+ err= write_event(&ev) || flush_and_sync(0);
+ offset= my_b_tell(&log_file);
+ if (!err)
{
- update_binlog_end_pos();
+ update_binlog_end_pos(offset);
}
else
{
@@ -7859,10 +8123,6 @@ write_binlog_checkpoint_event_already_locked(const char *name_arg, uint len)
sql_print_error("Failed to write binlog checkpoint event to binary log");
}
- offset= my_b_tell(&log_file);
-
- update_binlog_end_pos(offset);
-
/*
Take mutex to protect against a reader seeing partial writes of 64-bit
offset on 32-bit CPUs.
@@ -8570,6 +8830,8 @@ MYSQL_BIN_LOG::trx_group_commit_leader(group_commit_entry *leader)
strmake_buf(cache_mngr->last_commit_pos_file, log_file_name);
commit_offset= my_b_write_tell(&log_file);
+ update_gtid_index((uint32)commit_offset,
+ current->thd->get_last_commit_gtid());
cache_mngr->last_commit_pos_offset= commit_offset;
if ((cache_mngr->using_xa && cache_mngr->xa_xid) || current->need_unlog)
{
@@ -8846,7 +9108,7 @@ MYSQL_BIN_LOG::write_transaction_or_stmt(group_commit_entry *entry,
DBUG_RETURN(ER_ERROR_ON_WRITE);
if (entry->using_stmt_cache && !mngr->stmt_cache.empty() &&
- write_cache(entry->thd, mngr->get_binlog_cache_log(FALSE)))
+ write_cache(entry->thd, mngr->get_binlog_cache_data(FALSE)))
{
entry->error_cache= &mngr->stmt_cache.cache_log;
DBUG_RETURN(ER_ERROR_ON_WRITE);
@@ -8857,7 +9119,7 @@ MYSQL_BIN_LOG::write_transaction_or_stmt(group_commit_entry *entry,
DBUG_EXECUTE_IF("crash_before_writing_xid",
{
if ((write_cache(entry->thd,
- mngr->get_binlog_cache_log(TRUE))))
+ mngr->get_binlog_cache_data(TRUE))))
DBUG_PRINT("info", ("error writing binlog cache"));
else
flush_and_sync(0);
@@ -8866,7 +9128,7 @@ MYSQL_BIN_LOG::write_transaction_or_stmt(group_commit_entry *entry,
DBUG_SUICIDE();
});
- if (write_cache(entry->thd, mngr->get_binlog_cache_log(TRUE)))
+ if (write_cache(entry->thd, mngr->get_binlog_cache_data(TRUE)))
{
entry->error_cache= &mngr->trx_cache.cache_log;
DBUG_RETURN(ER_ERROR_ON_WRITE);
@@ -9134,11 +9396,11 @@ void MYSQL_BIN_LOG::close(uint exiting)
{
Stop_log_event s;
// the checksumming rule for relay-log case is similar to Rotate
- s.checksum_alg= is_relay_log ? relay_log_checksum_alg
- : (enum_binlog_checksum_alg)binlog_checksum_options;
- DBUG_ASSERT(!is_relay_log ||
- relay_log_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
- write_event(&s);
+ enum_binlog_checksum_alg checksum_alg= is_relay_log ?
+ relay_log_checksum_alg :
+ (enum_binlog_checksum_alg)binlog_checksum_options;
+ DBUG_ASSERT(checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
+ write_event(&s, checksum_alg);
bytes_written+= s.data_written;
flush_io_cache(&log_file);
update_binlog_end_pos();
@@ -9166,6 +9428,33 @@ void MYSQL_BIN_LOG::close(uint exiting)
}
#endif /* HAVE_REPLICATION */
+ if (!is_relay_log && likely(gtid_index))
+ {
+ if (exiting & (LOG_CLOSE_STOP_EVENT|LOG_CLOSE_SYNC_GTID_INDEX))
+ {
+ /*
+ The binlog background thread is already stopped just close the final
+ GTID index synchronously. Or caller explicitly requested synchronous
+ close of the GTID index.
+ */
+ gtid_index->close();
+ delete gtid_index;
+ }
+ else
+ {
+ /*
+ Queue a close on the current GTID index.
+ Important that this is queued _before_ the checkpoint request is sent
+ (and thus before chechpoint notifications can be queued); this way, if
+ we crash before the GTID index is synced to disk, the checkpoint will
+ still be pending and the binlog file will be scanned during crash
+ recovery and the GTID index recovered.
+ */
+ queue_binlog_background_gtid_index_close(gtid_index);
+ }
+ gtid_index= nullptr;
+ }
+
/* don't pwrite in a file opened with O_APPEND - it doesn't work */
if (log_file.type == WRITE_CACHE && !(exiting & LOG_CLOSE_DELAYED_CLOSE))
{
@@ -10759,22 +11048,7 @@ void
TC_LOG_BINLOG::commit_checkpoint_notify(void *cookie)
{
xid_count_per_binlog *entry= static_cast<xid_count_per_binlog *>(cookie);
- bool found_entry= false;
- mysql_mutex_lock(&LOCK_binlog_background_thread);
- /* count the same notification kind from different engines */
- for (xid_count_per_binlog *link= binlog_background_thread_queue;
- link && !found_entry; link= link->next_in_queue)
- {
- if ((found_entry= (entry == link)))
- entry->notify_count++;
- }
- if (!found_entry)
- {
- entry->next_in_queue= binlog_background_thread_queue;
- binlog_background_thread_queue= entry;
- }
- mysql_cond_signal(&COND_binlog_background_thread);
- mysql_mutex_unlock(&LOCK_binlog_background_thread);
+ queue_binlog_background_checkpoint_notify(entry);
}
/*
@@ -10793,7 +11067,9 @@ pthread_handler_t
binlog_background_thread(void *arg __attribute__((unused)))
{
bool stop;
- MYSQL_BIN_LOG::xid_count_per_binlog *queue, *next;
+ Binlog_background_job *queue, *next;
+ Binlog_background_job *freelist= nullptr;
+ Binlog_background_job **freelist_endptr= &freelist;
THD *thd;
my_thread_init();
DBUG_ENTER("binlog_background_thread");
@@ -10837,6 +11113,18 @@ binlog_background_thread(void *arg __attribute__((unused)))
*/
THD_STAGE_INFO(thd, stage_binlog_waiting_background_tasks);
mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+
+ /*
+ Put back our job objects in the freelist, now that we own the mutex again.
+ */
+ if (freelist)
+ {
+ *freelist_endptr= binlog_background_freelist;
+ binlog_background_freelist= freelist;
+ freelist= nullptr;
+ freelist_endptr= &freelist;
+ }
+
for (;;)
{
stop= binlog_background_thread_stop;
@@ -10855,6 +11143,7 @@ binlog_background_thread(void *arg __attribute__((unused)))
}
/* Grab the queue, if any. */
binlog_background_thread_queue= NULL;
+ binlog_background_thread_endptr= &binlog_background_thread_queue;
mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
/* Process any incoming commit_checkpoint_notify() calls. */
@@ -10870,17 +11159,40 @@ binlog_background_thread(void *arg __attribute__((unused)))
#endif
while (queue)
{
- long count= queue->notify_count;
- THD_STAGE_INFO(thd, stage_binlog_processing_checkpoint_notify);
- DEBUG_SYNC(thd, "binlog_background_thread_before_mark_xid_done");
- /* Set the thread start time */
- thd->set_time();
- /* Grab next pointer first, as mark_xid_done() may free the element. */
- next= queue->next_in_queue;
- queue->notify_count= 0;
- for (long i= 0; i <= count; i++)
- mysql_bin_log.mark_xid_done(queue->binlog_id, true);
- queue= next;
+ switch (queue->job_type)
+ {
+ case Binlog_background_job::CHECKPOINT_NOTIFY:
+ THD_STAGE_INFO(thd, stage_binlog_processing_checkpoint_notify);
+ DEBUG_SYNC(thd, "binlog_background_thread_before_mark_xid_done");
+ /* Set the thread start time */
+ thd->set_time();
+ mysql_bin_log.mark_xid_done(queue->notify_entry->binlog_id, true);
+ break;
+
+ case Binlog_background_job::GTID_INDEX_UPDATE:
+ queue->gtid_index_data.gi->
+ async_update(queue->gtid_index_data.offset,
+ queue->gtid_index_data.gtid_list,
+ queue->gtid_index_data.gtid_count);
+ break;
+
+ case Binlog_background_job::GTID_INDEX_CLOSE:
+ queue->gtid_index_data.gi->close();
+ delete queue->gtid_index_data.gi;
+ break;
+
+ case Binlog_background_job::SENTINEL:
+ /*
+ The sentinel is a way to signal to reset_logs() that all pending
+ background jobs prior to the sentinel have been processed.
+ */
+ mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ DBUG_ASSERT(binlog_background_thread_sentinel);
+ binlog_background_thread_sentinel= false;
+ mysql_cond_signal(&mysql_bin_log.COND_binlog_background_thread_end);
+ mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
+ break;
+ }
#ifdef ENABLED_DEBUG_SYNC
DBUG_EXECUTE_IF("binlog_background_checkpoint_processed",
@@ -10889,6 +11201,12 @@ binlog_background_thread(void *arg __attribute__((unused)))
STRING_WITH_LEN("now SIGNAL binlog_background_checkpoint_processed")));
);
#endif
+
+ next= queue->next;
+ queue->next= nullptr;
+ *freelist_endptr= queue;
+ freelist_endptr= &queue->next;
+ queue= next;
}
if (stop)
@@ -10897,6 +11215,13 @@ binlog_background_thread(void *arg __attribute__((unused)))
THD_STAGE_INFO(thd, stage_binlog_stopping_background_thread);
+ while (freelist)
+ {
+ next= freelist->next;
+ my_free(freelist);
+ freelist= next;
+ }
+
/* No need to use mutex as thd is not linked into other threads */
THD_count::count++;
delete thd;
@@ -10905,6 +11230,12 @@ binlog_background_thread(void *arg __attribute__((unused)))
/* Signal that we are (almost) stopped. */
mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ while (binlog_background_freelist)
+ {
+ next= binlog_background_freelist->next;
+ my_free(binlog_background_freelist);
+ binlog_background_freelist= next;
+ }
binlog_background_thread_stop= false;
mysql_cond_signal(&mysql_bin_log.COND_binlog_background_thread_end);
mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
@@ -10948,6 +11279,139 @@ start_binlog_background_thread()
return 0;
}
+
+
+static Binlog_background_job *
+get_binlog_background_job()
+{
+ Binlog_background_job *job;
+ mysql_mutex_assert_owner(&mysql_bin_log.LOCK_binlog_background_thread);
+
+ if ((job= binlog_background_freelist) != nullptr)
+ binlog_background_freelist= job->next;
+ else
+ job= (Binlog_background_job *)my_malloc(PSI_INSTRUMENT_ME, sizeof(*job),
+ MYF(MY_WME));
+
+ return job;
+}
+
+
+static void
+queue_binlog_background_job(Binlog_background_job *job)
+{
+ mysql_mutex_assert_owner(&mysql_bin_log.LOCK_binlog_background_thread);
+
+ job->next= nullptr;
+ *binlog_background_thread_endptr= job;
+ binlog_background_thread_endptr= &job->next;
+ mysql_cond_signal(&mysql_bin_log.COND_binlog_background_thread);
+}
+
+
+static int
+queue_binlog_background_checkpoint_notify(
+ MYSQL_BIN_LOG::xid_count_per_binlog *entry)
+{
+ int res;
+
+ mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ Binlog_background_job *job= get_binlog_background_job();
+ if (!job)
+ res= 1;
+ else
+ {
+ job->job_type= Binlog_background_job::CHECKPOINT_NOTIFY;
+ job->notify_entry= entry;
+ queue_binlog_background_job(job);
+ res= 0;
+ }
+ mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
+ return res;
+}
+
+
+static int
+queue_binlog_background_gtid_index_update(Gtid_index_writer *gi, uint32 offset,
+ rpl_gtid *gtid_list, uint32 count)
+{
+ int res;
+
+ mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ Binlog_background_job *job= get_binlog_background_job();
+ if (!unlikely(job))
+ res= 1;
+ else
+ {
+ job->job_type= Binlog_background_job::GTID_INDEX_UPDATE;
+ job->gtid_index_data.gi= gi;
+ job->gtid_index_data.gtid_list= gtid_list;
+ job->gtid_index_data.gtid_count= count;
+ job->gtid_index_data.offset= offset;
+ queue_binlog_background_job(job);
+ res= 0;
+ }
+ mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
+
+ return res;
+}
+
+
+static int
+queue_binlog_background_gtid_index_close(Gtid_index_writer *gi)
+{
+ int res;
+
+ mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ Binlog_background_job *job= get_binlog_background_job();
+ if (!job)
+ return 1;
+ else
+ {
+ job->job_type= Binlog_background_job::GTID_INDEX_CLOSE;
+ job->gtid_index_data.gi= gi;
+ queue_binlog_background_job(job);
+ res= 0;
+ }
+ mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
+
+ return res;
+}
+
+
+static int
+queue_binlog_background_sentinel()
+{
+ int res;
+
+ mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ DBUG_ASSERT(!binlog_background_thread_sentinel);
+ Binlog_background_job *job= get_binlog_background_job();
+ if (!job)
+ return 1;
+ else
+ {
+ binlog_background_thread_sentinel= true;
+ job->job_type= Binlog_background_job::SENTINEL;
+ queue_binlog_background_job(job);
+ res= 0;
+ }
+ mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
+
+ return res;
+}
+
+static void
+binlog_background_wait_for_sentinel()
+{
+ mysql_mutex_lock(&mysql_bin_log.LOCK_binlog_background_thread);
+ while(binlog_background_thread_sentinel)
+ mysql_cond_wait(&mysql_bin_log.COND_binlog_background_thread_end,
+ &mysql_bin_log.LOCK_binlog_background_thread);
+ mysql_mutex_unlock(&mysql_bin_log.LOCK_binlog_background_thread);
+}
+
+
#ifdef HAVE_REPLICATION
class Recovery_context
{
@@ -11214,7 +11678,7 @@ bool Recovery_context::reset_truncate_coord(my_off_t pos)
for (uint i= 0; i < gtid_maybe_to_truncate->elements(); i++)
{
rpl_gtid gtid= gtid_maybe_to_truncate->at(i);
- if (rpl_global_gtid_binlog_state.update_nolock(&gtid, false))
+ if (rpl_global_gtid_binlog_state.update_nolock(&gtid))
return true;
}
gtid_maybe_to_truncate->clear();
@@ -11306,7 +11770,7 @@ bool Recovery_context::decide_or_assess(xid_recovery_member *member, int round,
if (truncate_gtid.seq_no == 0 /* was reset or never set */ ||
(truncate_set_in_1st && round == 2 /* reevaluted at round turn */))
{
- if (set_truncate_coord(linfo, round, fdle->checksum_alg))
+ if (set_truncate_coord(linfo, round, fdle->used_checksum_alg))
return true;
}
else
@@ -11479,11 +11943,13 @@ int TC_LOG_BINLOG::recover(LOG_INFO *linfo, const char *last_log_name,
Format_description_log_event *fdle, bool do_xa)
{
Log_event *ev= NULL;
+ Gtid_index_writer *gtid_index_recover= NULL;
HASH xids, ddl_log_ids;
MEM_ROOT mem_root;
char binlog_checkpoint_name[FN_REFLEN];
bool binlog_checkpoint_found;
IO_CACHE log;
+ IO_CACHE *cur_log;
File file= -1;
const char *errmsg;
#ifdef HAVE_REPLICATION
@@ -11530,12 +11996,16 @@ int TC_LOG_BINLOG::recover(LOG_INFO *linfo, const char *last_log_name,
*/
binlog_checkpoint_found= false;
+ cur_log= first_log;
for (round= 1;;)
{
- while ((ev= Log_event::read_log_event(round == 1 ? first_log : &log,
- fdle, opt_master_verify_checksum))
+ while ((ev= Log_event::read_log_event(cur_log, fdle,
+ opt_master_verify_checksum))
&& ev->is_valid())
{
+#ifdef HAVE_REPLICATION
+ my_off_t end_pos= my_b_tell(cur_log);
+#endif
enum Log_event_type typ= ev->get_type_code();
switch (typ)
{
@@ -11552,7 +12022,7 @@ int TC_LOG_BINLOG::recover(LOG_INFO *linfo, const char *last_log_name,
member->decided_to_commit= true;
}
#else
- if (ctx.decide_or_assess(member, round, fdle, linfo, ev->log_pos))
+ if (ctx.decide_or_assess(member, round, fdle, linfo, end_pos))
goto err2;
#endif
}
@@ -11610,6 +12080,8 @@ int TC_LOG_BINLOG::recover(LOG_INFO *linfo, const char *last_log_name,
/* Initialise the binlog state from the Gtid_list event. */
if (rpl_global_gtid_binlog_state.load(glev->list, glev->count))
goto err2;
+ if (opt_binlog_gtid_index)
+ gtid_index_recover= recover_gtid_index_start(last_log_name, end_pos);
}
break;
@@ -11649,15 +12121,19 @@ int TC_LOG_BINLOG::recover(LOG_INFO *linfo, const char *last_log_name,
(((Query_log_event *)ev)->is_commit() ||
((Query_log_event *)ev)->is_rollback()))));
- if (rpl_global_gtid_binlog_state.update_nolock(&ctx.last_gtid, false))
+ recover_gtid_index_process(gtid_index_recover, end_pos, &ctx.last_gtid);
+ if (rpl_global_gtid_binlog_state.update_nolock(&ctx.last_gtid))
goto err2;
ctx.last_gtid_valid= false;
}
- ctx.prev_event_pos= ev->log_pos;
+ ctx.prev_event_pos= end_pos;
#endif
delete ev;
ev= NULL;
} // end of while
+ recover_gtid_index_end(gtid_index_recover);
+ gtid_index_recover= NULL;
+ cur_log= &log;
/*
If the last binlog checkpoint event points to an older log, we have to
@@ -11742,6 +12218,7 @@ int TC_LOG_BINLOG::recover(LOG_INFO *linfo, const char *last_log_name,
err2:
delete ev;
+ recover_gtid_index_abort(gtid_index_recover);
if (file >= 0)
{
end_io_cache(&log);
@@ -11760,6 +12237,104 @@ err1:
}
+/*
+ Start recovery of the GTID index for a binlog file.
+ The old index is deleted and a new index is rebuilt while scanning the
+ binlog file during binlog recovery.
+ Errors are not fatal, as the code can fallback to slower full binlog file
+ scan when no GTID index is available.
+
+ @param base_name File name of the binlog file.
+ @param offset End log pos of the GTID_LIST log event of the binlog file.
+
+ @return Gtid_index_writer object or NULL.
+*/
+Gtid_index_writer *
+MYSQL_BIN_LOG::recover_gtid_index_start(const char *base_name, my_off_t offset)
+{
+ char buf[Gtid_index_base::GTID_INDEX_FILENAME_MAX_SIZE];
+
+ Gtid_index_base::make_gtid_index_file_name(buf, sizeof(buf), base_name);
+ if (my_delete(buf, MYF(0)))
+ {
+ /* If ENOENT, the GTID index file is already deleted or never existed. */
+ if (my_errno != ENOENT)
+ {
+ sql_print_information("Failed to delete file '%s' (errno=%d)", buf, my_errno);
+ }
+ my_errno= 0;
+ }
+ Gtid_index_writer *gi=
+ new Gtid_index_writer(base_name, (uint32)offset,
+ &rpl_global_gtid_binlog_state,
+ (uint32)opt_binlog_gtid_index_page_size,
+ (my_off_t)opt_binlog_gtid_index_span_min);
+ return gi;
+}
+
+
+/*
+ Process one GTID during GTID index recovery.
+
+ @param gi Gtid_index_writer object or NULL.
+ @param offset End log pos of the GTID event.
+ @param gev GTID log event to process.
+
+ @return nothing
+*/
+void
+MYSQL_BIN_LOG::recover_gtid_index_process(Gtid_index_writer *gi,
+ my_off_t offset,
+ const rpl_gtid *gtid)
+{
+ if (gi)
+ {
+ gi->process_gtid((uint32)offset, gtid);
+ }
+}
+
+
+/*
+ Complete the recovery of one GTID index, syncing and closing it.
+
+ @param gi Gtid_index_writer object or NULL.
+
+ @return nothing
+*/
+void
+MYSQL_BIN_LOG::recover_gtid_index_end(Gtid_index_writer *gi)
+{
+ if (gi)
+ {
+ gi->close();
+ delete gi;
+ }
+}
+
+
+/*
+ Abort the recovery of one GTID index, deleting any partially recovered index.
+
+ @param gi Gtid_index_writer object or NULL.
+
+ @return nothing
+*/
+void
+MYSQL_BIN_LOG::recover_gtid_index_abort(Gtid_index_writer *gi)
+{
+ if (gi)
+ {
+ char buf[Gtid_index_base::GTID_INDEX_FILENAME_MAX_SIZE];
+ strmake(buf, gi->index_file_name, sizeof(buf)-1);
+ /*
+ Delete first the Gtid_index_writer object and then the partial index
+ (the writer still has the index file open and active until destructed).
+ */
+ delete(gi);
+ my_delete(buf, MYF(0));
+ }
+}
+
int
MYSQL_BIN_LOG::do_binlog_recovery(const char *opt_name, bool do_xa_recovery)
@@ -11881,7 +12456,7 @@ mysql_bin_log_commit_pos(THD *thd, ulonglong *out_pos, const char **out_file)
{
binlog_cache_mngr *cache_mngr;
if (opt_bin_log &&
- (cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton)))
+ (cache_mngr= thd->binlog_get_cache_mngr()))
{
*out_file= cache_mngr->last_commit_pos_file;
*out_pos= (ulonglong)(cache_mngr->last_commit_pos_offset);
@@ -11996,7 +12571,7 @@ TC_LOG_BINLOG::set_status_variables(THD *thd)
if (thd && opt_bin_log)
{
mysql_mutex_lock(&thd->LOCK_thd_data);
- auto cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ auto cache_mngr= thd->binlog_get_cache_mngr();
have_snapshot= cache_mngr && cache_mngr->last_commit_pos_file[0];
if (have_snapshot)
{
@@ -12120,8 +12695,7 @@ maria_declare_plugin_end;
IO_CACHE *wsrep_get_cache(THD * thd, bool is_transactional)
{
DBUG_ASSERT(binlog_hton->slot != HA_SLOT_UNDEF);
- binlog_cache_mngr *cache_mngr = (binlog_cache_mngr*)
- thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *cache_mngr = thd->binlog_get_cache_mngr();
if (cache_mngr)
return cache_mngr->get_binlog_cache_log(is_transactional);
@@ -12146,8 +12720,7 @@ void wsrep_thd_binlog_trx_reset(THD * thd)
/*
todo: fix autocommit select to not call the caller
*/
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
if (cache_mngr)
{
cache_mngr->reset(false, true);
@@ -12165,11 +12738,11 @@ void wsrep_thd_binlog_stmt_rollback(THD * thd)
{
DBUG_ENTER("wsrep_thd_binlog_stmt_rollback");
WSREP_DEBUG("wsrep_thd_binlog_stmt_rollback");
- binlog_cache_mngr *const cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
if (cache_mngr)
{
- thd->binlog_remove_pending_rows_event(TRUE, TRUE);
+ MYSQL_BIN_LOG::remove_pending_rows_event(thd, &cache_mngr->trx_cache);
+ thd->reset_binlog_for_next_statement();
cache_mngr->stmt_cache.reset();
}
DBUG_VOID_RETURN;
@@ -12191,8 +12764,7 @@ void wsrep_register_binlog_handler(THD *thd, bool trx)
back a statement or a transaction. However, notifications do not happen
if the binary log is set as read/write.
*/
- binlog_cache_mngr *cache_mngr=
- (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
+ binlog_cache_mngr *cache_mngr= thd->binlog_get_cache_mngr();
/* cache_mngr may be missing e.g. in mtr test ev51914.test */
if (cache_mngr)
{
diff --git a/sql/log.h b/sql/log.h
index bcccd3e4..d15b8ff6 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -21,8 +21,10 @@
#include "rpl_constants.h"
class Relay_log_info;
+class Gtid_index_writer;
class Format_description_log_event;
+class Gtid_log_event;
bool reopen_fstreams(const char *filename, FILE *outstream, FILE *errstream);
void setup_log_handling();
@@ -240,6 +242,7 @@ extern TC_LOG_DUMMY tc_log_dummy;
#define LOG_CLOSE_TO_BE_OPENED 2
#define LOG_CLOSE_STOP_EVENT 4
#define LOG_CLOSE_DELAYED_CLOSE 8
+#define LOG_CLOSE_SYNC_GTID_INDEX 16
/*
Maximum unique log filename extension.
@@ -326,6 +329,7 @@ public:
bool strip_ext, char *buff);
virtual int generate_new_name(char *new_name, const char *log_name,
ulong next_log_number);
+ inline mysql_mutex_t* get_log_lock() { return &LOCK_log; }
protected:
/* LOCK_log is inited by init_pthread_objects() */
mysql_mutex_t LOCK_log;
@@ -350,6 +354,178 @@ public:
enum cache_type io_cache_type_arg);
};
+/**
+ @struct Rows_event_factory
+
+ Holds an event type code and a callback function to create it.
+ Should be created by Rows_event_factory::get.
+*/
+struct Rows_event_factory
+{
+ int type_code;
+
+ Rows_log_event *(*create)(THD*, TABLE*, ulonglong, bool is_transactional);
+
+ template<class RowsEventT>
+ static Rows_event_factory get()
+ {
+ return { RowsEventT::TYPE_CODE,
+ [](THD* thd, TABLE* table, ulonglong flags, bool is_transactional)
+ -> Rows_log_event*
+ {
+ return new RowsEventT(thd, table, flags, is_transactional);
+ }
+ };
+ }
+};
+
+class Event_log: public MYSQL_LOG
+{
+protected:
+ /* binlog encryption data */
+ struct Binlog_crypt_data crypto;
+
+ mysql_mutex_t LOCK_binlog_end_pos;
+
+ /** The instrumentation key to use for LOCK_binlog_end_pos. */
+ PSI_mutex_key m_key_LOCK_binlog_end_pos;
+ /** The instrumentation key to use for opening the log file. */
+ PSI_file_key m_key_file_log, m_key_file_log_cache;
+public:
+#if !defined(MYSQL_CLIENT)
+ Rows_log_event*
+ prepare_pending_rows_event(THD *thd, TABLE* table,
+ binlog_cache_data *cache_data,
+ uint32 serv_id, size_t needed,
+ bool is_transactional,
+ Rows_event_factory event_factory);
+#endif
+ int flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event,
+ binlog_cache_data *cache_data,
+ bool is_transactional);
+ void set_write_error(THD *thd, bool is_transactional);
+ static bool check_write_error(THD *thd);
+ static bool check_cache_error(THD *thd, binlog_cache_data *cache_data);
+ int write_cache(THD *thd, binlog_cache_data *cache_data);
+ int write_cache_raw(THD *thd, IO_CACHE *cache);
+ char* get_name() { return name; }
+ void cleanup()
+ {
+ if (inited)
+ mysql_mutex_destroy(&LOCK_binlog_end_pos);
+
+ MYSQL_LOG::cleanup();
+ }
+ void init_pthread_objects()
+ {
+ MYSQL_LOG::init_pthread_objects();
+
+ mysql_mutex_init(m_key_LOCK_binlog_end_pos, &LOCK_binlog_end_pos,
+ MY_MUTEX_INIT_SLOW);
+ }
+
+ bool open(enum cache_type io_cache_type_arg);
+ virtual IO_CACHE *get_log_file() { return &log_file; }
+
+ longlong write_description_event(enum_binlog_checksum_alg checksum_alg,
+ bool encrypt, bool dont_set_created,
+ bool is_relay_log);
+
+ bool write_event(Log_event *ev, binlog_cache_data *data, IO_CACHE *file);
+ bool write_event(Log_event *ev, enum enum_binlog_checksum_alg checksum_alg,
+ binlog_cache_data *data, IO_CACHE *file);
+};
+
+/**
+ A single-reader, single-writer non-blocking layer for Event_log.
+ Provides IO_CACHE for writing and IO_CACHE for reading.
+
+ Writers use an overrided get_log_file version for their writes, while readers
+ should use flip() to initiate reading.
+ flip() swaps pointers to allow non-blocking reads.
+
+ Writers can block other writers and a reader with a mutex, but a reader only
+ swaps two pointers under a lock, so it won't block writers.
+
+ TODO should be unnecessary after MDEV-24676 is done
+ */
+class Cache_flip_event_log: public Event_log {
+ IO_CACHE alt_buf;
+ IO_CACHE *current, *alt;
+ std::atomic<uint> ref_count;
+public:
+ Cache_flip_event_log() : Event_log(),
+ current(&log_file), alt(&alt_buf), ref_count(1)
+ { bzero(&alt_buf, sizeof(alt_buf)); }
+
+ bool open(enum cache_type io_cache_type_arg)
+ {
+ log_file.dir= mysql_tmpdir;
+ alt_buf.dir= log_file.dir;
+ bool res= Event_log::open(io_cache_type_arg);
+ if (res)
+ return res;
+
+ name= my_strdup(key_memory_MYSQL_LOG_name, "online-alter-binlog",
+ MYF(MY_WME));
+ if (!name)
+ return false;
+
+ res= init_io_cache(&alt_buf, -1, LOG_BIN_IO_SIZE, io_cache_type_arg, 0, 0,
+ MYF(MY_WME | MY_NABP | MY_WAIT_IF_FULL)) != 0;
+ return res;
+ }
+
+ /**
+ Swaps current and alt_log. Can be called only from the reader thread.
+ @return a new IO_CACHE pointer to read from.
+ */
+ IO_CACHE *flip()
+ {
+ IO_CACHE *tmp= current;
+ reinit_io_cache(alt, WRITE_CACHE, 0, 0, 0);
+ mysql_mutex_lock(get_log_lock());
+ reinit_io_cache(current, READ_CACHE, 0, 0, 0);
+ current= alt;
+ mysql_mutex_unlock(get_log_lock());
+ alt= tmp;
+
+ return alt;
+ }
+
+ IO_CACHE *get_log_file() override
+ {
+ mysql_mutex_assert_owner(get_log_lock());
+ return current;
+ }
+
+ void acquire()
+ {
+ IF_DBUG(auto prev= ,)
+ ref_count.fetch_add(1);
+ DBUG_ASSERT(prev != 0);
+ }
+
+ void release()
+ {
+ auto prev= ref_count.fetch_add(-1);
+
+ if (prev == 1)
+ {
+ cleanup();
+ delete this;
+ }
+ }
+
+private:
+ void cleanup()
+ {
+ close_cached_file(&log_file);
+ close_cached_file(&alt_buf);
+ Event_log::cleanup();
+ }
+};
+
/* Tell the io thread if we can delay the master info sync. */
#define SEMI_SYNC_SLAVE_DELAY_SYNC 1
/* Tell the io thread if the current event needs a ack. */
@@ -419,12 +595,13 @@ private:
#define BINLOG_COOKIE_IS_DUMMY(c) \
( ((ulong)(c)>>1) == BINLOG_COOKIE_DUMMY_ID )
+
class binlog_cache_mngr;
class binlog_cache_data;
struct rpl_gtid;
struct wait_for_commit;
-class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
+class MYSQL_BIN_LOG: public TC_LOG, private Event_log
{
#ifdef HAVE_PSI_INTERFACE
/** The instrumentation key to use for @ LOCK_index. */
@@ -433,14 +610,10 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
PSI_cond_key m_key_relay_log_update;
/** The instrumentation key to use for @ COND_bin_log_updated */
PSI_cond_key m_key_bin_log_update;
- /** The instrumentation key to use for opening the log file. */
- PSI_file_key m_key_file_log, m_key_file_log_cache;
/** The instrumentation key to use for opening the log index file. */
PSI_file_key m_key_file_log_index, m_key_file_log_index_cache;
PSI_cond_key m_key_COND_queue_busy;
- /** The instrumentation key to use for LOCK_binlog_end_pos. */
- PSI_mutex_key m_key_LOCK_binlog_end_pos;
#else
static constexpr PSI_mutex_key m_key_LOCK_index= 0;
static constexpr PSI_cond_key m_key_relay_log_update= 0;
@@ -503,11 +676,11 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
/* LOCK_log and LOCK_index are inited by init_pthread_objects() */
mysql_mutex_t LOCK_index;
- mysql_mutex_t LOCK_binlog_end_pos;
mysql_mutex_t LOCK_xid_list;
mysql_cond_t COND_xid_list;
mysql_cond_t COND_relay_log_updated, COND_bin_log_updated;
ulonglong bytes_written;
+ ulonglong binlog_space_total;
IO_CACHE index_file;
char index_file_name[FN_REFLEN];
/*
@@ -553,8 +726,8 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
ulonglong group_commit_trigger_count, group_commit_trigger_timeout;
ulonglong group_commit_trigger_lock_wait;
- /* binlog encryption data */
- struct Binlog_crypt_data crypto;
+ /* Binlog GTID index. */
+ Gtid_index_writer *gtid_index;
/* pointer to the sync period variable, for binlog this will be
sync_binlog_period, for relay log this will be
@@ -565,6 +738,13 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
bool state_file_deleted;
bool binlog_state_recover_done;
+ Gtid_index_writer *recover_gtid_index_start(const char *base_name,
+ my_off_t offset);
+ void recover_gtid_index_process(Gtid_index_writer *gi, my_off_t offset,
+ const rpl_gtid *gtid);
+ void recover_gtid_index_end(Gtid_index_writer *gi);
+ void recover_gtid_index_abort(Gtid_index_writer *gi);
+
inline uint get_sync_period()
{
return *sync_period_ptr;
@@ -576,16 +756,18 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
new_file() is locking. new_file_without_locking() does not acquire
LOCK_log.
*/
- int new_file_without_locking();
int new_file_impl();
void do_checkpoint_request(ulong binlog_id);
- void purge();
int write_transaction_or_stmt(group_commit_entry *entry, uint64 commit_id);
int queue_for_group_commit(group_commit_entry *entry);
bool write_transaction_to_binlog_events(group_commit_entry *entry);
void trx_group_commit_leader(group_commit_entry *leader);
bool is_xidlist_idle_nolock();
+ void update_gtid_index(uint32 offset, rpl_gtid gtid);
+
public:
+ void purge(bool all);
+ int new_file_without_locking();
/*
A list of struct xid_count_per_binlog is used to keep track of how many
XIDs are in prepared, but not committed, state in each binlog. And how
@@ -604,11 +786,8 @@ public:
ulong binlog_id;
/* Total prepared XIDs and pending checkpoint requests in this binlog. */
long xid_count;
- long notify_count;
- /* For linking in requests to the binlog background thread. */
- xid_count_per_binlog *next_in_queue;
xid_count_per_binlog(char *log_file_name, uint log_file_name_len)
- :binlog_id(0), xid_count(0), notify_count(0)
+ :binlog_id(0), xid_count(0)
{
binlog_name_len= log_file_name_len;
binlog_name= (char *) my_malloc(PSI_INSTRUMENT_ME, binlog_name_len, MYF(MY_ZEROFILL));
@@ -721,6 +900,11 @@ public:
}
#endif
+ Event_log *as_event_log()
+ {
+ return this;
+ }
+
int open(const char *opt_name);
void close();
virtual int generate_new_name(char *new_name, const char *log_name,
@@ -734,10 +918,7 @@ public:
Format_description_log_event *fdle, bool do_xa);
int do_binlog_recovery(const char *opt_name, bool do_xa_recovery);
#if !defined(MYSQL_CLIENT)
-
- int flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event,
- bool is_transactional);
- int remove_pending_rows_event(THD *thd, bool is_transactional);
+ static int remove_pending_rows_event(THD *thd, binlog_cache_data *cache_data);
#endif /* !defined(MYSQL_CLIENT) */
void reset_bytes_written()
@@ -832,21 +1013,23 @@ public:
bool write_incident_already_locked(THD *thd);
bool write_incident(THD *thd);
void write_binlog_checkpoint_event_already_locked(const char *name, uint len);
- int write_cache(THD *thd, IO_CACHE *cache);
- void set_write_error(THD *thd, bool is_transactional);
- bool check_write_error(THD *thd);
- bool check_cache_error(THD *thd, binlog_cache_data *cache_data);
+ bool write_table_map(THD *thd, TABLE *table, bool with_annotate);
void start_union_events(THD *thd, query_id_t query_id_param);
void stop_union_events(THD *thd);
bool is_query_in_union(THD *thd, query_id_t query_id_param);
- bool write_event(Log_event *ev, binlog_cache_data *data, IO_CACHE *file);
- bool write_event(Log_event *ev) { return write_event(ev, 0, &log_file); }
+ using Event_log::write_event;
+
+ bool write_event(Log_event *ev, enum enum_binlog_checksum_alg checksum_alg)
+ {
+ return write_event(ev, checksum_alg, 0, &log_file);
+ }
+ bool write_event(Log_event *ev);
bool write_event_buffer(uchar* buf,uint len);
- bool append(Log_event* ev);
- bool append_no_lock(Log_event* ev);
+ bool append(Log_event* ev, enum enum_binlog_checksum_alg checksum_alg);
+ bool append_no_lock(Log_event* ev, enum enum_binlog_checksum_alg checksum_alg);
void mark_xids_active(ulong cookie, uint xid_count);
void mark_xid_done(ulong cookie, bool write_checkpoint);
@@ -876,6 +1059,22 @@ public:
ulonglong *decrease_log_space);
int purge_logs_before_date(time_t purge_time);
int purge_first_log(Relay_log_info* rli, bool included);
+ int count_binlog_space();
+ void count_binlog_space_with_mutex()
+ {
+ mysql_mutex_lock(&LOCK_index);
+ count_binlog_space();
+ mysql_mutex_unlock(&LOCK_index);
+ }
+ ulonglong get_binlog_space_total();
+ int real_purge_logs_by_size(ulonglong binlog_pos);
+ inline int purge_logs_by_size(ulonglong binlog_pos)
+ {
+ if (is_relay_log || ! binlog_space_limit ||
+ binlog_space_total + binlog_pos <= binlog_space_limit)
+ return 0;
+ return real_purge_logs_by_size(binlog_pos);
+ }
int set_purge_index_file_name(const char *base_file_name);
int open_purge_index_file(bool destroy);
bool truncate_and_remove_binlogs(const char *truncate_file,
@@ -905,8 +1104,7 @@ public:
uint next_file_id();
inline char* get_index_fname() { return index_file_name;}
inline char* get_log_fname() { return log_file_name; }
- inline char* get_name() { return name; }
- inline mysql_mutex_t* get_log_lock() { return &LOCK_log; }
+ using MYSQL_LOG::get_log_lock;
inline mysql_cond_t* get_bin_log_cond() { return &COND_bin_log_updated; }
inline IO_CACHE* get_log_file() { return &log_file; }
inline uint64 get_reset_master_count() { return reset_master_count; }
@@ -1187,6 +1385,16 @@ File open_binlog(IO_CACHE *log, const char *log_file_name,
void make_default_log_name(char **out, const char* log_ext, bool once);
void binlog_reset_cache(THD *thd);
bool write_annotated_row(THD *thd);
+int binlog_flush_pending_rows_event(THD *thd, bool stmt_end,
+ bool is_transactional,
+ Event_log *bin_log,
+ binlog_cache_data *cache_data);
+Rows_log_event* binlog_get_pending_rows_event(binlog_cache_mngr *cache_mngr,
+ bool use_trans_cache);
+int online_alter_log_row(TABLE* table, const uchar *before_record,
+ const uchar *after_record, Log_func *log_func);
+binlog_cache_data* binlog_get_cache_data(binlog_cache_mngr *cache_mngr,
+ bool use_trans_cache);
extern MYSQL_PLUGIN_IMPORT MYSQL_BIN_LOG mysql_bin_log;
extern handlerton *binlog_hton;
@@ -1279,6 +1487,4 @@ int binlog_commit_by_xid(handlerton *hton, XID *xid);
int binlog_rollback_by_xid(handlerton *hton, XID *xid);
bool write_bin_log_start_alter(THD *thd, bool& partial_alter,
uint64 start_alter_id, bool log_if_exists);
-
-
#endif /* LOG_H */
diff --git a/sql/log_cache.h b/sql/log_cache.h
new file mode 100644
index 00000000..cdff752b
--- /dev/null
+++ b/sql/log_cache.h
@@ -0,0 +1,272 @@
+/*
+ Copyright (c) 2023, MariaDB plc
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2 of
+ the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+*/
+
+#include "log_event.h"
+
+static constexpr my_off_t MY_OFF_T_UNDEF= ~0ULL;
+/** Truncate cache log files bigger than this */
+static constexpr my_off_t CACHE_FILE_TRUNC_SIZE = 65536;
+
+
+class binlog_cache_data
+{
+public:
+ binlog_cache_data(bool precompute_checksums):
+ before_stmt_pos(MY_OFF_T_UNDEF), m_pending(0), status(0),
+ incident(FALSE), precompute_checksums(precompute_checksums),
+ saved_max_binlog_cache_size(0), ptr_binlog_cache_use(0),
+ ptr_binlog_cache_disk_use(0)
+ {
+ /*
+ Read the current checksum setting. We will use this setting to decide
+ whether to pre-compute checksums in the cache. Then when writing the cache
+ to the actual binlog, another check will be made and checksums recomputed
+ in the unlikely case that the setting changed meanwhile.
+ */
+ checksum_opt= !precompute_checksums ? BINLOG_CHECKSUM_ALG_OFF :
+ (enum_binlog_checksum_alg)binlog_checksum_options;
+ }
+
+ ~binlog_cache_data()
+ {
+ DBUG_ASSERT(empty());
+ close_cached_file(&cache_log);
+ }
+
+ /*
+ Return 1 if there is no relevant entries in the cache
+
+ This is:
+ - Cache is empty
+ - There are row or critical (DDL?) events in the cache
+
+ The status test is needed to avoid writing entries with only
+ a table map entry, which would crash in do_apply_event() on the slave
+ as it assumes that there is always a row entry after a table map.
+ */
+ bool empty() const
+ {
+ return (pending() == NULL &&
+ (my_b_write_tell(&cache_log) == 0 ||
+ ((status & (LOGGED_ROW_EVENT | LOGGED_CRITICAL)) == 0)));
+ }
+
+ Rows_log_event *pending() const
+ {
+ return m_pending;
+ }
+
+ void set_pending(Rows_log_event *const pending_arg)
+ {
+ m_pending= pending_arg;
+ }
+
+ void set_incident(void)
+ {
+ incident= TRUE;
+ }
+
+ bool has_incident(void) const
+ {
+ return(incident);
+ }
+
+ void reset()
+ {
+ bool cache_was_empty= empty();
+ bool truncate_file= (cache_log.file != -1 &&
+ my_b_write_tell(&cache_log) > CACHE_FILE_TRUNC_SIZE);
+ truncate(0,1); // Forget what's in cache
+ checksum_opt= !precompute_checksums ? BINLOG_CHECKSUM_ALG_OFF :
+ (enum_binlog_checksum_alg)binlog_checksum_options;
+ if (!cache_was_empty)
+ compute_statistics();
+ if (truncate_file)
+ my_chsize(cache_log.file, 0, 0, MYF(MY_WME));
+
+ status= 0;
+ incident= FALSE;
+ before_stmt_pos= MY_OFF_T_UNDEF;
+ DBUG_ASSERT(empty());
+ }
+
+ my_off_t get_byte_position() const
+ {
+ return my_b_tell(&cache_log);
+ }
+
+ my_off_t get_prev_position() const
+ {
+ return(before_stmt_pos);
+ }
+
+ void set_prev_position(my_off_t pos)
+ {
+ before_stmt_pos= pos;
+ }
+
+ void restore_prev_position()
+ {
+ truncate(before_stmt_pos);
+ }
+
+ void restore_savepoint(my_off_t pos)
+ {
+ truncate(pos);
+ if (pos < before_stmt_pos)
+ before_stmt_pos= MY_OFF_T_UNDEF;
+ }
+
+ void set_binlog_cache_info(my_off_t param_max_binlog_cache_size,
+ ulong *param_ptr_binlog_cache_use,
+ ulong *param_ptr_binlog_cache_disk_use)
+ {
+ /*
+ The assertions guarantee that the set_binlog_cache_info is
+ called just once and information passed as parameters are
+ never zero.
+
+ This is done while calling the constructor binlog_cache_mngr.
+ We cannot set information in the constructor binlog_cache_data
+ because the space for binlog_cache_mngr is allocated through
+ a placement new.
+
+ In the future, we can refactor this and change it to avoid
+ the set_binlog_info.
+ */
+ DBUG_ASSERT(saved_max_binlog_cache_size == 0);
+ DBUG_ASSERT(param_max_binlog_cache_size != 0);
+ DBUG_ASSERT(ptr_binlog_cache_use == 0);
+ DBUG_ASSERT(param_ptr_binlog_cache_use != 0);
+ DBUG_ASSERT(ptr_binlog_cache_disk_use == 0);
+ DBUG_ASSERT(param_ptr_binlog_cache_disk_use != 0);
+
+ saved_max_binlog_cache_size= param_max_binlog_cache_size;
+ ptr_binlog_cache_use= param_ptr_binlog_cache_use;
+ ptr_binlog_cache_disk_use= param_ptr_binlog_cache_disk_use;
+ cache_log.end_of_file= saved_max_binlog_cache_size;
+ }
+
+ void add_status(enum_logged_status status_arg)
+ {
+ status|= status_arg;
+ }
+
+ /*
+ Cache to store data before copying it to the binary log.
+ */
+ IO_CACHE cache_log;
+
+protected:
+ /*
+ Binlog position before the start of the current statement.
+ */
+ my_off_t before_stmt_pos;
+
+private:
+ /*
+ Pending binrows event. This event is the event where the rows are currently
+ written.
+ */
+ Rows_log_event *m_pending;
+
+ /*
+ Bit flags for what has been writing to cache. Used to
+ discard logs without any data changes.
+ see enum_logged_status;
+ */
+ uint32 status;
+
+public:
+ /*
+ The algorithm (if any) used to pre-compute checksums in the cache.
+ Initialized from binlog_checksum_options when the cache is reset.
+ */
+ enum_binlog_checksum_alg checksum_opt;
+
+private:
+ /*
+ This indicates that some events did not get into the cache and most likely
+ it is corrupted.
+ */
+ bool incident;
+
+ /* Whether the caller requested precomputing checksums. */
+ bool precompute_checksums;
+
+ /**
+ This function computes binlog cache and disk usage.
+ */
+ void compute_statistics()
+ {
+ statistic_increment(*ptr_binlog_cache_use, &LOCK_status);
+ if (cache_log.disk_writes != 0)
+ {
+#ifdef REAL_STATISTICS
+ statistic_add(*ptr_binlog_cache_disk_use,
+ cache_log.disk_writes, &LOCK_status);
+#else
+ statistic_increment(*ptr_binlog_cache_disk_use, &LOCK_status);
+#endif
+ cache_log.disk_writes= 0;
+ }
+ }
+
+ /*
+ Stores the values of maximum size of the cache allowed when this cache
+ is configured. This corresponds to either
+ . max_binlog_cache_size or max_binlog_stmt_cache_size.
+ */
+ my_off_t saved_max_binlog_cache_size;
+
+ /*
+ Stores a pointer to the status variable that keeps track of the in-memory
+ cache usage. This corresponds to either
+ . binlog_cache_use or binlog_stmt_cache_use.
+ */
+ ulong *ptr_binlog_cache_use;
+
+ /*
+ Stores a pointer to the status variable that keeps track of the disk
+ cache usage. This corresponds to either
+ . binlog_cache_disk_use or binlog_stmt_cache_disk_use.
+ */
+ ulong *ptr_binlog_cache_disk_use;
+
+ /*
+ It truncates the cache to a certain position. This includes deleting the
+ pending event.
+ */
+ void truncate(my_off_t pos, bool reset_cache=0)
+ {
+ DBUG_PRINT("info", ("truncating to position %lu", (ulong) pos));
+ cache_log.error=0;
+ if (pending())
+ {
+ delete pending();
+ set_pending(0);
+ }
+ my_bool res __attribute__((unused))=
+ reinit_io_cache(&cache_log, WRITE_CACHE, pos, 0, reset_cache);
+ DBUG_ASSERT(res == 0);
+ cache_log.end_of_file= saved_max_binlog_cache_size;
+ }
+
+ binlog_cache_data& operator=(const binlog_cache_data& info);
+ binlog_cache_data(const binlog_cache_data& info);
+};
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 09a11219..8cf598b5 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -259,7 +259,7 @@ static inline bool read_str(const uchar **buf, const uchar *buf_end,
Transforms a string into "" or its expression in X'HHHH' form.
*/
-char *str_to_hex(char *to, const char *from, size_t len)
+char *str_to_hex(char *to, const uchar *from, size_t len)
{
if (len)
{
@@ -718,8 +718,10 @@ const char* Log_event::get_type_str()
Log_event::Log_event(const uchar *buf,
const Format_description_log_event* description_event)
- :temp_buf(0), exec_time(0), cache_type(Log_event::EVENT_INVALID_CACHE),
- checksum_alg(BINLOG_CHECKSUM_ALG_UNDEF)
+ :temp_buf(0), exec_time(0), cache_type(Log_event::EVENT_INVALID_CACHE)
+#ifndef MYSQL_CLIENT
+ , slave_exec_mode(SLAVE_EXEC_MODE_STRICT)
+#endif
{
#ifndef MYSQL_CLIENT
thd= 0;
@@ -728,40 +730,7 @@ Log_event::Log_event(const uchar *buf,
when_sec_part= ~0UL;
server_id= uint4korr(buf + SERVER_ID_OFFSET);
data_written= uint4korr(buf + EVENT_LEN_OFFSET);
- if (description_event->binlog_version==1)
- {
- log_pos= 0;
- flags= 0;
- return;
- }
- /* 4.0 or newer */
log_pos= uint4korr(buf + LOG_POS_OFFSET);
- /*
- If the log is 4.0 (so here it can only be a 4.0 relay log read by
- the SQL thread or a 4.0 master binlog read by the I/O thread),
- log_pos is the beginning of the event: we transform it into the end
- of the event, which is more useful.
- But how do you know that the log is 4.0: you know it if
- description_event is version 3 *and* you are not reading a
- Format_desc (remember that mysqlbinlog starts by assuming that 5.0
- logs are in 4.0 format, until it finds a Format_desc).
- */
- if (description_event->binlog_version==3 &&
- (uchar)buf[EVENT_TYPE_OFFSET]<FORMAT_DESCRIPTION_EVENT && log_pos)
- {
- /*
- If log_pos=0, don't change it. log_pos==0 is a marker to mean
- "don't change rli->group_master_log_pos" (see
- inc_group_relay_log_pos()). As it is unreal log_pos, adding the
- event len's is nonsense. For example, a fake Rotate event should
- not have its log_pos (which is 0) changed or it will modify
- Exec_master_log_pos in SHOW SLAVE STATUS, displaying a nonsense
- value of (a non-zero offset which does not exist in the master's
- binlog, so which will cause problems if the user uses this value
- in CHANGE MASTER).
- */
- log_pos+= data_written; /* purecov: inspected */
- }
DBUG_PRINT("info", ("log_pos: %llu", log_pos));
flags= uint2korr(buf + FLAGS_OFFSET);
@@ -794,17 +763,13 @@ Log_event::Log_event(const uchar *buf,
int Log_event::read_log_event(IO_CACHE* file, String* packet,
const Format_description_log_event *fdle,
- enum enum_binlog_checksum_alg checksum_alg_arg)
+ enum_binlog_checksum_alg checksum_alg_arg,
+ size_t max_allowed_packet)
{
ulong data_len;
char buf[LOG_EVENT_MINIMAL_HEADER_LEN];
uchar ev_offset= packet->length();
-#if !defined(MYSQL_CLIENT)
- THD *thd=current_thd;
- ulong max_allowed_packet= thd ? thd->slave_thread ? slave_max_allowed_packet
- : thd->variables.max_allowed_packet
- : ~(uint)0;
-#endif
+
DBUG_ENTER("Log_event::read_log_event(IO_CACHE*,String*...)");
if (my_b_read(file, (uchar*) buf, sizeof(buf)))
@@ -871,7 +836,7 @@ int Log_event::read_log_event(IO_CACHE* file, String* packet,
DBUG_RETURN(LOG_READ_MEM);
memcpy(newpkt, packet->ptr(), ev_offset);
- uint dstlen;
+ uint dstlen= (uint) sz - ev_offset - 4;
uchar *src= (uchar*)packet->ptr() + ev_offset;
uchar *dst= (uchar*)newpkt + ev_offset;
memcpy(src + EVENT_LEN_OFFSET, src, 4);
@@ -915,8 +880,8 @@ int Log_event::read_log_event(IO_CACHE* file, String* packet,
Log_event* Log_event::read_log_event(IO_CACHE* file,
const Format_description_log_event *fdle,
- my_bool crc_check,
- my_bool print_errors)
+ my_bool crc_check, my_bool print_errors,
+ size_t max_allowed_packet)
{
DBUG_ENTER("Log_event::read_log_event(IO_CACHE*,Format_description_log_event*...)");
DBUG_ASSERT(fdle != 0);
@@ -924,7 +889,8 @@ Log_event* Log_event::read_log_event(IO_CACHE* file,
const char *error= 0;
Log_event *res= 0;
- switch (read_log_event(file, &event, fdle, BINLOG_CHECKSUM_ALG_OFF))
+ switch (read_log_event(file, &event, fdle, BINLOG_CHECKSUM_ALG_OFF,
+ max_allowed_packet))
{
case 0:
break;
@@ -987,7 +953,7 @@ err:
DBUG_RETURN(res);
#endif
- if (event.length() >= OLD_HEADER_LEN)
+ if (event.length() >= LOG_EVENT_MINIMAL_HEADER_LEN)
sql_print_error("Error in Log_event::read_log_event(): '%s',"
" data_len: %lu, event_type: %u", error,
(ulong) uint4korr(&event[EVENT_LEN_OFFSET]),
@@ -1011,7 +977,7 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
my_bool print_errors)
{
Log_event* ev;
- enum enum_binlog_checksum_alg alg;
+ enum_binlog_checksum_alg alg;
DBUG_ENTER("Log_event::read_log_event(char*,...)");
DBUG_ASSERT(fdle != 0);
DBUG_PRINT("info", ("binlog_version: %d", fdle->binlog_version));
@@ -1030,7 +996,8 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
uint event_type= buf[EVENT_TYPE_OFFSET];
// all following START events in the current file are without checksum
if (event_type == START_EVENT_V3)
- (const_cast< Format_description_log_event *>(fdle))->checksum_alg= BINLOG_CHECKSUM_ALG_OFF;
+ (const_cast< Format_description_log_event *>(fdle))->used_checksum_alg=
+ BINLOG_CHECKSUM_ALG_OFF;
/*
CRC verification by SQL and Show-Binlog-Events master side.
The caller has to provide @fdle->checksum_alg to
@@ -1051,7 +1018,7 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
Notice, a pre-checksum FD version forces alg := BINLOG_CHECKSUM_ALG_UNDEF.
*/
alg= (event_type != FORMAT_DESCRIPTION_EVENT) ?
- fdle->checksum_alg : get_checksum_alg(buf, event_len);
+ fdle->used_checksum_alg : get_checksum_alg(buf, event_len);
// Emulate the corruption during reading an event
DBUG_EXECUTE_IF("corrupt_read_log_event_char",
if (event_type != FORMAT_DESCRIPTION_EVENT)
@@ -1142,12 +1109,6 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
ev= new Query_compressed_log_event(buf, event_len, fdle,
QUERY_COMPRESSED_EVENT);
break;
- case LOAD_EVENT:
- ev= new Load_log_event(buf, event_len, fdle);
- break;
- case NEW_LOAD_EVENT:
- ev= new Load_log_event(buf, event_len, fdle);
- break;
case ROTATE_EVENT:
ev= new Rotate_log_event(buf, event_len, fdle);
break;
@@ -1160,21 +1121,12 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
case GTID_LIST_EVENT:
ev= new Gtid_list_log_event(buf, event_len, fdle);
break;
- case CREATE_FILE_EVENT:
- ev= new Create_file_log_event(buf, event_len, fdle);
- break;
case APPEND_BLOCK_EVENT:
ev= new Append_block_log_event(buf, event_len, fdle);
break;
case DELETE_FILE_EVENT:
ev= new Delete_file_log_event(buf, event_len, fdle);
break;
- case EXEC_LOAD_EVENT:
- ev= new Execute_load_log_event(buf, event_len, fdle);
- break;
- case START_EVENT_V3: /* this is sent only by MySQL <=4.x */
- ev= new Start_log_event_v3(buf, event_len, fdle);
- break;
case STOP_EVENT:
ev= new Stop_log_event(buf, fdle);
break;
@@ -1197,15 +1149,6 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
ev= new Format_description_log_event(buf, event_len, fdle);
break;
#if defined(HAVE_REPLICATION)
- case PRE_GA_WRITE_ROWS_EVENT:
- ev= new Write_rows_log_event_old(buf, event_len, fdle);
- break;
- case PRE_GA_UPDATE_ROWS_EVENT:
- ev= new Update_rows_log_event_old(buf, event_len, fdle);
- break;
- case PRE_GA_DELETE_ROWS_EVENT:
- ev= new Delete_rows_log_event_old(buf, event_len, fdle);
- break;
case WRITE_ROWS_EVENT_V1:
case WRITE_ROWS_EVENT:
ev= new Write_rows_log_event(buf, event_len, fdle);
@@ -1261,6 +1204,14 @@ Log_event* Log_event::read_log_event(const uchar *buf, uint event_len,
case START_ENCRYPTION_EVENT:
ev= new Start_encryption_log_event(buf, event_len, fdle);
break;
+ case PRE_GA_WRITE_ROWS_EVENT:
+ case PRE_GA_UPDATE_ROWS_EVENT:
+ case PRE_GA_DELETE_ROWS_EVENT:
+ case START_EVENT_V3: /* this is sent only by MySQL <=4.x */
+ case CREATE_FILE_EVENT:
+ case EXEC_LOAD_EVENT:
+ case LOAD_EVENT:
+ case NEW_LOAD_EVENT:
default:
DBUG_PRINT("error",("Unknown event code: %d",
(uchar) buf[EVENT_TYPE_OFFSET]));
@@ -1272,11 +1223,10 @@ exit:
if (ev)
{
- ev->checksum_alg= alg;
#ifdef MYSQL_CLIENT
- if (ev->checksum_alg != BINLOG_CHECKSUM_ALG_OFF &&
- ev->checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
- ev->crc= uint4korr(buf + (event_len));
+ ev->read_checksum_alg= alg;
+ if (alg != BINLOG_CHECKSUM_ALG_OFF && alg != BINLOG_CHECKSUM_ALG_UNDEF)
+ ev->read_checksum_value= uint4korr(buf + (event_len));
#endif
}
@@ -1393,6 +1343,7 @@ code_name(int code)
case Q_HRNOW: return "Q_HRNOW";
case Q_XID: return "XID";
case Q_GTID_FLAGS3: return "Q_GTID_FLAGS3";
+ case Q_CHARACTER_SET_COLLATIONS: return "Q_CHARACTER_SET_COLLATIONS";
}
sprintf(buf, "CODE#%d", code);
return buf;
@@ -1438,14 +1389,14 @@ Query_log_event::Query_log_event(const uchar *buf, uint event_len,
Log_event_type event_type)
:Log_event(buf, description_event), data_buf(0), query(NullS),
db(NullS), catalog_len(0), status_vars_len(0),
- flags2_inited(0), sql_mode_inited(0), charset_inited(0), flags2(0),
+ flags2_inited(0), sql_mode_inited(0), charset_inited(0),
+ character_set_collations({0,0}), flags2(0),
auto_increment_increment(1), auto_increment_offset(1),
time_zone_len(0), lc_time_names_number(0), charset_database_number(0),
- table_map_for_update(0), xid(0), master_data_written(0), gtid_flags_extra(0),
+ table_map_for_update(0), xid(0), gtid_flags_extra(0),
sa_seq_no(0)
{
ulong data_len;
- uint32 tmp;
uint8 common_header_len, post_header_len;
Log_event::Byte *start;
const Log_event::Byte *end;
@@ -1474,45 +1425,23 @@ Query_log_event::Query_log_event(const uchar *buf, uint event_len,
db_len = (uchar)buf[Q_DB_LEN_OFFSET]; // TODO: add a check of all *_len vars
error_code = uint2korr(buf + Q_ERR_CODE_OFFSET);
+ status_vars_len= uint2korr(buf + Q_STATUS_VARS_LEN_OFFSET);
/*
- 5.0 format starts here.
- Depending on the format, we may or not have affected/warnings etc
- The remnent post-header to be parsed has length:
+ Check if status variable length is corrupt and will lead to very
+ wrong data. We could be even more strict and require data_len to
+ be even bigger, but this will suffice to catch most corruption
+ errors that can lead to a crash.
*/
- tmp= post_header_len - QUERY_HEADER_MINIMAL_LEN;
- if (tmp)
- {
- status_vars_len= uint2korr(buf + Q_STATUS_VARS_LEN_OFFSET);
- /*
- Check if status variable length is corrupt and will lead to very
- wrong data. We could be even more strict and require data_len to
- be even bigger, but this will suffice to catch most corruption
- errors that can lead to a crash.
- */
- if (status_vars_len > MY_MIN(data_len, MAX_SIZE_LOG_EVENT_STATUS))
- {
- DBUG_PRINT("info", ("status_vars_len (%u) > data_len (%lu); query= 0",
- status_vars_len, data_len));
- query= 0;
- DBUG_VOID_RETURN;
- }
- data_len-= status_vars_len;
- DBUG_PRINT("info", ("Query_log_event has status_vars_len: %u",
- (uint) status_vars_len));
- tmp-= 2;
- }
- else
+ if (status_vars_len > MY_MIN(data_len, MAX_SIZE_LOG_EVENT_STATUS))
{
- /*
- server version < 5.0 / binlog_version < 4 master's event is
- relay-logged with storing the original size of the event in
- Q_MASTER_DATA_WRITTEN_CODE status variable.
- The size is to be restored at reading Q_MASTER_DATA_WRITTEN_CODE-marked
- event from the relay log.
- */
- DBUG_ASSERT(description_event->binlog_version < 4);
- master_data_written= (uint32)data_written;
+ DBUG_PRINT("info", ("status_vars_len (%u) > data_len (%lu); query= 0",
+ status_vars_len, data_len));
+ query= 0;
+ DBUG_VOID_RETURN;
}
+ data_len-= status_vars_len;
+ DBUG_PRINT("info", ("Query_log_event has status_vars_len: %u",
+ (uint) status_vars_len));
/*
We have parsed everything we know in the post header for QUERY_EVENT,
the rest of post header is either comes from older version MySQL or
@@ -1566,6 +1495,17 @@ Query_log_event::Query_log_event(const uchar *buf, uint event_len,
pos+= 6;
break;
}
+ case Q_CHARACTER_SET_COLLATIONS:
+ {
+ const uchar *pos0= pos;
+ CHECK_SPACE(pos, end, 1);
+ uint16 count= *pos++;
+ CHECK_SPACE(pos, end, count * 4);
+ pos+= count * 4;
+ character_set_collations= Lex_cstring((const char *) pos0,
+ (const char *) pos);
+ break;
+ }
case Q_TIME_ZONE_CODE:
{
if (get_str_len_and_pointer(&pos, &time_zone_str, &time_zone_len, end))
@@ -1599,9 +1539,9 @@ Query_log_event::Query_log_event(const uchar *buf, uint event_len,
table_map_for_update= uint8korr(pos);
pos+= 8;
break;
- case Q_MASTER_DATA_WRITTEN_CODE:
+ case Q_MASTER_DATA_WRITTEN_CODE: // impossible
CHECK_SPACE(pos, end, 4);
- data_written= master_data_written= uint4korr(pos);
+ data_written= uint4korr(pos);
pos+= 4;
break;
case Q_INVOKER:
@@ -1853,7 +1793,7 @@ Query_compressed_log_event::Query_compressed_log_event(const uchar *buf,
*/
int
Query_log_event::dummy_event(String *packet, ulong ev_offset,
- enum enum_binlog_checksum_alg checksum_alg)
+ enum_binlog_checksum_alg checksum_alg)
{
uchar *p= (uchar *)packet->ptr() + ev_offset;
size_t data_len= packet->length() - ev_offset;
@@ -1945,7 +1885,7 @@ Query_log_event::dummy_event(String *packet, ulong ev_offset,
*/
int
Query_log_event::begin_event(String *packet, ulong ev_offset,
- enum enum_binlog_checksum_alg checksum_alg)
+ enum_binlog_checksum_alg checksum_alg)
{
uchar *p= (uchar *)packet->ptr() + ev_offset;
uchar *q= p + LOG_EVENT_HEADER_LEN;
@@ -2005,32 +1945,6 @@ Query_log_event::begin_event(String *packet, ulong ev_offset,
}
-/**************************************************************************
- Start_log_event_v3 methods
-**************************************************************************/
-
-
-Start_log_event_v3::Start_log_event_v3(const uchar *buf, uint event_len,
- const Format_description_log_event
- *description_event)
- :Log_event(buf, description_event), binlog_version(BINLOG_VERSION)
-{
- if (event_len < LOG_EVENT_MINIMAL_HEADER_LEN + ST_COMMON_HEADER_LEN_OFFSET)
- {
- server_version[0]= 0;
- return;
- }
- buf+= LOG_EVENT_MINIMAL_HEADER_LEN;
- binlog_version= uint2korr(buf+ST_BINLOG_VER_OFFSET);
- memcpy(server_version, buf+ST_SERVER_VER_OFFSET,
- ST_SERVER_VER_LEN);
- // prevent overrun if log is corrupted on disk
- server_version[ST_SERVER_VER_LEN-1]= 0;
- created= uint4korr(buf+ST_CREATED_OFFSET);
- dont_set_created= 1;
-}
-
-
/***************************************************************************
Format_description_log_event methods
****************************************************************************/
@@ -2053,11 +1967,13 @@ Start_log_event_v3::Start_log_event_v3(const uchar *buf, uint event_len,
*/
Format_description_log_event::
-Format_description_log_event(uint8 binlog_ver, const char* server_ver)
- :Start_log_event_v3(), event_type_permutation(0)
+Format_description_log_event(uint8 binlog_ver, const char* server_ver,
+ enum_binlog_checksum_alg checksum_alg)
+ :Log_event(), created(0), binlog_version(binlog_ver),
+ dont_set_created(0), event_type_permutation(0),
+ used_checksum_alg(checksum_alg)
{
- binlog_version= binlog_ver;
- switch (binlog_ver) {
+ switch (binlog_version) {
case 4: /* MySQL 5.0 */
memcpy(server_version, ::server_version, ST_SERVER_VER_LEN);
DBUG_EXECUTE_IF("pretend_version_50034_in_binlog",
@@ -2175,51 +2091,12 @@ Format_description_log_event(uint8 binlog_ver, const char* server_ver)
case 1: /* 3.23 */
case 3: /* 4.0.x x>=2 */
- /*
- We build an artificial (i.e. not sent by the master) event, which
- describes what those old master versions send.
- */
- if (binlog_ver==1)
- strmov(server_version, server_ver ? server_ver : "3.23");
- else
- strmov(server_version, server_ver ? server_ver : "4.0");
- common_header_len= binlog_ver==1 ? OLD_HEADER_LEN :
- LOG_EVENT_MINIMAL_HEADER_LEN;
- /*
- The first new event in binlog version 4 is Format_desc. So any event type
- after that does not exist in older versions. We use the events known by
- version 3, even if version 1 had only a subset of them (this is not a
- problem: it uses a few bytes for nothing but unifies code; it does not
- make the slave detect less corruptions).
- */
- number_of_event_types= FORMAT_DESCRIPTION_EVENT - 1;
- post_header_len=(uint8*) my_malloc(PSI_INSTRUMENT_ME,
- number_of_event_types*sizeof(uint8), MYF(0));
- if (post_header_len)
- {
- post_header_len[START_EVENT_V3-1]= START_V3_HEADER_LEN;
- post_header_len[QUERY_EVENT-1]= QUERY_HEADER_MINIMAL_LEN;
- post_header_len[STOP_EVENT-1]= 0;
- post_header_len[ROTATE_EVENT-1]= (binlog_ver==1) ? 0 : ROTATE_HEADER_LEN;
- post_header_len[INTVAR_EVENT-1]= 0;
- post_header_len[LOAD_EVENT-1]= LOAD_HEADER_LEN;
- post_header_len[SLAVE_EVENT-1]= 0;
- post_header_len[CREATE_FILE_EVENT-1]= CREATE_FILE_HEADER_LEN;
- post_header_len[APPEND_BLOCK_EVENT-1]= APPEND_BLOCK_HEADER_LEN;
- post_header_len[EXEC_LOAD_EVENT-1]= EXEC_LOAD_HEADER_LEN;
- post_header_len[DELETE_FILE_EVENT-1]= DELETE_FILE_HEADER_LEN;
- post_header_len[NEW_LOAD_EVENT-1]= post_header_len[LOAD_EVENT-1];
- post_header_len[RAND_EVENT-1]= 0;
- post_header_len[USER_VAR_EVENT-1]= 0;
- }
- break;
default: /* Includes binlog version 2 i.e. 4.0.x x<=1 */
post_header_len= 0; /* will make is_valid() fail */
break;
}
calc_server_version_split();
deduct_options_written_to_bin_log();
- checksum_alg= BINLOG_CHECKSUM_ALG_UNDEF;
reset_crypto();
}
@@ -2246,14 +2123,27 @@ Format_description_log_event::
Format_description_log_event(const uchar *buf, uint event_len,
const Format_description_log_event*
description_event)
- :Start_log_event_v3(buf, event_len, description_event),
+ :Log_event(buf, description_event), binlog_version(BINLOG_VERSION),
common_header_len(0), post_header_len(NULL), event_type_permutation(0)
{
DBUG_ENTER("Format_description_log_event::Format_description_log_event(char*,...)");
- if (!Start_log_event_v3::is_valid())
- DBUG_VOID_RETURN; /* sanity check */
+ used_checksum_alg= BINLOG_CHECKSUM_ALG_UNDEF;
+ if (event_len < LOG_EVENT_MINIMAL_HEADER_LEN + ST_COMMON_HEADER_LEN_OFFSET)
+ {
+ server_version[0]= 0;
+ DBUG_VOID_RETURN;
+ }
buf+= LOG_EVENT_MINIMAL_HEADER_LEN;
- if ((common_header_len=buf[ST_COMMON_HEADER_LEN_OFFSET]) < OLD_HEADER_LEN)
+ binlog_version= uint2korr(buf+ST_BINLOG_VER_OFFSET);
+ memcpy(server_version, buf+ST_SERVER_VER_OFFSET, ST_SERVER_VER_LEN);
+ // prevent overrun if log is corrupted on disk
+ server_version[ST_SERVER_VER_LEN-1]= 0;
+ created= uint4korr(buf+ST_CREATED_OFFSET);
+ dont_set_created= 1;
+
+ if (server_version[0] == 0)
+ DBUG_VOID_RETURN; /* sanity check */
+ if ((common_header_len=buf[ST_COMMON_HEADER_LEN_OFFSET]) < LOG_EVENT_MINIMAL_HEADER_LEN)
DBUG_VOID_RETURN; /* sanity check */
number_of_event_types=
event_len - (LOG_EVENT_MINIMAL_HEADER_LEN + ST_COMMON_HEADER_LEN_OFFSET + 1);
@@ -2271,11 +2161,11 @@ Format_description_log_event(const uchar *buf, uint event_len,
{
/* the last bytes are the checksum alg desc and value (or value's room) */
number_of_event_types -= BINLOG_CHECKSUM_ALG_DESC_LEN;
- checksum_alg= (enum_binlog_checksum_alg)post_header_len[number_of_event_types];
+ used_checksum_alg= (enum_binlog_checksum_alg)post_header_len[number_of_event_types];
}
else
{
- checksum_alg= BINLOG_CHECKSUM_ALG_UNDEF;
+ used_checksum_alg= BINLOG_CHECKSUM_ALG_OFF;
}
deduct_options_written_to_bin_log();
reset_crypto();
@@ -2398,9 +2288,9 @@ Format_description_log_event::is_version_before_checksum(const master_version_sp
checksum-unaware (effectively no checksum) and the actuall
[1-254] range alg descriptor.
*/
-enum enum_binlog_checksum_alg get_checksum_alg(const uchar *buf, ulong len)
+enum_binlog_checksum_alg get_checksum_alg(const uchar *buf, ulong len)
{
- enum enum_binlog_checksum_alg ret;
+ enum_binlog_checksum_alg ret;
char version[ST_SERVER_VER_LEN];
DBUG_ENTER("get_checksum_alg");
@@ -2441,120 +2331,6 @@ Start_encryption_log_event(const uchar *buf, uint event_len,
}
-/**************************************************************************
- Load_log_event methods
- General note about Load_log_event: the binlogging of LOAD DATA INFILE is
- going to be changed in 5.0 (or maybe in 5.1; not decided yet).
- However, the 5.0 slave could still have to read such events (from a 4.x
- master), convert them (which just means maybe expand the header, when 5.0
- servers have a UID in events) (remember that whatever is after the header
- will be like in 4.x, as this event's format is not modified in 5.0 as we
- will use new types of events to log the new LOAD DATA INFILE features).
- To be able to read/convert, we just need to not assume that the common
- header is of length LOG_EVENT_HEADER_LEN (we must use the description
- event).
- Note that I (Guilhem) manually tested replication of a big LOAD DATA INFILE
- between 3.23 and 5.0, and between 4.0 and 5.0, and it works fine (and the
- positions displayed in SHOW SLAVE STATUS then are fine too).
-**************************************************************************/
-
-
-/**
- @note
- The caller must do buf[event_len]= 0 before he starts using the
- constructed event.
-*/
-
-Load_log_event::Load_log_event(const uchar *buf, uint event_len,
- const Format_description_log_event
- *description_event)
- :Log_event(buf, description_event), num_fields(0), fields(0),
- field_lens(0),field_block_len(0),
- table_name(0), db(0), fname(0), local_fname(FALSE),
- /*
- Load_log_event which comes from the binary log does not contain
- information about the type of insert which was used on the master.
- Assume that it was an ordinary, non-concurrent LOAD DATA.
- */
- is_concurrent(FALSE)
-{
- DBUG_ENTER("Load_log_event");
- /*
- I (Guilhem) manually tested replication of LOAD DATA INFILE for 3.23->5.0,
- 4.0->5.0 and 5.0->5.0 and it works.
- */
- if (event_len)
- copy_log_event(buf, event_len,
- (((uchar)buf[EVENT_TYPE_OFFSET] == LOAD_EVENT) ?
- LOAD_HEADER_LEN +
- description_event->common_header_len :
- LOAD_HEADER_LEN + LOG_EVENT_HEADER_LEN),
- description_event);
- /* otherwise it's a derived class, will call copy_log_event() itself */
- DBUG_VOID_RETURN;
-}
-
-
-/*
- Load_log_event::copy_log_event()
-*/
-
-int Load_log_event::copy_log_event(const uchar *buf, ulong event_len,
- int body_offset,
- const Format_description_log_event
- *description_event)
-{
- DBUG_ENTER("Load_log_event::copy_log_event");
- uint data_len;
- if ((int) event_len <= body_offset)
- DBUG_RETURN(1);
- const uchar *buf_end= buf + event_len;
- /* this is the beginning of the post-header */
- const uchar *data_head= buf + description_event->common_header_len;
- thread_id= slave_proxy_id= uint4korr(data_head + L_THREAD_ID_OFFSET);
- exec_time= uint4korr(data_head + L_EXEC_TIME_OFFSET);
- skip_lines= uint4korr(data_head + L_SKIP_LINES_OFFSET);
- table_name_len= (uint)data_head[L_TBL_LEN_OFFSET];
- db_len= (uint)data_head[L_DB_LEN_OFFSET];
- num_fields= uint4korr(data_head + L_NUM_FIELDS_OFFSET);
-
- /*
- Sql_ex.init() on success returns the pointer to the first byte after
- the sql_ex structure, which is the start of field lengths array.
- */
- if (!(field_lens= (uchar*) sql_ex.init(buf + body_offset, buf_end,
- buf[EVENT_TYPE_OFFSET] != LOAD_EVENT)))
- DBUG_RETURN(1);
-
- data_len= event_len - body_offset;
- if (num_fields > data_len) // simple sanity check against corruption
- DBUG_RETURN(1);
- for (uint i= 0; i < num_fields; i++)
- field_block_len+= (uint)field_lens[i] + 1;
-
- fields= (char*) field_lens + num_fields;
- table_name= fields + field_block_len;
- if (strlen(table_name) > NAME_LEN)
- goto err;
-
- db= table_name + table_name_len + 1;
- DBUG_EXECUTE_IF("simulate_invalid_address", db_len= data_len;);
- fname= db + db_len + 1;
- if ((db_len > data_len) || (fname > (char*) buf_end))
- goto err;
- fname_len= (uint) strlen(fname);
- if ((fname_len > data_len) || (fname + fname_len > (char*) buf_end))
- goto err;
- // null termination is accomplished by the caller doing buf[event_len]=0
-
- DBUG_RETURN(0);
-
-err:
- // Invalid event.
- table_name= 0;
- DBUG_RETURN(1);
-}
-
/**************************************************************************
Rotate_log_event methods
@@ -2796,7 +2572,7 @@ Gtid_list_log_event::Gtid_list_log_event(const uchar *buf, uint event_len,
*/
bool
Gtid_list_log_event::peek(const char *event_start, size_t event_len,
- enum enum_binlog_checksum_alg checksum_alg,
+ enum_binlog_checksum_alg checksum_alg,
rpl_gtid **out_gtid_list, uint32 *out_list_len,
const Format_description_log_event *fdev)
{
@@ -3080,68 +2856,6 @@ err:
/**************************************************************************
- Create_file_log_event methods
-**************************************************************************/
-
-/*
- Create_file_log_event ctor
-*/
-
-Create_file_log_event::
-Create_file_log_event(const uchar *buf, uint len,
- const Format_description_log_event* description_event)
- :Load_log_event(buf,0,description_event),fake_base(0),block(0),
- inited_from_old(0)
-{
- DBUG_ENTER("Create_file_log_event::Create_file_log_event(char*,...)");
- uint block_offset;
- uint header_len= description_event->common_header_len;
- uint8 load_header_len= description_event->post_header_len[LOAD_EVENT-1];
- uint8 create_file_header_len= description_event->post_header_len[CREATE_FILE_EVENT-1];
- if (!(event_buf= (uchar*) my_memdup(PSI_INSTRUMENT_ME, buf, len,
- MYF(MY_WME))) ||
- copy_log_event(event_buf,len,
- (((uchar)buf[EVENT_TYPE_OFFSET] == LOAD_EVENT) ?
- load_header_len + header_len :
- (fake_base ? (header_len+load_header_len) :
- (header_len+load_header_len) +
- create_file_header_len)),
- description_event))
- DBUG_VOID_RETURN;
- if (description_event->binlog_version!=1)
- {
- file_id= uint4korr(buf +
- header_len +
- load_header_len + CF_FILE_ID_OFFSET);
- /*
- Note that it's ok to use get_data_size() below, because it is computed
- with values we have already read from this event (because we called
- copy_log_event()); we are not using slave's format info to decode
- master's format, we are really using master's format info.
- Anyway, both formats should be identical (except the common_header_len)
- as these Load events are not changed between 4.0 and 5.0 (as logging of
- LOAD DATA INFILE does not use Load_log_event in 5.0).
-
- The + 1 is for \0 terminating fname
- */
- block_offset= (description_event->common_header_len +
- Load_log_event::get_data_size() +
- create_file_header_len + 1);
- if (len < block_offset)
- DBUG_VOID_RETURN;
- block= const_cast<uchar*>(buf) + block_offset;
- block_len= len - block_offset;
- }
- else
- {
- sql_ex.force_new_format();
- inited_from_old= 1;
- }
- DBUG_VOID_RETURN;
-}
-
-
-/**************************************************************************
Append_block_log_event methods
**************************************************************************/
@@ -3190,27 +2904,6 @@ Delete_file_log_event(const uchar *buf, uint len,
/**************************************************************************
- Execute_load_log_event methods
-**************************************************************************/
-
-/*
- Execute_load_log_event ctor
-*/
-
-Execute_load_log_event::
-Execute_load_log_event(const uchar *buf, uint len,
- const Format_description_log_event* description_event)
- :Log_event(buf, description_event), file_id(0)
-{
- uint8 common_header_len= description_event->common_header_len;
- uint8 exec_load_header_len= description_event->post_header_len[EXEC_LOAD_EVENT-1];
- if (len < (uint)(common_header_len+exec_load_header_len))
- return;
- file_id= uint4korr(buf + common_header_len + EL_FILE_ID_OFFSET);
-}
-
-
-/**************************************************************************
Begin_load_query_log_event methods
**************************************************************************/
@@ -3332,22 +3025,19 @@ Rows_log_event::Rows_log_event(const uchar *buf, uint event_len,
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
, m_curr_row(NULL), m_curr_row_end(NULL),
m_key(NULL), m_key_info(NULL), m_key_nr(0),
- master_had_triggers(0)
+ m_usable_key_parts(0), master_had_triggers(0)
#endif
{
DBUG_ENTER("Rows_log_event::Rows_log_event(const char*,...)");
uint8 const common_header_len= description_event->common_header_len;
Log_event_type event_type= (Log_event_type)(uchar)buf[EVENT_TYPE_OFFSET];
m_type= event_type;
- m_cols_ai.bitmap= 0;
+ m_cols_ai.bitmap= 0; // Set to invalid, so it can be processed in is_valid().
uint8 const post_header_len= description_event->post_header_len[event_type-1];
if (event_len < (uint)(common_header_len + post_header_len))
- {
- m_cols.bitmap= 0;
DBUG_VOID_RETURN;
- }
DBUG_PRINT("enter",("event_len: %u common_header_len: %d "
"post_header_len: %d",
@@ -3451,8 +3141,6 @@ Rows_log_event::Rows_log_event(const uchar *buf, uint event_len,
else
DBUG_VOID_RETURN;
- m_cols_ai.bitmap= m_cols.bitmap; /* See explanation in is_valid() */
-
if (LOG_EVENT_IS_UPDATE_ROW(event_type))
{
DBUG_PRINT("debug", ("Reading from %p", ptr_after_width));
@@ -3469,7 +3157,21 @@ Rows_log_event::Rows_log_event(const uchar *buf, uint event_len,
ptr_after_width+= (m_width + 7) / 8;
}
else
+ {
+ DBUG_ASSERT(m_cols_ai.bitmap == NULL);
DBUG_VOID_RETURN;
+ }
+ }
+ else
+ {
+ m_cols_ai= m_cols; /* Safety */
+#ifdef DBUG_OFF
+ /*
+ m_cols_ai should only be usable for update events. Make sure nobody
+ successfully manipulates it in debug builds.
+ */
+ m_cols_ai.bitmap= (my_bitmap_map*)1;
+#endif
}
const uchar* const ptr_rows_data= (const uchar*) ptr_after_width;
diff --git a/sql/log_event.h b/sql/log_event.h
index 2d9b7ceb..df42f0a1 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -40,6 +40,7 @@
#include <functional>
#include <memory>
#include <map>
+#include <lex_charset.h>
#ifdef MYSQL_CLIENT
#include "sql_const.h"
@@ -53,6 +54,8 @@
#include "rpl_record.h"
#include "rpl_reporting.h"
#include "sql_class.h" /* THD */
+#else
+typedef ulong enum_slave_exec_mode;
#endif
#include "rpl_gtid.h"
@@ -177,21 +180,17 @@ class String;
See the #defines below for the format specifics.
The events which really update data are Query_log_event,
- Execute_load_query_log_event and old Load_log_event and
- Execute_load_log_event events (Execute_load_query is used together with
- Begin_load_query and Append_block events to replicate LOAD DATA INFILE.
- Create_file/Append_block/Execute_load (which includes Load_log_event)
- were used to replicate LOAD DATA before the 5.0.3).
+ Execute_load_query_log_event and Execute_load_log_event events
+ (Execute_load_query is used together with Begin_load_query and Append_block
+ events to replicate LOAD DATA INFILE.
****************************************************************************/
#define LOG_EVENT_HEADER_LEN 19 /* the fixed header length */
-#define OLD_HEADER_LEN 13 /* the fixed header length in 3.23 */
/*
- Fixed header length, where 4.x and 5.0 agree. That is, 5.0 may have a longer
- header (it will for sure when we have the unique event's ID), but at least
- the first 19 bytes are the same in 4.x and 5.0. So when we have the unique
- event's ID, LOG_EVENT_HEADER_LEN will be something like 26, but
+ Fixed header length. That is, some future version may have a longer
+ header, but at least the first 19 bytes will be the same. So
+ LOG_EVENT_HEADER_LEN will be something like 26, but
LOG_EVENT_MINIMAL_HEADER_LEN will remain 19.
*/
#define LOG_EVENT_MINIMAL_HEADER_LEN 19
@@ -237,7 +236,8 @@ class String;
packet (i.e. a query) sent from client to master;
First, an auxiliary log_event status vars estimation:
*/
-#define MAX_SIZE_LOG_EVENT_STATUS (1 + 4 /* type, flags2 */ + \
+#define MAX_SIZE_LOG_EVENT_STATUS (uint) \
+ (1 + 4 /* type, flags2 */ + \
1 + 8 /* type, sql_mode */ + \
1 + 1 + 255 /* type, length, catalog */ + \
1 + 4 /* type, auto_increment */ + \
@@ -249,7 +249,10 @@ class String;
1 + 4 /* type, master_data_written */ + \
1 + 3 /* type, sec_part of NOW() */ + \
1 + 16 + 1 + 60/* type, user_len, user, host_len, host */ + \
- 1 + 2 + 8 /* type, flags3, seq_no */)
+ 1 + 2 + 8 /* type, flags3, seq_no */ + \
+ 1 + Charset_collation_map_st::binary_size_max() \
+ /* type, map */ \
+ )
#define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \
LOG_EVENT_HEADER_LEN + /* write_header */ \
QUERY_HEADER_LEN + /* write_data */ \
@@ -331,6 +334,8 @@ class String;
#define Q_XID 129
#define Q_GTID_FLAGS3 130
+
+#define Q_CHARACTER_SET_COLLATIONS 131
/* Intvar event post-header */
/* Intvar event data */
@@ -612,11 +617,6 @@ enum Log_event_type
APPEND_BLOCK_EVENT= 9,
EXEC_LOAD_EVENT= 10,
DELETE_FILE_EVENT= 11,
- /*
- NEW_LOAD_EVENT is like LOAD_EVENT except that it has a longer
- sql_ex, allowing multibyte TERMINATED BY etc; both types share the
- same class (Load_log_event)
- */
NEW_LOAD_EVENT= 12,
RAND_EVENT= 13,
USER_VAR_EVENT= 14,
@@ -999,6 +999,13 @@ class Log_event_writer
public:
ulonglong bytes_written;
void *ctx; ///< Encryption context or 0 if no encryption is needed
+ /*
+ The length of a checksum written at the end of the event, if any.
+ Currently this is always either 0, when checksums are disabled, or
+ BINLOG_CHECKSUM_LEN when using BINLOG_CHECKSUM_ALG_CRC32.
+ (If we ever add another checksum algorithm, we will need to instead store
+ here the algorithm to use instead of just the length).
+ */
uint checksum_len;
int write(Log_event *ev);
int write_header(uchar *pos, size_t len);
@@ -1011,9 +1018,13 @@ public:
{ encrypt_or_write= &Log_event_writer::encrypt_and_write; }
Log_event_writer(IO_CACHE *file_arg, binlog_cache_data *cache_data_arg,
- Binlog_crypt_data *cr= 0)
+ enum_binlog_checksum_alg checksum_alg,
+ Binlog_crypt_data *cr)
:encrypt_or_write(&Log_event_writer::write_internal),
bytes_written(0), ctx(0),
+ checksum_len(( checksum_alg != BINLOG_CHECKSUM_ALG_OFF &&
+ checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF) ?
+ BINLOG_CHECKSUM_LEN : 0),
file(file_arg), cache_data(cache_data_arg), crypto(cr) { }
private:
@@ -1259,12 +1270,6 @@ public:
event's type, and its content is distributed in the event-specific fields.
*/
uchar *temp_buf;
-
- /*
- TRUE <=> this event 'owns' temp_buf and should call my_free() when done
- with it
- */
- bool event_owns_temp_buf;
/*
Timestamp on the master(for debugging and replication of
@@ -1294,15 +1299,19 @@ public:
*/
uint16 flags;
+ /**
+ true <=> this event 'owns' temp_buf and should call my_free() when done
+ with it
+ */
+ bool event_owns_temp_buf;
+
enum_event_cache_type cache_type;
/**
A storage to cache the global system variable's value.
Handling of a separate event will be governed its member.
*/
- ulong slave_exec_mode;
-
- Log_event_writer *writer;
+ enum_slave_exec_mode slave_exec_mode;
#ifdef MYSQL_SERVER
THD* thd;
@@ -1333,7 +1342,9 @@ public:
}
#else
Log_event() : temp_buf(0), when(0), flags(0) {}
- ha_checksum crc;
+ /* The checksum algorithm used (if any) when the event was read. */
+ enum_binlog_checksum_alg read_checksum_alg;
+ ha_checksum read_checksum_value;
/* print*() functions are used by mysqlbinlog */
virtual bool print(FILE* file, PRINT_EVENT_INFO* print_event_info) = 0;
bool print_timestamp(IO_CACHE* file, time_t *ts = 0);
@@ -1373,6 +1384,20 @@ public:
#endif
#endif
+private:
+ static size_t get_max_packet()
+ {
+ size_t max_packet= ~0UL;
+#if !defined(MYSQL_CLIENT)
+ THD *thd=current_thd;
+ if (thd)
+ max_packet= thd->slave_thread ? slave_max_allowed_packet
+ : thd->variables.max_allowed_packet;
+#endif
+ return max_packet;
+ }
+public:
+
/*
read_log_event() functions read an event from a binlog or relay
log; used by SHOW BINLOG EVENTS, the binlog_dump thread on the
@@ -1387,8 +1412,16 @@ public:
static Log_event* read_log_event(IO_CACHE* file,
const Format_description_log_event
*description_event,
- my_bool crc_check,
- my_bool print_errors= 1);
+ my_bool crc_check, my_bool print_errors,
+ size_t max_allowed_packet);
+ static Log_event* read_log_event(IO_CACHE* file,
+ const Format_description_log_event
+ *description_event,
+ my_bool crc_check, my_bool print_errors= 1)
+ {
+ return read_log_event(file, description_event, crc_check, print_errors,
+ get_max_packet());
+ }
/**
Reads an event from a binlog or relay log. Used by the dump thread
@@ -1415,16 +1448,15 @@ public:
*/
static int read_log_event(IO_CACHE* file, String* packet,
const Format_description_log_event *fdle,
- enum enum_binlog_checksum_alg checksum_alg_arg);
- /*
- The value is set by caller of FD constructor and
- Log_event::write_header() for the rest.
- In the FD case it's propagated into the last byte
- of post_header_len[] at FD::write().
- On the slave side the value is assigned from post_header_len[last]
- of the last seen FD event.
- */
- enum enum_binlog_checksum_alg checksum_alg;
+ enum enum_binlog_checksum_alg checksum_alg_arg,
+ size_t max_allowed_packet);
+
+ static int read_log_event(IO_CACHE* file, String* packet,
+ const Format_description_log_event *fdle,
+ enum enum_binlog_checksum_alg checksum_alg)
+ {
+ return read_log_event(file, packet, fdle, checksum_alg, get_max_packet());
+ }
static void *operator new(size_t size)
{
@@ -1442,24 +1474,26 @@ public:
static void operator delete(void*, void*) { }
#ifdef MYSQL_SERVER
- bool write_header(size_t event_data_length);
- bool write_data(const uchar *buf, size_t data_length)
+ bool write_header(Log_event_writer *writer, size_t event_data_length);
+ bool write_data(Log_event_writer *writer, const uchar *buf, size_t data_length)
{ return writer->write_data(buf, data_length); }
- bool write_data(const char *buf, size_t data_length)
- { return write_data((uchar*)buf, data_length); }
- bool write_footer()
+ bool write_data(Log_event_writer *writer, const char *buf, size_t data_length)
+ { return write_data(writer, (uchar*)buf, data_length); }
+ bool write_footer(Log_event_writer *writer)
{ return writer->write_footer(); }
- my_bool need_checksum();
+ enum_binlog_checksum_alg select_checksum_alg(const binlog_cache_data *data);
- virtual bool write()
+ virtual bool write(Log_event_writer *writer)
{
- return write_header(get_data_size()) || write_data_header() ||
- write_data_body() || write_footer();
+ return write_header(writer, get_data_size()) ||
+ write_data_header(writer) ||
+ write_data_body(writer) ||
+ write_footer(writer);
}
- virtual bool write_data_header()
+ virtual bool write_data_header(Log_event_writer *writer)
{ return 0; }
- virtual bool write_data_body()
+ virtual bool write_data_body(Log_event_writer *writer)
{ return 0; }
/* Return start of query time or current time */
@@ -1546,6 +1580,12 @@ public:
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
/**
+ Increase or decrease the rows inserted during ALTER TABLE based on the event
+ type.
+ */
+ virtual void online_alter_update_row_count(ha_rows *) const {}
+
+ /**
Apply the event to the database.
This function represents the public interface for applying an
@@ -2108,10 +2148,9 @@ public:
uint16 error_code;
my_thread_id thread_id;
/*
- For events created by Query_log_event::do_apply_event (and
- Load_log_event::do_apply_event()) we need the *original* thread
- id, to be able to log the event with the original (=master's)
- thread id (fix for BUG#1686).
+ For events created by Query_log_event::do_apply_event we need the
+ *original* thread id, to be able to log the event with the original
+ (=master's) thread id (fix for BUG#1686).
*/
ulong slave_proxy_id;
@@ -2135,12 +2174,6 @@ public:
'sql_mode', 'affected' etc. Sometimes 'value' must be a short string, so
its first byte is its length. For now the order of status vars is:
flags2 - sql_mode - catalog - autoinc - charset
- We should add the same thing to Load_log_event, but in fact
- LOAD DATA INFILE is going to be logged with a new type of event (logging of
- the plain text query), so Load_log_event would be frozen, so no need. The
- new way of logging LOAD DATA INFILE would use a derived class of
- Query_log_event, so automatically benefit from the work already done for
- status variables in Query_log_event.
*/
uint16 status_vars_len;
@@ -2157,6 +2190,8 @@ public:
bool sql_mode_inited;
bool charset_inited;
+ LEX_CSTRING character_set_collations;
+
uint32 flags2;
sql_mode_t sql_mode;
ulong auto_increment_increment, auto_increment_offset;
@@ -2173,16 +2208,6 @@ public:
/* Xid for the event, if such exists */
ulonglong xid;
/*
- Holds the original length of a Query_log_event that comes from a
- master of version < 5.0 (i.e., binlog_version < 4). When the IO
- thread writes the relay log, it augments the Query_log_event with a
- Q_MASTER_DATA_WRITTEN_CODE status_var that holds the original event
- length. This field is initialized to non-zero in the SQL thread when
- it reads this augmented event. SQL thread does not write
- Q_MASTER_DATA_WRITTEN_CODE to the slave's server binlog.
- */
- uint32 master_data_written;
- /*
A copy of Gtid event's extra flags that is relevant for two-phase
logged ALTER.
*/
@@ -2214,12 +2239,12 @@ public:
}
Log_event_type get_type_code() { return QUERY_EVENT; }
static int dummy_event(String *packet, ulong ev_offset,
- enum enum_binlog_checksum_alg checksum_alg);
+ enum_binlog_checksum_alg checksum_alg);
static int begin_event(String *packet, ulong ev_offset,
- enum enum_binlog_checksum_alg checksum_alg);
+ enum_binlog_checksum_alg checksum_alg);
#ifdef MYSQL_SERVER
- bool write();
- virtual bool write_post_header_for_derived() { return FALSE; }
+ bool write(Log_event_writer *writer);
+ virtual bool write_post_header_for_derived(Log_event_writer *writer) { return FALSE; }
#endif
bool is_valid() const { return query != 0; }
@@ -2240,7 +2265,7 @@ public: /* !!! Public in this patch to allow old usage */
uint32 q_len_arg);
static bool peek_is_commit_rollback(const uchar *event_start,
size_t event_len,
- enum enum_binlog_checksum_alg
+ enum_binlog_checksum_alg
checksum_alg);
int handle_split_alter_query_log_event(rpl_group_info *rgi,
bool &skip_error_check);
@@ -2299,7 +2324,7 @@ public:
ulong query_length,
bool using_trans, bool direct, bool suppress_use,
int error);
- virtual bool write();
+ virtual bool write(Log_event_writer *writer);
#endif
};
@@ -2341,412 +2366,6 @@ struct sql_ex_info
};
/**
- @class Load_log_event
-
- This log event corresponds to a "LOAD DATA INFILE" SQL query on the
- following form:
-
- @verbatim
- (1) USE db;
- (2) LOAD DATA [CONCURRENT] [LOCAL] INFILE 'file_name'
- (3) [REPLACE | IGNORE]
- (4) INTO TABLE 'table_name'
- (5) [FIELDS
- (6) [TERMINATED BY 'field_term']
- (7) [[OPTIONALLY] ENCLOSED BY 'enclosed']
- (8) [ESCAPED BY 'escaped']
- (9) ]
- (10) [LINES
- (11) [TERMINATED BY 'line_term']
- (12) [LINES STARTING BY 'line_start']
- (13) ]
- (14) [IGNORE skip_lines LINES]
- (15) (field_1, field_2, ..., field_n)@endverbatim
-
- @section Load_log_event_binary_format Binary Format
-
- The Post-Header consists of the following six components.
-
- <table>
- <caption>Post-Header for Load_log_event</caption>
-
- <tr>
- <th>Name</th>
- <th>Format</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>slave_proxy_id</td>
- <td>4 byte unsigned integer</td>
- <td>An integer identifying the client thread that issued the
- query. The id is unique per server. (Note, however, that two
- threads on different servers may have the same slave_proxy_id.)
- This is used when a client thread creates a temporary table local
- to the client. The slave_proxy_id is used to distinguish
- temporary tables that belong to different clients.
- </td>
- </tr>
-
- <tr>
- <td>exec_time</td>
- <td>4 byte unsigned integer</td>
- <td>The time from when the query started to when it was logged in
- the binlog, in seconds.</td>
- </tr>
-
- <tr>
- <td>skip_lines</td>
- <td>4 byte unsigned integer</td>
- <td>The number on line (14) above, if present, or 0 if line (14)
- is left out.
- </td>
- </tr>
-
- <tr>
- <td>table_name_len</td>
- <td>1 byte unsigned integer</td>
- <td>The length of 'table_name' on line (4) above.</td>
- </tr>
-
- <tr>
- <td>db_len</td>
- <td>1 byte unsigned integer</td>
- <td>The length of 'db' on line (1) above.</td>
- </tr>
-
- <tr>
- <td>num_fields</td>
- <td>4 byte unsigned integer</td>
- <td>The number n of fields on line (15) above.</td>
- </tr>
- </table>
-
- The Body contains the following components.
-
- <table>
- <caption>Body of Load_log_event</caption>
-
- <tr>
- <th>Name</th>
- <th>Format</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>sql_ex</td>
- <td>variable length</td>
-
- <td>Describes the part of the query on lines (3) and
- (5)&ndash;(13) above. More precisely, it stores the five strings
- (on lines) field_term (6), enclosed (7), escaped (8), line_term
- (11), and line_start (12); as well as a bitfield indicating the
- presence of the keywords REPLACE (3), IGNORE (3), and OPTIONALLY
- (7).
-
- The data is stored in one of two formats, called "old" and "new".
- The type field of Common-Header determines which of these two
- formats is used: type LOAD_EVENT means that the old format is
- used, and type NEW_LOAD_EVENT means that the new format is used.
- When MySQL writes a Load_log_event, it uses the new format if at
- least one of the five strings is two or more bytes long.
- Otherwise (i.e., if all strings are 0 or 1 bytes long), the old
- format is used.
-
- The new and old format differ in the way the five strings are
- stored.
-
- <ul>
- <li> In the new format, the strings are stored in the order
- field_term, enclosed, escaped, line_term, line_start. Each string
- consists of a length (1 byte), followed by a sequence of
- characters (0-255 bytes). Finally, a boolean combination of the
- following flags is stored in 1 byte: REPLACE_FLAG==0x4,
- IGNORE_FLAG==0x8, and OPT_ENCLOSED_FLAG==0x2. If a flag is set,
- it indicates the presence of the corresponding keyword in the SQL
- query.
-
- <li> In the old format, we know that each string has length 0 or
- 1. Therefore, only the first byte of each string is stored. The
- order of the strings is the same as in the new format. These five
- bytes are followed by the same 1 byte bitfield as in the new
- format. Finally, a 1 byte bitfield called empty_flags is stored.
- The low 5 bits of empty_flags indicate which of the five strings
- have length 0. For each of the following flags that is set, the
- corresponding string has length 0; for the flags that are not set,
- the string has length 1: FIELD_TERM_EMPTY==0x1,
- ENCLOSED_EMPTY==0x2, LINE_TERM_EMPTY==0x4, LINE_START_EMPTY==0x8,
- ESCAPED_EMPTY==0x10.
- </ul>
-
- Thus, the size of the new format is 6 bytes + the sum of the sizes
- of the five strings. The size of the old format is always 7
- bytes.
- </td>
- </tr>
-
- <tr>
- <td>field_lens</td>
- <td>num_fields 1 byte unsigned integers</td>
- <td>An array of num_fields integers representing the length of
- each field in the query. (num_fields is from the Post-Header).
- </td>
- </tr>
-
- <tr>
- <td>fields</td>
- <td>num_fields null-terminated strings</td>
- <td>An array of num_fields null-terminated strings, each
- representing a field in the query. (The trailing zero is
- redundant, since the length are stored in the num_fields array.)
- The total length of all strings equals to the sum of all
- field_lens, plus num_fields bytes for all the trailing zeros.
- </td>
- </tr>
-
- <tr>
- <td>table_name</td>
- <td>null-terminated string of length table_len+1 bytes</td>
- <td>The 'table_name' from the query, as a null-terminated string.
- (The trailing zero is actually redundant since the table_len is
- known from Post-Header.)
- </td>
- </tr>
-
- <tr>
- <td>db</td>
- <td>null-terminated string of length db_len+1 bytes</td>
- <td>The 'db' from the query, as a null-terminated string.
- (The trailing zero is actually redundant since the db_len is known
- from Post-Header.)
- </td>
- </tr>
-
- <tr>
- <td>file_name</td>
- <td>variable length string without trailing zero, extending to the
- end of the event (determined by the length field of the
- Common-Header)
- </td>
- <td>The 'file_name' from the query.
- </td>
- </tr>
-
- </table>
-
- @subsection Load_log_event_notes_on_previous_versions Notes on Previous Versions
-
- This event type is understood by current versions, but only
- generated by MySQL 3.23 and earlier.
-*/
-class Load_log_event: public Log_event
-{
-private:
-protected:
- int copy_log_event(const uchar *buf, ulong event_len,
- int body_offset,
- const Format_description_log_event* description_event);
-
-public:
- bool print_query(THD *thd, bool need_db, const char *cs, String *buf,
- my_off_t *fn_start, my_off_t *fn_end,
- const char *qualify_db);
- my_thread_id thread_id;
- ulong slave_proxy_id;
- uint32 table_name_len;
- /*
- No need to have a catalog, as these events can only come from 4.x.
- TODO: this may become false if Dmitri pushes his new LOAD DATA INFILE in
- 5.0 only (not in 4.x).
- */
- uint32 db_len;
- uint32 fname_len;
- uint32 num_fields;
- const char* fields;
- const uchar* field_lens;
- uint32 field_block_len;
-
- const char* table_name;
- const char* db;
- const char* fname;
- uint32 skip_lines;
- sql_ex_info sql_ex;
- bool local_fname;
- /**
- Indicates that this event corresponds to LOAD DATA CONCURRENT,
-
- @note Since Load_log_event event coming from the binary log
- lacks information whether LOAD DATA on master was concurrent
- or not, this flag is only set to TRUE for an auxiliary
- Load_log_event object which is used in mysql_load() to
- re-construct LOAD DATA statement from function parameters,
- for logging.
- */
- bool is_concurrent;
-
- /* fname doesn't point to memory inside Log_event::temp_buf */
- void set_fname_outside_temp_buf(const char *afname, size_t alen)
- {
- fname= afname;
- fname_len= (uint)alen;
- local_fname= TRUE;
- }
- /* fname doesn't point to memory inside Log_event::temp_buf */
- int check_fname_outside_temp_buf()
- {
- return local_fname;
- }
-
-#ifdef MYSQL_SERVER
- String field_lens_buf;
- String fields_buf;
-
- Load_log_event(THD* thd, const sql_exchange* ex, const char* db_arg,
- const char* table_name_arg,
- List<Item>& fields_arg,
- bool is_concurrent_arg,
- enum enum_duplicates handle_dup, bool ignore,
- bool using_trans);
- void set_fields(const char* db, List<Item> &fields_arg,
- Name_resolution_context *context);
- const char* get_db() { return db; }
-#ifdef HAVE_REPLICATION
- void pack_info(Protocol* protocol);
-#endif /* HAVE_REPLICATION */
-#else
- bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
- bool print(FILE* file, PRINT_EVENT_INFO* print_event_info, bool commented);
-#endif
-
- /*
- Note that for all the events related to LOAD DATA (Load_log_event,
- Create_file/Append/Exec/Delete, we pass description_event; however as
- logging of LOAD DATA is going to be changed in 4.1 or 5.0, this is only used
- for the common_header_len (post_header_len will not be changed).
- */
- Load_log_event(const uchar *buf, uint event_len,
- const Format_description_log_event* description_event);
- ~Load_log_event() = default;
- Log_event_type get_type_code()
- {
- return sql_ex.new_format() ? NEW_LOAD_EVENT: LOAD_EVENT;
- }
-#ifdef MYSQL_SERVER
- bool write_data_header();
- bool write_data_body();
-#endif
- bool is_valid() const { return table_name != 0; }
- int get_data_size()
- {
- return (table_name_len + db_len + 2 + fname_len
- + LOAD_HEADER_LEN
- + sql_ex.data_size() + field_block_len + num_fields);
- }
-
-public: /* !!! Public in this patch to allow old usage */
-#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_apply_event(rpl_group_info *rgi)
- {
- return do_apply_event(thd->slave_net,rgi,0);
- }
-
- int do_apply_event(NET *net, rpl_group_info *rgi,
- bool use_rli_only_for_errors);
-#endif
-};
-
-/**
- @class Start_log_event_v3
-
- Start_log_event_v3 is the Start_log_event of binlog format 3 (MySQL 3.23 and
- 4.x).
-
- Format_description_log_event derives from Start_log_event_v3; it is
- the Start_log_event of binlog format 4 (MySQL 5.0), that is, the
- event that describes the other events' Common-Header/Post-Header
- lengths. This event is sent by MySQL 5.0 whenever it starts sending
- a new binlog if the requested position is >4 (otherwise if ==4 the
- event will be sent naturally).
-
- @section Start_log_event_v3_binary_format Binary Format
-*/
-class Start_log_event_v3: public Log_event
-{
-public:
- /*
- If this event is at the start of the first binary log since server
- startup 'created' should be the timestamp when the event (and the
- binary log) was created. In the other case (i.e. this event is at
- the start of a binary log created by FLUSH LOGS or automatic
- rotation), 'created' should be 0. This "trick" is used by MySQL
- >=4.0.14 slaves to know whether they must drop stale temporary
- tables and whether they should abort unfinished transaction.
-
- Note that when 'created'!=0, it is always equal to the event's
- timestamp; indeed Start_log_event is written only in log.cc where
- the first constructor below is called, in which 'created' is set
- to 'when'. So in fact 'created' is a useless variable. When it is
- 0 we can read the actual value from timestamp ('when') and when it
- is non-zero we can read the same value from timestamp
- ('when'). Conclusion:
- - we use timestamp to print when the binlog was created.
- - we use 'created' only to know if this is a first binlog or not.
- In 3.23.57 we did not pay attention to this identity, so mysqlbinlog in
- 3.23.57 does not print 'created the_date' if created was zero. This is now
- fixed.
- */
- time_t created;
- uint16 binlog_version;
- char server_version[ST_SERVER_VER_LEN];
- /*
- We set this to 1 if we don't want to have the created time in the log,
- which is the case when we rollover to a new log.
- */
- bool dont_set_created;
-
-#ifdef MYSQL_SERVER
- Start_log_event_v3();
-#ifdef HAVE_REPLICATION
- void pack_info(Protocol* protocol);
-#endif /* HAVE_REPLICATION */
-#else
- Start_log_event_v3() = default;
- bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-#endif
-
- Start_log_event_v3(const uchar *buf, uint event_len,
- const Format_description_log_event* description_event);
- ~Start_log_event_v3() = default;
- Log_event_type get_type_code() { return START_EVENT_V3;}
- my_off_t get_header_len(my_off_t l __attribute__((unused)))
- { return LOG_EVENT_MINIMAL_HEADER_LEN; }
-#ifdef MYSQL_SERVER
- bool write();
-#endif
- bool is_valid() const { return server_version[0] != 0; }
- int get_data_size()
- {
- return START_V3_HEADER_LEN; //no variable-sized part
- }
-
-protected:
-#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_apply_event(rpl_group_info *rgi);
- virtual enum_skip_reason do_shall_skip(rpl_group_info*)
- {
- /*
- Events from ourself should be skipped, but they should not
- decrease the slave skip counter.
- */
- if (this->server_id == global_system_variables.server_id)
- return Log_event::EVENT_SKIP_IGNORE;
- else
- return Log_event::EVENT_SKIP_NOT;
- }
-#endif
-};
-
-/**
@class Start_encryption_log_event
Start_encryption_log_event marks the beginning of encrypted data (all events
@@ -2770,14 +2389,14 @@ public:
memcpy(nonce, nonce_arg, BINLOG_NONCE_LENGTH);
}
- bool write_data_body()
+ bool write_data_body(Log_event_writer *writer)
{
uchar scheme_buf= crypto_scheme;
uchar key_version_buf[BINLOG_KEY_VERSION_LENGTH];
int4store(key_version_buf, key_version);
- return write_data(&scheme_buf, sizeof(scheme_buf)) ||
- write_data(key_version_buf, sizeof(key_version_buf)) ||
- write_data(nonce, BINLOG_NONCE_LENGTH);
+ return write_data(writer, &scheme_buf, sizeof(scheme_buf)) ||
+ write_data(writer, key_version_buf, sizeof(key_version_buf)) ||
+ write_data(writer, nonce, BINLOG_NONCE_LENGTH);
}
#else
bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
@@ -2856,10 +2475,41 @@ public:
@section Format_description_log_event_binary_format Binary Format
*/
-class Format_description_log_event: public Start_log_event_v3
+class Format_description_log_event: public Log_event
{
public:
/*
+ If this event is at the start of the first binary log since server
+ startup 'created' should be the timestamp when the event (and the
+ binary log) was created. In the other case (i.e. this event is at
+ the start of a binary log created by FLUSH LOGS or automatic
+ rotation), 'created' should be 0. This "trick" is used by MySQL
+ >=4.0.14 slaves to know whether they must drop stale temporary
+ tables and whether they should abort unfinished transaction.
+
+ Note that when 'created'!=0, it is always equal to the event's
+ timestamp; indeed Start_log_event is written only in log.cc where
+ the first constructor below is called, in which 'created' is set
+ to 'when'. So in fact 'created' is a useless variable. When it is
+ 0 we can read the actual value from timestamp ('when') and when it
+ is non-zero we can read the same value from timestamp
+ ('when'). Conclusion:
+ - we use timestamp to print when the binlog was created.
+ - we use 'created' only to know if this is a first binlog or not.
+ In 3.23.57 we did not pay attention to this identity, so mysqlbinlog in
+ 3.23.57 does not print 'created the_date' if created was zero. This is now
+ fixed.
+ */
+ time_t created;
+ uint16 binlog_version;
+ char server_version[ST_SERVER_VER_LEN];
+ /*
+ We set this to 1 if we don't want to have the created time in the log,
+ which is the case when we rollover to a new log.
+ */
+ bool dont_set_created;
+
+ /*
The size of the fixed header which _all_ events have
(for binlogs written by this version, this is equal to
LOG_EVENT_HEADER_LEN), except FORMAT_DESCRIPTION_EVENT and ROTATE_EVENT
@@ -2867,8 +2517,8 @@ public:
*/
uint8 common_header_len;
uint8 number_of_event_types;
- /*
- The list of post-headers' lengths followed
+ /*
+ The list of post-headers' lengths followed
by the checksum alg description byte
*/
uint8 *post_header_len;
@@ -2887,8 +2537,15 @@ public:
master_version_split server_version_split;
const uint8 *event_type_permutation;
uint32 options_written_to_bin_log;
+ /*
+ The checksum algorithm used in the binlog or relaylog following this
+ Format_description_event. Or BINLOG_CHECKSUM_ALG_UNDEF for a
+ Format_description_event which is not part of a binlog or relaylog file.
+ */
+ enum_binlog_checksum_alg used_checksum_alg;
- Format_description_log_event(uint8 binlog_ver, const char* server_ver=0);
+ Format_description_log_event(uint8 binlog_ver, const char* server_ver= 0,
+ enum_binlog_checksum_alg checksum_alg= BINLOG_CHECKSUM_ALG_UNDEF);
Format_description_log_event(const uchar *buf, uint event_len,
const Format_description_log_event
*description_event);
@@ -2897,14 +2554,18 @@ public:
my_free(post_header_len);
}
Log_event_type get_type_code() { return FORMAT_DESCRIPTION_EVENT;}
+ my_off_t get_header_len(my_off_t) { return LOG_EVENT_MINIMAL_HEADER_LEN; }
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
+#ifdef HAVE_REPLICATION
+ void pack_info(Protocol* protocol);
+#endif /* HAVE_REPLICATION */
+#else
+ bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
#endif
bool header_is_valid() const
{
- return ((common_header_len >= ((binlog_version==1) ? OLD_HEADER_LEN :
- LOG_EVENT_MINIMAL_HEADER_LEN)) &&
- (post_header_len != NULL));
+ return common_header_len >= LOG_EVENT_MINIMAL_HEADER_LEN && post_header_len;
}
bool is_valid() const
@@ -3011,7 +2672,7 @@ Intvar_log_event(THD* thd_arg,uchar type_arg, ulonglong val_arg,
const char* get_var_type_name();
int get_data_size() { return 9; /* sizeof(type) + sizeof(val) */;}
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
#endif
bool is_valid() const { return 1; }
bool is_part_of_group() { return 1; }
@@ -3091,7 +2752,7 @@ class Rand_log_event: public Log_event
Log_event_type get_type_code() { return RAND_EVENT;}
int get_data_size() { return 16; /* sizeof(ulonglong) * 2*/ }
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
#endif
bool is_valid() const { return 1; }
bool is_part_of_group() { return 1; }
@@ -3116,7 +2777,7 @@ public:
const Format_description_log_event *description_event):
Log_event(buf, description_event) {}
- ~Xid_apply_log_event() {}
+ ~Xid_apply_log_event() = default;
bool is_valid() const { return 1; }
private:
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
@@ -3171,7 +2832,7 @@ public:
Log_event_type get_type_code() { return XID_EVENT;}
int get_data_size() { return sizeof(xid); }
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
#endif
private:
@@ -3312,7 +2973,7 @@ public:
#endif
XA_prepare_log_event(const uchar *buf,
const Format_description_log_event *description_event);
- ~XA_prepare_log_event() {}
+ ~XA_prepare_log_event() = default;
Log_event_type get_type_code() { return XA_PREPARE_LOG_EVENT; }
bool is_valid() const { return m_xid.formatID != -1; }
int get_data_size()
@@ -3321,7 +2982,7 @@ public:
}
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
#endif
private:
@@ -3384,7 +3045,7 @@ public:
~User_var_log_event() = default;
Log_event_type get_type_code() { return USER_VAR_EVENT;}
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
/*
Getter and setter for deferred User-event.
Returns true if the event is not applied directly
@@ -3536,7 +3197,7 @@ public:
int get_data_size() { return ident_len + ROTATE_HEADER_LEN;}
bool is_valid() const { return new_log_ident != 0; }
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
#endif
private:
@@ -3570,7 +3231,7 @@ public:
int get_data_size() { return binlog_file_len + BINLOG_CHECKPOINT_HEADER_LEN;}
bool is_valid() const { return binlog_file_name != 0; }
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
enum_skip_reason do_shall_skip(rpl_group_info *rgi);
#endif
};
@@ -3744,11 +3405,11 @@ public:
}
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
static int make_compatible_event(String *packet, bool *need_dummy_event,
- ulong ev_offset, enum enum_binlog_checksum_alg checksum_alg);
+ ulong ev_offset, enum_binlog_checksum_alg checksum_alg);
static bool peek(const uchar *event_start, size_t event_len,
- enum enum_binlog_checksum_alg checksum_alg,
+ enum_binlog_checksum_alg checksum_alg,
uint32 *domain_id, uint32 *server_id, uint64 *seq_no,
uchar *flags2, const Format_description_log_event *fdev);
#endif
@@ -3862,93 +3523,17 @@ public:
bool is_valid() const { return list != NULL; }
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
bool to_packet(String *packet);
- bool write();
+ bool write(Log_event_writer *writer);
virtual int do_apply_event(rpl_group_info *rgi);
enum_skip_reason do_shall_skip(rpl_group_info *rgi);
#endif
static bool peek(const char *event_start, size_t event_len,
- enum enum_binlog_checksum_alg checksum_alg,
+ enum_binlog_checksum_alg checksum_alg,
rpl_gtid **out_gtid_list, uint32 *out_list_len,
const Format_description_log_event *fdev);
};
-/* the classes below are for the new LOAD DATA INFILE logging */
-
-/**
- @class Create_file_log_event
-
- @section Create_file_log_event_binary_format Binary Format
-*/
-
-class Create_file_log_event: public Load_log_event
-{
-protected:
- /*
- Pretend we are Load event, so we can write out just
- our Load part - used on the slave when writing event out to
- SQL_LOAD-*.info file
- */
- bool fake_base;
-public:
- uchar *block;
- const uchar *event_buf;
- uint block_len;
- uint file_id;
- bool inited_from_old;
-
-#ifdef MYSQL_SERVER
- Create_file_log_event(THD* thd, sql_exchange* ex, const char* db_arg,
- const char* table_name_arg,
- List<Item>& fields_arg,
- bool is_concurrent_arg,
- enum enum_duplicates handle_dup, bool ignore,
- uchar* block_arg, uint block_len_arg,
- bool using_trans);
-#ifdef HAVE_REPLICATION
- void pack_info(Protocol* protocol);
-#endif /* HAVE_REPLICATION */
-#else
- bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
- bool print(FILE* file, PRINT_EVENT_INFO* print_event_info,
- bool enable_local);
-#endif
-
- Create_file_log_event(const uchar *buf, uint event_len,
- const Format_description_log_event* description_event);
- ~Create_file_log_event()
- {
- my_free((void*) event_buf);
- }
-
- Log_event_type get_type_code()
- {
- return fake_base ? Load_log_event::get_type_code() : CREATE_FILE_EVENT;
- }
- int get_data_size()
- {
- return (fake_base ? Load_log_event::get_data_size() :
- Load_log_event::get_data_size() +
- 4 + 1 + block_len);
- }
- bool is_valid() const { return inited_from_old || block != 0; }
-#ifdef MYSQL_SERVER
- bool write_data_header();
- bool write_data_body();
- /*
- Cut out Create_file extensions and
- write it as Load event - used on the slave
- */
- bool write_base();
-#endif
-
-private:
-#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_apply_event(rpl_group_info *rgi);
-#endif
-};
-
-
/**
@class Append_block_log_event
@@ -3968,9 +3553,7 @@ public:
used by Append_block_log_event::write()), so it can't be read in
the Append_block_log_event(const uchar *buf, int event_len)
constructor. In other words, 'db' is used only for filtering by
- binlog-*-db rules. Create_file_log_event is different: it's 'db'
- (which is inherited from Load_log_event) is written to the binlog
- and can be re-read.
+ binlog-*-db rules.
*/
const char* db;
@@ -3993,7 +3576,7 @@ public:
int get_data_size() { return block_len + APPEND_BLOCK_HEADER_LEN ;}
bool is_valid() const { return block != 0; }
#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
const char* get_db() { return db; }
#endif
@@ -4034,47 +3617,7 @@ public:
int get_data_size() { return DELETE_FILE_HEADER_LEN ;}
bool is_valid() const { return file_id != 0; }
#ifdef MYSQL_SERVER
- bool write();
- const char* get_db() { return db; }
-#endif
-
-private:
-#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_apply_event(rpl_group_info *rgi);
-#endif
-};
-
-
-/**
- @class Execute_load_log_event
-
- @section Delete_file_log_event_binary_format Binary Format
-*/
-
-class Execute_load_log_event: public Log_event
-{
-public:
- uint file_id;
- const char* db; /* see comment in Append_block_log_event */
-
-#ifdef MYSQL_SERVER
- Execute_load_log_event(THD* thd, const char* db_arg, bool using_trans);
-#ifdef HAVE_REPLICATION
- void pack_info(Protocol* protocol);
-#endif /* HAVE_REPLICATION */
-#else
- bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
-#endif
-
- Execute_load_log_event(const uchar *buf, uint event_len,
- const Format_description_log_event
- *description_event);
- ~Execute_load_log_event() = default;
- Log_event_type get_type_code() { return EXEC_LOAD_EVENT;}
- int get_data_size() { return EXEC_LOAD_HEADER_LEN ;}
- bool is_valid() const { return file_id != 0; }
-#ifdef MYSQL_SERVER
- bool write();
+ bool write(Log_event_writer *writer);
const char* get_db() { return db; }
#endif
@@ -4174,7 +3717,7 @@ public:
ulong get_post_header_size_for_derived();
#ifdef MYSQL_SERVER
- bool write_post_header_for_derived();
+ bool write_post_header_for_derived(Log_event_writer *writer);
#endif
private:
@@ -4211,7 +3754,7 @@ public:
bool is_valid() const { return 1; }
};
#endif
-char *str_to_hex(char *to, const char *from, size_t len);
+char *str_to_hex(char *to, const uchar *from, size_t len);
/**
@class Annotate_rows_log_event
@@ -4242,8 +3785,8 @@ public:
virtual bool is_part_of_group() { return 1; }
#ifndef MYSQL_CLIENT
- virtual bool write_data_header();
- virtual bool write_data_body();
+ virtual bool write_data_header(Log_event_writer *writer);
+ virtual bool write_data_body(Log_event_writer *writer);
#endif
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
@@ -4270,6 +3813,8 @@ private:
bool m_used_query_txt;
};
+class table_def;
+
/**
@class Table_map_log_event
@@ -4909,8 +4454,8 @@ public:
virtual int get_data_size() { return (uint) m_data_size; }
#ifdef MYSQL_SERVER
virtual int save_field_metadata();
- virtual bool write_data_header();
- virtual bool write_data_body();
+ virtual bool write_data_header(Log_event_writer *writer);
+ virtual bool write_data_body(Log_event_writer *writer);
virtual const char *get_db() { return m_dbnam; }
#endif
@@ -4922,6 +4467,7 @@ public:
virtual bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
#endif
+ table_def get_table_def();
private:
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
@@ -5065,7 +4611,7 @@ public:
typedef uint16 flag_set;
/* Special constants representing sets of flags */
- enum
+ enum
{
RLE_NO_FLAGS = 0U
};
@@ -5079,13 +4625,19 @@ public:
Log_event_type get_type_code() { return m_type; } /* Specific type (_V1 etc) */
enum_logged_status logged_status() { return LOGGED_ROW_EVENT; }
- virtual Log_event_type get_general_type_code() = 0; /* General rows op type, no version */
+ virtual Log_event_type get_general_type_code() const = 0; /* General rows op type, no version */
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
virtual void pack_info(Protocol *protocol);
#endif
#ifdef MYSQL_CLIENT
+ struct Field_info
+ {
+ const uchar *pos; // Point to a field in before or after image
+ size_t length; // Length of the field.
+ };
+
/* not for direct call, each derived has its own ::print() */
virtual bool print(FILE *file, PRINT_EVENT_INFO *print_event_info)= 0;
void change_to_flashback_event(PRINT_EVENT_INFO *print_event_info, uchar *rows_buff, Log_event_type ev_type);
@@ -5094,12 +4646,11 @@ public:
size_t print_verbose_one_row(IO_CACHE *file, table_def *td,
PRINT_EVENT_INFO *print_event_info,
MY_BITMAP *cols_bitmap,
- const uchar *ptr, const uchar *prefix,
- const my_bool no_fill_output= 0); // if no_fill_output=1, then print result is unnecessary
+ const uchar *ptr, const uchar *prefix);
size_t calc_row_event_length(table_def *td,
- PRINT_EVENT_INFO *print_event_info,
MY_BITMAP *cols_bitmap,
- const uchar *value);
+ const uchar *value,
+ Field_info *fields);
void count_row_events(PRINT_EVENT_INFO *print_event_info);
#endif
@@ -5107,7 +4658,7 @@ public:
#ifdef MYSQL_SERVER
int add_row_data(uchar *data, size_t length)
{
- return do_add_row_data(data,length);
+ return do_add_row_data(data,length);
}
#endif
@@ -5168,9 +4719,9 @@ public:
#endif
#ifdef MYSQL_SERVER
- virtual bool write_data_header();
- virtual bool write_data_body();
- virtual bool write_compressed();
+ virtual bool write_data_header(Log_event_writer *writer);
+ virtual bool write_data_body(Log_event_writer *writer);
+ virtual bool write_compressed(Log_event_writer *writer);
virtual const char *get_db() { return m_table->s->db.str; }
#endif
/*
@@ -5190,7 +4741,7 @@ public:
const uchar* get_extra_row_data() const { return m_extra_row_data; }
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual uint8 get_trg_event_map()= 0;
+ virtual uint8 get_trg_event_map() const = 0;
inline bool do_invoke_trigger()
{
@@ -5226,7 +4777,7 @@ protected:
#endif
ulonglong m_table_id; /* Table ID */
MY_BITMAP m_cols; /* Bitmap denoting columns available */
- ulong m_width; /* The width of the columns bitmap */
+ uint m_width; /* The width of the columns bitmap */
/*
Bitmap for columns available in the after image, if present. These
fields are only available for Update_rows events. Observe that the
@@ -5261,12 +4812,14 @@ protected:
/* helper functions */
+
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
const uchar *m_curr_row; /* Start of the row being processed */
const uchar *m_curr_row_end; /* One-after the end of the current row */
uchar *m_key; /* Buffer to keep key value during searches */
KEY *m_key_info; /* Pointer to KEY info for m_key_nr */
uint m_key_nr; /* Key number */
+ uint m_usable_key_parts; /* A number of key_parts suited to lookup */
bool master_had_triggers; /* set after tables opening */
/*
@@ -5314,7 +4867,9 @@ protected:
friend class Rows_log_event;
};
- int find_key(); // Find a best key to use in find_row()
+ int find_key(const rpl_group_info *); // Find a best key to use in find_row()
+ uint find_key_parts(const KEY *key) const;
+ bool use_pk_position() const;
int find_row(rpl_group_info *);
int write_row(rpl_group_info *, const bool);
int update_sequence();
@@ -5327,7 +4882,7 @@ protected:
ASSERT_OR_RETURN_ERROR(m_curr_row <= m_rows_end, HA_ERR_CORRUPT_EVENT);
return ::unpack_row(rgi, m_table, m_width, m_curr_row, cols,
- &m_curr_row_end, &m_master_reclength, m_rows_end);
+ &m_curr_row_end, &m_master_reclength, m_rows_end);
}
// Unpack the current row into m_table->record[0]
@@ -5337,10 +4892,9 @@ protected:
ASSERT_OR_RETURN_ERROR(m_curr_row <= m_rows_end, HA_ERR_CORRUPT_EVENT);
return ::unpack_row(rgi, m_table, m_width, m_curr_row, &m_cols,
- &m_curr_row_end, &m_master_reclength, m_rows_end);
+ &m_curr_row_end, &m_master_reclength, m_rows_end);
}
- bool process_triggers(trg_event_type event,
- trg_action_time_type time_type,
+ bool process_triggers(trg_event_type event, trg_action_time_type time_type,
bool old_row_is_record1);
/**
@@ -5365,8 +4919,8 @@ private:
virtual int do_update_pos(rpl_group_info *rgi);
virtual enum_skip_reason do_shall_skip(rpl_group_info *rgi);
- /*
- Primitive to prepare for a sequence of row executions.
+ /**
+ @brief Primitive to prepare for a sequence of row executions.
DESCRIPTION
@@ -5376,16 +4930,15 @@ private:
space for any buffers that are needed for the two member
functions mentioned above.
- RETURN VALUE
-
+ @return
The member function will return 0 if all went OK, or a non-zero
error code otherwise.
*/
- virtual
- int do_before_row_operations(const Slave_reporting_capability *const log) = 0;
+ virtual
+ int do_before_row_operations(const rpl_group_info *) = 0;
- /*
- Primitive to clean up after a sequence of row executions.
+ /**
+ @brief Primitive to clean up after a sequence of row executions.
DESCRIPTION
@@ -5398,11 +4951,10 @@ private:
function is successful, it should return the error code given in the argument.
*/
virtual
- int do_after_row_operations(const Slave_reporting_capability *const log,
- int error) = 0;
+ int do_after_row_operations(int error) = 0;
- /*
- Primitive to do the actual execution necessary for a row.
+ /**
+ @brief Primitive to do the actual execution necessary for a row.
DESCRIPTION
The member function will do the actual execution needed to handle a row.
@@ -5410,14 +4962,12 @@ private:
m_curr_row_end should point at the next row (one byte after the end
of the current row).
- RETURN VALUE
+ @return
0 if execution succeeded, 1 if execution failed.
*/
virtual int do_exec_row(rpl_group_info *rli) = 0;
#endif /* defined(MYSQL_SERVER) && defined(HAVE_REPLICATION) */
-
- friend class Old_rows_log_event;
};
/**
@@ -5432,11 +4982,8 @@ private:
class Write_rows_log_event : public Rows_log_event
{
public:
- enum
- {
- /* Support interface to THD::binlog_prepare_pending_rows_event */
- TYPE_CODE = WRITE_ROWS_EVENT
- };
+ /* Support interface to THD::binlog_prepare_pending_rows_event */
+ static constexpr Log_event_type TYPE_CODE = WRITE_ROWS_EVENT;
#if defined(MYSQL_SERVER)
Write_rows_log_event(THD*, TABLE*, ulonglong table_id,
@@ -5448,31 +4995,39 @@ public:
#endif
#if defined(MYSQL_SERVER)
static bool binlog_row_logging_function(THD *thd, TABLE *table,
- bool is_transactional,
+ Event_log *bin_log,
+ binlog_cache_data *cache_data,
+ bool is_transactional, ulong,
const uchar *before_record
__attribute__((unused)),
const uchar *after_record)
{
DBUG_ASSERT(!table->versioned(VERS_TRX_ID));
- return thd->binlog_write_row(table, is_transactional, after_record);
+ return thd->binlog_write_row(table, bin_log, cache_data, is_transactional,
+ after_record);
}
#endif
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- uint8 get_trg_event_map();
+ uint8 get_trg_event_map() const override;
+
+ void online_alter_update_row_count(ha_rows *rows) const override
+ {
+ *rows += m_row_count;
+ }
#endif
private:
- virtual Log_event_type get_general_type_code() { return (Log_event_type)TYPE_CODE; }
+ Log_event_type get_general_type_code() const override { return TYPE_CODE; }
#ifdef MYSQL_CLIENT
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
+ bool print(FILE *file, PRINT_EVENT_INFO *print_event_info) override;
#endif
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_before_row_operations(const Slave_reporting_capability *const);
- virtual int do_after_row_operations(const Slave_reporting_capability *const,int);
- virtual int do_exec_row(rpl_group_info *);
+ int do_before_row_operations(const rpl_group_info *) override;
+ int do_after_row_operations(int) override;
+ int do_exec_row(rpl_group_info *) override;
#endif
};
@@ -5482,7 +5037,7 @@ public:
#if defined(MYSQL_SERVER)
Write_rows_compressed_log_event(THD*, TABLE*, ulonglong table_id,
bool is_transactional);
- virtual bool write();
+ virtual bool write(Log_event_writer *writer);
#endif
#ifdef HAVE_REPLICATION
Write_rows_compressed_log_event(const uchar *buf, uint event_len,
@@ -5490,7 +5045,7 @@ public:
#endif
private:
#if defined(MYSQL_CLIENT)
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
+ bool print(FILE *file, PRINT_EVENT_INFO *print_event_info) override;
#endif
};
@@ -5509,11 +5064,8 @@ private:
class Update_rows_log_event : public Rows_log_event
{
public:
- enum
- {
- /* Support interface to THD::binlog_prepare_pending_rows_event */
- TYPE_CODE = UPDATE_ROWS_EVENT
- };
+ /* Support interface to THD::binlog_prepare_pending_rows_event */
+ static constexpr Log_event_type TYPE_CODE = UPDATE_ROWS_EVENT;
#ifdef MYSQL_SERVER
Update_rows_log_event(THD*, TABLE*, ulonglong table_id,
@@ -5522,7 +5074,7 @@ public:
void init(MY_BITMAP const *cols);
#endif
- virtual ~Update_rows_log_event();
+ ~Update_rows_log_event() override;
#ifdef HAVE_REPLICATION
Update_rows_log_event(const uchar *buf, uint event_len,
@@ -5531,36 +5083,40 @@ public:
#ifdef MYSQL_SERVER
static bool binlog_row_logging_function(THD *thd, TABLE *table,
+ Event_log *bin_log,
+ binlog_cache_data *cache_data,
bool is_transactional,
+ ulong row_image,
const uchar *before_record,
const uchar *after_record)
{
DBUG_ASSERT(!table->versioned(VERS_TRX_ID));
- return thd->binlog_update_row(table, is_transactional,
+ return thd->binlog_update_row(table, bin_log, cache_data, is_transactional,
+ (enum_binlog_row_image)row_image,
before_record, after_record);
}
#endif
- virtual bool is_valid() const
+ bool is_valid() const override
{
return Rows_log_event::is_valid() && m_cols_ai.bitmap;
}
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- uint8 get_trg_event_map();
+ uint8 get_trg_event_map() const override;
#endif
protected:
- virtual Log_event_type get_general_type_code() { return (Log_event_type)TYPE_CODE; }
+ Log_event_type get_general_type_code() const override { return TYPE_CODE; }
#ifdef MYSQL_CLIENT
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
+ bool print(FILE *file, PRINT_EVENT_INFO *print_event_info) override;
#endif
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_before_row_operations(const Slave_reporting_capability *const);
- virtual int do_after_row_operations(const Slave_reporting_capability *const,int);
- virtual int do_exec_row(rpl_group_info *);
+ int do_before_row_operations(const rpl_group_info *) override;
+ int do_after_row_operations(int) override;
+ int do_exec_row(rpl_group_info *) override;
#endif /* defined(MYSQL_SERVER) && defined(HAVE_REPLICATION) */
};
@@ -5570,7 +5126,7 @@ public:
#if defined(MYSQL_SERVER)
Update_rows_compressed_log_event(THD*, TABLE*, ulonglong table_id,
bool is_transactional);
- virtual bool write();
+ virtual bool write(Log_event_writer *writer);
#endif
#ifdef HAVE_REPLICATION
Update_rows_compressed_log_event(const uchar *buf, uint event_len,
@@ -5578,7 +5134,7 @@ public:
#endif
private:
#if defined(MYSQL_CLIENT)
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
+ bool print(FILE *file, PRINT_EVENT_INFO *print_event_info) override;
#endif
};
@@ -5605,11 +5161,8 @@ private:
class Delete_rows_log_event : public Rows_log_event
{
public:
- enum
- {
- /* Support interface to THD::binlog_prepare_pending_rows_event */
- TYPE_CODE = DELETE_ROWS_EVENT
- };
+ /* Support interface to THD::binlog_prepare_pending_rows_event */
+ static constexpr Log_event_type TYPE_CODE = DELETE_ROWS_EVENT;
#ifdef MYSQL_SERVER
Delete_rows_log_event(THD*, TABLE*, ulonglong, bool is_transactional);
@@ -5620,32 +5173,41 @@ public:
#endif
#ifdef MYSQL_SERVER
static bool binlog_row_logging_function(THD *thd, TABLE *table,
+ Event_log *bin_log,
+ binlog_cache_data *cache_data,
bool is_transactional,
+ ulong row_image,
const uchar *before_record,
const uchar *after_record
__attribute__((unused)))
{
DBUG_ASSERT(!table->versioned(VERS_TRX_ID));
- return thd->binlog_delete_row(table, is_transactional,
+ return thd->binlog_delete_row(table, bin_log, cache_data, is_transactional,
+ (enum_binlog_row_image)row_image,
before_record);
}
#endif
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- uint8 get_trg_event_map();
+ uint8 get_trg_event_map() const override;
+
+ void online_alter_update_row_count(ha_rows *rows) const override
+ {
+ *rows -= m_row_count;
+ }
#endif
protected:
- virtual Log_event_type get_general_type_code() { return (Log_event_type)TYPE_CODE; }
+ Log_event_type get_general_type_code() const override { return TYPE_CODE; }
#ifdef MYSQL_CLIENT
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
+ bool print(FILE *file, PRINT_EVENT_INFO *print_event_info) override;
#endif
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
- virtual int do_before_row_operations(const Slave_reporting_capability *const);
- virtual int do_after_row_operations(const Slave_reporting_capability *const,int);
- virtual int do_exec_row(rpl_group_info *);
+ int do_before_row_operations(const rpl_group_info *const) override;
+ int do_after_row_operations(int) override;
+ int do_exec_row(rpl_group_info *) override;
#endif
};
@@ -5655,7 +5217,7 @@ public:
#if defined(MYSQL_SERVER)
Delete_rows_compressed_log_event(THD*, TABLE*, ulonglong,
bool is_transactional);
- virtual bool write();
+ virtual bool write(Log_event_writer *writer);
#endif
#ifdef HAVE_REPLICATION
Delete_rows_compressed_log_event(const uchar *buf, uint event_len,
@@ -5663,13 +5225,10 @@ public:
#endif
private:
#if defined(MYSQL_CLIENT)
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
+ bool print(FILE *file, PRINT_EVENT_INFO *print_event_info) override;
#endif
};
-
-#include "log_event_old.h"
-
/**
@class Incident_log_event
@@ -5748,8 +5307,8 @@ public:
#ifdef MYSQL_SERVER
void pack_info(Protocol*);
- virtual bool write_data_header();
- virtual bool write_data_body();
+ virtual bool write_data_header(Log_event_writer *writer);
+ virtual bool write_data_body(Log_event_writer *writer);
#endif
Incident_log_event(const uchar *buf, uint event_len,
@@ -5886,9 +5445,7 @@ private:
inline int Log_event_writer::write(Log_event *ev)
{
- ev->writer= this;
- int res= ev->write();
- IF_DBUG(ev->writer= 0,); // writer must be set before every Log_event::write
+ int res= ev->write(this);
add_status(ev->logged_status());
return res;
}
@@ -5905,7 +5462,7 @@ bool slave_execute_deferred_events(THD *thd);
bool event_that_should_be_ignored(const uchar *buf);
bool event_checksum_test(uchar *buf, ulong event_len,
enum_binlog_checksum_alg alg);
-enum enum_binlog_checksum_alg get_checksum_alg(const uchar *buf, ulong len);
+enum_binlog_checksum_alg get_checksum_alg(const uchar *buf, ulong len);
extern TYPELIB binlog_checksum_typelib;
#ifdef WITH_WSREP
enum Log_event_type wsrep_peak_event(rpl_group_info *rgi, ulonglong* event_size);
diff --git a/sql/log_event_client.cc b/sql/log_event_client.cc
index d9f7d52a..94ae2559 100644
--- a/sql/log_event_client.cc
+++ b/sql/log_event_client.cc
@@ -346,14 +346,14 @@ bool Log_event::print_header(IO_CACHE* file,
/* print the checksum */
- if (checksum_alg != BINLOG_CHECKSUM_ALG_OFF &&
- checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
+ if (read_checksum_alg != BINLOG_CHECKSUM_ALG_OFF &&
+ read_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
{
char checksum_buf[BINLOG_CHECKSUM_LEN * 2 + 4]; // to fit to "%p "
size_t const bytes_written=
- my_snprintf(checksum_buf, sizeof(checksum_buf), "0x%08x ", crc);
+ my_snprintf(checksum_buf, sizeof(checksum_buf), "0x%08x ", read_checksum_value);
if (my_b_printf(file, "%s ", get_type(&binlog_checksum_typelib,
- checksum_alg)) ||
+ read_checksum_alg)) ||
my_b_printf(file, checksum_buf, bytes_written))
goto err;
}
@@ -951,8 +951,7 @@ size_t
Rows_log_event::print_verbose_one_row(IO_CACHE *file, table_def *td,
PRINT_EVENT_INFO *print_event_info,
MY_BITMAP *cols_bitmap,
- const uchar *value, const uchar *prefix,
- const my_bool no_fill_output)
+ const uchar *value, const uchar *prefix)
{
const uchar *value0= value;
const uchar *null_bits= value;
@@ -972,8 +971,7 @@ Rows_log_event::print_verbose_one_row(IO_CACHE *file, table_def *td,
value+= (bitmap_bits_set(cols_bitmap) + 7) / 8;
- if (!no_fill_output)
- if (my_b_printf(file, "%s", prefix))
+ if (my_b_printf(file, "%s", prefix))
goto err;
for (uint i= 0; i < (uint)td->size(); i ++)
@@ -985,25 +983,22 @@ Rows_log_event::print_verbose_one_row(IO_CACHE *file, table_def *td,
if (bitmap_is_set(cols_bitmap, i) == 0)
continue;
- if (!no_fill_output)
- if (my_b_printf(file, "### @%d=", static_cast<int>(i + 1)))
- goto err;
+ if (my_b_printf(file, "### @%d=", static_cast<int>(i + 1)))
+ goto err;
if (!is_null)
{
size_t fsize= td->calc_field_size((uint)i, (uchar*) value);
if (value + fsize > m_rows_end)
{
- if (!no_fill_output)
- if (my_b_printf(file, "***Corrupted replication event was detected."
- " Not printing the value***\n"))
- goto err;
+ if (my_b_printf(file, "***Corrupted replication event was detected."
+ " Not printing the value***\n"))
+ goto err;
value+= fsize;
return 0;
}
}
- if (!no_fill_output)
{
size= log_event_print_value(file, print_event_info, is_null? NULL: value,
td->type(i), td->field_metadata(i),
@@ -1055,16 +1050,6 @@ Rows_log_event::print_verbose_one_row(IO_CACHE *file, table_def *td,
}
#endif
}
- else
- {
- IO_CACHE tmp_cache;
- open_cached_file(&tmp_cache, NULL, NULL, 0, MYF(MY_WME | MY_NABP));
- size= log_event_print_value(&tmp_cache, print_event_info,
- is_null ? NULL: value,
- td->type(i), td->field_metadata(i),
- typestr, sizeof(typestr));
- close_cached_file(&tmp_cache);
- }
if (!size)
goto err;
@@ -1072,7 +1057,7 @@ Rows_log_event::print_verbose_one_row(IO_CACHE *file, table_def *td,
if (!is_null)
value+= size;
- if (print_event_info->verbose > 1 && !no_fill_output)
+ if (print_event_info->verbose > 1)
{
if (my_b_write(file, (uchar*)" /* ", 4) ||
my_b_printf(file, "%s ", typestr) ||
@@ -1083,9 +1068,8 @@ Rows_log_event::print_verbose_one_row(IO_CACHE *file, table_def *td,
goto err;
}
- if (!no_fill_output)
- if (my_b_write_byte(file, '\n'))
- goto err;
+ if (my_b_write_byte(file, '\n'))
+ goto err;
null_bit_index++;
}
@@ -1095,6 +1079,42 @@ err:
return 0;
}
+/**
+ Construct a row image according to field information.
+
+ @param[in] cols_bitmap The bitmap of row columns
+ @param[in] fields Values of columns used to construct a row image.
+ @buf[out] buf Where the row image stored.
+ */
+static uchar *fill_row_image(const MY_BITMAP *cols_bitmap,
+ const Rows_log_event::Field_info *fields,
+ uchar *buf)
+{
+ uchar *null_bits= buf;
+ uint nulls_bit_index= 0;
+ size_t null_bytes= (bitmap_bits_set(cols_bitmap) + 7) / 8;
+
+ memset(null_bits, 0, null_bytes);
+ buf+= null_bytes;;
+
+ for (uint i= 0; i < cols_bitmap->n_bits; i ++)
+ {
+ if (!bitmap_is_set(cols_bitmap, i)) continue;
+
+ if (fields[i].pos) // Field is not null
+ {
+ memcpy(buf, fields[i].pos, fields[i].length);
+ buf+= fields[i].length;
+ }
+ else
+ {
+ // set the null bit
+ null_bits[nulls_bit_index / 8]|= (1 << (nulls_bit_index % 8));
+ }
+ nulls_bit_index++;
+ }
+ return buf;
+}
/**
Exchange the SET part and WHERE part for the Update events.
@@ -1111,8 +1131,9 @@ void Rows_log_event::change_to_flashback_event(PRINT_EVENT_INFO *print_event_inf
Table_map_log_event *map;
table_def *td;
DYNAMIC_ARRAY rows_arr;
- uchar *swap_buff1;
uchar *rows_pos= rows_buff + m_rows_before_size;
+ Field_info *ai_fields= nullptr;
+ Field_info *bi_fields= nullptr;
if (!(map= print_event_info->m_table_map.get_table(m_table_id)) ||
!(td= map->create_table_def()))
@@ -1124,66 +1145,96 @@ void Rows_log_event::change_to_flashback_event(PRINT_EVENT_INFO *print_event_inf
(void) my_init_dynamic_array(PSI_NOT_INSTRUMENTED, &rows_arr, sizeof(LEX_STRING), 8, 8, MYF(0));
+ if (get_general_type_code() == UPDATE_ROWS_EVENT ||
+ get_general_type_code() == UPDATE_ROWS_EVENT_V1)
+ {
+ if (!bitmap_is_set_all(&m_cols_ai))
+ {
+ ai_fields= (Field_info *) my_malloc(PSI_NOT_INSTRUMENTED,
+ sizeof(Field_info) * td->size(),
+ MYF(MY_ZEROFILL));
+ bi_fields= (Field_info *) my_malloc(PSI_NOT_INSTRUMENTED,
+ sizeof(Field_info) * td->size(),
+ MYF(MY_ZEROFILL));
+ if (!ai_fields || !bi_fields)
+ {
+ fprintf(stderr, "\nError: Out of memory. "
+ "Could not exchange to flashback event.\n");
+ exit(1);
+ }
+ }
+ }
+
for (uchar *value= m_rows_buf; value < m_rows_end; )
{
uchar *start_pos= value;
size_t length1= 0;
- if (!(length1= print_verbose_one_row(NULL, td, print_event_info,
- &m_cols, value,
- (const uchar*) "", TRUE)))
+ if (!(length1= calc_row_event_length(td, &m_cols, value, bi_fields)))
{
fprintf(stderr, "\nError row length: %zu\n", length1);
exit(1);
}
value+= length1;
- swap_buff1= (uchar *) my_malloc(PSI_NOT_INSTRUMENTED, length1, MYF(0));
- if (!swap_buff1)
- {
- fprintf(stderr, "\nError: Out of memory. "
- "Could not exchange to flashback event.\n");
- exit(1);
- }
- memcpy(swap_buff1, start_pos, length1);
-
// For Update_event, we have the second part
size_t length2= 0;
if (ev_type == UPDATE_ROWS_EVENT ||
ev_type == UPDATE_ROWS_EVENT_V1)
{
- if (!(length2= print_verbose_one_row(NULL, td, print_event_info,
- &m_cols, value,
- (const uchar*) "", TRUE)))
+ if (!(length2= calc_row_event_length(td, &m_cols_ai, value, ai_fields)))
{
fprintf(stderr, "\nError row length: %zu\n", length2);
exit(1);
}
value+= length2;
-
- void *swap_buff2= my_malloc(PSI_NOT_INSTRUMENTED, length2, MYF(0));
- if (!swap_buff2)
- {
- fprintf(stderr, "\nError: Out of memory. "
- "Could not exchange to flashback event.\n");
- exit(1);
- }
- memcpy(swap_buff2, start_pos + length1, length2); // WHERE part
-
- /* Swap SET and WHERE part */
- memcpy(start_pos, swap_buff2, length2);
- memcpy(start_pos + length2, swap_buff1, length1);
- my_free(swap_buff2);
}
- my_free(swap_buff1);
-
/* Copying one row into a buff, and pushing into the array */
LEX_STRING one_row;
one_row.length= length1 + length2;
- one_row.str= (char *) my_malloc(PSI_NOT_INSTRUMENTED, one_row.length, MYF(0));
- memcpy(one_row.str, start_pos, one_row.length);
- if (one_row.str == NULL || push_dynamic(&rows_arr, (uchar *) &one_row))
+ one_row.str= (char *) my_malloc(PSI_NOT_INSTRUMENTED, one_row.length, MYF(0));
+ if (!one_row.str)
+ {
+ fprintf(stderr, "\nError: Out of memory. "
+ "Could not exchange to flashback event.\n");
+ exit(1);
+ }
+
+ if (length2 != 0) // It has before and after image
+ {
+ if (!bi_fields)
+ {
+ // Both bi and ai inclues all columns, Swap WHERE and SET Part
+ memcpy(one_row.str, start_pos + length1, length2);
+ memcpy(one_row.str+length2, start_pos, length1);
+ }
+ else
+ {
+ for (uint i= 0; i < (uint)td->size(); i ++)
+ {
+ // swap after and before image columns
+ if (bitmap_is_set(&m_cols, i) && bitmap_is_set(&m_cols_ai, i))
+ {
+ Field_info tmp_field= bi_fields[i];
+ bi_fields[i]= ai_fields[i];
+ ai_fields[i]= tmp_field;
+ }
+ }
+
+ // Recreate the before and after image
+ uchar *pos= (uchar*)one_row.str;
+ pos= fill_row_image(&m_cols, bi_fields, pos);
+ pos= fill_row_image(&m_cols_ai, ai_fields, pos);
+ assert(pos == (uchar*)one_row.str + one_row.length);
+ }
+ }
+ else
+ {
+ memcpy(one_row.str, start_pos, one_row.length);
+ }
+
+ if (push_dynamic(&rows_arr, (uchar *) &one_row))
{
fprintf(stderr, "\nError: Out of memory. "
"Could not push flashback event into array.\n");
@@ -1203,6 +1254,11 @@ void Rows_log_event::change_to_flashback_event(PRINT_EVENT_INFO *print_event_inf
delete_dynamic(&rows_arr);
end:
+ if (bi_fields)
+ {
+ my_free(bi_fields);
+ my_free(ai_fields);
+ }
delete td;
}
@@ -1323,12 +1379,22 @@ static size_t calc_field_event_length(const uchar *ptr, uint type, uint meta)
return 0;
}
+/**
+ It parses a row image and returns its length and information of
+ columns if 'fields' is not null.
+
+ @param[in] td Table definition of the row image
+ @param[in] cols_bitmap It marks the columns present in the row image
+ @param[in] value The row image which will be parsed
+ @param[out] fields Returns field information of the parsed row image.
+ @return length of the parsed row image if succeeds, otherwise 0 is returned.
+ */
size_t
Rows_log_event::calc_row_event_length(table_def *td,
- PRINT_EVENT_INFO *print_event_info,
MY_BITMAP *cols_bitmap,
- const uchar *value)
+ const uchar *value,
+ Field_info *fields)
{
const uchar *value0= value;
const uchar *null_bits= value;
@@ -1361,8 +1427,19 @@ Rows_log_event::calc_row_event_length(table_def *td,
if (!(size= calc_field_event_length(value, td->type(i),
td->field_metadata(i))))
return 0;
+
+ if (fields)
+ {
+ fields[i].pos= value;
+ fields[i].length= size;
+ }
+
value+= size;
}
+ else if (fields)
+ {
+ fields[i].pos= NULL;
+ }
null_bit_index++;
}
return value - value0;
@@ -1409,8 +1486,7 @@ void Rows_log_event::count_row_events(PRINT_EVENT_INFO *print_event_info)
print_event_info->row_events++;
/* Print the first image */
- if (!(length= calc_row_event_length(td, print_event_info,
- &m_cols, value)))
+ if (!(length= calc_row_event_length(td, &m_cols, value, NULL)))
break;
value+= length;
DBUG_ASSERT(value <= m_rows_end);
@@ -1418,8 +1494,7 @@ void Rows_log_event::count_row_events(PRINT_EVENT_INFO *print_event_info)
/* Print the second image (for UPDATE only) */
if (row_events == 2)
{
- if (!(length= calc_row_event_length(td, print_event_info,
- &m_cols_ai, value)))
+ if (!(length= calc_row_event_length(td, &m_cols_ai, value, NULL)))
break;
value+= length;
DBUG_ASSERT(value <= m_rows_end);
@@ -1466,7 +1541,7 @@ bool Rows_log_event::print_verbose(IO_CACHE *file,
*/
const int buff_len= 2 + (256 * 2) + 1;
char buff[buff_len];
- str_to_hex(buff, (const char*) &m_extra_row_data[EXTRA_ROW_INFO_HDR_BYTES],
+ str_to_hex(buff, &m_extra_row_data[EXTRA_ROW_INFO_HDR_BYTES],
extra_payload_len);
if (my_b_printf(file, "%s", buff))
goto err;
@@ -1605,8 +1680,8 @@ bool Log_event::print_base64(IO_CACHE* file,
uint tmp_size= size;
Rows_log_event *ev= NULL;
Log_event_type ev_type = (enum Log_event_type) ptr[EVENT_TYPE_OFFSET];
- if (checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF &&
- checksum_alg != BINLOG_CHECKSUM_ALG_OFF)
+ if (read_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF &&
+ read_checksum_alg != BINLOG_CHECKSUM_ALG_OFF)
tmp_size-= BINLOG_CHECKSUM_LEN; // checksum is displayed through the header
switch (ev_type) {
case WRITE_ROWS_EVENT:
@@ -1673,8 +1748,8 @@ bool Log_event::print_base64(IO_CACHE* file,
Rows_log_event *ev= NULL;
Log_event_type et= (Log_event_type) ptr[EVENT_TYPE_OFFSET];
- if (checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF &&
- checksum_alg != BINLOG_CHECKSUM_ALG_OFF)
+ if (read_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF &&
+ read_checksum_alg != BINLOG_CHECKSUM_ALG_OFF)
size-= BINLOG_CHECKSUM_LEN; // checksum is displayed through the header
switch (et)
@@ -1983,6 +2058,38 @@ bool Query_log_event::print_query_header(IO_CACHE* file,
memcpy(print_event_info->charset, charset, 6);
print_event_info->charset_inited= 1;
}
+
+ if (character_set_collations.length)
+ {
+ Charset_collation_map_st map;
+ size_t length= map.from_binary(character_set_collations.str,
+ character_set_collations.length);
+ if (length == character_set_collations.length)
+ {
+ Binary_string str;
+ size_t nbytes= map.text_format_nbytes_needed();
+ if (str.alloc(nbytes))
+ goto err;
+ size_t text_length= map.print((char*) str.ptr(), nbytes);
+ str.length(text_length);
+ /*
+ my_b_printf() does not seem to support '%.*s'
+ so append a \0 terminator.
+ */
+ str.append_char('\0');
+ if (my_b_printf(file, "SET @@session.character_set_collations='%s'%s\n",
+ str.ptr(), print_event_info->delimiter))
+ goto err;
+ }
+ else
+ {
+ if (my_b_printf(file,
+ "/* SET @@session.character_set_collations='%s' */\n",
+ "<format not recognized>"))
+ goto err;
+ }
+ }
+
if (time_zone_len)
{
if (memcmp(print_event_info->time_zone_str,
@@ -2105,9 +2212,9 @@ err:
}
-bool Start_log_event_v3::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
+bool Format_description_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
{
- DBUG_ENTER("Start_log_event_v3::print");
+ DBUG_ENTER("Format_description_log_event::print");
Write_on_release_cache cache(&print_event_info->head_cache, file,
Write_on_release_cache::FLUSH_F);
@@ -2189,122 +2296,6 @@ bool Start_encryption_log_event::print(FILE* file,
}
-bool Load_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
-{
- return print(file, print_event_info, 0);
-}
-
-
-bool Load_log_event::print(FILE* file_arg, PRINT_EVENT_INFO* print_event_info,
- bool commented)
-{
- Write_on_release_cache cache(&print_event_info->head_cache, file_arg);
- bool different_db= 1;
- DBUG_ENTER("Load_log_event::print");
-
- if (!print_event_info->short_form)
- {
- if (print_header(&cache, print_event_info, FALSE) ||
- my_b_printf(&cache, "\tQuery\tthread_id=%ld\texec_time=%ld\n",
- thread_id, exec_time))
- goto err;
- }
-
- if (db)
- {
- /*
- If the database is different from the one of the previous statement, we
- need to print the "use" command, and we update the last_db.
- But if commented, the "use" is going to be commented so we should not
- update the last_db.
- */
- if ((different_db= memcmp(print_event_info->db, db, db_len + 1)) &&
- !commented)
- memcpy(print_event_info->db, db, db_len + 1);
- }
-
- if (db && db[0] && different_db)
- if (my_b_printf(&cache, "%suse %`s%s\n",
- commented ? "# " : "",
- db, print_event_info->delimiter))
- goto err;
-
- if (flags & LOG_EVENT_THREAD_SPECIFIC_F)
- if (my_b_printf(&cache,"%sSET @@session.pseudo_thread_id=%lu%s\n",
- commented ? "# " : "", (ulong)thread_id,
- print_event_info->delimiter))
- goto err;
- if (my_b_printf(&cache, "%sLOAD DATA ",
- commented ? "# " : ""))
- goto err;
- if (check_fname_outside_temp_buf())
- if (my_b_write_string(&cache, "LOCAL "))
- goto err;
- if (my_b_printf(&cache, "INFILE '%-*s' ", fname_len, fname))
- goto err;
-
- if (sql_ex.opt_flags & REPLACE_FLAG)
- {
- if (my_b_write_string(&cache, "REPLACE "))
- goto err;
- }
- else if (sql_ex.opt_flags & IGNORE_FLAG)
- if (my_b_write_string(&cache, "IGNORE "))
- goto err;
-
- if (my_b_printf(&cache, "INTO TABLE `%s`", table_name) ||
- my_b_write_string(&cache, " FIELDS TERMINATED BY ") ||
- pretty_print_str(&cache, sql_ex.field_term, sql_ex.field_term_len))
- goto err;
-
- if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
- if (my_b_write_string(&cache, " OPTIONALLY "))
- goto err;
- if (my_b_write_string(&cache, " ENCLOSED BY ") ||
- pretty_print_str(&cache, sql_ex.enclosed, sql_ex.enclosed_len) ||
- my_b_write_string(&cache, " ESCAPED BY ") ||
- pretty_print_str(&cache, sql_ex.escaped, sql_ex.escaped_len) ||
- my_b_write_string(&cache, " LINES TERMINATED BY ") ||
- pretty_print_str(&cache, sql_ex.line_term, sql_ex.line_term_len))
- goto err;
-
- if (sql_ex.line_start)
- {
- if (my_b_write_string(&cache," STARTING BY ") ||
- pretty_print_str(&cache, sql_ex.line_start, sql_ex.line_start_len))
- goto err;
- }
- if ((long) skip_lines > 0)
- if (my_b_printf(&cache, " IGNORE %ld LINES", (long) skip_lines))
- goto err;
-
- if (num_fields)
- {
- uint i;
- const char* field = fields;
- if (my_b_write_string(&cache, " ("))
- goto err;
- for (i = 0; i < num_fields; i++)
- {
- if (i)
- if (my_b_write_byte(&cache, ','))
- goto err;
- if (my_b_printf(&cache, "%`s", field))
- goto err;
- field += field_lens[i] + 1;
- }
- if (my_b_write_byte(&cache, ')'))
- goto err;
- }
-
- if (my_b_printf(&cache, "%s\n", print_event_info->delimiter))
- goto err;
- DBUG_RETURN(cache.flush_data());
-err:
- DBUG_RETURN(1);
-}
-
-
bool Rotate_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
{
if (print_event_info->short_form)
@@ -2549,7 +2540,7 @@ bool User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
hex_str= (char *) my_malloc(PSI_NOT_INSTRUMENTED, 2 * val_len + 1 + 3, MYF(MY_WME));
if (!hex_str)
goto err;
- str_to_hex(hex_str, val, val_len);
+ str_to_hex(hex_str, (uchar*)val, val_len);
/*
For proper behaviour when mysqlbinlog|mysql, we need to explicitly
specify the variable's collation. It will however cause problems when
@@ -2626,61 +2617,6 @@ bool Stop_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
#endif
-bool Create_file_log_event::print(FILE* file,
- PRINT_EVENT_INFO* print_event_info,
- bool enable_local)
-{
- if (print_event_info->short_form)
- {
- if (enable_local && check_fname_outside_temp_buf())
- return Load_log_event::print(file, print_event_info);
- return 0;
- }
-
- Write_on_release_cache cache(&print_event_info->head_cache, file);
-
- if (enable_local)
- {
- if (Load_log_event::print(file, print_event_info,
- !check_fname_outside_temp_buf()))
- goto err;
-
- /**
- reduce the size of io cache so that the write function is called
- for every call to my_b_printf().
- */
- DBUG_EXECUTE_IF ("simulate_create_event_write_error",
- {(&cache)->write_pos= (&cache)->write_end;
- DBUG_SET("+d,simulate_file_write_error");});
- /*
- That one is for "file_id: etc" below: in mysqlbinlog we want the #, in
- SHOW BINLOG EVENTS we don't.
- */
- if (my_b_write_byte(&cache, '#'))
- goto err;
- }
-
- if (my_b_printf(&cache, " file_id: %d block_len: %d\n", file_id, block_len))
- goto err;
-
- return cache.flush_data();
-err:
- return 1;
-
-}
-
-
-bool Create_file_log_event::print(FILE* file,
- PRINT_EVENT_INFO* print_event_info)
-{
- return print(file, print_event_info, 0);
-}
-
-
-/*
- Append_block_log_event::print()
-*/
-
bool Append_block_log_event::print(FILE* file,
PRINT_EVENT_INFO* print_event_info)
{
@@ -2700,10 +2636,6 @@ err:
}
-/*
- Delete_file_log_event::print()
-*/
-
bool Delete_file_log_event::print(FILE* file,
PRINT_EVENT_INFO* print_event_info)
{
@@ -2719,25 +2651,6 @@ bool Delete_file_log_event::print(FILE* file,
return cache.flush_data();
}
-/*
- Execute_load_log_event::print()
-*/
-
-bool Execute_load_log_event::print(FILE* file,
- PRINT_EVENT_INFO* print_event_info)
-{
- if (print_event_info->short_form)
- return 0;
-
- Write_on_release_cache cache(&print_event_info->head_cache, file);
-
- if (print_header(&cache, print_event_info, FALSE) ||
- my_b_printf(&cache, "\n#Exec_load: file_id=%d\n",
- file_id))
- return 1;
-
- return cache.flush_data();
-}
bool Execute_load_query_log_event::print(FILE* file,
PRINT_EVENT_INFO* print_event_info)
@@ -2995,10 +2908,6 @@ err:
where fragments are represented by a pair of indexed user
"one shot" variables.
- @note
- If any changes made don't forget to duplicate them to
- Old_rows_log_event as long as it's supported.
-
@param file pointer to IO_CACHE
@param print_event_info pointer to print_event_info specializing
what out of and how to print the event
@@ -3673,7 +3582,7 @@ bool Write_rows_compressed_log_event::print(FILE *file,
ulong len;
bool is_malloc = false;
if(!row_log_event_uncompress(glob_description_event,
- checksum_alg == BINLOG_CHECKSUM_ALG_CRC32,
+ read_checksum_alg == BINLOG_CHECKSUM_ALG_CRC32,
temp_buf, UINT_MAX32, NULL, 0, &is_malloc,
&new_buf, &len))
{
@@ -3710,7 +3619,7 @@ bool Delete_rows_compressed_log_event::print(FILE *file,
ulong len;
bool is_malloc = false;
if(!row_log_event_uncompress(glob_description_event,
- checksum_alg == BINLOG_CHECKSUM_ALG_CRC32,
+ read_checksum_alg == BINLOG_CHECKSUM_ALG_CRC32,
temp_buf, UINT_MAX32, NULL, 0, &is_malloc,
&new_buf, &len))
{
@@ -3747,7 +3656,7 @@ Update_rows_compressed_log_event::print(FILE *file,
ulong len;
bool is_malloc= false;
if(!row_log_event_uncompress(glob_description_event,
- checksum_alg == BINLOG_CHECKSUM_ALG_CRC32,
+ read_checksum_alg == BINLOG_CHECKSUM_ALG_CRC32,
temp_buf, UINT_MAX32, NULL, 0, &is_malloc,
&new_buf, &len))
{
diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc
deleted file mode 100644
index 3ae832c0..00000000
--- a/sql/log_event_old.cc
+++ /dev/null
@@ -1,2749 +0,0 @@
-/* Copyright (c) 2007, 2019, Oracle and/or its affiliates.
- Copyright (c) 2009, 2019, MariaDB
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
-
-#include "mariadb.h"
-#include "sql_priv.h"
-#ifndef MYSQL_CLIENT
-#include "unireg.h"
-#endif
-#include "log_event.h"
-#ifndef MYSQL_CLIENT
-#include "sql_cache.h" // QUERY_CACHE_FLAGS_SIZE
-#include "sql_base.h" // close_tables_for_reopen
-#include "key.h" // key_copy
-#include "lock.h" // mysql_unlock_tables
-#include "rpl_rli.h"
-#include "rpl_utility.h"
-#endif
-#include "log_event_old.h"
-#include "rpl_record_old.h"
-#include "transaction.h"
-#ifdef WITH_WSREP
-#include "wsrep_mysqld.h"
-#endif /* WITH_WSREP */
-
-PSI_memory_key key_memory_log_event_old;
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-
-// Old implementation of do_apply_event()
-int
-Old_rows_log_event::do_apply_event(Old_rows_log_event *ev, rpl_group_info *rgi)
-{
- DBUG_ENTER("Old_rows_log_event::do_apply_event(st_relay_log_info*)");
- int error= 0;
- THD *ev_thd= ev->thd;
- uchar const *row_start= ev->m_rows_buf;
- const Relay_log_info *rli= rgi->rli;
-
- /*
- If m_table_id == UINT32_MAX, then we have a dummy event that does not
- contain any data. In that case, we just remove all tables in the
- tables_to_lock list, close the thread tables, and return with
- success.
- */
- if (ev->m_table_id == UINT32_MAX)
- {
- /*
- This one is supposed to be set: just an extra check so that
- nothing strange has happened.
- */
- DBUG_ASSERT(ev->get_flags(Old_rows_log_event::STMT_END_F));
-
- rgi->slave_close_thread_tables(ev_thd);
- ev_thd->clear_error();
- DBUG_RETURN(0);
- }
-
- /*
- 'ev_thd' has been set by exec_relay_log_event(), just before calling
- do_apply_event(). We still check here to prevent future coding
- errors.
- */
- DBUG_ASSERT(rgi->thd == ev_thd);
-
- /*
- If there is no locks taken, this is the first binrow event seen
- after the table map events. We should then lock all the tables
- used in the transaction and proceed with execution of the actual
- event.
- */
- if (!ev_thd->lock)
- {
- /*
- Lock_tables() reads the contents of ev_thd->lex, so they must be
- initialized.
-
- We also call the THD::reset_for_next_command(), since this
- is the logical start of the next "statement". Note that this
- call might reset the value of current_stmt_binlog_format, so
- we need to do any changes to that value after this function.
- */
- delete_explain_query(thd->lex);
- lex_start(ev_thd);
- ev_thd->reset_for_next_command();
-
- /*
- This is a row injection, so we flag the "statement" as
- such. Note that this code is called both when the slave does row
- injections and when the BINLOG statement is used to do row
- injections.
- */
- ev_thd->lex->set_stmt_row_injection();
-
- if (unlikely(open_and_lock_tables(ev_thd, rgi->tables_to_lock, FALSE, 0)))
- {
- if (ev_thd->is_error())
- {
- /*
- Error reporting borrowed from Query_log_event with many excessive
- simplifications.
- We should not honour --slave-skip-errors at this point as we are
- having severe errors which should not be skipped.
- */
- rli->report(ERROR_LEVEL, ev_thd->get_stmt_da()->sql_errno(), NULL,
- "Error '%s' on opening tables",
- ev_thd->get_stmt_da()->message());
- ev_thd->is_slave_error= 1;
- }
- DBUG_RETURN(1);
- }
-
- /*
- When the open and locking succeeded, we check all tables to
- ensure that they still have the correct type.
- */
-
- {
- TABLE_LIST *table_list_ptr= rgi->tables_to_lock;
- for (uint i=0 ; table_list_ptr&& (i< rgi->tables_to_lock_count);
- table_list_ptr= table_list_ptr->next_global, i++)
- {
- /*
- Please see comment in log_event.cc-Rows_log_event::do_apply_event()
- function for the explanation of the below if condition
- */
- if (table_list_ptr->parent_l)
- continue;
- /*
- We can use a down cast here since we know that every table added
- to the tables_to_lock is a RPL_TABLE_LIST(or child table which is
- skipped above).
- */
- RPL_TABLE_LIST *ptr=static_cast<RPL_TABLE_LIST*>(table_list_ptr);
- DBUG_ASSERT(ptr->m_tabledef_valid);
- TABLE *conv_table;
- if (!ptr->m_tabledef.compatible_with(thd, rgi, ptr->table, &conv_table))
- {
- ev_thd->is_slave_error= 1;
- rgi->slave_close_thread_tables(ev_thd);
- DBUG_RETURN(Old_rows_log_event::ERR_BAD_TABLE_DEF);
- }
- DBUG_PRINT("debug", ("Table: %s.%s is compatible with master"
- " - conv_table: %p",
- ptr->table->s->db.str,
- ptr->table->s->table_name.str, conv_table));
- ptr->m_conv_table= conv_table;
- }
- }
-
- /*
- ... and then we add all the tables to the table map and remove
- them from tables to lock.
-
- We also invalidate the query cache for all the tables, since
- they will now be changed.
-
- TODO [/Matz]: Maybe the query cache should not be invalidated
- here? It might be that a table is not changed, even though it
- was locked for the statement. We do know that each
- Old_rows_log_event contain at least one row, so after processing one
- Old_rows_log_event, we can invalidate the query cache for the
- associated table.
- */
- TABLE_LIST *ptr= rgi->tables_to_lock;
- for (uint i=0; ptr && (i < rgi->tables_to_lock_count); ptr= ptr->next_global, i++)
- {
- /*
- Please see comment in log_event.cc-Rows_log_event::do_apply_event()
- function for the explanation of the below if condition
- */
- if (ptr->parent_l)
- continue;
- rgi->m_table_map.set_table(ptr->table_id, ptr->table);
- }
-#ifdef HAVE_QUERY_CACHE
- query_cache.invalidate_locked_for_write(thd, rgi->tables_to_lock);
-#endif
- }
-
- TABLE* table= rgi->m_table_map.get_table(ev->m_table_id);
-
- if (table)
- {
- /*
- table == NULL means that this table should not be replicated
- (this was set up by Table_map_log_event::do_apply_event()
- which tested replicate-* rules).
- */
-
- /*
- It's not needed to set_time() but
- 1) it continues the property that "Time" in SHOW PROCESSLIST shows how
- much slave is behind
- 2) it will be needed when we allow replication from a table with no
- TIMESTAMP column to a table with one.
- So we call set_time(), like in SBR. Presently it changes nothing.
- */
-#ifdef WITH_WSREP
- if (!wsrep_thd_is_applying(thd))
-#endif
- ev_thd->set_time(ev->when, ev->when_sec_part);
- /*
- There are a few flags that are replicated with each row event.
- Make sure to set/clear them before executing the main body of
- the event.
- */
- if (ev->get_flags(Old_rows_log_event::NO_FOREIGN_KEY_CHECKS_F))
- ev_thd->variables.option_bits|= OPTION_NO_FOREIGN_KEY_CHECKS;
- else
- ev_thd->variables.option_bits&= ~OPTION_NO_FOREIGN_KEY_CHECKS;
-
- if (ev->get_flags(Old_rows_log_event::RELAXED_UNIQUE_CHECKS_F))
- ev_thd->variables.option_bits|= OPTION_RELAXED_UNIQUE_CHECKS;
- else
- ev_thd->variables.option_bits&= ~OPTION_RELAXED_UNIQUE_CHECKS;
- /* A small test to verify that objects have consistent types */
- DBUG_ASSERT(sizeof(ev_thd->variables.option_bits) == sizeof(OPTION_RELAXED_UNIQUE_CHECKS));
-
- table->rpl_write_set= table->write_set;
-
- error= do_before_row_operations(table);
- while (error == 0 && row_start < ev->m_rows_end)
- {
- uchar const *row_end= NULL;
- if (unlikely((error= do_prepare_row(ev_thd, rgi, table, row_start,
- &row_end))))
- break; // We should perform the after-row operation even in
- // the case of error
-
- DBUG_ASSERT(row_end != NULL); // cannot happen
- DBUG_ASSERT(row_end <= ev->m_rows_end);
-
- /* in_use can have been set to NULL in close_tables_for_reopen */
- THD* old_thd= table->in_use;
- if (!table->in_use)
- table->in_use= ev_thd;
- error= do_exec_row(table);
- table->in_use = old_thd;
- switch (error)
- {
- /* Some recoverable errors */
- case HA_ERR_RECORD_CHANGED:
- case HA_ERR_KEY_NOT_FOUND: /* Idempotency support: OK if
- tuple does not exist */
- error= 0;
- case 0:
- break;
-
- default:
- rli->report(ERROR_LEVEL, ev_thd->get_stmt_da()->sql_errno(), NULL,
- "Error in %s event: row application failed. %s",
- ev->get_type_str(),
- ev_thd->is_error() ? ev_thd->get_stmt_da()->message() : "");
- thd->is_slave_error= 1;
- break;
- }
-
- row_start= row_end;
- }
- DBUG_EXECUTE_IF("stop_slave_middle_group",
- const_cast<Relay_log_info*>(rli)->abort_slave= 1;);
- error= do_after_row_operations(table, error);
- }
-
- if (unlikely(error))
- { /* error has occurred during the transaction */
- rli->report(ERROR_LEVEL, ev_thd->get_stmt_da()->sql_errno(), NULL,
- "Error in %s event: error during transaction execution "
- "on table %s.%s. %s",
- ev->get_type_str(), table->s->db.str,
- table->s->table_name.str,
- ev_thd->is_error() ? ev_thd->get_stmt_da()->message() : "");
-
- /*
- If one day we honour --skip-slave-errors in row-based replication, and
- the error should be skipped, then we would clear mappings, rollback,
- close tables, but the slave SQL thread would not stop and then may
- assume the mapping is still available, the tables are still open...
- So then we should clear mappings/rollback/close here only if this is a
- STMT_END_F.
- For now we code, knowing that error is not skippable and so slave SQL
- thread is certainly going to stop.
- rollback at the caller along with sbr.
- */
- ev_thd->reset_current_stmt_binlog_format_row();
- rgi->cleanup_context(ev_thd, error);
- ev_thd->is_slave_error= 1;
- DBUG_RETURN(error);
- }
-
- DBUG_RETURN(0);
-}
-#endif
-
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-
-/*
- Check if there are more UNIQUE keys after the given key.
-*/
-static int
-last_uniq_key(TABLE *table, uint keyno)
-{
- while (++keyno < table->s->keys)
- if (table->key_info[keyno].flags & HA_NOSAME)
- return 0;
- return 1;
-}
-
-
-/*
- Compares table->record[0] and table->record[1]
-
- Returns TRUE if different.
-*/
-static bool record_compare(TABLE *table)
-{
- bool result= FALSE;
- if (table->s->blob_fields + table->s->varchar_fields == 0)
- {
- result= cmp_record(table,record[1]);
- goto record_compare_exit;
- }
-
- /* Compare null bits */
- if (memcmp(table->null_flags,
- table->null_flags+table->s->rec_buff_length,
- table->s->null_bytes))
- {
- result= TRUE; // Diff in NULL value
- goto record_compare_exit;
- }
-
- /* Compare updated fields */
- for (Field **ptr=table->field ; *ptr ; ptr++)
- {
- if ((*ptr)->cmp_binary_offset(table->s->rec_buff_length))
- {
- result= TRUE;
- goto record_compare_exit;
- }
- }
-
-record_compare_exit:
- return result;
-}
-
-
-/*
- Copy "extra" columns from record[1] to record[0].
-
- Copy the extra fields that are not present on the master but are
- present on the slave from record[1] to record[0]. This is used
- after fetching a record that are to be updated, either inside
- replace_record() or as part of executing an update_row().
- */
-static int
-copy_extra_record_fields(TABLE *table,
- size_t master_reclength,
- my_ptrdiff_t master_fields)
-{
- DBUG_ENTER("copy_extra_record_fields(table, master_reclen, master_fields)");
- DBUG_PRINT("info", ("Copying to %p "
- "from field %lu at offset %lu "
- "to field %d at offset %lu",
- table->record[0],
- (ulong) master_fields, (ulong) master_reclength,
- table->s->fields, table->s->reclength));
- /*
- Copying the extra fields of the slave that does not exist on
- master into record[0] (which are basically the default values).
- */
-
- if (table->s->fields < (uint) master_fields)
- DBUG_RETURN(0);
-
- DBUG_ASSERT(master_reclength <= table->s->reclength);
- if (master_reclength < table->s->reclength)
- memcpy(table->record[0] + master_reclength,
- table->record[1] + master_reclength,
- table->s->reclength - master_reclength);
-
- /*
- Bit columns are special. We iterate over all the remaining
- columns and copy the "extra" bits to the new record. This is
- not a very good solution: it should be refactored on
- opportunity.
-
- REFACTORING SUGGESTION (Matz). Introduce a member function
- similar to move_field_offset() called copy_field_offset() to
- copy field values and implement it for all Field subclasses. Use
- this function to copy data from the found record to the record
- that are going to be inserted.
-
- The copy_field_offset() function need to be a virtual function,
- which in this case will prevent copying an entire range of
- fields efficiently.
- */
- {
- Field **field_ptr= table->field + master_fields;
- for ( ; *field_ptr ; ++field_ptr)
- {
- /*
- Set the null bit according to the values in record[1]
- */
- if ((*field_ptr)->maybe_null() &&
- (*field_ptr)->is_null_in_record(reinterpret_cast<uchar*>(table->record[1])))
- (*field_ptr)->set_null();
- else
- (*field_ptr)->set_notnull();
-
- /*
- Do the extra work for special columns.
- */
- switch ((*field_ptr)->real_type())
- {
- default:
- /* Nothing to do */
- break;
-
- case MYSQL_TYPE_BIT:
- Field_bit *f= static_cast<Field_bit*>(*field_ptr);
- if (f->bit_len > 0)
- {
- my_ptrdiff_t const offset= table->record[1] - table->record[0];
- uchar const bits=
- get_rec_bits(f->bit_ptr + offset, f->bit_ofs, f->bit_len);
- set_rec_bits(bits, f->bit_ptr, f->bit_ofs, f->bit_len);
- }
- break;
- }
- }
- }
- DBUG_RETURN(0); // All OK
-}
-
-
-/*
- Replace the provided record in the database.
-
- SYNOPSIS
- replace_record()
- thd Thread context for writing the record.
- table Table to which record should be written.
- master_reclength
- Offset to first column that is not present on the master,
- alternatively the length of the record on the master
- side.
-
- RETURN VALUE
- Error code on failure, 0 on success.
-
- DESCRIPTION
- Similar to how it is done in mysql_insert(), we first try to do
- a ha_write_row() and of that fails due to duplicated keys (or
- indices), we do an ha_update_row() or a ha_delete_row() instead.
- */
-static int
-replace_record(THD *thd, TABLE *table,
- ulong const master_reclength,
- uint const master_fields)
-{
- DBUG_ENTER("replace_record");
- DBUG_ASSERT(table != NULL && thd != NULL);
-
- int error;
- int keynum;
- auto_afree_ptr<char> key(NULL);
-
-#ifndef DBUG_OFF
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
- DBUG_PRINT_BITSET("debug", "write_set = %s", table->write_set);
- DBUG_PRINT_BITSET("debug", "read_set = %s", table->read_set);
-#endif
-
- while (unlikely(error= table->file->ha_write_row(table->record[0])))
- {
- if (error == HA_ERR_LOCK_DEADLOCK || error == HA_ERR_LOCK_WAIT_TIMEOUT)
- {
- table->file->print_error(error, MYF(0)); /* to check at exec_relay_log_event */
- DBUG_RETURN(error);
- }
- if (unlikely((keynum= table->file->get_dup_key(error)) < 0))
- {
- table->file->print_error(error, MYF(0));
- /*
- We failed to retrieve the duplicate key
- - either because the error was not "duplicate key" error
- - or because the information which key is not available
- */
- DBUG_RETURN(error);
- }
-
- /*
- We need to retrieve the old row into record[1] to be able to
- either update or delete the offending record. We either:
-
- - use rnd_pos() with a row-id (available as dupp_row) to the
- offending row, if that is possible (MyISAM and Blackhole), or else
-
- - use index_read_idx() with the key that is duplicated, to
- retrieve the offending row.
- */
- if (table->file->ha_table_flags() & HA_DUPLICATE_POS)
- {
- error= table->file->ha_rnd_pos(table->record[1], table->file->dup_ref);
- if (unlikely(error))
- {
- DBUG_PRINT("info",("rnd_pos() returns error %d",error));
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
- }
- else
- {
- if (unlikely(table->file->extra(HA_EXTRA_FLUSH_CACHE)))
- {
- DBUG_RETURN(my_errno);
- }
-
- if (key.get() == NULL)
- {
- key.assign(static_cast<char*>(my_alloca(table->s->max_unique_length)));
- if (unlikely(key.get() == NULL))
- DBUG_RETURN(ENOMEM);
- }
-
- key_copy((uchar*)key.get(), table->record[0], table->key_info + keynum,
- 0);
- error= table->file->ha_index_read_idx_map(table->record[1], keynum,
- (const uchar*)key.get(),
- HA_WHOLE_KEY,
- HA_READ_KEY_EXACT);
- if (unlikely(error))
- {
- DBUG_PRINT("info", ("index_read_idx() returns error %d", error));
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
- }
-
- /*
- Now, table->record[1] should contain the offending row. That
- will enable us to update it or, alternatively, delete it (so
- that we can insert the new row afterwards).
-
- First we copy the columns into table->record[0] that are not
- present on the master from table->record[1], if there are any.
- */
- copy_extra_record_fields(table, master_reclength, master_fields);
-
- /*
- REPLACE is defined as either INSERT or DELETE + INSERT. If
- possible, we can replace it with an UPDATE, but that will not
- work on InnoDB if FOREIGN KEY checks are necessary.
-
- I (Matz) am not sure of the reason for the last_uniq_key()
- check as, but I'm guessing that it's something along the
- following lines.
-
- Suppose that we got the duplicate key to be a key that is not
- the last unique key for the table and we perform an update:
- then there might be another key for which the unique check will
- fail, so we're better off just deleting the row and inserting
- the correct row.
- */
- if (last_uniq_key(table, keynum) &&
- !table->file->referenced_by_foreign_key())
- {
- error=table->file->ha_update_row(table->record[1],
- table->record[0]);
- if (unlikely(error) && error != HA_ERR_RECORD_IS_THE_SAME)
- table->file->print_error(error, MYF(0));
- else
- error= 0;
- DBUG_RETURN(error);
- }
- else
- {
- if (unlikely((error= table->file->ha_delete_row(table->record[1]))))
- {
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
- /* Will retry ha_write_row() with the offending row removed. */
- }
- }
-
- DBUG_RETURN(error);
-}
-
-
-/**
- Find the row given by 'key', if the table has keys, or else use a table scan
- to find (and fetch) the row.
-
- If the engine allows random access of the records, a combination of
- position() and rnd_pos() will be used.
-
- @param table Pointer to table to search
- @param key Pointer to key to use for search, if table has key
-
- @pre <code>table->record[0]</code> shall contain the row to locate
- and <code>key</code> shall contain a key to use for searching, if
- the engine has a key.
-
- @post If the return value is zero, <code>table->record[1]</code>
- will contain the fetched row and the internal "cursor" will refer to
- the row. If the return value is non-zero,
- <code>table->record[1]</code> is undefined. In either case,
- <code>table->record[0]</code> is undefined.
-
- @return Zero if the row was successfully fetched into
- <code>table->record[1]</code>, error code otherwise.
- */
-
-static int find_and_fetch_row(TABLE *table, uchar *key)
-{
- DBUG_ENTER("find_and_fetch_row(TABLE *table, uchar *key, uchar *record)");
- DBUG_PRINT("enter", ("table: %p, key: %p record: %p",
- table, key, table->record[1]));
-
- DBUG_ASSERT(table->in_use != NULL);
-
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
-
- if ((table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) &&
- table->s->primary_key < MAX_KEY)
- {
- /*
- Use a more efficient method to fetch the record given by
- table->record[0] if the engine allows it. We first compute a
- row reference using the position() member function (it will be
- stored in table->file->ref) and the use rnd_pos() to position
- the "cursor" (i.e., record[0] in this case) at the correct row.
-
- TODO: Add a check that the correct record has been fetched by
- comparing with the original record. Take into account that the
- record on the master and slave can be of different
- length. Something along these lines should work:
-
- ADD>>> store_record(table,record[1]);
- int error= table->file->ha_rnd_pos(table->record[0], table->file->ref);
- ADD>>> DBUG_ASSERT(memcmp(table->record[1], table->record[0],
- table->s->reclength) == 0);
-
- */
- table->file->position(table->record[0]);
- int error= table->file->ha_rnd_pos(table->record[0], table->file->ref);
- /*
- rnd_pos() returns the record in table->record[0], so we have to
- move it to table->record[1].
- */
- memcpy(table->record[1], table->record[0], table->s->reclength);
- DBUG_RETURN(error);
- }
-
- /* We need to retrieve all fields */
- /* TODO: Move this out from this function to main loop */
- table->use_all_columns();
-
- if (table->s->keys > 0)
- {
- int error;
- /* We have a key: search the table using the index */
- if (!table->file->inited &&
- unlikely(error= table->file->ha_index_init(0, FALSE)))
- {
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
-
- /*
- Don't print debug messages when running valgrind since they can
- trigger false warnings.
- */
-#ifndef HAVE_valgrind
- DBUG_DUMP("table->record[0]", table->record[0], table->s->reclength);
- DBUG_DUMP("table->record[1]", table->record[1], table->s->reclength);
-#endif
-
- /*
- We need to set the null bytes to ensure that the filler bit are
- all set when returning. There are storage engines that just set
- the necessary bits on the bytes and don't set the filler bits
- correctly.
- */
- my_ptrdiff_t const pos=
- table->s->null_bytes > 0 ? table->s->null_bytes - 1 : 0;
- table->record[1][pos]= 0xFF;
- if (unlikely((error= table->file->ha_index_read_map(table->record[1], key,
- HA_WHOLE_KEY,
- HA_READ_KEY_EXACT))))
- {
- table->file->print_error(error, MYF(0));
- table->file->ha_index_end();
- DBUG_RETURN(error);
- }
-
- /*
- Don't print debug messages when running valgrind since they can
- trigger false warnings.
- */
-#ifndef HAVE_valgrind
- DBUG_DUMP("table->record[0]", table->record[0], table->s->reclength);
- DBUG_DUMP("table->record[1]", table->record[1], table->s->reclength);
-#endif
- /*
- Below is a minor "optimization". If the key (i.e., key number
- 0) has the HA_NOSAME flag set, we know that we have found the
- correct record (since there can be no duplicates); otherwise, we
- have to compare the record with the one found to see if it is
- the correct one.
-
- CAVEAT! This behaviour is essential for the replication of,
- e.g., the mysql.proc table since the correct record *shall* be
- found using the primary key *only*. There shall be no
- comparison of non-PK columns to decide if the correct record is
- found. I can see no scenario where it would be incorrect to
- chose the row to change only using a PK or an UNNI.
- */
- if (table->key_info->flags & HA_NOSAME)
- {
- table->file->ha_index_end();
- DBUG_RETURN(0);
- }
-
- while (record_compare(table))
- {
- int error;
-
- while ((error= table->file->ha_index_next(table->record[1])))
- {
- table->file->print_error(error, MYF(0));
- table->file->ha_index_end();
- DBUG_RETURN(error);
- }
- }
-
- /*
- Have to restart the scan to be able to fetch the next row.
- */
- table->file->ha_index_end();
- }
- else
- {
- int restart_count= 0; // Number of times scanning has restarted from top
- int error;
-
- /* We don't have a key: search the table using rnd_next() */
- if (unlikely((error= table->file->ha_rnd_init_with_error(1))))
- return error;
-
- /* Continue until we find the right record or have made a full loop */
- do
- {
- error= table->file->ha_rnd_next(table->record[1]);
-
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
- DBUG_DUMP("record[1]", table->record[1], table->s->reclength);
-
- switch (error) {
- case 0:
- break;
-
- case HA_ERR_END_OF_FILE:
- if (++restart_count < 2)
- {
- int error2;
- if (unlikely((error2= table->file->ha_rnd_init_with_error(1))))
- DBUG_RETURN(error2);
- }
- break;
-
- default:
- table->file->print_error(error, MYF(0));
- DBUG_PRINT("info", ("Record not found"));
- (void) table->file->ha_rnd_end();
- DBUG_RETURN(error);
- }
- }
- while (restart_count < 2 && record_compare(table));
-
- /*
- Have to restart the scan to be able to fetch the next row.
- */
- DBUG_PRINT("info", ("Record %sfound", restart_count == 2 ? "not " : ""));
- table->file->ha_rnd_end();
-
- DBUG_ASSERT(error == HA_ERR_END_OF_FILE || error == 0);
- DBUG_RETURN(error);
- }
-
- DBUG_RETURN(0);
-}
-
-
-/**********************************************************
- Row handling primitives for Write_rows_log_event_old
- **********************************************************/
-
-int Write_rows_log_event_old::do_before_row_operations(TABLE *table)
-{
- int error= 0;
-
- /*
- We are using REPLACE semantics and not INSERT IGNORE semantics
- when writing rows, that is: new rows replace old rows. We need to
- inform the storage engine that it should use this behaviour.
- */
-
- /* Tell the storage engine that we are using REPLACE semantics. */
- thd->lex->duplicates= DUP_REPLACE;
-
- thd->lex->sql_command= SQLCOM_REPLACE;
- /*
- Do not raise the error flag in case of hitting to an unique attribute
- */
- table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
- table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
- table->file->extra(HA_EXTRA_IGNORE_NO_KEY);
- table->file->ha_start_bulk_insert(0);
- return error;
-}
-
-
-int Write_rows_log_event_old::do_after_row_operations(TABLE *table, int error)
-{
- int local_error= 0;
- table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
- table->file->extra(HA_EXTRA_WRITE_CANNOT_REPLACE);
- /*
- resetting the extra with
- table->file->extra(HA_EXTRA_NO_IGNORE_NO_KEY);
- fires bug#27077
- todo: explain or fix
- */
- if (unlikely((local_error= table->file->ha_end_bulk_insert())))
- {
- table->file->print_error(local_error, MYF(0));
- }
- return error? error : local_error;
-}
-
-
-int
-Write_rows_log_event_old::do_prepare_row(THD *thd_arg,
- rpl_group_info *rgi,
- TABLE *table,
- uchar const *row_start,
- uchar const **row_end)
-{
- DBUG_ASSERT(table != NULL);
- DBUG_ASSERT(row_start && row_end);
-
- int error;
- error= unpack_row_old(rgi,
- table, m_width, table->record[0],
- row_start, m_rows_end,
- &m_cols, row_end, &m_master_reclength,
- table->write_set, PRE_GA_WRITE_ROWS_EVENT);
- bitmap_copy(table->read_set, table->write_set);
- return error;
-}
-
-
-int Write_rows_log_event_old::do_exec_row(TABLE *table)
-{
- DBUG_ASSERT(table != NULL);
- int error= replace_record(thd, table, m_master_reclength, m_width);
- return error;
-}
-
-
-/**********************************************************
- Row handling primitives for Delete_rows_log_event_old
- **********************************************************/
-
-int Delete_rows_log_event_old::do_before_row_operations(TABLE *table)
-{
- DBUG_ASSERT(m_memory == NULL);
-
- if ((table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) &&
- table->s->primary_key < MAX_KEY)
- {
- /*
- We don't need to allocate any memory for m_after_image and
- m_key since they are not used.
- */
- return 0;
- }
-
- int error= 0;
-
- if (table->s->keys > 0)
- {
- m_memory= (uchar*) my_multi_malloc(key_memory_log_event_old, MYF(MY_WME),
- &m_after_image,
- (uint) table->s->reclength,
- &m_key,
- (uint) table->key_info->key_length,
- NullS);
- }
- else
- {
- m_after_image= (uchar*) my_malloc(key_memory_log_event_old, table->s->reclength, MYF(MY_WME));
- m_memory= (uchar*)m_after_image;
- m_key= NULL;
- }
- if (!m_memory)
- return HA_ERR_OUT_OF_MEM;
-
- return error;
-}
-
-
-int Delete_rows_log_event_old::do_after_row_operations(TABLE *table, int error)
-{
- /*error= ToDo:find out what this should really be, this triggers close_scan in nbd, returning error?*/
- table->file->ha_index_or_rnd_end();
- my_free(m_memory); // Free for multi_malloc
- m_memory= NULL;
- m_after_image= NULL;
- m_key= NULL;
-
- return error;
-}
-
-
-int
-Delete_rows_log_event_old::do_prepare_row(THD *thd_arg,
- rpl_group_info *rgi,
- TABLE *table,
- uchar const *row_start,
- uchar const **row_end)
-{
- int error;
- DBUG_ASSERT(row_start && row_end);
- /*
- This assertion actually checks that there is at least as many
- columns on the slave as on the master.
- */
- DBUG_ASSERT(table->s->fields >= m_width);
-
- error= unpack_row_old(rgi,
- table, m_width, table->record[0],
- row_start, m_rows_end,
- &m_cols, row_end, &m_master_reclength,
- table->read_set, PRE_GA_DELETE_ROWS_EVENT);
- /*
- If we will access rows using the random access method, m_key will
- be set to NULL, so we do not need to make a key copy in that case.
- */
- if (m_key)
- {
- KEY *const key_info= table->key_info;
-
- key_copy(m_key, table->record[0], key_info, 0);
- }
-
- return error;
-}
-
-
-int Delete_rows_log_event_old::do_exec_row(TABLE *table)
-{
- int error;
- DBUG_ASSERT(table != NULL);
-
- if (likely(!(error= ::find_and_fetch_row(table, m_key))))
- {
- /*
- Now we should have the right row to delete. We are using
- record[0] since it is guaranteed to point to a record with the
- correct value.
- */
- error= table->file->ha_delete_row(table->record[0]);
- }
- return error;
-}
-
-
-/**********************************************************
- Row handling primitives for Update_rows_log_event_old
- **********************************************************/
-
-int Update_rows_log_event_old::do_before_row_operations(TABLE *table)
-{
- DBUG_ASSERT(m_memory == NULL);
-
- int error= 0;
-
- if (table->s->keys > 0)
- {
- m_memory= (uchar*) my_multi_malloc(key_memory_log_event_old, MYF(MY_WME),
- &m_after_image,
- (uint) table->s->reclength,
- &m_key,
- (uint) table->key_info->key_length,
- NullS);
- }
- else
- {
- m_after_image= (uchar*) my_malloc(key_memory_log_event_old, table->s->reclength, MYF(MY_WME));
- m_memory= m_after_image;
- m_key= NULL;
- }
- if (!m_memory)
- return HA_ERR_OUT_OF_MEM;
-
- return error;
-}
-
-
-int Update_rows_log_event_old::do_after_row_operations(TABLE *table, int error)
-{
- /*error= ToDo:find out what this should really be, this triggers close_scan in nbd, returning error?*/
- table->file->ha_index_or_rnd_end();
- my_free(m_memory);
- m_memory= NULL;
- m_after_image= NULL;
- m_key= NULL;
-
- return error;
-}
-
-
-int Update_rows_log_event_old::do_prepare_row(THD *thd_arg,
- rpl_group_info *rgi,
- TABLE *table,
- uchar const *row_start,
- uchar const **row_end)
-{
- int error;
- DBUG_ASSERT(row_start && row_end);
- /*
- This assertion actually checks that there is at least as many
- columns on the slave as on the master.
- */
- DBUG_ASSERT(table->s->fields >= m_width);
-
- /* record[0] is the before image for the update */
- error= unpack_row_old(rgi,
- table, m_width, table->record[0],
- row_start, m_rows_end,
- &m_cols, row_end, &m_master_reclength,
- table->read_set, PRE_GA_UPDATE_ROWS_EVENT);
- row_start = *row_end;
- /* m_after_image is the after image for the update */
- error= unpack_row_old(rgi,
- table, m_width, m_after_image,
- row_start, m_rows_end,
- &m_cols, row_end, &m_master_reclength,
- table->write_set, PRE_GA_UPDATE_ROWS_EVENT);
-
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
- DBUG_DUMP("m_after_image", m_after_image, table->s->reclength);
-
- /*
- If we will access rows using the random access method, m_key will
- be set to NULL, so we do not need to make a key copy in that case.
- */
- if (m_key)
- {
- KEY *const key_info= table->key_info;
-
- key_copy(m_key, table->record[0], key_info, 0);
- }
-
- return error;
-}
-
-
-int Update_rows_log_event_old::do_exec_row(TABLE *table)
-{
- DBUG_ASSERT(table != NULL);
-
- int error= ::find_and_fetch_row(table, m_key);
- if (unlikely(error))
- return error;
-
- /*
- We have to ensure that the new record (i.e., the after image) is
- in record[0] and the old record (i.e., the before image) is in
- record[1]. This since some storage engines require this (for
- example, the partition engine).
-
- Since find_and_fetch_row() puts the fetched record (i.e., the old
- record) in record[1], we can keep it there. We put the new record
- (i.e., the after image) into record[0], and copy the fields that
- are on the slave (i.e., in record[1]) into record[0], effectively
- overwriting the default values that where put there by the
- unpack_row() function.
- */
- memcpy(table->record[0], m_after_image, table->s->reclength);
- copy_extra_record_fields(table, m_master_reclength, m_width);
-
- /*
- Now we have the right row to update. The old row (the one we're
- looking for) is in record[1] and the new row has is in record[0].
- We also have copied the original values already in the slave's
- database into the after image delivered from the master.
- */
- error= table->file->ha_update_row(table->record[1], table->record[0]);
- if (unlikely(error == HA_ERR_RECORD_IS_THE_SAME))
- error= 0;
-
- return error;
-}
-
-#endif
-
-
-/**************************************************************************
- Rows_log_event member functions
-**************************************************************************/
-
-#ifndef MYSQL_CLIENT
-Old_rows_log_event::Old_rows_log_event(THD *thd_arg, TABLE *tbl_arg,
- ulonglong table_id,
- MY_BITMAP const *cols,
- bool is_transactional)
- : Log_event(thd_arg, 0, is_transactional),
- m_row_count(0),
- m_table(tbl_arg),
- m_table_id(table_id),
- m_width(tbl_arg ? tbl_arg->s->fields : 1),
- m_rows_buf(0), m_rows_cur(0), m_rows_end(0), m_flags(0)
-#ifdef HAVE_REPLICATION
- , m_curr_row(NULL), m_curr_row_end(NULL), m_key(NULL)
-#endif
-{
-
- // This constructor should not be reached.
- assert(0);
-
- /*
- We allow a special form of dummy event when the table, and cols
- are null and the table id is UINT32_MAX. This is a temporary
- solution, to be able to terminate a started statement in the
- binary log: the extraneous events will be removed in the future.
- */
- DBUG_ASSERT((tbl_arg && tbl_arg->s && table_id != UINT32_MAX) ||
- (!tbl_arg && !cols && table_id == UINT32_MAX));
-
- if (thd_arg->variables.option_bits & OPTION_NO_FOREIGN_KEY_CHECKS)
- set_flags(NO_FOREIGN_KEY_CHECKS_F);
- if (thd_arg->variables.option_bits & OPTION_RELAXED_UNIQUE_CHECKS)
- set_flags(RELAXED_UNIQUE_CHECKS_F);
- /* if my_bitmap_init fails, caught in is_valid() */
- if (likely(!my_bitmap_init(&m_cols,
- m_width <= sizeof(m_bitbuf)*8 ? m_bitbuf : NULL,
- m_width)))
- {
- /* Cols can be zero if this is a dummy binrows event */
- if (likely(cols != NULL))
- bitmap_copy(&m_cols, cols);
- }
-}
-#endif
-
-
-Old_rows_log_event::Old_rows_log_event(const uchar *buf, uint event_len,
- Log_event_type event_type,
- const Format_description_log_event
- *description_event)
- : Log_event(buf, description_event),
- m_row_count(0),
-#ifndef MYSQL_CLIENT
- m_table(NULL),
-#endif
- m_table_id(0), m_rows_buf(0), m_rows_cur(0), m_rows_end(0)
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- , m_curr_row(NULL), m_curr_row_end(NULL), m_key(NULL)
-#endif
-{
- DBUG_ENTER("Old_rows_log_event::Old_Rows_log_event(const char*,...)");
- uint8 const common_header_len= description_event->common_header_len;
- uint8 const post_header_len= description_event->post_header_len[event_type-1];
-
- DBUG_PRINT("enter",("event_len: %u common_header_len: %d "
- "post_header_len: %d",
- event_len, common_header_len,
- post_header_len));
-
- const uchar *post_start= buf + common_header_len;
- DBUG_DUMP("post_header", post_start, post_header_len);
- post_start+= RW_MAPID_OFFSET;
- if (post_header_len == 6)
- {
- /* Master is of an intermediate source tree before 5.1.4. Id is 4 bytes */
- m_table_id= uint4korr(post_start);
- post_start+= 4;
- }
- else
- {
- m_table_id= (ulonglong) uint6korr(post_start);
- post_start+= RW_FLAGS_OFFSET;
- }
-
- m_flags= uint2korr(post_start);
-
- uchar const *const var_start=
- (const uchar *)buf + common_header_len + post_header_len;
- uchar const *const ptr_width= var_start;
- uchar *ptr_after_width= (uchar*) ptr_width;
- DBUG_PRINT("debug", ("Reading from %p", ptr_after_width));
- m_width = net_field_length(&ptr_after_width);
- DBUG_PRINT("debug", ("m_width=%lu", m_width));
- /* Avoid reading out of buffer */
- if (ptr_after_width + m_width > (uchar *)buf + event_len)
- {
- m_cols.bitmap= NULL;
- DBUG_VOID_RETURN;
- }
-
- /* if my_bitmap_init fails, caught in is_valid() */
- if (likely(!my_bitmap_init(&m_cols,
- m_width <= sizeof(m_bitbuf)*8 ? m_bitbuf : NULL,
- m_width)))
- {
- DBUG_PRINT("debug", ("Reading from %p", ptr_after_width));
- bitmap_import(&m_cols, ptr_after_width);
- DBUG_DUMP("m_cols", ptr_after_width, no_bytes_in_export_map(&m_cols));
- ptr_after_width+= (m_width + 7) / 8;
- }
- else
- DBUG_VOID_RETURN;
-
- const uchar* const ptr_rows_data= (const uchar*) ptr_after_width;
- size_t const data_size= event_len - (ptr_rows_data - (const uchar *) buf);
- DBUG_PRINT("info",("m_table_id: %llu m_flags: %d m_width: %lu data_size: %zu",
- m_table_id, m_flags, m_width, data_size));
- DBUG_DUMP("rows_data", (uchar*) ptr_rows_data, data_size);
-
- m_rows_buf= (uchar*) my_malloc(key_memory_log_event_old, data_size, MYF(MY_WME));
- if (likely((bool)m_rows_buf))
- {
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- m_curr_row= m_rows_buf;
-#endif
- m_rows_end= m_rows_buf + data_size;
- m_rows_cur= m_rows_end;
- memcpy(m_rows_buf, ptr_rows_data, data_size);
- }
-
- DBUG_VOID_RETURN;
-}
-
-
-Old_rows_log_event::~Old_rows_log_event()
-{
- my_bitmap_free(&m_cols); // To pair with my_bitmap_init().
- my_free(m_rows_buf);
-}
-
-
-int Old_rows_log_event::get_data_size()
-{
- uchar buf[MAX_INT_WIDTH];
- uchar *end= net_store_length(buf, (m_width + 7) / 8);
-
- DBUG_EXECUTE_IF("old_row_based_repl_4_byte_map_id_master",
- return (int)(6 + no_bytes_in_export_map(&m_cols) + (end - buf) +
- m_rows_cur - m_rows_buf););
- int data_size= ROWS_HEADER_LEN;
- data_size+= no_bytes_in_export_map(&m_cols);
- data_size+= (uint) (end - buf);
-
- data_size+= (uint) (m_rows_cur - m_rows_buf);
- return data_size;
-}
-
-
-#ifndef MYSQL_CLIENT
-int Old_rows_log_event::do_add_row_data(uchar *row_data, size_t length)
-{
- /*
- When the table has a primary key, we would probably want, by default, to
- log only the primary key value instead of the entire "before image". This
- would save binlog space. TODO
- */
- DBUG_ENTER("Old_rows_log_event::do_add_row_data");
- DBUG_PRINT("enter", ("row_data: %p length: %zu",row_data,
- length));
- /*
- Don't print debug messages when running valgrind since they can
- trigger false warnings.
- */
-#ifndef HAVE_valgrind
- DBUG_DUMP("row_data", row_data, MY_MIN(length, 32));
-#endif
-
- DBUG_ASSERT(m_rows_buf <= m_rows_cur);
- DBUG_ASSERT(!m_rows_buf || (m_rows_end && m_rows_buf < m_rows_end));
- DBUG_ASSERT(m_rows_cur <= m_rows_end);
-
- /* The cast will always work since m_rows_cur <= m_rows_end */
- if (static_cast<size_t>(m_rows_end - m_rows_cur) <= length)
- {
- size_t const block_size= 1024;
- my_ptrdiff_t const cur_size= m_rows_cur - m_rows_buf;
- my_ptrdiff_t const new_alloc=
- block_size * ((cur_size + length + block_size - 1) / block_size);
-
- uchar* const new_buf= (uchar*)my_realloc(key_memory_log_event_old, (uchar*)m_rows_buf, (uint) new_alloc,
- MYF(MY_ALLOW_ZERO_PTR|MY_WME));
- if (unlikely(!new_buf))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- /* If the memory moved, we need to move the pointers */
- if (new_buf != m_rows_buf)
- {
- m_rows_buf= new_buf;
- m_rows_cur= m_rows_buf + cur_size;
- }
-
- /*
- The end pointer should always be changed to point to the end of
- the allocated memory.
- */
- m_rows_end= m_rows_buf + new_alloc;
- }
-
- DBUG_ASSERT(m_rows_cur + length <= m_rows_end);
- memcpy(m_rows_cur, row_data, length);
- m_rows_cur+= length;
- m_row_count++;
- DBUG_RETURN(0);
-}
-#endif
-
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-int Old_rows_log_event::do_apply_event(rpl_group_info *rgi)
-{
- DBUG_ENTER("Old_rows_log_event::do_apply_event(Relay_log_info*)");
- int error= 0;
- Relay_log_info const *rli= rgi->rli;
-
- /*
- If m_table_id == UINT32_MAX, then we have a dummy event that does not
- contain any data. In that case, we just remove all tables in the
- tables_to_lock list, close the thread tables, and return with
- success.
- */
- if (m_table_id == UINT32_MAX)
- {
- /*
- This one is supposed to be set: just an extra check so that
- nothing strange has happened.
- */
- DBUG_ASSERT(get_flags(STMT_END_F));
-
- rgi->slave_close_thread_tables(thd);
- thd->clear_error();
- DBUG_RETURN(0);
- }
-
- /*
- 'thd' has been set by exec_relay_log_event(), just before calling
- do_apply_event(). We still check here to prevent future coding
- errors.
- */
- DBUG_ASSERT(rgi->thd == thd);
-
- /*
- If there is no locks taken, this is the first binrow event seen
- after the table map events. We should then lock all the tables
- used in the transaction and proceed with execution of the actual
- event.
- */
- if (!thd->lock)
- {
- /*
- lock_tables() reads the contents of thd->lex, so they must be
- initialized. Contrary to in
- Table_map_log_event::do_apply_event() we don't call
- mysql_init_query() as that may reset the binlog format.
- */
- lex_start(thd);
-
- if (unlikely((error= lock_tables(thd, rgi->tables_to_lock,
- rgi->tables_to_lock_count, 0))))
- {
- if (thd->is_slave_error || thd->is_fatal_error)
- {
- /*
- Error reporting borrowed from Query_log_event with many excessive
- simplifications (we don't honour --slave-skip-errors)
- */
- uint actual_error= thd->net.last_errno;
- rli->report(ERROR_LEVEL, actual_error, NULL,
- "Error '%s' in %s event: when locking tables",
- (actual_error ? thd->net.last_error :
- "unexpected success or fatal error"),
- get_type_str());
- thd->is_fatal_error= 1;
- }
- else
- {
- rli->report(ERROR_LEVEL, error, NULL,
- "Error in %s event: when locking tables",
- get_type_str());
- }
- rgi->slave_close_thread_tables(thd);
- DBUG_RETURN(error);
- }
-
- /*
- When the open and locking succeeded, we check all tables to
- ensure that they still have the correct type.
- */
-
- {
- TABLE_LIST *table_list_ptr= rgi->tables_to_lock;
- for (uint i=0; table_list_ptr&& (i< rgi->tables_to_lock_count);
- table_list_ptr= static_cast<RPL_TABLE_LIST*>(table_list_ptr->next_global), i++)
- {
- /*
- Please see comment in log_event.cc-Rows_log_event::do_apply_event()
- function for the explanation of the below if condition
- */
- if (table_list_ptr->parent_l)
- continue;
- /*
- We can use a down cast here since we know that every table added
- to the tables_to_lock is a RPL_TABLE_LIST (or child table which is
- skipped above).
- */
- RPL_TABLE_LIST *ptr=static_cast<RPL_TABLE_LIST*>(table_list_ptr);
- TABLE *conv_table;
- if (ptr->m_tabledef.compatible_with(thd, rgi, ptr->table, &conv_table))
- {
- thd->is_slave_error= 1;
- rgi->slave_close_thread_tables(thd);
- DBUG_RETURN(ERR_BAD_TABLE_DEF);
- }
- ptr->m_conv_table= conv_table;
- }
- }
-
- /*
- ... and then we add all the tables to the table map but keep
- them in the tables to lock list.
-
-
- We also invalidate the query cache for all the tables, since
- they will now be changed.
-
- TODO [/Matz]: Maybe the query cache should not be invalidated
- here? It might be that a table is not changed, even though it
- was locked for the statement. We do know that each
- Old_rows_log_event contain at least one row, so after processing one
- Old_rows_log_event, we can invalidate the query cache for the
- associated table.
- */
- for (TABLE_LIST *ptr= rgi->tables_to_lock ; ptr ; ptr= ptr->next_global)
- {
- rgi->m_table_map.set_table(ptr->table_id, ptr->table);
- }
-#ifdef HAVE_QUERY_CACHE
- query_cache.invalidate_locked_for_write(thd, rgi->tables_to_lock);
-#endif
- }
-
- TABLE*
- table=
- m_table= rgi->m_table_map.get_table(m_table_id);
-
- if (table)
- {
- /*
- table == NULL means that this table should not be replicated
- (this was set up by Table_map_log_event::do_apply_event()
- which tested replicate-* rules).
- */
-
- /*
- It's not needed to set_time() but
- 1) it continues the property that "Time" in SHOW PROCESSLIST shows how
- much slave is behind
- 2) it will be needed when we allow replication from a table with no
- TIMESTAMP column to a table with one.
- So we call set_time(), like in SBR. Presently it changes nothing.
- */
-#ifdef WITH_WSREP
- if (!wsrep_thd_is_applying(thd))
-#endif
- thd->set_time(when, when_sec_part);
- /*
- There are a few flags that are replicated with each row event.
- Make sure to set/clear them before executing the main body of
- the event.
- */
- if (get_flags(NO_FOREIGN_KEY_CHECKS_F))
- thd->variables.option_bits|= OPTION_NO_FOREIGN_KEY_CHECKS;
- else
- thd->variables.option_bits&= ~OPTION_NO_FOREIGN_KEY_CHECKS;
-
- if (get_flags(RELAXED_UNIQUE_CHECKS_F))
- thd->variables.option_bits|= OPTION_RELAXED_UNIQUE_CHECKS;
- else
- thd->variables.option_bits&= ~OPTION_RELAXED_UNIQUE_CHECKS;
- /* A small test to verify that objects have consistent types */
- DBUG_ASSERT(sizeof(thd->variables.option_bits) == sizeof(OPTION_RELAXED_UNIQUE_CHECKS));
-
- if ( m_width == table->s->fields && bitmap_is_set_all(&m_cols))
- set_flags(COMPLETE_ROWS_F);
-
- /*
- Set tables write and read sets.
-
- Read_set contains all slave columns (in case we are going to fetch
- a complete record from slave)
-
- Write_set equals the m_cols bitmap sent from master but it can be
- longer if slave has extra columns.
- */
-
- DBUG_PRINT_BITSET("debug", "Setting table's write_set from: %s", &m_cols);
-
- bitmap_set_all(table->read_set);
- bitmap_set_all(table->write_set);
- if (!get_flags(COMPLETE_ROWS_F))
- bitmap_intersect(table->write_set,&m_cols);
- table->rpl_write_set= table->write_set;
-
- // Do event specific preparations
-
- error= do_before_row_operations(rli);
-
- // row processing loop
-
- while (error == 0 && m_curr_row < m_rows_end)
- {
- /* in_use can have been set to NULL in close_tables_for_reopen */
- THD* old_thd= table->in_use;
- if (!table->in_use)
- table->in_use= thd;
-
- error= do_exec_row(rgi);
-
- DBUG_PRINT("info", ("error: %d", error));
- DBUG_ASSERT(error != HA_ERR_RECORD_DELETED);
-
- table->in_use = old_thd;
- switch (error)
- {
- case 0:
- break;
-
- /* Some recoverable errors */
- case HA_ERR_RECORD_CHANGED:
- case HA_ERR_KEY_NOT_FOUND: /* Idempotency support: OK if
- tuple does not exist */
- error= 0;
- break;
-
- default:
- rli->report(ERROR_LEVEL, thd->net.last_errno, NULL,
- "Error in %s event: row application failed. %s",
- get_type_str(), thd->net.last_error);
- thd->is_slave_error= 1;
- break;
- }
-
- /*
- If m_curr_row_end was not set during event execution (e.g., because
- of errors) we can't proceed to the next row. If the error is transient
- (i.e., error==0 at this point) we must call unpack_current_row() to set
- m_curr_row_end.
- */
-
- DBUG_PRINT("info", ("error: %d", error));
- DBUG_PRINT("info", ("curr_row: %p; curr_row_end:%p; rows_end: %p",
- m_curr_row, m_curr_row_end, m_rows_end));
-
- if (!m_curr_row_end && likely(!error))
- unpack_current_row(rgi);
-
- // at this moment m_curr_row_end should be set
- DBUG_ASSERT(error || m_curr_row_end != NULL);
- DBUG_ASSERT(error || m_curr_row < m_curr_row_end);
- DBUG_ASSERT(error || m_curr_row_end <= m_rows_end);
-
- m_curr_row= m_curr_row_end;
-
- } // row processing loop
-
- DBUG_EXECUTE_IF("stop_slave_middle_group",
- const_cast<Relay_log_info*>(rli)->abort_slave= 1;);
- error= do_after_row_operations(rli, error);
- } // if (table)
-
- if (unlikely(error))
- { /* error has occurred during the transaction */
- rli->report(ERROR_LEVEL, thd->net.last_errno, NULL,
- "Error in %s event: error during transaction execution "
- "on table %s.%s. %s",
- get_type_str(), table->s->db.str,
- table->s->table_name.str,
- thd->net.last_error);
-
- /*
- If one day we honour --skip-slave-errors in row-based replication, and
- the error should be skipped, then we would clear mappings, rollback,
- close tables, but the slave SQL thread would not stop and then may
- assume the mapping is still available, the tables are still open...
- So then we should clear mappings/rollback/close here only if this is a
- STMT_END_F.
- For now we code, knowing that error is not skippable and so slave SQL
- thread is certainly going to stop.
- rollback at the caller along with sbr.
- */
- thd->reset_current_stmt_binlog_format_row();
- rgi->cleanup_context(thd, error);
- thd->is_slave_error= 1;
- DBUG_RETURN(error);
- }
-
- /*
- This code would ideally be placed in do_update_pos() instead, but
- since we have no access to table there, we do the setting of
- last_event_start_time here instead.
- */
- if (table && (table->s->primary_key == MAX_KEY) &&
- !use_trans_cache() && get_flags(STMT_END_F) == RLE_NO_FLAGS)
- {
- /*
- ------------ Temporary fix until WL#2975 is implemented ---------
-
- This event is not the last one (no STMT_END_F). If we stop now
- (in case of terminate_slave_thread()), how will we restart? We
- have to restart from Table_map_log_event, but as this table is
- not transactional, the rows already inserted will still be
- present, and idempotency is not guaranteed (no PK) so we risk
- that repeating leads to double insert. So we desperately try to
- continue, hope we'll eventually leave this buggy situation (by
- executing the final Old_rows_log_event). If we are in a hopeless
- wait (reached end of last relay log and nothing gets appended
- there), we timeout after one minute, and notify DBA about the
- problem. When WL#2975 is implemented, just remove the member
- Relay_log_info::last_event_start_time and all its occurrences.
- */
- rgi->last_event_start_time= my_time(0);
- }
-
- if (get_flags(STMT_END_F))
- {
- /*
- This is the end of a statement or transaction, so close (and
- unlock) the tables we opened when processing the
- Table_map_log_event starting the statement.
-
- OBSERVER. This will clear *all* mappings, not only those that
- are open for the table. There is not good handle for on-close
- actions for tables.
-
- NOTE. Even if we have no table ('table' == 0) we still need to be
- here, so that we increase the group relay log position. If we didn't, we
- could have a group relay log position which lags behind "forever"
- (assume the last master's transaction is ignored by the slave because of
- replicate-ignore rules).
- */
- int binlog_error= thd->binlog_flush_pending_rows_event(TRUE);
-
- /*
- If this event is not in a transaction, the call below will, if some
- transactional storage engines are involved, commit the statement into
- them and flush the pending event to binlog.
- If this event is in a transaction, the call will do nothing, but a
- Xid_log_event will come next which will, if some transactional engines
- are involved, commit the transaction and flush the pending event to the
- binlog.
- If there was a deadlock the transaction should have been rolled back
- already. So there should be no need to rollback the transaction.
- */
- DBUG_ASSERT(! thd->transaction_rollback_request);
- if (unlikely((error= (binlog_error ?
- trans_rollback_stmt(thd) :
- trans_commit_stmt(thd)))))
- rli->report(ERROR_LEVEL, error, NULL,
- "Error in %s event: commit of row events failed, "
- "table `%s`.`%s`",
- get_type_str(), m_table->s->db.str,
- m_table->s->table_name.str);
- error|= binlog_error;
-
- /*
- Now what if this is not a transactional engine? we still need to
- flush the pending event to the binlog; we did it with
- thd->binlog_flush_pending_rows_event(). Note that we imitate
- what is done for real queries: a call to
- ha_autocommit_or_rollback() (sometimes only if involves a
- transactional engine), and a call to be sure to have the pending
- event flushed.
- */
-
- thd->reset_current_stmt_binlog_format_row();
- rgi->cleanup_context(thd, 0);
- }
-
- DBUG_RETURN(error);
-}
-
-
-Log_event::enum_skip_reason
-Old_rows_log_event::do_shall_skip(rpl_group_info *rgi)
-{
- /*
- If the slave skip counter is 1 and this event does not end a
- statement, then we should not start executing on the next event.
- Otherwise, we defer the decision to the normal skipping logic.
- */
- if (rgi->rli->slave_skip_counter == 1 && !get_flags(STMT_END_F))
- return Log_event::EVENT_SKIP_IGNORE;
- else
- return Log_event::do_shall_skip(rgi);
-}
-
-int
-Old_rows_log_event::do_update_pos(rpl_group_info *rgi)
-{
- Relay_log_info *rli= rgi->rli;
- int error= 0;
- DBUG_ENTER("Old_rows_log_event::do_update_pos");
-
- DBUG_PRINT("info", ("flags: %s",
- get_flags(STMT_END_F) ? "STMT_END_F " : ""));
-
- if (get_flags(STMT_END_F))
- {
- /*
- Indicate that a statement is finished.
- Step the group log position if we are not in a transaction,
- otherwise increase the event log position.
- */
- error= rli->stmt_done(log_pos, thd, rgi);
- /*
- Clear any errors in thd->net.last_err*. It is not known if this is
- needed or not. It is believed that any errors that may exist in
- thd->net.last_err* are allowed. Examples of errors are "key not
- found", which is produced in the test case rpl_row_conflicts.test
- */
- thd->clear_error();
- }
- else
- {
- rgi->inc_event_relay_log_pos();
- }
-
- DBUG_RETURN(error);
-}
-
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-
-
-#ifndef MYSQL_CLIENT
-bool Old_rows_log_event::write_data_header()
-{
- uchar buf[ROWS_HEADER_LEN]; // No need to init the buffer
-
- // This method should not be reached.
- assert(0);
-
- DBUG_ASSERT(m_table_id != UINT32_MAX);
- DBUG_EXECUTE_IF("old_row_based_repl_4_byte_map_id_master",
- {
- int4store(buf + 0, (ulong) m_table_id);
- int2store(buf + 4, m_flags);
- return write_data(buf, 6);
- });
- int6store(buf + RW_MAPID_OFFSET, (ulonglong)m_table_id);
- int2store(buf + RW_FLAGS_OFFSET, m_flags);
- return write_data(buf, ROWS_HEADER_LEN);
-}
-
-
-bool Old_rows_log_event::write_data_body()
-{
- /*
- Note that this should be the number of *bits*, not the number of
- bytes.
- */
- uchar sbuf[MAX_INT_WIDTH];
- my_ptrdiff_t const data_size= m_rows_cur - m_rows_buf;
- uint bitmap_size= no_bytes_in_export_map(&m_cols);
- uchar *bitmap;
-
- // This method should not be reached.
- assert(0);
-
- bool res= false;
- uchar *const sbuf_end= net_store_length(sbuf, (size_t) m_width);
- DBUG_ASSERT(static_cast<size_t>(sbuf_end - sbuf) <= sizeof(sbuf));
-
- DBUG_DUMP("m_width", sbuf, (size_t) (sbuf_end - sbuf));
- res= res || write_data(sbuf, (size_t) (sbuf_end - sbuf));
-
- bitmap= (uchar*) my_alloca(bitmap_size);
- bitmap_export(bitmap, &m_cols);
-
- DBUG_DUMP("m_cols", bitmap, no_bytes_in_export_map(&m_cols));
- res= res || write_data(bitmap, no_bytes_in_export_map(&m_cols));
- DBUG_DUMP("rows", m_rows_buf, data_size);
- res= res || write_data(m_rows_buf, (size_t) data_size);
- my_afree(bitmap);
-
- return res;
-
-}
-#endif
-
-
-#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
-void Old_rows_log_event::pack_info(Protocol *protocol)
-{
- char buf[256];
- char const *const flagstr=
- get_flags(STMT_END_F) ? " flags: STMT_END_F" : "";
- size_t bytes= my_snprintf(buf, sizeof(buf),
- "table_id: %llu%s", m_table_id, flagstr);
- protocol->store(buf, bytes, &my_charset_bin);
-}
-#endif
-
-
-#ifdef MYSQL_CLIENT
-/* Method duplicates Rows_log_event's one */
-bool Old_rows_log_event::print_helper(FILE *file,
- PRINT_EVENT_INFO *print_event_info,
- char const *const name)
-{
- IO_CACHE *const head= &print_event_info->head_cache;
- IO_CACHE *const body= &print_event_info->body_cache;
- IO_CACHE *const tail= &print_event_info->tail_cache;
- bool do_print_encoded=
- print_event_info->base64_output_mode != BASE64_OUTPUT_DECODE_ROWS &&
- print_event_info->base64_output_mode != BASE64_OUTPUT_NEVER &&
- !print_event_info->short_form;
-
- if (!print_event_info->short_form)
- {
- char llbuff[22];
- if (print_header(head, print_event_info, !do_print_encoded) ||
- my_b_printf(head, "\t%s: table id %s%s\n",
- name, ullstr(m_table_id, llbuff),
- do_print_encoded ? " flags: STMT_END_F" : "") ||
- print_base64(body, print_event_info, do_print_encoded))
- goto err;
- }
-
- if (get_flags(STMT_END_F))
- {
- if (copy_event_cache_to_file_and_reinit(head, file) ||
- copy_cache_to_file_wrapped(body, file, do_print_encoded,
- print_event_info->delimiter,
- print_event_info->verbose) ||
- copy_event_cache_to_file_and_reinit(tail, file))
- goto err;
- }
- return 0;
-err:
- return 1;
-}
-#endif
-
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-/**
- Write the current row into event's table.
-
- The row is located in the row buffer, pointed by @c m_curr_row member.
- Number of columns of the row is stored in @c m_width member (it can be
- different from the number of columns in the table to which we insert).
- Bitmap @c m_cols indicates which columns are present in the row. It is assumed
- that event's table is already open and pointed by @c m_table.
-
- If the same record already exists in the table it can be either overwritten
- or an error is reported depending on the value of @c overwrite flag
- (error reporting not yet implemented). Note that the matching record can be
- different from the row we insert if we use primary keys to identify records in
- the table.
-
- The row to be inserted can contain values only for selected columns. The
- missing columns are filled with default values using @c prepare_record()
- function. If a matching record is found in the table and @c overwritte is
- true, the missing columns are taken from it.
-
- @param rli Relay log info (needed for row unpacking).
- @param overwrite
- Shall we overwrite if the row already exists or signal
- error (currently ignored).
-
- @returns Error code on failure, 0 on success.
-
- This method, if successful, sets @c m_curr_row_end pointer to point at the
- next row in the rows buffer. This is done when unpacking the row to be
- inserted.
-
- @note If a matching record is found, it is either updated using
- @c ha_update_row() or first deleted and then new record written.
-*/
-
-int
-Old_rows_log_event::write_row(rpl_group_info *rgi, const bool overwrite)
-{
- DBUG_ENTER("write_row");
- DBUG_ASSERT(m_table != NULL && thd != NULL);
-
- TABLE *table= m_table; // pointer to event's table
- int error;
- int keynum;
- auto_afree_ptr<char> key(NULL);
-
- /* fill table->record[0] with default values */
-
- if (unlikely((error=
- prepare_record(table, m_width,
- TRUE /* check if columns have def. values */))))
- DBUG_RETURN(error);
-
- /* unpack row into table->record[0] */
- if ((error= unpack_current_row(rgi)))
- DBUG_RETURN(error);
-
-#ifndef DBUG_OFF
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
- DBUG_PRINT_BITSET("debug", "write_set = %s", table->write_set);
- DBUG_PRINT_BITSET("debug", "read_set = %s", table->read_set);
-#endif
-
- /*
- Try to write record. If a corresponding record already exists in the table,
- we try to change it using ha_update_row() if possible. Otherwise we delete
- it and repeat the whole process again.
-
- TODO: Add safety measures against infinite looping.
- */
-
- while (unlikely(error= table->file->ha_write_row(table->record[0])))
- {
- if (error == HA_ERR_LOCK_DEADLOCK || error == HA_ERR_LOCK_WAIT_TIMEOUT)
- {
- table->file->print_error(error, MYF(0)); /* to check at exec_relay_log_event */
- DBUG_RETURN(error);
- }
- if (unlikely((keynum= table->file->get_dup_key(error)) < 0))
- {
- DBUG_PRINT("info",("Can't locate duplicate key (get_dup_key returns %d)",keynum));
- table->file->print_error(error, MYF(0));
- /*
- We failed to retrieve the duplicate key
- - either because the error was not "duplicate key" error
- - or because the information which key is not available
- */
- DBUG_RETURN(error);
- }
-
- /*
- We need to retrieve the old row into record[1] to be able to
- either update or delete the offending record. We either:
-
- - use rnd_pos() with a row-id (available as dupp_row) to the
- offending row, if that is possible (MyISAM and Blackhole), or else
-
- - use index_read_idx() with the key that is duplicated, to
- retrieve the offending row.
- */
- if (table->file->ha_table_flags() & HA_DUPLICATE_POS)
- {
- DBUG_PRINT("info",("Locating offending record using rnd_pos()"));
- error= table->file->ha_rnd_pos(table->record[1], table->file->dup_ref);
- if (unlikely(error))
- {
- DBUG_PRINT("info",("rnd_pos() returns error %d",error));
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
- }
- else
- {
- DBUG_PRINT("info",("Locating offending record using index_read_idx()"));
-
- if (table->file->extra(HA_EXTRA_FLUSH_CACHE))
- {
- DBUG_PRINT("info",("Error when setting HA_EXTRA_FLUSH_CACHE"));
- DBUG_RETURN(my_errno);
- }
-
- if (key.get() == NULL)
- {
- key.assign(static_cast<char*>(my_alloca(table->s->max_unique_length)));
- if (unlikely(key.get() == NULL))
- {
- DBUG_PRINT("info",("Can't allocate key buffer"));
- DBUG_RETURN(ENOMEM);
- }
- }
-
- key_copy((uchar*)key.get(), table->record[0], table->key_info + keynum,
- 0);
- error= table->file->ha_index_read_idx_map(table->record[1], keynum,
- (const uchar*)key.get(),
- HA_WHOLE_KEY,
- HA_READ_KEY_EXACT);
- if (unlikely(error))
- {
- DBUG_PRINT("info",("index_read_idx() returns error %d", error));
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
- }
-
- /*
- Now, record[1] should contain the offending row. That
- will enable us to update it or, alternatively, delete it (so
- that we can insert the new row afterwards).
- */
-
- /*
- If row is incomplete we will use the record found to fill
- missing columns.
- */
- if (!get_flags(COMPLETE_ROWS_F))
- {
- restore_record(table,record[1]);
- error= unpack_current_row(rgi);
- }
-
-#ifndef DBUG_OFF
- DBUG_PRINT("debug",("preparing for update: before and after image"));
- DBUG_DUMP("record[1] (before)", table->record[1], table->s->reclength);
- DBUG_DUMP("record[0] (after)", table->record[0], table->s->reclength);
-#endif
-
- /*
- REPLACE is defined as either INSERT or DELETE + INSERT. If
- possible, we can replace it with an UPDATE, but that will not
- work on InnoDB if FOREIGN KEY checks are necessary.
-
- I (Matz) am not sure of the reason for the last_uniq_key()
- check as, but I'm guessing that it's something along the
- following lines.
-
- Suppose that we got the duplicate key to be a key that is not
- the last unique key for the table and we perform an update:
- then there might be another key for which the unique check will
- fail, so we're better off just deleting the row and inserting
- the correct row.
- */
- if (last_uniq_key(table, keynum) &&
- !table->file->referenced_by_foreign_key())
- {
- DBUG_PRINT("info",("Updating row using ha_update_row()"));
- error=table->file->ha_update_row(table->record[1],
- table->record[0]);
- switch (error) {
-
- case HA_ERR_RECORD_IS_THE_SAME:
- DBUG_PRINT("info",("ignoring HA_ERR_RECORD_IS_THE_SAME error from"
- " ha_update_row()"));
- error= 0;
-
- case 0:
- break;
-
- default:
- DBUG_PRINT("info",("ha_update_row() returns error %d",error));
- table->file->print_error(error, MYF(0));
- }
-
- DBUG_RETURN(error);
- }
- else
- {
- DBUG_PRINT("info",("Deleting offending row and trying to write new one again"));
- if (unlikely((error= table->file->ha_delete_row(table->record[1]))))
- {
- DBUG_PRINT("info",("ha_delete_row() returns error %d",error));
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
- /* Will retry ha_write_row() with the offending row removed. */
- }
- }
-
- DBUG_RETURN(error);
-}
-
-
-/**
- Locate the current row in event's table.
-
- The current row is pointed by @c m_curr_row. Member @c m_width tells how many
- columns are there in the row (this can be differnet from the number of columns
- in the table). It is assumed that event's table is already open and pointed
- by @c m_table.
-
- If a corresponding record is found in the table it is stored in
- @c m_table->record[0]. Note that when record is located based on a primary
- key, it is possible that the record found differs from the row being located.
-
- If no key is specified or table does not have keys, a table scan is used to
- find the row. In that case the row should be complete and contain values for
- all columns. However, it can still be shorter than the table, i.e. the table
- can contain extra columns not present in the row. It is also possible that
- the table has fewer columns than the row being located.
-
- @returns Error code on failure, 0 on success.
-
- @post In case of success @c m_table->record[0] contains the record found.
- Also, the internal "cursor" of the table is positioned at the record found.
-
- @note If the engine allows random access of the records, a combination of
- @c position() and @c rnd_pos() will be used.
-
- Note that one MUST call ha_index_or_rnd_end() after this function if
- it returns 0 as we must leave the row position in the handler intact
- for any following update/delete command.
-*/
-
-int Old_rows_log_event::find_row(rpl_group_info *rgi)
-{
- DBUG_ENTER("find_row");
-
- DBUG_ASSERT(m_table && m_table->in_use != NULL);
-
- TABLE *table= m_table;
- int error;
-
- /* unpack row - missing fields get default values */
-
- // TODO: shall we check and report errors here?
- prepare_record(table, m_width, FALSE /* don't check errors */);
- error= unpack_current_row(rgi);
-
-#ifndef DBUG_OFF
- DBUG_PRINT("info",("looking for the following record"));
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
-#endif
-
- if ((table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) &&
- table->s->primary_key < MAX_KEY)
- {
- /*
- Use a more efficient method to fetch the record given by
- table->record[0] if the engine allows it. We first compute a
- row reference using the position() member function (it will be
- stored in table->file->ref) and the use rnd_pos() to position
- the "cursor" (i.e., record[0] in this case) at the correct row.
-
- TODO: Add a check that the correct record has been fetched by
- comparing with the original record. Take into account that the
- record on the master and slave can be of different
- length. Something along these lines should work:
-
- ADD>>> store_record(table,record[1]);
- int error= table->file->ha_rnd_pos(table->record[0], table->file->ref);
- ADD>>> DBUG_ASSERT(memcmp(table->record[1], table->record[0],
- table->s->reclength) == 0);
-
- */
- DBUG_PRINT("info",("locating record using primary key (position)"));
- int error= table->file->ha_rnd_pos_by_record(table->record[0]);
- if (unlikely(error))
- {
- DBUG_PRINT("info",("rnd_pos returns error %d",error));
- table->file->print_error(error, MYF(0));
- }
- DBUG_RETURN(error);
- }
-
- // We can't use position() - try other methods.
-
- /*
- We need to retrieve all fields
- TODO: Move this out from this function to main loop
- */
- table->use_all_columns();
-
- /*
- Save copy of the record in table->record[1]. It might be needed
- later if linear search is used to find exact match.
- */
- store_record(table,record[1]);
-
- if (table->s->keys > 0)
- {
- DBUG_PRINT("info",("locating record using primary key (index_read)"));
-
- /* We have a key: search the table using the index */
- if (!table->file->inited &&
- unlikely(error= table->file->ha_index_init(0, FALSE)))
- {
- DBUG_PRINT("info",("ha_index_init returns error %d",error));
- table->file->print_error(error, MYF(0));
- DBUG_RETURN(error);
- }
-
- /* Fill key data for the row */
-
- DBUG_ASSERT(m_key);
- key_copy(m_key, table->record[0], table->key_info, 0);
-
- /*
- Don't print debug messages when running valgrind since they can
- trigger false warnings.
- */
-#ifndef HAVE_valgrind
- DBUG_DUMP("key data", m_key, table->key_info->key_length);
-#endif
-
- /*
- We need to set the null bytes to ensure that the filler bit are
- all set when returning. There are storage engines that just set
- the necessary bits on the bytes and don't set the filler bits
- correctly.
- */
- my_ptrdiff_t const pos=
- table->s->null_bytes > 0 ? table->s->null_bytes - 1 : 0;
- table->record[0][pos]= 0xFF;
-
- if (unlikely((error= table->file->ha_index_read_map(table->record[0],
- m_key,
- HA_WHOLE_KEY,
- HA_READ_KEY_EXACT))))
- {
- DBUG_PRINT("info",("no record matching the key found in the table"));
- table->file->print_error(error, MYF(0));
- table->file->ha_index_end();
- DBUG_RETURN(error);
- }
-
- /*
- Don't print debug messages when running valgrind since they can
- trigger false warnings.
- */
-#ifndef HAVE_valgrind
- DBUG_PRINT("info",("found first matching record"));
- DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
-#endif
- /*
- Below is a minor "optimization". If the key (i.e., key number
- 0) has the HA_NOSAME flag set, we know that we have found the
- correct record (since there can be no duplicates); otherwise, we
- have to compare the record with the one found to see if it is
- the correct one.
-
- CAVEAT! This behaviour is essential for the replication of,
- e.g., the mysql.proc table since the correct record *shall* be
- found using the primary key *only*. There shall be no
- comparison of non-PK columns to decide if the correct record is
- found. I can see no scenario where it would be incorrect to
- chose the row to change only using a PK or an UNNI.
- */
- if (table->key_info->flags & HA_NOSAME)
- {
- /* Unique does not have non nullable part */
- if (!(table->key_info->flags & (HA_NULL_PART_KEY)))
- {
- DBUG_RETURN(0);
- }
- else
- {
- KEY *keyinfo= table->key_info;
- /*
- Unique has nullable part. We need to check if there is any
- field in the BI image that is null and part of UNNI.
- */
- bool null_found= FALSE;
- for (uint i=0; i < keyinfo->user_defined_key_parts && !null_found; i++)
- {
- uint fieldnr= keyinfo->key_part[i].fieldnr - 1;
- Field **f= table->field+fieldnr;
- null_found= (*f)->is_null();
- }
-
- if (!null_found)
- {
- DBUG_RETURN(0);
- }
-
- /* else fall through to index scan */
- }
- }
-
- /*
- In case key is not unique, we still have to iterate over records found
- and find the one which is identical to the row given. A copy of the
- record we are looking for is stored in record[1].
- */
- DBUG_PRINT("info",("non-unique index, scanning it to find matching record"));
-
- while (record_compare(table))
- {
- while (unlikely(error= table->file->ha_index_next(table->record[0])))
- {
- DBUG_PRINT("info",("no record matching the given row found"));
- table->file->print_error(error, MYF(0));
- (void) table->file->ha_index_end();
- DBUG_RETURN(error);
- }
- }
- }
- else
- {
- DBUG_PRINT("info",("locating record using table scan (rnd_next)"));
-
- int restart_count= 0; // Number of times scanning has restarted from top
-
- /* We don't have a key: search the table using rnd_next() */
- if (unlikely((error= table->file->ha_rnd_init_with_error(1))))
- {
- DBUG_PRINT("info",("error initializing table scan"
- " (ha_rnd_init returns %d)",error));
- DBUG_RETURN(error);
- }
-
- /* Continue until we find the right record or have made a full loop */
- do
- {
- restart_rnd_next:
- error= table->file->ha_rnd_next(table->record[0]);
-
- switch (error) {
-
- case 0:
- break;
-
- case HA_ERR_END_OF_FILE:
- if (++restart_count < 2)
- {
- int error2;
- table->file->ha_rnd_end();
- if (unlikely((error2= table->file->ha_rnd_init_with_error(1))))
- DBUG_RETURN(error2);
- goto restart_rnd_next;
- }
- break;
-
- default:
- DBUG_PRINT("info", ("Failed to get next record"
- " (rnd_next returns %d)",error));
- table->file->print_error(error, MYF(0));
- table->file->ha_rnd_end();
- DBUG_RETURN(error);
- }
- }
- while (restart_count < 2 && record_compare(table));
-
- /*
- Note: above record_compare will take into accout all record fields
- which might be incorrect in case a partial row was given in the event
- */
-
- /*
- Have to restart the scan to be able to fetch the next row.
- */
- if (restart_count == 2)
- DBUG_PRINT("info", ("Record not found"));
- else
- DBUG_DUMP("record found", table->record[0], table->s->reclength);
- if (error)
- table->file->ha_rnd_end();
-
- DBUG_ASSERT(error == HA_ERR_END_OF_FILE || error == 0);
- DBUG_RETURN(error);
- }
-
- DBUG_RETURN(0);
-}
-
-#endif
-
-
-/**************************************************************************
- Write_rows_log_event member functions
-**************************************************************************/
-
-/*
- Constructor used to build an event for writing to the binary log.
- */
-#if !defined(MYSQL_CLIENT)
-Write_rows_log_event_old::Write_rows_log_event_old(THD *thd_arg,
- TABLE *tbl_arg,
- ulonglong tid_arg,
- MY_BITMAP const *cols,
- bool is_transactional)
- : Old_rows_log_event(thd_arg, tbl_arg, tid_arg, cols, is_transactional)
-{
-
- // This constructor should not be reached.
- assert(0);
-
-}
-#endif
-
-
-/*
- Constructor used by slave to read the event from the binary log.
- */
-#ifdef HAVE_REPLICATION
-Write_rows_log_event_old::Write_rows_log_event_old(const uchar *buf,
- uint event_len,
- const Format_description_log_event
- *description_event)
-: Old_rows_log_event(buf, event_len, PRE_GA_WRITE_ROWS_EVENT,
- description_event)
-{
-}
-#endif
-
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-int
-Write_rows_log_event_old::do_before_row_operations(const Slave_reporting_capability *const)
-{
- int error= 0;
-
- /*
- We are using REPLACE semantics and not INSERT IGNORE semantics
- when writing rows, that is: new rows replace old rows. We need to
- inform the storage engine that it should use this behaviour.
- */
-
- /* Tell the storage engine that we are using REPLACE semantics. */
- thd->lex->duplicates= DUP_REPLACE;
-
- thd->lex->sql_command= SQLCOM_REPLACE;
- /*
- Do not raise the error flag in case of hitting to an unique attribute
- */
- m_table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
- m_table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
- m_table->file->extra(HA_EXTRA_IGNORE_NO_KEY);
- m_table->file->ha_start_bulk_insert(0);
- return error;
-}
-
-
-int
-Write_rows_log_event_old::do_after_row_operations(const Slave_reporting_capability *const,
- int error)
-{
- int local_error= 0;
- m_table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
- m_table->file->extra(HA_EXTRA_WRITE_CANNOT_REPLACE);
- /*
- resetting the extra with
- table->file->extra(HA_EXTRA_NO_IGNORE_NO_KEY);
- fires bug#27077
- todo: explain or fix
- */
- if (unlikely((local_error= m_table->file->ha_end_bulk_insert())))
- {
- m_table->file->print_error(local_error, MYF(0));
- }
- return error? error : local_error;
-}
-
-
-int
-Write_rows_log_event_old::do_exec_row(rpl_group_info *rgi)
-{
- DBUG_ASSERT(m_table != NULL);
- int error= write_row(rgi, TRUE /* overwrite */);
-
- if (unlikely(error) && !thd->net.last_errno)
- thd->net.last_errno= error;
-
- return error;
-}
-
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-
-
-#ifdef MYSQL_CLIENT
-bool Write_rows_log_event_old::print(FILE *file,
- PRINT_EVENT_INFO* print_event_info)
-{
- return Old_rows_log_event::print_helper(file, print_event_info,
- "Write_rows_old");
-}
-#endif
-
-
-/**************************************************************************
- Delete_rows_log_event member functions
-**************************************************************************/
-
-/*
- Constructor used to build an event for writing to the binary log.
- */
-
-#ifndef MYSQL_CLIENT
-Delete_rows_log_event_old::Delete_rows_log_event_old(THD *thd_arg,
- TABLE *tbl_arg,
- ulonglong tid,
- MY_BITMAP const *cols,
- bool is_transactional)
- : Old_rows_log_event(thd_arg, tbl_arg, tid, cols, is_transactional),
- m_after_image(NULL), m_memory(NULL)
-{
-
- // This constructor should not be reached.
- assert(0);
-
-}
-#endif /* #if !defined(MYSQL_CLIENT) */
-
-
-/*
- Constructor used by slave to read the event from the binary log.
- */
-#ifdef HAVE_REPLICATION
-Delete_rows_log_event_old::
-Delete_rows_log_event_old(const uchar *buf,
- uint event_len,
- const Format_description_log_event
- *description_event)
- :Old_rows_log_event(buf, event_len, PRE_GA_DELETE_ROWS_EVENT,
- description_event),
- m_after_image(NULL), m_memory(NULL)
-{
-}
-#endif
-
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-
-int Delete_rows_log_event_old::
-do_before_row_operations(const Slave_reporting_capability *const)
-{
- if ((m_table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) &&
- m_table->s->primary_key < MAX_KEY)
- {
- /*
- We don't need to allocate any memory for m_key since it is not used.
- */
- return 0;
- }
-
- if (m_table->s->keys > 0)
- {
- // Allocate buffer for key searches
- m_key= (uchar*)my_malloc(key_memory_log_event_old, m_table->key_info->key_length, MYF(MY_WME));
- if (!m_key)
- return HA_ERR_OUT_OF_MEM;
- }
- return 0;
-}
-
-
-int
-Delete_rows_log_event_old::do_after_row_operations(const Slave_reporting_capability *const,
- int error)
-{
- /*error= ToDo:find out what this should really be, this triggers close_scan in nbd, returning error?*/
- m_table->file->ha_index_or_rnd_end();
- my_free(m_key);
- m_key= NULL;
-
- return error;
-}
-
-
-int Delete_rows_log_event_old::do_exec_row(rpl_group_info *rgi)
-{
- int error;
- DBUG_ASSERT(m_table != NULL);
-
- if (likely(!(error= find_row(rgi))) )
- {
- /*
- Delete the record found, located in record[0]
- */
- error= m_table->file->ha_delete_row(m_table->record[0]);
- m_table->file->ha_index_or_rnd_end();
- }
- return error;
-}
-
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-
-
-#ifdef MYSQL_CLIENT
-bool Delete_rows_log_event_old::print(FILE *file,
- PRINT_EVENT_INFO* print_event_info)
-{
- return Old_rows_log_event::print_helper(file, print_event_info,
- "Delete_rows_old");
-}
-#endif
-
-
-/**************************************************************************
- Update_rows_log_event member functions
-**************************************************************************/
-
-/*
- Constructor used to build an event for writing to the binary log.
- */
-#if !defined(MYSQL_CLIENT)
-Update_rows_log_event_old::Update_rows_log_event_old(THD *thd_arg,
- TABLE *tbl_arg,
- ulonglong tid,
- MY_BITMAP const *cols,
- bool is_transactional)
- : Old_rows_log_event(thd_arg, tbl_arg, tid, cols, is_transactional),
- m_after_image(NULL), m_memory(NULL)
-{
-
- // This constructor should not be reached.
- assert(0);
-}
-#endif /* !defined(MYSQL_CLIENT) */
-
-
-/*
- Constructor used by slave to read the event from the binary log.
- */
-#ifdef HAVE_REPLICATION
-Update_rows_log_event_old::Update_rows_log_event_old(const uchar *buf,
- uint event_len,
- const
- Format_description_log_event
- *description_event)
- : Old_rows_log_event(buf, event_len, PRE_GA_UPDATE_ROWS_EVENT,
- description_event),
- m_after_image(NULL), m_memory(NULL)
-{
-}
-#endif
-
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-
-int
-Update_rows_log_event_old::
-do_before_row_operations(const Slave_reporting_capability *const)
-{
- if (m_table->s->keys > 0)
- {
- // Allocate buffer for key searches
- m_key= (uchar*)my_malloc(key_memory_log_event_old,
- m_table->key_info->key_length, MYF(MY_WME));
- if (!m_key)
- return HA_ERR_OUT_OF_MEM;
- }
-
- return 0;
-}
-
-
-int
-Update_rows_log_event_old::
-do_after_row_operations(const Slave_reporting_capability *const, int error)
-{
- /*error= ToDo:find out what this should really be, this triggers close_scan in nbd, returning error?*/
- m_table->file->ha_index_or_rnd_end();
- my_free(m_key); // Free for multi_malloc
- m_key= NULL;
-
- return error;
-}
-
-
-int
-Update_rows_log_event_old::do_exec_row(rpl_group_info *rgi)
-{
- DBUG_ASSERT(m_table != NULL);
-
- int error= find_row(rgi);
- if (unlikely(error))
- {
- /*
- We need to read the second image in the event of error to be
- able to skip to the next pair of updates
- */
- m_curr_row= m_curr_row_end;
- unpack_current_row(rgi);
- return error;
- }
-
- /*
- This is the situation after locating BI:
-
- ===|=== before image ====|=== after image ===|===
- ^ ^
- m_curr_row m_curr_row_end
-
- BI found in the table is stored in record[0]. We copy it to record[1]
- and unpack AI to record[0].
- */
-
- store_record(m_table,record[1]);
-
- m_curr_row= m_curr_row_end;
- error= unpack_current_row(rgi); // this also updates m_curr_row_end
-
- /*
- Now we have the right row to update. The old row (the one we're
- looking for) is in record[1] and the new row is in record[0].
- */
-#ifndef HAVE_valgrind
- /*
- Don't print debug messages when running valgrind since they can
- trigger false warnings.
- */
- DBUG_PRINT("info",("Updating row in table"));
- DBUG_DUMP("old record", m_table->record[1], m_table->s->reclength);
- DBUG_DUMP("new values", m_table->record[0], m_table->s->reclength);
-#endif
-
- error= m_table->file->ha_update_row(m_table->record[1], m_table->record[0]);
- m_table->file->ha_index_or_rnd_end();
-
- if (unlikely(error == HA_ERR_RECORD_IS_THE_SAME))
- error= 0;
-
- return error;
-}
-
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-
-
-#ifdef MYSQL_CLIENT
-bool Update_rows_log_event_old::print(FILE *file,
- PRINT_EVENT_INFO* print_event_info)
-{
- return Old_rows_log_event::print_helper(file, print_event_info,
- "Update_rows_old");
-}
-#endif
diff --git a/sql/log_event_old.h b/sql/log_event_old.h
deleted file mode 100644
index 1281cb95..00000000
--- a/sql/log_event_old.h
+++ /dev/null
@@ -1,569 +0,0 @@
-/* Copyright (c) 2007, 2013, Oracle and/or its affiliates.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
-
-#ifndef LOG_EVENT_OLD_H
-#define LOG_EVENT_OLD_H
-
-/*
- Need to include this file at the proper position of log_event.h
- */
-
-
-/**
- @file
-
- @brief This file contains classes handling old formats of row-based
- binlog events.
-*/
-/*
- Around 2007-10-31, I made these classes completely separated from
- the new classes (before, there was a complex class hierarchy
- involving multiple inheritance; see BUG#31581), by simply copying
- and pasting the entire contents of Rows_log_event into
- Old_rows_log_event and the entire contents of
- {Write|Update|Delete}_rows_log_event into
- {Write|Update|Delete}_rows_log_event_old. For clarity, I will keep
- the comments marking which code was cut-and-pasted for some time.
- With the classes collapsed into one, there is probably some
- redundancy (maybe some methods can be simplified and/or removed),
- but we keep them this way for now. /Sven
-*/
-
-/* These classes are based on the v1 RowsHeaderLen */
-#undef ROWS_HEADER_LEN
-#define ROWS_HEADER_LEN ROWS_HEADER_LEN_V1
-
-/**
- @class Old_rows_log_event
-
- Base class for the three types of row-based events
- {Write|Update|Delete}_row_log_event_old, with event type codes
- PRE_GA_{WRITE|UPDATE|DELETE}_ROWS_EVENT. These events are never
- created any more, except when reading a relay log created by an old
- server.
-*/
-class Old_rows_log_event : public Log_event
-{
- /********** BEGIN CUT & PASTE FROM Rows_log_event **********/
-public:
- /**
- Enumeration of the errors that can be returned.
- */
- enum enum_error
- {
- ERR_OPEN_FAILURE = -1, /**< Failure to open table */
- ERR_OK = 0, /**< No error */
- ERR_TABLE_LIMIT_EXCEEDED = 1, /**< No more room for tables */
- ERR_OUT_OF_MEM = 2, /**< Out of memory */
- ERR_BAD_TABLE_DEF = 3, /**< Table definition does not match */
- ERR_RBR_TO_SBR = 4 /**< daisy-chanining RBR to SBR not allowed */
- };
-
- /*
- These definitions allow you to combine the flags into an
- appropriate flag set using the normal bitwise operators. The
- implicit conversion from an enum-constant to an integer is
- accepted by the compiler, which is then used to set the real set
- of flags.
- */
- enum enum_flag
- {
- /* Last event of a statement */
- STMT_END_F = (1U << 0),
-
- /* Value of the OPTION_NO_FOREIGN_KEY_CHECKS flag in thd->options */
- NO_FOREIGN_KEY_CHECKS_F = (1U << 1),
-
- /* Value of the OPTION_RELAXED_UNIQUE_CHECKS flag in thd->options */
- RELAXED_UNIQUE_CHECKS_F = (1U << 2),
-
- /**
- Indicates that rows in this event are complete, that is contain
- values for all columns of the table.
- */
- COMPLETE_ROWS_F = (1U << 3)
- };
-
- typedef uint16 flag_set;
-
- /* Special constants representing sets of flags */
- enum
- {
- RLE_NO_FLAGS = 0U
- };
-
- virtual ~Old_rows_log_event();
-
- void set_flags(flag_set flags_arg) { m_flags |= flags_arg; }
- void clear_flags(flag_set flags_arg) { m_flags &= ~flags_arg; }
- flag_set get_flags(flag_set flags_arg) const { return m_flags & flags_arg; }
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- virtual void pack_info(Protocol *protocol);
-#endif
-
-#ifdef MYSQL_CLIENT
- /* not for direct call, each derived has its own ::print() */
- virtual bool print(FILE *file, PRINT_EVENT_INFO *print_event_info)= 0;
-#endif
-
-#ifndef MYSQL_CLIENT
- int add_row_data(uchar *data, size_t length)
- {
- return do_add_row_data(data,length);
- }
-#endif
-
- /* Member functions to implement superclass interface */
- virtual int get_data_size();
-
- MY_BITMAP const *get_cols() const { return &m_cols; }
- size_t get_width() const { return m_width; }
- ulonglong get_table_id() const { return m_table_id; }
-
-#ifndef MYSQL_CLIENT
- virtual bool write_data_header();
- virtual bool write_data_body();
- virtual const char *get_db() { return m_table->s->db.str; }
-#endif
- /*
- Check that malloc() succeeded in allocating memory for the rows
- buffer and the COLS vector. Checking that an Update_rows_log_event_old
- is valid is done in the Update_rows_log_event_old::is_valid()
- function.
- */
- virtual bool is_valid() const
- {
- return m_rows_buf && m_cols.bitmap;
- }
- bool is_part_of_group() { return 1; }
-
- uint m_row_count; /* The number of rows added to the event */
-
-protected:
- /*
- The constructors are protected since you're supposed to inherit
- this class, not create instances of this class.
- */
-#ifndef MYSQL_CLIENT
- Old_rows_log_event(THD*, TABLE*, ulonglong table_id,
- MY_BITMAP const *cols, bool is_transactional);
-#endif
- Old_rows_log_event(const uchar *row_data, uint event_len,
- Log_event_type event_type,
- const Format_description_log_event *description_event);
-
-#ifdef MYSQL_CLIENT
- bool print_helper(FILE *, PRINT_EVENT_INFO *, char const *const name);
-#endif
-
-#ifndef MYSQL_CLIENT
- virtual int do_add_row_data(uchar *data, size_t length);
-#endif
-
-#ifndef MYSQL_CLIENT
- TABLE *m_table; /* The table the rows belong to */
-#endif
- ulonglong m_table_id; /* Table ID */
- MY_BITMAP m_cols; /* Bitmap denoting columns available */
- ulong m_width; /* The width of the columns bitmap */
-
- ulong m_master_reclength; /* Length of record on master side */
-
- /* Bit buffers in the same memory as the class */
- my_bitmap_map m_bitbuf[128/(sizeof(my_bitmap_map)*8)];
- my_bitmap_map m_bitbuf_ai[128/(sizeof(my_bitmap_map)*8)];
-
- uchar *m_rows_buf; /* The rows in packed format */
- uchar *m_rows_cur; /* One-after the end of the data */
- uchar *m_rows_end; /* One-after the end of the allocated space */
-
- flag_set m_flags; /* Flags for row-level events */
-
- /* helper functions */
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- const uchar *m_curr_row; /* Start of the row being processed */
- const uchar *m_curr_row_end; /* One-after the end of the current row */
- uchar *m_key; /* Buffer to keep key value during searches */
-
- int find_row(rpl_group_info *);
- int write_row(rpl_group_info *, const bool);
-
- // Unpack the current row into m_table->record[0]
- int unpack_current_row(rpl_group_info *rgi)
- {
- DBUG_ASSERT(m_table);
- ASSERT_OR_RETURN_ERROR(m_curr_row < m_rows_end, HA_ERR_CORRUPT_EVENT);
- return ::unpack_row(rgi, m_table, m_width, m_curr_row, &m_cols,
- &m_curr_row_end, &m_master_reclength, m_rows_end);
- }
-#endif
-
-private:
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- virtual int do_apply_event(rpl_group_info *rgi);
- virtual int do_update_pos(rpl_group_info *rgi);
- virtual enum_skip_reason do_shall_skip(rpl_group_info *rgi);
-
- /*
- Primitive to prepare for a sequence of row executions.
-
- DESCRIPTION
-
- Before doing a sequence of do_prepare_row() and do_exec_row()
- calls, this member function should be called to prepare for the
- entire sequence. Typically, this member function will allocate
- space for any buffers that are needed for the two member
- functions mentioned above.
-
- RETURN VALUE
-
- The member function will return 0 if all went OK, or a non-zero
- error code otherwise.
- */
- virtual
- int do_before_row_operations(const Slave_reporting_capability *const log) = 0;
-
- /*
- Primitive to clean up after a sequence of row executions.
-
- DESCRIPTION
-
- After doing a sequence of do_prepare_row() and do_exec_row(),
- this member function should be called to clean up and release
- any allocated buffers.
-
- The error argument, if non-zero, indicates an error which happened during
- row processing before this function was called. In this case, even if
- function is successful, it should return the error code given in the argument.
- */
- virtual
- int do_after_row_operations(const Slave_reporting_capability *const log,
- int error) = 0;
-
- /*
- Primitive to do the actual execution necessary for a row.
-
- DESCRIPTION
- The member function will do the actual execution needed to handle a row.
- The row is located at m_curr_row. When the function returns,
- m_curr_row_end should point at the next row (one byte after the end
- of the current row).
-
- RETURN VALUE
- 0 if execution succeeded, 1 if execution failed.
-
- */
- virtual int do_exec_row(rpl_group_info *rgi) = 0;
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-
- /********** END OF CUT & PASTE FROM Rows_log_event **********/
- protected:
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-
- int do_apply_event(Old_rows_log_event*, rpl_group_info *rgi);
-
- /*
- Primitive to prepare for a sequence of row executions.
-
- DESCRIPTION
-
- Before doing a sequence of do_prepare_row() and do_exec_row()
- calls, this member function should be called to prepare for the
- entire sequence. Typically, this member function will allocate
- space for any buffers that are needed for the two member
- functions mentioned above.
-
- RETURN VALUE
-
- The member function will return 0 if all went OK, or a non-zero
- error code otherwise.
- */
- virtual int do_before_row_operations(TABLE *table) = 0;
-
- /*
- Primitive to clean up after a sequence of row executions.
-
- DESCRIPTION
-
- After doing a sequence of do_prepare_row() and do_exec_row(),
- this member function should be called to clean up and release
- any allocated buffers.
- */
- virtual int do_after_row_operations(TABLE *table, int error) = 0;
-
- /*
- Primitive to prepare for handling one row in a row-level event.
-
- DESCRIPTION
-
- The member function prepares for execution of operations needed for one
- row in a row-level event by reading up data from the buffer containing
- the row. No specific interpretation of the data is normally done here,
- since SQL thread specific data is not available: that data is made
- available for the do_exec function.
-
- A pointer to the start of the next row, or NULL if the preparation
- failed. Currently, preparation cannot fail, but don't rely on this
- behavior.
-
- RETURN VALUE
- Error code, if something went wrong, 0 otherwise.
- */
- virtual int do_prepare_row(THD*, rpl_group_info*, TABLE*,
- uchar const *row_start,
- uchar const **row_end) = 0;
-
- /*
- Primitive to do the actual execution necessary for a row.
-
- DESCRIPTION
- The member function will do the actual execution needed to handle a row.
-
- RETURN VALUE
- 0 if execution succeeded, 1 if execution failed.
-
- */
- virtual int do_exec_row(TABLE *table) = 0;
-
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-};
-
-
-/**
- @class Write_rows_log_event_old
-
- Old class for binlog events that write new rows to a table (event
- type code PRE_GA_WRITE_ROWS_EVENT). Such events are never produced
- by this version of the server, but they may be read from a relay log
- created by an old server. New servers create events of class
- Write_rows_log_event (event type code WRITE_ROWS_EVENT) instead.
-*/
-class Write_rows_log_event_old : public Old_rows_log_event
-{
- /********** BEGIN CUT & PASTE FROM Write_rows_log_event **********/
-public:
-#if !defined(MYSQL_CLIENT)
- Write_rows_log_event_old(THD*, TABLE*, ulonglong table_id,
- MY_BITMAP const *cols, bool is_transactional);
-#endif
-#ifdef HAVE_REPLICATION
- Write_rows_log_event_old(const uchar *buf, uint event_len,
- const Format_description_log_event *description_event);
-#endif
-#if !defined(MYSQL_CLIENT)
- static bool binlog_row_logging_function(THD *thd, TABLE *table,
- bool is_transactional,
- const uchar *before_record
- __attribute__((unused)),
- const uchar *after_record)
- {
- return thd->binlog_write_row(table, is_transactional, after_record);
- }
-#endif
-
-private:
-#ifdef MYSQL_CLIENT
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
-#endif
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- virtual int do_before_row_operations(const Slave_reporting_capability *const);
- virtual int do_after_row_operations(const Slave_reporting_capability *const,int);
- virtual int do_exec_row(rpl_group_info *);
-#endif
- /********** END OF CUT & PASTE FROM Write_rows_log_event **********/
-
-public:
- enum
- {
- /* Support interface to THD::binlog_prepare_pending_rows_event */
- TYPE_CODE = PRE_GA_WRITE_ROWS_EVENT
- };
-
-private:
- virtual Log_event_type get_type_code() { return (Log_event_type)TYPE_CODE; }
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- // use old definition of do_apply_event()
- virtual int do_apply_event(rpl_group_info *rgi)
- { return Old_rows_log_event::do_apply_event(this, rgi); }
-
- // primitives for old version of do_apply_event()
- virtual int do_before_row_operations(TABLE *table);
- virtual int do_after_row_operations(TABLE *table, int error);
- virtual int do_prepare_row(THD*, rpl_group_info*, TABLE*,
- uchar const *row_start, uchar const **row_end);
- virtual int do_exec_row(TABLE *table);
-
-#endif
-};
-
-
-/**
- @class Update_rows_log_event_old
-
- Old class for binlog events that modify existing rows to a table
- (event type code PRE_GA_UPDATE_ROWS_EVENT). Such events are never
- produced by this version of the server, but they may be read from a
- relay log created by an old server. New servers create events of
- class Update_rows_log_event (event type code UPDATE_ROWS_EVENT)
- instead.
-*/
-class Update_rows_log_event_old : public Old_rows_log_event
-{
- /********** BEGIN CUT & PASTE FROM Update_rows_log_event **********/
-public:
-#ifndef MYSQL_CLIENT
- Update_rows_log_event_old(THD*, TABLE*, ulonglong table_id,
- MY_BITMAP const *cols,
- bool is_transactional);
-#endif
-
-#ifdef HAVE_REPLICATION
- Update_rows_log_event_old(const uchar *buf, uint event_len,
- const Format_description_log_event *description_event);
-#endif
-
-#if !defined(MYSQL_CLIENT)
- static bool binlog_row_logging_function(THD *thd, TABLE *table,
- bool is_transactional,
- MY_BITMAP *cols,
- uint fields,
- const uchar *before_record,
- const uchar *after_record)
- {
- return thd->binlog_update_row(table, is_transactional,
- before_record, after_record);
- }
-#endif
-
-protected:
-#ifdef MYSQL_CLIENT
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
-#endif
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- virtual int do_before_row_operations(const Slave_reporting_capability *const);
- virtual int do_after_row_operations(const Slave_reporting_capability *const,int);
- virtual int do_exec_row(rpl_group_info *);
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
- /********** END OF CUT & PASTE FROM Update_rows_log_event **********/
-
- uchar *m_after_image, *m_memory;
-
-public:
- enum
- {
- /* Support interface to THD::binlog_prepare_pending_rows_event */
- TYPE_CODE = PRE_GA_UPDATE_ROWS_EVENT
- };
-
-private:
- virtual Log_event_type get_type_code() { return (Log_event_type)TYPE_CODE; }
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- // use old definition of do_apply_event()
- virtual int do_apply_event(rpl_group_info *rgi)
- { return Old_rows_log_event::do_apply_event(this, rgi); }
-
- // primitives for old version of do_apply_event()
- virtual int do_before_row_operations(TABLE *table);
- virtual int do_after_row_operations(TABLE *table, int error);
- virtual int do_prepare_row(THD*, rpl_group_info*, TABLE*,
- uchar const *row_start, uchar const **row_end);
- virtual int do_exec_row(TABLE *table);
-#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
-};
-
-
-/**
- @class Delete_rows_log_event_old
-
- Old class for binlog events that delete existing rows from a table
- (event type code PRE_GA_DELETE_ROWS_EVENT). Such events are never
- produced by this version of the server, but they may be read from a
- relay log created by an old server. New servers create events of
- class Delete_rows_log_event (event type code DELETE_ROWS_EVENT)
- instead.
-*/
-class Delete_rows_log_event_old : public Old_rows_log_event
-{
- /********** BEGIN CUT & PASTE FROM Update_rows_log_event **********/
-public:
-#ifndef MYSQL_CLIENT
- Delete_rows_log_event_old(THD*, TABLE*, ulonglong,
- MY_BITMAP const *cols, bool is_transactional);
-#endif
-#ifdef HAVE_REPLICATION
- Delete_rows_log_event_old(const uchar *buf, uint event_len,
- const Format_description_log_event *description_event);
-#endif
-#if !defined(MYSQL_CLIENT)
- static bool binlog_row_logging_function(THD *thd, TABLE *table,
- bool is_transactional,
- MY_BITMAP *cols,
- uint fields,
- const uchar *before_record,
- const uchar *after_record
- __attribute__((unused)))
- {
- return thd->binlog_delete_row(table, is_transactional, before_record);
- }
-#endif
-
-protected:
-#ifdef MYSQL_CLIENT
- bool print(FILE *file, PRINT_EVENT_INFO *print_event_info);
-#endif
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- virtual int do_before_row_operations(const Slave_reporting_capability *const);
- virtual int do_after_row_operations(const Slave_reporting_capability *const,int);
- virtual int do_exec_row(rpl_group_info *);
-#endif
- /********** END CUT & PASTE FROM Delete_rows_log_event **********/
-
- uchar *m_after_image, *m_memory;
-
-public:
- enum
- {
- /* Support interface to THD::binlog_prepare_pending_rows_event */
- TYPE_CODE = PRE_GA_DELETE_ROWS_EVENT
- };
-
-private:
- virtual Log_event_type get_type_code() { return (Log_event_type)TYPE_CODE; }
-
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
- // use old definition of do_apply_event()
- virtual int do_apply_event(rpl_group_info *rgi)
- { return Old_rows_log_event::do_apply_event(this, rgi); }
-
- // primitives for old version of do_apply_event()
- virtual int do_before_row_operations(TABLE *table);
- virtual int do_after_row_operations(TABLE *table, int error);
- virtual int do_prepare_row(THD*, rpl_group_info*, TABLE*,
- uchar const *row_start, uchar const **row_end);
- virtual int do_exec_row(TABLE *table);
-#endif
-};
-
-
-#endif
diff --git a/sql/log_event_server.cc b/sql/log_event_server.cc
index 6e22a3ab..f7029b39 100644
--- a/sql/log_event_server.cc
+++ b/sql/log_event_server.cc
@@ -53,6 +53,7 @@
#include "wsrep_mysqld.h"
#include "sql_insert.h"
#include "sql_table.h"
+#include <mysql/service_wsrep.h>
#include <my_bitmap.h>
#include "rpl_utility.h"
@@ -232,19 +233,12 @@ static void inline slave_rows_error_report(enum loglevel level, int ha_error,
#if defined(HAVE_REPLICATION)
static void set_thd_db(THD *thd, Rpl_filter *rpl_filter,
- const char *db, uint32 db_len)
+ const LEX_CSTRING &db)
{
- char lcase_db_buf[NAME_LEN +1];
- LEX_CSTRING new_db;
- new_db.length= db_len;
- if (lower_case_table_names == 1)
- {
- strmov(lcase_db_buf, db);
- my_casedn_str(system_charset_info, lcase_db_buf);
- new_db.str= lcase_db_buf;
- }
- else
- new_db.str= db;
+ IdentBuffer<NAME_LEN> lcase_db_buf;
+ LEX_CSTRING new_db= lower_case_table_names == 1 ?
+ lcase_db_buf.copy_casedn(db).to_lex_cstring() :
+ db;
/* TODO WARNING this makes rewrite_db respect lower_case_table_names values
* for more info look MDEV-17446 */
new_db.str= rpl_filter->get_rewrite_db(new_db.str, &new_db.length);
@@ -367,37 +361,6 @@ inline bool unexpected_error_code(int unexpected_error)
}
}
-/*
- pretty_print_str()
-*/
-
-static void
-pretty_print_str(String *packet, const char *str, int len)
-{
- const char *end= str + len;
- packet->append(STRING_WITH_LEN("'"));
- while (str < end)
- {
- char c;
- switch ((c=*str++)) {
- case '\n': packet->append(STRING_WITH_LEN("\\n")); break;
- case '\r': packet->append(STRING_WITH_LEN("\\r")); break;
- case '\\': packet->append(STRING_WITH_LEN("\\\\")); break;
- case '\b': packet->append(STRING_WITH_LEN("\\b")); break;
- case '\t': packet->append(STRING_WITH_LEN("\\t")); break;
- case '\'': packet->append(STRING_WITH_LEN("\\'")); break;
- case 0 : packet->append(STRING_WITH_LEN("\\0")); break;
- default:
- packet->append(&c, 1);
- break;
- }
- }
- packet->append(STRING_WITH_LEN("'"));
-}
-#endif /* HAVE_REPLICATION */
-
-
-#if defined(HAVE_REPLICATION)
/**
Create a prefix for the temporary files that is to be used for
@@ -540,7 +503,7 @@ int append_query_string(CHARSET_INFO *csinfo, String *to,
beg= (char*) to->ptr() + to->length();
ptr= beg;
if (csinfo->escape_with_backslash_is_dangerous)
- ptr= str_to_hex(ptr, str, len);
+ ptr= str_to_hex(ptr, (uchar*)str, len);
else
{
*ptr++= '\'';
@@ -574,8 +537,8 @@ int append_query_string(CHARSET_INFO *csinfo, String *to,
**************************************************************************/
Log_event::Log_event(THD* thd_arg, uint16 flags_arg, bool using_trans)
- :log_pos(0), temp_buf(0), exec_time(0), thd(thd_arg),
- checksum_alg(BINLOG_CHECKSUM_ALG_UNDEF)
+ :log_pos(0), temp_buf(0), exec_time(0),
+ slave_exec_mode(SLAVE_EXEC_MODE_STRICT), thd(thd_arg)
{
server_id= thd->variables.server_id;
when= thd->start_time;
@@ -599,7 +562,7 @@ Log_event::Log_event(THD* thd_arg, uint16 flags_arg, bool using_trans)
Log_event::Log_event()
:temp_buf(0), exec_time(0), flags(0), cache_type(EVENT_INVALID_CACHE),
- thd(0), checksum_alg(BINLOG_CHECKSUM_ALG_UNDEF)
+ slave_exec_mode(SLAVE_EXEC_MODE_STRICT), thd(0)
{
server_id= global_system_variables.server_id;
/*
@@ -620,29 +583,17 @@ int Log_event::do_update_pos(rpl_group_info *rgi)
Relay_log_info *rli= rgi->rli;
DBUG_ENTER("Log_event::do_update_pos");
+ DBUG_ASSERT(rli);
DBUG_ASSERT(!rli->belongs_to_client());
+
/*
- rli is null when (as far as I (Guilhem) know) the caller is
- Load_log_event::do_apply_event *and* that one is called from
- Execute_load_log_event::do_apply_event. In this case, we don't
- do anything here ; Execute_load_log_event::do_apply_event will
- call Log_event::do_apply_event again later with the proper rli.
- Strictly speaking, if we were sure that rli is null only in the
- case discussed above, 'if (rli)' is useless here. But as we are
- not 100% sure, keep it for now.
-
- Matz: I don't think we will need this check with this refactoring.
+ In parallel execution, delay position update for the events that are
+ not part of event groups (format description, rotate, and such) until
+ the actual event execution reaches that point.
*/
- if (rli)
- {
- /*
- In parallel execution, delay position update for the events that are
- not part of event groups (format description, rotate, and such) until
- the actual event execution reaches that point.
- */
- if (!rgi->is_parallel_exec || is_group_event(get_type_code()))
- rli->stmt_done(log_pos, thd, rgi);
- }
+ if (!rgi->is_parallel_exec || is_group_event(get_type_code()))
+ rli->stmt_done(log_pos, thd, rgi);
+
DBUG_RETURN(0); // Cannot fail currently
}
@@ -736,85 +687,6 @@ void Log_event::init_show_field_list(THD *thd, List<Item>* field_list)
mem_root);
}
-/**
- A decider of whether to trigger checksum computation or not.
- To be invoked in Log_event::write() stack.
- The decision is positive
-
- S,M) if it's been marked for checksumming with @c checksum_alg
-
- M) otherwise, if @@global.binlog_checksum is not NONE and the event is
- directly written to the binlog file.
- The to-be-cached event decides at @c write_cache() time.
-
- Otherwise the decision is negative.
-
- @note A side effect of the method is altering Log_event::checksum_alg
- it the latter was undefined at calling.
-
- @return true Checksum should be used. Log_event::checksum_alg is set.
- @return false No checksum
-*/
-
-my_bool Log_event::need_checksum()
-{
- my_bool ret;
- DBUG_ENTER("Log_event::need_checksum");
-
- /*
- few callers of Log_event::write
- (incl FD::write, FD constructing code on the slave side, Rotate relay log
- and Stop event)
- provides their checksum alg preference through Log_event::checksum_alg.
- */
- if (checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
- ret= checksum_alg != BINLOG_CHECKSUM_ALG_OFF;
- else
- {
- ret= binlog_checksum_options && cache_type == Log_event::EVENT_NO_CACHE;
- checksum_alg= ret ? (enum_binlog_checksum_alg)binlog_checksum_options
- : BINLOG_CHECKSUM_ALG_OFF;
- }
- /*
- FD calls the methods before data_written has been calculated.
- The following invariant claims if the current is not the first
- call (and therefore data_written is not zero) then `ret' must be
- TRUE. It may not be null because FD is always checksummed.
- */
-
- DBUG_ASSERT(get_type_code() != FORMAT_DESCRIPTION_EVENT || ret ||
- data_written == 0);
-
- DBUG_ASSERT(!ret ||
- ((checksum_alg == binlog_checksum_options ||
- /*
- Stop event closes the relay-log and its checksum alg
- preference is set by the caller can be different
- from the server's binlog_checksum_options.
- */
- get_type_code() == STOP_EVENT ||
- /*
- Rotate:s can be checksummed regardless of the server's
- binlog_checksum_options. That applies to both
- the local RL's Rotate and the master's Rotate
- which IO thread instantiates via queue_binlog_ver_3_event.
- */
- get_type_code() == ROTATE_EVENT ||
- get_type_code() == START_ENCRYPTION_EVENT ||
- /* FD is always checksummed */
- get_type_code() == FORMAT_DESCRIPTION_EVENT) &&
- checksum_alg != BINLOG_CHECKSUM_ALG_OFF));
-
- DBUG_ASSERT(checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
-
- DBUG_ASSERT(((get_type_code() != ROTATE_EVENT &&
- get_type_code() != STOP_EVENT) ||
- get_type_code() != FORMAT_DESCRIPTION_EVENT) ||
- cache_type == Log_event::EVENT_NO_CACHE);
-
- DBUG_RETURN(ret);
-}
-
int Log_event_writer::write_internal(const uchar *pos, size_t len)
{
DBUG_ASSERT(!ctx || encrypt_or_write == &Log_event_writer::encrypt_and_write);
@@ -954,7 +826,7 @@ int Log_event_writer::write_footer()
Log_event::write_header()
*/
-bool Log_event::write_header(size_t event_data_length)
+bool Log_event::write_header(Log_event_writer *writer, size_t event_data_length)
{
uchar header[LOG_EVENT_HEADER_LEN];
ulong now;
@@ -963,8 +835,6 @@ bool Log_event::write_header(size_t event_data_length)
(longlong) writer->pos(), event_data_length,
(int) get_type_code()));
- writer->checksum_len= need_checksum() ? BINLOG_CHECKSUM_LEN : 0;
-
/* Store number of bytes that will be written by this event */
data_written= event_data_length + sizeof(header) + writer->checksum_len;
@@ -973,11 +843,17 @@ bool Log_event::write_header(size_t event_data_length)
change the position
*/
- if (is_artificial_event())
+ if (is_artificial_event() ||
+ cache_type == Log_event::EVENT_STMT_CACHE ||
+ cache_type == Log_event::EVENT_TRANSACTIONAL_CACHE)
{
/*
Artificial events are automatically generated and do not exist
in master's binary log, so log_pos should be set to 0.
+
+ Events written through transaction or statement cache have log_pos set
+ to 0 so that they can be copied directly to the binlog without having
+ to compute the real end_log_pos.
*/
log_pos= 0;
}
@@ -1112,7 +988,7 @@ static void store_str_with_code_and_len(uchar **dst, const char *src,
will print!
*/
-bool Query_log_event::write()
+bool Query_log_event::write(Log_event_writer *writer)
{
uchar buf[QUERY_HEADER_LEN + MAX_SIZE_LOG_EVENT_STATUS];
uchar *start, *start_of_status;
@@ -1184,7 +1060,7 @@ bool Query_log_event::write()
if (catalog_len) // i.e. this var is inited (false for 4.0 events)
{
store_str_with_code_and_len(&start,
- catalog, catalog_len, Q_CATALOG_NZ_CODE);
+ catalog, catalog_len, (uint) Q_CATALOG_NZ_CODE);
/*
In 5.0.x where x<4 masters we used to store the end zero here. This was
a waste of one byte so we don't do it in x>=4 masters. We change code to
@@ -1211,6 +1087,14 @@ bool Query_log_event::write()
int2store(start+2, auto_increment_offset);
start+= 4;
}
+
+ if (thd && (thd->used & THD::CHARACTER_SET_COLLATIONS_USED))
+ {
+ *start++= Q_CHARACTER_SET_COLLATIONS;
+ size_t len= thd->variables.character_set_collations.to_binary((char*)start);
+ start+= len;
+ }
+
if (charset_inited)
{
*start++= Q_CHARSET_CODE;
@@ -1244,18 +1128,6 @@ bool Query_log_event::write()
int8store(start, table_map_for_update);
start+= 8;
}
- if (master_data_written != 0)
- {
- /*
- Q_MASTER_DATA_WRITTEN_CODE only exists in relay logs where the master
- has binlog_version<4 and the slave has binlog_version=4. See comment
- for master_data_written in log_event.h for details.
- */
- *start++= Q_MASTER_DATA_WRITTEN_CODE;
- int4store(start, master_data_written);
- start+= 4;
- }
-
if (thd && thd->need_binlog_invoker())
{
LEX_CSTRING user;
@@ -1365,16 +1237,16 @@ bool Query_log_event::write()
event_length= ((uint) (start-buf) + get_post_header_size_for_derived() +
db_len + 1 + q_len);
- return write_header(event_length) ||
- write_data(buf, QUERY_HEADER_LEN) ||
- write_post_header_for_derived() ||
- write_data(start_of_status, (uint) status_vars_len) ||
- write_data(db, db_len + 1) ||
- write_data(query, q_len) ||
- write_footer();
+ return write_header(writer, event_length) ||
+ write_data(writer, buf, QUERY_HEADER_LEN) ||
+ write_post_header_for_derived(writer) ||
+ write_data(writer, start_of_status, (uint) status_vars_len) ||
+ write_data(writer, db, db_len + 1) ||
+ write_data(writer, query, q_len) ||
+ write_footer(writer);
}
-bool Query_compressed_log_event::write()
+bool Query_compressed_log_event::write(Log_event_writer *writer)
{
uchar *buffer;
uint32 alloc_size, compressed_size;
@@ -1393,7 +1265,7 @@ bool Query_compressed_log_event::write()
uint32 q_len_tmp= q_len;
query= (char*) buffer;
q_len= compressed_size;
- ret= Query_log_event::write();
+ ret= Query_log_event::write(writer);
query= query_tmp;
q_len= q_len_tmp;
}
@@ -1451,7 +1323,6 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
lc_time_names_number(thd_arg->variables.lc_time_names->number),
charset_database_number(0),
table_map_for_update((ulonglong)thd_arg->table_map_for_update),
- master_data_written(0),
gtid_flags_extra(thd_arg->get_binlog_flags_for_alter()),
sa_seq_no(0)
{
@@ -1939,7 +1810,7 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi,
goto end;
}
- set_thd_db(thd, rpl_filter, db, db_len);
+ set_thd_db(thd, rpl_filter, LEX_CSTRING{db, db_len});
/*
Setting the character set and collation of the current database thd->db.
@@ -2009,6 +1880,17 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi,
thd->variables.sql_mode=
(sql_mode_t) ((thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE) |
(sql_mode & ~(sql_mode_t) MODE_NO_DIR_IN_CREATE));
+
+ size_t cslen= thd->variables.character_set_collations.from_binary(
+ character_set_collations.str,
+ character_set_collations.length);
+ if (cslen != character_set_collations.length)
+ {
+ // Fatal: either a broken even, or an unknown collation ID
+ thd->variables.character_set_collations.init();
+ goto compare_errors; // QQ: report an error here?
+ }
+
if (charset_inited)
{
rpl_sql_thread_info *sql_info= thd->system_thread_info.rpl_sql_info;
@@ -2295,7 +2177,7 @@ compare_errors:
expected_error,
actual_error ? thd->get_stmt_da()->message() : "no error",
actual_error,
- print_slave_db_safe(db), query_arg);
+ safe_str(db), query_arg);
thd->is_slave_error= 1;
}
/*
@@ -2465,7 +2347,7 @@ Query_log_event::do_shall_skip(rpl_group_info *rgi)
bool
Query_log_event::peek_is_commit_rollback(const uchar *event_start,
size_t event_len,
- enum enum_binlog_checksum_alg
+ enum_binlog_checksum_alg
checksum_alg)
{
if (checksum_alg == BINLOG_CHECKSUM_ALG_CRC32)
@@ -2485,23 +2367,11 @@ Query_log_event::peek_is_commit_rollback(const uchar *event_start,
!memcmp(event_start + (event_len-9), "\0ROLLBACK", 9);
}
-#endif
-
-
-/**************************************************************************
- Start_log_event_v3 methods
-**************************************************************************/
-
-Start_log_event_v3::Start_log_event_v3()
- :Log_event(), created(0), binlog_version(BINLOG_VERSION),
- dont_set_created(0)
-{
- memcpy(server_version, ::server_version, ST_SERVER_VER_LEN);
-}
-
+/***************************************************************************
+ Format_description_log_event methods
+****************************************************************************/
-#if defined(HAVE_REPLICATION)
-void Start_log_event_v3::pack_info(Protocol *protocol)
+void Format_description_log_event::pack_info(Protocol *protocol)
{
char buf[12 + ST_SERVER_VER_LEN + 14 + 22], *pos;
pos= strmov(buf, "Server ver: ");
@@ -2510,115 +2380,13 @@ void Start_log_event_v3::pack_info(Protocol *protocol)
pos= int10_to_str(binlog_version, pos, 10);
protocol->store(buf, (uint) (pos-buf), &my_charset_bin);
}
-#endif
-
-
-bool Start_log_event_v3::write()
-{
- char buff[START_V3_HEADER_LEN];
- int2store(buff + ST_BINLOG_VER_OFFSET,binlog_version);
- memcpy(buff + ST_SERVER_VER_OFFSET,server_version,ST_SERVER_VER_LEN);
- if (!dont_set_created)
- created= get_time(); // this sets when and when_sec_part as a side effect
- int4store(buff + ST_CREATED_OFFSET,created);
- return write_header(sizeof(buff)) ||
- write_data(buff, sizeof(buff)) ||
- write_footer();
-}
-
-
-#if defined(HAVE_REPLICATION)
-
-/**
- Start_log_event_v3::do_apply_event() .
- The master started
-
- IMPLEMENTATION
- - To handle the case where the master died without having time to write
- DROP TEMPORARY TABLE, DO RELEASE_LOCK (prepared statements' deletion is
- TODO), we clean up all temporary tables that we got, if we are sure we
- can (see below).
-
- @todo
- - Remove all active user locks.
- Guilhem 2003-06: this is true but not urgent: the worst it can cause is
- the use of a bit of memory for a user lock which will not be used
- anymore. If the user lock is later used, the old one will be released. In
- other words, no deadlock problem.
-*/
-
-int Start_log_event_v3::do_apply_event(rpl_group_info *rgi)
-{
- DBUG_ENTER("Start_log_event_v3::do_apply_event");
- int error= 0;
- Relay_log_info *rli= rgi->rli;
-
- switch (binlog_version)
- {
- case 3:
- case 4:
- /*
- This can either be 4.x (then a Start_log_event_v3 is only at master
- startup so we are sure the master has restarted and cleared his temp
- tables; the event always has 'created'>0) or 5.0 (then we have to test
- 'created').
- */
- if (created)
- {
- rli->close_temporary_tables();
-
- /*
- The following is only false if we get here with a BINLOG statement
- */
- if (rli->mi)
- cleanup_load_tmpdir(&rli->mi->cmp_connection_name);
- }
- break;
-
- /*
- Now the older formats; in that case load_tmpdir is cleaned up by the I/O
- thread.
- */
- case 1:
- if (strncmp(rli->relay_log.description_event_for_exec->server_version,
- "3.23.57",7) >= 0 && created)
- {
- /*
- Can distinguish, based on the value of 'created': this event was
- generated at master startup.
- */
- rli->close_temporary_tables();
- }
- /*
- Otherwise, can't distinguish a Start_log_event generated at
- master startup and one generated by master FLUSH LOGS, so cannot
- be sure temp tables have to be dropped. So do nothing.
- */
- break;
- default:
- /*
- This case is not expected. It can be either an event corruption or an
- unsupported binary log version.
- */
- rli->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR,
- ER_THD(thd, ER_SLAVE_FATAL_ERROR),
- "Binlog version not supported");
- DBUG_RETURN(1);
- }
- DBUG_RETURN(error);
-}
#endif /* defined(HAVE_REPLICATION) */
-/***************************************************************************
- Format_description_log_event methods
-****************************************************************************/
-
-bool Format_description_log_event::write()
+bool Format_description_log_event::write(Log_event_writer *writer)
{
bool ret;
- bool no_checksum;
/*
- We don't call Start_log_event_v3::write() because this would make 2
+ We don't call Start_log_event_v::write() because this would make 2
my_b_safe_write().
*/
uchar buff[START_V3_HEADER_LEN+1];
@@ -2639,11 +2407,9 @@ bool Format_description_log_event::write()
FD_queue checksum_alg value.
*/
compile_time_assert(BINLOG_CHECKSUM_ALG_DESC_LEN == 1);
-#ifdef DBUG_ASSERT_EXISTS
- data_written= 0; // to prepare for need_checksum assert
-#endif
- uint8 checksum_byte= (uint8)
- (need_checksum() ? checksum_alg : BINLOG_CHECKSUM_ALG_OFF);
+ uint8 checksum_byte= (uint8) (used_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF ?
+ used_checksum_alg : BINLOG_CHECKSUM_ALG_OFF);
+ DBUG_ASSERT(used_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF);
/*
FD of checksum-aware server is always checksum-equipped, (V) is in,
regardless of @@global.binlog_checksum policy.
@@ -2657,17 +2423,14 @@ bool Format_description_log_event::write()
1 + 4 bytes bigger comparing to the former FD.
*/
- if ((no_checksum= (checksum_alg == BINLOG_CHECKSUM_ALG_OFF)))
- {
- checksum_alg= BINLOG_CHECKSUM_ALG_CRC32; // Forcing (V) room to fill anyway
- }
- ret= write_header(rec_size) ||
- write_data(buff, sizeof(buff)) ||
- write_data(post_header_len, number_of_event_types) ||
- write_data(&checksum_byte, sizeof(checksum_byte)) ||
- write_footer();
- if (no_checksum)
- checksum_alg= BINLOG_CHECKSUM_ALG_OFF;
+ uint orig_checksum_len= writer->checksum_len;
+ writer->checksum_len= BINLOG_CHECKSUM_LEN;
+ ret= write_header(writer, rec_size) ||
+ write_data(writer, buff, sizeof(buff)) ||
+ write_data(writer, post_header_len, number_of_event_types) ||
+ write_data(writer, &checksum_byte, sizeof(checksum_byte)) ||
+ write_footer(writer);
+ writer->checksum_len= orig_checksum_len;
return ret;
}
@@ -2740,9 +2503,8 @@ int Format_description_log_event::do_apply_event(rpl_group_info *rgi)
}
/*
- If this event comes from ourselves, there is no cleaning task to
- perform, we don't call Start_log_event_v3::do_apply_event()
- (this was just to update the log's description event).
+ If this event comes from ourselves, there is no cleaning task to perform,
+ we don't do cleanup (this was just to update the log's description event).
*/
if (server_id != (uint32) global_system_variables.server_id)
{
@@ -2755,7 +2517,24 @@ int Format_description_log_event::do_apply_event(rpl_group_info *rgi)
0, then 96, then jump to first really asked event (which is
>96). So this is ok.
*/
- ret= Start_log_event_v3::do_apply_event(rgi);
+ switch (binlog_version)
+ {
+ case 4:
+ if (created)
+ {
+ rli->close_temporary_tables();
+
+ /* The following is only false if we get here with a BINLOG statement */
+ if (rli->mi)
+ cleanup_load_tmpdir(&rli->mi->cmp_connection_name);
+ }
+ break;
+ default:
+ rli->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR,
+ ER_THD(thd, ER_SLAVE_FATAL_ERROR),
+ "Binlog version not supported");
+ ret= 1;
+ }
}
if (!ret)
@@ -2824,568 +2603,6 @@ int Start_encryption_log_event::do_update_pos(rpl_group_info *rgi)
/**************************************************************************
- Load_log_event methods
-**************************************************************************/
-
-#if defined(HAVE_REPLICATION)
-bool Load_log_event::print_query(THD *thd, bool need_db, const char *cs,
- String *buf, my_off_t *fn_start,
- my_off_t *fn_end, const char *qualify_db)
-{
- if (need_db && db && db_len)
- {
- buf->append(STRING_WITH_LEN("use "));
- append_identifier(thd, buf, db, db_len);
- buf->append(STRING_WITH_LEN("; "));
- }
-
- buf->append(STRING_WITH_LEN("LOAD DATA "));
-
- if (is_concurrent)
- buf->append(STRING_WITH_LEN("CONCURRENT "));
-
- if (fn_start)
- *fn_start= buf->length();
-
- if (check_fname_outside_temp_buf())
- buf->append(STRING_WITH_LEN("LOCAL "));
- buf->append(STRING_WITH_LEN("INFILE '"));
- buf->append_for_single_quote(fname, fname_len);
- buf->append(STRING_WITH_LEN("' "));
-
- if (sql_ex.opt_flags & REPLACE_FLAG)
- buf->append(STRING_WITH_LEN("REPLACE "));
- else if (sql_ex.opt_flags & IGNORE_FLAG)
- buf->append(STRING_WITH_LEN("IGNORE "));
-
- buf->append(STRING_WITH_LEN("INTO"));
-
- if (fn_end)
- *fn_end= buf->length();
-
- buf->append(STRING_WITH_LEN(" TABLE "));
- if (qualify_db)
- {
- append_identifier(thd, buf, qualify_db, strlen(qualify_db));
- buf->append(STRING_WITH_LEN("."));
- }
- append_identifier(thd, buf, table_name, table_name_len);
-
- if (cs != NULL)
- {
- buf->append(STRING_WITH_LEN(" CHARACTER SET "));
- buf->append(cs, strlen(cs));
- }
-
- /* We have to create all optional fields as the default is not empty */
- buf->append(STRING_WITH_LEN(" FIELDS TERMINATED BY "));
- pretty_print_str(buf, sql_ex.field_term, sql_ex.field_term_len);
- if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
- buf->append(STRING_WITH_LEN(" OPTIONALLY "));
- buf->append(STRING_WITH_LEN(" ENCLOSED BY "));
- pretty_print_str(buf, sql_ex.enclosed, sql_ex.enclosed_len);
-
- buf->append(STRING_WITH_LEN(" ESCAPED BY "));
- pretty_print_str(buf, sql_ex.escaped, sql_ex.escaped_len);
-
- buf->append(STRING_WITH_LEN(" LINES TERMINATED BY "));
- pretty_print_str(buf, sql_ex.line_term, sql_ex.line_term_len);
- if (sql_ex.line_start_len)
- {
- buf->append(STRING_WITH_LEN(" STARTING BY "));
- pretty_print_str(buf, sql_ex.line_start, sql_ex.line_start_len);
- }
-
- if ((long) skip_lines > 0)
- {
- buf->append(STRING_WITH_LEN(" IGNORE "));
- buf->append_ulonglong(skip_lines);
- buf->append(STRING_WITH_LEN(" LINES "));
- }
-
- if (num_fields)
- {
- uint i;
- const char *field= fields;
- buf->append(STRING_WITH_LEN(" ("));
- for (i = 0; i < num_fields; i++)
- {
- if (i)
- {
- /*
- Yes, the space and comma is reversed here. But this is mostly dead
- code, at most used when reading really old binlogs from old servers,
- so better just leave it as is...
- */
- buf->append(STRING_WITH_LEN(" ,"));
- }
- append_identifier(thd, buf, field, field_lens[i]);
- field+= field_lens[i] + 1;
- }
- buf->append(STRING_WITH_LEN(")"));
- }
- return 0;
-}
-
-
-void Load_log_event::pack_info(Protocol *protocol)
-{
- char query_buffer[1024];
- String query_str(query_buffer, sizeof(query_buffer), system_charset_info);
-
- query_str.length(0);
- print_query(protocol->thd, TRUE, NULL, &query_str, 0, 0, NULL);
- protocol->store(query_str.ptr(), query_str.length(), &my_charset_bin);
-}
-#endif /* defined(HAVE_REPLICATION) */
-
-
-bool Load_log_event::write_data_header()
-{
- char buf[LOAD_HEADER_LEN];
- int4store(buf + L_THREAD_ID_OFFSET, slave_proxy_id);
- int4store(buf + L_EXEC_TIME_OFFSET, exec_time);
- int4store(buf + L_SKIP_LINES_OFFSET, skip_lines);
- buf[L_TBL_LEN_OFFSET] = (char)table_name_len;
- buf[L_DB_LEN_OFFSET] = (char)db_len;
- int4store(buf + L_NUM_FIELDS_OFFSET, num_fields);
- return write_data(buf, LOAD_HEADER_LEN) != 0;
-}
-
-
-bool Load_log_event::write_data_body()
-{
- if (sql_ex.write_data(writer))
- return 1;
- if (num_fields && fields && field_lens)
- {
- if (write_data(field_lens, num_fields) ||
- write_data(fields, field_block_len))
- return 1;
- }
- return (write_data(table_name, table_name_len + 1) ||
- write_data(db, db_len + 1) ||
- write_data(fname, fname_len));
-}
-
-
-Load_log_event::Load_log_event(THD *thd_arg, const sql_exchange *ex,
- const char *db_arg, const char *table_name_arg,
- List<Item> &fields_arg,
- bool is_concurrent_arg,
- enum enum_duplicates handle_dup,
- bool ignore, bool using_trans)
- :Log_event(thd_arg,
- (thd_arg->used & THD::THREAD_SPECIFIC_USED)
- ? LOG_EVENT_THREAD_SPECIFIC_F : 0,
- using_trans),
- thread_id(thd_arg->thread_id),
- slave_proxy_id((ulong)thd_arg->variables.pseudo_thread_id),
- num_fields(0),fields(0),
- field_lens(0),field_block_len(0),
- table_name(table_name_arg ? table_name_arg : ""),
- db(db_arg), fname(ex->file_name), local_fname(FALSE),
- is_concurrent(is_concurrent_arg)
-{
- time_t end_time;
- time(&end_time);
- exec_time = (ulong) (end_time - thd_arg->start_time);
- /* db can never be a zero pointer in 4.0 */
- db_len = (uint32) strlen(db);
- table_name_len = (uint32) strlen(table_name);
- fname_len = (fname) ? (uint) strlen(fname) : 0;
- sql_ex.field_term = ex->field_term->ptr();
- sql_ex.field_term_len = (uint8) ex->field_term->length();
- sql_ex.enclosed = ex->enclosed->ptr();
- sql_ex.enclosed_len = (uint8) ex->enclosed->length();
- sql_ex.line_term = ex->line_term->ptr();
- sql_ex.line_term_len = (uint8) ex->line_term->length();
- sql_ex.line_start = ex->line_start->ptr();
- sql_ex.line_start_len = (uint8) ex->line_start->length();
- sql_ex.escaped = ex->escaped->ptr();
- sql_ex.escaped_len = (uint8) ex->escaped->length();
- sql_ex.opt_flags = 0;
- sql_ex.cached_new_format = -1;
-
- if (ex->dumpfile)
- sql_ex.opt_flags|= DUMPFILE_FLAG;
- if (ex->opt_enclosed)
- sql_ex.opt_flags|= OPT_ENCLOSED_FLAG;
-
- sql_ex.empty_flags= 0;
-
- switch (handle_dup) {
- case DUP_REPLACE:
- sql_ex.opt_flags|= REPLACE_FLAG;
- break;
- case DUP_UPDATE: // Impossible here
- case DUP_ERROR:
- break;
- }
- if (ignore)
- sql_ex.opt_flags|= IGNORE_FLAG;
-
- if (!ex->field_term->length())
- sql_ex.empty_flags |= FIELD_TERM_EMPTY;
- if (!ex->enclosed->length())
- sql_ex.empty_flags |= ENCLOSED_EMPTY;
- if (!ex->line_term->length())
- sql_ex.empty_flags |= LINE_TERM_EMPTY;
- if (!ex->line_start->length())
- sql_ex.empty_flags |= LINE_START_EMPTY;
- if (!ex->escaped->length())
- sql_ex.empty_flags |= ESCAPED_EMPTY;
-
- skip_lines = ex->skip_lines;
-
- List_iterator<Item> li(fields_arg);
- field_lens_buf.length(0);
- fields_buf.length(0);
- Item* item;
- while ((item = li++))
- {
- num_fields++;
- uchar len= (uchar) item->name.length;
- field_block_len += len + 1;
- fields_buf.append(item->name.str, len + 1);
- field_lens_buf.append((char*)&len, 1);
- }
-
- field_lens = (const uchar*)field_lens_buf.ptr();
- fields = fields_buf.ptr();
-}
-
-
-/**
- Load_log_event::set_fields()
-
- @note
- This function can not use the member variable
- for the database, since LOAD DATA INFILE on the slave
- can be for a different database than the current one.
- This is the reason for the affected_db argument to this method.
-*/
-
-void Load_log_event::set_fields(const char* affected_db,
- List<Item> &field_list,
- Name_resolution_context *context)
-{
- uint i;
- const char* field = fields;
- for (i= 0; i < num_fields; i++)
- {
- LEX_CSTRING field_name= {field, field_lens[i] };
- field_list.push_back(new (thd->mem_root)
- Item_field(thd, context,
- Lex_cstring_strlen(affected_db),
- Lex_cstring_strlen(table_name),
- field_name),
- thd->mem_root);
- field+= field_lens[i] + 1;
- }
-}
-
-
-#if defined(HAVE_REPLICATION)
-/**
- Does the data loading job when executing a LOAD DATA on the slave.
-
- @param net
- @param rli
- @param use_rli_only_for_errors If set to 1, rli is provided to
- Load_log_event::exec_event only for this
- function to have RPL_LOG_NAME and
- rli->last_slave_error, both being used by
- error reports. rli's position advancing
- is skipped (done by the caller which is
- Execute_load_log_event::exec_event).
- If set to 0, rli is provided for full use,
- i.e. for error reports and position
- advancing.
-
- @todo
- fix this; this can be done by testing rules in
- Create_file_log_event::exec_event() and then discarding Append_block and
- al.
- @todo
- this is a bug - this needs to be moved to the I/O thread
-
- @retval
- 0 Success
- @retval
- 1 Failure
-*/
-
-int Load_log_event::do_apply_event(NET* net, rpl_group_info *rgi,
- bool use_rli_only_for_errors)
-{
- Relay_log_info const *rli= rgi->rli;
- Rpl_filter *rpl_filter= rli->mi->rpl_filter;
- DBUG_ENTER("Load_log_event::do_apply_event");
-
- DBUG_ASSERT(thd->query() == 0);
- set_thd_db(thd, rpl_filter, db, db_len);
- thd->clear_error(1);
-
- /* see Query_log_event::do_apply_event() and BUG#13360 */
- DBUG_ASSERT(!rgi->m_table_map.count());
- /*
- Usually lex_start() is called by mysql_parse(), but we need it here
- as the present method does not call mysql_parse().
- */
- lex_start(thd);
- thd->lex->local_file= local_fname;
- thd->reset_for_next_command(0); // Errors are cleared above
-
- /*
- We test replicate_*_db rules. Note that we have already prepared
- the file to load, even if we are going to ignore and delete it
- now. So it is possible that we did a lot of disk writes for
- nothing. In other words, a big LOAD DATA INFILE on the master will
- still consume a lot of space on the slave (space in the relay log
- + space of temp files: twice the space of the file to load...)
- even if it will finally be ignored. TODO: fix this; this can be
- done by testing rules in Create_file_log_event::do_apply_event()
- and then discarding Append_block and al. Another way is do the
- filtering in the I/O thread (more efficient: no disk writes at
- all).
-
- Note: We do not need to execute reset_one_shot_variables() if this
- db_ok() test fails.
- Reason: The db stored in binlog events is the same for SET and for
- its companion query. If the SET is ignored because of
- db_ok(), the companion query will also be ignored, and if
- the companion query is ignored in the db_ok() test of
- ::do_apply_event(), then the companion SET also have so
- we don't need to reset_one_shot_variables().
- */
- if (rpl_filter->db_ok(thd->db.str))
- {
-#ifdef WITH_WSREP
- if (!wsrep_thd_is_applying(thd))
-#endif
- thd->set_time(when, when_sec_part);
- thd->set_query_id(next_query_id());
- thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
-
- TABLE_LIST tables;
- LEX_CSTRING db_name= { thd->strmake(thd->db.str, thd->db.length), thd->db.length };
- if (lower_case_table_names)
- my_casedn_str(system_charset_info, (char *)table_name);
- LEX_CSTRING tbl_name= { table_name, strlen(table_name) };
- tables.init_one_table(&db_name, &tbl_name, 0, TL_WRITE);
- tables.updating= 1;
-
- // the table will be opened in mysql_load
- if (rpl_filter->is_on() && !rpl_filter->tables_ok(thd->db.str, &tables))
- {
- // TODO: this is a bug - this needs to be moved to the I/O thread
- if (net)
- skip_load_data_infile(net);
- }
- else
- {
- enum enum_duplicates handle_dup;
- bool ignore= 0;
- char query_buffer[1024];
- String query_str(query_buffer, sizeof(query_buffer), system_charset_info);
- char *load_data_query;
-
- query_str.length(0);
- /*
- Forge LOAD DATA INFILE query which will be used in SHOW PROCESS LIST
- and written to slave's binlog if binlogging is on.
- */
- print_query(thd, FALSE, NULL, &query_str, NULL, NULL, NULL);
- if (!(load_data_query= (char *)thd->strmake(query_str.ptr(),
- query_str.length())))
- {
- /*
- This will set thd->fatal_error in case of OOM. So we surely will notice
- that something is wrong.
- */
- goto error;
- }
-
- thd->set_query(load_data_query, (uint) (query_str.length()));
-
- if (sql_ex.opt_flags & REPLACE_FLAG)
- handle_dup= DUP_REPLACE;
- else if (sql_ex.opt_flags & IGNORE_FLAG)
- {
- ignore= 1;
- handle_dup= DUP_ERROR;
- }
- else
- {
- /*
- When replication is running fine, if it was DUP_ERROR on the
- master then we could choose IGNORE here, because if DUP_ERROR
- suceeded on master, and data is identical on the master and slave,
- then there should be no uniqueness errors on slave, so IGNORE is
- the same as DUP_ERROR. But in the unlikely case of uniqueness errors
- (because the data on the master and slave happen to be different
- (user error or bug), we want LOAD DATA to print an error message on
- the slave to discover the problem.
-
- If reading from net (a 3.23 master), mysql_load() will change this
- to IGNORE.
- */
- handle_dup= DUP_ERROR;
- }
- /*
- We need to set thd->lex->sql_command and thd->lex->duplicates
- since InnoDB tests these variables to decide if this is a LOAD
- DATA ... REPLACE INTO ... statement even though mysql_parse()
- is not called. This is not needed in 5.0 since there the LOAD
- DATA ... statement is replicated using mysql_parse(), which
- sets the thd->lex fields correctly.
- */
- thd->lex->sql_command= SQLCOM_LOAD;
- thd->lex->duplicates= handle_dup;
-
- sql_exchange ex((char*)fname, sql_ex.opt_flags & DUMPFILE_FLAG);
- String field_term(sql_ex.field_term,sql_ex.field_term_len,log_cs);
- String enclosed(sql_ex.enclosed,sql_ex.enclosed_len,log_cs);
- String line_term(sql_ex.line_term,sql_ex.line_term_len,log_cs);
- String line_start(sql_ex.line_start,sql_ex.line_start_len,log_cs);
- String escaped(sql_ex.escaped,sql_ex.escaped_len, log_cs);
- ex.field_term= &field_term;
- ex.enclosed= &enclosed;
- ex.line_term= &line_term;
- ex.line_start= &line_start;
- ex.escaped= &escaped;
-
- ex.opt_enclosed = (sql_ex.opt_flags & OPT_ENCLOSED_FLAG);
- if (sql_ex.empty_flags & FIELD_TERM_EMPTY)
- ex.field_term->length(0);
-
- ex.skip_lines = skip_lines;
- List<Item> field_list;
- thd->lex->first_select_lex()->context.resolve_in_table_list_only(&tables);
- set_fields(tables.db.str,
- field_list, &thd->lex->first_select_lex()->context);
- thd->variables.pseudo_thread_id= thread_id;
- if (net)
- {
- // mysql_load will use thd->net to read the file
- thd->net.vio = net->vio;
- // Make sure the client does not get confused about the packet sequence
- thd->net.pkt_nr = net->pkt_nr;
- }
- /*
- It is safe to use tmp_list twice because we are not going to
- update it inside mysql_load().
- */
- List<Item> tmp_list;
- if (thd->open_temporary_tables(&tables) ||
- mysql_load(thd, &ex, &tables, field_list, tmp_list, tmp_list,
- handle_dup, ignore, net != 0))
- thd->is_slave_error= 1;
- if (thd->cuted_fields)
- {
- /* log_pos is the position of the LOAD event in the master log */
- sql_print_warning("Slave: load data infile on table '%s' at "
- "log position %llu in log '%s' produced %ld "
- "warning(s). Default database: '%s'",
- (char*) table_name, log_pos, RPL_LOG_NAME,
- (ulong) thd->cuted_fields,
- thd->get_db());
- }
- if (net)
- net->pkt_nr= thd->net.pkt_nr;
- }
- }
- else
- {
- /*
- We will just ask the master to send us /dev/null if we do not
- want to load the data.
- TODO: this a bug - needs to be done in I/O thread
- */
- if (net)
- skip_load_data_infile(net);
- }
-
-error:
- thd->net.vio = 0;
- const char *remember_db= thd->get_db();
- thd->catalog= 0;
- thd->set_db(&null_clex_str); /* will free the current database */
- thd->reset_query();
- thd->get_stmt_da()->set_overwrite_status(true);
- thd->is_error() ? trans_rollback_stmt(thd) : trans_commit_stmt(thd);
- thd->variables.option_bits&= ~(OPTION_BEGIN | OPTION_GTID_BEGIN);
- thd->get_stmt_da()->set_overwrite_status(false);
- close_thread_tables(thd);
- /*
- - If transaction rollback was requested due to deadlock
- perform it and release metadata locks.
- - If inside a multi-statement transaction,
- defer the release of metadata locks until the current
- transaction is either committed or rolled back. This prevents
- other statements from modifying the table for the entire
- duration of this transaction. This provides commit ordering
- and guarantees serializability across multiple transactions.
- - If in autocommit mode, or outside a transactional context,
- automatically release metadata locks of the current statement.
- */
- if (thd->transaction_rollback_request)
- {
- trans_rollback_implicit(thd);
- thd->release_transactional_locks();
- }
- else if (! thd->in_multi_stmt_transaction_mode())
- thd->release_transactional_locks();
- else
- thd->mdl_context.release_statement_locks();
-
- DBUG_EXECUTE_IF("LOAD_DATA_INFILE_has_fatal_error",
- thd->is_slave_error= 0; thd->is_fatal_error= 1;);
-
- if (unlikely(thd->is_slave_error))
- {
- /* this err/sql_errno code is copy-paste from net_send_error() */
- const char *err;
- int sql_errno;
- if (thd->is_error())
- {
- err= thd->get_stmt_da()->message();
- sql_errno= thd->get_stmt_da()->sql_errno();
- }
- else
- {
- sql_errno=ER_UNKNOWN_ERROR;
- err= ER_THD(thd, sql_errno);
- }
- rli->report(ERROR_LEVEL, sql_errno, rgi->gtid_info(), "\
-Error '%s' running LOAD DATA INFILE on table '%s'. Default database: '%s'",
- err, (char*)table_name, remember_db);
- free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC));
- DBUG_RETURN(1);
- }
- free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC));
-
- if (unlikely(thd->is_fatal_error))
- {
- char buf[256];
- my_snprintf(buf, sizeof(buf),
- "Running LOAD DATA INFILE on table '%-.64s'."
- " Default database: '%-.64s'",
- (char*)table_name,
- remember_db);
-
- rli->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR, rgi->gtid_info(),
- ER_THD(thd, ER_SLAVE_FATAL_ERROR), buf);
- DBUG_RETURN(1);
- }
-
- DBUG_RETURN( use_rli_only_for_errors ? 0 : Log_event::do_apply_event(rgi) );
-}
-#endif
-
-
-/**************************************************************************
Rotate_log_event methods
**************************************************************************/
@@ -3421,14 +2638,14 @@ Rotate_log_event::Rotate_log_event(const char* new_log_ident_arg,
}
-bool Rotate_log_event::write()
+bool Rotate_log_event::write(Log_event_writer *writer)
{
char buf[ROTATE_HEADER_LEN];
int8store(buf + R_POS_OFFSET, pos);
- return (write_header(ROTATE_HEADER_LEN + ident_len) ||
- write_data(buf, ROTATE_HEADER_LEN) ||
- write_data(new_log_ident, (uint) ident_len) ||
- write_footer());
+ return (write_header(writer, ROTATE_HEADER_LEN + ident_len) ||
+ write_data(writer, buf, ROTATE_HEADER_LEN) ||
+ write_data(writer, new_log_ident, (uint) ident_len) ||
+ write_footer(writer));
}
@@ -3578,14 +2795,14 @@ Binlog_checkpoint_log_event::Binlog_checkpoint_log_event(
}
-bool Binlog_checkpoint_log_event::write()
+bool Binlog_checkpoint_log_event::write(Log_event_writer *writer)
{
uchar buf[BINLOG_CHECKPOINT_HEADER_LEN];
int4store(buf, binlog_file_len);
- return write_header(BINLOG_CHECKPOINT_HEADER_LEN + binlog_file_len) ||
- write_data(buf, BINLOG_CHECKPOINT_HEADER_LEN) ||
- write_data(binlog_file_name, binlog_file_len) ||
- write_footer();
+ return write_header(writer, BINLOG_CHECKPOINT_HEADER_LEN + binlog_file_len) ||
+ write_data(writer, buf, BINLOG_CHECKPOINT_HEADER_LEN) ||
+ write_data(writer, binlog_file_name, binlog_file_len) ||
+ write_footer(writer);
}
@@ -3683,7 +2900,7 @@ Gtid_log_event::Gtid_log_event(THD *thd_arg, uint64 seq_no_arg,
*/
bool
Gtid_log_event::peek(const uchar *event_start, size_t event_len,
- enum enum_binlog_checksum_alg checksum_alg,
+ enum_binlog_checksum_alg checksum_alg,
uint32 *domain_id, uint32 *server_id, uint64 *seq_no,
uchar *flags2, const Format_description_log_event *fdev)
{
@@ -3714,7 +2931,7 @@ Gtid_log_event::peek(const uchar *event_start, size_t event_len,
bool
-Gtid_log_event::write()
+Gtid_log_event::write(Log_event_writer *writer)
{
uchar buf[GTID_HEADER_LEN+2+sizeof(XID) + /* flags_extra: */ 1+4];
size_t write_len= 13;
@@ -3777,9 +2994,9 @@ Gtid_log_event::write()
bzero(buf+write_len, GTID_HEADER_LEN-write_len);
write_len= GTID_HEADER_LEN;
}
- return write_header(write_len) ||
- write_data(buf, write_len) ||
- write_footer();
+ return write_header(writer, write_len) ||
+ write_data(writer, buf, write_len) ||
+ write_footer(writer);
}
@@ -3795,7 +3012,7 @@ Gtid_log_event::write()
int
Gtid_log_event::make_compatible_event(String *packet, bool *need_dummy_event,
ulong ev_offset,
- enum enum_binlog_checksum_alg checksum_alg)
+ enum_binlog_checksum_alg checksum_alg)
{
uchar flags2;
if (packet->length() - ev_offset < LOG_EVENT_HEADER_LEN + GTID_HEADER_LEN)
@@ -4067,7 +3284,7 @@ Gtid_list_log_event::to_packet(String *packet)
bool
-Gtid_list_log_event::write()
+Gtid_list_log_event::write(Log_event_writer *writer)
{
char buf[128];
String packet(buf, sizeof(buf), system_charset_info);
@@ -4075,9 +3292,9 @@ Gtid_list_log_event::write()
packet.length(0);
if (to_packet(&packet))
return true;
- return write_header(get_data_size()) ||
- write_data(packet.ptr(), packet.length()) ||
- write_footer();
+ return write_header(writer, get_data_size()) ||
+ write_data(writer, packet.ptr(), packet.length()) ||
+ write_footer(writer);
}
@@ -4171,14 +3388,14 @@ void Intvar_log_event::pack_info(Protocol *protocol)
#endif
-bool Intvar_log_event::write()
+bool Intvar_log_event::write(Log_event_writer *writer)
{
uchar buf[9];
buf[I_TYPE_OFFSET]= (uchar) type;
int8store(buf + I_VAL_OFFSET, val);
- return write_header(sizeof(buf)) ||
- write_data(buf, sizeof(buf)) ||
- write_footer();
+ return write_header(writer, sizeof(buf)) ||
+ write_data(writer, buf, sizeof(buf)) ||
+ write_footer(writer);
}
@@ -4250,14 +3467,14 @@ void Rand_log_event::pack_info(Protocol *protocol)
#endif
-bool Rand_log_event::write()
+bool Rand_log_event::write(Log_event_writer *writer)
{
uchar buf[16];
int8store(buf + RAND_SEED1_OFFSET, seed1);
int8store(buf + RAND_SEED2_OFFSET, seed2);
- return write_header(sizeof(buf)) ||
- write_data(buf, sizeof(buf)) ||
- write_footer();
+ return write_header(writer, sizeof(buf)) ||
+ write_data(writer, buf, sizeof(buf)) ||
+ write_footer(writer);
}
@@ -4529,12 +3746,12 @@ int Xid_log_event::do_commit()
#endif
-bool Xid_log_event::write()
+bool Xid_log_event::write(Log_event_writer *writer)
{
DBUG_EXECUTE_IF("do_not_write_xid", return 0;);
- return write_header(sizeof(xid)) ||
- write_data((uchar*)&xid, sizeof(xid)) ||
- write_footer();
+ return write_header(writer, sizeof(xid)) ||
+ write_data(writer, (uchar*)&xid, sizeof(xid)) ||
+ write_footer(writer);
}
/**************************************************************************
@@ -4580,7 +3797,7 @@ int XA_prepare_log_event::do_commit()
#endif // HAVE_REPLICATION
-bool XA_prepare_log_event::write()
+bool XA_prepare_log_event::write(Log_event_writer *writer)
{
uchar data[1 + 4 + 4 + 4]= {one_phase,};
uint8 one_phase_byte= one_phase;
@@ -4591,14 +3808,14 @@ bool XA_prepare_log_event::write()
DBUG_ASSERT(xid_subheader_no_data == sizeof(data) - 1);
- return write_header(sizeof(one_phase_byte) + xid_subheader_no_data +
+ return write_header(writer, sizeof(one_phase_byte) + xid_subheader_no_data +
static_cast<XID*>(xid)->gtrid_length +
static_cast<XID*>(xid)->bqual_length) ||
- write_data(data, sizeof(data)) ||
- write_data((uchar*) static_cast<XID*>(xid)->data,
+ write_data(writer, data, sizeof(data)) ||
+ write_data(writer, (uchar*) static_cast<XID*>(xid)->data,
static_cast<XID*>(xid)->gtrid_length +
static_cast<XID*>(xid)->bqual_length) ||
- write_footer();
+ write_footer(writer);
}
@@ -4713,7 +3930,7 @@ void User_var_log_event::pack_info(Protocol* protocol)
MY_CS_COLLATION_NAME_SIZE))
return;
beg= const_cast<char *>(buf.ptr()) + old_len;
- end= str_to_hex(beg, val, val_len);
+ end= str_to_hex(beg, (uchar*)val, val_len);
buf.length(old_len + (end - beg));
if (buf.append(STRING_WITH_LEN(" COLLATE ")) ||
buf.append(cs->coll_name))
@@ -4732,7 +3949,7 @@ void User_var_log_event::pack_info(Protocol* protocol)
#endif // HAVE_REPLICATION
-bool User_var_log_event::write()
+bool User_var_log_event::write(Log_event_writer *writer)
{
char buf[UV_NAME_LEN_SIZE];
char buf1[UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE +
@@ -4796,17 +4013,19 @@ bool User_var_log_event::write()
uchar unsig= m_is_unsigned ? CHUNK_UNSIGNED : CHUNK_SIGNED;
uchar data_type_name_length= (uchar) m_data_type_name.length;
- return write_header(event_length) ||
- write_data(buf, sizeof(buf)) ||
- write_data(name, name_len) ||
- write_data(buf1, buf1_length) ||
- write_data(pos, val_len) ||
- write_data(&unsig, unsigned_len) ||
- write_data(&data_type_name_chunk_signature,
+ return write_header(writer, event_length) ||
+ write_data(writer, buf, sizeof(buf)) ||
+ write_data(writer, name, name_len) ||
+ write_data(writer, buf1, buf1_length) ||
+ write_data(writer, pos, val_len) ||
+ write_data(writer, &unsig, unsigned_len) ||
+ write_data(writer, &data_type_name_chunk_signature,
data_type_name_chunk_signature_length) ||
- write_data(&data_type_name_length, data_type_name_length_length) ||
- write_data(m_data_type_name.str, (uint) m_data_type_name.length) ||
- write_footer();
+ write_data(writer, &data_type_name_length,
+ data_type_name_length_length) ||
+ write_data(writer, m_data_type_name.str,
+ (uint) m_data_type_name.length) ||
+ write_footer(writer);
}
@@ -4958,10 +4177,9 @@ User_var_log_event::do_shall_skip(rpl_group_info *rgi)
written all DROP TEMPORARY TABLE (prepared statements' deletion is
TODO only when we binlog prep stmts). We used to clean up
slave_load_tmpdir, but this is useless as it has been cleared at the
- end of LOAD DATA INFILE. So we have nothing to do here. The place
- were we must do this cleaning is in
- Start_log_event_v3::do_apply_event(), not here. Because if we come
- here, the master was sane.
+ end of LOAD DATA INFILE. So we have nothing to do here. The place were we
+ must do this cleaning is in Format_description_log_event::do_apply_event(),
+ not here. Because if we come here, the master was sane.
This must only be called from the Slave SQL thread, since it calls
Relay_log_info::flush().
@@ -4995,178 +4213,6 @@ int Stop_log_event::do_update_pos(rpl_group_info *rgi)
/**************************************************************************
- Create_file_log_event methods
-**************************************************************************/
-
-Create_file_log_event::
-Create_file_log_event(THD* thd_arg, sql_exchange* ex,
- const char* db_arg, const char* table_name_arg,
- List<Item>& fields_arg,
- bool is_concurrent_arg,
- enum enum_duplicates handle_dup,
- bool ignore,
- uchar* block_arg, uint block_len_arg, bool using_trans)
- :Load_log_event(thd_arg, ex, db_arg, table_name_arg, fields_arg,
- is_concurrent_arg,
- handle_dup, ignore, using_trans),
- fake_base(0), block(block_arg), event_buf(0), block_len(block_len_arg),
- file_id(thd_arg->file_id = mysql_bin_log.next_file_id())
-{
- DBUG_ENTER("Create_file_log_event");
- sql_ex.force_new_format();
- DBUG_VOID_RETURN;
-}
-
-
-/*
- Create_file_log_event::write_data_body()
-*/
-
-bool Create_file_log_event::write_data_body()
-{
- bool res;
- if ((res= Load_log_event::write_data_body()) || fake_base)
- return res;
- return write_data("", 1) ||
- write_data(block, block_len);
-}
-
-
-/*
- Create_file_log_event::write_data_header()
-*/
-
-bool Create_file_log_event::write_data_header()
-{
- bool res;
- uchar buf[CREATE_FILE_HEADER_LEN];
- if ((res= Load_log_event::write_data_header()) || fake_base)
- return res;
- int4store(buf + CF_FILE_ID_OFFSET, file_id);
- return write_data(buf, CREATE_FILE_HEADER_LEN) != 0;
-}
-
-
-/*
- Create_file_log_event::write_base()
-*/
-
-bool Create_file_log_event::write_base()
-{
- bool res;
- fake_base= 1; // pretend we are Load event
- res= write();
- fake_base= 0;
- return res;
-}
-
-
-#if defined(HAVE_REPLICATION)
-void Create_file_log_event::pack_info(Protocol *protocol)
-{
- char buf[SAFE_NAME_LEN*2 + 30 + 21*2], *pos;
- pos= strmov(buf, "db=");
- memcpy(pos, db, db_len);
- pos= strmov(pos + db_len, ";table=");
- memcpy(pos, table_name, table_name_len);
- pos= strmov(pos + table_name_len, ";file_id=");
- pos= int10_to_str((long) file_id, pos, 10);
- pos= strmov(pos, ";block_len=");
- pos= int10_to_str((long) block_len, pos, 10);
- protocol->store(buf, (uint) (pos-buf), &my_charset_bin);
-}
-#endif /* defined(HAVE_REPLICATION) */
-
-
-/**
- Create_file_log_event::do_apply_event()
- Constructor for Create_file_log_event to intantiate an event
- from the relay log on the slave.
-
- @retval
- 0 Success
- @retval
- 1 Failure
-*/
-
-#if defined(HAVE_REPLICATION)
-int Create_file_log_event::do_apply_event(rpl_group_info *rgi)
-{
- char fname_buf[FN_REFLEN];
- char *ext;
- int fd = -1;
- IO_CACHE file;
- Log_event_writer lew(&file, 0);
- int error = 1;
- Relay_log_info const *rli= rgi->rli;
-
- THD_STAGE_INFO(thd, stage_making_temp_file_create_before_load_data);
- bzero((char*)&file, sizeof(file));
- ext= slave_load_file_stem(fname_buf, file_id, server_id, ".info",
- &rli->mi->connection_name);
- /* old copy may exist already */
- mysql_file_delete(key_file_log_event_info, fname_buf, MYF(0));
- if ((fd= mysql_file_create(key_file_log_event_info,
- fname_buf, CREATE_MODE,
- O_WRONLY | O_BINARY | O_EXCL | O_NOFOLLOW,
- MYF(MY_WME))) < 0 ||
- init_io_cache(&file, fd, IO_SIZE, WRITE_CACHE, (my_off_t)0, 0,
- MYF(MY_WME|MY_NABP)))
- {
- rli->report(ERROR_LEVEL, my_errno, rgi->gtid_info(),
- "Error in Create_file event: could not open file '%s'",
- fname_buf);
- goto err;
- }
-
- // a trick to avoid allocating another buffer
- fname= fname_buf;
- fname_len= (uint) (strmov(ext, ".data") - fname);
- writer= &lew;
- if (write_base())
- {
- strmov(ext, ".info"); // to have it right in the error message
- rli->report(ERROR_LEVEL, my_errno, rgi->gtid_info(),
- "Error in Create_file event: could not write to file '%s'",
- fname_buf);
- goto err;
- }
- end_io_cache(&file);
- mysql_file_close(fd, MYF(0));
-
- // fname_buf now already has .data, not .info, because we did our trick
- /* old copy may exist already */
- mysql_file_delete(key_file_log_event_data, fname_buf, MYF(0));
- if ((fd= mysql_file_create(key_file_log_event_data,
- fname_buf, CREATE_MODE,
- O_WRONLY | O_BINARY | O_EXCL | O_NOFOLLOW,
- MYF(MY_WME))) < 0)
- {
- rli->report(ERROR_LEVEL, my_errno, rgi->gtid_info(),
- "Error in Create_file event: could not open file '%s'",
- fname_buf);
- goto err;
- }
- if (mysql_file_write(fd, (uchar*) block, block_len, MYF(MY_WME+MY_NABP)))
- {
- rli->report(ERROR_LEVEL, my_errno, rgi->gtid_info(),
- "Error in Create_file event: write to '%s' failed",
- fname_buf);
- goto err;
- }
- error=0; // Everything is ok
-
-err:
- if (unlikely(error))
- end_io_cache(&file);
- if (likely(fd >= 0))
- mysql_file_close(fd, MYF(0));
- return error != 0;
-}
-#endif /* defined(HAVE_REPLICATION) */
-
-
-/**************************************************************************
Append_block_log_event methods
**************************************************************************/
@@ -5181,14 +4227,14 @@ Append_block_log_event::Append_block_log_event(THD *thd_arg,
}
-bool Append_block_log_event::write()
+bool Append_block_log_event::write(Log_event_writer *writer)
{
uchar buf[APPEND_BLOCK_HEADER_LEN];
int4store(buf + AB_FILE_ID_OFFSET, file_id);
- return write_header(APPEND_BLOCK_HEADER_LEN + block_len) ||
- write_data(buf, APPEND_BLOCK_HEADER_LEN) ||
- write_data(block, block_len) ||
- write_footer();
+ return write_header(writer, APPEND_BLOCK_HEADER_LEN + block_len) ||
+ write_data(writer, buf, APPEND_BLOCK_HEADER_LEN) ||
+ write_data(writer, block, block_len) ||
+ write_footer(writer);
}
@@ -5291,13 +4337,13 @@ Delete_file_log_event::Delete_file_log_event(THD *thd_arg, const char* db_arg,
}
-bool Delete_file_log_event::write()
+bool Delete_file_log_event::write(Log_event_writer *writer)
{
uchar buf[DELETE_FILE_HEADER_LEN];
int4store(buf + DF_FILE_ID_OFFSET, file_id);
- return write_header(sizeof(buf)) ||
- write_data(buf, sizeof(buf)) ||
- write_footer();
+ return write_header(writer, sizeof(buf)) ||
+ write_data(writer, buf, sizeof(buf)) ||
+ write_footer(writer);
}
@@ -5328,130 +4374,6 @@ int Delete_file_log_event::do_apply_event(rpl_group_info *rgi)
/**************************************************************************
- Execute_load_log_event methods
-**************************************************************************/
-
-Execute_load_log_event::Execute_load_log_event(THD *thd_arg,
- const char* db_arg,
- bool using_trans)
- :Log_event(thd_arg, 0, using_trans), file_id(thd_arg->file_id), db(db_arg)
-{
-}
-
-
-bool Execute_load_log_event::write()
-{
- uchar buf[EXEC_LOAD_HEADER_LEN];
- int4store(buf + EL_FILE_ID_OFFSET, file_id);
- return write_header(sizeof(buf)) ||
- write_data(buf, sizeof(buf)) ||
- write_footer();
-}
-
-
-#if defined(HAVE_REPLICATION)
-void Execute_load_log_event::pack_info(Protocol *protocol)
-{
- char buf[64];
- uint length;
- length= (uint) sprintf(buf, ";file_id=%u", (uint) file_id);
- protocol->store(buf, (int32) length, &my_charset_bin);
-}
-
-
-/*
- Execute_load_log_event::do_apply_event()
-*/
-
-int Execute_load_log_event::do_apply_event(rpl_group_info *rgi)
-{
- char fname[FN_REFLEN+10];
- char *ext;
- int fd;
- int error= 1;
- IO_CACHE file;
- Load_log_event *lev= 0;
- Relay_log_info const *rli= rgi->rli;
-
- ext= slave_load_file_stem(fname, file_id, server_id, ".info",
- &rli->mi->cmp_connection_name);
- if ((fd= mysql_file_open(key_file_log_event_info,
- fname, O_RDONLY | O_BINARY | O_NOFOLLOW,
- MYF(MY_WME))) < 0 ||
- init_io_cache(&file, fd, IO_SIZE, READ_CACHE, (my_off_t)0, 0,
- MYF(MY_WME|MY_NABP)))
- {
- rli->report(ERROR_LEVEL, my_errno, rgi->gtid_info(),
- "Error in Exec_load event: could not open file '%s'",
- fname);
- goto err;
- }
- if (!(lev= (Load_log_event*)
- Log_event::read_log_event(&file,
- rli->relay_log.description_event_for_exec,
- opt_slave_sql_verify_checksum)) ||
- lev->get_type_code() != NEW_LOAD_EVENT)
- {
- rli->report(ERROR_LEVEL, 0, rgi->gtid_info(), "Error in Exec_load event: "
- "file '%s' appears corrupted", fname);
- goto err;
- }
- lev->thd = thd;
- /*
- lev->do_apply_event should use rli only for errors i.e. should
- not advance rli's position.
-
- lev->do_apply_event is the place where the table is loaded (it
- calls mysql_load()).
- */
-
- if (lev->do_apply_event(0,rgi,1))
- {
- /*
- We want to indicate the name of the file that could not be loaded
- (SQL_LOADxxx).
- But as we are here we are sure the error is in rli->last_slave_error and
- rli->last_slave_errno (example of error: duplicate entry for key), so we
- don't want to overwrite it with the filename.
- What we want instead is add the filename to the current error message.
- */
- char *tmp= my_strdup(PSI_INSTRUMENT_ME, rli->last_error().message, MYF(MY_WME));
- if (tmp)
- {
- rli->report(ERROR_LEVEL, rli->last_error().number, rgi->gtid_info(),
- "%s. Failed executing load from '%s'", tmp, fname);
- my_free(tmp);
- }
- goto err;
- }
- /*
- We have an open file descriptor to the .info file; we need to close it
- or Windows will refuse to delete the file in mysql_file_delete().
- */
- if (fd >= 0)
- {
- mysql_file_close(fd, MYF(0));
- end_io_cache(&file);
- fd= -1;
- }
- mysql_file_delete(key_file_log_event_info, fname, MYF(MY_WME));
- memcpy(ext, ".data", 6);
- mysql_file_delete(key_file_log_event_data, fname, MYF(MY_WME));
- error = 0;
-
-err:
- delete lev;
- if (fd >= 0)
- {
- mysql_file_close(fd, MYF(0));
- end_io_cache(&file);
- }
- return error;
-}
-
-#endif /* defined(HAVE_REPLICATION) */
-
-/**************************************************************************
Begin_load_query_log_event methods
**************************************************************************/
@@ -5504,14 +4426,14 @@ Execute_load_query_log_event(THD *thd_arg, const char* query_arg,
bool
-Execute_load_query_log_event::write_post_header_for_derived()
+Execute_load_query_log_event::write_post_header_for_derived(Log_event_writer *writer)
{
uchar buf[EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN];
int4store(buf, file_id);
int4store(buf + 4, fn_pos_start);
int4store(buf + 4 + 4, fn_pos_end);
*(buf + 4 + 4 + 4)= (uchar) dup_handling;
- return write_data(buf, EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN);
+ return write_data(writer, buf, EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN);
}
@@ -5800,6 +4722,7 @@ inline void restore_empty_query_table_list(LEX *lex)
int Rows_log_event::do_apply_event(rpl_group_info *rgi)
{
+ DBUG_ASSERT(rgi);
Relay_log_info const *rli= rgi->rli;
TABLE* table;
DBUG_ENTER("Rows_log_event::do_apply_event(Relay_log_info*)");
@@ -5840,12 +4763,11 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
thd->set_query_timer();
/*
- If there is no locks taken, this is the first binrow event seen
- after the table map events. We should then lock all the tables
- used in the transaction and proceed with execution of the actual
- event.
+ If there are no tables open, this must be the first row event seen
+ after the table map events. We should then open and lock all tables
+ used in the transaction and proceed with execution of the actual event.
*/
- if (!thd->lock)
+ if (!thd->open_tables)
{
/*
Lock_tables() reads the contents of thd->lex, so they must be
@@ -6086,17 +5008,13 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
}
}
-#ifdef HAVE_QUERY_CACHE
/*
Moved invalidation right before the call to rows_event_stmt_cleanup(),
to avoid query cache being polluted with stale entries,
+ Query cache is not invalidated on wsrep applier here
*/
-# ifdef WITH_WSREP
- /* Query cache is not invalidated on wsrep applier here */
if (!(WSREP(thd) && wsrep_thd_is_applying(thd)))
-# endif /* WITH_WSREP */
query_cache.invalidate_locked_for_write(thd, rgi->tables_to_lock);
-#endif /* HAVE_QUERY_CACHE */
}
table= m_table= rgi->m_table_map.get_table(m_table_id);
@@ -6121,7 +5039,9 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
if (m_width == table->s->fields && bitmap_is_set_all(&m_cols))
set_flags(COMPLETE_ROWS_F);
- /*
+ Rpl_table_data rpl_data= *(RPL_TABLE_LIST*)table->pos_in_table_list;
+
+ /*
Set tables write and read sets.
Read_set contains all slave columns (in case we are going to fetch
@@ -6134,17 +5054,24 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
DBUG_PRINT_BITSET("debug", "Setting table's read_set from: %s", &m_cols);
bitmap_set_all(table->read_set);
- if (get_general_type_code() == DELETE_ROWS_EVENT ||
- get_general_type_code() == UPDATE_ROWS_EVENT)
- bitmap_intersect(table->read_set,&m_cols);
-
bitmap_set_all(table->write_set);
table->rpl_write_set= table->write_set;
- /* WRITE ROWS EVENTS store the bitmap in m_cols instead of m_cols_ai */
- MY_BITMAP *after_image= ((get_general_type_code() == UPDATE_ROWS_EVENT) ?
- &m_cols_ai : &m_cols);
- bitmap_intersect(table->write_set, after_image);
+ if (rpl_data.copy_fields)
+ /* always full rows, all bits set */;
+ else
+ if (get_general_type_code() == WRITE_ROWS_EVENT)
+ bitmap_copy(table->write_set, &m_cols); // for sequences
+ else // If online alter, leave all columns set (i.e. skip intersects)
+ if (!thd->slave_thread || !table->s->online_alter_binlog)
+ {
+ bitmap_intersect(table->read_set,&m_cols);
+ if (get_general_type_code() == UPDATE_ROWS_EVENT)
+ bitmap_intersect(table->write_set, &m_cols_ai);
+ table->mark_columns_per_binlog_row_image();
+ if (table->vfield)
+ table->mark_virtual_columns_for_write(0);
+ }
if (table->versioned())
{
@@ -6155,10 +5082,11 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
}
m_table->mark_columns_per_binlog_row_image();
- this->slave_exec_mode= slave_exec_mode_options; // fix the mode
+ if (!rpl_data.is_online_alter())
+ this->slave_exec_mode= (enum_slave_exec_mode)slave_exec_mode_options;
// Do event specific preparations
- error= do_before_row_operations(rli);
+ error= do_before_row_operations(rgi);
/*
Bug#56662 Assertion failed: next_insert_id == 0, file handler.cc
@@ -6170,7 +5098,8 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
*/
sql_mode_t saved_sql_mode= thd->variables.sql_mode;
if (!is_auto_inc_in_extra_columns())
- thd->variables.sql_mode= MODE_NO_AUTO_VALUE_ON_ZERO;
+ thd->variables.sql_mode= (rpl_data.copy_fields ? saved_sql_mode : 0)
+ | MODE_NO_AUTO_VALUE_ON_ZERO;
// row processing loop
@@ -6183,10 +5112,7 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
THD_STAGE_INFO(thd, stage_executing);
do
{
- /* in_use can have been set to NULL in close_tables_for_reopen */
- THD* old_thd= table->in_use;
- if (!table->in_use)
- table->in_use= thd;
+ DBUG_ASSERT(table->in_use);
error= do_exec_row(rgi);
@@ -6194,8 +5120,6 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
DBUG_PRINT("info", ("error: %s", HA_ERR(error)));
DBUG_ASSERT(error != HA_ERR_RECORD_DELETED);
- table->in_use = old_thd;
-
if (unlikely(error))
{
int actual_error= convert_handler_error(error, thd, table);
@@ -6205,7 +5129,7 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
ignored_error_code(actual_error) : 0);
#ifdef WITH_WSREP
- if (WSREP(thd) && thd->wsrep_applier &&
+ if (WSREP(thd) && wsrep_thd_is_applying(thd) &&
wsrep_ignored_error_code(this, actual_error))
{
idempotent_error= true;
@@ -6245,6 +5169,7 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
thd->transaction->stmt.modified_non_trans_table= TRUE;
if (likely(error == 0))
{
+ m_row_count++;
error= thd->killed_errno();
if (error && !thd->is_error())
my_error(error, MYF(0));
@@ -6252,6 +5177,8 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
} // row processing loop
while (error == 0 && (m_curr_row != m_rows_end));
+ thd->inc_examined_row_count(m_row_count);
+
/*
Restore the sql_mode after the rows event is processed.
*/
@@ -6268,7 +5195,7 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
const_cast<Relay_log_info*>(rli)->abort_slave= 1;);
}
- if (unlikely(error= do_after_row_operations(rli, error)) &&
+ if (unlikely(error= do_after_row_operations(error)) &&
ignored_error_code(convert_handler_error(error, thd, table)))
{
@@ -6279,34 +5206,40 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
thd->clear_error(1);
error= 0;
}
- } // if (table)
+ if (unlikely(error))
+ {
+ if (rpl_data.is_online_alter())
+ goto err;
+ slave_rows_error_report(ERROR_LEVEL, error, rgi, thd, table,
+ get_type_str(),
+ RPL_LOG_NAME, log_pos);
+ /*
+ @todo We should probably not call
+ reset_current_stmt_binlog_format_row() from here.
- if (unlikely(error))
- {
- slave_rows_error_report(ERROR_LEVEL, error, rgi, thd, table,
- get_type_str(),
- RPL_LOG_NAME, log_pos);
- /*
- @todo We should probably not call
- reset_current_stmt_binlog_format_row() from here.
+ Note: this applies to log_event_old.cc too.
+ /Sven
+ */
+ thd->reset_current_stmt_binlog_format_row();
+ thd->is_slave_error= 1;
+ /* remove trigger's tables */
+ goto err;
+ }
+ } // if (table)
- Note: this applies to log_event_old.cc too.
- /Sven
- */
- thd->reset_current_stmt_binlog_format_row();
- thd->is_slave_error= 1;
- /* remove trigger's tables */
- goto err;
- }
+ DBUG_ASSERT(error == 0);
- /* remove trigger's tables */
- restore_empty_query_table_list(thd->lex);
+ /*
+ Remove trigger's tables. In case of ONLINE ALTER TABLE, event doesn't own
+ the table (hence, no tables are locked), and therefore no cleanup should be
+ done after each event.
+ */
+ if (rgi->tables_to_lock_count)
+ restore_empty_query_table_list(thd->lex);
-#if defined(WITH_WSREP) && defined(HAVE_QUERY_CACHE)
if (WSREP(thd) && wsrep_thd_is_applying(thd))
- query_cache.invalidate_locked_for_write(thd, rgi->tables_to_lock);
-#endif /* WITH_WSREP && HAVE_QUERY_CACHE */
+ query_cache_invalidate_locked_for_write(thd, rgi->tables_to_lock);
if (get_flags(STMT_END_F))
{
@@ -6322,8 +5255,11 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
DBUG_RETURN(error);
err:
- restore_empty_query_table_list(thd->lex);
- rgi->slave_close_thread_tables(thd);
+ if (rgi->tables_to_lock_count)
+ {
+ restore_empty_query_table_list(thd->lex);
+ rgi->slave_close_thread_tables(thd);
+ }
thd->reset_query_timer();
DBUG_RETURN(error);
}
@@ -6476,7 +5412,7 @@ Rows_log_event::do_update_pos(rpl_group_info *rgi)
#endif /* defined(HAVE_REPLICATION) */
-bool Rows_log_event::write_data_header()
+bool Rows_log_event::write_data_header(Log_event_writer *writer)
{
uchar buf[ROWS_HEADER_LEN_V2]; // No need to init the buffer
DBUG_ASSERT(m_table_id != UINT32_MAX);
@@ -6484,14 +5420,14 @@ bool Rows_log_event::write_data_header()
{
int4store(buf + 0, (ulong) m_table_id);
int2store(buf + 4, m_flags);
- return (write_data(buf, 6));
+ return (write_data(writer, buf, 6));
});
int6store(buf + RW_MAPID_OFFSET, m_table_id);
int2store(buf + RW_FLAGS_OFFSET, m_flags);
- return write_data(buf, ROWS_HEADER_LEN);
+ return write_data(writer, buf, ROWS_HEADER_LEN_V1);
}
-bool Rows_log_event::write_data_body()
+bool Rows_log_event::write_data_body(Log_event_writer *writer)
{
/*
Note that this should be the number of *bits*, not the number of
@@ -6506,13 +5442,13 @@ bool Rows_log_event::write_data_body()
DBUG_ASSERT(static_cast<size_t>(sbuf_end - sbuf) <= sizeof(sbuf));
DBUG_DUMP("m_width", sbuf, (size_t) (sbuf_end - sbuf));
- res= res || write_data(sbuf, (size_t) (sbuf_end - sbuf));
+ res= res || write_data(writer, sbuf, (size_t) (sbuf_end - sbuf));
bitmap= (uchar*) my_alloca(bitmap_size);
bitmap_export(bitmap, &m_cols);
DBUG_DUMP("m_cols", bitmap, bitmap_size);
- res= res || write_data(bitmap, bitmap_size);
+ res= res || write_data(writer, bitmap, bitmap_size);
/*
TODO[refactor write]: Remove the "down cast" here (and elsewhere).
*/
@@ -6522,17 +5458,17 @@ bool Rows_log_event::write_data_body()
bitmap_export(bitmap, &m_cols_ai);
DBUG_DUMP("m_cols_ai", bitmap, bitmap_size);
- res= res || write_data(bitmap, bitmap_size);
+ res= res || write_data(writer, bitmap, bitmap_size);
}
DBUG_DUMP("rows", m_rows_buf, data_size);
- res= res || write_data(m_rows_buf, (size_t) data_size);
+ res= res || write_data(writer, m_rows_buf, (size_t) data_size);
my_afree(bitmap);
return res;
}
-bool Rows_log_event::write_compressed()
+bool Rows_log_event::write_compressed(Log_event_writer *writer)
{
uchar *m_rows_buf_tmp= m_rows_buf;
uchar *m_rows_cur_tmp= m_rows_cur;
@@ -6546,7 +5482,7 @@ bool Rows_log_event::write_compressed()
(uint32)(m_rows_cur_tmp - m_rows_buf_tmp), &comlen))
{
m_rows_cur= comlen + m_rows_buf;
- ret= Log_event::write();
+ ret= Log_event::write(writer);
}
my_safe_afree(m_rows_buf, alloc_size);
m_rows_buf= m_rows_buf_tmp;
@@ -6588,15 +5524,15 @@ Annotate_rows_log_event::Annotate_rows_log_event(THD *thd,
}
-bool Annotate_rows_log_event::write_data_header()
+bool Annotate_rows_log_event::write_data_header(Log_event_writer *writer)
{
return 0;
}
-bool Annotate_rows_log_event::write_data_body()
+bool Annotate_rows_log_event::write_data_body(Log_event_writer *writer)
{
- return write_data(m_query_txt, m_query_len);
+ return write_data(writer, m_query_txt, m_query_len);
}
@@ -6900,6 +5836,13 @@ check_table_map(rpl_group_info *rgi, RPL_TABLE_LIST *table_list)
DBUG_RETURN(res);
}
+table_def Table_map_log_event::get_table_def()
+{
+ return table_def(m_coltype, m_colcnt,
+ m_field_metadata, m_field_metadata_size,
+ m_null_bits, m_flags);
+}
+
int Table_map_log_event::do_apply_event(rpl_group_info *rgi)
{
RPL_TABLE_LIST *table_list;
@@ -6938,16 +5881,26 @@ int Table_map_log_event::do_apply_event(rpl_group_info *rgi)
LEX_CSTRING tmp_db_name= {db_mem, db_mem_length };
LEX_CSTRING tmp_tbl_name= {tname_mem, tname_mem_length };
- table_list->init_one_table(&tmp_db_name, &tmp_tbl_name, 0, TL_WRITE);
- table_list->table_id= DBUG_IF("inject_tblmap_same_id_maps_diff_table") ? 0 : m_table_id;
- table_list->updating= 1;
+ /*
+ The memory allocated by the table_def structure (i.e., not the
+ memory allocated *for* the table_def structure) is released
+ inside rpl_group_info::clear_tables_to_lock() by calling the
+ table_def destructor explicitly.
+ */
+ new(table_list) RPL_TABLE_LIST(&tmp_db_name, &tmp_tbl_name, TL_WRITE,
+ get_table_def(),
+ m_flags & TM_BIT_HAS_TRIGGERS_F);
+
+ table_list->table_id= DBUG_IF("inject_tblmap_same_id_maps_diff_table") ?
+ 0: m_table_id;
table_list->required_type= TABLE_TYPE_NORMAL;
+ table_list->open_type= OT_BASE_ONLY;
+ DBUG_ASSERT(table_list->updating);
DBUG_PRINT("debug", ("table: %s is mapped to %llu",
table_list->table_name.str,
table_list->table_id));
- table_list->master_had_triggers= ((m_flags & TM_BIT_HAS_TRIGGERS_F) ? 1 : 0);
- DBUG_PRINT("debug", ("table->master_had_triggers=%d",
+ DBUG_PRINT("debug", ("table->master_had_triggers=%d",
(int)table_list->master_had_triggers));
enum_tbl_map_status tblmap_status= check_table_map(rgi, table_list);
@@ -6956,23 +5909,6 @@ int Table_map_log_event::do_apply_event(rpl_group_info *rgi)
DBUG_ASSERT(thd->lex->query_tables != table_list);
/*
- Use placement new to construct the table_def instance in the
- memory allocated for it inside table_list.
-
- The memory allocated by the table_def structure (i.e., not the
- memory allocated *for* the table_def structure) is released
- inside Relay_log_info::clear_tables_to_lock() by calling the
- table_def destructor explicitly.
- */
- new (&table_list->m_tabledef)
- table_def(m_coltype, m_colcnt,
- m_field_metadata, m_field_metadata_size,
- m_null_bits, m_flags);
- table_list->m_tabledef_valid= TRUE;
- table_list->m_conv_table= NULL;
- table_list->open_type= OT_BASE_ONLY;
-
- /*
We record in the slave's information that the table should be
locked by linking the table into the list of tables to lock.
*/
@@ -7016,8 +5952,9 @@ int Table_map_log_event::do_apply_event(rpl_group_info *rgi)
execute in a user session
*/
my_error(ER_SLAVE_FATAL_ERROR, MYF(0), buf);
- }
-
+ }
+
+ table_list->~RPL_TABLE_LIST();
my_free(memory);
}
@@ -7042,7 +5979,7 @@ int Table_map_log_event::do_update_pos(rpl_group_info *rgi)
#endif /* defined(HAVE_REPLICATION) */
-bool Table_map_log_event::write_data_header()
+bool Table_map_log_event::write_data_header(Log_event_writer *writer)
{
DBUG_ASSERT(m_table_id != UINT32_MAX);
uchar buf[TABLE_MAP_HEADER_LEN];
@@ -7050,14 +5987,14 @@ bool Table_map_log_event::write_data_header()
{
int4store(buf + 0, (ulong) m_table_id);
int2store(buf + 4, m_flags);
- return (write_data(buf, 6));
+ return (write_data(writer, buf, 6));
});
int6store(buf + TM_MAPID_OFFSET, m_table_id);
int2store(buf + TM_FLAGS_OFFSET, m_flags);
- return write_data(buf, TABLE_MAP_HEADER_LEN);
+ return write_data(writer, buf, TABLE_MAP_HEADER_LEN);
}
-bool Table_map_log_event::write_data_body()
+bool Table_map_log_event::write_data_body(Log_event_writer *writer)
{
DBUG_ASSERT(m_dbnam != NULL);
DBUG_ASSERT(m_tblnam != NULL);
@@ -7078,17 +6015,17 @@ bool Table_map_log_event::write_data_body()
uchar mbuf[MAX_INT_WIDTH];
uchar *const mbuf_end= net_store_length(mbuf, m_field_metadata_size);
- return write_data(dbuf, sizeof(dbuf)) ||
- write_data(m_dbnam, m_dblen+1) ||
- write_data(tbuf, sizeof(tbuf)) ||
- write_data(m_tblnam, m_tbllen+1) ||
- write_data(cbuf, (size_t) (cbuf_end - cbuf)) ||
- write_data(m_coltype, m_colcnt) ||
- write_data(mbuf, (size_t) (mbuf_end - mbuf)) ||
- write_data(m_field_metadata, m_field_metadata_size),
- write_data(m_null_bits, (m_colcnt + 7) / 8) ||
- write_data((const uchar*) m_metadata_buf.ptr(),
- m_metadata_buf.length());
+ return write_data(writer, dbuf, sizeof(dbuf)) ||
+ write_data(writer, m_dbnam, m_dblen+1) ||
+ write_data(writer, tbuf, sizeof(tbuf)) ||
+ write_data(writer, m_tblnam, m_tbllen+1) ||
+ write_data(writer, cbuf, (size_t) (cbuf_end - cbuf)) ||
+ write_data(writer, m_coltype, m_colcnt) ||
+ write_data(writer, mbuf, (size_t) (mbuf_end - mbuf)) ||
+ write_data(writer, m_field_metadata, m_field_metadata_size),
+ write_data(writer, m_null_bits, (m_colcnt + 7) / 8) ||
+ write_data(writer, (const uchar*) m_metadata_buf.ptr(),
+ m_metadata_buf.length());
}
/**
@@ -7516,15 +6453,15 @@ Write_rows_compressed_log_event::Write_rows_compressed_log_event(
m_type = WRITE_ROWS_COMPRESSED_EVENT_V1;
}
-bool Write_rows_compressed_log_event::write()
+bool Write_rows_compressed_log_event::write(Log_event_writer *writer)
{
- return Rows_log_event::write_compressed();
+ return Rows_log_event::write_compressed(writer);
}
#if defined(HAVE_REPLICATION)
int
-Write_rows_log_event::do_before_row_operations(const Slave_reporting_capability *const)
+Write_rows_log_event::do_before_row_operations(const rpl_group_info *)
{
int error= 0;
@@ -7602,8 +6539,7 @@ Write_rows_log_event::do_before_row_operations(const Slave_reporting_capability
}
int
-Write_rows_log_event::do_after_row_operations(const Slave_reporting_capability *const,
- int error)
+Write_rows_log_event::do_after_row_operations(int error)
{
int local_error= 0;
@@ -7734,12 +6670,11 @@ is_duplicate_key_error(int errcode)
@c ha_update_row() or first deleted and then new record written.
*/
-int
-Rows_log_event::write_row(rpl_group_info *rgi,
- const bool overwrite)
+int Rows_log_event::write_row(rpl_group_info *rgi, const bool overwrite)
{
DBUG_ENTER("write_row");
- DBUG_ASSERT(m_table != NULL && thd != NULL);
+ DBUG_ASSERT(m_table != NULL);
+ DBUG_ASSERT(thd != NULL);
TABLE *table= m_table; // pointer to event's table
int error;
@@ -7821,10 +6756,8 @@ Rows_log_event::write_row(rpl_group_info *rgi,
error= update_sequence();
else while (unlikely(error= table->file->ha_write_row(table->record[0])))
{
- if (error == HA_ERR_LOCK_DEADLOCK ||
- error == HA_ERR_LOCK_WAIT_TIMEOUT ||
- (keynum= table->file->get_dup_key(error)) < 0 ||
- !overwrite)
+ if (error == HA_ERR_LOCK_DEADLOCK || error == HA_ERR_LOCK_WAIT_TIMEOUT ||
+ (keynum= table->file->get_dup_key(error)) < 0 || !overwrite)
{
DBUG_PRINT("info",("get_dup_key returns %d)", keynum));
/*
@@ -8098,7 +7031,7 @@ Write_rows_log_event::do_exec_row(rpl_group_info *rgi)
#if defined(HAVE_REPLICATION)
-uint8 Write_rows_log_event::get_trg_event_map()
+uint8 Write_rows_log_event::get_trg_event_map() const
{
return trg2bit(TRG_EVENT_INSERT) | trg2bit(TRG_EVENT_UPDATE) |
trg2bit(TRG_EVENT_DELETE);
@@ -8110,16 +7043,19 @@ uint8 Write_rows_log_event::get_trg_event_map()
**************************************************************************/
#if defined(HAVE_REPLICATION)
-/*
- Compares table->record[0] and table->record[1]
+/**
+ @brief Compares table->record[0] and table->record[1]
- Returns TRUE if different.
+ @returns true if different.
*/
static bool record_compare(TABLE *table, bool vers_from_plain= false)
{
- bool result= FALSE;
+ bool result= false;
+ bool all_values_set= bitmap_is_set_all(&table->has_value_set);
+
/**
Compare full record only if:
+ - all fields were given values
- there are no blob fields (otherwise we would also need
to compare blobs contents as well);
- there are no varchar fields (otherwise we would also need
@@ -8130,24 +7066,23 @@ static bool record_compare(TABLE *table, bool vers_from_plain= false)
*/
if ((table->s->blob_fields +
table->s->varchar_fields +
- table->s->null_fields) == 0)
+ table->s->null_fields) == 0
+ && all_values_set)
{
- result= cmp_record(table,record[1]);
+ result= cmp_record(table, record[1]);
goto record_compare_exit;
}
/* Compare null bits */
- if (memcmp(table->null_flags,
- table->null_flags+table->s->rec_buff_length,
- table->s->null_bytes))
- {
- result= TRUE; // Diff in NULL value
- goto record_compare_exit;
- }
+ if (all_values_set && memcmp(table->null_flags,
+ table->null_flags + table->s->rec_buff_length,
+ table->s->null_bytes))
+ goto record_compare_differ; // Diff in NULL value
/* Compare fields */
for (Field **ptr=table->field ; *ptr ; ptr++)
{
+ Field *f= *ptr;
/*
If the table is versioned, don't compare using the version if there is a
primary key. If there isn't a primary key, we need the version to
@@ -8157,27 +7092,118 @@ static bool record_compare(TABLE *table, bool vers_from_plain= false)
because the implicit row_end value will be set to the maximum value for
the latest row update (which is what we care about).
*/
- if (table->versioned() && (*ptr)->vers_sys_field() &&
+ if (table->versioned() && f->vers_sys_field() &&
(table->s->primary_key < MAX_KEY ||
- (vers_from_plain && table->vers_start_field() == (*ptr))))
+ (vers_from_plain && table->vers_start_field() == f)))
continue;
- /**
- We only compare field contents that are not null.
- NULL fields (i.e., their null bits) were compared
- earlier.
+
+ /*
+ We only compare fields that exist on the master (or in ONLINE
+ ALTER case, that were in the original table).
*/
- if (!(*(ptr))->is_null())
+ if (!all_values_set)
{
- if ((*ptr)->cmp_binary_offset(table->s->rec_buff_length))
- {
- result= TRUE;
- goto record_compare_exit;
- }
+ if (!f->has_explicit_value() &&
+ /* Don't skip row_end if replicating unversioned -> versioned */
+ !(vers_from_plain && table->vers_end_field() == f))
+ continue;
+ if (f->is_null() != f->is_null(table->s->rec_buff_length))
+ goto record_compare_differ;
}
+
+ if (!f->is_null() && !f->vcol_info &&
+ f->cmp_binary_offset(table->s->rec_buff_length))
+ goto record_compare_differ;
}
record_compare_exit:
return result;
+record_compare_differ:
+ return true;
+}
+/**
+ Traverses default item expr of a field, and underlying field's default values.
+ If it is an extra field and has no value replicated, then its default expr
+ should be also checked.
+ */
+class Rpl_key_part_checker: public Field_enumerator
+{
+ bool online_alter;
+ Field *next_number_field;
+ bool field_usable;
+public:
+
+
+ void visit_field(Item_field *item) override
+ {
+ if (!field_usable)
+ return;
+ field_usable= check_field(item->field);
+ }
+
+ bool check_field(Field *f)
+ {
+ if (f->has_explicit_value())
+ return true;
+
+ if ((!f->vcol_info && !online_alter) || f == next_number_field)
+ return false;
+
+ Virtual_column_info *computed= f->vcol_info ? f->vcol_info
+ : f->default_value;
+
+ if (computed == NULL)
+ return true; // No DEFAULT, or constant DEFAULT
+
+ // Deterministic DEFAULT or vcol expression
+ return !(computed->flags & VCOL_NOT_STRICTLY_DETERMINISTIC)
+ && !computed->expr->walk(&Item::enumerate_field_refs_processor,
+ false, this)
+ && field_usable;
+ }
+
+ Rpl_key_part_checker(bool online_alter, Field *next_number_field):
+ online_alter(online_alter), next_number_field(next_number_field),
+ field_usable(true) {}
+};
+
+
+/**
+ Newly added fields with non-deterministic defaults (i.e. DEFAULT(RANDOM()),
+ CURRENT_TIMESTAMP, AUTO_INCREMENT) should be excluded from key search.
+ Basically we exclude all the default-filled fields based on
+ has_explicit_value bitmap.
+*/
+uint Rows_log_event::find_key_parts(const KEY *key) const
+{
+ RPL_TABLE_LIST *tl= (RPL_TABLE_LIST*)m_table->pos_in_table_list;
+ const bool online_alter= tl->m_online_alter_copy_fields;
+ uint p;
+
+ if (!m_table->s->keys_in_use.is_set(uint(key - m_table->key_info)))
+ return 0;
+
+ if (!online_alter)
+ {
+ if (m_cols.n_bits >= m_table->s->fields) // replicated more than slave has
+ return key->user_defined_key_parts;
+ if (m_table->s->virtual_fields == 0)
+ {
+ for (p= 0; p < key->user_defined_key_parts; p++)
+ if (key->key_part[p].fieldnr > m_cols.n_bits) // extra
+ break;
+ return p;
+ }
+ }
+
+ Rpl_key_part_checker key_part_checker(online_alter,
+ m_table->found_next_number_field);
+ for (p= 0; p < key->user_defined_key_parts; p++)
+ {
+ if (!key_part_checker.check_field(key->key_part[p].field))
+ break;
+ }
+ return p;
}
@@ -8187,74 +7213,127 @@ record_compare_exit:
A primary key is preferred if it exists; otherwise a unique index is
preferred. Else we pick the index with the smalles rec_per_key value.
- If a suitable key is found, set @c m_key, @c m_key_nr and @c m_key_info
- member fields appropriately.
+ If a suitable key is found, set @c m_key, @c m_key_nr, @c m_key_info,
+ and @c m_usable_key_parts member fields appropriately.
@returns Error code on failure, 0 on success.
*/
-int Rows_log_event::find_key()
+int Rows_log_event::find_key(const rpl_group_info *rgi)
{
- uint i, best_key_nr, last_part;
- KEY *key, *UNINIT_VAR(best_key);
+ DBUG_ASSERT(m_table);
+ RPL_TABLE_LIST *tl= (RPL_TABLE_LIST*)m_table->pos_in_table_list;
+ uint i, best_key_nr= 0, best_usable_key_parts= 0;
+ KEY *key;
ulong UNINIT_VAR(best_rec_per_key), tmp;
DBUG_ENTER("Rows_log_event::find_key");
- DBUG_ASSERT(m_table);
-
- best_key_nr= MAX_KEY;
- /*
- Keys are sorted so that any primary key is first, followed by unique keys,
- followed by any other. So we will automatically pick the primary key if
- it exists.
- */
- for (i= 0, key= m_table->key_info; i < m_table->s->keys; i++, key++)
+ if ((best_key_nr= tl->cached_key_nr) != ~0U)
{
- if (!m_table->s->keys_in_use.is_set(i))
- continue;
+ DBUG_ASSERT(best_key_nr <= MAX_KEY); // use the cached value
+ best_usable_key_parts= tl->cached_usable_key_parts;
+ }
+ else
+ {
+ best_key_nr= MAX_KEY;
+
/*
- We cannot use a unique key with NULL-able columns to uniquely identify
- a row (but we can still select it for range scan below if nothing better
- is available).
+ if the source (in the row event) and destination (in m_table) records
+ don't have the same structure, some keys below might be unusable
+ for find_row().
+
+ If it's a replication and slave table (m_table) has less columns
+ than the master's - easy, all keys are usable.
+
+ If slave's table has more columns, but none of them are generated -
+ then any column beyond m_cols.n_bits makes an index unusable.
+
+ If slave's table has generated columns or it's the online alter table
+ where arbitrary structure conversion is possible (in the replication case
+ one table must be a prefix of the other, see table_def::compatible_with)
+ we cannot deduce what destination columns will be affected by m_cols,
+ we have to actually unpack one row and examine has_explicit_value()
*/
- if ((key->flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME)
+
+ if (tl->m_online_alter_copy_fields ||
+ (m_cols.n_bits < m_table->s->fields &&
+ m_table->s->virtual_fields))
{
- best_key_nr= i;
- best_key= key;
- break;
+ const uchar *curr_row_end= m_curr_row_end;
+ Check_level_instant_set clis(m_table->in_use, CHECK_FIELD_IGNORE);
+ if (int err= unpack_row(rgi, m_table, m_width, m_curr_row, &m_cols,
+ &curr_row_end, &m_master_reclength, m_rows_end))
+ DBUG_RETURN(err);
}
+
/*
- We can only use a non-unique key if it allows range scans (ie. skip
- FULLTEXT indexes and such).
+ Keys are sorted so that any primary key is first, followed by unique keys,
+ followed by any other. So we will automatically pick the primary key if
+ it exists.
*/
- last_part= key->user_defined_key_parts - 1;
- DBUG_PRINT("info", ("Index %s rec_per_key[%u]= %lu",
- key->name.str, last_part, key->rec_per_key[last_part]));
- if (!(m_table->file->index_flags(i, last_part, 1) & HA_READ_NEXT))
- continue;
-
- tmp= key->rec_per_key[last_part];
- if (best_key_nr == MAX_KEY || (tmp > 0 && tmp < best_rec_per_key))
+ for (i= 0, key= m_table->key_info; i < m_table->s->keys; i++, key++)
{
- best_key_nr= i;
- best_key= key;
- best_rec_per_key= tmp;
+ uint usable_key_parts= find_key_parts(key);
+ if (usable_key_parts == 0)
+ continue;
+ /*
+ We cannot use a unique key with NULL-able columns to uniquely identify
+ a row (but we can still select it for range scan below if nothing better
+ is available).
+ */
+ if ((key->flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME &&
+ usable_key_parts == key->user_defined_key_parts)
+ {
+ best_key_nr= i;
+ best_usable_key_parts= usable_key_parts;
+ break;
+ }
+ /*
+ We can only use a non-unique key if it allows range scans (ie. skip
+ FULLTEXT indexes and such).
+ */
+ uint last_part= usable_key_parts - 1;
+ DBUG_PRINT("info", ("Index %s rec_per_key[%u]= %lu",
+ key->name.str, last_part, key->rec_per_key[last_part]));
+ if (!(m_table->file->index_flags(i, last_part, 1) & HA_READ_NEXT))
+ continue;
+
+ tmp= key->rec_per_key[last_part];
+ if (best_key_nr == MAX_KEY || (tmp > 0 && tmp < best_rec_per_key))
+ {
+ best_key_nr= i;
+ best_usable_key_parts= usable_key_parts;
+ best_rec_per_key= tmp;
+ }
}
+ tl->cached_key_nr= best_key_nr;
+ tl->cached_usable_key_parts= best_usable_key_parts;
}
+ m_key_nr= best_key_nr;
+ m_usable_key_parts= best_usable_key_parts;
if (best_key_nr == MAX_KEY)
- {
m_key_info= NULL;
- DBUG_RETURN(0);
+ else
+ {
+ m_key_info= m_table->key_info + best_key_nr;
+
+ if (!use_pk_position())
+ {
+ // Allocate buffer for key searches
+ m_key= (uchar *) my_malloc(PSI_INSTRUMENT_ME, m_key_info->key_length, MYF(MY_WME));
+ if (m_key == NULL)
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ }
}
- // Allocate buffer for key searches
- m_key= (uchar *) my_malloc(PSI_INSTRUMENT_ME, best_key->key_length, MYF(MY_WME));
- if (m_key == NULL)
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- m_key_info= best_key;
- m_key_nr= best_key_nr;
+ DBUG_EXECUTE_IF("rpl_report_chosen_key",
+ push_warning_printf(m_table->in_use,
+ Sql_condition::WARN_LEVEL_NOTE,
+ ER_UNKNOWN_ERROR, "Key chosen: %d",
+ m_key_nr == MAX_KEY ?
+ -1 : m_key_nr););
- DBUG_RETURN(0);;
+ DBUG_RETURN(0);
}
@@ -8315,6 +7394,14 @@ static int row_not_found_error(rpl_group_info *rgi)
? HA_ERR_KEY_NOT_FOUND : HA_ERR_RECORD_CHANGED;
}
+bool Rows_log_event::use_pk_position() const
+{
+ return m_table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION
+ && m_table->s->primary_key < MAX_KEY
+ && m_key_nr == m_table->s->primary_key
+ && m_usable_key_parts == m_table->key_info->user_defined_key_parts;
+}
+
static int end_of_file_error(rpl_group_info *rgi)
{
return rgi->speculation != rpl_group_info::SPECULATE_OPTIMISTIC
@@ -8356,11 +7443,13 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
{
DBUG_ENTER("Rows_log_event::find_row");
- DBUG_ASSERT(m_table && m_table->in_use != NULL);
+ DBUG_ASSERT(m_table);
+ DBUG_ASSERT(m_table->in_use != NULL);
TABLE *table= m_table;
int error= 0;
bool is_table_scan= false, is_index_scan= false;
+ Check_level_instant_set clis(table->in_use, CHECK_FIELD_IGNORE);
/*
rpl_row_tabledefs.test specifies that
@@ -8391,8 +7480,7 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
DBUG_PRINT("info",("looking for the following record"));
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
- if ((table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) &&
- table->s->primary_key < MAX_KEY)
+ if (use_pk_position())
{
/*
Use a more efficient method to fetch the record given by
@@ -8413,7 +7501,6 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
table->s->reclength) == 0);
*/
- int error;
DBUG_PRINT("info",("locating record using primary key (position)"));
error= table->file->ha_rnd_pos_by_record(table->record[0]);
@@ -8429,12 +7516,6 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
// We can't use position() - try other methods.
- /*
- We need to retrieve all fields
- TODO: Move this out from this function to main loop
- */
- table->use_all_columns();
-
/*
Save copy of the record in table->record[1]. It might be needed
later if linear search is used to find exact match.
@@ -8481,10 +7562,13 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
table->record[0][table->s->null_bytes - 1]|=
256U - (1U << table->s->last_null_bit_pos);
- if (unlikely((error= table->file->ha_index_read_map(table->record[0],
- m_key,
- HA_WHOLE_KEY,
- HA_READ_KEY_EXACT))))
+ const enum ha_rkey_function find_flag=
+ m_usable_key_parts == m_key_info->user_defined_key_parts
+ ? HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT;
+ error= table->file->ha_index_read_map(table->record[0], m_key,
+ make_keypart_map(m_usable_key_parts),
+ find_flag);
+ if (unlikely(error))
{
DBUG_PRINT("info",("no record matching the key found in the table"));
if (error == HA_ERR_KEY_NOT_FOUND)
@@ -8516,10 +7600,10 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
found. I can see no scenario where it would be incorrect to
chose the row to change only using a PK or an UNNI.
*/
- if (table->key_info->flags & HA_NOSAME)
+ if (find_flag == HA_READ_KEY_EXACT && table->key_info->flags & HA_NOSAME)
{
/* Unique does not have non nullable part */
- if (!(table->key_info->flags & (HA_NULL_PART_KEY)))
+ if (!(table->key_info->flags & HA_NULL_PART_KEY))
{
error= 0;
goto end;
@@ -8592,9 +7676,7 @@ int Rows_log_event::find_row(rpl_group_info *rgi)
/* Continue until we find the right record or have made a full loop */
do
{
- error= table->file->ha_rnd_next(table->record[0]);
-
- if (unlikely(error))
+ if (unlikely((error= table->file->ha_rnd_next(table->record[0]))))
DBUG_PRINT("info", ("error: %s", HA_ERR(error)));
switch (error) {
@@ -8656,16 +7738,16 @@ Delete_rows_compressed_log_event::Delete_rows_compressed_log_event(
m_type= DELETE_ROWS_COMPRESSED_EVENT_V1;
}
-bool Delete_rows_compressed_log_event::write()
+bool Delete_rows_compressed_log_event::write(Log_event_writer *writer)
{
- return Rows_log_event::write_compressed();
+ return Rows_log_event::write_compressed(writer);
}
#if defined(HAVE_REPLICATION)
int
-Delete_rows_log_event::do_before_row_operations(const Slave_reporting_capability *const)
+Delete_rows_log_event::do_before_row_operations(const rpl_group_info *rgi)
{
/*
Increment the global status delete count variable
@@ -8673,23 +7755,14 @@ Delete_rows_log_event::do_before_row_operations(const Slave_reporting_capability
if (get_flags(STMT_END_F))
status_var_increment(thd->status_var.com_stat[SQLCOM_DELETE]);
- if ((m_table->file->ha_table_flags() & HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) &&
- m_table->s->primary_key < MAX_KEY)
- {
- /*
- We don't need to allocate any memory for m_key since it is not used.
- */
- return 0;
- }
if (do_invoke_trigger())
m_table->prepare_triggers_for_delete_stmt_or_event();
- return find_key();
+ return find_key(rgi);
}
int
-Delete_rows_log_event::do_after_row_operations(const Slave_reporting_capability *const,
- int error)
+Delete_rows_log_event::do_after_row_operations(int error)
{
m_table->file->ha_index_or_rnd_end();
my_free(m_key);
@@ -8748,7 +7821,6 @@ int Delete_rows_log_event::do_exec_row(rpl_group_info *rgi)
error= HA_ERR_GENERIC; // in case if error is not set yet
if (likely(!error))
{
- m_table->mark_columns_per_binlog_row_image();
if (m_vers_from_plain && m_table->versioned(VERS_TIMESTAMP))
{
Field *end= m_table->vers_end_field();
@@ -8761,7 +7833,6 @@ int Delete_rows_log_event::do_exec_row(rpl_group_info *rgi)
{
error= m_table->file->ha_delete_row(m_table->record[0]);
}
- m_table->default_column_bitmaps();
}
if (invoke_triggers && likely(!error) &&
unlikely(process_triggers(TRG_EVENT_DELETE, TRG_ACTION_AFTER, FALSE)))
@@ -8775,7 +7846,7 @@ int Delete_rows_log_event::do_exec_row(rpl_group_info *rgi)
#endif /* defined(HAVE_REPLICATION) */
#if defined(HAVE_REPLICATION)
-uint8 Delete_rows_log_event::get_trg_event_map()
+uint8 Delete_rows_log_event::get_trg_event_map() const
{
return trg2bit(TRG_EVENT_DELETE);
}
@@ -8805,9 +7876,9 @@ Update_rows_compressed_log_event(THD *thd_arg, TABLE *tbl_arg,
m_type = UPDATE_ROWS_COMPRESSED_EVENT_V1;
}
-bool Update_rows_compressed_log_event::write()
+bool Update_rows_compressed_log_event::write(Log_event_writer *writer)
{
- return Rows_log_event::write_compressed();
+ return Rows_log_event::write_compressed(writer);
}
void Update_rows_log_event::init(MY_BITMAP const *cols)
@@ -8827,7 +7898,7 @@ void Update_rows_log_event::init(MY_BITMAP const *cols)
#if defined(HAVE_REPLICATION)
int
-Update_rows_log_event::do_before_row_operations(const Slave_reporting_capability *const)
+Update_rows_log_event::do_before_row_operations(const rpl_group_info *rgi)
{
/*
Increment the global status update count variable
@@ -8836,7 +7907,7 @@ Update_rows_log_event::do_before_row_operations(const Slave_reporting_capability
status_var_increment(thd->status_var.com_stat[SQLCOM_UPDATE]);
int err;
- if ((err= find_key()))
+ if ((err= find_key(rgi)))
return err;
if (do_invoke_trigger())
@@ -8846,8 +7917,7 @@ Update_rows_log_event::do_before_row_operations(const Slave_reporting_capability
}
int
-Update_rows_log_event::do_after_row_operations(const Slave_reporting_capability *const,
- int error)
+Update_rows_log_event::do_after_row_operations(int error)
{
/*error= ToDo:find out what this should really be, this triggers close_scan in nbd, returning error?*/
m_table->file->ha_index_or_rnd_end();
@@ -9004,7 +8074,7 @@ err:
#if defined(HAVE_REPLICATION)
-uint8 Update_rows_log_event::get_trg_event_map()
+uint8 Update_rows_log_event::get_trg_event_map() const
{
return trg2bit(TRG_EVENT_UPDATE);
}
@@ -9089,23 +8159,23 @@ int Incident_log_event::do_apply_event(rpl_group_info *rgi)
bool
-Incident_log_event::write_data_header()
+Incident_log_event::write_data_header(Log_event_writer *writer)
{
DBUG_ENTER("Incident_log_event::write_data_header");
DBUG_PRINT("enter", ("m_incident: %d", m_incident));
uchar buf[sizeof(int16)];
int2store(buf, (int16) m_incident);
- DBUG_RETURN(write_data(buf, sizeof(buf)));
+ DBUG_RETURN(write_data(writer, buf, sizeof(buf)));
}
bool
-Incident_log_event::write_data_body()
+Incident_log_event::write_data_body(Log_event_writer *writer)
{
uchar tmp[1];
DBUG_ENTER("Incident_log_event::write_data_body");
tmp[0]= (uchar) m_message.length;
- DBUG_RETURN(write_data(tmp, sizeof(tmp)) ||
- write_data(m_message.str, m_message.length));
+ DBUG_RETURN(write_data(writer, tmp, sizeof(tmp)) ||
+ write_data(writer, m_message.str, m_message.length));
}
diff --git a/sql/mdl.h b/sql/mdl.h
index d1ece797..384878a1 100644
--- a/sql/mdl.h
+++ b/sql/mdl.h
@@ -22,13 +22,13 @@
#include <m_string.h>
#include <mysql_com.h>
#include <lf.h>
+#include "lex_ident.h"
class THD;
class MDL_context;
class MDL_lock;
class MDL_ticket;
-bool ok_for_lower_case_names(const char *name);
typedef unsigned short mdl_bitmap_t;
#define MDL_BIT(A) static_cast<mdl_bitmap_t>(1U << A)
@@ -435,7 +435,9 @@ public:
NAME_LEN) - m_ptr + 1);
m_hash_value= my_hash_sort(&my_charset_bin, (uchar*) m_ptr + 1,
m_length - 1);
- DBUG_SLOW_ASSERT(mdl_namespace_arg == USER_LOCK || ok_for_lower_case_names(db));
+ DBUG_SLOW_ASSERT(mdl_namespace_arg == USER_LOCK ||
+ Lex_ident_fs(db, m_db_name_length).
+ ok_for_lower_case_names());
}
void mdl_key_init(const MDL_key *rhs)
{
diff --git a/sql/mf_iocache_encr.cc b/sql/mf_iocache_encr.cc
index 63830ec6..9bbcc623 100644
--- a/sql/mf_iocache_encr.cc
+++ b/sql/mf_iocache_encr.cc
@@ -85,7 +85,8 @@ static int my_b_encr_read(IO_CACHE *info, uchar *Buffer, size_t Count)
do
{
- uint elength, wlength, length;
+ uint elength, wlength;
+ uint length= static_cast<uint>(info->buffer_length);
uchar iv[MY_AES_BLOCK_SIZE]= {0};
DBUG_ASSERT(pos_in_file % info->buffer_length == 0);
@@ -102,6 +103,7 @@ static int my_b_encr_read(IO_CACHE *info, uchar *Buffer, size_t Count)
}
elength= wlength - (uint)(ebuffer - wbuffer);
+ length= elength;
set_iv(iv, pos_in_file, crypt_data->inbuf_counter);
if (encryption_crypt(ebuffer, elength, info->buffer, &length,
@@ -181,8 +183,9 @@ static int my_b_encr_write(IO_CACHE *info, const uchar *Buffer, size_t Count)
do
{
+ uint wlength;
size_t length= MY_MIN(info->buffer_length, Count);
- uint elength, wlength;
+ uint elength= static_cast<uint>(length);
uchar iv[MY_AES_BLOCK_SIZE]= {0};
crypt_data->inbuf_counter= crypt_data->counter;
@@ -272,4 +275,3 @@ int init_io_cache_encryption()
_my_b_encr_write= 0;
return 0;
}
-
diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc
index 2180cbb6..a7e14811 100644
--- a/sql/multi_range_read.cc
+++ b/sql/multi_range_read.cc
@@ -20,6 +20,74 @@
#include "key.h"
#include "sql_statistics.h"
#include "rowid_filter.h"
+#include "optimizer_defaults.h"
+
+static void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
+ Cost_estimate *cost);
+
+
+
+/*
+ The following calculation is the same as in multi_range_read_info()
+
+ @param cost Total cost is stored here
+ @param keyno Key number
+ @param n_ranges Number of different ranges
+ @param multi_row_ranges Number of ranges that are not EQ_REF
+ @param flags Flags. Only HA_MRR_INDEX_ONLY is used.
+ @param total_rows Number of rows expected to be read.
+ @param io_blocks Number of blocks we expect to read for
+ a not clustered index.
+ @param unassigned_single_point_ranges
+ Number of blocks we have not yet read for
+ a clustered index.
+*/
+
+void handler::calculate_costs(Cost_estimate *cost, uint keyno,
+ uint n_ranges, uint multi_row_ranges,
+ uint flags,
+ ha_rows total_rows,
+ ulonglong io_blocks,
+ ulonglong unassigned_single_point_ranges)
+{
+ cost->reset(this);
+
+ if (!is_clustering_key(keyno))
+ {
+ cost->index_cost= ha_keyread_time(keyno, n_ranges,
+ total_rows + multi_row_ranges,
+ io_blocks);
+
+ if (!(flags & HA_MRR_INDEX_ONLY))
+ {
+ /* ha_rnd_pos_time includes ROW_COPY_COST */
+ cost->row_cost= ha_rnd_pos_time(total_rows);
+ /* Adjust io cost to data size */
+ cost->row_cost.io= MY_MIN(cost->row_cost.io, row_blocks());
+ }
+ else
+ {
+ /* Index only read */
+ cost->copy_cost= rows2double(total_rows) * KEY_COPY_COST;
+ }
+ }
+ else
+ {
+ /* Clustered index */
+ io_blocks= unassigned_single_point_ranges;
+ cost->index_cost= ha_keyread_time(keyno, n_ranges,
+ total_rows + multi_row_ranges,
+ io_blocks);
+ cost->copy_cost= rows2double(total_rows) * ROW_COPY_COST;
+ }
+ /* Adjust io cost to data size */
+ cost->index_cost.io= MY_MIN(cost->index_cost.io, index_blocks(keyno));
+
+ cost->comp_cost= rows2double(total_rows) * WHERE_COST;
+ cost->setup_cost= MULTI_RANGE_READ_SETUP_COST;
+}
+
+
/****************************************************************************
* Default MRR implementation (MRR to non-MRR converter)
@@ -37,8 +105,8 @@
@param n_ranges_arg Number of ranges in the sequence, or 0 if the caller
can't efficiently determine it
@param bufsz INOUT IN: Size of the buffer available for use
- OUT: Size of the buffer that is expected to be actually
- used, or 0 if buffer is not needed.
+ OUT: Size of the buffer that is expected to be
+ actually used, or 0 if buffer is not needed.
@param flags INOUT A combination of HA_MRR_* flags
@param cost OUT Estimated cost of MRR access
@@ -56,10 +124,12 @@
contain scan parameters.
*/
+
ha_rows
handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param, uint n_ranges_arg,
uint *bufsz, uint *flags,
+ ha_rows top_limit,
Cost_estimate *cost)
{
KEY_MULTI_RANGE range;
@@ -286,11 +356,15 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
(single_point_ranges - assigned_single_point_ranges).
We don't add these to io_blocks as we don't want to penalize equal
- readss (if we did, a range that would read 5 rows would be
+ reads (if we did, a range that would read 5 rows would be
regarded as better than one equal read).
Better to assume we have done a records_in_range() for the equal
range and it's also cached.
+
+ One effect of this is that io_blocks for simple ranges are often 0,
+ as the blocks where already read by records_in_range and we assume
+ that we don't have to read it again.
*/
io_blocks= (range_blocks_cnt - edge_blocks_cnt);
unassigned_single_point_ranges+= (single_point_ranges -
@@ -299,41 +373,33 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
if (total_rows != HA_POS_ERROR)
{
set_if_smaller(total_rows, max_rows);
-
- /* The following calculation is the same as in multi_range_read_info(): */
*flags |= HA_MRR_USE_DEFAULT_IMPL;
- cost->reset();
- cost->avg_io_cost= cost->idx_avg_io_cost= avg_io_cost();
-
- if (!is_clustering_key(keyno))
- {
- cost->idx_io_count= (double) io_blocks;
- cost->idx_cpu_cost= (keyread_time(keyno, 0, total_rows) +
- n_ranges * IDX_LOOKUP_COST);
- if (!(*flags & HA_MRR_INDEX_ONLY))
- cost->cpu_cost= read_time(keyno, 0, total_rows);
- }
- else
+ calculate_costs(cost, keyno, n_ranges,
+ n_ranges - (uint) single_point_ranges,
+ *flags, total_rows,
+ io_blocks, unassigned_single_point_ranges);
+ if (top_limit < total_rows)
{
/*
- Clustered index
- If all index dives are to a few blocks, then limit the
- ranges used by read_time to the number of dives.
+ Calculate what the cost would be if we only have to read 'top_limit'
+ rows. This is the lowest possible cost when using the range
+ when we find the 'accepted rows' at once.
*/
- io_blocks+= unassigned_single_point_ranges;
- cost->idx_cpu_cost= n_ranges * IDX_LOOKUP_COST;
- uint limited_ranges= (uint) MY_MIN((ulonglong) n_ranges, io_blocks);
- cost->cpu_cost= read_time(keyno, limited_ranges, total_rows);
+ Cost_estimate limit_cost;
+ calculate_costs(&limit_cost, keyno, n_ranges,
+ n_ranges - (uint)single_point_ranges,
+ *flags, top_limit, io_blocks,
+ unassigned_single_point_ranges);
+ cost->limit_cost= limit_cost.total_cost();
}
- cost->cpu_cost+= (rows2double(total_rows) / TIME_FOR_COMPARE +
- MULTI_RANGE_READ_SETUP_COST);
+ DBUG_PRINT("statistics",
+ ("key: %s rows: %llu total_cost: %.3f io_blocks: %llu "
+ "cpu_cost: %.3f",
+ table->s->keynames.type_names[keyno],
+ (ulonglong) total_rows, cost->total_cost(),
+ (ulonglong) (cost->row_cost.io + cost->index_cost.io),
+ (double) (cost->row_cost.cpu + cost->index_cost.cpu)));
}
- DBUG_PRINT("statistics",
- ("key: %s rows: %llu total_cost: %.3f io_blocks: %llu "
- "idx_io_count: %.3f cpu_cost: %.3f io_count: %.3f",
- table->s->keynames.type_names[keyno],
- (ulonglong) total_rows, cost->total_cost(), (ulonglong) io_blocks,
- cost->idx_io_count, cost->cpu_cost, cost->io_count));
DBUG_RETURN(total_rows);
}
@@ -357,7 +423,7 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
@param keyno Index number
@param n_ranges Estimated number of ranges (i.e. intervals) in the
range sequence.
- @param n_rows Estimated total number of records contained within all
+ @param total_rows Estimated total number of records contained within all
of the ranges
@param bufsz INOUT IN: Size of the buffer available for use
OUT: Size of the buffer that will be actually used, or
@@ -372,7 +438,8 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
other Error or can't perform the requested scan
*/
-ha_rows handler::multi_range_read_info(uint keyno, uint n_ranges, uint n_rows,
+ha_rows handler::multi_range_read_info(uint keyno, uint n_ranges,
+ uint total_rows,
uint key_parts, uint *bufsz,
uint *flags, Cost_estimate *cost)
{
@@ -385,27 +452,32 @@ ha_rows handler::multi_range_read_info(uint keyno, uint n_ranges, uint n_rows,
*bufsz= 0; /* Default implementation doesn't need a buffer */
*flags |= HA_MRR_USE_DEFAULT_IMPL;
- cost->reset();
+ cost->reset(this);
+
/* Produce the same cost as non-MRR code does */
if (!is_clustering_key(keyno))
{
- /*
- idx_io_count could potentially be increased with the number of
- index leaf blocks we have to read for finding n_rows.
- */
- cost->idx_io_count= n_ranges;
- cost->idx_cpu_cost= (keyread_time(keyno, 0, n_rows) +
- n_ranges * IDX_LOOKUP_COST);
+ cost->index_cost= ha_keyread_time(keyno, n_ranges, total_rows, 0);
+
if (!(*flags & HA_MRR_INDEX_ONLY))
{
- cost->cpu_cost= read_time(keyno, 0, n_rows);
+ /* ha_rnd_pos_time includes ROW_COPY_COST */
+ cost->row_cost= ha_rnd_pos_time(total_rows);
+ }
+ else
+ {
+ /* Index only read */
+ cost->copy_cost= rows2double(total_rows) * KEY_COPY_COST;
}
}
else
{
- cost->cpu_cost= read_time(keyno, n_ranges, (uint)n_rows);
+ /* Clustering key */
+ cost->index_cost= ha_keyread_clustered_time(keyno, n_ranges, total_rows,
+ 0);
+ cost->copy_cost= rows2double(total_rows) * ROW_COPY_COST;
}
- cost->cpu_cost+= rows2double(n_rows) / TIME_FOR_COMPARE;
+ cost->comp_cost= rows2double(total_rows) * WHERE_COST;
return 0;
}
@@ -1700,8 +1772,9 @@ ha_rows DsMrr_impl::dsmrr_info(uint keyno, uint n_ranges, uint rows,
*/
ha_rows DsMrr_impl::dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
- void *seq_init_param, uint n_ranges,
- uint *bufsz, uint *flags, Cost_estimate *cost)
+ void *seq_init_param, uint n_ranges,
+ uint *bufsz, uint *flags, ha_rows limit,
+ Cost_estimate *cost)
{
ha_rows rows;
uint def_flags= *flags;
@@ -1711,7 +1784,9 @@ ha_rows DsMrr_impl::dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
seq_init_param,
n_ranges,
&def_bufsz,
- &def_flags, cost);
+ &def_flags,
+ limit,
+ cost);
if (rows == HA_POS_ERROR)
{
/* Default implementation can't perform MRR scan => we can't either */
@@ -1918,7 +1993,8 @@ int DsMrr_impl::dsmrr_explain_info(uint mrr_mode, char *str, size_t size)
}
-static void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, Cost_estimate *cost);
+static void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows,
+ Cost_estimate *cost);
/**
@@ -1949,7 +2025,6 @@ bool DsMrr_impl::get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
ha_rows rows_in_full_step;
ha_rows rows_in_last_step;
uint n_full_steps;
- double index_read_cost;
elem_size= primary_file->ref_length +
sizeof(void*) * (!MY_TEST(flags & HA_MRR_NO_ASSOCIATION));
@@ -1982,6 +2057,8 @@ bool DsMrr_impl::get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
rows_in_full_step= max_buff_entries;
rows_in_last_step= rows % max_buff_entries;
+ cost->reset(primary_file);
+
/* Adjust buffer size if we expect to use only part of the buffer */
if (n_full_steps)
{
@@ -1990,27 +2067,21 @@ bool DsMrr_impl::get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
}
else
{
- cost->reset();
- *buffer_size= (uint)MY_MAX(*buffer_size,
- (size_t)(1.2*rows_in_last_step) * elem_size +
- primary_file->ref_length + table->key_info[keynr].key_length);
+ *buffer_size= ((uint) MY_MAX(*buffer_size,
+ (size_t)(1.2*rows_in_last_step) * elem_size +
+ primary_file->ref_length +
+ table->key_info[keynr].key_length));
}
Cost_estimate last_step_cost;
+ last_step_cost.avg_io_cost= cost->avg_io_cost;
get_sort_and_sweep_cost(table, rows_in_last_step, &last_step_cost);
cost->add(&last_step_cost);
- if (n_full_steps != 0)
- cost->mem_cost= *buffer_size;
- else
- cost->mem_cost= (double)rows_in_last_step * elem_size;
-
/* Total cost of all index accesses */
- index_read_cost= primary_file->keyread_time(keynr, 1, rows);
- cost->add_io(index_read_cost, 1 /* Random seeks */);
-
- cost->cpu_cost+= (rows2double(rows) / TIME_FOR_COMPARE +
- MULTI_RANGE_READ_SETUP_COST);
+ cost->index_cost= primary_file->ha_keyread_and_copy_time(keynr, 1, rows, 0);
+ cost->comp_cost= rows2double(rows) * primary_file->WHERE_COST;
+ cost->setup_cost= primary_file->MULTI_RANGE_READ_SETUP_COST;
return FALSE;
}
@@ -2034,55 +2105,17 @@ void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, Cost_estimate *cost)
{
get_sweep_read_cost(table, nrows, FALSE, cost);
/* Add cost of qsort call: n * log2(n) * cost(rowid_comparison) */
- double cmp_op= rows2double(nrows) * (1.0 / TIME_FOR_COMPARE_ROWID);
+ double cmp_op= rows2double(nrows) * ROWID_COMPARE_COST_THD(table->in_use);
if (cmp_op < 3)
cmp_op= 3;
cost->cpu_cost += cmp_op * log2(cmp_op);
}
- else
- cost->reset();
}
/**
Get cost of reading nrows table records in a "disk sweep"
- A disk sweep read is a sequence of handler->rnd_pos(rowid) calls that made
- for an ordered sequence of rowids.
-
- We assume hard disk IO. The read is performed as follows:
-
- 1. The disk head is moved to the needed cylinder
- 2. The controller waits for the plate to rotate
- 3. The data is transferred
-
- Time to do #3 is insignificant compared to #2+#1.
-
- Time to move the disk head is proportional to head travel distance.
-
- Time to wait for the plate to rotate depends on whether the disk head
- was moved or not.
-
- If disk head wasn't moved, the wait time is proportional to distance
- between the previous block and the block we're reading.
-
- If the head was moved, we don't know how much we'll need to wait for the
- plate to rotate. We assume the wait time to be a variate with a mean of
- 0.5 of full rotation time.
-
- Our cost units are "random disk seeks". The cost of random disk seek is
- actually not a constant, it depends one range of cylinders we're going
- to access. We make it constant by introducing a fuzzy concept of "typical
- datafile length" (it's fuzzy as it's hard to tell whether it should
- include index file, temp.tables etc). Then random seek cost is:
-
- 1 = half_rotation_cost + move_cost * 1/3 * typical_data_file_length
-
- We define half_rotation_cost as DISK_SEEK_BASE_COST=0.9.
-
- If handler::avg_io_cost() < 1.0, then we will trust the handler
- when it comes to the average cost (this is for example true for HEAP).
-
@param table Table to be accessed
@param nrows Number of rows to retrieve
@param interrupted TRUE <=> Assume that the disk sweep will be
@@ -2090,16 +2123,18 @@ void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, Cost_estimate *cost)
@param cost OUT The cost.
*/
-void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
- Cost_estimate *cost)
+static void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
+ Cost_estimate *cost)
{
DBUG_ENTER("get_sweep_read_cost");
- cost->reset();
+#ifndef OLD_SWEEP_COST
+ cost->row_cost= table->file->ha_rnd_pos_call_time(nrows);
+#else
if (table->file->pk_is_clustering_key(table->s->primary_key))
{
- cost->cpu_cost= table->file->read_time(table->s->primary_key,
- (uint) nrows, nrows);
+ cost->cpu_cost= table->file->ha_read_and_copy_time(table->s->primary_key,
+ (uint) nrows, nrows);
}
else if ((cost->avg_io_cost= table->file->avg_io_cost()) >= 0.999)
{
@@ -2121,7 +2156,9 @@ void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
DISK_SEEK_PROP_COST*n_blocks/busy_blocks);
}
}
- DBUG_PRINT("info",("returning cost=%g", cost->total_cost()));
+ cost->cpu_cost+= rows2double(n_rows) * ROW_COPY_COST;
+#endif
+ DBUG_PRINT("info",("returning cost: %g", cost->total_cost()));
DBUG_VOID_RETURN;
}
diff --git a/sql/multi_range_read.h b/sql/multi_range_read.h
index 5e7879d9..ecb1a080 100644
--- a/sql/multi_range_read.h
+++ b/sql/multi_range_read.h
@@ -572,7 +572,7 @@ public:
ha_rows dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param, uint n_ranges, uint *bufsz,
- uint *flags, Cost_estimate *cost);
+ uint *flags, ha_rows limit, Cost_estimate *cost);
int dsmrr_explain_info(uint mrr_mode, char *str, size_t size);
private:
diff --git a/sql/my_json_writer.h b/sql/my_json_writer.h
index 87d1a7fa..a581899a 100644
--- a/sql/my_json_writer.h
+++ b/sql/my_json_writer.h
@@ -407,7 +407,7 @@ public:
virtual ~Json_writer_struct() = default;
#endif
- bool trace_started() const
+ inline bool trace_started() const
{
return my_writer != 0;
}
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index d0619aa2..23d60146 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
- Copyright (c) 2008, 2022, MariaDB
+ Copyright (c) 2008, 2023, MariaDB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,6 +44,7 @@
#include "sql_base.h"
#include "sql_test.h" // mysql_print_status
#include "item_create.h" // item_create_cleanup, item_create_init
+#include "json_schema.h"
#include "sql_servers.h" // servers_free, servers_init
#include "init.h" // unireg_init
#include "derror.h" // init_errmessage
@@ -52,6 +53,7 @@
#include "sql_expression_cache.h" // subquery_cache_miss, subquery_cache_hit
#include "sys_vars_shared.h"
#include "ddl_log.h"
+#include "optimizer_defaults.h"
#include <m_ctype.h>
#include <my_dir.h>
@@ -81,6 +83,7 @@
#include "wsrep_server_state.h"
#endif /* WITH_WSREP */
#include "proxy_protocol.h"
+#include "gtid_index.h"
#include "sql_callback.h"
#include "threadpool.h"
@@ -111,7 +114,6 @@
#include <sys/prctl.h>
#endif
-#include <thr_alarm.h>
#include <ft_global.h>
#include <errmsg.h>
#include "sp_rcontext.h"
@@ -337,6 +339,7 @@ static my_bool opt_debugging= 0, opt_external_locking= 0, opt_console= 0;
static my_bool opt_short_log_format= 0, opt_silent_startup= 0;
ulong max_used_connections;
+time_t max_used_connections_time;
static const char *mysqld_user, *mysqld_chroot;
static char *default_character_set_name;
static char *character_set_filesystem_name;
@@ -349,6 +352,7 @@ char *enforced_storage_engine=NULL;
char *gtid_pos_auto_engines;
plugin_ref *opt_gtid_pos_auto_plugins;
static char compiled_default_collation_name[]= MYSQL_DEFAULT_COLLATION_NAME;
+static const char *character_set_collations_str= "";
Thread_cache thread_cache;
static bool binlog_format_used= false;
LEX_STRING opt_init_connect, opt_init_slave;
@@ -438,6 +442,9 @@ my_bool sp_automatic_privileges= 1;
ulong opt_binlog_rows_event_max_size;
ulong binlog_row_metadata;
+my_bool opt_binlog_gtid_index= TRUE;
+uint opt_binlog_gtid_index_page_size= 4096;
+uint opt_binlog_gtid_index_span_min= 65536;
my_bool opt_master_verify_checksum= 0;
my_bool opt_slave_sql_verify_checksum= 1;
const char *binlog_format_names[]= {"MIXED", "STATEMENT", "ROW", NullS};
@@ -452,6 +459,11 @@ ulong tc_heuristic_recover= 0;
Atomic_counter<uint32_t> THD_count::count, CONNECT::count;
bool shutdown_wait_for_slaves;
Atomic_counter<uint32_t> slave_open_temp_tables;
+/*
+ This is incremented every time a slave starts to read a new binary log
+ file. Used by MYSQL_BIN_LOG::can_purge_log()
+*/
+Atomic_counter<ulonglong> sending_new_binlog_file;
ulong thread_created;
ulong back_log, connect_timeout, server_id;
ulong what_to_log;
@@ -467,7 +479,10 @@ ulonglong slave_type_conversions_options;
ulong thread_cache_size=0;
ulonglong binlog_cache_size=0;
ulonglong binlog_file_cache_size=0;
+uint slave_connections_needed_for_purge;
ulonglong max_binlog_cache_size=0;
+ulonglong internal_binlog_space_limit;
+uint internal_slave_connections_needed_for_purge;
ulong slave_max_allowed_packet= 0;
double slave_max_statement_time_double;
ulonglong slave_max_statement_time;
@@ -486,6 +501,7 @@ ulong malloc_calls;
ulong specialflag=0;
ulong binlog_cache_use= 0, binlog_cache_disk_use= 0;
ulong binlog_stmt_cache_use= 0, binlog_stmt_cache_disk_use= 0;
+ulong binlog_gtid_index_hit= 0, binlog_gtid_index_miss= 0;
ulong max_connections, max_connect_errors;
uint max_password_errors;
ulong extra_max_connections;
@@ -526,6 +542,7 @@ uint sync_binlog_period= 0, sync_relaylog_period= 0,
sync_relayloginfo_period= 0, sync_masterinfo_period= 0;
double expire_logs_days = 0;
ulong binlog_expire_logs_seconds = 0;
+ulonglong binlog_space_limit;
/**
Soft upper limit for number of sp_head objects that can be stored
@@ -593,7 +610,6 @@ uint reg_ext_length;
const key_map key_map_empty(0);
key_map key_map_full(0); // Will be initialized later
-DATE_TIME_FORMAT global_date_format, global_datetime_format, global_time_format;
Time_zone *default_tz;
const char *mysql_real_data_home_ptr= mysql_real_data_home;
@@ -601,7 +617,6 @@ extern "C" {
char server_version[SERVER_VERSION_LENGTH];
}
char *server_version_ptr;
-bool using_custom_server_version= false;
char *mysqld_unix_port, *opt_mysql_tmpdir;
ulong thread_handling;
@@ -738,7 +753,7 @@ mysql_mutex_t LOCK_thread_id;
server may be fairly high, we need a dedicated lock.
*/
mysql_mutex_t LOCK_prepared_stmt_count;
-mysql_mutex_t LOCK_backup_log;
+mysql_mutex_t LOCK_backup_log, LOCK_optimizer_costs;
mysql_rwlock_t LOCK_grant, LOCK_sys_init_connect, LOCK_sys_init_slave;
mysql_rwlock_t LOCK_ssl_refresh;
mysql_rwlock_t LOCK_all_status_vars;
@@ -760,8 +775,7 @@ char *relay_log_info_file, *report_user, *report_password, *report_host;
char *opt_relay_logname = 0, *opt_relaylog_index_name=0;
char *opt_logname, *opt_slow_logname, *opt_bin_logname;
char *opt_binlog_index_name=0;
-
-
+my_bool opt_binlog_legacy_event_pos= FALSE;
/* Static variables */
@@ -891,7 +905,7 @@ PSI_file_key key_file_binlog, key_file_binlog_cache, key_file_binlog_index,
PSI_file_key key_file_query_log, key_file_slow_log;
PSI_file_key key_file_relaylog, key_file_relaylog_index,
key_file_relaylog_cache, key_file_relaylog_index_cache;
-PSI_file_key key_file_binlog_state;
+PSI_file_key key_file_binlog_state, key_file_gtid_index;
#ifdef HAVE_des
char *des_key_file;
@@ -913,12 +927,13 @@ PSI_mutex_key key_BINLOG_LOCK_index, key_BINLOG_LOCK_xid_list,
key_LOCK_crypt, key_LOCK_delayed_create,
key_LOCK_delayed_insert, key_LOCK_delayed_status, key_LOCK_error_log,
key_LOCK_gdl, key_LOCK_global_system_variables,
- key_LOCK_manager, key_LOCK_backup_log,
+ key_LOCK_manager, key_LOCK_backup_log, key_LOCK_optimizer_costs,
key_LOCK_prepared_stmt_count,
key_LOCK_rpl_status, key_LOCK_server_started,
key_LOCK_status, key_LOCK_temp_pool,
key_LOCK_system_variables_hash, key_LOCK_thd_data, key_LOCK_thd_kill,
key_LOCK_user_conn, key_LOCK_uuid_short_generator, key_LOG_LOCK_log,
+ key_gtid_index_lock,
key_master_info_data_lock, key_master_info_run_lock,
key_master_info_sleep_lock, key_master_info_start_stop_lock,
key_master_info_start_alter_lock,
@@ -977,6 +992,7 @@ static PSI_mutex_info all_server_mutexes[]=
{ &key_hash_filo_lock, "hash_filo::lock", 0},
{ &key_LOCK_active_mi, "LOCK_active_mi", PSI_FLAG_GLOBAL},
{ &key_LOCK_backup_log, "LOCK_backup_log", PSI_FLAG_GLOBAL},
+ { &key_LOCK_optimizer_costs, "LOCK_optimizer_costs", PSI_FLAG_GLOBAL},
{ &key_LOCK_temp_pool, "LOCK_temp_pool", PSI_FLAG_GLOBAL},
{ &key_LOCK_thread_id, "LOCK_thread_id", PSI_FLAG_GLOBAL},
{ &key_LOCK_crypt, "LOCK_crypt", PSI_FLAG_GLOBAL},
@@ -1004,6 +1020,7 @@ static PSI_mutex_info all_server_mutexes[]=
{ &key_LOCK_user_conn, "LOCK_user_conn", PSI_FLAG_GLOBAL},
{ &key_LOCK_uuid_short_generator, "LOCK_uuid_short_generator", PSI_FLAG_GLOBAL},
{ &key_LOG_LOCK_log, "LOG::LOCK_log", 0},
+ { &key_gtid_index_lock, "Gtid_index_writer::gtid_index_mutex", 0},
{ &key_master_info_data_lock, "Master_info::data_lock", 0},
{ &key_master_info_start_stop_lock, "Master_info::start_stop_lock", 0},
{ &key_master_info_run_lock, "Master_info::run_lock", 0},
@@ -1387,6 +1404,9 @@ Dynamic_array<MYSQL_SOCKET> listen_sockets(PSI_INSTRUMENT_MEM, 0);
bool unix_sock_is_online= false;
static int systemd_sock_activation; /* systemd socket activation */
+/** wakeup listening(main) thread by writing to this descriptor */
+static int termination_event_fd= -1;
+
C_MODE_START
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
@@ -1468,7 +1488,7 @@ Query_cache query_cache;
#endif
-my_bool opt_use_ssl = 0;
+my_bool opt_use_ssl = 1;
char *opt_ssl_ca= NULL, *opt_ssl_capath= NULL, *opt_ssl_cert= NULL,
*opt_ssl_cipher= NULL, *opt_ssl_key= NULL, *opt_ssl_crl= NULL,
*opt_ssl_crlpath= NULL, *opt_tls_version= NULL;
@@ -1643,44 +1663,20 @@ static my_bool warn_threads_active_after_phase_2(THD *thd, void *)
static void break_connect_loop()
{
-#ifdef EXTRA_DEBUG
- int count=0;
-#endif
-
abort_loop= 1;
#if defined(_WIN32)
mysqld_win_initiate_shutdown();
#else
- /* Avoid waiting for ourselves when thread-handling=no-threads. */
- if (pthread_equal(pthread_self(), select_thread))
- return;
- DBUG_PRINT("quit", ("waiting for select thread: %lu",
- (ulong)select_thread));
-
mysql_mutex_lock(&LOCK_start_thread);
- while (select_thread_in_use)
+ if (termination_event_fd >= 0)
{
- struct timespec abstime;
- int UNINIT_VAR(error);
- DBUG_PRINT("info",("Waiting for select thread"));
-
-#ifndef DONT_USE_THR_ALARM
- if (pthread_kill(select_thread, thr_client_alarm))
- break; // allready dead
-#endif
- set_timespec(abstime, 2);
- for (uint tmp=0 ; tmp < 10 && select_thread_in_use; tmp++)
+ uint64_t u= 1;
+ if(write(termination_event_fd, &u, sizeof(uint64_t)) < 0)
{
- error= mysql_cond_timedwait(&COND_start_thread, &LOCK_start_thread,
- &abstime);
- if (error != EINTR)
- break;
+ sql_print_error("Couldn't send event to terminate listen loop");
+ abort();
}
-#ifdef EXTRA_DEBUG
- if (error != 0 && error != ETIMEDOUT && !count++)
- sql_print_error("Got error %d from mysql_cond_timedwait", error);
-#endif
}
mysql_mutex_unlock(&LOCK_start_thread);
#endif /* _WIN32 */
@@ -1760,8 +1756,6 @@ static void close_connections(void)
listen_sockets.free_memory();
mysql_mutex_unlock(&LOCK_start_thread);
- end_thr_alarm(0); // Abort old alarms.
-
while (CONNECT::count)
my_sleep(100);
@@ -1866,10 +1860,6 @@ extern "C" sig_handler print_signal_warning(int sig)
#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY
my_sigset(sig,print_signal_warning); /* int. thread system calls */
#endif
-#if !defined(_WIN32)
- if (sig == SIGALRM)
- alarm(2); /* reschedule alarm */
-#endif
}
#ifdef _WIN32
@@ -1977,6 +1967,7 @@ static void clean_up(bool print_message)
injector::free_instance();
mysql_bin_log.cleanup();
+ Gtid_index_writer::gtid_index_cleanup();
my_tz_free();
my_dboptions_cache_free();
@@ -1991,6 +1982,7 @@ static void clean_up(bool print_message)
item_func_sleep_free();
lex_free(); /* Free some memory */
item_create_cleanup();
+ cleanup_json_schema_keyword_hash();
tdc_start_shutdown();
#ifdef HAVE_REPLICATION
semi_sync_master_deinit();
@@ -2005,11 +1997,11 @@ static void clean_up(bool print_message)
mdl_destroy();
dflt_key_cache= 0;
key_caches.delete_elements(free_key_cache);
+ free_all_optimizer_costs();
wt_end();
multi_keycache_free();
sp_cache_end();
free_status_vars();
- end_thr_alarm(1); /* Free allocated memory */
end_thr_timer();
#ifndef EMBEDDED_LIBRARY
Events::deinit();
@@ -2084,6 +2076,7 @@ static void clean_up(bool print_message)
*/
static void wait_for_signal_thread_to_end()
{
+#ifndef _WIN32
uint i, n_waits= DBUG_IF("force_sighup_processing_timeout") ? 5 : 100;
int err= 0;
/*
@@ -2092,9 +2085,7 @@ static void wait_for_signal_thread_to_end()
*/
for (i= 0 ; i < n_waits && signal_thread_in_use; i++)
{
- err= pthread_kill(signal_thread, MYSQL_KILL_SIGNAL);
- if (err)
- break;
+ kill(getpid(), MYSQL_KILL_SIGNAL);
my_sleep(100000); // Give it time to die, .1s per iteration
}
@@ -2110,6 +2101,7 @@ static void wait_for_signal_thread_to_end()
"Continuing to wait for it to stop..");
pthread_join(signal_thread, NULL);
}
+#endif
}
#endif /*EMBEDDED_LIBRARY*/
@@ -2148,6 +2140,7 @@ static void clean_up_mutexes()
mysql_mutex_destroy(&LOCK_active_mi);
mysql_rwlock_destroy(&LOCK_ssl_refresh);
mysql_mutex_destroy(&LOCK_backup_log);
+ mysql_mutex_destroy(&LOCK_optimizer_costs);
mysql_mutex_destroy(&LOCK_temp_pool);
mysql_rwlock_destroy(&LOCK_sys_init_connect);
mysql_rwlock_destroy(&LOCK_sys_init_slave);
@@ -3111,8 +3104,6 @@ void init_signals(void)
struct sigaction sa;
DBUG_ENTER("init_signals");
- my_sigset(THR_SERVER_ALARM,print_signal_warning); // Should never be called!
-
if (opt_stack_trace || (test_flags & TEST_CORE_ON_SIGNAL))
{
sa.sa_flags = SA_RESETHAND | SA_NODEFER;
@@ -3158,7 +3149,6 @@ void init_signals(void)
sa.sa_flags = 0;
sa.sa_handler = print_signal_warning;
sigaction(SIGHUP, &sa, (struct sigaction*) 0);
- sigaddset(&set,THR_SERVER_ALARM);
if (test_flags & TEST_SIGINT)
{
/* Allow SIGINT to break mysqld. This is for debugging with --gdb */
@@ -3195,7 +3185,7 @@ static void start_signal_handler(void)
signal_hand, 0))))
{
sql_print_error("Can't create interrupt-thread (error %d, errno: %d)",
- error,errno);
+ error,errno);
exit(1);
}
mysql_cond_wait(&COND_start_thread, &LOCK_start_thread);
@@ -3208,20 +3198,13 @@ static void start_signal_handler(void)
/** This threads handles all signals and alarms. */
/* ARGSUSED */
-pthread_handler_t signal_hand(void *arg __attribute__((unused)))
+pthread_handler_t signal_hand(void *)
{
sigset_t set;
int sig;
my_thread_init(); // Init new thread
signal_thread_in_use= 1;
- /*
- Setup alarm handler
- This should actually be '+ max_number_of_slaves' instead of +10,
- but the +10 should be quite safe.
- */
- init_thr_alarm(thread_scheduler->max_threads + extra_max_connections +
- global_system_variables.max_insert_delayed_threads + 10);
if (test_flags & TEST_SIGINT)
{
/* Allow SIGINT to break mysqld. This is for debugging with --gdb */
@@ -3229,10 +3212,7 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
(void) sigaddset(&set,SIGINT);
(void) pthread_sigmask(SIG_UNBLOCK,&set,NULL);
}
- (void) sigemptyset(&set);
-#ifdef USE_ONE_SIGNAL_HAND
- (void) sigaddset(&set,THR_SERVER_ALARM); // For alarms
-#endif
+ (void) sigemptyset(&set); // Setup up SIGINT for debug
(void) sigaddset(&set,SIGQUIT);
(void) sigaddset(&set,SIGTERM);
(void) sigaddset(&set,SIGTSTP);
@@ -3261,19 +3241,17 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
int error;
int origin;
+ if (abort_loop)
+ break;
+
while ((error= my_sigwait(&set, &sig, &origin)) == EINTR) /* no-op */;
+
if (abort_loop)
- {
- DBUG_PRINT("quit",("signal_handler: calling my_thread_end()"));
- my_thread_end();
- signal_thread_in_use= 0;
- pthread_exit(0); // Safety
- return 0; // Avoid compiler warnings
- }
+ break;
+
switch (sig) {
case SIGTERM:
case SIGQUIT:
- case SIGKILL:
#ifdef EXTRA_DEBUG
sql_print_information("Got signal %d to shutdown server",sig);
#endif
@@ -3281,21 +3259,15 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
logger.set_handlers(global_system_variables.sql_log_slow ? LOG_FILE:LOG_NONE,
opt_log ? LOG_FILE:LOG_NONE);
DBUG_PRINT("info",("Got signal: %d abort_loop: %d",sig,abort_loop));
- if (!abort_loop)
- {
- /* Delete the instrumentation for the signal thread */
- PSI_CALL_delete_current_thread();
- my_sigset(sig, SIG_IGN);
- break_connect_loop(); // MIT THREAD has a alarm thread
- }
+
+ break_connect_loop();
+ DBUG_ASSERT(abort_loop);
break;
case SIGHUP:
#if defined(SI_KERNEL)
- if (!abort_loop && origin != SI_KERNEL)
+ if (origin != SI_KERNEL)
#elif defined(SI_USER)
- if (!abort_loop && origin <= SI_USER)
-#else
- if (!abort_loop)
+ if (origin <= SI_USER)
#endif
{
int not_used;
@@ -3315,11 +3287,6 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
opt_log ? fixed_log_output_options : LOG_NONE);
}
break;
-#ifdef USE_ONE_SIGNAL_HAND
- case THR_SERVER_ALARM:
- process_alarm(sig); // Trigger alarms.
- break;
-#endif
default:
#ifdef EXTRA_DEBUG
sql_print_warning("Got signal: %d error: %d",sig,error); /* purecov: tested */
@@ -3327,6 +3294,10 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
break; /* purecov: tested */
}
}
+ DBUG_PRINT("quit", ("signal_handler: calling my_thread_end()"));
+ my_thread_end();
+ signal_thread_in_use= 0;
+ pthread_exit(0); // Safety
return(0); /* purecov: deadcode */
}
@@ -3449,36 +3420,6 @@ static void init_libstrings()
}
-/**
- Initialize one of the global date/time format variables.
-
- @param format_type What kind of format should be supported
- @param var_ptr Pointer to variable that should be updated
-
- @retval
- 0 ok
- @retval
- 1 error
-*/
-
-static bool init_global_datetime_format(timestamp_type format_type,
- DATE_TIME_FORMAT *format)
-{
- /*
- Get command line option
- format->format.str is already set by my_getopt
- */
- format->format.length= strlen(format->format.str);
-
- if (parse_date_time_format(format_type, format))
- {
- fprintf(stderr, "Wrong date/time format specifier: %s\n",
- format->format.str);
- return true;
- }
- return false;
-}
-
#define COM_STATUS(X) (void*) offsetof(STATUS_VAR, X), SHOW_LONG_STATUS
#define STMT_STATUS(X) COM_STATUS(com_stat[(uint) X])
@@ -3886,40 +3827,6 @@ static int init_early_variables()
return 0;
}
-#ifdef _WIN32
-static void get_win_tzname(char* buf, size_t size)
-{
- static struct
- {
- const wchar_t* windows_name;
- const char* tzdb_name;
- }
- tz_data[] =
- {
-#include "win_tzname_data.h"
- {0,0}
- };
- DYNAMIC_TIME_ZONE_INFORMATION tzinfo;
- if (GetDynamicTimeZoneInformation(&tzinfo) == TIME_ZONE_ID_INVALID)
- {
- strncpy(buf, "unknown", size);
- return;
- }
-
- for (size_t i= 0; tz_data[i].windows_name; i++)
- {
- if (wcscmp(tzinfo.TimeZoneKeyName, tz_data[i].windows_name) == 0)
- {
- strncpy(buf, tz_data[i].tzdb_name, size);
- return;
- }
- }
- wcstombs(buf, tzinfo.TimeZoneKeyName, size);
- buf[size-1]= 0;
- return;
-}
-#endif
-
static int init_common_variables()
{
umask(((~my_umask) & 0666));
@@ -3977,21 +3884,8 @@ static int init_common_variables()
struct tm tm_tmp;
localtime_r(&server_start_time, &tm_tmp);
-#ifdef HAVE_TZNAME
-#ifdef _WIN32
- /*
- If env.variable TZ is set, derive timezone name from it.
- Otherwise, use IANA tz name from get_win_tzname.
- */
- if (!getenv("TZ"))
- get_win_tzname(system_time_zone, sizeof(system_time_zone));
- else
-#endif
- {
- const char *tz_name= tzname[tm_tmp.tm_isdst != 0 ? 1 : 0];
- strmake_buf(system_time_zone, tz_name);
- }
-#endif
+ my_tzset();
+ my_tzname(system_time_zone, sizeof(system_time_zone));
/*
We set SYSTEM time zone as reasonable default and
@@ -4026,6 +3920,7 @@ static int init_common_variables()
inited before MY_INIT(). So we do it here.
*/
mysql_bin_log.init_pthread_objects();
+ Gtid_index_writer::gtid_index_init();
/* TODO: remove this when my_time_t is 64 bit compatible */
if (!IS_TIME_T_VALID_FOR_TIMESTAMP(server_start_time))
@@ -4272,6 +4167,7 @@ static int init_common_variables()
if (item_create_init())
return 1;
item_init();
+ setup_json_schema_keyword_hash();
/*
Process a comma-separated character set list and choose
the first available character set. This is mostly for
@@ -4280,6 +4176,20 @@ static int init_common_variables()
*/
myf utf8_flag= global_system_variables.old_behavior &
OLD_MODE_UTF8_IS_UTF8MB3 ? MY_UTF8_IS_UTF8MB3 : 0;
+
+ old_mode_deprecated_warnings(0, global_system_variables.old_behavior);
+
+ if (character_set_collations_str[0])
+ {
+ Lex_cstring_strlen str(character_set_collations_str);
+ if (global_system_variables.character_set_collations.
+ from_text(str, utf8_flag))
+ {
+ sql_print_error(ER_DEFAULT(ER_WRONG_VALUE_FOR_VAR),
+ "character_set_collations", character_set_collations_str);
+ }
+ }
+
for (;;)
{
char *next_character_set_name= strchr(default_character_set_name, ',');
@@ -4298,7 +4208,13 @@ static int init_common_variables()
return 1; // Eof of the list
}
else
+ {
+ Sql_used used;
+ default_charset_info= global_system_variables.character_set_collations.
+ get_collation_for_charset(&used,
+ default_charset_info);
break;
+ }
}
if (default_collation_name)
@@ -4512,6 +4428,8 @@ static int init_thread_environment()
mysql_mutex_init(key_LOCK_commit_ordered, &LOCK_commit_ordered,
MY_MUTEX_INIT_SLOW);
mysql_mutex_init(key_LOCK_backup_log, &LOCK_backup_log, MY_MUTEX_INIT_FAST);
+ mysql_mutex_init(key_LOCK_optimizer_costs, &LOCK_optimizer_costs,
+ MY_MUTEX_INIT_FAST);
mysql_mutex_init(key_LOCK_temp_pool, &LOCK_temp_pool, MY_MUTEX_INIT_FAST);
#ifdef HAVE_OPENSSL
@@ -4634,6 +4552,7 @@ struct SSL_ACCEPTOR_STATS
long verify_depth;
long zero;
const char *session_cache_mode;
+ uchar fprint[256/8];
SSL_ACCEPTOR_STATS():
accept(),accept_good(),cache_size(),verify_mode(),verify_depth(),zero(),
@@ -4643,7 +4562,8 @@ struct SSL_ACCEPTOR_STATS
void init()
{
- DBUG_ASSERT(ssl_acceptor_fd !=0 && ssl_acceptor_fd->ssl_context != 0);
+ DBUG_ASSERT(ssl_acceptor_fd !=0);
+ DBUG_ASSERT(ssl_acceptor_fd->ssl_context != 0);
SSL_CTX *ctx= ssl_acceptor_fd->ssl_context;
accept= 0;
accept_good= 0;
@@ -4667,6 +4587,9 @@ struct SSL_ACCEPTOR_STATS
default:
session_cache_mode= "Unknown"; break;
}
+ X509 *cert= SSL_CTX_get0_certificate(ctx);
+ uint fplen= sizeof(fprint);
+ X509_digest(cert, EVP_sha256(), fprint, &fplen);
}
};
@@ -4678,6 +4601,11 @@ void ssl_acceptor_stats_update(int sslaccept_ret)
statistic_increment(ssl_acceptor_stats.accept_good,&LOCK_status);
}
+LEX_CUSTRING ssl_acceptor_fingerprint()
+{
+ return { ssl_acceptor_stats.fprint, sizeof(ssl_acceptor_stats.fprint) };
+}
+
static void init_ssl()
{
#if !defined(EMBEDDED_LIBRARY)
@@ -4874,6 +4802,25 @@ init_gtid_pos_auto_engines(void)
return 0;
}
+
+#define us_to_ms(X) if (X > 0) X/= 1000;
+static int adjust_optimizer_costs(void *, OPTIMIZER_COSTS *oc, void *)
+{
+ us_to_ms(oc->disk_read_cost);
+ us_to_ms(oc->index_block_copy_cost);
+ us_to_ms(oc->key_cmp_cost);
+ us_to_ms(oc->key_copy_cost);
+ us_to_ms(oc->key_lookup_cost);
+ us_to_ms(oc->key_next_find_cost);
+ us_to_ms(oc->row_copy_cost);
+ us_to_ms(oc->row_lookup_cost);
+ us_to_ms(oc->row_next_find_cost);
+ us_to_ms(oc->rowid_cmp_cost);
+ us_to_ms(oc->rowid_copy_cost);
+ return 0;
+}
+
+
#define MYSQL_COMPATIBILITY_OPTION(option) \
{ option, OPT_MYSQL_COMPATIBILITY, \
0, 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0 }
@@ -5031,12 +4978,12 @@ static int init_server_components()
/* need to configure logging before initializing storage engines */
if (!opt_bin_log_used && !WSREP_ON)
{
- if (opt_log_slave_updates)
- sql_print_warning("You need to use --log-bin to make "
- "--log-slave-updates work.");
- if (binlog_format_used)
- sql_print_warning("You need to use --log-bin to make "
- "--binlog-format work.");
+ if (opt_log_slave_updates && (global_system_variables.log_warnings >= 4))
+ sql_print_information("You need to use --log-bin to make "
+ "--log-slave-updates work.");
+ if (binlog_format_used && (global_system_variables.log_warnings >= 4))
+ sql_print_information("You need to use --log-bin to make "
+ "--binlog-format work.");
}
/* Check that we have not let the format to unspecified at this point */
@@ -5233,8 +5180,15 @@ static int init_server_components()
tc_log= 0; // ha_initialize_handlerton() needs that
- if (!opt_abort && ddl_log_initialize())
- unireg_abort(1);
+ if (!opt_abort)
+ {
+ if (ddl_log_initialize())
+ unireg_abort(1);
+
+ process_optimizer_costs((process_optimizer_costs_t)adjust_optimizer_costs, 0);
+ us_to_ms(global_system_variables.optimizer_where_cost);
+ us_to_ms(global_system_variables.optimizer_scan_setup_cost);
+ }
/*
Plugins may not be completed because system table DDLs are only
@@ -5316,6 +5270,12 @@ static int init_server_components()
#if defined(__linux__)
MARIADB_REMOVED_OPTION("super-large-pages"),
#endif
+ MARIADB_REMOVED_OPTION("innodb-defragment"),
+ MARIADB_REMOVED_OPTION("innodb-defragment-n-pages"),
+ MARIADB_REMOVED_OPTION("innodb-defragment-stats-accuracy"),
+ MARIADB_REMOVED_OPTION("innodb-defragment-fill-factor"),
+ MARIADB_REMOVED_OPTION("innodb-defragment-fill-factor-n-recs"),
+ MARIADB_REMOVED_OPTION("innodb-defragment-frequency"),
MARIADB_REMOVED_OPTION("innodb-idle-flush-pct"),
MARIADB_REMOVED_OPTION("innodb-locks-unsafe-for-binlog"),
MARIADB_REMOVED_OPTION("innodb-rollback-segments"),
@@ -5355,6 +5315,16 @@ static int init_server_components()
MARIADB_REMOVED_OPTION("innodb-thread-concurrency"),
MARIADB_REMOVED_OPTION("innodb-thread-sleep-delay"),
MARIADB_REMOVED_OPTION("innodb-undo-logs"),
+
+ /* The following options were deprecated in 10.9 */
+ MARIADB_REMOVED_OPTION("innodb-change-buffering"),
+
+ /* removed in 11.3 */
+ MARIADB_REMOVED_OPTION("date-format"),
+ MARIADB_REMOVED_OPTION("datetime-format"),
+ MARIADB_REMOVED_OPTION("time-format"),
+ MARIADB_REMOVED_OPTION("wsrep-causal-reads"),
+
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
/*
@@ -5468,6 +5438,7 @@ static int init_server_components()
unireg_abort(1);
}
#endif
+ copy_tmptable_optimizer_costs();
#ifdef WITH_WSREP
/*
@@ -5516,20 +5487,25 @@ static int init_server_components()
}
#ifdef HAVE_REPLICATION
+ binlog_space_limit= internal_binlog_space_limit;
+ slave_connections_needed_for_purge=
+ internal_slave_connections_needed_for_purge;
+
if (opt_bin_log)
{
- if (binlog_expire_logs_seconds)
- {
- time_t purge_time= server_start_time - binlog_expire_logs_seconds;
- if (purge_time >= 0)
- mysql_bin_log.purge_logs_before_date(purge_time);
- }
+ if (binlog_space_limit)
+ mysql_bin_log.count_binlog_space_with_mutex();
+ mysql_bin_log.purge(1);
}
else
{
- if (binlog_expire_logs_seconds)
- sql_print_warning("You need to use --log-bin to make --expire-logs-days "
- "or --binlog-expire-logs-seconds work.");
+ if ((binlog_expire_logs_seconds || binlog_space_limit) &&
+ (global_system_variables.log_warnings >= 4))
+ sql_print_information("You need to use --log-bin to make "
+ "--expire-logs-days, "
+ "--binlog-expire-logs-seconds or "
+ "--max-binlog-total-size "
+ "work.");
}
#endif
@@ -5890,7 +5866,7 @@ int mysqld_main(int argc, char **argv)
#endif
/*
- init signals & alarm
+ init signals
After this we can't quit by a simple unireg_abort
*/
start_signal_handler(); // Creates pidfile
@@ -6190,7 +6166,10 @@ void create_new_thread(CONNECT *connect)
uint sum= connection_count + extra_connection_count;
if (sum > max_used_connections)
+ {
max_used_connections= sum;
+ max_used_connections_time= time(nullptr);
+ }
/*
The initialization of thread_id is done in create_embedded_thd() for
@@ -6293,16 +6272,11 @@ void handle_connections_sockets()
uint error_count=0;
struct sockaddr_storage cAddr;
int retval;
-#ifdef HAVE_POLL
// for ip_sock, unix_sock and extra_ip_sock
Dynamic_array<struct pollfd> fds(PSI_INSTRUMENT_MEM);
-#else
- fd_set readFDs,clientFDs;
-#endif
DBUG_ENTER("handle_connections_sockets");
-#ifdef HAVE_POLL
for (size_t i= 0; i < listen_sockets.size(); i++)
{
struct pollfd local_fds;
@@ -6312,28 +6286,33 @@ void handle_connections_sockets()
fds.push(local_fds);
set_non_blocking_if_supported(listen_sockets.at(i));
}
-#else
- FD_ZERO(&clientFDs);
- for (size_t i= 0; i < listen_sockets.size(); i++)
+ int termination_fds[2];
+ if (pipe(termination_fds))
{
- int fd= mysql_socket_getfd(listen_sockets.at(i));
- FD_SET(fd, &clientFDs);
- set_non_blocking_if_supported(listen_sockets.at(i));
+ sql_print_error("pipe() failed %d", errno);
+ DBUG_VOID_RETURN;
}
+#ifdef FD_CLOEXEC
+ for (int fd : termination_fds)
+ (void)fcntl(fd, F_SETFD, FD_CLOEXEC);
#endif
+ mysql_mutex_lock(&LOCK_start_thread);
+ termination_event_fd= termination_fds[1];
+ mysql_mutex_unlock(&LOCK_start_thread);
+
+ struct pollfd event_fd;
+ event_fd.fd= termination_fds[0];
+ event_fd.events= POLLIN;
+ fds.push(event_fd);
+
sd_notify(0, "READY=1\n"
"STATUS=Taking your SQL requests now...\n");
DBUG_PRINT("general",("Waiting for connections."));
while (!abort_loop)
{
-#ifdef HAVE_POLL
retval= poll(fds.get_pos(0), fds.size(), -1);
-#else
- readFDs=clientFDs;
- retval= select(FD_SETSIZE, &readFDs, NULL, NULL, NULL);
-#endif
if (retval < 0)
{
@@ -6355,7 +6334,6 @@ void handle_connections_sockets()
break;
/* Is this a new connection request ? */
-#ifdef HAVE_POLL
for (size_t i= 0; i < fds.size(); ++i)
{
if (fds.at(i).revents & POLLIN)
@@ -6364,16 +6342,6 @@ void handle_connections_sockets()
break;
}
}
-#else // HAVE_POLL
- for (size_t i=0; i < listen_sockets.size(); i++)
- {
- if (FD_ISSET(mysql_socket_getfd(listen_sockets.at(i)), &readFDs))
- {
- sock= listen_sockets.at(i);
- break;
- }
- }
-#endif // HAVE_POLL
for (uint retry=0; retry < MAX_ACCEPT_RETRY && !abort_loop; retry++)
{
@@ -6401,6 +6369,12 @@ void handle_connections_sockets()
}
}
}
+ mysql_mutex_lock(&LOCK_start_thread);
+ for(int fd : termination_fds)
+ close(fd);
+ termination_event_fd= -1;
+ mysql_mutex_unlock(&LOCK_start_thread);
+
sd_notify(0, "STOPPING=1\n"
"STATUS=Shutdown in progress\n");
DBUG_VOID_RETURN;
@@ -6486,16 +6460,6 @@ struct my_option my_long_options[]=
{"binlog-ignore-db", OPT_BINLOG_IGNORE_DB,
"Tells the master that updates to the given database should not be logged to the binary log.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"binlog-row-event-max-size", 0,
- "The maximum size of a row-based binary log event in bytes. Rows will be "
- "grouped into events smaller than this size if possible. "
- "The value has to be a multiple of 256.",
- &opt_binlog_rows_event_max_size, &opt_binlog_rows_event_max_size,
- 0, GET_ULONG, REQUIRED_ARG,
- /* def_value */ 8192, /* min_value */ 256, /* max_value */ UINT_MAX32-1,
- /* sub_size */ 0, /* block_size */ 256,
- /* app_type */ 0
- },
#ifndef DISABLE_GRANT_OPTIONS
{"bootstrap", OPT_BOOTSTRAP, "Used by mysql installation scripts.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -6519,6 +6483,9 @@ struct my_option my_long_options[]=
{"collation-server", 0, "Set the default collation.",
&default_collation_name, &default_collation_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
+ {"character-set-collations", 0, "Overrides for character set default collations.",
+ &character_set_collations_str, &character_set_collations_str,
+ 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"console", OPT_CONSOLE, "Write error output on screen; don't remove the console window on windows.",
&opt_console, &opt_console, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
@@ -6820,7 +6787,7 @@ struct my_option my_long_options[]=
#ifdef HAVE_OPENSSL
{"ssl", 0,
"Enable SSL for connection (automatically enabled if an ssl option is used).",
- &opt_use_ssl, &opt_use_ssl, 0, GET_BOOL, OPT_ARG, 0, 0, 0,
+ &opt_use_ssl, &opt_use_ssl, 0, GET_BOOL, OPT_ARG, 1, 0, 0,
0, 0, 0},
#endif
#ifdef _WIN32
@@ -7014,9 +6981,21 @@ static int show_heartbeat_period(THD *thd, SHOW_VAR *var, void *buff,
return 0;
}
-
#endif /* HAVE_REPLICATION */
+
+static int show_max_used_connections_time(THD *, SHOW_VAR *var, void *buff,
+ system_status_var *, enum_var_type)
+{
+ var->type= SHOW_CHAR;
+ var->value= buff;
+
+ get_date(static_cast<char*>(buff),
+ GETDATE_DATE_TIME | GETDATE_FIXEDLENGTH, max_used_connections_time);
+ return 0;
+}
+
+
static int show_open_tables(THD *, SHOW_VAR *var, void *buff,
system_status_var *, enum_var_type)
{
@@ -7324,6 +7303,20 @@ static int show_memory_used(THD *thd, SHOW_VAR *var, void *buff,
}
+static int show_binlog_space_total(THD *thd, SHOW_VAR *var, char *buff,
+ struct system_status_var *status_var,
+ enum enum_var_type scope)
+{
+ var->type= SHOW_LONGLONG;
+ var->value= buff;
+ if (opt_bin_log && binlog_space_limit)
+ *(ulonglong*) buff= mysql_bin_log.get_binlog_space_total();
+ else
+ *(ulonglong*) buff= 0;
+ return 0;
+}
+
+
#ifndef DBUG_OFF
static int debug_status_func(THD *thd, SHOW_VAR *var, void *buff,
system_status_var *, enum_var_type)
@@ -7406,8 +7399,11 @@ SHOW_VAR status_vars[]= {
{"Binlog_bytes_written", (char*) offsetof(STATUS_VAR, binlog_bytes_written), SHOW_LONGLONG_STATUS},
{"Binlog_cache_disk_use", (char*) &binlog_cache_disk_use, SHOW_LONG},
{"Binlog_cache_use", (char*) &binlog_cache_use, SHOW_LONG},
+ {"Binlog_gtid_index_hit", (char*) &binlog_gtid_index_hit, SHOW_LONG},
+ {"Binlog_gtid_index_miss", (char*) &binlog_gtid_index_miss, SHOW_LONG},
{"Binlog_stmt_cache_disk_use",(char*) &binlog_stmt_cache_disk_use, SHOW_LONG},
{"Binlog_stmt_cache_use", (char*) &binlog_stmt_cache_use, SHOW_LONG},
+ {"Binlog_disk_use", (char*) &show_binlog_space_total, SHOW_SIMPLE_FUNC},
{"Busy_time", (char*) offsetof(STATUS_VAR, busy_time), SHOW_DOUBLE_STATUS},
{"Bytes_received", (char*) offsetof(STATUS_VAR, bytes_received), SHOW_LONGLONG_STATUS},
{"Bytes_sent", (char*) offsetof(STATUS_VAR, bytes_sent), SHOW_LONGLONG_STATUS},
@@ -7442,12 +7438,14 @@ SHOW_VAR status_vars[]= {
{"Feature_dynamic_columns", (char*) offsetof(STATUS_VAR, feature_dynamic_columns), SHOW_LONG_STATUS},
{"Feature_fulltext", (char*) offsetof(STATUS_VAR, feature_fulltext), SHOW_LONG_STATUS},
{"Feature_gis", (char*) offsetof(STATUS_VAR, feature_gis), SHOW_LONG_STATUS},
- {"Feature_insert_returning", (char*)offsetof(STATUS_VAR, feature_insert_returning), SHOW_LONG_STATUS},
- {"Feature_invisible_columns", (char*) offsetof(STATUS_VAR, feature_invisible_columns), SHOW_LONG_STATUS},
+ {"Feature_insert_returning", (char*)offsetof(STATUS_VAR, feature_insert_returning), SHOW_LONG_STATUS},
+ {"Feature_into_outfile", (char*) offsetof(STATUS_VAR, feature_into_outfile), SHOW_LONG_STATUS},
+ {"Feature_into_variable", (char*) offsetof(STATUS_VAR, feature_into_variable), SHOW_LONG_STATUS},
+ {"Feature_invisible_columns",(char*) offsetof(STATUS_VAR, feature_invisible_columns), SHOW_LONG_STATUS},
{"Feature_json", (char*) offsetof(STATUS_VAR, feature_json), SHOW_LONG_STATUS},
{"Feature_locale", (char*) offsetof(STATUS_VAR, feature_locale), SHOW_LONG_STATUS},
{"Feature_subquery", (char*) offsetof(STATUS_VAR, feature_subquery), SHOW_LONG_STATUS},
- {"Feature_system_versioning", (char*) offsetof(STATUS_VAR, feature_system_versioning), SHOW_LONG_STATUS},
+ {"Feature_system_versioning",(char*) offsetof(STATUS_VAR, feature_system_versioning), SHOW_LONG_STATUS},
{"Feature_application_time_periods", (char*) offsetof(STATUS_VAR, feature_application_time_periods), SHOW_LONG_STATUS},
{"Feature_timezone", (char*) offsetof(STATUS_VAR, feature_timezone), SHOW_LONG_STATUS},
{"Feature_trigger", (char*) offsetof(STATUS_VAR, feature_trigger), SHOW_LONG_STATUS},
@@ -7491,6 +7489,7 @@ SHOW_VAR status_vars[]= {
{"Master_gtid_wait_timeouts", (char*) offsetof(STATUS_VAR, master_gtid_wait_timeouts), SHOW_LONG_STATUS},
{"Master_gtid_wait_time", (char*) offsetof(STATUS_VAR, master_gtid_wait_time), SHOW_LONG_STATUS},
{"Max_used_connections", (char*) &max_used_connections, SHOW_LONG},
+ {"Max_used_connections_time",(char*) &show_max_used_connections_time, SHOW_SIMPLE_FUNC},
{"Memory_used", (char*) &show_memory_used, SHOW_SIMPLE_FUNC},
{"Memory_used_initial", (char*) &start_memory_used, SHOW_LONGLONG},
{"Resultset_metadata_skipped", (char *) offsetof(STATUS_VAR, skip_metadata_count),SHOW_LONG_STATUS},
@@ -7828,7 +7827,9 @@ static int mysql_init_variables(void)
delayed_insert_errors= thread_created= 0;
specialflag= 0;
binlog_cache_use= binlog_cache_disk_use= 0;
+ binlog_gtid_index_hit= binlog_gtid_index_miss= 0;
max_used_connections= slow_launch_threads = 0;
+ max_used_connections_time= 0;
mysqld_user= mysqld_chroot= opt_init_file= opt_bin_logname = 0;
prepared_stmt_count= 0;
mysqld_unix_port= opt_mysql_tmpdir= my_bind_addr_str= NullS;
@@ -7862,12 +7863,17 @@ static int mysql_init_variables(void)
strnmov(server_version, MYSQL_SERVER_VERSION, sizeof(server_version)-1);
thread_cache.init();
key_caches.empty();
- if (!(dflt_key_cache= get_or_create_key_cache(default_key_cache_base.str,
- default_key_cache_base.length)))
+ if (!(dflt_key_cache= get_or_create_key_cache(default_base.str,
+ default_base.length)))
{
sql_print_error("Cannot allocate the keycache");
return 1;
}
+ if (create_default_optimizer_costs())
+ {
+ sql_print_error("Cannot allocate optimizer_costs");
+ return 1;
+ }
/* set key_cache_hash.default_value = dflt_key_cache */
multi_keycache_init();
@@ -8087,7 +8093,6 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument,
strmake(server_version, argument, sizeof(server_version) - 1);
set_sys_var_value_origin(&server_version_ptr,
*filename ? sys_var::CONFIG : sys_var::COMMAND_LINE, filename);
- using_custom_server_version= true;
}
#ifndef EMBEDDED_LIBRARY
else
@@ -8110,10 +8115,7 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument,
opt_endinfo=1;
break;
case OPT_SECURE_AUTH:
- WARN_DEPRECATED_NO_REPLACEMENT(NULL, "--secure-auth");
- break;
- case OPT_THREAD_CONCURRENCY:
- WARN_DEPRECATED_NO_REPLACEMENT(NULL, "THREAD_CONCURRENCY");
+ warn_deprecated<1006>("--secure-auth");
break;
case (int) OPT_ISAM_LOG:
opt_myisam_log=1;
@@ -8274,6 +8276,7 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument,
break;
case OPT_BOOTSTRAP:
opt_noacl=opt_bootstrap=1;
+ opt_use_ssl= 0;
#ifdef _WIN32
{
/*
@@ -8416,47 +8419,19 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument,
#endif
break;
}
-#ifdef WITH_WSREP
- case OPT_WSREP_CAUSAL_READS:
- {
- if (global_system_variables.wsrep_causal_reads)
- {
- WSREP_WARN("option --wsrep-causal-reads is deprecated");
- if (!(global_system_variables.wsrep_sync_wait & WSREP_SYNC_WAIT_BEFORE_READ))
- {
- WSREP_WARN("--wsrep-causal-reads=ON takes precedence over --wsrep-sync-wait=%u. "
- "WSREP_SYNC_WAIT_BEFORE_READ is on",
- global_system_variables.wsrep_sync_wait);
- global_system_variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
- }
- }
- else
- {
- if (global_system_variables.wsrep_sync_wait & WSREP_SYNC_WAIT_BEFORE_READ) {
- WSREP_WARN("--wsrep-sync-wait=%u takes precedence over --wsrep-causal-reads=OFF. "
- "WSREP_SYNC_WAIT_BEFORE_READ is on",
- global_system_variables.wsrep_sync_wait);
- global_system_variables.wsrep_causal_reads = 1;
- }
- }
- break;
- }
- case OPT_WSREP_SYNC_WAIT:
- global_system_variables.wsrep_causal_reads=
- MY_TEST(global_system_variables.wsrep_sync_wait &
- WSREP_SYNC_WAIT_BEFORE_READ);
- break;
-#endif /* WITH_WSREP */
}
return 0;
}
-/** Handle arguments for multiple key caches. */
+/**
+ Handle arguments for multiple key caches, replication_options and
+ optimizer_costs
+ */
C_MODE_START
-static void*
+static void *
mysql_getopt_value(const char *name, uint length,
const struct my_option *option, int *error)
{
@@ -8494,6 +8469,7 @@ mysql_getopt_value(const char *name, uint length,
}
/* We return in all cases above. Let us silence -Wimplicit-fallthrough */
DBUG_ASSERT(0);
+ break;
#ifdef HAVE_REPLICATION
/* fall through */
case OPT_REPLICATE_DO_DB:
@@ -8521,11 +8497,62 @@ mysql_getopt_value(const char *name, uint length,
}
return 0;
}
-#endif
+ break;
+#endif
+ case OPT_COSTS_DISK_READ_COST:
+ case OPT_COSTS_INDEX_BLOCK_COPY_COST:
+ case OPT_COSTS_KEY_CMP_COST:
+ case OPT_COSTS_KEY_COPY_COST:
+ case OPT_COSTS_KEY_LOOKUP_COST:
+ case OPT_COSTS_KEY_NEXT_FIND_COST:
+ case OPT_COSTS_DISK_READ_RATIO:
+ case OPT_COSTS_ROW_COPY_COST:
+ case OPT_COSTS_ROW_LOOKUP_COST:
+ case OPT_COSTS_ROW_NEXT_FIND_COST:
+ case OPT_COSTS_ROWID_CMP_COST:
+ case OPT_COSTS_ROWID_COPY_COST:
+ {
+ OPTIMIZER_COSTS *costs;
+ if (unlikely(!(costs= get_or_create_optimizer_costs(name, length))))
+ {
+ if (error)
+ *error= EXIT_OUT_OF_MEMORY;
+ return 0;
+ }
+ switch (option->id) {
+ case OPT_COSTS_DISK_READ_COST:
+ return &costs->disk_read_cost;
+ case OPT_COSTS_INDEX_BLOCK_COPY_COST:
+ return &costs->index_block_copy_cost;
+ case OPT_COSTS_KEY_CMP_COST:
+ return &costs->key_cmp_cost;
+ case OPT_COSTS_KEY_COPY_COST:
+ return &costs->key_copy_cost;
+ case OPT_COSTS_KEY_LOOKUP_COST:
+ return &costs->key_lookup_cost;
+ case OPT_COSTS_KEY_NEXT_FIND_COST:
+ return &costs->key_next_find_cost;
+ case OPT_COSTS_DISK_READ_RATIO:
+ return &costs->disk_read_ratio;
+ case OPT_COSTS_ROW_COPY_COST:
+ return &costs->row_copy_cost;
+ case OPT_COSTS_ROW_LOOKUP_COST:
+ return &costs->row_lookup_cost;
+ case OPT_COSTS_ROW_NEXT_FIND_COST:
+ return &costs->row_next_find_cost;
+ case OPT_COSTS_ROWID_CMP_COST:
+ return &costs->rowid_cmp_cost;
+ case OPT_COSTS_ROWID_COPY_COST:
+ return &costs->rowid_copy_cost;
+ default:
+ DBUG_ASSERT(0);
+ }
+ }
}
return option->value;
}
+
static void option_error_reporter(enum loglevel level, const char *format, ...)
{
va_list args;
@@ -8637,6 +8664,16 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
return 1;
}
+#ifndef EMBEDDED_LIBRARY
+ if (validate_redirect_url(global_system_variables.redirect_url,
+ strlen(global_system_variables.redirect_url)))
+ {
+ sql_print_error("Invalid redirect_url: %s",
+ global_system_variables.redirect_url);
+ return 1;
+ }
+#endif
+
if (opt_disable_networking)
mysqld_port= mysqld_extra_port= 0;
@@ -8748,14 +8785,6 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
if (opt_short_log_format)
opt_specialflag|= SPECIAL_SHORT_LOG_FORMAT;
- if (init_global_datetime_format(MYSQL_TIMESTAMP_DATE,
- &global_date_format) ||
- init_global_datetime_format(MYSQL_TIMESTAMP_TIME,
- &global_time_format) ||
- init_global_datetime_format(MYSQL_TIMESTAMP_DATETIME,
- &global_datetime_format))
- return 1;
-
#ifdef EMBEDDED_LIBRARY
one_thread_scheduler(thread_scheduler, &connection_count);
/*
@@ -9129,7 +9158,7 @@ void refresh_status(THD *thd)
reset_pfs_status_stats();
#endif
- /* Add thread's status variabes to global status */
+ /* Add thread's status variabels to global status */
add_to_status(&global_status_var, &thd->status_var);
/* Reset thread's status variables */
@@ -9157,6 +9186,7 @@ void refresh_status(THD *thd)
connections. This is not perfect, but status data is not exact anyway.
*/
max_used_connections= connection_count + extra_connection_count;
+ max_used_connections_time= time(nullptr);
}
#ifdef HAVE_PSI_INTERFACE
@@ -9201,7 +9231,8 @@ static PSI_file_info all_server_files[]=
{ &key_file_trg, "trigger_name", 0},
{ &key_file_trn, "trigger", 0},
{ &key_file_init, "init", 0},
- { &key_file_binlog_state, "binlog_state", 0}
+ { &key_file_binlog_state, "binlog_state", 0},
+ { &key_file_gtid_index, "gtid_index", 0}
};
#endif /* HAVE_PSI_INTERFACE */
@@ -9396,6 +9427,7 @@ PSI_memory_key key_memory_acl_cache;
PSI_memory_key key_memory_acl_mem;
PSI_memory_key key_memory_acl_memex;
PSI_memory_key key_memory_binlog_cache_mngr;
+PSI_memory_key key_memory_binlog_gtid_index;
PSI_memory_key key_memory_binlog_pos;
PSI_memory_key key_memory_binlog_recover_exec;
PSI_memory_key key_memory_binlog_statement_buffer;
@@ -9635,6 +9667,7 @@ static PSI_memory_info all_server_memory[]=
// { &key_memory_Slave_job_group_group_relay_log_name, "Slave_job_group::group_relay_log_name", 0},
{ &key_memory_Relay_log_info_group_relay_log_name, "Relay_log_info::group_relay_log_name", 0},
{ &key_memory_binlog_cache_mngr, "binlog_cache_mngr", 0},
+ { &key_memory_binlog_gtid_index, "binlog_gtid_index", 0},
{ &key_memory_Row_data_memory_memory, "Row_data_memory::memory", 0},
// { &key_memory_Gtid_set_to_string, "Gtid_set::to_string", 0},
// { &key_memory_Gtid_state_to_string, "Gtid_state::to_string", 0},
diff --git a/sql/mysqld.h b/sql/mysqld.h
index 749c0bd1..33492ad7 100644
--- a/sql/mysqld.h
+++ b/sql/mysqld.h
@@ -158,6 +158,7 @@ extern bool opt_using_transactions;
extern ulong current_pid;
extern double expire_logs_days;
extern ulong binlog_expire_logs_seconds;
+extern ulonglong binlog_space_limit;
extern my_bool relay_log_recovery;
extern uint sync_binlog_period, sync_relaylog_period,
sync_relayloginfo_period, sync_masterinfo_period;
@@ -173,6 +174,7 @@ extern ulong delay_key_write_options;
extern char *opt_logname, *opt_slow_logname, *opt_bin_logname,
*opt_relay_logname;
extern char *opt_binlog_index_name;
+extern my_bool opt_binlog_legacy_event_pos;
extern char *opt_backup_history_logname, *opt_backup_progress_logname,
*opt_backup_settings_name;
extern const char *log_output_str;
@@ -216,12 +218,15 @@ extern ulonglong thd_startup_options;
extern my_thread_id global_thread_id;
extern ulong binlog_cache_use, binlog_cache_disk_use;
extern ulong binlog_stmt_cache_use, binlog_stmt_cache_disk_use;
+extern ulong binlog_gtid_index_hit, binlog_gtid_index_miss;
extern ulong aborted_threads, aborted_connects, aborted_connects_preauth;
extern ulong delayed_insert_timeout;
extern ulong delayed_insert_limit, delayed_queue_size;
extern ulong delayed_insert_threads, delayed_insert_writes;
extern ulong delayed_rows_in_use,delayed_insert_errors;
extern Atomic_counter<uint32_t> slave_open_temp_tables;
+extern Atomic_counter<ulonglong> sending_new_binlog_file;
+extern uint slave_connections_needed_for_purge;
extern ulonglong query_cache_size;
extern ulong query_cache_limit;
extern ulong query_cache_min_res_unit;
@@ -242,12 +247,17 @@ extern uint max_prepared_stmt_count, prepared_stmt_count;
extern MYSQL_PLUGIN_IMPORT ulong open_files_limit;
extern ulonglong binlog_cache_size, binlog_stmt_cache_size, binlog_file_cache_size;
extern ulonglong max_binlog_cache_size, max_binlog_stmt_cache_size;
+extern ulonglong internal_binlog_space_limit;
+extern uint internal_slave_connections_needed_for_purge;
extern ulong max_binlog_size;
extern ulong slave_max_allowed_packet;
extern ulonglong slave_max_statement_time;
extern double slave_max_statement_time_double;
extern ulong opt_binlog_rows_event_max_size;
extern ulong binlog_row_metadata;
+extern my_bool opt_binlog_gtid_index;
+extern uint opt_binlog_gtid_index_page_size;
+extern uint opt_binlog_gtid_index_span_min;
extern ulong thread_cache_size;
extern ulong stored_program_cache_size;
extern ulong opt_slave_parallel_threads;
@@ -326,9 +336,9 @@ extern PSI_mutex_key key_BINLOG_LOCK_index, key_BINLOG_LOCK_xid_list,
key_LOCK_logger, key_LOCK_manager,
key_LOCK_prepared_stmt_count,
key_LOCK_rpl_status, key_LOCK_server_started,
- key_LOCK_status,
+ key_LOCK_status, key_LOCK_optimizer_costs,
key_LOCK_thd_data, key_LOCK_thd_kill,
- key_LOCK_user_conn, key_LOG_LOCK_log,
+ key_LOCK_user_conn, key_LOG_LOCK_log, key_gtid_index_lock,
key_master_info_data_lock, key_master_info_run_lock,
key_master_info_sleep_lock, key_master_info_start_stop_lock,
key_master_info_start_alter_lock,
@@ -406,7 +416,7 @@ extern PSI_file_key key_file_relaylog, key_file_relaylog_index,
key_file_relaylog_cache, key_file_relaylog_index_cache;
extern PSI_socket_key key_socket_tcpip, key_socket_unix,
key_socket_client_connection;
-extern PSI_file_key key_file_binlog_state;
+extern PSI_file_key key_file_binlog_state, key_file_gtid_index;
#ifdef HAVE_des
extern char* des_key_file;
@@ -458,6 +468,7 @@ extern PSI_memory_key key_memory_user_var_entry_value;
extern PSI_memory_key key_memory_Slave_job_group_group_relay_log_name;
extern PSI_memory_key key_memory_Relay_log_info_group_relay_log_name;
extern PSI_memory_key key_memory_binlog_cache_mngr;
+extern PSI_memory_key key_memory_binlog_gtid_index;
extern PSI_memory_key key_memory_Row_data_memory_memory;
extern PSI_memory_key key_memory_errmsgs;
extern PSI_memory_key key_memory_Event_queue_element_for_exec_names;
@@ -726,6 +737,7 @@ extern pthread_t signal_thread;
#ifdef HAVE_OPENSSL
extern struct st_VioSSLFd * ssl_acceptor_fd;
+extern LEX_CUSTRING ssl_acceptor_fingerprint();
#endif /* HAVE_OPENSSL */
/*
@@ -746,7 +758,6 @@ extern const char *mysql_real_data_home_ptr;
extern ulong thread_handling;
extern "C" MYSQL_PLUGIN_IMPORT char server_version[SERVER_VERSION_LENGTH];
extern char *server_version_ptr;
-extern bool using_custom_server_version;
extern MYSQL_PLUGIN_IMPORT char mysql_real_data_home[];
extern char mysql_unpacked_real_data_home[];
extern MYSQL_PLUGIN_IMPORT struct system_variables global_system_variables;
@@ -766,7 +777,8 @@ extern mysql_mutex_t
LOCK_error_log, LOCK_delayed_insert, LOCK_short_uuid_generator,
LOCK_delayed_status, LOCK_delayed_create, LOCK_crypt, LOCK_timezone,
LOCK_active_mi, LOCK_manager, LOCK_user_conn,
- LOCK_prepared_stmt_count, LOCK_error_messages, LOCK_backup_log;
+ LOCK_prepared_stmt_count, LOCK_error_messages, LOCK_backup_log,
+ LOCK_optimizer_costs;
extern MYSQL_PLUGIN_IMPORT mysql_mutex_t LOCK_global_system_variables;
extern mysql_rwlock_t LOCK_all_status_vars;
extern mysql_mutex_t LOCK_start_thread;
@@ -797,6 +809,18 @@ enum options_mysqld
OPT_BINLOG_IGNORE_DB,
OPT_BIN_LOG,
OPT_BOOTSTRAP,
+ OPT_COSTS_DISK_READ_COST,
+ OPT_COSTS_INDEX_BLOCK_COPY_COST,
+ OPT_COSTS_KEY_CMP_COST,
+ OPT_COSTS_KEY_COPY_COST,
+ OPT_COSTS_KEY_LOOKUP_COST,
+ OPT_COSTS_KEY_NEXT_FIND_COST,
+ OPT_COSTS_DISK_READ_RATIO,
+ OPT_COSTS_ROW_COPY_COST,
+ OPT_COSTS_ROW_LOOKUP_COST,
+ OPT_COSTS_ROW_NEXT_FIND_COST,
+ OPT_COSTS_ROWID_CMP_COST,
+ OPT_COSTS_ROWID_COPY_COST,
OPT_EXPIRE_LOGS_DAYS,
OPT_BINLOG_EXPIRE_LOGS_SECONDS,
OPT_CONSOLE,
@@ -835,12 +859,7 @@ enum options_mysqld
OPT_SSL_CRL,
OPT_SSL_CRLPATH,
OPT_SSL_KEY,
- OPT_THREAD_CONCURRENCY,
OPT_WANT_CORE,
-#ifdef WITH_WSREP
- OPT_WSREP_CAUSAL_READS,
- OPT_WSREP_SYNC_WAIT,
-#endif /* WITH_WSREP */
OPT_MYSQL_COMPATIBILITY,
OPT_TLS_VERSION, OPT_SECURE_AUTH,
OPT_MYSQL_TO_BE_IMPLEMENTED,
@@ -914,7 +933,10 @@ enum enum_query_type
/// Print for FRM file. Focus on parse-back.
/// e.g. VIEW expressions and virtual column expressions
- QT_FOR_FRM= (1 << 13)
+ QT_FOR_FRM= (1 << 13),
+
+ // Print only the SELECT part, even for INSERT...SELECT
+ QT_SELECT_ONLY = (1 << 14)
};
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index af65d92c..d8bfc8d3 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -47,6 +47,8 @@
#include "probes_mysql.h"
#include <debug_sync.h>
#include "proxy_protocol.h"
+#include <mysql_com_server.h>
+#include <mysqld.h>
PSI_memory_key key_memory_NET_buff;
PSI_memory_key key_memory_NET_compress_packet;
@@ -62,13 +64,9 @@ PSI_memory_key key_memory_NET_compress_packet;
*/
#ifdef EXTRA_DEBUG
#define EXTRA_DEBUG_fprintf fprintf
-#define EXTRA_DEBUG_fflush fflush
#define EXTRA_DEBUG_ASSERT DBUG_ASSERT
#else
static void inline EXTRA_DEBUG_fprintf(...) {}
-#ifndef MYSQL_SERVER
-static int inline EXTRA_DEBUG_fflush(...) { return 0; }
-#endif
#endif /* EXTRA_DEBUG */
#ifdef MYSQL_SERVER
@@ -98,22 +96,6 @@ static void inline MYSQL_SERVER_my_error(...) {}
the client should have a bigger max_allowed_packet.
*/
-#if defined(_WIN32) || !defined(MYSQL_SERVER)
- /* The following is because alarms doesn't work on windows. */
-#ifndef NO_ALARM
-#define NO_ALARM
-#endif
-#endif
-
-#ifndef NO_ALARM
-#include "my_pthread.h"
-void sql_print_error(const char *format,...);
-#else
-#define DONT_USE_THR_ALARM
-#endif /* NO_ALARM */
-
-#include "thr_alarm.h"
-
#ifdef MYSQL_SERVER
/*
The following variables/functions should really not be declared
@@ -166,22 +148,18 @@ my_bool my_net_init(NET *net, Vio *vio, void *thd, uint my_flags)
net->using_proxy_protocol= 0;
net->thread_specific_malloc= MY_TEST(my_flags & MY_THREAD_SPECIFIC);
net->thd= 0;
-#ifdef MYSQL_SERVER
net->extension= NULL;
net->thd= thd;
-#endif
if (vio)
{
/* For perl DBI/DBD. */
net->fd= vio_fd(vio);
-#if defined(MYSQL_SERVER) && !defined(_WIN32)
if (!(test_flags & TEST_BLOCKING))
{
my_bool old_mode;
vio_blocking(vio, FALSE, &old_mode);
}
-#endif
vio_fastsend(vio);
}
DBUG_RETURN(0);
@@ -655,12 +633,7 @@ net_real_write(NET *net,const uchar *packet, size_t len)
{
size_t length;
const uchar *pos,*end;
- thr_alarm_t alarmed;
-#ifndef NO_ALARM
- ALARM alarm_buff;
-#endif
uint retry_count=0;
- my_bool net_blocking = vio_is_blocking(net->vio);
DBUG_ENTER("net_real_write");
#if defined(MYSQL_SERVER)
@@ -716,62 +689,21 @@ net_real_write(NET *net,const uchar *packet, size_t len)
#ifdef DEBUG_DATA_PACKETS
DBUG_DUMP("data_written", packet, len);
#endif
-
-#ifndef NO_ALARM
- thr_alarm_init(&alarmed);
- if (net_blocking)
- thr_alarm(&alarmed, net->write_timeout, &alarm_buff);
-#else
- alarmed=0;
- /* Write timeout is set in my_net_set_write_timeout */
-#endif /* NO_ALARM */
-
pos= packet;
end=pos+len;
while (pos != end)
{
- if ((long) (length= vio_write(net->vio,pos,(size_t) (end-pos))) <= 0)
+ length= vio_write(net->vio, pos, (size_t) (end - pos));
+ if (ssize_t(length) <= 0)
{
- my_bool interrupted = vio_should_retry(net->vio);
-#if !defined(_WIN32)
- if ((interrupted || length == 0) && !thr_alarm_in_use(&alarmed))
+ bool interrupted= vio_should_retry(net->vio);
+ if (interrupted || !length)
{
- if (!thr_alarm(&alarmed, net->write_timeout, &alarm_buff))
- { /* Always true for client */
- my_bool old_mode;
- while (vio_blocking(net->vio, TRUE, &old_mode) < 0)
- {
- if (vio_should_retry(net->vio) && retry_count++ < net->retry_count)
- continue;
- EXTRA_DEBUG_fprintf(stderr,
- "%s: my_net_write: fcntl returned error %d, aborting thread\n",
- my_progname,vio_errno(net->vio));
- net->error= 2; /* Close socket */
- net->last_errno= ER_NET_PACKET_TOO_LARGE;
- MYSQL_SERVER_my_error(ER_NET_PACKET_TOO_LARGE, MYF(0));
- goto end;
- }
- retry_count=0;
- continue;
- }
+ if (retry_count++ < net->retry_count)
+ continue;
}
- else
-#endif /* !defined(_WIN32) */
- if (thr_alarm_in_use(&alarmed) && !thr_got_alarm(&alarmed) &&
- interrupted)
- {
- if (retry_count++ < net->retry_count)
- continue;
- EXTRA_DEBUG_fprintf(stderr, "%s: write looped, aborting thread\n",
- my_progname);
- }
-#ifndef MYSQL_SERVER
- if (vio_errno(net->vio) == SOCKET_EINTR)
- {
- DBUG_PRINT("warning",("Interrupted write. Retrying..."));
- continue;
- }
-#endif /* !defined(MYSQL_SERVER) */
+ EXTRA_DEBUG_fprintf(stderr, "%s: write looped, aborting thread\n",
+ my_progname);
net->error= 2; /* Close socket */
net->last_errno= (interrupted ? ER_NET_WRITE_INTERRUPTED :
ER_NET_ERROR_ON_WRITE);
@@ -793,113 +725,15 @@ net_real_write(NET *net,const uchar *packet, size_t len)
pos+=length;
update_statistics(thd_increment_bytes_sent(net->thd, length));
}
-#ifndef _WIN32
- end:
-#endif
#ifdef HAVE_COMPRESS
if (net->compress)
my_free((void*) packet);
#endif
- if (thr_alarm_in_use(&alarmed))
- {
- my_bool old_mode;
- thr_end_alarm(&alarmed);
- if (!net_blocking)
- vio_blocking(net->vio, net_blocking, &old_mode);
- }
- net->reading_or_writing=0;
- DBUG_RETURN(((int) (pos != end)));
-}
-
-
-/*****************************************************************************
-** Read something from server/clinet
-*****************************************************************************/
-
-#ifndef NO_ALARM
-
-static my_bool net_safe_read(NET *net, uchar *buff, size_t length,
- thr_alarm_t *alarmed)
-{
- uint retry_count=0;
- while (length > 0)
- {
- size_t tmp;
- if ((long) (tmp= vio_read(net->vio, buff, length)) <= 0)
- {
- my_bool interrupted = vio_should_retry(net->vio);
- if (!thr_got_alarm(alarmed) && interrupted)
- { /* Probably in MIT threads */
- if (retry_count++ < net->retry_count)
- continue;
- }
- return 1;
- }
- length-= tmp;
- buff+= tmp;
- }
- return 0;
+ net->reading_or_writing= 0;
+ DBUG_RETURN(pos != end);
}
/**
- Help function to clear the commuication buffer when we get a too big packet.
-
- @param net Communication handle
- @param remain Bytes to read
- @param alarmed Parameter for thr_alarm()
- @param alarm_buff Parameter for thr_alarm()
-
- @retval
- 0 Was able to read the whole packet
- @retval
- 1 Got mailformed packet from client
-*/
-
-static my_bool my_net_skip_rest(NET *net, uint32 remain, thr_alarm_t *alarmed,
- ALARM *alarm_buff)
-{
- longlong limit= net->max_packet_size*net->net_skip_rest_factor;
- uint32 old=remain;
- DBUG_ENTER("my_net_skip_rest");
- DBUG_PRINT("enter",("bytes_to_skip: %u", (uint) remain));
-
- /* The following is good for debugging */
- update_statistics(thd_increment_net_big_packet_count(net->thd, 1));
-
- if (!thr_alarm_in_use(alarmed))
- {
- my_bool old_mode;
- if (thr_alarm(alarmed,net->read_timeout, alarm_buff) ||
- vio_blocking(net->vio, TRUE, &old_mode) < 0)
- DBUG_RETURN(1); /* Can't setup, abort */
- }
- for (;;)
- {
- while (remain > 0)
- {
- size_t length= MY_MIN(remain, net->max_packet);
- if (net_safe_read(net, net->buff, length, alarmed))
- DBUG_RETURN(1);
- update_statistics(thd_increment_bytes_received(net->thd, length));
- remain -= (uint32) length;
- limit-= length;
- if (limit < 0)
- DBUG_RETURN(1);
- }
- if (old != MAX_PACKET_LENGTH)
- break;
- if (net_safe_read(net, net->buff, NET_HEADER_SIZE, alarmed))
- DBUG_RETURN(1);
- limit-= NET_HEADER_SIZE;
- old=remain= uint3korr(net->buff);
- net->pkt_nr++;
- }
- DBUG_RETURN(0);
-}
-#endif /* NO_ALARM */
-
-
-/**
Try to parse and process proxy protocol header.
This function is called in case MySQL packet header cannot be parsed.
@@ -973,26 +807,18 @@ static handle_proxy_header_result handle_proxy_header(NET *net)
Returns length of packet.
*/
-static ulong
-my_real_read(NET *net, size_t *complen,
- my_bool header __attribute__((unused)))
+static ulong my_real_read(NET *net, size_t *complen,
+ my_bool header __attribute__((unused)))
{
uchar *pos;
size_t length;
uint i,retry_count=0;
ulong len=packet_error;
my_bool expect_error_packet __attribute__((unused))= 0;
- thr_alarm_t alarmed;
-#ifndef NO_ALARM
- ALARM alarm_buff;
-#endif
-
retry:
- my_bool net_blocking=vio_is_blocking(net->vio);
uint32 remain= (net->compress ? NET_HEADER_SIZE+COMP_HEADER_SIZE :
NET_HEADER_SIZE);
-#ifdef MYSQL_SERVER
size_t count= remain;
struct st_net_server *server_extension= 0;
@@ -1005,99 +831,41 @@ retry:
server_extension->m_before_header(net, user_data, count);
}
}
-#endif
*complen = 0;
net->reading_or_writing=1;
- thr_alarm_init(&alarmed);
-#ifndef NO_ALARM
- if (net_blocking)
- thr_alarm(&alarmed,net->read_timeout,&alarm_buff);
-#else
- /* Read timeout is set in my_net_set_read_timeout */
-#endif /* NO_ALARM */
-
- pos = net->buff + net->where_b; /* net->packet -4 */
- for (i=0 ; i < 2 ; i++)
+ pos = net->buff + net->where_b;
+ for (i=0; i < 2 ; i++)
+ {
+ while (remain > 0)
{
- while (remain > 0)
+ length= vio_read(net->vio, pos, remain);
+ if ((ssize_t) length <= 0)
{
- /* First read is done with non blocking mode */
- if ((long) (length= vio_read(net->vio, pos, remain)) <= 0L)
+ DBUG_PRINT("info", ("vio_read returned %lld errno: %d",
+ (long long) length, vio_errno(net->vio)));
+ if (i == 0 && unlikely(thd_net_is_killed((THD *) net->thd)))
{
- my_bool interrupted = vio_should_retry(net->vio);
-
- DBUG_PRINT("info",("vio_read returned %ld errno: %d",
- (long) length, vio_errno(net->vio)));
-
- if (i== 0 && unlikely(thd_net_is_killed((THD*) net->thd)))
- {
- DBUG_PRINT("info", ("thd is killed"));
- len= packet_error;
- net->error= 0;
- net->last_errno= ER_CONNECTION_KILLED;
- MYSQL_SERVER_my_error(net->last_errno, MYF(0));
- goto end;
- }
-
-#if !defined(_WIN32) && defined(MYSQL_SERVER)
- /*
- We got an error that there was no data on the socket. We now set up
- an alarm to not 'read forever', change the socket to the blocking
- mode and try again
- */
- if ((interrupted || length == 0) && !thr_alarm_in_use(&alarmed))
- {
- if (!thr_alarm(&alarmed,net->read_timeout,&alarm_buff)) /* Don't wait too long */
- {
- my_bool old_mode;
- while (vio_blocking(net->vio, TRUE, &old_mode) < 0)
- {
- if (vio_should_retry(net->vio) &&
- retry_count++ < net->retry_count)
- continue;
- DBUG_PRINT("error",
- ("fcntl returned error %d, aborting thread",
- vio_errno(net->vio)));
- EXTRA_DEBUG_fprintf(stderr,
- "%s: read: fcntl returned error %d, aborting thread\n",
- my_progname,vio_errno(net->vio));
- len= packet_error;
- net->error= 2; /* Close socket */
- net->last_errno= ER_NET_FCNTL_ERROR;
- MYSQL_SERVER_my_error(ER_NET_FCNTL_ERROR, MYF(0));
- goto end;
- }
- retry_count=0;
- continue;
- }
- }
-#endif /* (!defined(_WIN32) && defined(MYSQL_SERVER) */
- if (thr_alarm_in_use(&alarmed) && !thr_got_alarm(&alarmed) &&
- interrupted)
- { /* Probably in MIT threads */
- if (retry_count++ < net->retry_count)
- continue;
- EXTRA_DEBUG_fprintf(stderr, "%s: read looped with error %d on "
- "file %lld, aborting thread\n",
- my_progname, vio_errno(net->vio),
- (longlong) vio_fd(net->vio));
- }
-#ifndef MYSQL_SERVER
- if (length != 0 && vio_should_retry(net->vio))
- {
- DBUG_PRINT("warning",("Interrupted read. Retrying..."));
- continue;
- }
-#endif
- DBUG_PRINT("error",("Could not read packet: remain: %u errno: %d length: %ld",
- remain, vio_errno(net->vio), (long) length));
- len= packet_error;
- net->error= 2; /* Close socket */
- net->last_errno= (vio_was_timeout(net->vio) ?
- ER_NET_READ_INTERRUPTED :
- ER_NET_READ_ERROR);
+ DBUG_PRINT("info", ("thd is killed"));
+ len= packet_error;
+ net->error= 0;
+ net->last_errno= ER_CONNECTION_KILLED;
+ MYSQL_SERVER_my_error(net->last_errno, MYF(0));
+ goto end;
+ }
+ if (vio_should_retry(net->vio) && retry_count++ < net->retry_count)
+ continue;
+ EXTRA_DEBUG_fprintf(stderr,
+ "%s: read looped with error %d, aborting thread\n",
+ my_progname, vio_errno(net->vio));
+ DBUG_PRINT("error",
+ ("Couldn't read packet: remain: %u errno: %d length: %ld",
+ remain, vio_errno(net->vio), (long) length));
+ len= packet_error;
+ net->error= 2;
+ net->last_errno= (vio_was_timeout(net->vio) ? ER_NET_READ_INTERRUPTED
+ : ER_NET_READ_ERROR);
#ifdef MYSQL_SERVER
if (global_system_variables.log_warnings > 3)
{
@@ -1113,174 +881,146 @@ retry:
else
my_error(net->last_errno, MYF(0));
#endif /* MYSQL_SERVER */
- goto end;
- }
- remain -= (uint32) length;
- pos+= length;
- update_statistics(thd_increment_bytes_received(net->thd, length));
+ goto end;
}
-
+ remain-= (uint32) length;
+ pos+= length;
+ update_statistics(thd_increment_bytes_received(net->thd, length));
+ }
#ifdef DEBUG_DATA_PACKETS
- DBUG_DUMP("data_read", net->buff+net->where_b, length);
+ DBUG_DUMP("data_read", net->buff + net->where_b, length);
#endif
- if (i == 0)
- { /* First parts is packet length */
- size_t helping;
+ if (i == 0)
+ {
+ /* First part is packet length */
+ size_t helping;
#ifndef DEBUG_DATA_PACKETS
- DBUG_DUMP("packet_header", net->buff+net->where_b,
- NET_HEADER_SIZE);
+ DBUG_DUMP("packet_header", net->buff + net->where_b, NET_HEADER_SIZE);
#endif
- if (net->buff[net->where_b + 3] != (uchar) net->pkt_nr)
+ if (net->buff[net->where_b + 3] != (uchar) net->pkt_nr)
+ {
+ if (net->pkt_nr_can_be_reset)
+ {
+ /*
+ We are using a protocol like semi-sync where master and slave
+ sends packets in parallel.
+ Copy current one as it can be useful for debugging.
+ */
+ net->pkt_nr= net->buff[net->where_b + 3];
+ }
+ else
{
- if (net->pkt_nr_can_be_reset)
+#ifndef MYSQL_SERVER
+ if (net->buff[net->where_b + 3] == (uchar) (net->pkt_nr -1))
{
/*
- We are using a protocol like semi-sync where master and slave
- sends packets in parallel.
- Copy current one as it can be useful for debugging.
+ If the server was killed then the server may have missed the
+ last sent client packet and the packet numbering may be one off.
*/
- net->pkt_nr= net->buff[net->where_b + 3];
+ DBUG_PRINT("warning", ("Found possible out of order packets"));
+ expect_error_packet= 1;
}
else
- {
-#ifndef MYSQL_SERVER
- if (net->buff[net->where_b + 3] == (uchar) (net->pkt_nr -1))
- {
- /*
- If the server was killed then the server may have missed the
- last sent client packet and the packet numbering may be one off.
- */
- DBUG_PRINT("warning", ("Found possible out of order packets"));
- expect_error_packet= 1;
- }
- else
#endif
- goto packets_out_of_order;
- }
+ goto packets_out_of_order;
}
- net->compress_pkt_nr= ++net->pkt_nr;
+ }
+ net->compress_pkt_nr= ++net->pkt_nr;
#ifdef HAVE_COMPRESS
- if (net->compress)
- {
- /*
- The following uint3korr() may read 4 bytes, so make sure we don't
- read unallocated or uninitialized memory. The right-hand expression
- must match the size of the buffer allocated in net_realloc().
- */
- DBUG_ASSERT(net->where_b + NET_HEADER_SIZE + sizeof(uint32) <=
- net->max_packet + NET_HEADER_SIZE + COMP_HEADER_SIZE + 1);
- /*
- If the packet is compressed then complen > 0 and contains the
- number of bytes in the uncompressed packet
- */
- *complen=uint3korr(&(net->buff[net->where_b + NET_HEADER_SIZE]));
- }
+ if (net->compress)
+ {
+ /*
+ The following uint3korr() may read 4 bytes, so make sure we don't
+ read unallocated or uninitialized memory. The right-hand expression
+ must match the size of the buffer allocated in net_realloc().
+ */
+ DBUG_ASSERT(net->where_b + NET_HEADER_SIZE + sizeof(uint32) <=
+ net->max_packet + NET_HEADER_SIZE + COMP_HEADER_SIZE + 1);
+ /*
+ If the packet is compressed then complen > 0 and contains the
+ number of bytes in the uncompressed packet
+ */
+ *complen= uint3korr(&(net->buff[net->where_b + NET_HEADER_SIZE]));
+ }
#endif
- len=uint3korr(net->buff+net->where_b);
- if (!len) /* End of big multi-packet */
- goto end;
- helping = MY_MAX(len,*complen) + net->where_b;
- /* The necessary size of net->buff */
- if (helping >= net->max_packet)
- {
- if (net_realloc(net,helping))
- {
-#if defined(MYSQL_SERVER) && !defined(NO_ALARM)
- if (!net->compress &&
- !my_net_skip_rest(net, (uint32) len, &alarmed, &alarm_buff))
- net->error= 3; /* Successfully skiped packet */
-#endif
- len= packet_error; /* Return error and close connection */
- goto end;
- }
- }
- pos=net->buff + net->where_b;
- remain = (uint32) len;
-#ifdef MYSQL_SERVER
- if (server_extension != NULL)
+ len= uint3korr(net->buff + net->where_b);
+ if (!len) /* End of big multi-packet */
+ goto end;
+ helping= MY_MAX(len, *complen) + net->where_b;
+ /* The necessary size of net->buff */
+ if (helping >= net->max_packet)
+ {
+ if (net_realloc(net, helping))
{
- void *user_data= server_extension->m_user_data;
- server_extension->m_after_header(net, user_data, count, 0);
- server_extension= NULL;
+ len= packet_error; /* Return error and close connection */
+ goto end;
}
-#endif
}
+ pos= net->buff + net->where_b;
+ remain= (uint32) len;
+ if (server_extension != NULL)
+ {
+ void *user_data= server_extension->m_user_data;
+ server_extension->m_after_header(net, user_data, count, 0);
+ server_extension= NULL;
+ }
+ }
#ifndef MYSQL_SERVER
- else if (expect_error_packet)
+ else if (expect_error_packet)
+ {
+ /*
+ This check is safe both for compressed and not compressed protocol
+ as for the compressed protocol errors are not compressed anymore.
+ */
+ if (net->buff[net->where_b] != (uchar) 255)
{
- /*
- This check is safe both for compressed and not compressed protocol
- as for the compressed protocol errors are not compressed anymore.
- */
- if (net->buff[net->where_b] != (uchar) 255)
- {
- /* Restore pkt_nr to original value */
- net->pkt_nr--;
- goto packets_out_of_order;
- }
+ /* Restore pkt_nr to original value */
+ net->pkt_nr--;
+ goto packets_out_of_order;
}
-#endif
}
+#endif
+ }
end:
- if (thr_alarm_in_use(&alarmed))
- {
- my_bool old_mode;
- thr_end_alarm(&alarmed);
- if (!net_blocking)
- vio_blocking(net->vio, net_blocking, &old_mode);
- }
net->reading_or_writing=0;
#ifdef DEBUG_DATA_PACKETS
if (len != packet_error)
DBUG_DUMP("data_read", net->buff+net->where_b, len);
#endif
-#ifdef MYSQL_SERVER
if (server_extension != NULL)
{
void *user_data= server_extension->m_user_data;
server_extension->m_after_header(net, user_data, count, 1);
DBUG_ASSERT(len == packet_error || len == 0);
}
-#endif
return(len);
-packets_out_of_order:
+packets_out_of_order :
+ switch (handle_proxy_header(net))
{
- switch (handle_proxy_header(net)) {
- case ABORT:
- /* error happened, message is already written. */
- len= packet_error;
- goto end;
- case RETRY:
- goto retry;
- case IGNORE:
- break;
- }
-
- DBUG_PRINT("error",
- ("Packets out of order (Found: %d, expected %u)",
- (int) net->buff[net->where_b + 3],
- net->pkt_nr));
- EXTRA_DEBUG_ASSERT(0);
- /*
- We don't make noise server side, since the client is expected
- to break the protocol for e.g. --send LOAD DATA .. LOCAL where
- the server expects the client to send a file, but the client
- may reply with a new command instead.
- */
-#ifndef MYSQL_SERVER
- EXTRA_DEBUG_fflush(stdout);
- EXTRA_DEBUG_fprintf(stderr,"Error: Packets out of order (Found: %d, expected %d)\n",
- (int) net->buff[net->where_b + 3],
- (uint) (uchar) net->pkt_nr);
- EXTRA_DEBUG_fflush(stderr);
-#endif
+ case ABORT:
+ /* error happened, message is already written. */
len= packet_error;
- MYSQL_SERVER_my_error(ER_NET_PACKETS_OUT_OF_ORDER, MYF(0));
goto end;
+ case RETRY:
+ goto retry;
+ case IGNORE:
+ break;
}
+ DBUG_PRINT("error", ("Packets out of order (Found: %d, expected %u)",
+ (int) net->buff[net->where_b + 3], net->pkt_nr));
+ EXTRA_DEBUG_ASSERT(0);
+ /*
+ We don't make noise server side, since the client is expected
+ to break the protocol for e.g. --send LOAD DATA .. LOCAL where
+ the server expects the client to send a file, but the client
+ may reply with a new command instead.
+ */
+ len= packet_error;
+ MYSQL_SERVER_my_error(ER_NET_PACKETS_OUT_OF_ORDER, MYF(0));
+ goto end;
}
diff --git a/sql/online_alter.cc b/sql/online_alter.cc
new file mode 100644
index 00000000..2c5eb4de
--- /dev/null
+++ b/sql/online_alter.cc
@@ -0,0 +1,454 @@
+/*
+ Copyright (c) 2023, MariaDB plc
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2 of
+ the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+*/
+
+#include "my_global.h"
+#include "handler.h"
+#include "sql_class.h"
+#include "log_cache.h"
+
+
+static handlerton *online_alter_hton;
+
+typedef void *sv_id_t;
+
+struct Online_alter_cache_list: ilist<online_alter_cache_data>
+{
+ sv_id_t savepoint_id= 0;
+};
+
+struct table_savepoint: ilist_node<>
+{
+ sv_id_t id;
+ my_off_t log_prev_pos;
+ table_savepoint(sv_id_t id, my_off_t pos): id(id), log_prev_pos(pos){}
+};
+
+class online_alter_cache_data: public ilist_node<>,
+ public binlog_cache_data
+{
+public:
+ online_alter_cache_data() : binlog_cache_data(false),
+ hton(nullptr), sink_log(nullptr) { }
+ void store_prev_position()
+ {
+ before_stmt_pos= my_b_write_tell(&cache_log);
+ }
+
+ handlerton *hton;
+ Cache_flip_event_log *sink_log;
+ ilist<table_savepoint> sv_list;
+ /**
+ Finds savepoint with specified id and returns its associated data.
+ Cleans up all the savepoints up to the found one.
+ */
+ my_off_t pop_sv_until(sv_id_t id)
+ {
+ my_off_t pos= 0;
+ auto it= sv_list.begin();
+ auto sentinel= it->prev;
+ while (pos == 0 && it != sv_list.end())
+ {
+ table_savepoint &sv= *it;
+ ++it;
+ if (sv.id == id)
+ pos= sv.log_prev_pos;
+ delete &sv;
+ }
+ sentinel->next= &*it; // drop the range from the list
+ it->prev= sentinel;
+ return pos;
+ }
+ void cleanup_sv()
+ {
+ pop_sv_until((sv_id_t)1); // Erase the whole list
+ }
+};
+
+
+static
+online_alter_cache_data *setup_cache_data(MEM_ROOT *root, TABLE_SHARE *share)
+{
+ static ulong online_alter_cache_use= 0, online_alter_cache_disk_use= 0;
+
+ auto cache= new online_alter_cache_data();
+ if (!cache || open_cached_file(&cache->cache_log, mysql_tmpdir, LOG_PREFIX,
+ (size_t)binlog_cache_size, MYF(MY_WME)))
+ {
+ delete cache;
+ return NULL;
+ }
+
+ share->online_alter_binlog->acquire();
+ cache->hton= share->db_type();
+ cache->sink_log= share->online_alter_binlog;
+
+ my_off_t binlog_max_size= SIZE_T_MAX; // maximum possible cache size
+ DBUG_EXECUTE_IF("online_alter_small_cache", binlog_max_size= 4096;);
+
+ cache->set_binlog_cache_info(binlog_max_size,
+ &online_alter_cache_use,
+ &online_alter_cache_disk_use);
+ cache->store_prev_position();
+ return cache;
+}
+
+
+static Online_alter_cache_list &get_cache_list(handlerton *ht, THD *thd)
+{
+ void *data= thd_get_ha_data(thd, ht);
+ DBUG_ASSERT(data);
+ return *(Online_alter_cache_list*)data;
+}
+
+
+static Online_alter_cache_list &get_or_create_cache_list(THD *thd)
+{
+ void *data= thd_get_ha_data(thd, online_alter_hton);
+ if (!data)
+ {
+ data= new Online_alter_cache_list();
+ thd_set_ha_data(thd, online_alter_hton, data);
+ }
+ return *(Online_alter_cache_list*)data;
+}
+
+
+static online_alter_cache_data* get_cache_data(THD *thd, TABLE *table)
+{
+ auto &cache_list= get_or_create_cache_list(thd);
+ /* we assume it's very rare to have more than one online ALTER running */
+ for (auto &cache: cache_list)
+ {
+ if (cache.sink_log == table->s->online_alter_binlog)
+ return &cache;
+ }
+
+ MEM_ROOT *root= &thd->transaction->mem_root;
+ auto *new_cache_data= setup_cache_data(root, table->s);
+ cache_list.push_back(*new_cache_data);
+
+ return new_cache_data;
+}
+
+
+int online_alter_log_row(TABLE* table, const uchar *before_record,
+ const uchar *after_record, Log_func *log_func)
+{
+ THD *thd= table->in_use;
+
+ if (!table->online_alter_cache)
+ {
+ table->online_alter_cache= get_cache_data(thd, table);
+ DBUG_ASSERT(table->online_alter_cache->cache_log.type == WRITE_CACHE);
+ trans_register_ha(thd, false, online_alter_hton, 0);
+ if (thd->in_multi_stmt_transaction_mode())
+ trans_register_ha(thd, true, online_alter_hton, 0);
+ }
+
+ // We need to log all columns for the case if alter table changes primary key
+ DBUG_ASSERT(!before_record || bitmap_is_set_all(table->read_set));
+ MY_BITMAP *old_rpl_write_set= table->rpl_write_set;
+ table->rpl_write_set= &table->s->all_set;
+
+ table->online_alter_cache->store_prev_position();
+ int error= (*log_func)(thd, table, table->s->online_alter_binlog,
+ table->online_alter_cache,
+ table->file->has_transactions_and_rollback(),
+ BINLOG_ROW_IMAGE_FULL,
+ before_record, after_record);
+
+ table->rpl_write_set= old_rpl_write_set;
+
+ if (unlikely(error))
+ {
+ table->online_alter_cache->restore_prev_position();
+ return HA_ERR_RBR_LOGGING_FAILED;
+ }
+
+ return 0;
+}
+
+
+static void cleanup_cache_list(ilist<online_alter_cache_data> &list)
+{
+ auto it= list.begin();
+ while (it != list.end())
+ {
+ auto &cache= *it++;
+ cache.sink_log->release();
+ cache.reset();
+ cache.cleanup_sv();
+ delete &cache;
+ }
+ list.clear();
+ DBUG_ASSERT(list.empty());
+}
+
+
+static
+int online_alter_end_trans(Online_alter_cache_list &cache_list, THD *thd,
+ bool is_ending_transaction, bool commit)
+{
+ DBUG_ENTER("online_alter_end_trans");
+ int error= 0;
+
+ if (cache_list.empty())
+ DBUG_RETURN(0);
+
+ for (auto &cache: cache_list)
+ {
+ auto *binlog= cache.sink_log;
+ DBUG_ASSERT(binlog);
+ bool non_trans= cache.hton->flags & HTON_NO_ROLLBACK // Aria
+ || !cache.hton->rollback;
+ bool do_commit= (commit && is_ending_transaction) || non_trans;
+
+ if (commit || non_trans)
+ {
+ // Do not set STMT_END for last event to leave table open in altering thd
+ error= binlog_flush_pending_rows_event(thd, false, true, binlog, &cache);
+ }
+
+ if (do_commit)
+ {
+ /*
+ If the cache wasn't reinited to write, then it remains empty after
+ the last write.
+ */
+ if (my_b_bytes_in_cache(&cache.cache_log) && likely(!error))
+ {
+ DBUG_ASSERT(cache.cache_log.type != READ_CACHE);
+ mysql_mutex_lock(binlog->get_log_lock());
+ error= binlog->write_cache_raw(thd, &cache.cache_log);
+ mysql_mutex_unlock(binlog->get_log_lock());
+ if (!is_ending_transaction)
+ cache.reset();
+ }
+ }
+ else if (!commit) // rollback
+ {
+ DBUG_ASSERT(!non_trans);
+ cache.restore_prev_position();
+ }
+ else
+ {
+ DBUG_ASSERT(!is_ending_transaction);
+ cache.store_prev_position();
+ }
+
+
+ if (error)
+ {
+ my_error(ER_ERROR_ON_WRITE, MYF(ME_ERROR_LOG),
+ binlog->get_name(), errno);
+ break;
+ }
+ }
+
+ if (is_ending_transaction)
+ cleanup_cache_list(cache_list);
+
+ DBUG_RETURN(error);
+}
+
+void cleanup_tables(THD *thd)
+{
+ for (TABLE *table= thd->open_tables; table; table= table->next)
+ table->online_alter_cache= NULL;
+}
+
+static
+int online_alter_savepoint_set(handlerton *hton, THD *thd, sv_id_t sv_id)
+{
+ DBUG_ENTER("binlog_online_alter_savepoint");
+ auto &cache_list= get_cache_list(hton, thd);
+ if (cache_list.empty())
+ DBUG_RETURN(0);
+
+ for (auto &cache: cache_list)
+ {
+ if (cache.hton->savepoint_set == NULL)
+ continue;
+
+ auto *sv= new table_savepoint(sv_id, cache.get_byte_position());
+ if(unlikely(sv == NULL))
+ DBUG_RETURN(1);
+ cache.sv_list.push_front(*sv);
+ }
+ DBUG_RETURN(0);
+}
+
+static
+int online_alter_savepoint_rollback(handlerton *hton, THD *thd, sv_id_t sv_id)
+{
+ DBUG_ENTER("online_alter_savepoint_rollback");
+
+ auto &cache_list= get_cache_list(hton, thd);
+ for (auto &cache: cache_list)
+ {
+ if (cache.hton->savepoint_set == NULL)
+ continue;
+
+ // There's no savepoint if it was set up before online table was modified.
+ // In that case, restore to 0.
+ my_off_t pos= cache.pop_sv_until(sv_id);
+
+ cache.restore_savepoint(pos);
+ }
+
+ DBUG_RETURN(0);
+}
+
+static int online_alter_commit(handlerton *hton, THD *thd, bool all)
+{
+ int res;
+ bool is_ending_transaction= ending_trans(thd, all);
+ if (is_ending_transaction
+ && thd->transaction->xid_state.get_state_code() == XA_PREPARED)
+ {
+ res= hton->commit_by_xid(hton, thd->transaction->xid_state.get_xid());
+ // cleanup was already done by prepare()
+ }
+ else
+ {
+ res= online_alter_end_trans(get_cache_list(hton, thd), thd,
+ is_ending_transaction, true);
+ cleanup_tables(thd);
+ }
+ return res;
+};
+
+static int online_alter_rollback(handlerton *hton, THD *thd, bool all)
+{
+ int res;
+ bool is_ending_transaction= ending_trans(thd, all);
+ if (is_ending_transaction
+ && thd->transaction->xid_state.get_state_code() == XA_PREPARED)
+ {
+ res= hton->rollback_by_xid(hton, thd->transaction->xid_state.get_xid());
+ // cleanup was already done by prepare()
+ }
+ else
+ {
+ res= online_alter_end_trans(get_cache_list(hton, thd), thd,
+ is_ending_transaction, false);
+ cleanup_tables(thd);
+ }
+ return res;
+};
+
+static int online_alter_prepare(handlerton *hton, THD *thd, bool all)
+{
+ auto &cache_list= get_cache_list(hton, thd);
+ int res= 0;
+ if (ending_trans(thd, all))
+ {
+ thd->transaction->xid_state.set_online_alter_cache(&cache_list);
+ thd_set_ha_data(thd, hton, NULL);
+ }
+ else
+ {
+ res= online_alter_end_trans(cache_list, thd, false, true);
+ }
+
+ cleanup_tables(thd);
+ return res;
+};
+
+static int online_alter_commit_by_xid(handlerton *hton, XID *x)
+{
+ auto *xid= static_cast<XA_data*>(x);
+ if (likely(xid->online_alter_cache == NULL))
+ return 1;
+ int res= online_alter_end_trans(*xid->online_alter_cache, current_thd,
+ true, true);
+ delete xid->online_alter_cache;
+ xid->online_alter_cache= NULL;
+ return res;
+};
+
+static int online_alter_rollback_by_xid(handlerton *hton, XID *x)
+{
+ auto *xid= static_cast<XA_data*>(x);
+ if (likely(xid->online_alter_cache == NULL))
+ return 1;
+ int res= online_alter_end_trans(*xid->online_alter_cache, current_thd,
+ true, false);
+ delete xid->online_alter_cache;
+ xid->online_alter_cache= NULL;
+ return res;
+};
+
+static int online_alter_close_connection(handlerton *hton, THD *thd)
+{
+ auto *cache_list= (Online_alter_cache_list*)thd_get_ha_data(thd, hton);
+
+ DBUG_ASSERT(!cache_list || cache_list->empty());
+ delete cache_list;
+ thd_set_ha_data(thd, hton, NULL);
+ return 0;
+}
+
+
+static int online_alter_log_init(void *p)
+{
+ online_alter_hton= (handlerton *)p;
+ online_alter_hton->db_type= DB_TYPE_ONLINE_ALTER;
+ online_alter_hton->savepoint_offset= 0;
+ online_alter_hton->close_connection= online_alter_close_connection;
+
+ online_alter_hton->savepoint_set= online_alter_savepoint_set;
+ online_alter_hton->savepoint_rollback= online_alter_savepoint_rollback;
+ online_alter_hton->savepoint_rollback_can_release_mdl=
+ [](handlerton *hton, THD *thd){ return true; };
+
+ online_alter_hton->commit= online_alter_commit;
+ online_alter_hton->rollback= online_alter_rollback;
+
+
+ online_alter_hton->recover= [](handlerton*, XID*, uint){ return 0; };
+ online_alter_hton->prepare= online_alter_prepare;
+ online_alter_hton->commit_by_xid= online_alter_commit_by_xid;
+ online_alter_hton->rollback_by_xid= online_alter_rollback_by_xid;
+
+ online_alter_hton->drop_table= [](handlerton *, const char*) { return -1; };
+ online_alter_hton->flags= HTON_NOT_USER_SELECTABLE | HTON_HIDDEN
+ | HTON_NO_ROLLBACK;
+ return 0;
+}
+
+struct st_mysql_storage_engine online_alter_storage_engine=
+{ MYSQL_HANDLERTON_INTERFACE_VERSION };
+
+maria_declare_plugin(online_alter_log)
+{
+ MYSQL_STORAGE_ENGINE_PLUGIN,
+ &online_alter_storage_engine,
+ "online_alter_log",
+ "MariaDB PLC",
+ "A pseudo storage engine for the online alter log",
+ PLUGIN_LICENSE_GPL,
+ online_alter_log_init,
+ NULL,
+ 0x0100, // 1.0
+ NULL, // no status vars
+ NULL, // no sysvars
+ "1.0",
+ MariaDB_PLUGIN_MATURITY_STABLE
+}
+maria_declare_plugin_end;
diff --git a/sql/opt_index_cond_pushdown.cc b/sql/opt_index_cond_pushdown.cc
index 6a24fa95..51aa70fa 100644
--- a/sql/opt_index_cond_pushdown.cc
+++ b/sql/opt_index_cond_pushdown.cc
@@ -17,6 +17,7 @@
#include "mariadb.h"
#include "sql_select.h"
#include "sql_test.h"
+#include "opt_trace.h"
/****************************************************************************
* Index Condition Pushdown code starts
@@ -334,13 +335,12 @@ void push_index_cond(JOIN_TAB *tab, uint keyno)
than on a non-clustered key. This restriction should be
re-evaluated when WL#6061 is implemented.
*/
- if ((tab->table->file->index_flags(keyno, 0, 1) &
- HA_DO_INDEX_COND_PUSHDOWN) &&
+ if ((tab->table->key_info[keyno].index_flags & HA_DO_INDEX_COND_PUSHDOWN) &&
optimizer_flag(tab->join->thd, OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN) &&
tab->join->thd->lex->sql_command != SQLCOM_UPDATE_MULTI &&
tab->join->thd->lex->sql_command != SQLCOM_DELETE_MULTI &&
tab->type != JT_CONST && tab->type != JT_SYSTEM &&
- !tab->table->file->is_clustering_key(keyno)) // 6
+ !tab->table->is_clustering_key(keyno)) // 6
{
DBUG_EXECUTE("where",
print_where(tab->select_cond, "full cond", QT_ORDINARY););
@@ -355,6 +355,8 @@ void push_index_cond(JOIN_TAB *tab, uint keyno)
{
Item *idx_remainder_cond= 0;
tab->pre_idx_push_select_cond= tab->select_cond;
+ Json_writer_object trace(tab->join->thd);
+ trace.add_table_name(tab);
/*
For BKA cache we store condition to special BKA cache field
because evaluation of the condition requires additional operations
@@ -387,6 +389,7 @@ void push_index_cond(JOIN_TAB *tab, uint keyno)
idx_remainder_cond= NULL;
}
}
+ trace.add("index_condition", idx_cond);
/*
Disable eq_ref's "lookup cache" if we've pushed down an index
@@ -424,6 +427,10 @@ void push_index_cond(JOIN_TAB *tab, uint keyno)
}
else
tab->select_cond= idx_remainder_cond;
+
+ if (tab->select_cond)
+ trace.add("row_condition", tab->select_cond);
+
if (tab->select)
{
DBUG_EXECUTE("where",
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index e6911a03..5793b19f 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -19,8 +19,8 @@
Fix that MAYBE_KEY are stored in the tree so that we can detect use
of full hash keys for queries like:
- select s.id, kws.keyword_id from sites as s,kws where s.id=kws.site_id and kws.keyword_id in (204,205);
-
+ select s.id, kws.keyword_id from sites as s,kws where s.id=kws.site_id and
+ kws.keyword_id in (204,205);
*/
/*
@@ -345,7 +345,8 @@ struct st_index_scan_info;
struct st_ror_scan_info;
static bool is_key_scan_ror(PARAM *param, uint keynr, uint8 nparts);
-static ha_rows check_quick_select(PARAM *param, uint idx, bool index_only,
+static ha_rows check_quick_select(PARAM *param, uint idx, ha_rows limit,
+ bool index_only,
SEL_ARG *tree, bool update_tbl_stats,
uint *mrr_flags, uint *bufsize,
Cost_estimate *cost, bool *is_ror_scan);
@@ -356,7 +357,8 @@ QUICK_RANGE_SELECT *get_quick_select(PARAM *param,uint index,
static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
bool index_read_must_be_used,
bool for_range_access,
- double read_time);
+ double read_time, ha_rows limit,
+ bool using_table_scan);
static
TRP_INDEX_INTERSECT *get_best_index_intersect(PARAM *param, SEL_TREE *tree,
double read_time);
@@ -370,7 +372,9 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
double read_time);
static
TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
- double read_time, bool named_trace= false);
+ double read_time, ha_rows limit,
+ bool named_trace,
+ bool using_table_scan);
static
TABLE_READ_PLAN *merge_same_index_scans(PARAM *param, SEL_IMERGE *imerge,
TRP_INDEX_MERGE *imerge_trp,
@@ -412,7 +416,6 @@ static bool eq_tree(SEL_ARG* a,SEL_ARG *b);
SEL_ARG null_element(SEL_ARG::IMPOSSIBLE);
static bool null_part_in_key(KEY_PART *key_part, const uchar *key,
uint length);
-static bool is_key_scan_ror(PARAM *param, uint keynr, uint8 nparts);
static
SEL_ARG *enforce_sel_arg_weight_limit(RANGE_OPT_PARAM *param, uint keyno,
@@ -2178,6 +2181,27 @@ int SEL_ARG::sel_cmp(Field *field, uchar *a, uchar *b, uint8 a_flag,
}
+/*
+ Check if min and values are equal
+
+ @return 1 if equal
+*/
+
+bool SEL_ARG::min_max_are_equal() const
+{
+ uint offset= 0;
+ if (field->real_maybe_null()) // If null is part of key
+ {
+ if (*min_value != *max_value)
+ return 0;
+ if (*min_value)
+ return 1; // NULL where equal
+ offset= 1; // Skip NULL marker
+ }
+ return field->key_cmp(min_value+offset, max_value+offset) == 0;
+}
+
+
SEL_ARG *SEL_ARG::clone_tree(RANGE_OPT_PARAM *param)
{
SEL_ARG tmp_link,*next_arg,*root;
@@ -2301,9 +2325,11 @@ void TRP_RANGE::trace_basic_info(PARAM *param,
const KEY &cur_key= param->table->key_info[keynr_in_table];
const KEY_PART_INFO *key_part= cur_key.key_part;
- trace_object->add("type", "range_scan")
- .add("index", cur_key.name)
- .add("rows", records);
+ if (unlikely(trace_object->trace_started()))
+ trace_object->
+ add("type", "range_scan").
+ add("index", cur_key.name).
+ add("rows", records);
Json_writer_array trace_range(param->thd, "ranges");
@@ -2330,6 +2356,7 @@ public:
struct st_ror_scan_info *cpk_scan; /* Clustered PK scan, if there is one */
bool is_covering; /* TRUE if no row retrieval phase is necessary */
double index_scan_costs; /* SUM(cost(index_scan)) */
+ double cmp_cost; // Cost of out rows with WHERE clause
void trace_basic_info(PARAM *param,
Json_writer_object *trace_object) const;
};
@@ -2446,20 +2473,21 @@ void TRP_INDEX_MERGE::trace_basic_info(PARAM *param,
class TRP_GROUP_MIN_MAX : public TABLE_READ_PLAN
{
private:
- bool have_min, have_max, have_agg_distinct;
- KEY_PART_INFO *min_max_arg_part;
uint group_prefix_len;
uint used_key_parts;
uint group_key_parts;
- KEY *index_info;
uint index;
uint key_infix_len;
+ uint param_idx; /* Index of used key in param->key. */
uchar key_infix[MAX_KEY_LENGTH];
+ KEY *index_info;
+ KEY_PART_INFO *min_max_arg_part;
SEL_TREE *range_tree; /* Represents all range predicates in the query. */
SEL_ARG *index_tree; /* The SEL_ARG sub-tree corresponding to index_info. */
- uint param_idx; /* Index of used key in param->key. */
- bool is_index_scan; /* Use index_next() instead of random read */
+ bool have_min, have_max;
public:
+ bool have_agg_distinct;
+ bool is_index_scan; /* Use index_next() instead of random read */
/* Number of records selected by the ranges in index_tree. */
ha_rows quick_prefix_records;
public:
@@ -2472,13 +2500,14 @@ public:
uchar *key_infix_arg,
SEL_TREE *tree_arg, SEL_ARG *index_tree_arg,
uint param_idx_arg, ha_rows quick_prefix_records_arg)
- : have_min(have_min_arg), have_max(have_max_arg),
+ : group_prefix_len(group_prefix_len_arg), used_key_parts(used_key_parts_arg),
+ group_key_parts(group_key_parts_arg),
+ index(index_arg), key_infix_len(key_infix_len_arg), param_idx(param_idx_arg),
+ index_info(index_info_arg),min_max_arg_part(min_max_arg_part_arg),
+ range_tree(tree_arg), index_tree(index_tree_arg),
+ have_min(have_min_arg), have_max(have_max_arg),
have_agg_distinct(have_agg_distinct_arg),
- min_max_arg_part(min_max_arg_part_arg),
- group_prefix_len(group_prefix_len_arg), used_key_parts(used_key_parts_arg),
- group_key_parts(group_key_parts_arg), index_info(index_info_arg),
- index(index_arg), key_infix_len(key_infix_len_arg), range_tree(tree_arg),
- index_tree(index_tree_arg), param_idx(param_idx_arg), is_index_scan(FALSE),
+ is_index_scan(FALSE),
quick_prefix_records(quick_prefix_records_arg)
{
if (key_infix_len)
@@ -2507,11 +2536,13 @@ void TRP_GROUP_MIN_MAX::trace_basic_info(PARAM *param,
else
trace_object->add_null("min_max_arg");
- trace_object->add("min_aggregate", have_min)
- .add("max_aggregate", have_max)
- .add("distinct_aggregate", have_agg_distinct)
- .add("rows", records)
- .add("cost", read_cost);
+ if (unlikely(trace_object->trace_started()))
+ trace_object->
+ add("min_aggregate", have_min).
+ add("max_aggregate", have_max).
+ add("distinct_aggregate", have_agg_distinct).
+ add("rows", records).
+ add("cost", read_cost);
const KEY_PART_INFO *key_part= index_info->key_part;
{
@@ -2633,7 +2664,8 @@ static int fill_used_fields_bitmap(PARAM *param)
In the table struct the following information is updated:
quick_keys - Which keys can be used
quick_rows - How many rows the key matches
- opt_range_condition_rows - E(# rows that will satisfy the table condition)
+ opt_range_condition_rows - E(# rows that will satisfy the table
+ condition)
IMPLEMENTATION
opt_range_condition_rows value is obtained as follows:
@@ -2695,17 +2727,20 @@ SQL_SELECT::test_quick_select(THD *thd,
Item_func::Bitmap note_unusable_keys)
{
uint idx;
- double scan_time;
Item *notnull_cond= NULL;
TABLE_READ_PLAN *best_trp= NULL;
SEL_ARG **backup_keys= 0;
+ ha_rows table_records= head->stat_records();
+ handler *file= head->file;
quick_select_return returnval= OK;
DBUG_ENTER("SQL_SELECT::test_quick_select");
DBUG_PRINT("enter",("keys_to_use: %lu prev_tables: %lu const_tables: %lu",
(ulong) keys_to_use.to_ulonglong(), (ulong) prev_tables,
(ulong) const_tables));
- DBUG_PRINT("info", ("records: %lu", (ulong) head->stat_records()));
+ DBUG_PRINT("info", ("records: %llu", (ulonglong) table_records));
+ DBUG_ASSERT(table_records || !head->file->stats.records);
+
delete quick;
quick=0;
needed_reg.clear_all();
@@ -2714,40 +2749,29 @@ SQL_SELECT::test_quick_select(THD *thd,
DBUG_ASSERT(!head->is_filled_at_execution());
if (keys_to_use.is_clear_all() || head->is_filled_at_execution())
DBUG_RETURN(OK);
- records= head->stat_records();
+ records= table_records;
notnull_cond= head->notnull_cond;
- if (!records)
- records++; /* purecov: inspected */
- if (head->file->ha_table_flags() & HA_NON_COMPARABLE_ROWID)
+ if (file->ha_table_flags() & HA_NON_COMPARABLE_ROWID)
only_single_index_range_scan= 1;
if (head->force_index || force_quick_range)
- scan_time= read_time= DBL_MAX;
+ read_time= DBL_MAX;
else
{
- scan_time= rows2double(records) / TIME_FOR_COMPARE;
- /*
- The 2 is there to prefer range scans to full table scans.
- This is mainly to make the test suite happy as many tests has
- very few rows. In real life tables has more than a few rows and the
- +2 has no practical effect.
- */
- read_time= (double) head->file->scan_time() + scan_time + 2;
- if (limit < records && read_time < (double) records + scan_time + 1 )
- {
- read_time= (double) records + scan_time + 1; // Force to use index
+ read_time= file->cost(file->ha_scan_and_compare_time(records));
+ if (limit < records)
notnull_cond= NULL;
- }
}
possible_keys.clear_all();
DBUG_PRINT("info",("Time to scan table: %g", read_time));
- Json_writer_object table_records(thd);
- table_records.add_table_name(head);
+ Json_writer_object table_info(thd);
+ table_info.add_table_name(head);
Json_writer_object trace_range(thd, "range_analysis");
+ if (unlikely(thd->trace_started()) && read_time != DBL_MAX)
{
Json_writer_object table_rec(thd, "table_scan");
table_rec.add("rows", records).add("cost", read_time);
@@ -2763,7 +2787,7 @@ SQL_SELECT::test_quick_select(THD *thd,
KEY_PART *key_parts;
KEY *key_info;
PARAM param;
- bool force_group_by = false;
+ bool force_group_by= false, group_by_optimization_used= false;
if (check_stack_overrun(thd, 2*STACK_MIN_SIZE + sizeof(PARAM), buff))
DBUG_RETURN(ERROR); // Fatal error flag is set
@@ -2771,7 +2795,7 @@ SQL_SELECT::test_quick_select(THD *thd,
/* set up parameter that is passed to all functions */
bzero((void*) &param, sizeof(param));
param.thd= thd;
- param.baseflag= head->file->ha_table_flags();
+ param.baseflag= file->ha_table_flags();
param.prev_tables=prev_tables | const_tables;
param.read_tables=read_tables;
param.current_table= head->map;
@@ -2793,7 +2817,8 @@ SQL_SELECT::test_quick_select(THD *thd,
thd->no_errors=1; // Don't warn about NULL
init_sql_alloc(key_memory_quick_range_select_root, &alloc,
- thd->variables.range_alloc_block_size, 0, MYF(MY_THREAD_SPECIFIC));
+ thd->variables.range_alloc_block_size, 0,
+ MYF(MY_THREAD_SPECIFIC));
if (!(param.key_parts=
(KEY_PART*) alloc_root(&alloc,
sizeof(KEY_PART) *
@@ -2824,8 +2849,10 @@ SQL_SELECT::test_quick_select(THD *thd,
if (!keys_to_use.is_set(idx))
{
- trace_idx_details.add("usable", false)
- .add("cause", "not applicable");
+ if (unlikely(trace_idx_details.trace_started()))
+ trace_idx_details.
+ add("usable", false).
+ add("cause", "not applicable");
continue;
}
if (key_info->flags & HA_FULLTEXT)
@@ -2875,11 +2902,14 @@ SQL_SELECT::test_quick_select(THD *thd,
thd->mem_root= &alloc;
/* Calculate cost of full index read for the shortest covering index */
- if (!force_quick_range && !head->covering_keys.is_clear_all())
+ if (!force_quick_range && !head->covering_keys.is_clear_all() &&
+ !head->no_keyread)
{
- int key_for_use= find_shortest_key(head, &head->covering_keys);
- double key_read_time= (head->file->key_scan_time(key_for_use) +
- rows2double(records) / TIME_FOR_COMPARE);
+ double key_read_time;
+ uint key_for_use= find_shortest_key(head, &head->covering_keys);
+ key_read_time= file->cost(file->
+ ha_key_scan_and_compare_time(key_for_use,
+ records));
DBUG_PRINT("info", ("'all'+'using index' scan will be using key %d, "
"read time %g", key_for_use, key_read_time));
@@ -2890,10 +2920,14 @@ SQL_SELECT::test_quick_select(THD *thd,
read_time= key_read_time;
chosen= TRUE;
}
- trace_cov.add("index", head->key_info[key_for_use].name)
- .add("cost", key_read_time).add("chosen", chosen);
- if (!chosen)
- trace_cov.add("cause", "cost");
+ if (unlikely(trace_cov.trace_started()))
+ {
+ trace_cov.
+ add("index", head->key_info[key_for_use].name).
+ add("cost", key_read_time).add("chosen", chosen);
+ if (!chosen)
+ trace_cov.add("cause", "cost");
+ }
}
double best_read_time= read_time;
@@ -2957,6 +2991,7 @@ SQL_SELECT::test_quick_select(THD *thd,
TRP_INDEX_INTERSECT *intersect_trp;
bool can_build_covering= FALSE;
Json_writer_object trace_range(thd, "analyzing_range_alternatives");
+ TABLE_READ_PLAN *range_trp;
backup_keys= (SEL_ARG**) alloca(sizeof(backup_keys[0])*param.keys);
memcpy(&backup_keys[0], &tree->keys[0],
@@ -2965,9 +3000,10 @@ SQL_SELECT::test_quick_select(THD *thd,
remove_nonrange_trees(&param, tree);
/* Get best 'range' plan and prepare data for making other plans */
- if (auto range_trp= get_key_scans_params(&param, tree,
- only_single_index_range_scan,
- true, best_read_time))
+ if ((range_trp= get_key_scans_params(&param, tree,
+ only_single_index_range_scan,
+ true, best_read_time, limit,
+ 1)))
{
best_trp= range_trp;
best_read_time= best_trp->read_cost;
@@ -2989,8 +3025,8 @@ SQL_SELECT::test_quick_select(THD *thd,
if ((rori_trp= get_best_ror_intersect(&param, tree, best_read_time,
&can_build_covering)))
{
- best_trp= rori_trp;
- best_read_time= best_trp->read_cost;
+ best_trp= rori_trp;
+ best_read_time= rori_trp->read_cost;
/*
Try constructing covering ROR-intersect only if it looks possible
and worth doing.
@@ -3014,15 +3050,14 @@ SQL_SELECT::test_quick_select(THD *thd,
if ((intersect_trp= get_best_index_intersect(&param, tree,
best_read_time)))
{
- best_trp= intersect_trp;
- best_read_time= best_trp->read_cost;
- set_if_smaller(param.table->opt_range_condition_rows,
- intersect_trp->records);
+ best_trp= intersect_trp;
+ best_read_time= intersect_trp->read_cost;
+ param.table->set_opt_range_condition_rows(intersect_trp->records);
}
}
if (optimizer_flag(thd, OPTIMIZER_SWITCH_INDEX_MERGE) &&
- head->stat_records() != 0 && !only_single_index_range_scan)
+ table_records != 0 && !only_single_index_range_scan)
{
/* Try creating index_merge/ROR-union scan. */
SEL_IMERGE *imerge;
@@ -3034,10 +3069,10 @@ SQL_SELECT::test_quick_select(THD *thd,
Json_writer_array trace_idx_merge(thd, "analyzing_index_merge_union");
while ((imerge= it++))
{
- new_conj_trp= get_best_disjunct_quick(&param, imerge, best_read_time);
+ new_conj_trp= get_best_disjunct_quick(&param, imerge, best_read_time,
+ limit, 0, 1);
if (new_conj_trp)
- set_if_smaller(param.table->opt_range_condition_rows,
- new_conj_trp->records);
+ param.table->set_opt_range_condition_rows(new_conj_trp->records);
if (new_conj_trp &&
(!best_conj_trp ||
new_conj_trp->read_cost < best_conj_trp->read_cost))
@@ -3059,22 +3094,51 @@ SQL_SELECT::test_quick_select(THD *thd,
if (!only_single_index_range_scan)
{
TRP_GROUP_MIN_MAX *group_trp;
+ double duplicate_removal_cost= 0;
if (tree)
restore_nonrange_trees(&param, tree, backup_keys);
if ((group_trp= get_best_group_min_max(&param, tree, read_time)))
{
- set_if_smaller(param.table->opt_range_condition_rows,
- group_trp->records);
+ /* mark that we are changing opt_range_condition_rows */
+ group_by_optimization_used= 1;
+ param.table->set_opt_range_condition_rows(group_trp->records);
+ DBUG_PRINT("info", ("table_rows: %llu opt_range_condition_rows: %llu "
+ "group_trp->records: %ull",
+ table_records,
+ param.table->opt_range_condition_rows,
+ group_trp->records));
+
Json_writer_object grp_summary(thd, "best_group_range_summary");
if (unlikely(thd->trace_started()))
group_trp->trace_basic_info(&param, &grp_summary);
- if (group_trp->read_cost < best_read_time || force_group_by)
+ if (group_trp->have_agg_distinct && group_trp->is_index_scan)
+ {
+ /*
+ We are optimization a distinct aggregate, like
+ SELECT count(DISTINCT a,b,c) FROM ...
+
+ The group cost includes removal of the distinct, so to be
+ able to compare costs, we add small cost to the original cost
+ that stands for the extra work we have to do on the outside of
+ the engine to do duplicate elimination for each output row if
+ we are not using the grouping code.
+ */
+ duplicate_removal_cost= (DUPLICATE_REMOVAL_COST *
+ (best_trp ? best_trp->records :
+ table_records));
+ }
+ if (group_trp->read_cost < best_read_time + duplicate_removal_cost ||
+ force_group_by)
{
- grp_summary.add("chosen", true);
+ if (thd->trace_started())
+ {
+ if (duplicate_removal_cost)
+ grp_summary.add("duplicate_removal_cost", duplicate_removal_cost);
+ grp_summary.add("chosen", true);
+ }
best_trp= group_trp;
- best_read_time= best_trp->read_cost;
}
else
grp_summary.add("chosen", false).add("cause", "cost");
@@ -3089,19 +3153,18 @@ SQL_SELECT::test_quick_select(THD *thd,
if (best_trp)
{
records= best_trp->records;
+ if (records == 0)
+ returnval= IMPOSSIBLE_RANGE;
if (!(quick= best_trp->make_quick(&param, TRUE)) || quick->init())
{
delete quick;
quick= NULL;
}
- if (quick && records)
- returnval= OK;
+ else
+ quick->group_by_optimization_used= group_by_optimization_used;
}
possible_keys= param.possible_keys;
- if (!records)
- returnval= IMPOSSIBLE_RANGE;
-
free_mem:
if (unlikely(quick && best_trp && thd->trace_started()))
{
@@ -3111,9 +3174,10 @@ SQL_SELECT::test_quick_select(THD *thd,
Json_writer_object trace_range_plan(thd, "range_access_plan");
best_trp->trace_basic_info(&param, &trace_range_plan);
}
- trace_range_summary.add("rows_for_plan", quick->records)
- .add("cost_for_plan", quick->read_time)
- .add("chosen", true);
+ trace_range_summary.
+ add("rows_for_plan", quick->records).
+ add("cost_for_plan", quick->read_time).
+ add("chosen", true);
}
free_root(&alloc,MYF(0)); // Return memory & allocator
@@ -3127,6 +3191,7 @@ SQL_SELECT::test_quick_select(THD *thd,
Assume that if the user is using 'limit' we will only need to scan
limit rows if we are using a key
*/
+ set_if_smaller(records, table_records);
DBUG_RETURN(returnval);
}
@@ -3188,7 +3253,7 @@ uint get_columns_for_pseudo_indexes(const TABLE *table,
SYNOPSIS
create_key_parts_for_pseudo_indexes()
param IN/OUT data structure for the descriptors to be built
- used_fields bitmap of columns for which the descriptors are to be built
+ used_fields bitmap of columns for which the descriptors are to be built
DESCRIPTION
For each column marked in the bitmap used_fields the function builds
@@ -3271,9 +3336,10 @@ bool create_key_parts_for_pseudo_indexes(RANGE_OPT_PARAM *param,
SYNOPSIS
records_in_column_ranges()
param the data structure to access descriptors of pseudo indexes
- built over columns used in the condition of the processed query
+ built over columns used in the condition of the processed
+ query
idx the index of the descriptor of interest in param
- tree the tree representing ranges built for the interesting column
+ tree the tree representing ranges built for the interesting column
DESCRIPTION
This function retrieves the ranges represented by the SEL_ARG 'tree' and
@@ -3297,7 +3363,7 @@ double records_in_column_ranges(PARAM *param, uint idx,
SEL_ARG_RANGE_SEQ seq;
KEY_MULTI_RANGE range;
range_seq_t seq_it;
- double rows;
+ double rows, table_records;
Field *field;
uint flags= 0;
double total_rows= 0;
@@ -3352,13 +3418,17 @@ double records_in_column_ranges(PARAM *param, uint idx,
total_rows= DBL_MAX;
break;
}
- total_rows += rows;
+ total_rows+= rows;
}
if (total_rows == 0)
total_rows= MY_MIN(1, rows2double(param->table->stat_records()));
- return total_rows;
-}
+ table_records= rows2double(param->table->stat_records());
+ if (total_rows > table_records)
+ DBUG_PRINT("error", ("table_records: %g < total_records: %g",
+ table_records, total_rows));
+ return MY_MIN(total_rows, table_records);
+}
/*
@@ -3371,12 +3441,12 @@ double records_in_column_ranges(PARAM *param, uint idx,
*/
static
-int cmp_quick_ranges(TABLE *table, uint *a, uint *b)
+int cmp_quick_ranges(TABLE::OPT_RANGE **a, TABLE::OPT_RANGE **b)
{
- int tmp= CMP_NUM(table->opt_range[*a].rows, table->opt_range[*b].rows);
+ int tmp=CMP_NUM((*a)->rows, (*b)->rows);
if (tmp)
return tmp;
- return -CMP_NUM(table->opt_range[*a].key_parts, table->opt_range[*b].key_parts);
+ return -CMP_NUM((*a)->key_parts, (*b)->key_parts);
}
@@ -3392,7 +3462,8 @@ int cmp_quick_ranges(TABLE *table, uint *a, uint *b)
DESCRIPTION
This function calculates the selectivity of range conditions cond imposed
on the rows of 'table' in the processed query.
- The calculated selectivity is assigned to the field table->cond_selectivity.
+ The calculated selectivity is assigned to the field
+ table->cond_selectivity.
Selectivity is calculated as a product of selectivities imposed by:
@@ -3404,6 +3475,8 @@ int cmp_quick_ranges(TABLE *table, uint *a, uint *b)
3. Reading a few records from the table pages and checking the condition
selectivity (this is used for conditions like "column LIKE '%val%'"
where approaches #1 and #2 do not provide selectivity data).
+ 4. If the selectivity calculated by get_best_ror_intersect() is smaller,
+ use this instead.
NOTE
Currently the selectivities of range conditions over different columns are
@@ -3418,31 +3491,40 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
{
uint keynr, range_index, ranges;
MY_BITMAP *used_fields= &table->cond_set;
- double table_records= (double)table->stat_records();
- uint optimal_key_order[MAX_KEY];
+ double table_records= (double)table->stat_records(), original_selectivity;
+ TABLE::OPT_RANGE *optimal_key_order[MAX_KEY];
+ MY_BITMAP handled_columns;
+ my_bitmap_map *buf;
+ QUICK_SELECT_I *quick;
DBUG_ENTER("calculate_cond_selectivity_for_table");
- table->cond_selectivity= 1.0;
+ table->set_cond_selectivity(1.0);
if (table_records == 0)
DBUG_RETURN(FALSE);
- QUICK_SELECT_I *quick;
if ((quick=table->reginfo.join_tab->quick) &&
quick->get_type() == QUICK_SELECT_I::QS_TYPE_GROUP_MIN_MAX)
{
- table->cond_selectivity*= (quick->records/table_records);
+ DBUG_ASSERT(table->opt_range_condition_rows <= quick->records);
+ table->set_cond_selectivity(MY_MIN(quick->records,
+ table->opt_range_condition_rows)/
+ table_records);
DBUG_RETURN(FALSE);
}
- if (!*cond)
+ if (!*cond || table->pos_in_table_list->schema_table)
+ {
+ table->set_cond_selectivity(table->opt_range_condition_rows /
+ table_records);
DBUG_RETURN(FALSE);
+ }
- if (table->pos_in_table_list->schema_table)
- DBUG_RETURN(FALSE);
-
- MY_BITMAP handled_columns;
- my_bitmap_map* buf;
+ /*
+ This should be pre-alloced so that we could use the same bitmap for all
+ tables. Would also avoid extra memory allocations if this function would
+ be called multiple times per query.
+ */
if (!(buf= (my_bitmap_map*)thd->alloc(table->s->column_bitmap_size)))
DBUG_RETURN(TRUE);
my_bitmap_init(&handled_columns, buf, table->s->fields);
@@ -3463,93 +3545,133 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
*/
for (ranges= keynr= 0 ; keynr < table->s->keys; keynr++)
if (table->opt_range_keys.is_set(keynr))
- optimal_key_order[ranges++]= keynr;
+ optimal_key_order[ranges++]= table->opt_range + keynr;
- my_qsort2(optimal_key_order, ranges,
- sizeof(optimal_key_order[0]),
- (qsort2_cmp) cmp_quick_ranges, table);
+ my_qsort(optimal_key_order, ranges,
+ sizeof(optimal_key_order[0]),
+ (qsort_cmp) cmp_quick_ranges);
for (range_index= 0 ; range_index < ranges ; range_index++)
{
- uint keynr= optimal_key_order[range_index];
+ TABLE::OPT_RANGE *range= optimal_key_order[range_index];
+ uint keynr= (uint)(range - table->opt_range);
+ uint i;
+ uint used_key_parts= range->key_parts;
+ double quick_cond_selectivity= (range->rows / table_records);
+ KEY *key_info= table->key_info + keynr;
+ KEY_PART_INFO* key_part= key_info->key_part;
+ DBUG_ASSERT(quick_cond_selectivity <= 1.0);
+
+ /*
+ Suppose, there are range conditions on these keys
+ KEY1 (col1, col2)
+ KEY2 (col2, col6)
+ KEY3 (col3, col2)
+ KEY4 (col4, col5)
+
+ We don't want to count selectivity for ranges that uses a column
+ that was used before.
+ If the first column of an index was not used before, we can use the
+ key part statistics to calculate selectivity for this column. We cannot
+ calculate statistics for any other columns as the key part statistics
+ is also depending on the values of the previous key parts and not only
+ the last key part.
+
+ In other words, if KEY1 has the smallest range, we will only use first
+ part of KEY3 and range of KEY4 to calculate selectivity.
+ */
+ for (i= 0; i < used_key_parts; i++)
{
+ if (bitmap_is_set(&handled_columns, key_part[i].fieldnr-1))
{
- uint i;
- uint used_key_parts= table->opt_range[keynr].key_parts;
- double quick_cond_selectivity= (table->opt_range[keynr].rows /
- table_records);
- KEY *key_info= table->key_info + keynr;
- KEY_PART_INFO* key_part= key_info->key_part;
- /*
- Suppose, there are range conditions on two keys
- KEY1 (col1, col2)
- KEY2 (col3, col2)
-
- we don't want to count selectivity of condition on col2 twice.
-
- First, find the longest key prefix that's made of columns whose
- selectivity wasn't already accounted for.
- */
- for (i= 0; i < used_key_parts; i++, key_part++)
- {
- if (bitmap_is_set(&handled_columns, key_part->fieldnr-1))
- break;
- bitmap_set_bit(&handled_columns, key_part->fieldnr-1);
- }
- if (i)
+ double rec_per_key;
+ if (!i)
{
- double UNINIT_VAR(selectivity_mult);
-
- /*
- There is at least 1-column prefix of columns whose selectivity has
- not yet been accounted for.
- */
- table->cond_selectivity*= quick_cond_selectivity;
- Json_writer_object selectivity_for_index(thd);
- selectivity_for_index.add("index_name", key_info->name)
- .add("selectivity_from_index",
- quick_cond_selectivity);
- if (i != used_key_parts)
- {
- /*
- Range access got us estimate for #used_key_parts.
- We need estimate for #(i-1) key parts.
- */
- double f1= key_info->actual_rec_per_key(i-1);
- double f2= key_info->actual_rec_per_key(i);
- if (f1 > 0 && f2 > 0)
- selectivity_mult= f1 / f2;
- else
- {
- /*
- No statistics available, assume the selectivity is proportional
- to the number of key parts.
- (i=0 means 1 keypart, i=1 means 2 keyparts, so use i+1)
- */
- selectivity_mult= ((double)(i+1)) / i;
- }
- table->cond_selectivity*= selectivity_mult;
- selectivity_for_index.add("selectivity_multiplier",
- selectivity_mult);
- }
/*
- We need to set selectivity for fields supported by indexes.
- For single-component indexes and for some first components
- of other indexes we do it here. For the remaining fields
- we do it later in this function, in the same way as for the
- fields not used in any indexes.
- */
- if (i == 1)
- {
- uint fieldnr= key_info->key_part[0].fieldnr;
- table->field[fieldnr-1]->cond_selectivity= quick_cond_selectivity;
- if (i != used_key_parts)
- table->field[fieldnr-1]->cond_selectivity*= selectivity_mult;
- bitmap_clear_bit(used_fields, fieldnr-1);
- }
+ We cannot use this key part for selectivity calculation as
+ key_info->actual_rec_per_key for later keys are depending on the
+ distribution of the previous key parts.
+ */
+ goto end_of_range_loop;
}
+ /*
+ A later key part was already used. We can still use key
+ statistics for the first key part to get some approximation
+ of the selectivity of this key. This can be done if the
+ first key part is a constant:
+ WHERE key1_part1=1 and key2_part1=5 and key2_part2 BETWEEN 0 and 10
+ Even if key1 is used and it also includes the field for key2_part1
+ as a key part, we can still use selectivity for key2_part1
+ */
+ if ((rec_per_key= key_info->actual_rec_per_key(0)) == 0.0 ||
+ !range->first_key_part_has_only_one_value)
+ goto end_of_range_loop;
+ /*
+ Use key distribution statistics, except if range selectivity
+ is bigger. This can happen if the used key value has more
+ than an average number of instances.
+ */
+ set_if_smaller(rec_per_key, rows2double(table->file->stats.records));
+ set_if_bigger(quick_cond_selectivity,
+ rec_per_key / table->file->stats.records);
+ used_key_parts= 1;
+ break;
}
}
+ /* Set bits only after we have checked the used columns */
+ for (i= 0; i < used_key_parts; i++, key_part++)
+ bitmap_set_bit(&handled_columns, key_part->fieldnr-1);
+
+ /*
+ There is at least 1-column prefix of columns whose selectivity has
+ not yet been accounted for.
+ */
+ table->multiply_cond_selectivity(quick_cond_selectivity);
+
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object selectivity_for_index(thd);
+ selectivity_for_index.
+ add("index_name", key_info->name).
+ add("selectivity_from_index", quick_cond_selectivity);
+ }
+ /*
+ We need to set selectivity for fields supported by indexes.
+ For single-component indexes and for some first components
+ of other indexes we do it here. For the remaining fields
+ we do it later in this function, in the same way as for the
+ fields not used in any indexes.
+ */
+ if (used_key_parts == 1)
+ {
+ uint fieldnr= key_info->key_part[0].fieldnr;
+ table->field[fieldnr-1]->cond_selectivity= quick_cond_selectivity;
+ DBUG_ASSERT(table->field[fieldnr-1]->cond_selectivity <= 1.0);
+ /*
+ Reset bit in used_fields to ensure this field is ignored in the loop
+ below.
+ */
+ bitmap_clear_bit(used_fields, fieldnr-1);
+ }
+end_of_range_loop:
+ continue;
+ }
+ /*
+ Take into account number of matching rows calculated by
+ get_best_ror_intersect() stored in table->opt_range_condition_rows
+ Use the smaller found selectivity.
+ */
+ original_selectivity= (table->opt_range_condition_rows /
+ table_records);
+ if (original_selectivity < table->cond_selectivity)
+ {
+ table->cond_selectivity= original_selectivity;
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object selectivity_for_index(thd);
+ selectivity_for_index.add("use_opt_range_condition_rows_selectivity",
+ original_selectivity);
+ }
}
selectivity_for_indexes.end();
@@ -3568,7 +3690,8 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
MEM_ROOT alloc;
SEL_TREE *tree;
init_sql_alloc(key_memory_quick_range_select_root, &alloc,
- thd->variables.range_alloc_block_size, 0, MYF(MY_THREAD_SPECIFIC));
+ thd->variables.range_alloc_block_size, 0,
+ MYF(MY_THREAD_SPECIFIC));
bzero((void*) &param, sizeof(param));
param.thd= thd;
param.mem_root= &alloc;
@@ -3643,9 +3766,12 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
selectivity_for_column.add("column_name", key->field->field_name);
if (key->type == SEL_ARG::IMPOSSIBLE)
{
+ DBUG_ASSERT(key->field->cond_selectivity <= 1.0);
table->reginfo.impossible_range= 1;
- selectivity_for_column.add("selectivity_from_histogram", 0);
- selectivity_for_column.add("cause", "impossible range");
+ if (unlikely(selectivity_for_column.trace_started()))
+ selectivity_for_column.
+ add("selectivity_from_histogram", 0).
+ add("cause", "impossible range");
goto free_alloc;
}
else
@@ -3672,7 +3798,7 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
table_field->cond_selectivity < 1.0)
{
if (!bitmap_is_set(&handled_columns, table_field->field_index))
- table->cond_selectivity*= table_field->cond_selectivity;
+ table->multiply_cond_selectivity(table_field->cond_selectivity);
}
}
@@ -3684,12 +3810,6 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
}
selectivity_for_columns.end();
- if (quick && (quick->get_type() == QUICK_SELECT_I::QS_TYPE_ROR_UNION ||
- quick->get_type() == QUICK_SELECT_I::QS_TYPE_INDEX_MERGE))
- {
- table->cond_selectivity*= (quick->records/table_records);
- }
-
bitmap_union(used_fields, &handled_columns);
/* Check if we can improve selectivity estimates by using sampling */
@@ -3727,7 +3847,7 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond)
DBUG_PRINT("info", ("The predicate selectivity : %g",
(double)stat->positive / examined_rows));
double selectivity= ((double)stat->positive) / examined_rows;
- table->cond_selectivity*= selectivity;
+ table->multiply_cond_selectivity(selectivity);
/*
If a field is involved then we register its selectivity in case
there in an equality with the field.
@@ -4168,6 +4288,20 @@ end:
table->all_partitions_pruned_away= true;
retval= TRUE;
}
+
+ if (unlikely(thd->trace_started()))
+ {
+ String parts;
+ String_list parts_list;
+
+ make_used_partitions_str(thd->mem_root, prune_param.part_info, &parts,
+ parts_list);
+ Json_writer_object trace_wrapper(thd);
+ Json_writer_object trace_prune(thd, "prune_partitions");
+ trace_prune.add_table_name(table);
+ trace_prune.add("used_partitions", parts.c_ptr());
+ }
+
DBUG_RETURN(retval);
}
@@ -5080,17 +5214,33 @@ static void dbug_print_singlepoint_range(SEL_ARG **start, uint num)
Get cost of 'sweep' full records retrieval.
SYNOPSIS
get_sweep_read_cost()
- param Parameter from test_quick_select
- records # of records to be retrieved
+ param Parameter from test_quick_select
+ records # of records to be retrieved
+ add_time_for_compare If set, add cost of WHERE clause (WHERE_COST)
RETURN
cost of sweep
*/
-double get_sweep_read_cost(const PARAM *param, ha_rows records)
+static double get_sweep_read_cost(const PARAM *param, double records,
+ bool add_time_for_compare)
{
+ DBUG_ENTER("get_sweep_read_cost");
+#ifndef OLD_SWEEP_COST
+ handler *file= param->table->file;
+ IO_AND_CPU_COST engine_cost= file->ha_rnd_pos_call_time(double2rows(ceil(records)));
+ double cost;
+ if (add_time_for_compare)
+ {
+ engine_cost.cpu+= records * param->thd->variables.optimizer_where_cost;
+ }
+ cost= file->cost(engine_cost);
+
+ DBUG_PRINT("return", ("cost: %g", cost));
+ DBUG_RETURN(cost);
+#else
double result;
uint pk= param->table->s->primary_key;
- DBUG_ENTER("get_sweep_read_cost");
+
if (param->table->file->pk_is_clustering_key(pk) ||
param->table->file->stats.block_size == 0 /* HEAP */)
{
@@ -5098,12 +5248,12 @@ double get_sweep_read_cost(const PARAM *param, ha_rows records)
We are using the primary key to find the rows.
Calculate the cost for this.
*/
- result= param->table->file->read_time(pk, (uint)records, records);
+ result= table->file->ha_rnd_pos_call_time(records);
}
else
{
/*
- Rows will be retreived with rnd_pos(). Caluclate the expected
+ Rows will be retreived with rnd_pos(). Calculate the expected
cost for this.
*/
double n_blocks=
@@ -5136,9 +5286,11 @@ double get_sweep_read_cost(const PARAM *param, ha_rows records)
*/
result= busy_blocks;
}
+ result+= rows2double(n_rows) * param->table->file->ROW_COPY_COST);
}
DBUG_PRINT("return",("cost: %g", result));
DBUG_RETURN(result);
+#endif /* OLD_SWEEP_COST */
}
@@ -5209,7 +5361,9 @@ double get_sweep_read_cost(const PARAM *param, ha_rows records)
static
TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
- double read_time, bool named_trace)
+ double read_time, ha_rows limit,
+ bool named_trace,
+ bool using_table_scan)
{
SEL_TREE **ptree;
TRP_INDEX_MERGE *imerge_trp= NULL;
@@ -5273,7 +5427,7 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
"tree in SEL_IMERGE"););
Json_writer_object trace_idx(thd);
if (!(*cur_child= get_key_scans_params(param, *ptree, TRUE, FALSE,
- read_time)))
+ read_time, limit, using_table_scan)))
{
/*
One of index scans in this index_merge is more expensive than entire
@@ -5292,16 +5446,17 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
imerge_cost += (*cur_child)->read_cost;
all_scans_ror_able &= ((*ptree)->n_ror_scans > 0);
all_scans_rors &= (*cur_child)->is_ror;
- if (param->table->file->is_clustering_key(param->real_keynr[(*cur_child)->key_idx]))
+ if (param->table->file->is_clustering_key(keynr_in_table))
{
cpk_scan= cur_child;
cpk_scan_records= (*cur_child)->records;
}
else
non_cpk_scan_records += (*cur_child)->records;
- trace_idx.add("index_to_merge",
- param->table->key_info[keynr_in_table].name)
- .add("cumulated_cost", imerge_cost);
+ if (unlikely(trace_idx.trace_started()))
+ trace_idx.
+ add("index_to_merge", param->table->key_info[keynr_in_table].name).
+ add("cumulated_cost", imerge_cost);
}
to_merge.end();
@@ -5333,9 +5488,10 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
optimizer_flag(param->thd, OPTIMIZER_SWITCH_INDEX_MERGE_UNION))
{
roru_read_plans= (TABLE_READ_PLAN**)range_scans;
- trace_best_disjunct.add("use_roworder_union", true)
- .add("cause",
- "always cheaper than non roworder retrieval");
+ if (unlikely(trace_best_disjunct.trace_started()))
+ trace_best_disjunct.
+ add("use_roworder_union", true).
+ add("cause", "always cheaper than non roworder retrieval");
goto skip_to_ror_scan;
}
@@ -5345,8 +5501,8 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
Add one ROWID comparison for each row retrieved on non-CPK scan. (it
is done in QUICK_RANGE_SELECT::row_in_ranges)
*/
- double rid_comp_cost= (rows2double(non_cpk_scan_records) /
- TIME_FOR_COMPARE_ROWID);
+ double rid_comp_cost= (rows2double(non_cpk_scan_records) *
+ default_optimizer_costs.rowid_cmp_cost);
imerge_cost+= rid_comp_cost;
trace_best_disjunct.add("cost_of_mapping_rowid_in_non_clustered_pk_scan",
rid_comp_cost);
@@ -5354,18 +5510,24 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
/* Calculate cost(rowid_to_row_scan) */
{
- double sweep_cost= get_sweep_read_cost(param, non_cpk_scan_records);
+ /* imerge_cost already includes WHERE_COST */
+ double sweep_cost= get_sweep_read_cost(param, rows2double(non_cpk_scan_records), 0);
imerge_cost+= sweep_cost;
- trace_best_disjunct.add("cost_sort_rowid_and_read_disk", sweep_cost);
+ trace_best_disjunct.
+ add("rows", non_cpk_scan_records).
+ add("cost_sort_rowid_and_read_disk", sweep_cost).
+ add("cost", imerge_cost);
}
DBUG_PRINT("info",("index_merge cost with rowid-to-row scan: %g",
imerge_cost));
if (imerge_cost > read_time ||
!optimizer_flag(param->thd, OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION))
{
- trace_best_disjunct.add("use_roworder_index_merge", true);
- trace_best_disjunct.add("cause", "cost");
- goto build_ror_index_merge;
+ if (unlikely(trace_best_disjunct.trace_started()))
+ trace_best_disjunct.
+ add("use_sort_index_merge", false).
+ add("cause", imerge_cost > read_time ? "cost" : "disabled");
+ goto build_ror_index_merge; // Try roworder_index_merge
}
/* Add Unique operations cost */
@@ -5382,15 +5544,17 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
}
{
- const double dup_removal_cost= Unique::get_use_cost(
+ const double dup_removal_cost= Unique::get_use_cost(thd,
param->imerge_cost_buff, (uint)non_cpk_scan_records,
param->table->file->ref_length,
(size_t)param->thd->variables.sortbuff_size,
- TIME_FOR_COMPARE_ROWID,
+ ROWID_COMPARE_COST_THD(param->thd),
FALSE, NULL);
imerge_cost+= dup_removal_cost;
- trace_best_disjunct.add("cost_duplicate_removal", dup_removal_cost)
- .add("total_cost", imerge_cost);
+ if (unlikely(trace_best_disjunct.trace_started()))
+ trace_best_disjunct.
+ add("cost_duplicate_removal", dup_removal_cost).
+ add("total_cost", imerge_cost);
}
DBUG_PRINT("info",("index_merge total cost: %g (wanted: less then %g)",
@@ -5454,31 +5618,28 @@ skip_to_ror_scan:
double cost;
if ((*cur_child)->is_ror)
{
+ handler *file= param->table->file;
/* Ok, we have index_only cost, now get full rows scan cost */
- cost= param->table->file->
- read_time(param->real_keynr[(*cur_child)->key_idx], 1,
- (*cur_child)->records) +
- rows2double((*cur_child)->records) / TIME_FOR_COMPARE;
+ cost= file->cost(file->ha_rnd_pos_call_and_compare_time((*cur_child)->records));
}
else
cost= read_time;
TABLE_READ_PLAN *prev_plan= *cur_child;
- if (!(*cur_roru_plan= get_best_ror_intersect(param, *ptree, cost,
- &dummy)))
+ TRP_ROR_INTERSECT *ror_trp;
+ if (!(*cur_roru_plan= ror_trp= get_best_ror_intersect(param, *ptree, cost,
+ &dummy)))
{
- if (prev_plan->is_ror)
- *cur_roru_plan= prev_plan;
- else
+ if (!prev_plan->is_ror)
DBUG_RETURN(imerge_trp);
+ *cur_roru_plan= prev_plan;
roru_index_costs += (*cur_roru_plan)->read_cost;
}
else
- roru_index_costs +=
- ((TRP_ROR_INTERSECT*)(*cur_roru_plan))->index_scan_costs;
+ roru_index_costs += ror_trp->index_scan_costs;
roru_total_records += (*cur_roru_plan)->records;
- roru_intersect_part *= (*cur_roru_plan)->records /
- param->table->stat_records();
+ roru_intersect_part *= ((*cur_roru_plan)->records /
+ param->table->stat_records());
}
trace_analyze_ror.end();
/*
@@ -5499,15 +5660,17 @@ skip_to_ror_scan:
*/
double roru_total_cost;
- roru_total_cost= roru_index_costs +
- rows2double(roru_total_records)*log((double)n_child_scans) /
- (TIME_FOR_COMPARE_ROWID * M_LN2) +
- get_sweep_read_cost(param, roru_total_records);
+ roru_total_cost= (roru_index_costs +
+ rows2double(roru_total_records)*log((double)n_child_scans) *
+ ROWID_COMPARE_COST_THD(param->thd) / M_LN2 +
+ get_sweep_read_cost(param, rows2double(roru_total_records), 0));
DBUG_PRINT("info", ("ROR-union: cost %g, %zu members",
roru_total_cost, n_child_scans));
- trace_best_disjunct.add("index_roworder_union_cost", roru_total_cost)
- .add("members", n_child_scans);
+ if (unlikely(trace_best_disjunct.trace_started()))
+ trace_best_disjunct.
+ add("index_roworder_union_cost", roru_total_cost).
+ add("members", n_child_scans);
TRP_ROR_UNION* roru;
if (roru_total_cost < read_time)
{
@@ -5533,7 +5696,7 @@ skip_to_ror_scan:
SYNOPSIS
merge_same_index_scans()
param Context info for the operation
- imerge IN/OUT SEL_IMERGE from which imerge_trp has been extracted
+ imerge IN/OUT SEL_IMERGE from which imerge_trp has been extracted
imerge_trp The index merge plan where index scans for the same
indexes are to be merges
read_time The upper bound for the cost of the plan to be evaluated
@@ -5614,7 +5777,8 @@ TABLE_READ_PLAN *merge_same_index_scans(PARAM *param, SEL_IMERGE *imerge,
DBUG_ASSERT(imerge->trees_next>imerge->trees);
if (imerge->trees_next-imerge->trees > 1)
- trp= get_best_disjunct_quick(param, imerge, read_time, true);
+ trp= get_best_disjunct_quick(param, imerge, read_time, HA_POS_ERROR, true,
+ 0);
else
{
/*
@@ -5655,8 +5819,8 @@ typedef struct st_common_index_intersect_info
{
PARAM *param; /* context info for range optimizations */
uint key_size; /* size of a ROWID element stored in Unique object */
- double compare_factor; /* 1/compare - cost to compare two ROWIDs */
- size_t max_memory_size; /* maximum space allowed for Unique objects */
+ double compare_factor; /* cost to compare two ROWIDs */
+ size_t max_memory_size; /* maximum space allowed for Unique objects */
ha_rows table_cardinality; /* estimate of the number of records in table */
double cutoff_cost; /* discard index intersects with greater costs */
INDEX_SCAN_INFO *cpk_scan; /* clustered primary key used in intersection */
@@ -5756,8 +5920,7 @@ bool create_fields_bitmap(PARAM *param, MY_BITMAP *fields_bitmap)
static
int cmp_intersect_index_scan(INDEX_SCAN_INFO **a, INDEX_SCAN_INFO **b)
{
- return (*a)->records < (*b)->records ?
- -1 : (*a)->records == (*b)->records ? 0 : 1;
+ return CMP_NUM((*a)->records, (*b)->records);
}
@@ -5870,7 +6033,7 @@ bool prepare_search_best_index_intersect(PARAM *param,
common->param= param;
common->key_size= table->file->ref_length;
- common->compare_factor= TIME_FOR_COMPARE_ROWID;
+ common->compare_factor= ROWID_COMPARE_COST_THD(param->thd);
common->max_memory_size= (size_t)param->thd->variables.sortbuff_size;
common->cutoff_cost= cutoff_cost;
common->cpk_scan= NULL;
@@ -5911,26 +6074,30 @@ bool prepare_search_best_index_intersect(PARAM *param,
if (*index_scan == cpk_scan)
{
- idx_scan.add("chosen", "false")
- .add("cause", "clustered index used for filtering");
+ if (unlikely(idx_scan.trace_started()))
+ idx_scan.
+ add("chosen", "false").
+ add("cause", "clustered index used for filtering");
continue;
}
if (cpk_scan && cpk_scan->used_key_parts >= used_key_parts &&
same_index_prefix(cpk_scan->key_info, key_info, used_key_parts))
{
- idx_scan.add("chosen", "false")
- .add("cause", "clustered index used for filtering");
+ if (unlikely(idx_scan.trace_started()))
+ idx_scan.
+ add("chosen", "false").
+ add("cause", "clustered index used for filtering");
continue;
}
- cost= table->opt_range[(*index_scan)->keynr].index_only_cost;
+ cost= table->opt_range[(*index_scan)->keynr].index_only_fetch_cost(table);
idx_scan.add("cost", cost);
- if (cost >= cutoff_cost)
+ if (cost + COST_EPS >= cutoff_cost)
{
- idx_scan.add("chosen", false);
- idx_scan.add("cause", "cost");
+ if (unlikely(idx_scan.trace_started()))
+ idx_scan.add("chosen", false).add("cause", "cost");
continue;
}
@@ -5949,15 +6116,18 @@ bool prepare_search_best_index_intersect(PARAM *param,
}
if (!*scan_ptr || cost < (*scan_ptr)->index_read_cost)
{
- idx_scan.add("chosen", true);
- if (!*scan_ptr)
- idx_scan.add("cause", "first occurrence of index prefix");
- else
- idx_scan.add("cause", "better cost for same idx prefix");
+ if (unlikely(idx_scan.trace_started()))
+ {
+ idx_scan.add("chosen", true);
+ if (!*scan_ptr)
+ idx_scan.add("cause", "first occurrence of index prefix");
+ else
+ idx_scan.add("cause", "better cost for same idx prefix");
+ }
*scan_ptr= *index_scan;
(*scan_ptr)->index_read_cost= cost;
}
- else
+ else if (unlikely(idx_scan.trace_started()))
{
idx_scan.add("chosen", false).add("cause", "cost");
}
@@ -5982,7 +6152,7 @@ bool prepare_search_best_index_intersect(PARAM *param,
return TRUE;
common->best_uses_cpk= FALSE;
- common->best_cost= cutoff_cost + COST_EPS;
+ common->best_cost= cutoff_cost;
common->best_length= 0;
if (!(common->best_intersect=
@@ -6020,13 +6190,14 @@ bool prepare_search_best_index_intersect(PARAM *param,
ha_rows records= records_in_index_intersect_extension(&curr, *scan_ptr);
(*scan_ptr)->filtered_out= records >= scan_records ?
0 : scan_records-records;
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
{
Json_writer_object selected_idx(thd);
selected_idx.add("index", key_info->name);
print_keyparts(thd, key_info, (*scan_ptr)->used_key_parts);
- selected_idx.add("records", (*scan_ptr)->records)
- .add("filtered_records", (*scan_ptr)->filtered_out);
+ selected_idx.
+ add("rows", (*scan_ptr)->records).
+ add("filtered_records", (*scan_ptr)->filtered_out);
}
}
}
@@ -6036,13 +6207,14 @@ bool prepare_search_best_index_intersect(PARAM *param,
{
KEY *key_info= (*scan_ptr)->key_info;
(*scan_ptr)->filtered_out= 0;
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
{
Json_writer_object selected_idx(thd);
selected_idx.add("index", key_info->name);
print_keyparts(thd, key_info, (*scan_ptr)->used_key_parts);
- selected_idx.add("records", (*scan_ptr)->records)
- .add("filtered_records", (*scan_ptr)->filtered_out);
+ selected_idx.
+ add("rows", (*scan_ptr)->records).
+ add("filtered_records", (*scan_ptr)->filtered_out);
}
}
}
@@ -6282,8 +6454,8 @@ double get_cpk_filter_cost(ha_rows filtered_records,
INDEX_SCAN_INFO *cpk_scan,
double compare_factor)
{
- return log((double) (cpk_scan->range_count+1)) / (compare_factor * M_LN2) *
- filtered_records;
+ return (log((double) (cpk_scan->range_count+1)) * compare_factor / M_LN2 *
+ filtered_records);
}
@@ -6307,7 +6479,8 @@ double get_cpk_filter_cost(ha_rows filtered_records,
*/
static
-bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
+bool check_index_intersect_extension(THD *thd,
+ PARTIAL_INDEX_INTERSECT_INFO *curr,
INDEX_SCAN_INFO *ext_index_scan,
PARTIAL_INDEX_INTERSECT_INFO *next)
{
@@ -6319,9 +6492,19 @@ bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
COMMON_INDEX_INTERSECT_INFO *common_info= curr->common_info;
double cutoff_cost= common_info->cutoff_cost;
uint idx= curr->length;
+ Json_writer_object trace(thd, "check_index_intersect_extension");
+
next->index_read_cost= curr->index_read_cost+ext_index_scan->index_read_cost;
if (next->index_read_cost > cutoff_cost)
- return FALSE;
+ {
+ if (unlikely(trace.trace_started()))
+ trace.
+ add("index", ext_index_scan->key_info->name.str).
+ add("cost", next->index_read_cost).
+ add("chosen", false).
+ add("cause", "cost");
+ return FALSE;
+ }
if ((next->in_memory= curr->in_memory))
next->in_memory_cost= curr->in_memory_cost;
@@ -6345,16 +6528,18 @@ bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
common_info->compare_factor)*
ext_index_scan_records;
cost= next->in_memory_cost;
+
}
else
{
uint *buff_elems= common_info->buff_elems;
uint key_size= common_info->key_size;
double compare_factor= common_info->compare_factor;
- size_t max_memory_size= common_info->max_memory_size;
-
+ size_t max_memory_size= common_info->max_memory_size;
+
records_sent_to_unique+= ext_index_scan_records;
- cost= Unique::get_use_cost(buff_elems, (size_t) records_sent_to_unique, key_size,
+ cost= Unique::get_use_cost(thd, buff_elems, (size_t) records_sent_to_unique,
+ key_size,
max_memory_size, compare_factor, TRUE,
&next->in_memory);
if (records_filtered_out_by_cpk)
@@ -6364,7 +6549,7 @@ bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
double cost2;
bool in_memory2;
ha_rows records2= records_sent_to_unique-records_filtered_out_by_cpk;
- cost2= Unique::get_use_cost(buff_elems, (size_t) records2, key_size,
+ cost2= Unique::get_use_cost(thd, buff_elems, (size_t) records2, key_size,
max_memory_size, compare_factor, TRUE,
&in_memory2);
cost2+= get_cpk_filter_cost(ext_index_scan_records, common_info->cpk_scan,
@@ -6381,6 +6566,19 @@ bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
if (next->in_memory)
next->in_memory_cost= cost;
}
+ if (unlikely(trace.trace_started()))
+ {
+ trace.
+ add("index", ext_index_scan->key_info->name.str).
+ add("in_memory", next->in_memory).
+ add("range_rows", ext_index_scan_records).
+ add("rows_sent_to_unique", records_sent_to_unique).
+ add("unique_cost", cost).
+ add("index_read_cost", next->index_read_cost);
+ if (next->use_cpk_filter)
+ trace.add("rows_filtered_out_by_clustered_pk", records_filtered_out_by_cpk);
+ }
+
if (next->use_cpk_filter)
{
@@ -6392,20 +6590,37 @@ bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
records= records_in_index_intersect_extension(curr, ext_index_scan);
if (idx && records > curr->records)
+ {
+ if (unlikely(trace.trace_started()))
+ trace.
+ add("rows", records).
+ add("chosen", false).
+ add("cause", "too many rows");
return FALSE;
+ }
if (next->use_cpk_filter && curr->filtered_scans.is_clear_all())
records-= records_filtered_out_by_cpk;
next->records= records;
cost+= next->index_read_cost;
if (cost >= cutoff_cost)
+ {
+ if (unlikely(trace.trace_started()))
+ trace.add("cost", cost).add("chosen", false).add("cause", "cost");
return FALSE;
+ }
- cost+= get_sweep_read_cost(common_info->param, records);
+ /*
+ The cost after sweeep can be bigger than cutoff, but that is ok as the
+ end cost can decrease when we add the next index.
+ */
+ cost+= get_sweep_read_cost(common_info->param, rows2double(records), 1);
next->cost= cost;
next->length= curr->length+1;
+ if (unlikely(trace.trace_started()))
+ trace.add("rows", records).add("cost", cost).add("chosen", true);
return TRUE;
}
@@ -6424,7 +6639,8 @@ bool check_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr,
*/
static
-void find_index_intersect_best_extension(PARTIAL_INDEX_INTERSECT_INFO *curr)
+void find_index_intersect_best_extension(THD *thd,
+ PARTIAL_INDEX_INTERSECT_INFO *curr)
{
PARTIAL_INDEX_INTERSECT_INFO next;
COMMON_INDEX_INTERSECT_INFO *common_info= curr->common_info;
@@ -6451,14 +6667,18 @@ void find_index_intersect_best_extension(PARTIAL_INDEX_INTERSECT_INFO *curr)
next.common_info= common_info;
+ Json_writer_array potential_index_intersect(thd, "potential_index_intersect");
+
INDEX_SCAN_INFO *rem_first_index_scan= *rem_first_index_scan_ptr;
for (INDEX_SCAN_INFO **index_scan_ptr= rem_first_index_scan_ptr;
*index_scan_ptr; index_scan_ptr++)
{
+ Json_writer_object selected(thd);
*rem_first_index_scan_ptr= *index_scan_ptr;
*index_scan_ptr= rem_first_index_scan;
- if (check_index_intersect_extension(curr, *rem_first_index_scan_ptr, &next))
- find_index_intersect_best_extension(&next);
+ if (check_index_intersect_extension(thd, curr, *rem_first_index_scan_ptr,
+ &next))
+ find_index_intersect_best_extension(thd, &next);
*index_scan_ptr= *rem_first_index_scan_ptr;
*rem_first_index_scan_ptr= rem_first_index_scan;
}
@@ -6502,16 +6722,18 @@ TRP_INDEX_INTERSECT *get_best_index_intersect(PARAM *param, SEL_TREE *tree,
TRP_INDEX_INTERSECT *intersect_trp= NULL;
TABLE *table= param->table;
THD *thd= param->thd;
-
DBUG_ENTER("get_best_index_intersect");
Json_writer_object trace_idx_interect(thd, "analyzing_sort_intersect");
+ if (unlikely(trace_idx_interect.trace_started()))
+ trace_idx_interect.add("cutoff_cost", read_time);
+
if (prepare_search_best_index_intersect(param, tree, &common, &init,
read_time))
DBUG_RETURN(NULL);
- find_index_intersect_best_extension(&init);
+ find_index_intersect_best_extension(thd, &init);
if (common.best_length <= 1 && !common.best_uses_cpk)
DBUG_RETURN(NULL);
@@ -6570,13 +6792,15 @@ TRP_INDEX_INTERSECT *get_best_index_intersect(PARAM *param, SEL_TREE *tree,
{
intersect_trp->read_cost= common.best_cost;
- intersect_trp->records= common.best_records;
+ intersect_trp->records= common.best_records;
intersect_trp->range_scans= range_scans;
intersect_trp->range_scans_end= cur_range;
intersect_trp->filtered_scans= common.filtered_scans;
- trace_idx_interect.add("rows", intersect_trp->records)
- .add("cost", intersect_trp->read_cost)
- .add("chosen",true);
+ if (unlikely(trace_idx_interect.trace_started()))
+ trace_idx_interect.
+ add("rows", intersect_trp->records).
+ add("cost", intersect_trp->read_cost).
+ add("chosen",true);
}
DBUG_RETURN(intersect_trp);
}
@@ -6592,11 +6816,12 @@ void TRP_ROR_INTERSECT::trace_basic_info(PARAM *param,
THD *thd= param->thd;
DBUG_ASSERT(trace_object->trace_started());
- trace_object->add("type", "index_roworder_intersect");
- trace_object->add("rows", records);
- trace_object->add("cost", read_cost);
- trace_object->add("covering", is_covering);
- trace_object->add("clustered_pk_scan", cpk_scan != NULL);
+ trace_object->
+ add("type", "index_roworder_intersect").
+ add("rows", records).
+ add("cost", read_cost).
+ add("covering", is_covering).
+ add("clustered_pk_scan", cpk_scan != NULL);
Json_writer_array smth_trace(thd, "intersect_of");
for (ROR_SCAN_INFO **cur_scan= first_scan; cur_scan != last_scan;
@@ -6606,9 +6831,10 @@ void TRP_ROR_INTERSECT::trace_basic_info(PARAM *param,
const KEY_PART_INFO *key_part= cur_key.key_part;
Json_writer_object trace_isect_idx(thd);
- trace_isect_idx.add("type", "range_scan");
- trace_isect_idx.add("index", cur_key.name);
- trace_isect_idx.add("rows", (*cur_scan)->records);
+ trace_isect_idx.
+ add("type", "range_scan").
+ add("index", cur_key.name).
+ add("rows", (*cur_scan)->records);
Json_writer_array trace_range(thd, "ranges");
@@ -6639,6 +6865,7 @@ ROR_SCAN_INFO *make_ror_scan(const PARAM *param, int idx, SEL_ARG *sel_arg)
ROR_SCAN_INFO *ror_scan;
my_bitmap_map *bitmap_buf;
uint keynr;
+ handler *file= param->table->file;
DBUG_ENTER("make_ror_scan");
if (!(ror_scan= (ROR_SCAN_INFO*)alloc_root(param->mem_root,
@@ -6648,7 +6875,7 @@ ROR_SCAN_INFO *make_ror_scan(const PARAM *param, int idx, SEL_ARG *sel_arg)
ror_scan->idx= idx;
ror_scan->keynr= keynr= param->real_keynr[idx];
ror_scan->key_rec_length= (param->table->key_info[keynr].key_length +
- param->table->file->ref_length);
+ file->ref_length);
ror_scan->sel_arg= sel_arg;
ror_scan->records= param->quick_rows[keynr];
@@ -6669,8 +6896,14 @@ ROR_SCAN_INFO *make_ror_scan(const PARAM *param, int idx, SEL_ARG *sel_arg)
if (bitmap_is_set(&param->needed_fields, key_part->fieldnr-1))
bitmap_set_bit(&ror_scan->covered_fields, key_part->fieldnr-1);
}
+
+ /*
+ Cost of reading the keys for the rows, which are later stored in the
+ ror queue.
+ */
ror_scan->index_read_cost=
- param->table->file->keyread_time(ror_scan->keynr, 1, ror_scan->records);
+ file->cost(file->ha_keyread_and_copy_time(ror_scan->keynr, 1,
+ ror_scan->records, 0));
DBUG_RETURN(ror_scan);
}
@@ -6979,7 +7212,7 @@ static double ror_scan_selectivity(const ROR_INTERSECT_INFO *info,
avoid duplicating the inference code)
NOTES
- Adding a ROR scan to ROR-intersect "makes sense" iff the cost of ROR-
+ Adding a ROR scan to ROR-intersect "makes sense" if the cost of ROR-
intersection decreases. The cost of ROR-intersection is calculated as
follows:
@@ -7027,11 +7260,11 @@ static bool ror_intersect_add(ROR_INTERSECT_INFO *info,
{
/*
CPK scan is used to filter out rows. We apply filtering for
- each record of every scan. Assuming 1/TIME_FOR_COMPARE_ROWID
+ each record of every scan. Assuming ROWID_COMPARE_COST
per check this gives us:
*/
- const double idx_cost= rows2double(info->index_records) /
- TIME_FOR_COMPARE_ROWID;
+ const double idx_cost= (rows2double(info->index_records) *
+ ROWID_COMPARE_COST_THD(info->param->thd));
info->index_scan_costs+= idx_cost;
trace_costs->add("index_scan_cost", idx_cost);
}
@@ -7054,14 +7287,15 @@ static bool ror_intersect_add(ROR_INTERSECT_INFO *info,
DBUG_PRINT("info", ("info->total_cost: %g", info->total_cost));
if (!info->is_covering)
{
- double sweep_cost= get_sweep_read_cost(info->param,
- double2rows(info->out_rows));
+ double sweep_cost= get_sweep_read_cost(info->param, info->out_rows, 1);
info->total_cost+= sweep_cost;
trace_costs->add("disk_sweep_cost", sweep_cost);
DBUG_PRINT("info", ("info->total_cost= %g", info->total_cost));
}
else
- trace_costs->add("disk_sweep_cost", 0);
+ {
+ trace_costs->add("disk_sweep_cost", static_cast<longlong>(0));
+ }
DBUG_PRINT("info", ("New out_rows: %g", info->out_rows));
DBUG_PRINT("info", ("New cost: %g, %scovering", info->total_cost,
@@ -7140,9 +7374,13 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
bool *are_all_covering)
{
uint idx;
- double min_cost= DBL_MAX;
- DBUG_ENTER("get_best_ror_intersect");
+ double min_cost= DBL_MAX, cmp_cost;
THD *thd= param->thd;
+ DBUG_ENTER("get_best_ror_intersect");
+ DBUG_PRINT("enter", ("opt_range_condition_rows: %llu cond_selectivity: %g",
+ (ulonglong) param->table->opt_range_condition_rows,
+ param->table->cond_selectivity));
+
Json_writer_object trace_ror(thd, "analyzing_roworder_intersect");
if ((tree->n_ror_scans < 2) || !param->table->stat_records() ||
@@ -7176,8 +7414,7 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
if (!tree->ror_scans_map.is_set(idx))
continue;
key_no= param->real_keynr[idx];
- if (key_no != cpk_no &&
- param->table->file->index_flags(key_no,0,0) & HA_CLUSTERED_INDEX)
+ if (key_no != cpk_no && param->table->file->is_clustering_key(key_no))
{
/* Ignore clustering keys */
tree->n_ror_scans--;
@@ -7237,31 +7474,40 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
/* S= S + first(R); R= R - first(R); */
if (!ror_intersect_add(intersect, *cur_ror_scan, &trace_idx, FALSE))
{
- trace_idx.add("usable", false)
- .add("cause", "does not reduce cost of intersect");
+ trace_idx.
+ add("usable", false).
+ add("cause", "does not reduce cost of intersect");
cur_ror_scan++;
continue;
}
- trace_idx.add("cumulative_total_cost", intersect->total_cost)
- .add("usable", true)
- .add("matching_rows_now", intersect->out_rows)
- .add("intersect_covering_with_this_index", intersect->is_covering);
+ trace_idx.
+ add("cumulative_total_cost", intersect->total_cost).
+ add("usable", true).
+ add("matching_rows_now", intersect->out_rows).
+ add("intersect_covering_with_this_index", intersect->is_covering);
*(intersect_scans_end++)= *(cur_ror_scan++);
+ /*
+ Check if intersect gives a lower cost.
+ The first ror scan is always accepted.
+ The next ror scan is only accepted if the total cost went down
+ (Enough rows where reject to offset the intersect cost)
+ */
if (intersect->total_cost < min_cost)
{
/* Local minimum found, save it */
+ min_cost= intersect->total_cost;
ror_intersect_cpy(intersect_best, intersect);
intersect_scans_best= intersect_scans_end;
- min_cost = intersect->total_cost;
trace_idx.add("chosen", true);
}
else
{
- trace_idx.add("chosen", false)
- .add("cause", "does not reduce cost");
+ trace_idx.
+ add("chosen", false).
+ add("cause", "does not reduce cost");
}
}
trace_isect_idx.end();
@@ -7269,8 +7515,9 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
if (intersect_scans_best == intersect_scans)
{
DBUG_PRINT("info", ("None of scans increase selectivity"));
- trace_ror.add("chosen", false)
- .add("cause","does not increase selectivity");
+ trace_ror.
+ add("chosen", false).
+ add("cause","does not increase selectivity");
DBUG_RETURN(NULL);
}
@@ -7294,32 +7541,46 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
if (ror_intersect_add(intersect, cpk_scan, &trace_cpk, TRUE) &&
(intersect->total_cost < min_cost))
{
- trace_cpk.add("clustered_pk_scan_added_to_intersect", true)
- .add("cumulated_cost", intersect->total_cost);
+ min_cost= intersect->total_cost;
+ if (trace_cpk.trace_started())
+ trace_cpk.
+ add("clustered_pk_scan_added_to_intersect", true).
+ add("cumulated_cost", intersect->total_cost);
intersect_best= intersect; //just set pointer here
}
else
{
- trace_cpk.add("clustered_pk_added_to_intersect", false)
- .add("cause", "cost");
+ if (trace_cpk.trace_started())
+ trace_cpk.
+ add("clustered_pk_added_to_intersect", false).
+ add("cause", "cost");
cpk_scan= 0; // Don't use cpk_scan
}
}
else
{
- trace_cpk.add("clustered_pk_added_to_intersect", false)
- .add("cause", cpk_scan ? "roworder is covering"
- : "no clustered pk index");
+ trace_cpk.
+ add("clustered_pk_added_to_intersect", false).
+ add("cause", cpk_scan ? "roworder is covering"
+ : "no clustered pk index");
cpk_scan= 0; // Don't use cpk_scan
}
trace_cpk.end();
+ /*
+ Adjust row count and add the cost of comparing the final rows to the
+ WHERE clause
+ */
+ cmp_cost= intersect_best->out_rows * thd->variables.optimizer_where_cost;
+
/* Ok, return ROR-intersect plan if we have found one */
TRP_ROR_INTERSECT *trp= NULL;
- if (min_cost < read_time && (cpk_scan || best_num > 1))
+ if (min_cost + cmp_cost < read_time && (cpk_scan || best_num > 1))
{
+ double best_rows= intersect_best->out_rows;
+ set_if_bigger(best_rows, 1);
if (!(trp= new (param->mem_root) TRP_ROR_INTERSECT))
- DBUG_RETURN(trp);
+ DBUG_RETURN(NULL);
if (!(trp->first_scan=
(ROR_SCAN_INFO**)alloc_root(param->mem_root,
sizeof(ROR_SCAN_INFO*)*best_num)))
@@ -7327,30 +7588,30 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
memcpy(trp->first_scan, intersect_scans, best_num*sizeof(ROR_SCAN_INFO*));
trp->last_scan= trp->first_scan + best_num;
trp->is_covering= intersect_best->is_covering;
- trp->read_cost= intersect_best->total_cost;
- /* Prevent divisons by zero */
- ha_rows best_rows = double2rows(intersect_best->out_rows);
- if (!best_rows)
- best_rows= 1;
- set_if_smaller(param->table->opt_range_condition_rows, best_rows);
- trp->records= best_rows;
+ trp->read_cost= min_cost + cmp_cost;
+ param->table->set_opt_range_condition_rows((ha_rows)best_rows);
+ trp->records= (ha_rows)best_rows;
trp->index_scan_costs= intersect_best->index_scan_costs;
trp->cpk_scan= cpk_scan;
DBUG_PRINT("info", ("Returning non-covering ROR-intersect plan:"
"cost %g, records %lu",
trp->read_cost, (ulong) trp->records));
- trace_ror.add("rows", trp->records)
- .add("cost", trp->read_cost)
- .add("covering", trp->is_covering)
- .add("chosen", true);
+ if (unlikely(trace_ror.trace_started()))
+ trace_ror.
+ add("rows", trp->records).
+ add("cost", trp->read_cost).
+ add("covering", trp->is_covering).
+ add("chosen", true);
}
else
{
- trace_ror.add("chosen", false)
- .add("cause", (read_time > min_cost)
- ? "too few indexes to merge"
- : "cost");
+ trace_ror.
+ add("chosen", false).
+ add("cause", (min_cost + cmp_cost >= read_time) ?
+ "cost" : "too few indexes to merge");
}
+ DBUG_PRINT("exit", ("opt_range_condition_rows: %llu",
+ (ulonglong) param->table->opt_range_condition_rows));
DBUG_RETURN(trp);
}
@@ -7422,7 +7683,7 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
DBUG_RETURN(0);
bitmap_clear_all(covered_fields);
- double total_cost= 0.0f;
+ double total_cost= 0.0;
ha_rows records=0;
bool all_covered;
@@ -7479,11 +7740,13 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
tree->ror_scans, ror_scan_mark););
/* Add priority queue use cost. */
- total_cost += rows2double(records)*
- log((double)(ror_scan_mark - tree->ror_scans)) /
- (TIME_FOR_COMPARE_ROWID * M_LN2);
+ total_cost += (rows2double(records) *
+ log((double)(ror_scan_mark - tree->ror_scans)) *
+ ROWID_COMPARE_COST_THD(param->thd) / M_LN2);
DBUG_PRINT("info", ("Covering ROR-intersect full cost: %g", total_cost));
+ /* TODO: Add TIME_FOR_COMPARE cost to total_cost */
+
if (total_cost > read_time)
DBUG_RETURN(NULL);
@@ -7501,9 +7764,9 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
trp->read_cost= total_cost;
trp->records= records;
trp->cpk_scan= NULL;
- set_if_smaller(param->table->opt_range_condition_rows, records);
+ param->table->set_opt_range_condition_rows(records);
- DBUG_PRINT("info",
+ DBUG_PRINT("exit",
("Returning covering ROR-intersect plan: cost %g, records %lu",
trp->read_cost, (ulong) trp->records));
DBUG_RETURN(trp);
@@ -7530,7 +7793,8 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
bool index_read_must_be_used,
bool for_range_access,
- double read_time)
+ double read_time, ha_rows limit,
+ bool using_table_scan)
{
uint idx, UNINIT_VAR(best_idx);
SEL_ARG *key_to_read= NULL;
@@ -7582,23 +7846,23 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
Json_writer_object trace_idx(thd);
trace_idx.add("index", param->table->key_info[keynr].name);
- found_records= check_quick_select(param, idx, read_index_only, key,
- for_range_access, &mrr_flags,
+ found_records= check_quick_select(param, idx, limit, read_index_only,
+ key, for_range_access, &mrr_flags,
&buf_size, &cost, &is_ror_scan);
- if (!for_range_access && !is_ror_scan &&
- !optimizer_flag(param->thd,OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION))
+ if (found_records == HA_POS_ERROR ||
+ (!for_range_access && !is_ror_scan &&
+ !optimizer_flag(param->thd,OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION)))
{
/* The scan is not a ROR-scan, just skip it */
continue;
}
-
- if (found_records != HA_POS_ERROR && tree->index_scans &&
+ found_read_time= cost.total_cost();
+ if (tree->index_scans &&
(index_scan= (INDEX_SCAN_INFO *)alloc_root(param->mem_root,
sizeof(INDEX_SCAN_INFO))))
{
Json_writer_array trace_range(thd, "ranges");
-
const KEY &cur_key= param->table->key_info[keynr];
const KEY_PART_INFO *key_part= cur_key.key_part;
@@ -7615,19 +7879,30 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
trace_ranges(&trace_range, param, idx, key, key_part);
trace_range.end();
- trace_idx.add("rowid_ordered", is_ror_scan)
- .add("using_mrr", !(mrr_flags & HA_MRR_USE_DEFAULT_IMPL))
- .add("index_only", read_index_only)
- .add("rows", found_records)
- .add("cost", cost.total_cost());
+ if (unlikely(trace_idx.trace_started()))
+ {
+ trace_idx.
+ add("rowid_ordered", is_ror_scan).
+ add("using_mrr", !(mrr_flags & HA_MRR_USE_DEFAULT_IMPL)).
+ add("index_only", read_index_only).
+ add("rows", found_records).
+ add("cost", found_read_time);
+ if (using_table_scan && cost.limit_cost != 0.0)
+ trace_idx.add("cost_with_limit", cost.limit_cost);
+ }
}
- if ((found_records != HA_POS_ERROR) && is_ror_scan)
+ if (is_ror_scan)
{
tree->n_ror_scans++;
tree->ror_scans_map.set_bit(idx);
}
- if (found_records != HA_POS_ERROR &&
- read_time > (found_read_time= cost.total_cost()))
+ /*
+ Use range if best range so far or if we are comparing to a table scan
+ and the cost with limit approximation is better than the table scan
+ */
+ if (read_time > found_read_time ||
+ (using_table_scan && cost.limit_cost != 0.0 &&
+ read_time > cost.limit_cost))
{
read_time= found_read_time;
best_records= found_records;
@@ -7635,9 +7910,10 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
best_idx= idx;
best_mrr_flags= mrr_flags;
best_buf_size= buf_size;
+ using_table_scan= 0;
trace_idx.add("chosen", true);
}
- else
+ else if (unlikely(trace_idx.trace_started()))
{
trace_idx.add("chosen", false);
if (found_records == HA_POS_ERROR)
@@ -11035,6 +11311,50 @@ uint SEL_ARG::get_max_key_part() const
}
+/**
+ Compute the number of eq_ranges top elements in the tree
+
+ This is used by the cost_group_min_max() to calculate the number of
+ groups in SEL_TREE
+
+ @param group_key_parts number of key parts that must be equal
+
+ @return < 0 Not known
+ @return >= 0 Number of groups
+*/
+
+int SEL_ARG::number_of_eq_groups(uint group_key_parts) const
+{
+ int elements= 0;
+ SEL_ARG const *cur;
+
+ if (part > group_key_parts-1 || type != KEY_RANGE)
+ return -1;
+
+ cur= first();
+ do
+ {
+ if ((cur->min_flag | cur->max_flag) &
+ (NO_MIN_RANGE | NO_MAX_RANGE | NEAR_MIN | NEAR_MAX | GEOM_FLAG))
+ return -1;
+ if (min_value != max_value && !min_max_are_equal())
+ return -1;
+ if (part != group_key_parts -1)
+ {
+ int tmp;
+ if (!next_key_part)
+ return -1;
+ if ((tmp= next_key_part->number_of_eq_groups(group_key_parts)) < 0)
+ return -1;
+ elements+= tmp;
+ }
+ else
+ elements++;
+ } while ((cur= cur->next));
+ return elements;
+}
+
+
/*
Remove the SEL_ARG graph elements which have part > max_part.
@@ -11087,8 +11407,8 @@ void prune_sel_arg_graph(SEL_ARG *sel_arg, uint max_part)
@return
tree pointer The tree after processing,
- NULL If it was not possible to reduce the weight of the tree below the
- limit.
+ NULL If it was not possible to reduce the weight of the tree below
+ the limit.
*/
SEL_ARG *enforce_sel_arg_weight_limit(RANGE_OPT_PARAM *param, uint keyno,
@@ -11124,7 +11444,7 @@ SEL_ARG *enforce_sel_arg_weight_limit(RANGE_OPT_PARAM *param, uint keyno,
uint weight2= sel_arg? sel_arg->weight : 0;
- if (weight2 != weight1)
+ if (unlikely(weight2 != weight1 && param->thd->trace_started()))
{
Json_writer_object wrapper(param->thd);
Json_writer_object obj(param->thd, "enforce_sel_arg_weight_limit");
@@ -11133,8 +11453,9 @@ SEL_ARG *enforce_sel_arg_weight_limit(RANGE_OPT_PARAM *param, uint keyno,
else
obj.add("pseudo_index", field->field_name);
- obj.add("old_weight", (longlong)weight1);
- obj.add("new_weight", (longlong)weight2);
+ obj.
+ add("old_weight", (longlong)weight1).
+ add("new_weight", (longlong)weight2);
}
return sel_arg;
}
@@ -11158,12 +11479,16 @@ bool sel_arg_and_weight_heuristic(RANGE_OPT_PARAM *param, SEL_ARG *key1,
ulong max_weight= param->thd->variables.optimizer_max_sel_arg_weight;
if (max_weight && key1->weight + key1->elements*key2->weight > max_weight)
{
- Json_writer_object wrapper(param->thd);
- Json_writer_object obj(param->thd, "sel_arg_weight_heuristic");
- obj.add("key1_field", key1->field->field_name);
- obj.add("key2_field", key2->field->field_name);
- obj.add("key1_weight", (longlong)key1->weight);
- obj.add("key2_weight", (longlong)key2->weight);
+ if (unlikely(param->thd->trace_started()))
+ {
+ Json_writer_object wrapper(param->thd);
+ Json_writer_object obj(param->thd, "sel_arg_weight_heuristic");
+ obj.
+ add("key1_field", key1->field->field_name).
+ add("key2_field", key2->field->field_name).
+ add("key1_weight", (longlong)key1->weight).
+ add("key2_weight", (longlong)key2->weight);
+ }
return true; // Discard key2
}
return false;
@@ -11653,6 +11978,26 @@ void SEL_ARG::test_use_count(SEL_ARG *root)
}
#endif
+
+/**
+ Check if first key part has only one value
+
+ @retval 1 yes
+ @retval 0 no
+*/
+
+static bool check_if_first_key_part_has_only_one_value(SEL_ARG *arg)
+{
+ if (arg->left != &null_element || arg->right != &null_element)
+ return 0; // Multiple key values
+ if ((arg->min_flag | arg->max_flag) & (NEAR_MIN | NEAR_MAX))
+ return 0;
+ if (unlikely(arg->type != SEL_ARG::KEY_RANGE)) // Not a valid range
+ return 0;
+ return arg->min_value == arg->max_value || !arg->cmp_min_to_max(arg);
+}
+
+
/*
Calculate cost and E(#rows) for a given index and intervals tree
@@ -11681,13 +12026,15 @@ void SEL_ARG::test_use_count(SEL_ARG *root)
*/
static
-ha_rows check_quick_select(PARAM *param, uint idx, bool index_only,
+ha_rows check_quick_select(PARAM *param, uint idx, ha_rows limit,
+ bool index_only,
SEL_ARG *tree, bool update_tbl_stats,
uint *mrr_flags, uint *bufsize, Cost_estimate *cost,
bool *is_ror_scan)
{
SEL_ARG_RANGE_SEQ seq;
- RANGE_SEQ_IF seq_if = {NULL, sel_arg_range_seq_init, sel_arg_range_seq_next, 0, 0};
+ RANGE_SEQ_IF seq_if=
+ {NULL, sel_arg_range_seq_init, sel_arg_range_seq_next, 0, 0};
handler *file= param->table->file;
ha_rows rows= HA_POS_ERROR;
uint keynr= param->real_keynr[idx];
@@ -11714,7 +12061,7 @@ ha_rows check_quick_select(PARAM *param, uint idx, bool index_only,
param->max_key_parts=0;
seq.is_ror_scan= TRUE;
- if (file->index_flags(keynr, 0, TRUE) & HA_KEY_SCAN_NOT_ROR)
+ if (param->table->key_info[keynr].index_flags & HA_KEY_SCAN_NOT_ROR)
seq.is_ror_scan= FALSE;
*mrr_flags= param->force_default_mrr? HA_MRR_USE_DEFAULT_IMPL: 0;
@@ -11727,9 +12074,9 @@ ha_rows check_quick_select(PARAM *param, uint idx, bool index_only,
// Passing wrong second argument to index_flags() makes no difference for
// most storage engines but might be an issue for MyRocks with certain
// datatypes.
+ // Note that HA_KEYREAD_ONLY implies that this is not a clustered index
if (index_only &&
- (file->index_flags(keynr, param->max_key_parts, 1) & HA_KEYREAD_ONLY) &&
- !(file->index_flags(keynr, param->max_key_parts, 1) & HA_CLUSTERED_INDEX))
+ (file->index_flags(keynr, param->max_key_parts, 1) & HA_KEYREAD_ONLY))
*mrr_flags |= HA_MRR_INDEX_ONLY;
if (param->thd->lex->sql_command != SQLCOM_SELECT)
@@ -11740,39 +12087,50 @@ ha_rows check_quick_select(PARAM *param, uint idx, bool index_only,
Skip materialized derived table/view result table from MRR check as
they aren't contain any data yet.
*/
- if (param->table->pos_in_table_list->is_non_derived())
+ if (!param->table->pos_in_table_list->is_materialized_derived())
rows= file->multi_range_read_info_const(keynr, &seq_if, (void*)&seq, 0,
- bufsize, mrr_flags, cost);
+ bufsize, mrr_flags, limit, cost);
param->quick_rows[keynr]= rows;
if (rows != HA_POS_ERROR)
{
ha_rows table_records= param->table->stat_records();
if (rows > table_records)
{
+ ha_rows diff= rows - table_records;
/*
For any index the total number of records within all ranges
cannot be be bigger than the number of records in the table.
This check is needed as sometimes that table statistics or range
estimates may be slightly out of sync.
+
+ We cannot do this easily in the above multi_range_read_info_const()
+ call as then we would need to have similar adjustmends done
+ in the partitioning engine.
*/
- rows= table_records;
- set_if_bigger(rows, 1);
+ rows= MY_MAX(table_records, 1);
param->quick_rows[keynr]= rows;
+ /* Adjust costs */
+ cost->comp_cost-= file->WHERE_COST * diff;
}
param->possible_keys.set_bit(keynr);
if (update_tbl_stats)
{
+ TABLE::OPT_RANGE *range= param->table->opt_range + keynr;
param->table->opt_range_keys.set_bit(keynr);
- param->table->opt_range[keynr].key_parts= param->max_key_parts;
- param->table->opt_range[keynr].ranges= param->range_count;
- param->table->opt_range_condition_rows=
- MY_MIN(param->table->opt_range_condition_rows, rows);
- param->table->opt_range[keynr].rows= rows;
- param->table->opt_range[keynr].cost= cost->total_cost();
- if (param->table->file->is_clustering_key(keynr))
- param->table->opt_range[keynr].index_only_cost= 0;
- else
- param->table->opt_range[keynr].index_only_cost= cost->index_only_cost();
+ range->key_parts= param->max_key_parts;
+ range->ranges= param->range_count;
+ param->table->set_opt_range_condition_rows(rows);
+ range->selectivity= (rows ?
+ (param->table->opt_range_condition_rows /
+ rows) :
+ 1.0); // ok as rows is 0
+ range->rows= rows;
+ range->cost= *cost;
+ range->max_index_blocks= file->index_blocks(keynr, range->ranges,
+ rows);
+ range->max_row_blocks= MY_MIN(file->row_blocks(), rows * file->stats.block_size / IO_SIZE);
+ range->first_key_part_has_only_one_value=
+ check_if_first_key_part_has_only_one_value(tree);
}
}
@@ -11805,6 +12163,8 @@ ha_rows check_quick_select(PARAM *param, uint idx, bool index_only,
*is_ror_scan= seq.is_ror_scan;
DBUG_PRINT("exit", ("Records: %lu", (ulong) rows));
+ DBUG_ASSERT(rows == HA_POS_ERROR ||
+ rows <= MY_MAX(param->table->stat_records(), 1));
DBUG_RETURN(rows); //psergey-merge:todo: maintain first_null_comp.
}
@@ -13789,6 +14149,12 @@ cost_group_min_max(TABLE* table, KEY *index_info, uint used_key_parts,
The group-by list is a permutation of the select attributes, according
to their order in the index.
+ EXAMPLES of handled queries
+ select max(keypart2) from t1 group by keypart1
+ select max(keypart2) from t1 where keypart2 <= const group by keypart1
+ select distinct keypart1 from table;
+ select count(distinct keypart1) from table;
+
TODO
- What happens if the query groups by the MIN/MAX field, and there is no
other field as in: "select MY_MIN(a) from t1 group by a" ?
@@ -13842,11 +14208,13 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
cause= "not single_table";
else if (join->select_lex->olap == ROLLUP_TYPE) /* Check (B3) for ROLLUP */
cause= "rollup";
- else if (table->s->keys == 0) /* There are no indexes to use. */
+ else if (table->s->keys == 0) // There are no indexes to use.
cause= "no index";
else if (join->conds && join->conds->used_tables()
- & OUTER_REF_TABLE_BIT) /* Cannot execute with correlated conditions. */
+ & OUTER_REF_TABLE_BIT) // Cannot execute with correlated conditions.
cause= "correlated conditions";
+ else if (table->stat_records() == 0)
+ cause= "Empty table"; // Exit now, records=0 messes up cost computations
if (cause)
{
@@ -13860,7 +14228,8 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
(!join->select_distinct) &&
!is_agg_distinct)
{
- trace_group.add("chosen", false).add("cause","no group by or distinct");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.add("chosen", false).add("cause","no group by or distinct");
DBUG_RETURN(NULL);
}
/* Analyze the query in more detail. */
@@ -13885,8 +14254,10 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
continue;
else
{
- trace_group.add("chosen", false)
- .add("cause", "not applicable aggregate function");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("chosen", false).
+ add("cause", "not applicable aggregate function");
DBUG_RETURN(NULL);
}
@@ -13898,15 +14269,19 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
min_max_arg_item= (Item_field*) expr;
else if (! min_max_arg_item->eq(expr, 1))
{
- trace_group.add("chosen", false)
- .add("cause", "arguments different in min max function");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("chosen", false).
+ add("cause", "arguments different in min max function");
DBUG_RETURN(NULL);
}
}
else
{
- trace_group.add("chosen", false)
- .add("cause", "no field item in min max function");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("chosen", false).
+ add("cause", "no field item in min max function");
DBUG_RETURN(NULL);
}
}
@@ -13915,8 +14290,10 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
/* Check (SA7). */
if (is_agg_distinct && (have_max || have_min))
{
- trace_group.add("chosen", false)
- .add("cause", "have both agg distinct and min max");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("chosen", false).
+ add("cause", "have both agg distinct and min max");
DBUG_RETURN(NULL);
}
@@ -13928,8 +14305,10 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
{
if (item->real_item()->type() != Item::FIELD_ITEM)
{
- trace_group.add("chosen", false)
- .add("cause", "distinct field is expression");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("chosen", false).
+ add("cause", "distinct field is expression");
DBUG_RETURN(NULL);
}
}
@@ -13941,8 +14320,10 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
{
if ((*tmp_group->item)->real_item()->type() != Item::FIELD_ITEM)
{
- trace_group.add("chosen", false)
- .add("cause", "group field is expression");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("chosen", false).
+ add("cause", "group field is expression");
DBUG_RETURN(NULL);
}
elements_in_group++;
@@ -14037,7 +14418,8 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
does not qualify as covering in our case. If this is the case, below
we check that all query fields are indeed covered by 'cur_index'.
*/
- if (cur_index_info->user_defined_key_parts == table->actual_n_key_parts(cur_index_info)
+ if (cur_index_info->user_defined_key_parts ==
+ table->actual_n_key_parts(cur_index_info)
&& pk < MAX_KEY && cur_index != pk &&
(table->file->ha_table_flags() & HA_PRIMARY_KEY_IN_READ_INDEX))
{
@@ -14080,7 +14462,8 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
first Item? If so, then why? What is the array for?
*/
/* Above we already checked that all group items are fields. */
- DBUG_ASSERT((*tmp_group->item)->real_item()->type() == Item::FIELD_ITEM);
+ DBUG_ASSERT((*tmp_group->item)->real_item()->type() ==
+ Item::FIELD_ITEM);
Item_field *group_field= (Item_field *) (*tmp_group->item)->real_item();
if (group_field->field->eq(cur_part->field))
{
@@ -14309,6 +14692,17 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
if ((cur_index_tree= tree->keys[cur_param_idx]))
{
cur_quick_prefix_records= param->quick_rows[cur_index];
+ if (!cur_quick_prefix_records)
+ {
+ /*
+ Non-constant table has a range with rows=0. Can happen e.g. for
+ Merge tables. Regular range access will be just as good as loose
+ scan.
+ */
+ if (unlikely(trace_idx.trace_started()))
+ trace_idx.add("aborting_search", "range with rows=0");
+ DBUG_RETURN(NULL);
+ }
if (unlikely(cur_index_tree && thd->trace_started()))
{
Json_writer_array trace_range(thd, "ranges");
@@ -14368,8 +14762,10 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
Field::itMBR : Field::itRAW,
&has_min_max_fld, &has_other_fld))
{
- trace_group.add("usable", false)
- .add("cause", "unsupported predicate on agg attribute");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("usable", false).
+ add("cause", "unsupported predicate on agg attribute");
DBUG_RETURN(NULL);
}
@@ -14378,8 +14774,10 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
*/
if (is_agg_distinct && table->file->is_clustering_key(index))
{
- trace_group.add("usable", false)
- .add("cause", "index is clustered");
+ if (unlikely(trace_group.trace_started()))
+ trace_group.
+ add("usable", false).
+ add("cause", "index is clustered");
DBUG_RETURN(NULL);
}
@@ -14400,11 +14798,31 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time)
read_plan->read_cost= best_read_cost;
read_plan->records= best_records;
- if (read_time < best_read_cost && is_agg_distinct)
+ if (is_agg_distinct)
{
- trace_group.add("index_scan", true);
- read_plan->read_cost= 0;
- read_plan->use_index_scan();
+ double best_cost, duplicate_removal_cost;
+ ulonglong records;
+ handler *file= table->file;
+
+ /* Calculate cost of distinct scan on index */
+ if (best_index_tree && read_plan->quick_prefix_records)
+ records= read_plan->quick_prefix_records;
+ else
+ records= table->stat_records();
+
+ best_cost= file->cost(file->ha_key_scan_time(index, records));
+ /* We only have 'best_records' left after duplication elimination */
+ best_cost+= best_records * WHERE_COST_THD(thd);
+ duplicate_removal_cost= (DUPLICATE_REMOVAL_COST * records);
+
+ if (best_cost < read_plan->read_cost + duplicate_removal_cost)
+ {
+ read_plan->read_cost= best_cost;
+ read_plan->use_index_scan();
+ trace_group.
+ add("scan_cost", best_cost).
+ add("index_scan", true);
+ }
}
DBUG_PRINT("info",
@@ -14889,13 +15307,42 @@ get_field_keypart(KEY *index, Field *field)
have_min [in] True if there is a MIN function
have_max [in] True if there is a MAX function
read_cost [out] The cost to retrieve rows via this quick select
- records [out] The number of rows retrieved
+ out_records [out] The number of rows retrieved
DESCRIPTION
This method computes the access cost of a TRP_GROUP_MIN_MAX instance and
the number of rows returned.
+ The used algorithm used for finding the rows is:
+
+ For each range (if no ranges, the range is the whole table)
+ Do an index search for the start of the range
+ As long as the found key is withing the range
+ If the found row matches the where clause, use the row otherwise skip it
+ Scan index for next group, jumping over all identical keys, done in
+ QUICK_GROUP_MIN_MAX_SELECT::next_prefix
+ If the engine does not support a native next_prefix, we will
+ either scan the index for the next value or do a new index dive
+ with 'find next bigger key'.
+
+ When using MIN() and MAX() in the query, the calls to the storage engine
+ are as follows for each group:
+ Assuming kp1 in ('abc','def','ghi)' and kp2 between 1000 and 2000
+
+ read_key('abc', HA_READ_KEY_OR_NEXT)
+ In case of MIN() we do:
+ read_key('abc,:'1000', HA_READ_KEY_OR_NEXT)
+ In case of MAX() we do
+ read_key('abc,:'2000', HA_READ_PREFIX_LAST_OR_PREV)
+ In the following code we will assume that the MIN key will be in
+ the same block as the first key read.
+ (We should try to optimize away the extra call for MAX() at some
+ point).
+
NOTES
+ See get_best_group_min_max() for which kind of queries this function
+ will be called.
+
The cost computation distinguishes several cases:
1) No equality predicates over non-group attributes (thus no key_infix).
If groups are bigger than blocks on the average, then we assume that it
@@ -14937,104 +15384,108 @@ void cost_group_min_max(TABLE* table, KEY *index_info, uint used_key_parts,
uint group_key_parts, SEL_TREE *range_tree,
SEL_ARG *index_tree, ha_rows quick_prefix_records,
bool have_min, bool have_max,
- double *read_cost, ha_rows *records)
+ double *read_cost, ha_rows *out_records)
{
- ha_rows table_records;
+ uint key_length;
+ ha_rows records;
ha_rows num_groups;
ha_rows num_blocks;
- uint keys_per_block;
ha_rows keys_per_group;
- ha_rows keys_per_subgroup; /* Average number of keys in sub-groups */
- /* formed by a key infix. */
- double p_overlap; /* Probability that a sub-group overlaps two blocks. */
double quick_prefix_selectivity;
- double io_cost;
+ ulonglong io_cost;
+ handler *file= table->file;
DBUG_ENTER("cost_group_min_max");
- table_records= table->stat_records();
- /* Assume block is 75 % full */
- keys_per_block= (uint) (table->file->stats.block_size * 3 / 4 /
- (index_info->key_length + table->file->ref_length)
- + 1);
- num_blocks= (ha_rows)(table_records / keys_per_block) + 1;
+ /* Same code as in handler::key_read_time() */
+ records= table->stat_records();
+ key_length= (index_info->key_length + file->ref_length);
/* Compute the number of keys in a group. */
if (!group_key_parts)
{
/* Summary over the whole table */
- keys_per_group= table_records;
+ keys_per_group= MY_MAX(records,1);
}
else
{
keys_per_group= (ha_rows) index_info->actual_rec_per_key(group_key_parts -
1);
+ if (keys_per_group == 0) /* If there is no statistics try to guess */
+ {
+ /* each group contains 10% of all records */
+ keys_per_group= (records / 10) + 1;
+ }
}
-
- if (keys_per_group == 0) /* If there is no statistics try to guess */
- /* each group contains 10% of all records */
- keys_per_group= (table_records / 10) + 1;
- num_groups= (table_records / keys_per_group) + 1;
+ if (keys_per_group > 1)
+ num_groups= (records / keys_per_group) + 1;
+ else
+ num_groups= records;
/* Apply the selectivity of the quick select for group prefixes. */
if (range_tree && (quick_prefix_records != HA_POS_ERROR))
{
+ int groups;
quick_prefix_selectivity= (double) quick_prefix_records /
- (double) table_records;
+ (double) records;
num_groups= (ha_rows) rint(num_groups * quick_prefix_selectivity);
- set_if_bigger(num_groups, 1);
- }
+ records= quick_prefix_records;
+
+ /*
+ Try to handle cases like
+ WHERE a in (1,2,3) GROUP BY a
- if (used_key_parts > group_key_parts)
- { /*
- Compute the probability that two ends of a subgroup are inside
- different blocks.
+ If all ranges are eq_ranges for the group_key_parts we can use
+ this as the number of groups.
*/
- keys_per_subgroup= (ha_rows) index_info->actual_rec_per_key(used_key_parts - 1);
- if (keys_per_subgroup >= keys_per_block) /* If a subgroup is bigger than */
- p_overlap= 1.0; /* a block, it will overlap at least two blocks. */
+ groups= index_tree->number_of_eq_groups(group_key_parts);
+ if (groups > 0)
+ num_groups= groups;
else
{
- double blocks_per_group= (double) num_blocks / (double) num_groups;
- p_overlap= (blocks_per_group * (keys_per_subgroup - 1)) / keys_per_group;
- p_overlap= MY_MIN(p_overlap, 1.0);
+ /*
+ Expect at least as many groups as there is ranges in the index
+
+ This is mostly relevant for queries with few records, which is
+ something we have a lot of in our test suites.
+ In theory it is possible to scan the index_tree and for cases
+ where all ranges are eq ranges, we could calculate the exact number
+ of groups. This is probably an overkill so for now we estimate
+ the lower level of number of groups by the range elements in the
+ tree.
+ */
+ set_if_bigger(num_groups, MY_MAX(index_tree->elements, 1));
}
- io_cost= (double) MY_MIN(num_groups * (1 + p_overlap), num_blocks);
+ /* There cannot be more groups than matched records */
+ set_if_smaller(num_groups, quick_prefix_records);
}
- else
- io_cost= (keys_per_group > keys_per_block) ?
- (have_min && have_max) ? (double) (num_groups + 1) :
- (double) num_groups :
- (double) num_blocks;
+ DBUG_ASSERT(num_groups <= records);
+
+ /* Calculate the number of blocks we will touch for the table or range scan */
+ num_blocks= (records * key_length / INDEX_BLOCK_FILL_FACTOR_DIV *
+ INDEX_BLOCK_FILL_FACTOR_MUL) / file->stats.block_size + 1;
+
+ io_cost= (have_max) ? num_groups * 2 : num_groups;
+ set_if_smaller(io_cost, num_blocks);
/*
CPU cost must be comparable to that of an index scan as computed
in SQL_SELECT::test_quick_select(). When the groups are small,
e.g. for a unique index, using index scan will be cheaper since it
reads the next record without having to re-position to it on every
- group. To make the CPU cost reflect this, we estimate the CPU cost
- as the sum of:
- 1. Cost for evaluating the condition (similarly as for index scan).
- 2. Cost for navigating the index structure (assuming a b-tree).
- Note: We only add the cost for one comparision per block. For a
- b-tree the number of comparisons will be larger.
- TODO: This cost should be provided by the storage engine.
+ group.
*/
- const double tree_traversal_cost=
- ceil(log(static_cast<double>(table_records))/
- log(static_cast<double>(keys_per_block))) *
- 1/(2*TIME_FOR_COMPARE);
-
- const double cpu_cost= num_groups *
- (tree_traversal_cost + 1/TIME_FOR_COMPARE_IDX);
-
- *read_cost= io_cost + cpu_cost;
- *records= num_groups;
+ uint keyno= (uint) (index_info - table->key_info);
+ *read_cost= file->cost(file->ha_keyread_and_compare_time(keyno,
+ (ulong) num_groups,
+ num_groups,
+ io_cost));
+ *out_records= num_groups;
DBUG_PRINT("info",
- ("table rows: %lu keys/block: %u keys/group: %lu "
+ ("rows: %lu keys/group: %lu "
"result rows: %lu blocks: %lu",
- (ulong) table_records, keys_per_block, (ulong) keys_per_group,
- (ulong) *records, (ulong) num_blocks));
+ (ulong) records, (ulong) keys_per_group,
+ (ulong) *out_records, (ulong) num_blocks));
DBUG_VOID_RETURN;
}
@@ -15074,7 +15525,8 @@ TRP_GROUP_MIN_MAX::make_quick(PARAM *param, bool retrieve_full_rows,
group_prefix_len, group_key_parts,
used_key_parts, index_info, index,
read_cost, records, key_infix_len,
- key_infix, parent_alloc, is_index_scan);
+ key_infix, parent_alloc,
+ is_index_scan);
if (!quick)
DBUG_RETURN(NULL);
@@ -15501,7 +15953,8 @@ int QUICK_GROUP_MIN_MAX_SELECT::reset(void)
DBUG_ENTER("QUICK_GROUP_MIN_MAX_SELECT::reset");
seen_first_key= FALSE;
- head->file->ha_start_keyread(index); /* We need only the key attributes */
+ if (!head->file->keyread_enabled())
+ head->file->ha_start_keyread(index); /* We need only the key attributes */
if ((result= file->ha_index_init(index,1)))
{
diff --git a/sql/opt_range.h b/sql/opt_range.h
index 25bb9f0a..59a01e5b 100644
--- a/sql/opt_range.h
+++ b/sql/opt_range.h
@@ -302,6 +302,7 @@ class SEL_ARG :public Sql_alloc
{
static int sel_cmp(Field *field, uchar *a, uchar *b, uint8 a_flag,
uint8 b_flag);
+ bool min_max_are_equal() const;
public:
uint8 min_flag,max_flag,maybe_flag;
uint8 part; // Which key part
@@ -401,6 +402,7 @@ public:
return false;
return true;
}
+ int number_of_eq_groups(uint group_key_parts) const;
inline void merge_flags(SEL_ARG *arg) { maybe_flag|=arg->maybe_flag; }
inline void maybe_smaller() { maybe_flag=1; }
/* Return true iff it's a single-point null interval */
@@ -1114,6 +1116,13 @@ public:
*/
uint used_key_parts;
+ /*
+ Set to 1 if we used group by optimization to calculate number of rows
+ in the result, stored in table->opt_range_condition_rows.
+ This is only used for asserts.
+ */
+ bool group_by_optimization_used;
+
QUICK_SELECT_I();
virtual ~QUICK_SELECT_I() = default;;
@@ -1875,12 +1884,13 @@ class SQL_SELECT :public Sql_alloc {
In other cases, NULL.
*/
Item *pre_idx_push_select_cond;
- TABLE *head;
- IO_CACHE file; // Positions to used records
- ha_rows records; // Records in use if read from file
- double read_time; // Time to read rows
- key_map quick_keys; // Possible quick keys
- key_map needed_reg; // Possible quick keys after prev tables.
+ TABLE *head;
+ IO_CACHE file; // Positions to used records
+ ha_rows records; // Records in use if read from file
+ ALL_READ_COST read_cost; // Cost of reading rows
+ double read_time; // Time to read rows (from read_cost)
+ key_map quick_keys; // Possible quick keys
+ key_map needed_reg; // Possible quick keys after prev tables.
table_map const_tables,read_tables;
/* See PARAM::possible_keys */
key_map possible_keys;
diff --git a/sql/opt_rewrite_date_cmp.cc b/sql/opt_rewrite_date_cmp.cc
new file mode 100644
index 00000000..e115c94d
--- /dev/null
+++ b/sql/opt_rewrite_date_cmp.cc
@@ -0,0 +1,337 @@
+/*
+ Copyright (c) 2023, MariaDB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
+
+
+/**
+ @file
+
+ @brief
+ Rewrites that make non-sargable date[time] comparisons sargable.
+*/
+
+#ifdef USE_PRAGMA_IMPLEMENTATION
+#pragma implementation // gcc: Class implementation
+#endif
+
+#include "mariadb.h"
+#include "sql_priv.h"
+#include "my_json_writer.h"
+#include "opt_rewrite_date_cmp.h"
+
+Date_cmp_func_rewriter::Date_cmp_func_rewriter(THD* thd,
+ Item_func_eq *item_func) :
+ thd(thd),
+ result(item_func)
+{
+ if (!check_cond_match_and_prepare(item_func))
+ return;
+
+ /*
+ This is an equality. Do a rewrite like this:
+ "YEAR(col) = val" -> col BETWEEN year_start(val) AND year_end(val)
+ "DATE(col) = val" -> col BETWEEN day_start(val) AND day_end(val)
+ */
+ Item *start_bound, *end_bound;
+ if (!(start_bound= create_start_bound()) || !(end_bound= create_end_bound()))
+ return;
+ Item *new_cond;
+ if (!(new_cond= new (thd->mem_root) Item_func_between(thd, field_ref,
+ start_bound, end_bound)))
+ return;
+ if (!new_cond->fix_fields(thd, &new_cond))
+ result= new_cond;
+}
+
+
+Date_cmp_func_rewriter::Date_cmp_func_rewriter(THD* thd,
+ Item_func_ge *item_func) :
+ thd(thd),
+ result(item_func)
+{
+ if (!check_cond_match_and_prepare(item_func))
+ return;
+ rewrite_le_gt_lt_ge();
+}
+
+
+Date_cmp_func_rewriter::Date_cmp_func_rewriter(THD* thd,
+ Item_func_lt *item_func) :
+ thd(thd),
+ result(item_func)
+{
+ if (!check_cond_match_and_prepare(item_func))
+ return;
+ rewrite_le_gt_lt_ge();
+}
+
+
+Date_cmp_func_rewriter::Date_cmp_func_rewriter(THD* thd,
+ Item_func_gt *item_func) :
+ thd(thd),
+ result(item_func)
+{
+ if (!check_cond_match_and_prepare(item_func))
+ return;
+ rewrite_le_gt_lt_ge();
+}
+
+
+Date_cmp_func_rewriter::Date_cmp_func_rewriter(THD* thd,
+ Item_func_le*item_func) :
+ thd(thd),
+ result(item_func)
+{
+ if (!check_cond_match_and_prepare(item_func))
+ return;
+ rewrite_le_gt_lt_ge();
+}
+
+
+bool Date_cmp_func_rewriter::check_cond_match_and_prepare(
+ Item_bool_rowready_func2 *item_func)
+{
+ if (thd->lex->is_ps_or_view_context_analysis())
+ {
+ DBUG_ASSERT(0);
+ return false;
+ }
+
+ Item **args= item_func->arguments();
+ rewrite_func_type= item_func->functype();
+ bool condition_matches= false;
+ const Type_handler *comparison_type= item_func->get_comparator()->
+ compare_type_handler();
+
+ /*
+ Check if this is "YEAR(indexed_col) CMP const_item" or
+ "DATE(indexed_col) CMP const_item"
+ */
+ if ((field_ref= is_date_rounded_field(args[0], comparison_type,
+ &argument_func_type)) &&
+ args[1]->basic_const_item())
+ {
+ const_arg_value= args[1];
+ condition_matches= true;
+ }
+ else
+ /*
+ Check if this is "const_item CMP YEAR(indexed_col)" or
+ "const_item CMP DATE(indexed_col)"
+ */
+ if ((field_ref= is_date_rounded_field(args[1], comparison_type,
+ &argument_func_type)) &&
+ args[0]->basic_const_item())
+ {
+ /*
+ Ok, the condition has form like "const<YEAR(col)"/"const<DATE(col)".
+ Turn it around to be "YEAR(col)>const"/"DATE(col)>const"
+ */
+ const_arg_value= args[0];
+
+ rewrite_func_type= item_func->rev_functype();
+ condition_matches= true;
+ }
+ return condition_matches;
+}
+
+/*
+ Check if the passed item is YEAR(key_col) or DATE(key_col).
+
+ Also
+ - key_col must be covered by an index usable by the current query
+ - key_col must have a DATE[TIME] or TIMESTAMP type
+ - The value of the YEAR(..) or DATE(..) function must be compared using an a
+ appropriate comparison_type.
+
+ @param item IN Item to check
+ @param comparison_type IN Which datatype is used to compare the item value
+ @param out_func_type OUT Function (is it YEAR or DATE)
+
+ @return
+ key_col if the check suceeded
+ NULL otherwise
+*/
+Item_field *Date_cmp_func_rewriter::is_date_rounded_field(Item* item,
+ const Type_handler *comparison_type,
+ Item_func::Functype *out_func_type) const
+{
+ if (item->type() != Item::FUNC_ITEM)
+ return nullptr;
+
+ Item_func::Functype func_type= ((Item_func*)item)->functype();
+ bool function_ok= false;
+ switch (func_type) {
+ case Item_func::YEAR_FUNC:
+ // The value of YEAR(x) must be compared as integer
+ if (comparison_type == &type_handler_slonglong)
+ function_ok= true;
+ break;
+ case Item_func::DATE_FUNC:
+ // The value of DATE(x) must be compared as dates.
+ if (comparison_type == &type_handler_newdate)
+ function_ok= true;
+ break;
+ default:
+ ;// do nothing
+ }
+
+ if (function_ok)
+ {
+ Item* arg= ((Item_func*)item)->arguments()[0];
+ // Check if the argument is a column that's covered by some index
+ if (arg->real_item()->type() == Item::FIELD_ITEM)
+ {
+ Item_field *item_field= (Item_field*)(arg->real_item());
+ enum_field_types field_type= item_field->field_type();
+ if ((field_type == MYSQL_TYPE_DATE ||
+ field_type == MYSQL_TYPE_DATETIME ||
+ field_type == MYSQL_TYPE_NEWDATE ||
+ field_type == MYSQL_TYPE_TIMESTAMP) &&
+ item_field->field->flags & PART_KEY_FLAG)
+ {
+ *out_func_type= func_type;
+ return item_field;
+ }
+ }
+ }
+ return nullptr;
+}
+
+
+void Date_cmp_func_rewriter::rewrite_le_gt_lt_ge()
+{
+ if (rewrite_func_type == Item_func::LE_FUNC ||
+ rewrite_func_type == Item_func::GT_FUNC)
+ {
+ const_arg_value= create_end_bound();
+ }
+ else if (rewrite_func_type == Item_func::LT_FUNC ||
+ rewrite_func_type == Item_func::GE_FUNC)
+ {
+ const_arg_value= create_start_bound();
+ }
+ if (!const_arg_value)
+ return;
+ Item *repl= create_cmp_func(rewrite_func_type, field_ref, const_arg_value);
+ if (!repl)
+ return;
+ if (!repl->fix_fields(thd, &repl))
+ result= repl;
+}
+
+
+Item *Date_cmp_func_rewriter::create_bound(uint month, uint day,
+ const TimeOfDay6 &td) const
+{
+ /*
+ We could always create Item_datetime with Item_datetime::decimals==6 here.
+ But this would not be efficient in some cases.
+
+ Let's create an Item_datetime with Item_datetime::decimals
+ equal to field_ref->decimals, so if:
+
+ (1) the original statement:
+
+ SELECT ts3 FROM t1 WHERE DATE(ts3) <= '2024-01-23';
+
+ gets rewritten to:
+
+ (2) a statement with DATETIME comparison
+ with an Item_datetime on the right side:
+
+ SELECT ts3 FROM t1
+ WHERE ts3 <= '2024-01-23 23:59.59.999'; -- Item_datetime
+
+ and then gets further rewritten with help of convert_item_for_comparison()
+ to:
+
+ (3) a statement with TIMESTAMP comparison
+ with an Item_timestamp_literal on the right side
+
+ SELECT ts3 FROM t1
+ WHERE ts3 <= '2024-01-23 23:59:59.999'; -- Item_timestamp_literal
+
+ then we have an efficent statement calling
+ Type_handler_timestamp_common::cmp_native() for comparison,
+ which has a faster execution path when both sides have equal
+ fractional precision.
+ */
+ switch (argument_func_type) {
+ case Item_func::YEAR_FUNC:
+ {
+ longlong year= const_arg_value->val_int();
+ const Datetime bound(static_cast<unsigned int>(year), month, day, td);
+ if (!bound.is_valid_datetime())
+ return nullptr; // "year" was out of the supported range
+ return new (thd->mem_root) Item_datetime(thd, bound, field_ref->decimals);
+ }
+ case Item_func::DATE_FUNC:
+ if (field_ref->field->type() == MYSQL_TYPE_DATE)
+ return const_arg_value;
+ else
+ {
+ const Datetime const_arg_dt(current_thd, const_arg_value);
+ if (!const_arg_dt.is_valid_datetime())
+ return nullptr; // SQL NULL datetime
+ const Datetime bound(const_arg_dt.time_of_day(td));
+ return new (thd->mem_root) Item_datetime(thd, bound, field_ref->decimals);
+ }
+ default:
+ DBUG_ASSERT(0);
+ break;
+ }
+ return nullptr;
+}
+
+
+/*
+ Create an Item for "arg1 $CMP arg2", where $CMP is specified by func_type.
+*/
+Item *Date_cmp_func_rewriter::create_cmp_func(Item_func::Functype func_type,
+ Item *arg1, Item *arg2)
+{
+ Item *res;
+ switch (func_type) {
+ case Item_func::GE_FUNC:
+ res= new (thd->mem_root) Item_func_ge(thd, arg1, arg2);
+ break;
+ case Item_func::GT_FUNC:
+ res= new (thd->mem_root) Item_func_gt(thd, arg1, arg2);
+ break;
+ case Item_func::LE_FUNC:
+ res= new (thd->mem_root) Item_func_le(thd, arg1, arg2);
+ break;
+ case Item_func::LT_FUNC:
+ res= new (thd->mem_root) Item_func_lt(thd, arg1, arg2);
+ break;
+ default:
+ DBUG_ASSERT(0);
+ res= NULL;
+ }
+ return res;
+}
+
+void trace_date_item_rewrite(THD *thd, Item *new_item, Item *old_item)
+{
+ if (new_item != old_item)
+ {
+ Json_writer_object trace_wrapper(thd);
+ trace_wrapper.add("transformation", "date_conds_into_sargable")
+ .add("before", old_item)
+ .add("after", new_item);
+ }
+}
+
diff --git a/sql/opt_rewrite_date_cmp.h b/sql/opt_rewrite_date_cmp.h
new file mode 100644
index 00000000..6c2e499f
--- /dev/null
+++ b/sql/opt_rewrite_date_cmp.h
@@ -0,0 +1,118 @@
+/*
+ Copyright (c) 2023, MariaDB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
+
+#ifndef OPT_REWRITE_DATE_CMP_INCLUDED
+#define OPT_REWRITE_DATE_CMP_INCLUDED
+
+class Item_func_eq;
+class Item_func_ge;
+class Item_func_gt;
+class Item_func_le;
+class Item_func_lt;
+class Item_bool_rowready_func2;
+
+/*
+ @brief Class responsible for rewriting datetime comparison condition.
+ It rewrites non-sargable conditions into sargable.
+
+ @detail
+ The intent of this class is to do equivalent rewrites as follows:
+
+ YEAR(col) <= val -> col <= year_end(val)
+ YEAR(col) < val -> col < year_start(val)
+ YEAR(col) >= val -> col >= year_start(val)
+ YEAR(col) > val -> col > year_end(val)
+ YEAR(col) = val -> col >= year_start(val) AND col<=year_end(val)
+
+ Also the same is done for comparisons with DATE(col):
+
+ DATE(col) <= val -> col <= day_end(val)
+
+ if col has a DATE type (not DATETIME), then the rewrite becomes:
+
+ DATE(col) <= val -> col <= val
+
+ @usage
+ Date_cmp_func_rewriter rwr(thd, item_func);
+ Item *new_item= rwr.get_rewrite_result();
+
+ Returned new_item points to an item that item_func was rewritten to.
+ new_item already has fixed fields (fix_fields() was called).
+ If no rewrite happened, new_item points to the initial item_func parameter
+
+ @todo
+ Also handle conditions in form "YEAR(date_col) BETWEEN 2014 AND 2017"
+ and "YEAR(col) = c1 AND MONTH(col) = c2"
+*/
+class Date_cmp_func_rewriter
+{
+public:
+ Date_cmp_func_rewriter(THD* thd, Item_func_eq *item_func);
+
+ Date_cmp_func_rewriter(THD* thd, Item_func_ge *item_func);
+
+ Date_cmp_func_rewriter(THD* thd, Item_func_gt *item_func);
+
+ Date_cmp_func_rewriter(THD* thd, Item_func_le *item_func);
+
+ Date_cmp_func_rewriter(THD* thd, Item_func_lt *item_func);
+
+ Item* get_rewrite_result() const { return result; }
+
+ Date_cmp_func_rewriter() = delete;
+ Date_cmp_func_rewriter(const Date_cmp_func_rewriter&) = delete;
+ Date_cmp_func_rewriter(Date_cmp_func_rewriter&&) = delete;
+
+private:
+ bool check_cond_match_and_prepare(Item_bool_rowready_func2 *item_func);
+ Item_field *is_date_rounded_field(Item* item,
+ const Type_handler *comparison_type,
+ Item_func::Functype *out_func_type) const;
+ void rewrite_le_gt_lt_ge();
+ Item *create_bound(uint month, uint day, const TimeOfDay6 &td) const;
+ Item *create_start_bound() const
+ {
+ return create_bound(1, 1, TimeOfDay6());
+ }
+ Item *create_end_bound() const
+ {
+ return create_bound(12, 31, TimeOfDay6::end_of_day(field_ref->decimals));
+ }
+ Item *create_cmp_func(Item_func::Functype func_type, Item *arg1, Item *arg2);
+
+ THD *thd= nullptr;
+ Item *const_arg_value= nullptr;
+ Item_func::Functype rewrite_func_type= Item_func::UNKNOWN_FUNC;
+ Item_func::Functype argument_func_type= Item_func::UNKNOWN_FUNC;
+ Item_field *field_ref= nullptr;
+ Item *result= nullptr;
+};
+
+
+void trace_date_item_rewrite(THD *thd,Item *new_item, Item *old_item);
+
+template<typename T>
+Item* do_date_conds_transformation(THD *thd, T *item)
+{
+ Date_cmp_func_rewriter rwr(thd, item);
+ /* If the rewrite failed for some reason, we get the original item */
+ Item *new_item= rwr.get_rewrite_result();
+ trace_date_item_rewrite(thd, new_item, item);
+ return new_item;
+}
+
+
+#endif
diff --git a/sql/opt_rewrite_remove_casefold.cc b/sql/opt_rewrite_remove_casefold.cc
new file mode 100644
index 00000000..bf45e1f0
--- /dev/null
+++ b/sql/opt_rewrite_remove_casefold.cc
@@ -0,0 +1,148 @@
+#ifdef USE_PRAGMA_IMPLEMENTATION
+#pragma implementation // gcc: Class implementation
+#endif
+
+#include "mariadb.h"
+#include "sql_priv.h"
+#include <m_ctype.h>
+#include "sql_partition.h"
+#include "sql_select.h"
+
+#include "opt_trace.h"
+
+/*
+ @brief
+ Check if passed item is "UCASE(table.colX)" where colX is either covered
+ by some index or is a part of partition expression.
+
+ @return
+ Argument of the UCASE if passed item matches
+ NULL otherwise.
+*/
+
+static Item* is_upper_key_col(Item *item)
+{
+ Item_func_ucase *item_func;
+ if ((item_func= dynamic_cast<Item_func_ucase*>(item)))
+ {
+ Item *arg= item_func->arguments()[0];
+ Item *arg_real= arg->real_item();
+ if (arg_real->type() == Item::FIELD_ITEM)
+ {
+ if (dynamic_cast<const Type_handler_longstr*>(arg_real->type_handler()))
+ {
+ Field *field= ((Item_field*)arg_real)->field;
+ bool appl= (field->flags & PART_KEY_FLAG);
+
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ partition_info *part_info;
+ if (!appl && ((part_info= field->table->part_info)))
+ {
+ appl= bitmap_is_set(&part_info->full_part_field_set,
+ field->field_index);
+ }
+#endif
+ if (appl)
+ {
+ /*
+ Make sure COERCIBILITY(UPPER(col))=COERCIBILITY(col)
+ */
+ DBUG_ASSERT(arg->collation.derivation ==
+ item_func->collation.derivation);
+
+ /* Return arg, not arg_real. Do not walk into Item_ref objects */
+ return arg;
+ }
+ }
+ }
+ }
+ return nullptr;
+}
+
+
+static void trace_upper_removal_rewrite(THD *thd, Item *old_item, Item *new_item)
+{
+ Json_writer_object trace_wrapper(thd);
+ Json_writer_object obj(thd, "sargable_casefold_removal");
+ obj.add("before", old_item)
+ .add("after", new_item);
+}
+
+
+/*
+ @brief
+ Rewrite UPPER(key_varchar_col) = expr into key_varchar_col=expr
+
+ @detail
+ UPPER() may occur on both sides of the equality.
+ UCASE() is a synonym of UPPER() so we handle it, too.
+*/
+
+Item* Item_func_eq::varchar_upper_cmp_transformer(THD *thd, uchar *arg)
+{
+ if (cmp.compare_type() == STRING_RESULT &&
+ cmp.compare_collation()->state & MY_CS_UPPER_EQUAL_AS_EQUAL)
+ {
+ Item *arg0= arguments()[0];
+ Item *arg1= arguments()[1];
+ bool do_rewrite= false;
+ Item *tmp;
+
+ // Try rewriting the left argument
+ if ((tmp= is_upper_key_col(arguments()[0])))
+ {
+ arg0= tmp;
+ do_rewrite= true;
+ }
+
+ // Try rewriting the right argument
+ if ((tmp= is_upper_key_col(arguments()[1])))
+ {
+ arg1=tmp;
+ do_rewrite= true;
+ }
+
+ if (do_rewrite)
+ {
+ Item *res= new (thd->mem_root) Item_func_eq(thd, arg0, arg1);
+ if (res && !res->fix_fields(thd, &res))
+ {
+ trace_upper_removal_rewrite(thd, this, res);
+ return res;
+ }
+ }
+ }
+ return this;
+}
+
+
+/*
+ @brief
+ Rewrite "UPPER(key_col) IN (const-list)" into "key_col IN (const-list)"
+*/
+
+Item* Item_func_in::varchar_upper_cmp_transformer(THD *thd, uchar *arg)
+{
+ if (arg_types_compatible &&
+ m_comparator.cmp_type() == STRING_RESULT &&
+ cmp_collation.collation->state & MY_CS_UPPER_EQUAL_AS_EQUAL &&
+ all_items_are_consts(args + 1, arg_count - 1))
+ {
+ Item *arg0= arguments()[0];
+ Item *tmp;
+ if ((tmp= is_upper_key_col(arg0)))
+ {
+ Item_func_in *cl= (Item_func_in*)build_clone(thd);
+ Item *res;
+ cl->arguments()[0]= tmp;
+ cl->walk(&Item::cleanup_excluding_const_fields_processor, 0, 0);
+ res= cl;
+ if (res->fix_fields(thd, &res))
+ return this;
+ trace_upper_removal_rewrite(thd, this, res);
+ return res;
+ }
+ }
+ return this;
+}
+
diff --git a/sql/opt_split.cc b/sql/opt_split.cc
index 8e2b7e12..9ae3eb47 100644
--- a/sql/opt_split.cc
+++ b/sql/opt_split.cc
@@ -229,6 +229,7 @@
#include "mariadb.h"
#include "sql_select.h"
#include "opt_trace.h"
+#include "optimizer_defaults.h"
/* Info on a splitting field */
struct SplM_field_info
@@ -286,10 +287,10 @@ public:
List<SplM_plan_info> plan_cache;
/* Cost of best execution plan for join when nothing is pushed */
double unsplit_cost;
+ /* Split operation cost (result form spl_postjoin_oper_cost()) */
+ double unsplit_oper_cost;
/* Cardinality of T when nothing is pushed */
double unsplit_card;
- /* Lastly evaluated execution plan for 'join' with pushed equalities */
- SplM_plan_info *last_plan;
double last_refills;
SplM_plan_info *find_plan(TABLE *table, uint key, uint parts);
@@ -665,7 +666,7 @@ add_ext_keyuse_for_splitting(Dynamic_array<KEYUSE_EXT> *ext_keyuses,
keyuse_ext.sj_pred_no= added_key_field->sj_pred_no;
keyuse_ext.validity_ref= 0;
keyuse_ext.needed_in_prefix= added_key_field->val->used_tables() &
- ~(OUTER_REF_TABLE_BIT | RAND_TABLE_BIT);
+ ~(OUTER_REF_TABLE_BIT | RAND_TABLE_BIT);
keyuse_ext.validity_var= false;
return ext_keyuses->push(keyuse_ext);
}
@@ -724,20 +725,28 @@ add_ext_keyuses_for_splitting_field(Dynamic_array<KEYUSE_EXT> *ext_keyuses,
/*
@brief
Cost of the post join operation used in specification of splittable table
+ This does not include the cost of creating the temporary table as this
+ operation can be executed many times for the same temporary table.
*/
static
double spl_postjoin_oper_cost(THD *thd, double join_record_count, uint rec_len)
{
double cost;
- cost= get_tmp_table_write_cost(thd, join_record_count,rec_len) *
- join_record_count; // cost to fill tmp table
- cost+= get_tmp_table_lookup_cost(thd, join_record_count,rec_len) *
- join_record_count; // cost to perform post join operation used here
- cost+= get_tmp_table_lookup_cost(thd, join_record_count, rec_len) +
- (join_record_count == 0 ? 0 :
- join_record_count * log2 (join_record_count)) *
- SORT_INDEX_CMP_COST; // cost to perform sorting
+ TMPTABLE_COSTS tmp_cost= get_tmp_table_costs(thd, join_record_count,
+ rec_len, 0, 1);
+ /* cost to fill tmp table */
+ cost= tmp_cost.write * join_record_count;
+ /* cost to perform post join operation used here */
+ cost+= tmp_cost.lookup * join_record_count;
+ /* cost to preform sorting */
+ /* QQQ
+ We should use cost_of_filesort() for computing sort.
+ Do we always preform sorting ? If not, this should be done conditionally
+ */
+ cost+= ((join_record_count == 0 ? 0 :
+ join_record_count * log2 (join_record_count)) *
+ SORT_INDEX_CMP_COST);
return cost;
}
@@ -769,7 +778,6 @@ void JOIN::add_keyuses_for_splitting()
size_t idx;
KEYUSE_EXT *keyuse_ext;
KEYUSE_EXT keyuse_ext_end;
- double oper_cost;
uint rec_len;
uint added_keyuse_count;
TABLE *table= select_lex->master_unit()->derived->table;
@@ -792,14 +800,20 @@ void JOIN::add_keyuses_for_splitting()
if (ext_keyuses_for_splitting->push(keyuse_ext_end))
goto err;
// psergey-todo: trace anything here?
- spl_opt_info->unsplit_card= join_record_count;
+ /*
+ Use the number of rows that was computed by
+ TABLE_LIST::fetch_number_of_rows():
+ */
+ spl_opt_info->unsplit_card=
+ rows2double(select_lex->master_unit()->derived->table->stat_records());
rec_len= table->s->rec_buff_length;
- oper_cost= spl_postjoin_oper_cost(thd, join_record_count, rec_len);
-
- spl_opt_info->unsplit_cost= best_positions[table_count-1].read_time +
- oper_cost;
+ spl_opt_info->unsplit_oper_cost= spl_postjoin_oper_cost(thd,
+ join_record_count,
+ rec_len);
+ spl_opt_info->unsplit_cost= (best_positions[table_count-1].read_time +
+ spl_opt_info->unsplit_oper_cost);
if (!(save_qep= new Join_plan_state(table_count + 1)))
goto err;
@@ -963,6 +977,7 @@ SplM_plan_info * JOIN_TAB::choose_best_splitting(uint idx,
uint best_key= 0;
uint best_key_parts= 0;
table_map best_param_tables= 0L;
+ bool chosen, already_printed;
Json_writer_object trace_obj(thd, "choose_best_splitting");
Json_writer_array trace_arr(thd, "considered_keys");
/*
@@ -1033,8 +1048,8 @@ SplM_plan_info * JOIN_TAB::choose_best_splitting(uint idx,
while (keyuse_ext->table == table);
}
trace_arr.end();
+ chosen= 0;
- spl_opt_info->last_plan= 0;
double refills= DBL_MAX;
table_map excluded_tables= remaining_tables | this->join->sjm_lookup_tables;
if (best_table)
@@ -1078,7 +1093,7 @@ SplM_plan_info * JOIN_TAB::choose_best_splitting(uint idx,
table_map all_table_map= (((table_map) 1) << join->table_count) - 1;
reset_validity_vars_for_keyuses(best_key_keyuse_ext_start, best_table,
best_key, excluded_tables, true);
- choose_plan(join, all_table_map & ~join->const_table_map);
+ choose_plan(join, all_table_map & ~join->const_table_map, 0);
wrapper.end();
/*
@@ -1111,64 +1126,74 @@ SplM_plan_info * JOIN_TAB::choose_best_splitting(uint idx,
spl_opt_info->unsplit_card : 1);
uint rec_len= table->s->rec_buff_length;
-
double split_card= spl_opt_info->unsplit_card * spl_plan->split_sel;
- double oper_cost= split_card *
- spl_postjoin_oper_cost(thd, split_card, rec_len);
- spl_plan->cost= join->best_positions[join->table_count-1].read_time +
- + oper_cost;
+ double oper_cost= (split_card *
+ spl_postjoin_oper_cost(thd, split_card, rec_len));
+ spl_plan->cost= (join->best_positions[join->table_count-1].read_time +
+ oper_cost);
+
+ chosen= (refills * spl_plan->cost + COST_EPS <
+ spl_opt_info->unsplit_cost);
+ if (unlikely(thd->trace_started()))
+ {
+ //psergey-merge:Json_writer_object wrapper(thd);
+ Json_writer_object find_trace(thd, "split_materialized");
+ find_trace.
+ add("table", best_table->alias.c_ptr()).
+ add("key", best_table->key_info[best_key].name).
+ add("org_cost",join->best_positions[join->table_count-1].read_time).
+ add("postjoin_cost", oper_cost).
+ add("one_splitting_cost", spl_plan->cost).
+ add("unsplit_postjoin_cost", spl_opt_info->unsplit_oper_cost).
+ add("unsplit_cost", spl_opt_info->unsplit_cost).
+ add("rows", split_card).
+ add("refills", refills).
+ add("total_splitting_cost", refills * spl_plan->cost).
+ add("chosen", chosen);
+ }
memcpy((char *) spl_plan->best_positions,
(char *) join->best_positions,
sizeof(POSITION) * join->table_count);
reset_validity_vars_for_keyuses(best_key_keyuse_ext_start, best_table,
best_key, excluded_tables, false);
+ already_printed= 1;
}
else
- trace_obj.add("cached_plan_found", 1);
-
- if (spl_plan)
{
- if (unlikely(thd->trace_started()))
- {
- trace_obj.
- add("lead_table", spl_plan->table->alias.ptr()).
- add("index", spl_plan->table->key_info[spl_plan->key].name).
- add("parts", spl_plan->parts).
- add("split_sel", spl_plan->split_sel).
- add("cost", spl_plan->cost).
- add("unsplit_cost", spl_opt_info->unsplit_cost).
- add("records", (ha_rows) (records * spl_plan->split_sel));
- }
-
- if (refills * spl_plan->cost < spl_opt_info->unsplit_cost - 0.01)
- {
- /*
- The best plan that employs splitting is cheaper than
- the plan without splitting
- */
- spl_opt_info->last_plan= spl_plan;
- spl_opt_info->last_refills= refills;
- trace_obj.add("chosen", true);
- }
- else
- trace_obj.add("chosen", false);
+ trace_obj.add("cached_plan_found", 1);
+ chosen= (refills * spl_plan->cost + COST_EPS <
+ spl_opt_info->unsplit_cost);
+ already_printed= 0;
}
}
/* Set the cost of the preferred materialization for this partial join */
- records= (ha_rows)spl_opt_info->unsplit_card;
- spl_plan= spl_opt_info->last_plan;
- if (spl_plan)
+ if (chosen)
{
+ /*
+ The best plan that employs splitting is cheaper than
+ the plan without splitting
+ */
startup_cost= spl_opt_info->last_refills * spl_plan->cost;
- records= (ha_rows) (records * spl_plan->split_sel);
+ records= (ha_rows) (spl_opt_info->unsplit_card * spl_plan->split_sel);
+ if (unlikely(thd->trace_started()) && ! already_printed)
+ {
+ Json_writer_object trace(thd, "split_materialized");
+ trace.
+ add("one_splitting_cost", spl_plan->cost).
+ add("total_splitting_cost", startup_cost).
+ add("rows", records);
+ }
}
else
{
- startup_cost= spl_opt_info->unsplit_cost;
- *spl_pd_boundary= 0;
+ /* Restore original values */
+ startup_cost= spl_opt_info->unsplit_cost;
+ records= (ha_rows) spl_opt_info->unsplit_card;
+ spl_plan= 0;
}
+
return spl_plan;
}
diff --git a/sql/opt_subselect.cc b/sql/opt_subselect.cc
index 50a14763..6d9b40cc 100644
--- a/sql/opt_subselect.cc
+++ b/sql/opt_subselect.cc
@@ -30,11 +30,14 @@
#include "sql_base.h"
#include "sql_const.h"
#include "sql_select.h"
+#include "sql_update.h" // class Sql_cmd_update
+#include "sql_delete.h" // class Sql_cmd_delete
#include "filesort.h"
#include "opt_subselect.h"
#include "sql_test.h"
#include <my_bit.h>
#include "opt_trace.h"
+#include "optimizer_defaults.h"
/*
This file contains optimizations for semi-join subqueries.
@@ -448,7 +451,8 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred);
static bool convert_subq_to_jtbm(JOIN *parent_join,
Item_in_subselect *subq_pred, bool *remove);
static TABLE_LIST *alloc_join_nest(THD *thd);
-static uint get_tmp_table_rec_length(Ref_ptr_array p_list, uint elements);
+static uint get_tmp_table_rec_length(Ref_ptr_array p_list, uint elements,
+ bool *blobs_used);
bool find_eq_ref_candidate(TABLE *table, table_map sj_inner_tables);
static SJ_MATERIALIZATION_INFO *
at_sjmat_pos(const JOIN *join, table_map remaining_tables, const JOIN_TAB *tab,
@@ -532,6 +536,48 @@ bool is_materialization_applicable(THD *thd, Item_in_subselect *in_subs,
return FALSE;
}
+/**
+ @brief Check whether an IN subquery must be excluded from conversion to SJ
+
+ @param thd global context the processed statement
+ @returns true if the IN subquery must be excluded from conversion to SJ
+
+ @note
+ Currently a top level IN subquery of an delete statement is not converted
+ to SJ if the statement contains ORDER BY ... LIMIT or contains RETURNING.
+
+ @todo
+ The disjunctive members
+ !((Sql_cmd_update *) cmd)->is_multitable()
+ !((Sql_cmd_delete *) cmd)->is_multitable()
+ will be removed when conversions of IN predicands to semi-joins are
+ fully supported for single-table UPDATE/DELETE statements.
+*/
+
+bool SELECT_LEX::is_sj_conversion_prohibited(THD *thd)
+{
+ DBUG_ASSERT(master_unit()->item->substype() == Item_subselect::IN_SUBS);
+
+ SELECT_LEX *outer_sl= outer_select();
+ if (outer_sl->outer_select())
+ return false;
+
+ Sql_cmd *cmd= thd->lex->m_sql_cmd;
+
+ switch (thd->lex->sql_command) {
+ case SQLCOM_UPDATE:
+ return
+ !((Sql_cmd_update *) cmd)->is_multitable() &&
+ ((Sql_cmd_update *) cmd)->processing_as_multitable_update_prohibited(thd);
+ case SQLCOM_DELETE:
+ return
+ !((Sql_cmd_delete *) cmd)->is_multitable() &&
+ ((Sql_cmd_delete *) cmd)->processing_as_multitable_delete_prohibited(thd);
+ default:
+ return false;
+ }
+}
+
/*
Check if we need JOIN::prepare()-phase subquery rewrites and if yes, do them
@@ -672,17 +718,6 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
DBUG_RETURN(-1);
}
}
- /* Check if any table is not supporting comparable rowids */
- {
- List_iterator_fast<TABLE_LIST> li(select_lex->outer_select()->leaf_tables);
- TABLE_LIST *tbl;
- while ((tbl = li++))
- {
- TABLE *table= tbl->table;
- if (table && table->file->ha_table_flags() & HA_NON_COMPARABLE_ROWID)
- join->not_usable_rowid_map|= table->map;
- }
- }
DBUG_PRINT("info", ("Checking if subq can be converted to semi-join"));
/*
@@ -694,9 +729,8 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
3. Subquery does not have GROUP BY or ORDER BY
4. Subquery does not use aggregate functions or HAVING
5. Subquery predicate is at the AND-top-level of ON/WHERE clause
- 6. We are not in a subquery of a single table UPDATE/DELETE that
- doesn't have a JOIN (TODO: We should handle this at some
- point by switching to multi-table UPDATE/DELETE)
+ 6. We are not in a subquery of a single-table UPDATE/DELETE that
+ does not allow conversion to multi-table UPDATE/DELETE
7. We're not in a table-less subquery like "SELECT 1"
8. No execution method was already chosen (by a prepared statement)
9. Parent select is not a table-less select
@@ -704,9 +738,10 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
11. It is first optimisation (the subquery could be moved from ON
clause during first optimisation and then be considered for SJ
on the second when it is too late)
- 12. All tables supports comparable rowids.
- This is needed for DuplicateWeedout strategy to work (which
- is the catch-all semi-join strategy so it must be applicable).
+
+ There are also other requirements which cannot be checked at this phase,
+ yet. They are checked later in convert_join_subqueries_to_semijoins(),
+ look for calls to block_conversion_to_sj().
*/
if (optimizer_flag(thd, OPTIMIZER_SWITCH_SEMIJOIN) &&
in_subs && // 1
@@ -714,15 +749,14 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
!select_lex->group_list.elements && !join->order && // 3
!join->having && !select_lex->with_sum_func && // 4
in_subs->emb_on_expr_nest && // 5
- select_lex->outer_select()->join && // 6
+ !select_lex->is_sj_conversion_prohibited(thd) && // 6
parent_unit->first_select()->leaf_tables.elements && // 7
!in_subs->has_strategy() && // 8
select_lex->outer_select()->table_list.first && // 9
!((join->select_options | // 10
select_lex->outer_select()->join->select_options) // 10
& SELECT_STRAIGHT_JOIN) && // 10
- select_lex->first_cond_optimization && // 11
- join->not_usable_rowid_map == 0) // 12
+ select_lex->first_cond_optimization) // 11
{
DBUG_PRINT("info", ("Subquery is semi-join conversion candidate"));
@@ -775,7 +809,8 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
*/
if (in_subs && !in_subs->has_strategy())
{
- if (is_materialization_applicable(thd, in_subs, select_lex))
+ if (!select_lex->is_sj_conversion_prohibited(thd) &&
+ is_materialization_applicable(thd, in_subs, select_lex))
{
in_subs->add_strategy(SUBS_MATERIALIZATION);
@@ -918,8 +953,10 @@ bool subquery_types_allow_materialization(THD* thd, Item_in_subselect *in_subs)
outer,
converted_from_in_predicate))
{
- trace_transform.add("possible", false);
- trace_transform.add("cause", "types mismatch");
+ if (unlikely(trace_transform.trace_started()))
+ trace_transform.
+ add("possible", false).
+ add("cause", "types mismatch");
DBUG_RETURN(FALSE);
}
}
@@ -941,8 +978,10 @@ bool subquery_types_allow_materialization(THD* thd, Item_in_subselect *in_subs)
{
in_subs->types_allow_materialization= TRUE;
in_subs->sjm_scan_allowed= all_are_fields;
- trace_transform.add("sjm_scan_allowed", all_are_fields)
- .add("possible", true);
+ if (unlikely(trace_transform.trace_started()))
+ trace_transform.
+ add("sjm_scan_allowed", all_are_fields).
+ add("possible", true);
DBUG_PRINT("info",("subquery_types_allow_materialization: ok, allowed"));
DBUG_RETURN(TRUE);
}
@@ -1232,7 +1271,36 @@ bool convert_join_subqueries_to_semijoins(JOIN *join)
}
}
- if (join->select_options & SELECT_STRAIGHT_JOIN)
+ /*
+ Compute join->not_usable_rowid_map.
+ The idea is:
+ - DuplicateWeedout strategy requires that one is able to get the rowid
+ (call h->position()) for tables in the parent select. Obtained Rowid
+ values must be stable across table scans.
+ = Rowids are typically available. The only known exception is federatedx
+ tables.
+ - The optimizer requires that DuplicateWeedout strategy is always
+ applicable. It is the only strategy that is applicable for any join
+ order. The optimizer is not prepared for the situation where it has
+ constructed a join order and then it turns out that there's no semi-join
+ strategy that can be used for it.
+
+ Because of the above, we will not use semi-joins if the parent select has
+ tables which do not support rowids.
+ */
+ {
+ List_iterator_fast<TABLE_LIST> li(join->select_lex->leaf_tables);
+ TABLE_LIST *tbl;
+ while ((tbl = li++))
+ {
+ TABLE *table= tbl->table;
+ if (table && table->file->ha_table_flags() & HA_NON_COMPARABLE_ROWID)
+ join->not_usable_rowid_map|= table->map;
+ }
+ }
+
+ if (join->select_options & SELECT_STRAIGHT_JOIN ||
+ join->not_usable_rowid_map != 0)
{
/* Block conversion to semijoins for all candidates */
li.rewind();
@@ -1302,8 +1370,10 @@ bool convert_join_subqueries_to_semijoins(JOIN *join)
OPT_TRACE_TRANSFORM(thd, trace_wrapper, trace_transform,
in_subq->get_select_lex()->select_number,
"IN (SELECT)", "semijoin");
- trace_transform.add("converted_to_semi_join", false)
- .add("cause", "subquery attached to the ON clause");
+ if (unlikely(trace_transform.trace_started()))
+ trace_transform.
+ add("converted_to_semi_join", false).
+ add("cause", "subquery attached to the ON clause");
break;
}
@@ -1315,9 +1385,10 @@ bool convert_join_subqueries_to_semijoins(JOIN *join)
if (join->table_count +
in_subq->unit->first_select()->join->table_count >= MAX_TABLES)
{
- trace_transform.add("converted_to_semi_join", false);
- trace_transform.add("cause",
- "table in parent join now exceeds MAX_TABLES");
+ if (unlikely(trace_transform.trace_started()))
+ trace_transform.
+ add("converted_to_semi_join", false).
+ add("cause", "table in parent join now exceeds MAX_TABLES");
break;
}
if (convert_subq_to_sj(join, in_subq))
@@ -1449,6 +1520,7 @@ void get_delayed_table_estimates(TABLE *table,
Item_in_subselect *item= table->pos_in_table_list->jtbm_subselect;
Table_function_json_table *table_function=
table->pos_in_table_list->table_function;
+ handler *file= table->file;
if (table_function)
{
@@ -1468,9 +1540,11 @@ void get_delayed_table_estimates(TABLE *table,
/* Calculate cost of scanning the temptable */
double data_size= COST_MULT(item->jtbm_record_count,
hash_sj_engine->tmp_table->s->reclength);
- /* Do like in handler::scan_time() */
- *scan_time= ((data_size/table->file->stats.block_size+2) *
- table->file->avg_io_cost());
+
+ /* Do like in handler::ha_scan_and_compare_time, but ignore the where cost */
+ *scan_time= ((data_size/IO_SIZE * table->file->DISK_READ_COST *
+ table->file->DISK_READ_RATIO) +
+ *out_rows * file->ROW_COPY_COST);
}
@@ -2498,8 +2572,7 @@ bool optimize_semijoin_nests(JOIN *join, table_map all_table_map)
!sj_nest->sj_subq_pred->is_correlated &&
sj_nest->sj_subq_pred->types_allow_materialization)
{
- join->emb_sjm_nest= sj_nest;
- if (choose_plan(join, all_table_map &~join->const_table_map))
+ if (choose_plan(join, all_table_map &~join->const_table_map, sj_nest))
DBUG_RETURN(TRUE); /* purecov: inspected */
/*
The best plan to run the subquery is now in join->best_positions,
@@ -2515,24 +2588,13 @@ bool optimize_semijoin_nests(JOIN *join, table_map all_table_map)
sjm->is_used= FALSE;
double subjoin_out_rows, subjoin_read_time;
- /*
- join->get_partial_cost_and_fanout(n_tables + join->const_tables,
- table_map(-1),
- &subjoin_read_time,
- &subjoin_out_rows);
- */
- join->get_prefix_cost_and_fanout(n_tables,
+ join->get_prefix_cost_and_fanout(n_tables,
&subjoin_read_time,
&subjoin_out_rows);
- sjm->materialization_cost.convert_from_cost(subjoin_read_time);
+ sjm->materialization_cost=subjoin_read_time;
sjm->rows_with_duplicates= sjm->rows= subjoin_out_rows;
- // Don't use the following list because it has "stale" items. use
- // ref_pointer_array instead:
- //
- //List<Item> &right_expr_list=
- // sj_nest->sj_subq_pred->unit->first_select()->item_list;
/*
Adjust output cardinality estimates. If the subquery has form
@@ -2565,8 +2627,12 @@ bool optimize_semijoin_nests(JOIN *join, table_map all_table_map)
int tableno;
double rows= 1.0;
while ((tableno = tm_it.next_bit()) != Table_map_iterator::BITMAP_END)
- rows= COST_MULT(rows,
- join->map2table[tableno]->table->opt_range_condition_rows);
+ {
+ ha_rows tbl_rows=join->map2table[tableno]->
+ table->opt_range_condition_rows;
+
+ rows= COST_MULT(rows, rows2double(tbl_rows));
+ }
sjm->rows= MY_MIN(sjm->rows, rows);
}
memcpy((uchar*) sjm->positions,
@@ -2576,33 +2642,43 @@ bool optimize_semijoin_nests(JOIN *join, table_map all_table_map)
/*
Calculate temporary table parameters and usage costs
*/
+ bool blobs_used;
uint rowlen= get_tmp_table_rec_length(subq_select->ref_pointer_array,
- subq_select->item_list.elements);
- double lookup_cost= get_tmp_table_lookup_cost(join->thd,
- subjoin_out_rows, rowlen);
- double write_cost= get_tmp_table_write_cost(join->thd,
- subjoin_out_rows, rowlen);
+ subq_select->item_list.elements,
+ &blobs_used);
+ TMPTABLE_COSTS cost= get_tmp_table_costs(join->thd,
+ subjoin_out_rows, rowlen,
+ blobs_used, 1);
+ double scan_cost, total_cost;
+ double row_copy_cost= ROW_COPY_COST_THD(thd);
/*
Let materialization cost include the cost to write the data into the
- temporary table:
+ temporary table. Note that smj->materialization_cost already includes
+ row copy and compare costs of finding the original row.
*/
- sjm->materialization_cost.add_io(subjoin_out_rows, write_cost);
-
+ sjm->materialization_cost+=subjoin_out_rows * cost.write + cost.create;
+
/*
Set the cost to do a full scan of the temptable (will need this to
- consider doing sjm-scan):
- */
- sjm->scan_cost.reset();
- sjm->scan_cost.add_io(sjm->rows, lookup_cost);
-
- sjm->lookup_cost.convert_from_cost(lookup_cost);
+ consider doing sjm-scan). See ha_scan_time() for the basics of
+ the calculations.
+ We don't need to check the where clause for each row, so no
+ WHERE_COST is needed.
+ */
+ scan_cost= (rowlen * (double) sjm->rows) / cost.block_size;
+ total_cost= (scan_cost * cost.cache_hit_ratio * cost.avg_io_cost +
+ TABLE_SCAN_SETUP_COST_THD(thd) +
+ row_copy_cost * sjm->rows);
+ sjm->scan_cost=total_cost;
+
+ /* When reading a row, we have also to check the where clause */
+ sjm->lookup_cost= cost.lookup + WHERE_COST_THD(thd);
sj_nest->sj_mat_info= sjm;
DBUG_EXECUTE("opt", print_sjm(sjm););
}
}
}
- join->emb_sjm_nest= NULL;
DBUG_RETURN(FALSE);
}
@@ -2624,11 +2700,13 @@ bool optimize_semijoin_nests(JOIN *join, table_map all_table_map)
Length of the temptable record, in bytes
*/
-static uint get_tmp_table_rec_length(Ref_ptr_array p_items, uint elements)
+static uint get_tmp_table_rec_length(Ref_ptr_array p_items, uint elements,
+ bool *blobs_used)
{
uint len= 0;
Item *item;
- //List_iterator<Item> it(items);
+
+ *blobs_used= 0;
for (uint i= 0; i < elements ; i++)
{
item = p_items[i];
@@ -2651,6 +2729,8 @@ static uint get_tmp_table_rec_length(Ref_ptr_array p_items, uint elements)
len += 8;
else
len += item->max_length;
+ if (item->max_length > MAX_FIELD_VARCHARLENGTH)
+ *blobs_used= 1;
break;
case DECIMAL_RESULT:
len += 10;
@@ -2666,46 +2746,62 @@ static uint get_tmp_table_rec_length(Ref_ptr_array p_items, uint elements)
/**
- The cost of a lookup into a unique hash/btree index on a temporary table
- with 'row_count' rows each of size 'row_size'.
+ The cost of a create, write and read into a unique hash/btree index on
+ a temporary table with 'row_count' rows each of size 'row_size'.
@param thd current query context
@param row_count number of rows in the temp table
@param row_size average size in bytes of the rows
- @return the cost of one lookup
-*/
-
-double
-get_tmp_table_lookup_cost(THD *thd, double row_count, uint row_size)
-{
- if (row_count > thd->variables.max_heap_table_size / (double) row_size)
- return (double) DISK_TEMPTABLE_LOOKUP_COST;
- else
- return (double) HEAP_TEMPTABLE_LOOKUP_COST;
-}
-
-/**
- The cost of writing a row into a temporary table with 'row_count' unique
- rows each of size 'row_size'.
+ @return The cost of using the temporary table
- @param thd current query context
- @param row_count number of rows in the temp table
- @param row_size average size in bytes of the rows
-
- @return the cost of writing one row
+ TODO:
+ This is an optimistic estimate. We are not taking into account:
+ - That we first write into a memory and then overflow to disk.
+ - If binary trees would be used for heap tables.
+ - The addition cost of writing a row to memory/disk and possible
+ index reorganization.
*/
-double
-get_tmp_table_write_cost(THD *thd, double row_count, uint row_size)
+TMPTABLE_COSTS
+get_tmp_table_costs(THD *thd, double row_count, uint row_size, bool blobs_used,
+ bool add_copy_cost)
{
- double lookup_cost= get_tmp_table_lookup_cost(thd, row_count, row_size);
- /*
- TODO:
- This is an optimistic estimate. Add additional costs resulting from
- actually writing the row to memory/disk and possible index reorganization.
- */
- return lookup_cost;
+ TMPTABLE_COSTS cost;
+ /* From heap_prepare_hp_create_info(), assuming one hash key used */
+ row_size+= sizeof(char*)*2;
+ row_size= MY_ALIGN(MY_MAX(row_size, sizeof(char*)) + 1, sizeof(char*));
+
+ if (row_count > thd->variables.max_heap_table_size / (double) row_size ||
+ blobs_used)
+ {
+ double row_copy_cost= (add_copy_cost ?
+ tmp_table_optimizer_costs.row_copy_cost :
+ 0);
+ /* Disk based table */
+ cost.lookup= ((tmp_table_optimizer_costs.key_lookup_cost *
+ tmp_table_optimizer_costs.disk_read_ratio) +
+ row_copy_cost);
+ cost.write= cost.lookup;
+ cost.create= DISK_TEMPTABLE_CREATE_COST;
+ cost.block_size= DISK_TEMPTABLE_BLOCK_SIZE;
+ cost.avg_io_cost= tmp_table_optimizer_costs.disk_read_cost;
+ cost.cache_hit_ratio= tmp_table_optimizer_costs.disk_read_ratio;
+ }
+ else
+ {
+ /* Values are as they are in heap.h */
+ double row_copy_cost= (add_copy_cost ?
+ heap_optimizer_costs.row_copy_cost :
+ 0);
+ cost.lookup= HEAP_TEMPTABLE_LOOKUP_COST + row_copy_cost;
+ cost.write= cost.lookup;
+ cost.create= HEAP_TEMPTABLE_CREATE_COST;
+ cost.block_size= 1;
+ cost.avg_io_cost= 0;
+ cost.cache_hit_ratio= 0;
+ }
+ return cost;
}
@@ -2950,9 +3046,16 @@ void optimize_semi_joins(JOIN *join, table_map remaining_tables, uint idx,
2. using strategy Z is cheaper, but it only removes
fanout from semijoin X.
3. We have no clue what to do about fanount of semi-join Y.
+
+ For the first iteration read_time will always be bigger than
+ *current_read_time (as the 'strategy' is an addition to the
+ chosen plan) . If a strategy was picked
+ (dusp_producing_tables & handled_fanout is true), then
+ *current_read_time is updated and the cost for the next
+ strategy can be smaller than *current_read_time.
*/
if ((dups_producing_tables & handled_fanout) ||
- (read_time < *current_read_time &&
+ (read_time + COST_EPS < *current_read_time &&
!(handled_fanout & pos->inner_tables_handled_with_other_sjs)))
{
DBUG_ASSERT(pos->sj_strategy != sj_strategy);
@@ -3150,9 +3253,9 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
mat_read_time=
COST_ADD(prefix_cost,
- COST_ADD(mat_info->materialization_cost.total_cost(),
+ COST_ADD(mat_info->materialization_cost,
COST_MULT(prefix_rec_count,
- mat_info->lookup_cost.total_cost())));
+ mat_info->lookup_cost)));
/*
NOTE: When we pick to use SJM[-Scan] we don't memcpy its POSITION
@@ -3166,8 +3269,9 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
*strategy= SJ_OPT_MATERIALIZE;
if (unlikely(trace.trace_started()))
{
- trace.add("records", *record_count);
- trace.add("read_time", *read_time);
+ trace.
+ add("rows", *record_count).
+ add("cost", *read_time);
}
return TRUE;
}
@@ -3201,9 +3305,9 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
/* Add materialization cost */
prefix_cost=
COST_ADD(prefix_cost,
- COST_ADD(mat_info->materialization_cost.total_cost(),
+ COST_ADD(mat_info->materialization_cost,
COST_MULT(prefix_rec_count,
- mat_info->scan_cost.total_cost())));
+ mat_info->scan_cost)));
prefix_rec_count= COST_MULT(prefix_rec_count, mat_info->rows);
uint i;
@@ -3220,10 +3324,8 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
best_access_path(join, join->positions[i].table, rem_tables,
join->positions, i,
disable_jbuf, prefix_rec_count, &curpos, &dummy);
- prefix_rec_count= COST_MULT(prefix_rec_count, curpos.records_read);
+ prefix_rec_count= COST_MULT(prefix_rec_count, curpos.records_out);
prefix_cost= COST_ADD(prefix_cost, curpos.read_time);
- prefix_cost= COST_ADD(prefix_cost,
- prefix_rec_count / TIME_FOR_COMPARE);
//TODO: take into account join condition selectivity here
}
@@ -3248,8 +3350,9 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
*handled_fanout= mat_nest->sj_inner_tables;
if (unlikely(trace.trace_started()))
{
- trace.add("records", *record_count);
- trace.add("read_time", *read_time);
+ trace.
+ add("rows", *record_count).
+ add("cost", *read_time);
}
return TRUE;
}
@@ -3348,8 +3451,9 @@ bool LooseScan_picker::check_qep(JOIN *join,
*handled_fanout= first->table->emb_sj_nest->sj_inner_tables;
if (unlikely(trace.trace_started()))
{
- trace.add("records", *record_count);
- trace.add("read_time", *read_time);
+ trace.
+ add("rows", *record_count).
+ add("cost", *read_time);
}
return TRUE;
}
@@ -3440,13 +3544,18 @@ bool Firstmatch_picker::check_qep(JOIN *join,
optimizer_flag(join->thd, OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE))
{
/*
- An important special case: only one inner table, and @@optimizer_switch
- allows join buffering.
+ An important special case: only one inner table, and
+ @@optimizer_switch allows join buffering.
- read_time is the same (i.e. FirstMatch doesn't add any cost
- - remove fanout added by the last table
+ - remove fanout added by the last table)
*/
if (*record_count)
- *record_count /= join->positions[idx].records_read;
+ *record_count /= join->positions[idx].records_out;
+ /*
+ Remember this choice for
+ fix_semijoin_strategies_for_picked_join_order()
+ */
+ join->positions[idx].firstmatch_with_join_buf= 1;
}
else
{
@@ -3466,8 +3575,9 @@ bool Firstmatch_picker::check_qep(JOIN *join,
*strategy= SJ_OPT_FIRST_MATCH;
if (unlikely(trace.trace_started()))
{
- trace.add("records", *record_count);
- trace.add("read_time", *read_time);
+ trace.
+ add("rows", *record_count).
+ add("cost", *read_time);
}
return TRUE;
}
@@ -3479,6 +3589,56 @@ bool Firstmatch_picker::check_qep(JOIN *join,
}
+/*
+ Duplicate_weedout strategy is described at
+ https://mariadb.com/kb/en/duplicateweedout-strategy/
+
+ The idea is that if one has a subquery of type:
+
+ select *
+ from Country
+ where
+ Country.code IN (select City.Country
+ from City
+ where
+ ...)
+
+ Before semi join optimization it was executed this way:
+ - Scan rows in Country
+ - For each accepted row, execute the sub query with
+ 'Country.code = City.Country' added to the WHERE clause and with
+ LIMIT 1
+
+ With semi join optimization it can be converted to the following semi join.
+
+ select * from Country semi-join City
+ where Country.code = City.Country and ...
+
+ This is executed as:
+
+ - Scan rows in Country
+ - Scan rows in City with 'Country.code = City.Country' added to the
+ subquery WHERE clause. Stop scanning after the first match.
+
+ or
+
+ - Create temporary table to store City.Country (with a unique key)
+ - Scan rows in City (according to plan for City) and put them into the
+ temporary table
+ - Scan the temporary table
+ - Do index lookup in Country table with City.Country
+
+With Duplicate_weedout we would try to instead do:
+
+ - Create temporary table to hold unique rowid's for the Country
+ - Scan rows in City (according to plan for City)
+ - Scan rows in Country (according to plan for Country)
+ - Write Country.id rowid to temporary table. If there was no
+ conflicting row in the temporary table, accept the row combination.
+ - Delete temporary table
+*/
+
+
void Duplicate_weedout_picker::set_from_prev(POSITION *prev)
{
if (prev->dups_weedout_picker.is_used)
@@ -3543,46 +3703,42 @@ bool Duplicate_weedout_picker::check_qep(JOIN *join,
*/
uint first_tab= first_dupsweedout_table;
double dups_cost;
- double prefix_rec_count;
+ double first_weedout_table_rec_count;
double sj_inner_fanout= 1.0;
double sj_outer_fanout= 1.0;
uint temptable_rec_size;
- Json_writer_object trace(join->thd);
- trace.add("strategy", "DuplicateWeedout");
if (first_tab == join->const_tables)
{
- prefix_rec_count= 1.0;
+ first_weedout_table_rec_count= 1.0;
temptable_rec_size= 0;
dups_cost= 0.0;
}
else
{
dups_cost= join->positions[first_tab - 1].prefix_cost;
- prefix_rec_count= join->positions[first_tab - 1].prefix_record_count;
+ first_weedout_table_rec_count=
+ join->positions[first_tab - 1].prefix_record_count;
temptable_rec_size= 8; /* This is not true but we'll make it so */
}
table_map dups_removed_fanout= 0;
- double current_fanout= prefix_rec_count;
for (uint j= first_dupsweedout_table; j <= idx; j++)
{
POSITION *p= join->positions + j;
- current_fanout= COST_MULT(current_fanout, p->records_read);
- dups_cost= COST_ADD(dups_cost,
- COST_ADD(p->read_time,
- current_fanout / TIME_FOR_COMPARE));
+ dups_cost= COST_ADD(dups_cost, p->read_time);
+
if (p->table->emb_sj_nest)
{
- sj_inner_fanout= COST_MULT(sj_inner_fanout, p->records_read);
+ sj_inner_fanout= COST_MULT(sj_inner_fanout, p->records_out);
dups_removed_fanout |= p->table->table->map;
}
else
{
+ sj_outer_fanout= COST_MULT(sj_outer_fanout, p->records_out);
/* Ensure that table supports comparable rowids */
DBUG_ASSERT(!(p->table->table->file->ha_table_flags() & HA_NON_COMPARABLE_ROWID));
- sj_outer_fanout= COST_MULT(sj_outer_fanout, p->records_read);
temptable_rec_size += p->table->table->file->ref_length;
}
}
@@ -3591,32 +3747,38 @@ bool Duplicate_weedout_picker::check_qep(JOIN *join,
Add the cost of temptable use. The table will have sj_outer_fanout
records, and we will make
- sj_outer_fanout table writes
- - sj_inner_fanout*sj_outer_fanout lookups.
+ - sj_inner_fanout*sj_outer_fanout lookups.
+ There is no row copy cost (as we are only copying rowid) and no
+ compare cost (as we are only checking if the row exists by
+ checking if we got a write error.
*/
- double one_lookup_cost= get_tmp_table_lookup_cost(join->thd,
- sj_outer_fanout,
- temptable_rec_size);
- double one_write_cost= get_tmp_table_write_cost(join->thd,
- sj_outer_fanout,
- temptable_rec_size);
-
- double write_cost= COST_MULT(join->positions[first_tab].prefix_record_count,
- sj_outer_fanout * one_write_cost);
- double full_lookup_cost=
- COST_MULT(join->positions[first_tab].prefix_record_count,
- COST_MULT(sj_outer_fanout,
- sj_inner_fanout * one_lookup_cost));
- dups_cost= COST_ADD(dups_cost, COST_ADD(write_cost, full_lookup_cost));
+ TMPTABLE_COSTS one_cost= get_tmp_table_costs(join->thd,
+ sj_outer_fanout,
+ temptable_rec_size,
+ 0, 0);
+ double write_cost= (one_cost.create +
+ first_weedout_table_rec_count * sj_outer_fanout * one_cost.write);
+ double full_lookup_cost= (first_weedout_table_rec_count* sj_outer_fanout *
+ sj_inner_fanout * one_cost.lookup);
+ *read_time= dups_cost + write_cost + full_lookup_cost;
- *read_time= dups_cost;
- *record_count= prefix_rec_count * sj_outer_fanout;
+ *record_count= first_weedout_table_rec_count * sj_outer_fanout;
*handled_fanout= dups_removed_fanout;
*strategy= SJ_OPT_DUPS_WEEDOUT;
- if (unlikely(trace.trace_started()))
+ if (unlikely(join->thd->trace_started()))
{
- trace.add("records", *record_count);
- trace.add("read_time", *read_time);
+ Json_writer_object trace(join->thd);
+ trace.
+ add("strategy", "DuplicateWeedout").
+ add("prefix_row_count", first_weedout_table_rec_count).
+ add("tmp_table_rows", sj_outer_fanout).
+ add("sj_inner_fanout", sj_inner_fanout).
+ add("rows", *record_count).
+ add("dups_cost", dups_cost).
+ add("write_cost", write_cost).
+ add("full_lookup_cost", full_lookup_cost).
+ add("total_cost", *read_time);
}
return TRUE;
}
@@ -3665,33 +3827,37 @@ void JOIN::dbug_verify_sj_inner_tables(uint prefix_size) const
*/
void restore_prev_sj_state(const table_map remaining_tables,
- const JOIN_TAB *tab, uint idx)
+ const JOIN_TAB *tab, uint idx)
{
TABLE_LIST *emb_sj_nest;
- if (tab->emb_sj_nest)
+ if ((emb_sj_nest= tab->emb_sj_nest))
{
- table_map subq_tables= tab->emb_sj_nest->sj_inner_tables;
+ table_map subq_tables= emb_sj_nest->sj_inner_tables;
tab->join->sjm_lookup_tables &= ~subq_tables;
- }
- if (!tab->join->emb_sjm_nest && (emb_sj_nest= tab->emb_sj_nest))
- {
- table_map subq_tables= emb_sj_nest->sj_inner_tables &
- ~tab->join->const_table_map;
- /* If we're removing the last SJ-inner table, remove the sj-nest */
- if ((remaining_tables & subq_tables) == subq_tables)
- {
- // All non-const tables of the SJ nest are in the remaining_tables.
- // we are not in the nest anymore.
- tab->join->cur_sj_inner_tables &= ~emb_sj_nest->sj_inner_tables;
- }
- else
+ if (!tab->join->emb_sjm_nest)
{
- // Semi-join nest has:
- // - a table being removed (not in the prefix)
- // - some tables in the prefix.
- tab->join->cur_sj_inner_tables |= emb_sj_nest->sj_inner_tables;
+ table_map subq_tables= (emb_sj_nest->sj_inner_tables &
+ ~tab->join->const_table_map);
+ /* If we're removing the last SJ-inner table, remove the sj-nest */
+ if ((remaining_tables & subq_tables) == subq_tables)
+ {
+ /*
+ All non-const tables of the SJ nest are in the remaining_tables.
+ we are not in the nest anymore.
+ */
+ tab->join->cur_sj_inner_tables &= ~emb_sj_nest->sj_inner_tables;
+ }
+ else
+ {
+ /*
+ Semi-join nest has:
+ - a table being removed (not in the prefix)
+ - some tables in the prefix.
+ */
+ tab->join->cur_sj_inner_tables |= emb_sj_nest->sj_inner_tables;
+ }
}
}
@@ -3803,6 +3969,8 @@ at_sjmat_pos(const JOIN *join, table_map remaining_tables, const JOIN_TAB *tab,
static void recalculate_prefix_record_count(JOIN *join, uint start, uint end)
{
+ DBUG_ASSERT(start >= join->const_tables);
+
for (uint j= start; j < end ;j++)
{
double prefix_count;
@@ -3810,7 +3978,7 @@ static void recalculate_prefix_record_count(JOIN *join, uint start, uint end)
prefix_count= 1.0;
else
prefix_count= COST_MULT(join->best_positions[j-1].prefix_record_count,
- join->best_positions[j-1].records_read);
+ join->best_positions[j-1].records_out);
join->best_positions[j].prefix_record_count= prefix_count;
}
@@ -3962,7 +4130,7 @@ void fix_semijoin_strategies_for_picked_join_order(JOIN *join)
join->best_positions, i,
FALSE, prefix_rec_count,
join->best_positions + i, &dummy);
- prefix_rec_count *= join->best_positions[i].records_read;
+ prefix_rec_count *= join->best_positions[i].records_out;
rem_tables &= ~join->best_positions[i].table->table->map;
}
}
@@ -3974,7 +4142,7 @@ void fix_semijoin_strategies_for_picked_join_order(JOIN *join)
join->best_positions[first].n_sj_tables= tablenr - first + 1;
POSITION dummy; // For loose scan paths
double record_count= (first== join->const_tables)? 1.0:
- join->best_positions[tablenr - 1].prefix_record_count;
+ join->best_positions[first - 1].prefix_record_count;
table_map rem_tables= remaining_tables;
uint idx;
@@ -3988,6 +4156,7 @@ void fix_semijoin_strategies_for_picked_join_order(JOIN *join)
*/
join->cur_sj_inner_tables= 0;
Json_writer_object semijoin_strategy(thd);
+ double inner_fanout= 1.0;
semijoin_strategy.add("semi_join_strategy","FirstMatch");
Json_writer_array semijoin_plan(thd, "join_order");
for (idx= first; idx <= tablenr; idx++)
@@ -3997,16 +4166,33 @@ void fix_semijoin_strategies_for_picked_join_order(JOIN *join)
{
trace_one_table.add_table_name(join->best_positions[idx].table);
}
- if (join->best_positions[idx].use_join_buffer)
+ if (join->best_positions[idx].use_join_buffer &&
+ !join->best_positions[idx].firstmatch_with_join_buf)
{
- best_access_path(join, join->best_positions[idx].table,
- rem_tables, join->best_positions, idx,
- TRUE /* no jbuf */,
- record_count, join->best_positions + idx, &dummy);
+ /*
+ records_out cannot be bigger just because we remove join buffer
+ */
+ double records_out= join->best_positions[idx].records_out;
+ best_access_path(join, join->best_positions[idx].table,
+ rem_tables, join->best_positions, idx,
+ TRUE /* no jbuf */,
+ record_count, join->best_positions + idx, &dummy);
+ set_if_smaller(join->best_positions[idx].records_out, records_out);
}
- record_count *= join->best_positions[idx].records_read;
+ /*
+ TODO: We should also compute the selectivity here, as well as adjust
+ the records_out according to the fraction of records removed by
+ the semi-join.
+ */
+ double rec_out= join->best_positions[idx].records_out;
+ if (join->best_positions[idx].table->emb_sj_nest)
+ inner_fanout *= rec_out;
+
+ record_count *= join->best_positions[idx].records_out;
rem_tables &= ~join->best_positions[idx].table->table->map;
}
+ if (inner_fanout > 1.0)
+ join->best_positions[tablenr].records_out /= inner_fanout;
}
if (pos->sj_strategy == SJ_OPT_LOOSE_SCAN)
@@ -4015,7 +4201,7 @@ void fix_semijoin_strategies_for_picked_join_order(JOIN *join)
POSITION *first_pos= join->best_positions + first;
POSITION loose_scan_pos; // For loose scan paths
double record_count= (first== join->const_tables)? 1.0:
- join->best_positions[tablenr - 1].prefix_record_count;
+ join->best_positions[first - 1].prefix_record_count;
table_map rem_tables= remaining_tables;
uint idx;
@@ -4056,13 +4242,14 @@ void fix_semijoin_strategies_for_picked_join_order(JOIN *join)
*/
if (join->best_positions[idx].key)
{
+ DBUG_ASSERT(join->best_positions[idx].type != JT_RANGE);
delete join->best_positions[idx].table->quick;
join->best_positions[idx].table->quick= NULL;
}
}
}
rem_tables &= ~join->best_positions[idx].table->table->map;
- record_count *= join->best_positions[idx].records_read;
+ record_count *= join->best_positions[idx].records_out;
}
first_pos->sj_strategy= SJ_OPT_LOOSE_SCAN;
first_pos->n_sj_tables= my_count_bits(first_pos->table->emb_sj_nest->sj_inner_tables);
@@ -4786,11 +4973,13 @@ SJ_TMP_TABLE::create_sj_weedout_tmp_table(THD *thd)
{
DBUG_PRINT("info",("Creating group key in temporary table"));
share->keys=1;
- share->uniques= MY_TEST(using_unique_constraint);
- table->key_info=keyinfo;
+ table->key_info= share->key_info= keyinfo;
keyinfo->key_part=key_part_info;
- keyinfo->flags=HA_NOSAME;
+ keyinfo->flags= HA_NOSAME | (using_unique_constraint ? HA_UNIQUE_HASH : 0);
+ keyinfo->ext_key_flags= keyinfo->flags;
keyinfo->usable_key_parts= keyinfo->user_defined_key_parts= 1;
+ keyinfo->ext_key_parts= 1;
+ share->key_parts= 1;
keyinfo->key_length=0;
keyinfo->rec_per_key=0;
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
@@ -5281,7 +5470,8 @@ int setup_semijoin_dups_elimination(JOIN *join, ulonglong options,
Got a table that's not within any semi-join nest. This is a case
like this:
- SELECT * FROM ot1, nt1 WHERE ot1.col IN (SELECT expr FROM it1, it2)
+ SELECT * FROM ot1, nt1 WHERE
+ ot1.col IN (SELECT expr FROM it1, it2)
with a join order of
@@ -5758,10 +5948,10 @@ enum_nested_loop_state join_tab_execution_startup(JOIN_TAB *tab)
((subselect_hash_sj_engine*)in_subs->engine);
if (!hash_sj_engine->is_materialized)
{
- hash_sj_engine->materialize_join->exec();
+ int error= hash_sj_engine->materialize_join->exec();
hash_sj_engine->is_materialized= TRUE;
- if (unlikely(hash_sj_engine->materialize_join->error) ||
+ if (unlikely(error) ||
unlikely(tab->join->thd->is_fatal_error))
DBUG_RETURN(NESTED_LOOP_ERROR);
}
@@ -6541,18 +6731,14 @@ bool JOIN::choose_subquery_plan(table_map join_tables)
IN/ALL/ANY optimizations are not applicable for so called fake select
(this select exists only to filter results of union if it is needed).
*/
- if (select_lex == select_lex->master_unit()->fake_select_lex)
- return 0;
-
- if (is_in_subquery())
- {
- in_subs= unit->item->get_IN_subquery();
- if (in_subs->create_in_to_exists_cond(this))
- return true;
- }
- else
+ if (select_lex == select_lex->master_unit()->fake_select_lex ||
+ likely(!is_in_subquery()))
return false;
+ in_subs= unit->item->get_IN_subquery();
+ if (in_subs->create_in_to_exists_cond(this))
+ return true;
+
/* A strategy must be chosen earlier. */
DBUG_ASSERT(in_subs->has_strategy());
DBUG_ASSERT(in_to_exists_where || in_to_exists_having);
@@ -6583,6 +6769,7 @@ bool JOIN::choose_subquery_plan(table_map join_tables)
/* The cost of the IN->EXISTS strategy. */
double in_exists_strategy_cost;
double dummy;
+ const char *strategy;
/*
A. Estimate the number of rows of the outer table that will be filtered
@@ -6644,7 +6831,6 @@ bool JOIN::choose_subquery_plan(table_map join_tables)
/* Get the cost of the modified IN-EXISTS plan. */
inner_read_time_2= inner_join->best_read;
-
}
else
{
@@ -6656,39 +6842,58 @@ bool JOIN::choose_subquery_plan(table_map join_tables)
C. Compute execution costs.
*/
/* C.1 Compute the cost of the materialization strategy. */
- //uint rowlen= get_tmp_table_rec_length(unit->first_select()->item_list);
- uint rowlen= get_tmp_table_rec_length(ref_ptrs,
- select_lex->item_list.elements);
- /* The cost of writing one row into the temporary table. */
- double write_cost= get_tmp_table_write_cost(thd, inner_record_count_1,
- rowlen);
- /* The cost of a lookup into the unique index of the materialized table. */
- double lookup_cost= get_tmp_table_lookup_cost(thd, inner_record_count_1,
- rowlen);
+ bool blobs_used;
+ uint rowlen= get_tmp_table_rec_length(ref_ptrs,
+ select_lex->item_list.elements,
+ &blobs_used);
+ /* The cost of using the temp table */
+ TMPTABLE_COSTS cost= get_tmp_table_costs(thd, inner_record_count_1,
+ rowlen, blobs_used, 1);
/*
The cost of executing the subquery and storing its result in an indexed
temporary table.
*/
- double materialization_cost= COST_ADD(inner_read_time_1,
- COST_MULT(write_cost,
- inner_record_count_1));
+ double materialization_cost=
+ COST_ADD(cost.create,
+ COST_ADD(inner_read_time_1,
+ COST_MULT((cost.write + WHERE_COST_THD(thd)),
+ inner_record_count_1)));
- materialize_strategy_cost= COST_ADD(materialization_cost,
- COST_MULT(outer_lookup_keys,
- lookup_cost));
+ materialize_strategy_cost=
+ COST_ADD(materialization_cost,
+ COST_MULT(outer_lookup_keys, cost.lookup));
/* C.2 Compute the cost of the IN=>EXISTS strategy. */
- in_exists_strategy_cost= COST_MULT(outer_lookup_keys, inner_read_time_2);
+ in_exists_strategy_cost=
+ COST_MULT(outer_lookup_keys, inner_read_time_2);
/* C.3 Compare the costs and choose the cheaper strategy. */
if (materialize_strategy_cost >= in_exists_strategy_cost)
+ {
in_subs->set_strategy(SUBS_IN_TO_EXISTS);
+ strategy= "in_to_exists";
+ }
else
+ {
in_subs->set_strategy(SUBS_MATERIALIZATION);
+ strategy= "materialization";
+ }
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object trace_wrapper(thd);
+ Json_writer_object trace_subquery(thd, "subquery_plan");
+ trace_subquery.
+ add("rows", inner_record_count_1).
+ add("materialization_cost", materialize_strategy_cost).
+ add("in_exist_cost", in_exists_strategy_cost).
+ add("choosen", strategy);
+ }
DBUG_PRINT("info",
- ("mat_strategy_cost: %.2f, mat_cost: %.2f, write_cost: %.2f, lookup_cost: %.2f",
- materialize_strategy_cost, materialization_cost, write_cost, lookup_cost));
+ ("mat_strategy_cost: %.2f mat_cost: %.2f write_cost: %.2f "
+ "lookup_cost: %.2f",
+ materialize_strategy_cost, materialization_cost, cost.write,
+ cost.lookup));
DBUG_PRINT("info",
("inx_strategy_cost: %.2f, inner_read_time_2: %.2f",
in_exists_strategy_cost, inner_read_time_2));
@@ -6714,6 +6919,13 @@ bool JOIN::choose_subquery_plan(table_map join_tables)
implementation, fall back to IN-TO-EXISTS.
*/
in_subs->set_strategy(SUBS_IN_TO_EXISTS);
+
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object trace_wrapper(thd);
+ Json_writer_object trace_subquery(thd, "subquery_plan_revert");
+ trace_subquery.add("choosen", "in_to_exists");
+ }
}
if (in_subs->test_strategy(SUBS_MATERIALIZATION))
diff --git a/sql/opt_subselect.h b/sql/opt_subselect.h
index 7b1b810e..8140a019 100644
--- a/sql/opt_subselect.h
+++ b/sql/opt_subselect.h
@@ -226,15 +226,18 @@ public:
if (!(found_part & 1 ) && /* no usable ref access for 1st key part */
s->table->covering_keys.is_set(key))
{
+ double records, read_time;
part1_conds_met= TRUE;
+ handler *file= s->table->file;
DBUG_PRINT("info", ("Can use full index scan for LooseScan"));
/* Calculate the cost of complete loose index scan. */
- double records= rows2double(s->table->file->stats.records);
+ records= rows2double(file->stats.records);
/* The cost is entire index scan cost (divided by 2) */
- double read_time= s->table->file->keyread_time(key, 1,
- (ha_rows) records);
+ read_time= file->cost(file->ha_keyread_and_copy_time(key, 1,
+ (ha_rows) records,
+ 0));
/*
Now find out how many different keys we will get (for now we
@@ -291,17 +294,29 @@ public:
}
}
- void save_to_position(JOIN_TAB *tab, POSITION *pos)
+ void save_to_position(JOIN_TAB *tab, double record_count,
+ double records_out,
+ POSITION *pos)
{
pos->read_time= best_loose_scan_cost;
if (best_loose_scan_cost != DBL_MAX)
{
+ /*
+ Make sure LooseScan plan doesn't produce more rows than
+ the records_out of other table access method.
+ */
+ set_if_smaller(best_loose_scan_records, records_out);
+
+ pos->loops= record_count;
pos->records_read= best_loose_scan_records;
+ pos->records_init= pos->records_read;
+ pos->records_out= best_loose_scan_records;
pos->key= best_loose_scan_start_key;
pos->cond_selectivity= 1.0;
pos->loosescan_picker.loosescan_key= best_loose_scan_key;
pos->loosescan_picker.loosescan_parts= best_max_loose_keypart + 1;
pos->use_join_buffer= FALSE;
+ pos->firstmatch_with_join_buf= FALSE;
pos->table= tab;
pos->range_rowid_filter_info= tab->range_rowid_filter_info;
pos->ref_depend_map= best_ref_depend_map;
@@ -320,7 +335,7 @@ void optimize_semi_joins(JOIN *join, table_map remaining_tables, uint idx,
void update_sj_state(JOIN *join, const JOIN_TAB *new_tab,
uint idx, table_map remaining_tables);
void restore_prev_sj_state(const table_map remaining_tables,
- const JOIN_TAB *tab, uint idx);
+ const JOIN_TAB *tab, uint idx);
void fix_semijoin_strategies_for_picked_join_order(JOIN *join);
diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc
index 794ec40f..30739054 100644
--- a/sql/opt_sum.cc
+++ b/sql/opt_sum.cc
@@ -55,7 +55,7 @@
static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, Field* field,
COND *cond, uint *range_fl,
- uint *key_prefix_length);
+ uint *key_prefix_length, bool *reverse);
static int reckey_in_range(bool max_fl, TABLE_REF *ref, Field* field,
COND *cond, uint range_fl, uint prefix_len);
static int maxmin_in_range(bool max_fl, Field* field, COND *cond);
@@ -101,6 +101,7 @@ static ulonglong get_exact_record_count(List<TABLE_LIST> &tables)
@item_field Field used in MIN()
@range_fl Whether range endpoint is strict less than
@prefix_len Length of common key part for the range
+ @reverse Whether key part used is reverse descending index
@retval
0 No errors
@@ -109,12 +110,15 @@ static ulonglong get_exact_record_count(List<TABLE_LIST> &tables)
static int get_index_min_value(TABLE *table, TABLE_REF *ref,
Item_field *item_field, uint range_fl,
- uint prefix_len)
+ uint prefix_len, bool reverse)
{
int error;
if (!ref->key_length)
- error= table->file->ha_index_first(table->record[0]);
+ {
+ error= reverse ? table->file->ha_index_last(table->record[0]) :
+ table->file->ha_index_first(table->record[0]);
+ }
else
{
/*
@@ -139,6 +143,8 @@ static int get_index_min_value(TABLE *table, TABLE_REF *ref,
error= table->file->ha_index_read_map(table->record[0],
ref->key_buff,
make_prev_keypart_map(ref->key_parts),
+ reverse ?
+ HA_READ_PREFIX_LAST_OR_PREV :
HA_READ_KEY_OR_NEXT);
else
{
@@ -154,6 +160,7 @@ static int get_index_min_value(TABLE *table, TABLE_REF *ref,
error= table->file->ha_index_read_map(table->record[0],
ref->key_buff,
make_prev_keypart_map(ref->key_parts),
+ reverse ? HA_READ_BEFORE_KEY :
HA_READ_AFTER_KEY);
/*
If the found record is outside the group formed by the search
@@ -194,21 +201,31 @@ static int get_index_min_value(TABLE *table, TABLE_REF *ref,
@param table Table object
@param ref Reference to the structure where we store the key value
@range_fl Whether range endpoint is strict greater than
+ @reverse Whether the key part used is reverse descending index
@retval
0 No errors
HA_ERR_... Otherwise
*/
-static int get_index_max_value(TABLE *table, TABLE_REF *ref, uint range_fl)
+static int get_index_max_value(TABLE *table, TABLE_REF *ref, uint range_fl,
+ bool reverse)
{
- return (ref->key_length ?
- table->file->ha_index_read_map(table->record[0], ref->key_buff,
- make_prev_keypart_map(ref->key_parts),
- range_fl & NEAR_MAX ?
- HA_READ_BEFORE_KEY :
- HA_READ_PREFIX_LAST_OR_PREV) :
- table->file->ha_index_last(table->record[0]));
+ if (ref->key_length)
+ {
+ return table->file->ha_index_read_map(table->record[0], ref->key_buff,
+ make_prev_keypart_map(ref->key_parts),
+ range_fl & NEAR_MAX ?
+ (reverse ? HA_READ_AFTER_KEY :
+ HA_READ_BEFORE_KEY) :
+ (reverse ? HA_READ_KEY_OR_NEXT :
+ HA_READ_PREFIX_LAST_OR_PREV));
+ }
+ else
+ {
+ return reverse ? table->file->ha_index_first(table->record[0]) :
+ table->file->ha_index_last(table->record[0]);
+ }
}
@@ -378,6 +395,7 @@ int opt_sum_query(THD *thd,
uchar key_buff[MAX_KEY_LENGTH];
TABLE_REF ref;
uint range_fl, prefix_len;
+ bool reverse= false;
ref.key_buff= key_buff;
Item_field *item_field= (Item_field*) (expr->real_item());
@@ -393,7 +411,7 @@ int opt_sum_query(THD *thd,
*/
if (table->file->inited || (outer_tables & table->map) ||
!find_key_for_maxmin(is_max, &ref, item_field->field, conds,
- &range_fl, &prefix_len))
+ &range_fl, &prefix_len, &reverse))
{
const_result= 0;
break;
@@ -407,9 +425,9 @@ int opt_sum_query(THD *thd,
if (likely(!(error= table->file->ha_index_init((uint) ref.key,
1))))
error= (is_max ?
- get_index_max_value(table, &ref, range_fl) :
+ get_index_max_value(table, &ref, range_fl, reverse) :
get_index_min_value(table, &ref, item_field, range_fl,
- prefix_len));
+ prefix_len, reverse));
}
/* Verify that the read tuple indeed matches the search key */
if (!error &&
@@ -899,6 +917,7 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
@param[in] cond WHERE condition
@param[out] range_fl Bit flags for how to search if key is ok
@param[out] prefix_len Length of prefix for the search range
+ @param[out] reverse Whether the key part used is descending index
@note
This function may set field->table->key_read to true,
@@ -914,7 +933,8 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref,
Field* field, COND *cond,
- uint *range_fl, uint *prefix_len)
+ uint *range_fl, uint *prefix_len,
+ bool *reverse)
{
if (!(field->flags & PART_KEY_FLAG))
return FALSE; // Not key field
@@ -953,9 +973,6 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref,
part->length < part_field->key_length())
break;
- if (part->key_part_flag & HA_REVERSE_SORT)
- break; // TODO MDEV-27576
-
if (field->eq(part->field))
{
ref->key= idx;
@@ -997,6 +1014,7 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref,
*/
if (field->part_of_key.is_set(idx))
table->file->ha_start_keyread(idx);
+ *reverse= part->key_part_flag & HA_REVERSE_SORT ? true : false;
DBUG_RETURN(TRUE);
}
}
diff --git a/sql/opt_trace.cc b/sql/opt_trace.cc
index 972c7da6..93090acf 100644
--- a/sql/opt_trace.cc
+++ b/sql/opt_trace.cc
@@ -150,7 +150,7 @@ void opt_trace_disable_if_no_security_context_access(THD *thd)
return;
}
Opt_trace_context *const trace= &thd->opt_trace;
- if (!thd->trace_started())
+ if (unlikely(!thd->trace_started()))
{
/*
@@optimizer_trace has "enabled=on" but trace is not started.
@@ -202,7 +202,7 @@ void opt_trace_disable_if_no_stored_proc_func_access(THD *thd, sp_head *sp)
if (likely(!(thd->variables.optimizer_trace &
Opt_trace_context::FLAG_ENABLED)) ||
thd->system_thread ||
- !thd->trace_started())
+ likely(!thd->trace_started()))
return;
Opt_trace_context *const trace= &thd->opt_trace;
@@ -236,7 +236,7 @@ void opt_trace_disable_if_no_tables_access(THD *thd, TABLE_LIST *tbl)
if (likely(!(thd->variables.optimizer_trace &
Opt_trace_context::FLAG_ENABLED)) ||
thd->system_thread ||
- !thd->trace_started())
+ likely(!thd->trace_started()))
return;
Opt_trace_context *const trace= &thd->opt_trace;
@@ -297,7 +297,7 @@ void opt_trace_disable_if_no_view_access(THD *thd, TABLE_LIST *view,
if (likely(!(thd->variables.optimizer_trace &
Opt_trace_context::FLAG_ENABLED)) ||
thd->system_thread ||
- !thd->trace_started())
+ likely(!thd->trace_started()))
return;
Opt_trace_context *const trace= &thd->opt_trace;
@@ -563,43 +563,49 @@ void Opt_trace_stmt::set_allowed_mem_size(size_t mem_size)
current_json->set_size_limit(mem_size);
}
-/*
- Prefer this when you are iterating over JOIN_TABs
-*/
-void Json_writer::add_table_name(const JOIN_TAB *tab)
+void get_table_name_for_trace(const JOIN_TAB *tab, String *out)
{
+ char table_name_buffer[64];
+ DBUG_ASSERT(tab != NULL);
DBUG_ASSERT(tab->join->thd->trace_started());
- if (tab != NULL)
+
+ if (tab->table && tab->table->derived_select_number)
{
- char table_name_buffer[SAFE_NAME_LEN];
- if (tab->table && tab->table->derived_select_number)
- {
- /* Derived table name generation */
- size_t len= my_snprintf(table_name_buffer, sizeof(table_name_buffer)-1,
- "<derived%u>",
- tab->table->derived_select_number);
- add_str(table_name_buffer, len);
- }
- else if (tab->bush_children)
- {
- JOIN_TAB *ctab= tab->bush_children->start;
- size_t len= my_snprintf(table_name_buffer,
- sizeof(table_name_buffer)-1,
- "<subquery%d>",
- ctab->emb_sj_nest->sj_subq_pred->get_identifier());
- add_str(table_name_buffer, len);
- }
- else
- {
- TABLE_LIST *real_table= tab->table->pos_in_table_list;
- add_str(real_table->alias.str, real_table->alias.length);
- }
+ /* Derived table name generation */
+ size_t len= my_snprintf(table_name_buffer, sizeof(table_name_buffer)-1,
+ "<derived%u>",
+ tab->table->derived_select_number);
+ out->copy(table_name_buffer, len, &my_charset_bin);
+ }
+ else if (tab->bush_children)
+ {
+ JOIN_TAB *ctab= tab->bush_children->start;
+ size_t len= my_snprintf(table_name_buffer,
+ sizeof(table_name_buffer)-1,
+ "<subquery%d>",
+ ctab->emb_sj_nest->sj_subq_pred->get_identifier());
+ out->copy(table_name_buffer, len, &my_charset_bin);
}
else
- DBUG_ASSERT(0);
+ {
+ TABLE_LIST *real_table= tab->table->pos_in_table_list;
+ out->set(real_table->alias.str, real_table->alias.length, &my_charset_bin);
+ }
}
+/*
+ Prefer this when you are iterating over JOIN_TABs
+*/
+
+void Json_writer::add_table_name(const JOIN_TAB *tab)
+{
+ String sbuf;
+ get_table_name_for_trace(tab, &sbuf);
+ add_str(sbuf.ptr(), sbuf.length());
+}
+
+
void Json_writer::add_table_name(const TABLE *table)
{
add_str(table->pos_in_table_list->alias.str);
@@ -609,6 +615,7 @@ void Json_writer::add_table_name(const TABLE *table)
void trace_condition(THD * thd, const char *name, const char *transform_type,
Item *item, const char *table_name)
{
+ DBUG_ASSERT(thd->trace_started());
Json_writer_object trace_wrapper(thd);
Json_writer_object trace_cond(thd, transform_type);
trace_cond.add("condition", name);
@@ -624,8 +631,10 @@ void add_table_scan_values_to_trace(THD *thd, JOIN_TAB *tab)
Json_writer_object table_records(thd);
table_records.add_table_name(tab);
Json_writer_object table_rec(thd, "table_scan");
- table_rec.add("rows", tab->found_records)
- .add("cost", tab->read_time);
+ table_rec.
+ add("rows", tab->found_records).
+ add("read_cost", tab->read_time).
+ add("read_and_compare_cost", tab->cached_scan_and_compare_time);
}
@@ -643,18 +652,26 @@ void add_table_scan_values_to_trace(THD *thd, JOIN_TAB *tab)
analysis of the various join orders.
*/
-void trace_plan_prefix(JOIN *join, uint idx, table_map join_tables)
+void trace_plan_prefix(Json_writer_object *jsobj, JOIN *join, uint idx,
+ table_map join_tables)
{
- THD *const thd= join->thd;
- DBUG_ASSERT(thd->trace_started());
+ DBUG_ASSERT(join->thd->trace_started());
- Json_writer_array plan_prefix(thd, "plan_prefix");
- for (uint i= 0; i < idx; i++)
+ String prefix_str;
+ prefix_str.length(0);
+ for (uint i= join->const_tables; i < idx; i++)
{
TABLE_LIST *const tr= join->positions[i].table->tab_list;
if (!(tr->map & join_tables))
- plan_prefix.add_table_name(join->positions[i].table);
+ {
+ String str;
+ get_table_name_for_trace(join->positions[i].table, &str);
+ if (prefix_str.length() != 0)
+ prefix_str.append(',');
+ prefix_str.append(str);
+ }
}
+ jsobj->add("plan_prefix", prefix_str.ptr(), prefix_str.length());
}
@@ -681,23 +698,30 @@ void print_final_join_order(JOIN *join)
for (j= join->join_tab,i=0 ; i < join->top_join_tab_count;
i++, j++)
best_order.add_table_name(j);
+ best_order.end();
+
+ /* Write information about the resulting join */
+ join_order.
+ add("rows", join->join_record_count).
+ add("cost", join->best_read);
}
-void print_best_access_for_table(THD *thd, POSITION *pos,
- enum join_type type)
+void print_best_access_for_table(THD *thd, POSITION *pos)
{
DBUG_ASSERT(thd->trace_started());
Json_writer_object obj(thd, "chosen_access_method");
- obj.add("type", type == JT_ALL ? "scan" : join_type_str[type]);
- obj.add("records", pos->records_read);
- obj.add("cost", pos->read_time);
- obj.add("uses_join_buffering", pos->use_join_buffer);
+ obj.
+ add("type", pos->type == JT_ALL ? "scan" : join_type_str[pos->type]).
+ add("rows_read", pos->records_read).
+ add("rows_out", pos->records_out).
+ add("cost", pos->read_time).
+ add("uses_join_buffering", pos->use_join_buffer);
if (pos->range_rowid_filter_info)
{
- uint key_no= pos->range_rowid_filter_info->key_no;
- obj.add("rowid_filter_key",
+ uint key_no= pos->range_rowid_filter_info->get_key_no();
+ obj.add("rowid_filter_index",
pos->table->table->key_info[key_no].name);
}
}
diff --git a/sql/opt_trace.h b/sql/opt_trace.h
index 1ee23a33..c6b5c4ea 100644
--- a/sql/opt_trace.h
+++ b/sql/opt_trace.h
@@ -107,10 +107,10 @@ void opt_trace_print_expanded_query(THD *thd, SELECT_LEX *select_lex,
Json_writer_object *trace_object);
void add_table_scan_values_to_trace(THD *thd, JOIN_TAB *tab);
-void trace_plan_prefix(JOIN *join, uint idx, table_map join_tables);
+void trace_plan_prefix(Json_writer_object *jsobj, JOIN *join, uint idx,
+ table_map join_tables);
void print_final_join_order(JOIN *join);
-void print_best_access_for_table(THD *thd, POSITION *pos,
- enum join_type type);
+void print_best_access_for_table(THD *thd, POSITION *pos);
void trace_condition(THD * thd, const char *name, const char *transform_type,
Item *item, const char *table_name= nullptr);
diff --git a/sql/optimizer_costs.h b/sql/optimizer_costs.h
new file mode 100644
index 00000000..3b2300b9
--- /dev/null
+++ b/sql/optimizer_costs.h
@@ -0,0 +1,162 @@
+#ifndef OPTIMIZER_COSTS_INCLUDED
+#define OPTIMIZER_COSTS_INCLUDED
+/*
+ Copyright (c) 2022, MariaDB AB
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2 of
+ the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+*/
+
+/*
+ This file defines costs structures and cost functions used by the optimizer
+*/
+
+
+/*
+ OPTIMIZER_COSTS stores cost variables for each engine. They are stored
+ in linked_optimizer_costs (pointed to by handlerton) and TABLE_SHARE.
+*/
+
+#define OPTIMIZER_COST_UNDEF -1.0
+struct OPTIMIZER_COSTS
+{
+ double disk_read_cost;
+ double index_block_copy_cost;
+ double key_cmp_cost;
+ double key_copy_cost;
+ double key_lookup_cost;
+ double key_next_find_cost;
+ double disk_read_ratio;
+ double row_copy_cost;
+ double row_lookup_cost;
+ double row_next_find_cost;
+ double rowid_cmp_cost;
+ double rowid_copy_cost;
+ double initialized; // Set if default or connected with handlerton
+};
+
+/* Default optimizer costs */
+extern OPTIMIZER_COSTS default_optimizer_costs;
+/*
+ These are used to avoid taking mutex while creating tmp tables
+ These are created once after the server is started so they are
+ not dynamic.
+*/
+extern OPTIMIZER_COSTS heap_optimizer_costs, tmp_table_optimizer_costs;
+
+/*
+ Interface to the engine cost variables. See optimizer_defaults.h for
+ the default values.
+*/
+
+#define DISK_READ_RATIO costs->disk_read_ratio
+#define KEY_LOOKUP_COST costs->key_lookup_cost
+#define ROW_LOOKUP_COST costs->row_lookup_cost
+#define INDEX_BLOCK_COPY_COST costs->index_block_copy_cost
+#define KEY_COPY_COST costs->key_copy_cost
+#define ROW_COPY_COST costs->row_copy_cost
+#define ROW_COPY_COST_THD(THD) default_optimizer_costs.row_copy_cost
+#define KEY_NEXT_FIND_COST costs->key_next_find_cost
+#define ROW_NEXT_FIND_COST costs->row_next_find_cost
+#define KEY_COMPARE_COST costs->key_cmp_cost
+#define SORT_INDEX_CMP_COST default_optimizer_costs.key_cmp_cost
+#define DISK_READ_COST costs->disk_read_cost
+#define DISK_READ_COST_THD(thd) default_optimizer_costs.disk_read_cost
+
+/* Cost of comparing two rowids. This is set relative to KEY_COMPARE_COST */
+#define ROWID_COMPARE_COST costs->rowid_cmp_cost
+#define ROWID_COMPARE_COST_THD(THD) default_optimizer_costs.rowid_cmp_cost
+
+/* Cost of comparing two rowids. This is set relative to KEY_COPY_COST */
+#define ROWID_COPY_COST costs->rowid_copy_cost
+
+/* Engine unrelated costs. Stored in THD so that the user can change them */
+#define WHERE_COST optimizer_where_cost
+#define WHERE_COST_THD(THD) ((THD)->variables.optimizer_where_cost)
+#define TABLE_SCAN_SETUP_COST optimizer_scan_setup_cost
+#define TABLE_SCAN_SETUP_COST_THD(THD) (THD)->variables.optimizer_scan_setup_cost
+#define INDEX_SCAN_SETUP_COST optimizer_scan_setup_cost/2
+/* Cost for doing duplicate removal in test_quick_select */
+#define DUPLICATE_REMOVAL_COST default_optimizer_costs.key_copy_cost
+
+/* Default fill factors of an (b-tree) index block is assumed to be 0.75 */
+#define INDEX_BLOCK_FILL_FACTOR_DIV 3
+#define INDEX_BLOCK_FILL_FACTOR_MUL 4
+
+/*
+ These constants impact the cost of QSORT and priority queue sorting,
+ scaling the "n * log(n)" operations cost proportionally.
+ These factors are < 1.0 to scale down the sorting cost to be comparable
+ to 'read a row' = 1.0, (or 0.55 with default caching).
+ A factor of 0.1 makes the cost of get_pq_sort_cost(10, 10, false) =0.52
+ (Reading 10 rows into a priority queue of 10 elements).
+
+ One consenquence if this factor is too high is that priority_queue will
+ not use addon fields (to solve the sort without having to do an extra
+ re-read of rows) even if the number of LIMIT is low.
+*/
+#define QSORT_SORT_SLOWNESS_CORRECTION_FACTOR (0.1)
+#define PQ_SORT_SLOWNESS_CORRECTION_FACTOR (0.1)
+
+/*
+ Creating a record from the join cache is faster than getting a row from
+ the engine. JOIN_CACHE_ROW_COPY_COST_FACTOR is the factor used to
+ take this into account. This is multiplied with ROW_COPY_COST.
+*/
+#define JOIN_CACHE_ROW_COPY_COST_FACTOR(thd) 1.0
+
+/*
+ cost1 is better that cost2 only if cost1 + COST_EPS < cost2
+ The main purpose of this is to ensure we use the first index or plan
+ when there are identical plans. Without COST_EPS some plans in the
+ test suite would vary depending on floating point calculations done
+ in different paths.
+*/
+#define COST_EPS 0.0000001
+
+#define COST_MAX (DBL_MAX * (1.0 - DBL_EPSILON))
+
+static inline double COST_ADD(double c, double d)
+{
+ DBUG_ASSERT(c >= 0);
+ DBUG_ASSERT(d >= 0);
+ return (COST_MAX - (d) > (c) ? (c) + (d) : COST_MAX);
+}
+
+static inline double COST_MULT(double c, double f)
+{
+ DBUG_ASSERT(c >= 0);
+ DBUG_ASSERT(f >= 0);
+ return (COST_MAX / (f) > (c) ? (c) * (f) : COST_MAX);
+}
+
+OPTIMIZER_COSTS *get_optimizer_costs(const LEX_CSTRING *cache_name);
+OPTIMIZER_COSTS *create_optimizer_costs(const char *name, size_t length);
+OPTIMIZER_COSTS *get_or_create_optimizer_costs(const char *name,
+ size_t length);
+bool create_default_optimizer_costs();
+void copy_tmptable_optimizer_costs();
+void free_all_optimizer_costs();
+struct TABLE;
+
+extern "C"
+{
+ typedef int (*process_optimizer_costs_t) (const LEX_CSTRING *,
+ const OPTIMIZER_COSTS *,
+ TABLE *);
+ bool process_optimizer_costs(process_optimizer_costs_t func, TABLE *param);
+}
+
+
+#endif /* OPTIMIZER_COSTS_INCLUDED */
diff --git a/sql/optimizer_defaults.h b/sql/optimizer_defaults.h
new file mode 100644
index 00000000..4eaa3075
--- /dev/null
+++ b/sql/optimizer_defaults.h
@@ -0,0 +1,190 @@
+#ifndef OPTIMIZER_DEFAULTS_INCLUDED
+#define OPTIMIZER_DEFAULTS_INCLUDED
+/*
+ Copyright (c) 2022, MariaDB AB
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2 of
+ the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+*/
+
+/*
+ This file contains costs constants used by the optimizer
+ All costs should be based on milliseconds (1 cost = 1 ms)
+*/
+
+/* Cost for finding the first key in a key scan */
+#define DEFAULT_KEY_LOOKUP_COST ((double) 0.000435777)
+
+/* Cost of finding a row based on row_ID */
+#define DEFAULT_ROW_LOOKUP_COST ((double) 0.000130839)
+
+/*
+ Cost of finding and copying key and row blocks from the storage
+ engine index cache to an internal cache as part of an index
+ scan. This includes all mutexes that needs to be taken to get
+ exclusive access to a page. The number is taken from accessing an
+ existing blocks from Aria page cache.
+ Used in handler::scan_time() and handler::keyread_time()
+*/
+#define DEFAULT_INDEX_BLOCK_COPY_COST ((double) 3.56e-05)
+
+/*
+ Cost of copying a row to 'table->record'.
+ Used by scan_time() and rnd_pos_time() methods.
+
+ If this is too small, then table scans will be prefered over 'ref'
+ as with table scans there are no key read (KEY_LOOKUP_COST), fewer
+ disk reads but more record copying and row comparisions. If it's
+ too big then MariaDB will used key lookup even when table scan is
+ better.
+*/
+#define DEFAULT_ROW_COPY_COST ((double) 0.000060866)
+
+/*
+ Cost of copying the key to 'table->record'
+
+ If this is too small, then, for small tables, index scans will be
+ prefered over 'ref' as with index scans there are fewer disk reads.
+*/
+#define DEFAULT_KEY_COPY_COST ((double) 0.000015685)
+
+/*
+ Cost of finding the next index entry and checking its rowid against filter
+ This cost is very low as it's done inside the storage engine.
+ Should be smaller than KEY_COPY_COST.
+ */
+#define DEFAULT_KEY_NEXT_FIND_COST ((double) 0.000082347)
+
+/* Cost of finding the next row when scanning a table */
+#define DEFAULT_ROW_NEXT_FIND_COST ((double) 0.000045916)
+
+/**
+ The cost of executing the WHERE clause as part of any row check.
+ Increasing this would force the optimizer to use row combinations
+ that reads fewer rows.
+ The default cost comes from recording times from a simple where clause that
+ compares two fields (date and a double) with constants.
+*/
+#define DEFAULT_WHERE_COST ((double) 3.2e-05)
+
+/* The cost of comparing a key when using range access or sorting */
+#define DEFAULT_KEY_COMPARE_COST 0.000011361
+
+/* Rowid compare is usually just a single memcmp of a short string */
+#define DEFAULT_ROWID_COMPARE_COST 0.000002653
+/* Rowid copy is usually just a single memcpy of a short string */
+#define DEFAULT_ROWID_COPY_COST 0.000002653
+
+/*
+ Cost modifiers rowid_filter. These takes into account the overhead of
+ using and calling Rowid_filter_sorted_array::check() from the engine
+*/
+#define ROWID_FILTER_PER_CHECK_MODIFIER 4 /* times key_copy_cost */
+#define ROWID_FILTER_PER_ELEMENT_MODIFIER 1 /* times rowid_compare_cost */
+
+/*
+ Average disk seek time on a hard disk is 8-10 ms, which is also
+ about the time to read a IO_SIZE (8192) block.
+
+ A medium ssd is about 400MB/second, which gives us the time for
+ reading an IO_SIZE block to IO_SIZE/400000000 = 0.0000204 sec= 0.02 ms.
+*/
+#define DEFAULT_DISK_READ_COST ((double) IO_SIZE / 400000000.0 * 1000)
+
+/*
+ The follwoing is an old comment for hard-disks, please ignore the
+ following, except if you like history:
+
+ For sequential hard disk seeks the cost formula is:
+ DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST * #blocks_to_skip
+
+ The cost of average seek
+ DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST*BLOCKS_IN_AVG_SEEK = 10.
+*/
+
+
+/*
+ The table/index cache_miss/total_cache_request ratio.
+ 1.0 means that a searched for key or row will never be in the cache while
+ 0.0 means it always in the cache (and we don't have to do any disk reads).
+
+ According to folklore, one should not have to access disk for more
+ than 20% of the cache request for MariaDB to run very well.
+ However in practice when we read rows or keys in a query, we will often
+ read the same row over and over again. Because of this we set
+ DEFAULT_DISK_READ_RATIO to 0.20/10 = 0.02.
+
+ Increasing DISK_READ_RATIO will make MariaDB prefer key lookup over
+ table scans as the impact of ROW_COPY_COST and INDEX_COPY cost will
+ have a larger impact when more rows are examined..
+
+ We are not yet taking into account cache usage statistics as this
+ could confuse users as the EXPLAIN and costs for a query would change
+ between to query calls, which may confuse users (and also make the
+ mtr tests very unpredictable).
+
+ Note that the engine's avg_io_cost() (DEFAULT_DISK_READ_COST by default)
+ is multiplied with this constant!
+*/
+
+#define DEFAULT_DISK_READ_RATIO 0.02
+
+/*
+ The following costs are mainly to ensure we don't do table and index
+ scans for small tables, like the one we have in the mtr test suite.
+
+ This is mostly to keep the mtr tests use indexes (as the optimizer would
+ if the tables are large). It will also ensure that EXPLAIN is showing
+ more key user for users where they are testing queries with small tables
+ at the start of projects.
+ This is probably OK for most a the execution time difference between table
+ scan and index scan compared to key lookups so small when using small
+ tables. It also helps to fill the index cache which will help mitigate
+ the speed difference.
+*/
+
+/*
+ Extra cost for full table and index scan. Used to prefer key and range
+ over index and table scans
+
+ INDEX_SCAN_SETUP_COST (defined in optimizer_costs.h) is half of
+ table_scan_setup_cost to get the optimizer to prefer index scans to table
+ scans as key copy is faster than row copy and index blocks provides
+ more information in the cache.
+
+ This will also help MyISAM as with MyISAM the table scans has a cost
+ very close to index scans (they are fast but require a read call
+ that we want to avoid even if it's small).
+
+ 10 usec is about 10 MyISAM row lookups with optimizer_disk_read_ratio= 0.02
+*/
+#define DEFAULT_TABLE_SCAN_SETUP_COST 0.01 // 10 usec
+
+/* Extra cost for doing a range scan. Used to prefer 'ref' over range */
+#define MULTI_RANGE_READ_SETUP_COST KEY_LOOKUP_COST
+
+/*
+ Temporary file and temporary table related costs
+ Used with subquery materialization, derived tables etc
+*/
+
+#define TMPFILE_CREATE_COST 0.5 // Cost of creating and deleting files
+#define HEAP_TEMPTABLE_CREATE_COST 0.025 // ms
+/* Cost taken from HEAP_LOOKUP_COST in ha_heap.cc */
+#define HEAP_TEMPTABLE_LOOKUP_COST (0.00016097)
+#define DISK_TEMPTABLE_LOOKUP_COST(thd) (tmp_table_optimizer_costs.key_lookup_cost + tmp_table_optimizer_costs.row_lookup_cost + tmp_table_optimizer_costs.row_copy_cost)
+#define DISK_TEMPTABLE_CREATE_COST TMPFILE_CREATE_COST*2 // 2 tmp tables
+#define DISK_TEMPTABLE_BLOCK_SIZE IO_SIZE
+
+#endif /* OPTIMIZER_DEFAULTS_INCLUDED */
diff --git a/sql/password.c b/sql/password.c
index d824e615..6ad5cd16 100644
--- a/sql/password.c
+++ b/sql/password.c
@@ -296,13 +296,13 @@ void make_password_from_salt_323(char *to, const ulong *salt)
buf+len*2
*/
-char *octet2hex(char *to, const char *str, size_t len)
+char *octet2hex(char *to, const uchar *str, size_t len)
{
- const char *str_end= str + len;
+ const uchar *str_end= str + len;
for (; str != str_end; ++str)
{
- *to++= _dig_vec_upper[((uchar) *str) >> 4];
- *to++= _dig_vec_upper[((uchar) *str) & 0x0F];
+ *to++= _dig_vec_upper[*str >> 4];
+ *to++= _dig_vec_upper[*str & 0x0F];
}
*to= '\0';
return to;
@@ -399,7 +399,7 @@ void my_make_scrambled_password(char *to, const char *password,
/* convert hash_stage2 to hex string */
*to++= PVERSION41_CHAR;
- octet2hex(to, (const char*) hash_stage2, MY_SHA1_HASH_SIZE);
+ octet2hex(to, hash_stage2, MY_SHA1_HASH_SIZE);
}
@@ -519,6 +519,6 @@ void get_salt_from_password(uint8 *hash_stage2, const char *password)
void make_password_from_salt(char *to, const uint8 *hash_stage2)
{
*to++= PVERSION41_CHAR;
- octet2hex(to, (const char*) hash_stage2, MY_SHA1_HASH_SIZE);
+ octet2hex(to, hash_stage2, MY_SHA1_HASH_SIZE);
}
diff --git a/sql/privilege.h b/sql/privilege.h
index 8e9b9a37..84efc010 100644
--- a/sql/privilege.h
+++ b/sql/privilege.h
@@ -67,20 +67,21 @@ enum privilege_t: unsigned long long
REPL_MASTER_ADMIN_ACL = (1ULL << 35), // Added in 10.5.2
BINLOG_ADMIN_ACL = (1ULL << 36), // Added in 10.5.2
BINLOG_REPLAY_ACL = (1ULL << 37), // Added in 10.5.2
- SLAVE_MONITOR_ACL = (1ULL << 38) // Added in 10.5.8
+ SLAVE_MONITOR_ACL = (1ULL << 38), // Added in 10.5.8
+ SHOW_CREATE_ROUTINE_ACL = (1ULL << 39) // added in 11.3.0
/*
When adding new privilege bits, don't forget to update:
In this file:
- Add a new LAST_version_ACL
- Add a new ALL_KNOWN_ACL_version
- Change ALL_KNOWN_ACL to ALL_KNOWN_ACL_version
- - Change GLOBAL_ACLS if needed
+ - Change GLOBAL_ACLS, DB_ACLS, TABLE_ACLS, PROC_ACLS if needed
- Change SUPER_ADDED_SINCE_USER_TABLE_ACL if needed
In other files:
- static struct show_privileges_st sys_privileges[]
- static const char *command_array[] and static uint command_lengths[]
- - mysql_system_tables.sql and mysql_system_tables_fix.sql
+ - mariadb_system_tables.sql and mariadb_system_tables_fix.sql
- acl_init() or whatever - to define behaviour for old privilege tables
- Update User_table_json::get_access()
- sql_yacc.yy - for GRANT/REVOKE to work
@@ -103,9 +104,10 @@ constexpr static inline privilege_t ALL_KNOWN_BITS(privilege_t x)
constexpr privilege_t LAST_100304_ACL= DELETE_HISTORY_ACL;
constexpr privilege_t LAST_100502_ACL= BINLOG_REPLAY_ACL;
constexpr privilege_t LAST_100508_ACL= SLAVE_MONITOR_ACL;
+constexpr privilege_t LAST_110300_ACL= SHOW_CREATE_ROUTINE_ACL;
// Current version markers
-constexpr privilege_t LAST_CURRENT_ACL= LAST_100508_ACL;
+constexpr privilege_t LAST_CURRENT_ACL= LAST_110300_ACL;
constexpr uint PRIVILEGE_T_MAX_BIT=
my_bit_log2_uint64((ulonglong) LAST_CURRENT_ACL);
@@ -125,6 +127,9 @@ constexpr privilege_t ALL_KNOWN_ACL_100508= ALL_KNOWN_BITS(LAST_100508_ACL);
// let's stay compatible with that branch too.
constexpr privilege_t ALL_KNOWN_ACL_100509= ALL_KNOWN_ACL_100508;
+// A combination of all bits defined in 11.3.0
+constexpr privilege_t ALL_KNOWN_ACL_110300= ALL_KNOWN_BITS(LAST_110300_ACL);
+
// A combination of all bits defined as of the current version
constexpr privilege_t ALL_KNOWN_ACL= ALL_KNOWN_BITS(LAST_CURRENT_ACL);
@@ -224,21 +229,24 @@ static inline privilege_t& operator|=(privilege_t &a, privilege_t b)
return a= a | b;
}
+/*
+ A combination of all privileges that SUPER used to allow before 10.11.0
+*/
+constexpr privilege_t ALLOWED_BY_SUPER_BEFORE_101100= READ_ONLY_ADMIN_ACL;
/*
- A combination of all SUPER privileges added since the old user table format.
- These privileges are automatically added when upgrading from the
- old format mysql.user table if a user has the SUPER privilege.
+ A combination of all privileges that SUPER used to allow before 11.0.0
*/
-constexpr privilege_t GLOBAL_SUPER_ADDED_SINCE_USER_TABLE_ACLS=
+constexpr privilege_t ALLOWED_BY_SUPER_BEFORE_110000=
SET_USER_ACL |
FEDERATED_ADMIN_ACL |
CONNECTION_ADMIN_ACL |
- READ_ONLY_ADMIN_ACL |
REPL_SLAVE_ADMIN_ACL |
BINLOG_ADMIN_ACL |
- BINLOG_REPLAY_ACL;
-
+ BINLOG_REPLAY_ACL |
+ SLAVE_MONITOR_ACL |
+ BINLOG_MONITOR_ACL |
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t COL_DML_ACLS=
SELECT_ACL | INSERT_ACL | UPDATE_ACL | DELETE_ACL;
@@ -258,9 +266,14 @@ constexpr privilege_t COL_ACLS=
constexpr privilege_t PROC_DDL_ACLS=
CREATE_PROC_ACL | ALTER_PROC_ACL;
-constexpr privilege_t SHOW_PROC_ACLS=
+constexpr privilege_t SHOW_PROC_WITHOUT_DEFINITION_ACLS=
PROC_DDL_ACLS | EXECUTE_ACL;
+/*
+ When changing this, don't forget to update tables_priv
+ at scripts/mariadb_system_tables.sql, scripts/mariadb_system_tables_fix.sql
+ and scripts/sys_schema/i_s/table_privileges.sql
+*/
constexpr privilege_t TABLE_ACLS=
COL_DML_ACLS | ALL_TABLE_DDL_ACLS | VIEW_ACLS |
GRANT_ACL | REFERENCES_ACL |
@@ -268,18 +281,16 @@ constexpr privilege_t TABLE_ACLS=
constexpr privilege_t DB_ACLS=
TABLE_ACLS | PROC_DDL_ACLS | EXECUTE_ACL |
- CREATE_TMP_ACL | LOCK_TABLES_ACL | EVENT_ACL;
+ CREATE_TMP_ACL | LOCK_TABLES_ACL | EVENT_ACL | SHOW_CREATE_ROUTINE_ACL;
constexpr privilege_t PROC_ACLS=
- ALTER_PROC_ACL | EXECUTE_ACL | GRANT_ACL;
+ ALTER_PROC_ACL | EXECUTE_ACL | GRANT_ACL | SHOW_CREATE_ROUTINE_ACL;
constexpr privilege_t GLOBAL_ACLS=
- DB_ACLS | SHOW_DB_ACL |
- CREATE_USER_ACL | CREATE_TABLESPACE_ACL |
+ DB_ACLS | SHOW_DB_ACL | CREATE_USER_ACL | CREATE_TABLESPACE_ACL |
SUPER_ACL | RELOAD_ACL | SHUTDOWN_ACL | PROCESS_ACL | FILE_ACL |
- REPL_SLAVE_ACL | BINLOG_MONITOR_ACL |
- GLOBAL_SUPER_ADDED_SINCE_USER_TABLE_ACLS |
- REPL_MASTER_ADMIN_ACL | SLAVE_MONITOR_ACL;
+ REPL_SLAVE_ACL |
+ ALLOWED_BY_SUPER_BEFORE_101100 | ALLOWED_BY_SUPER_BEFORE_110000;
constexpr privilege_t DEFAULT_CREATE_PROC_ACLS=
ALTER_PROC_ACL | EXECUTE_ACL;
@@ -303,7 +314,7 @@ constexpr privilege_t PRIV_LOCK_TABLES= SELECT_ACL | LOCK_TABLES_ACL;
CREATE DEFINER=xxx {TRIGGER|VIEW|FUNCTION|PROCEDURE}
Was SUPER prior to 10.5.2
*/
-constexpr privilege_t PRIV_DEFINER_CLAUSE= SET_USER_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_DEFINER_CLAUSE= SET_USER_ACL;
/*
If a VIEW has a `definer=invoker@host` clause and
the specified definer does not exists, then
@@ -319,7 +330,7 @@ constexpr privilege_t PRIV_DEFINER_CLAUSE= SET_USER_ACL | SUPER_ACL;
Was SUPER prior to 10.5.2
*/
-constexpr privilege_t PRIV_REVEAL_MISSING_DEFINER= SET_USER_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_REVEAL_MISSING_DEFINER= SET_USER_ACL;
/* Actions that require only the SUPER privilege */
constexpr privilege_t PRIV_DES_DECRYPT_ONE_ARG= SUPER_ACL;
@@ -330,119 +341,129 @@ constexpr privilege_t PRIV_SET_RESTRICTED_SESSION_SYSTEM_VARIABLE= SUPER_ACL;
/* The following variables respected only SUPER_ACL prior to 10.5.2 */
constexpr privilege_t PRIV_SET_SYSTEM_VAR_BINLOG_FORMAT=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_VAR_BINLOG_DIRECT_NON_TRANSACTIONAL_UPDATES=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_VAR_BINLOG_ANNOTATE_ROW_EVENTS=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_VAR_BINLOG_ROW_IMAGE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_VAR_SQL_LOG_BIN=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_CACHE_SIZE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_FILE_CACHE_SIZE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_STMT_CACHE_SIZE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_COMMIT_WAIT_COUNT=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_COMMIT_WAIT_USEC=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_ROW_METADATA=
+ BINLOG_ADMIN_ACL;
+
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_LEGACY_EVENT_POS=
SUPER_ACL | BINLOG_ADMIN_ACL;
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_GTID_INDEX=
+ BINLOG_ADMIN_ACL;
+
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_GTID_INDEX_PAGE_SIZE=
+ BINLOG_ADMIN_ACL;
+
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_GTID_INDEX_SPAN_MIN=
+ BINLOG_ADMIN_ACL;
+
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_EXPIRE_LOGS_DAYS=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_LOG_BIN_COMPRESS=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_LOG_BIN_COMPRESS_MIN_LEN=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_LOG_BIN_TRUST_FUNCTION_CREATORS=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_BINLOG_CACHE_SIZE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_BINLOG_STMT_CACHE_SIZE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_BINLOG_SIZE=
- SUPER_ACL | BINLOG_ADMIN_ACL;
+ BINLOG_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SYNC_BINLOG=
- SUPER_ACL | BINLOG_ADMIN_ACL;
-
+ BINLOG_ADMIN_ACL;
/* Privileges related to --read-only */
// Was super prior to 10.5.2
constexpr privilege_t PRIV_IGNORE_READ_ONLY= READ_ONLY_ADMIN_ACL;
// Was super prior to 10.5.2
-constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_READ_ONLY=
- READ_ONLY_ADMIN_ACL;
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_READ_ONLY= READ_ONLY_ADMIN_ACL;
/*
Privileges related to connection handling.
*/
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_IGNORE_INIT_CONNECT= CONNECTION_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_IGNORE_INIT_CONNECT= CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_IGNORE_MAX_USER_CONNECTIONS= CONNECTION_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_IGNORE_MAX_USER_CONNECTIONS= CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_IGNORE_MAX_CONNECTIONS= CONNECTION_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_IGNORE_MAX_CONNECTIONS= CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_IGNORE_MAX_PASSWORD_ERRORS= CONNECTION_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_IGNORE_MAX_PASSWORD_ERRORS= CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_KILL_OTHER_USER_PROCESS= CONNECTION_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_KILL_OTHER_USER_PROCESS= CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_CONNECT_TIMEOUT=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_DISCONNECT_ON_EXPIRED_PASSWORD=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_EXTRA_MAX_CONNECTIONS=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_INIT_CONNECT=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_CONNECTIONS=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_CONNECT_ERRORS=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_PASSWORD_ERRORS=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_PROXY_PROTOCOL_NETWORKS=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SECURE_AUTH=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLOW_LAUNCH_TIME=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_THREAD_POOL=
- CONNECTION_ADMIN_ACL | SUPER_ACL;
+ CONNECTION_ADMIN_ACL;
/*
@@ -456,20 +477,23 @@ constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_THREAD_POOL=
Was SUPER_ACL | REPL_CLIENT_ACL prior to 10.5.2
REPL_CLIENT_ACL was renamed to BINLOG_MONITOR_ACL.
*/
-constexpr privilege_t PRIV_STMT_SHOW_BINLOG_STATUS= BINLOG_MONITOR_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_SHOW_BINLOG_STATUS= BINLOG_MONITOR_ACL;
/*
Was SUPER_ACL | REPL_CLIENT_ACL prior to 10.5.2
REPL_CLIENT_ACL was renamed to BINLOG_MONITOR_ACL.
*/
-constexpr privilege_t PRIV_STMT_SHOW_BINARY_LOGS= BINLOG_MONITOR_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_SHOW_BINARY_LOGS= BINLOG_MONITOR_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_PURGE_BINLOG= BINLOG_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_PURGE_BINLOG= BINLOG_ADMIN_ACL;
// Was REPL_SLAVE_ACL prior to 10.5.2
constexpr privilege_t PRIV_STMT_SHOW_BINLOG_EVENTS= BINLOG_MONITOR_ACL;
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_DO_DB = BINLOG_ADMIN_ACL | SUPER_ACL;
+
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_IGNORE_DB = BINLOG_ADMIN_ACL | SUPER_ACL;
/*
Privileges for replication related statements and commands
@@ -485,39 +509,39 @@ constexpr privilege_t PRIV_STMT_SHOW_SLAVE_HOSTS= REPL_MASTER_ADMIN_ACL;
Where SUPER prior to 10.5.2
*/
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_MASTER_ENABLED=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_MASTER_TIMEOUT=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_MASTER_TRACE_LEVEL=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_MASTER_WAIT_POINT=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_MASTER_VERIFY_CHECKSUM=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_BINLOG_STATE=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SERVER_ID=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_DOMAIN_ID=
- REPL_MASTER_ADMIN_ACL | SUPER_ACL;
+ REPL_MASTER_ADMIN_ACL;
/* Privileges for statements that are executed on the slave */
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_START_SLAVE= REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_START_SLAVE= REPL_SLAVE_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_STOP_SLAVE= REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_STOP_SLAVE= REPL_SLAVE_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_CHANGE_MASTER= REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_CHANGE_MASTER= REPL_SLAVE_ADMIN_ACL;
// Was (SUPER_ACL | REPL_CLIENT_ACL) prior to 10.5.2
// Was (SUPER_ACL | REPL_SLAVE_ADMIN_ACL) from 10.5.2 to 10.5.7
-constexpr privilege_t PRIV_STMT_SHOW_SLAVE_STATUS= SLAVE_MONITOR_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_SHOW_SLAVE_STATUS= SLAVE_MONITOR_ACL;
// Was REPL_SLAVE_ACL prior to 10.5.2
// Was REPL_SLAVE_ADMIN_ACL from 10.5.2 to 10.5.7
constexpr privilege_t PRIV_STMT_SHOW_RELAYLOG_EVENTS= SLAVE_MONITOR_ACL;
@@ -526,114 +550,114 @@ constexpr privilege_t PRIV_STMT_SHOW_RELAYLOG_EVENTS= SLAVE_MONITOR_ACL;
Privileges related to binlog replying.
Were SUPER_ACL prior to 10.5.2
*/
-constexpr privilege_t PRIV_STMT_BINLOG= BINLOG_REPLAY_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_BINLOG= BINLOG_REPLAY_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_SESSION_VAR_GTID_SEQ_NO=
- BINLOG_REPLAY_ACL | SUPER_ACL;
+ BINLOG_REPLAY_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_SESSION_VAR_PSEUDO_THREAD_ID=
- BINLOG_REPLAY_ACL | SUPER_ACL;
+ BINLOG_REPLAY_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_SESSION_VAR_SERVER_ID=
- BINLOG_REPLAY_ACL | SUPER_ACL;
+ BINLOG_REPLAY_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_SESSION_VAR_GTID_DOMAIN_ID=
- BINLOG_REPLAY_ACL | SUPER_ACL;
+ BINLOG_REPLAY_ACL;
/*
Privileges for slave related global variables.
Were SUPER prior to 10.5.2.
*/
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_EVENTS_MARKED_FOR_SKIP=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_REWRITE_DB=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_DO_DB=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_DO_TABLE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_IGNORE_DB=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_IGNORE_TABLE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_WILD_DO_TABLE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_WILD_IGNORE_TABLE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_READ_BINLOG_SPEED_LIMIT=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_COMPRESSED_PROTOCOL=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_DDL_EXEC_MODE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_DOMAIN_PARALLEL_THREADS=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_EXEC_MODE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_MAX_ALLOWED_PACKET=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_MAX_STATEMENT_TIME=
REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_NET_TIMEOUT=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_PARALLEL_MAX_QUEUED=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_PARALLEL_MODE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_PARALLEL_THREADS=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_PARALLEL_WORKERS=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_RUN_TRIGGERS_FOR_RBR=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_SQL_VERIFY_CHECKSUM=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_TRANSACTION_RETRY_INTERVAL=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_TYPE_CONVERSIONS=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_INIT_SLAVE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_SLAVE_ENABLED=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_SLAVE_DELAY_MASTER=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RPL_SEMI_SYNC_SLAVE_KILL_CONN_TIMEOUT=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RELAY_LOG_PURGE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_RELAY_LOG_RECOVERY=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SYNC_MASTER_INFO=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SYNC_RELAY_LOG=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SYNC_RELAY_LOG_INFO=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_CLEANUP_BATCH_SIZE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_IGNORE_DUPLICATES=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_POS_AUTO_ENGINES=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_SLAVE_POS=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_GTID_STRICT_MODE=
- REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+ REPL_SLAVE_ADMIN_ACL;
/* Privileges for federated database related statements */
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_CREATE_SERVER= FEDERATED_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_CREATE_SERVER= FEDERATED_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_ALTER_SERVER= FEDERATED_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_ALTER_SERVER= FEDERATED_ADMIN_ACL;
// Was SUPER_ACL prior to 10.5.2
-constexpr privilege_t PRIV_STMT_DROP_SERVER= FEDERATED_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_STMT_DROP_SERVER= FEDERATED_ADMIN_ACL;
/* Privileges related to processes */
@@ -658,6 +682,7 @@ constexpr privilege_t DB_CHUNK3 (VIEW_ACLS | PROC_DDL_ACLS);
constexpr privilege_t DB_CHUNK4 (EXECUTE_ACL);
constexpr privilege_t DB_CHUNK5 (EVENT_ACL | TRIGGER_ACL);
constexpr privilege_t DB_CHUNK6 (DELETE_HISTORY_ACL);
+constexpr privilege_t DB_CHUNK7 (SHOW_CREATE_ROUTINE_ACL);
static inline privilege_t fix_rights_for_db(privilege_t access)
@@ -670,7 +695,8 @@ static inline privilege_t fix_rights_for_db(privilege_t access)
((A << 9) & DB_CHUNK3) |
((A << 2) & DB_CHUNK4) |
((A << 9) & DB_CHUNK5) |
- ((A << 10) & DB_CHUNK6));
+ ((A << 10) & DB_CHUNK6) |
+ ((A << 19) & DB_CHUNK7));
}
static inline privilege_t get_rights_for_db(privilege_t access)
@@ -683,7 +709,8 @@ static inline privilege_t get_rights_for_db(privilege_t access)
((A & DB_CHUNK3) >> 9) |
((A & DB_CHUNK4) >> 2) |
((A & DB_CHUNK5) >> 9) |
- ((A & DB_CHUNK6) >> 10));
+ ((A & DB_CHUNK6) >> 10) |
+ ((A & DB_CHUNK7) >> 19));
}
@@ -737,9 +764,10 @@ static inline privilege_t fix_rights_for_procedure(privilege_t access)
{
ulonglong A(access);
return static_cast<privilege_t>
- (((A << 18) & EXECUTE_ACL) |
- ((A << 23) & ALTER_PROC_ACL) |
- ((A << 8) & GRANT_ACL));
+ (((A << 35) & SHOW_CREATE_ROUTINE_ACL) |
+ ((A << 18) & EXECUTE_ACL) |
+ ((A << 23) & ALTER_PROC_ACL) |
+ ((A << 8) & GRANT_ACL));
}
@@ -747,9 +775,10 @@ static inline privilege_t get_rights_for_procedure(privilege_t access)
{
ulonglong A(access);
return static_cast<privilege_t>
- (((A & EXECUTE_ACL) >> 18) |
- ((A & ALTER_PROC_ACL) >> 23) |
- ((A & GRANT_ACL) >> 8));
+ (((A & SHOW_CREATE_ROUTINE_ACL) >> 35) |
+ ((A & EXECUTE_ACL) >> 18) |
+ ((A & ALTER_PROC_ACL) >> 23) |
+ ((A & GRANT_ACL) >> 8));
}
diff --git a/sql/records.cc b/sql/records.cc
index 3aad36ca..eb4d5f4d 100644
--- a/sql/records.cc
+++ b/sql/records.cc
@@ -197,8 +197,7 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
info->table=table;
info->sort_info= filesort;
- if ((table->s->tmp_table == INTERNAL_TMP_TABLE) &&
- !using_addon_fields)
+ if ((table->s->tmp_table == INTERNAL_TMP_TABLE) && !using_addon_fields)
(void) table->file->extra(HA_EXTRA_MMAP);
if (using_addon_fields)
@@ -400,11 +399,8 @@ static int rr_handle_error(READ_RECORD *info, int error)
static int rr_quick(READ_RECORD *info)
{
int tmp;
- while ((tmp= info->select->quick->get_next()))
- {
+ if ((tmp= info->select->quick->get_next()))
tmp= rr_handle_error(info, tmp);
- break;
- }
return tmp;
}
@@ -427,16 +423,14 @@ static int rr_index_first(READ_RECORD *info)
int tmp;
// tell handler that we are doing an index scan
if ((tmp = info->table->file->prepare_index_scan()))
- {
- tmp= rr_handle_error(info, tmp);
- return tmp;
- }
+ goto err;
- tmp= info->table->file->ha_index_first(info->record());
info->read_record_func= rr_index;
- if (tmp)
- tmp= rr_handle_error(info, tmp);
- return tmp;
+ if (!(tmp= info->table->file->ha_index_first(info->record())))
+ return tmp;
+
+err:
+ return rr_handle_error(info, tmp);
}
@@ -455,9 +449,9 @@ static int rr_index_first(READ_RECORD *info)
static int rr_index_last(READ_RECORD *info)
{
- int tmp= info->table->file->ha_index_last(info->record());
+ int tmp;
info->read_record_func= rr_index_desc;
- if (tmp)
+ if ((tmp= info->table->file->ha_index_last(info->record())))
tmp= rr_handle_error(info, tmp);
return tmp;
}
diff --git a/sql/replication.h b/sql/replication.h
index 9a5254b4..982fcaab 100644
--- a/sql/replication.h
+++ b/sql/replication.h
@@ -480,27 +480,6 @@ int register_binlog_relay_io_observer(Binlog_relay_IO_observer *observer, void *
*/
int unregister_binlog_relay_io_observer(Binlog_relay_IO_observer *observer, void *p);
-/**
- Connect to master
-
- This function can only used in the slave I/O thread context, and
- will use the same master information to do the connection.
-
- @code
- MYSQL *mysql = mysql_init(NULL);
- if (rpl_connect_master(mysql))
- {
- // do stuff with the connection
- }
- mysql_close(mysql); // close the connection
- @endcode
-
- @param mysql address of MYSQL structure to use, pass NULL will
- create a new one
-
- @return address of MYSQL structure on success, NULL on failure
-*/
-MYSQL *rpl_connect_master(MYSQL *mysql);
/**
Get the value of user variable as an integer.
@@ -535,8 +514,7 @@ int get_user_var_int(const char *name,
@retval 0 Success
@retval 1 Variable not found
*/
-int get_user_var_real(const char *name,
- double *value, int *null_value);
+int get_user_var_real(const char *name, double *value, int *null_value);
/**
Get the value of user variable as a string.
diff --git a/sql/rowid_filter.cc b/sql/rowid_filter.cc
index d85bed96..d4fb958f 100644
--- a/sql/rowid_filter.cc
+++ b/sql/rowid_filter.cc
@@ -19,17 +19,21 @@
#include "sql_class.h"
#include "opt_range.h"
#include "rowid_filter.h"
+#include "optimizer_defaults.h"
#include "sql_select.h"
#include "opt_trace.h"
+/*
+ key_next_find_cost below is the cost of finding the next possible key
+ and calling handler_rowid_filter_check() to check it against the filter
+*/
-inline
-double Range_rowid_filter_cost_info::lookup_cost(
- Rowid_filter_container_type cont_type)
+double Range_rowid_filter_cost_info::
+lookup_cost(Rowid_filter_container_type cont_type)
{
switch (cont_type) {
case SORTED_ARRAY_CONTAINER:
- return log(est_elements)*0.01;
+ return log2(est_elements) * rowid_compare_cost + base_lookup_cost;
default:
DBUG_ASSERT(0);
return 0;
@@ -39,14 +43,16 @@ double Range_rowid_filter_cost_info::lookup_cost(
/**
@brief
- The average gain in cost per row to use the range filter with this cost info
+ The average gain in cost per row to use the range filter with this cost
+ info
*/
inline
-double Range_rowid_filter_cost_info::avg_access_and_eval_gain_per_row(
- Rowid_filter_container_type cont_type)
+double Range_rowid_filter_cost_info::
+avg_access_and_eval_gain_per_row(Rowid_filter_container_type cont_type,
+ double cost_of_row_fetch)
{
- return (1+1.0/TIME_FOR_COMPARE) * (1 - selectivity) -
+ return (cost_of_row_fetch + where_cost) * (1 - selectivity) -
lookup_cost(cont_type);
}
@@ -58,8 +64,9 @@ double Range_rowid_filter_cost_info::avg_access_and_eval_gain_per_row(
@param access_cost_factor the adjusted cost of access a row
@details
- The current code to estimate the cost of a ref access is quite inconsistent:
- in some cases the effect of page buffers is taken into account, for others
+ The current code to estimate the cost of a ref access is quite
+ inconsistent:
+ In some cases the effect of page buffers is taken into account, for others
just the engine dependent read_time() is employed. That's why the average
cost of one random seek might differ from 1.
The parameter access_cost_factor can be considered as the cost of a random
@@ -74,10 +81,11 @@ double Range_rowid_filter_cost_info::avg_access_and_eval_gain_per_row(
*/
inline
-double Range_rowid_filter_cost_info::avg_adjusted_gain_per_row(
- double access_cost_factor)
+double Range_rowid_filter_cost_info::
+avg_adjusted_gain_per_row(double access_cost_factor)
{
- return a - (1 - access_cost_factor) * (1 - selectivity);
+ DBUG_ASSERT(access_cost_factor >= 0.0 && access_cost_factor <= 1.0);
+ return gain - (1 - access_cost_factor) * (1 - selectivity);
}
@@ -91,10 +99,11 @@ double Range_rowid_filter_cost_info::avg_adjusted_gain_per_row(
*/
inline void
-Range_rowid_filter_cost_info::set_adjusted_gain_param(double access_cost_factor)
+Range_rowid_filter_cost_info::
+set_adjusted_gain_param(double access_cost_factor)
{
- a_adj= avg_adjusted_gain_per_row(access_cost_factor);
- cross_x_adj= b / a_adj;
+ gain_adj= avg_adjusted_gain_per_row(access_cost_factor);
+ cross_x_adj= cost_of_building_range_filter / gain_adj;
}
@@ -116,13 +125,20 @@ void Range_rowid_filter_cost_info::init(Rowid_filter_container_type cont_type,
table= tab;
key_no= idx;
est_elements= (ulonglong) table->opt_range[key_no].rows;
- b= build_cost(container_type);
+ cost_of_building_range_filter= build_cost(container_type);
+
+ where_cost= tab->in_use->variables.optimizer_where_cost;
+ base_lookup_cost= (ROWID_FILTER_PER_CHECK_MODIFIER *
+ tab->file->KEY_COPY_COST);
+ rowid_compare_cost= (ROWID_FILTER_PER_ELEMENT_MODIFIER *
+ tab->file->ROWID_COMPARE_COST);
selectivity= est_elements/((double) table->stat_records());
- a= avg_access_and_eval_gain_per_row(container_type);
- if (a > 0)
- cross_x= b/a;
+ gain= avg_access_and_eval_gain_per_row(container_type,
+ tab->file->ROW_LOOKUP_COST);
+ if (gain > 0)
+ cross_x= cost_of_building_range_filter/gain;
else
- cross_x= b+1;
+ cross_x= cost_of_building_range_filter+1;
abs_independent.clear_all();
}
@@ -135,16 +151,19 @@ void Range_rowid_filter_cost_info::init(Rowid_filter_container_type cont_type,
double
Range_rowid_filter_cost_info::build_cost(Rowid_filter_container_type cont_type)
{
- double cost= 0;
+ double cost;
+ OPTIMIZER_COSTS *costs= &table->s->optimizer_costs;
DBUG_ASSERT(table->opt_range_keys.is_set(key_no));
- cost+= table->opt_range[key_no].index_only_cost;
+ /* Cost of fetching keys */
+ cost= table->opt_range[key_no].index_only_fetch_cost(table);
switch (cont_type) {
-
case SORTED_ARRAY_CONTAINER:
- cost+= ARRAY_WRITE_COST * est_elements; /* cost filling the container */
- cost+= ARRAY_SORT_C * est_elements * log(est_elements); /* sorting cost */
+ /* Add cost of filling container and cost of sorting */
+ cost+= (est_elements *
+ (costs->rowid_copy_cost + // Copying rowid
+ costs->rowid_cmp_cost * log2(est_elements))); // Sort
break;
default:
DBUG_ASSERT(0);
@@ -177,7 +196,7 @@ int compare_range_rowid_filter_cost_info_by_a(
Range_rowid_filter_cost_info **filter_ptr_1,
Range_rowid_filter_cost_info **filter_ptr_2)
{
- double diff= (*filter_ptr_2)->get_a() - (*filter_ptr_1)->get_a();
+ double diff= (*filter_ptr_2)->get_gain() - (*filter_ptr_1)->get_gain();
return (diff < 0 ? -1 : (diff > 0 ? 1 : 0));
}
@@ -204,7 +223,8 @@ void TABLE::prune_range_rowid_filters()
the elements if this bit matrix.
*/
- Range_rowid_filter_cost_info **filter_ptr_1= range_rowid_filter_cost_info_ptr;
+ Range_rowid_filter_cost_info **filter_ptr_1=
+ range_rowid_filter_cost_info_ptr;
for (uint i= 0;
i < range_rowid_filter_cost_info_elems;
i++, filter_ptr_1++)
@@ -243,7 +263,7 @@ void TABLE::prune_range_rowid_filters()
*/
Range_rowid_filter_cost_info **cand_filter_ptr=
- range_rowid_filter_cost_info_ptr;
+ range_rowid_filter_cost_info_ptr;
for (uint i= 0;
i < range_rowid_filter_cost_info_elems;
i++, cand_filter_ptr++)
@@ -361,9 +381,7 @@ void TABLE::init_cost_info_for_usable_range_rowid_filters(THD *thd)
*/
while ((key_no= it++) != key_map::Iterator::BITMAP_END)
{
- if (!(file->index_flags(key_no, 0, 1) & HA_DO_RANGE_FILTER_PUSHDOWN)) // !1
- continue;
- if (file->is_clustering_key(key_no)) // !2
+ if (!can_use_rowid_filter(key_no)) // 1 & 2
continue;
if (opt_range[key_no].rows >
get_max_range_rowid_filter_elems_for_table(thd, this,
@@ -418,6 +436,7 @@ void TABLE::init_cost_info_for_usable_range_rowid_filters(THD *thd)
void TABLE::trace_range_rowid_filters(THD *thd) const
{
+ DBUG_ASSERT(thd->trace_started());
if (!range_rowid_filter_cost_info_elems)
return;
@@ -435,45 +454,55 @@ void TABLE::trace_range_rowid_filters(THD *thd) const
void Range_rowid_filter_cost_info::trace_info(THD *thd)
{
+ DBUG_ASSERT(thd->trace_started());
Json_writer_object js_obj(thd);
- js_obj.add("key", table->key_info[key_no].name);
- js_obj.add("build_cost", b);
- js_obj.add("rows", est_elements);
+ js_obj.
+ add("key", table->key_info[key_no].name).
+ add("build_cost", cost_of_building_range_filter).
+ add("rows", est_elements);
}
/**
@brief
Choose the best range filter for the given access of the table
- @param access_key_no The index by which the table is accessed
- @param records The estimated total number of key tuples with this access
- @param access_cost_factor the cost of a random seek to access the table
-
+ @param access_key_no The index by which the table is accessed
+ @param records The estimated total number of key tuples with
+ this access
+ @param fetch_cost_factor The cost of fetching 'records' rows
+ @param index_only_cost The cost of fetching 'records' rows with
+ index only reads
+ @param prev_records How many index_read_calls() we expect to make
+ @parma records_out Will be updated to the minimum result rows for any
+ usable filter.
@details
The function looks through the array of cost info for range filters
and chooses the element for the range filter that promise the greatest
gain with the the ref or range access of the table by access_key_no.
- As the array is sorted by cross_x in ascending order the function stops
- the look through as soon as it reaches the first element with
- cross_x_adj > records because the range filter for this element and the
- range filters for all remaining elements do not promise positive gains.
- @note
- It is easy to see that if cross_x[i] > cross_x[j] then
- cross_x_adj[i] > cross_x_adj[j]
+ The function assumes that caller has checked that the key is not a clustered
+ key. See best_access_path().
@retval Pointer to the cost info for the range filter that promises
the greatest gain, NULL if there is no such range filter
*/
Range_rowid_filter_cost_info *
-TABLE::best_range_rowid_filter_for_partial_join(uint access_key_no,
- double records,
- double access_cost_factor)
+TABLE::best_range_rowid_filter(uint access_key_no, double records,
+ double fetch_cost, double index_only_cost,
+ double prev_records, double *records_out)
{
if (range_rowid_filter_cost_info_elems == 0 ||
covering_keys.is_set(access_key_no))
return 0;
+ /*
+ Currently we do not support usage of range filters if the table
+ is accessed by the clustered primary key. It does not make sense
+ if a full key is used. If the table is accessed by a partial
+ clustered primary key it would, but the current InnoDB code does not
+ allow it. Later this limitation may be lifted.
+ */
+ DBUG_ASSERT(!file->is_clustering_key(access_key_no));
// Disallow use of range filter if the key contains partially-covered
// columns.
@@ -483,46 +512,38 @@ TABLE::best_range_rowid_filter_for_partial_join(uint access_key_no,
return 0;
}
- /*
- Currently we do not support usage of range filters if the table
- is accessed by the clustered primary key. It does not make sense
- if a full key is used. If the table is accessed by a partial
- clustered primary key it would, but the current InnoDB code does not
- allow it. Later this limitation will be lifted
- */
- if (file->is_clustering_key(access_key_no))
- return 0;
-
Range_rowid_filter_cost_info *best_filter= 0;
- double best_filter_gain= 0;
+ double best_filter_gain= DBL_MAX;
key_map no_filter_usage= key_info[access_key_no].overlapped;
no_filter_usage.merge(key_info[access_key_no].constraint_correlated);
+ no_filter_usage.set_bit(access_key_no);
for (uint i= 0; i < range_rowid_filter_cost_info_elems ; i++)
{
- double curr_gain = 0;
+ double new_cost, new_total_cost, new_records;
+ double cost_of_accepted_rows, cost_of_rejected_rows;
Range_rowid_filter_cost_info *filter= range_rowid_filter_cost_info_ptr[i];
/*
Do not use a range filter that uses an in index correlated with
the index by which the table is accessed
*/
- if ((filter->key_no == access_key_no) ||
- no_filter_usage.is_set(filter->key_no))
+ if (no_filter_usage.is_set(filter->key_no))
continue;
- filter->set_adjusted_gain_param(access_cost_factor);
-
- if (records < filter->cross_x_adj)
+ new_records= records * filter->selectivity;
+ set_if_smaller(*records_out, new_records);
+ cost_of_accepted_rows= fetch_cost * filter->selectivity;
+ cost_of_rejected_rows= index_only_cost * (1 - filter->selectivity);
+ new_cost= (cost_of_accepted_rows + cost_of_rejected_rows +
+ records * filter->lookup_cost());
+ new_total_cost= ((new_cost + new_records *
+ in_use->variables.optimizer_where_cost) *
+ prev_records + filter->get_setup_cost());
+
+ if (best_filter_gain > new_total_cost)
{
- /* Does not make sense to look through the remaining filters */
- break;
- }
-
- curr_gain= filter->get_adjusted_gain(records);
- if (best_filter_gain < curr_gain)
- {
- best_filter_gain= curr_gain;
+ best_filter_gain= new_total_cost;
best_filter= filter;
}
}
@@ -562,21 +583,22 @@ Rowid_filter::build_return_code Range_rowid_filter::build()
handler *file= table->file;
THD *thd= table->in_use;
QUICK_RANGE_SELECT* quick= (QUICK_RANGE_SELECT*) select->quick;
-
uint table_status_save= table->status;
Item *pushed_idx_cond_save= file->pushed_idx_cond;
uint pushed_idx_cond_keyno_save= file->pushed_idx_cond_keyno;
bool in_range_check_pushed_down_save= file->in_range_check_pushed_down;
+ int org_keyread;
table->status= 0;
file->pushed_idx_cond= 0;
file->pushed_idx_cond_keyno= MAX_KEY;
file->in_range_check_pushed_down= false;
- /* We're going to just read rowids / primary keys */
+ /* We're going to just read rowids / clustered primary keys */
table->prepare_for_position();
- table->file->ha_start_keyread(quick->index);
+ org_keyread= file->ha_end_active_keyread();
+ file->ha_start_keyread(quick->index);
if (quick->init() || quick->reset())
rc= FATAL_ERROR;
@@ -585,7 +607,7 @@ Rowid_filter::build_return_code Range_rowid_filter::build()
for (;;)
{
int quick_get_next_result= quick->get_next();
- if (thd->killed)
+ if (thd->check_killed())
{
rc= FATAL_ERROR;
break;
@@ -607,22 +629,26 @@ Rowid_filter::build_return_code Range_rowid_filter::build()
rc= NON_FATAL_ERROR;
break;
}
- else
- tracker->increment_container_elements_count();
}
}
quick->range_end();
- table->file->ha_end_keyread();
+ file->ha_end_keyread();
+ file->ha_restart_keyread(org_keyread);
table->status= table_status_save;
file->pushed_idx_cond= pushed_idx_cond_save;
file->pushed_idx_cond_keyno= pushed_idx_cond_keyno_save;
file->in_range_check_pushed_down= in_range_check_pushed_down_save;
- tracker->report_container_buff_size(table->file->ref_length);
- if (rc == SUCCESS)
- table->file->rowid_filter_is_active= true;
+ tracker->set_container_elements_count(container->elements());
+ tracker->report_container_buff_size(file->ref_length);
+
+ if (rc != SUCCESS)
+ return rc;
+
+ container->sort(refpos_order_cmp, (void *) file);
+ table->file->rowid_filter_is_active= true;
return rc;
}
@@ -646,18 +672,13 @@ Rowid_filter::build_return_code Range_rowid_filter::build()
bool Rowid_filter_sorted_array::check(void *ctxt, char *elem)
{
- TABLE *table= (TABLE *) ctxt;
- if (!is_checked)
- {
- refpos_container.sort(refpos_order_cmp, (void *) (table->file));
- is_checked= true;
- }
+ handler *file= ((TABLE *) ctxt)->file;
int l= 0;
int r= refpos_container.elements()-1;
while (l <= r)
{
int m= (l + r) / 2;
- int cmp= refpos_order_cmp((void *) (table->file),
+ int cmp= refpos_order_cmp((void *) file,
refpos_container.get_pos(m), elem);
if (cmp == 0)
return true;
@@ -674,14 +695,6 @@ Range_rowid_filter::~Range_rowid_filter()
{
delete container;
container= 0;
- if (select)
- {
- if (select->quick)
- {
- delete select->quick;
- select->quick= 0;
- }
- delete select;
- select= 0;
- }
+ delete select;
+ select= 0;
}
diff --git a/sql/rowid_filter.h b/sql/rowid_filter.h
index b1bf4890..286d3b50 100644
--- a/sql/rowid_filter.h
+++ b/sql/rowid_filter.h
@@ -143,13 +143,6 @@ class SQL_SELECT;
class Rowid_filter_container;
class Range_rowid_filter_cost_info;
-/* Cost to write rowid into array */
-#define ARRAY_WRITE_COST 0.005
-/* Factor used to calculate cost of sorting rowids in array */
-#define ARRAY_SORT_C 0.01
-/* Cost to evaluate condition */
-#define COST_COND_EVAL 0.2
-
typedef enum
{
SORTED_ARRAY_CONTAINER,
@@ -193,7 +186,10 @@ public:
virtual bool check(void *ctxt, char *elem) = 0;
/* True if the container does not contain any element */
- virtual bool is_empty() = 0;
+ bool is_empty() { return elements() == 0; }
+ virtual uint elements() = 0;
+ virtual void sort (int (*cmp) (void *ctxt, const void *el1, const void *el2),
+ void *cmp_arg) = 0;
virtual ~Rowid_filter_container() = default;
};
@@ -274,9 +270,9 @@ public:
~Range_rowid_filter();
- build_return_code build();
+ build_return_code build() override;
- bool check(char *elem)
+ bool check(char *elem) override
{
if (container->is_empty())
return false;
@@ -306,52 +302,49 @@ class Refpos_container_sorted_array : public Sql_alloc
/* Number of bytes allocated for an element */
uint elem_size;
/* The dynamic array over which the wrapper is built */
- Dynamic_array<char> *array;
+ DYNAMIC_ARRAY array;
+ DYNAMIC_ARRAY_APPEND append;
public:
Refpos_container_sorted_array(uint max_elems, uint elem_sz)
- : max_elements(max_elems), elem_size(elem_sz), array(0) {}
+ :max_elements(max_elems), elem_size(elem_sz)
+ {
+ bzero(&array, sizeof(array));
+ }
~Refpos_container_sorted_array()
{
- delete array;
- array= 0;
+ delete_dynamic(&array);
}
bool alloc()
{
- array= new Dynamic_array<char> (PSI_INSTRUMENT_MEM,
- elem_size * max_elements,
- elem_size * max_elements/sizeof(char) + 1);
- return array == NULL;
+ /* This can never fail as things will be allocated on demand */
+ init_dynamic_array2(PSI_INSTRUMENT_MEM, &array, elem_size, 0,
+ max_elements, 512, MYF(0));
+ init_append_dynamic(&append, &array);
+ return 0;
}
- bool add(char *elem)
+ bool add(const char *elem)
{
- for (uint i= 0; i < elem_size; i++)
- {
- if (array->append(elem[i]))
- return true;
- }
- return false;
+ return append_dynamic(&append, elem);
}
- char *get_pos(uint n)
+ inline uchar *get_pos(uint n) const
{
- return array->get_pos(n * elem_size);
+ return dynamic_array_ptr(&array, n);
}
- uint elements() { return (uint) (array->elements() / elem_size); }
+ inline uint elements() const { return (uint) array.elements; }
void sort (int (*cmp) (void *ctxt, const void *el1, const void *el2),
void *cmp_arg)
{
- my_qsort2(array->front(), array->elements()/elem_size,
+ my_qsort2(array.buffer, array.elements,
elem_size, (qsort2_cmp) cmp, cmp_arg);
}
-
- bool is_empty() { return elements() == 0; }
};
@@ -366,23 +359,29 @@ class Rowid_filter_sorted_array: public Rowid_filter_container
{
/* The dynamic array to store rowids / primary keys */
Refpos_container_sorted_array refpos_container;
- /* Initially false, becomes true after the first call of (check() */
- bool is_checked;
public:
Rowid_filter_sorted_array(uint elems, uint elem_size)
- : refpos_container(elems, elem_size), is_checked(false) {}
+ : refpos_container(elems, elem_size) {}
- Rowid_filter_container_type get_type()
+ Rowid_filter_container_type get_type() override
{ return SORTED_ARRAY_CONTAINER; }
- bool alloc() { return refpos_container.alloc(); }
+ bool alloc() override { return refpos_container.alloc(); }
- bool add(void *ctxt, char *elem) { return refpos_container.add(elem); }
+ bool add(void *ctxt, char *elem) override
+ { return refpos_container.add(elem); }
- bool check(void *ctxt, char *elem);
+ bool check(void *ctxt, char *elem) override;
+
+ uint elements() override { return refpos_container.elements(); }
+
+ void sort (int (*cmp) (void *ctxt, const void *el1, const void *el2),
+ void *cmp_arg) override
+ {
+ return refpos_container.sort(cmp, cmp_arg);
+ }
- bool is_empty() { return refpos_container.is_empty(); }
};
/**
@@ -393,20 +392,24 @@ public:
whether usage of the range filter promises some gain.
*/
-class Range_rowid_filter_cost_info : public Sql_alloc
+class Range_rowid_filter_cost_info final: public Sql_alloc
{
/* The table for which the range filter is to be built (if needed) */
TABLE *table;
/* Estimated number of elements in the filter */
ulonglong est_elements;
- /* The cost of building the range filter */
- double b;
+ /* The index whose range scan would be used to build the range filter */
+ uint key_no;
+ double cost_of_building_range_filter;
+ double where_cost, base_lookup_cost, rowid_compare_cost;
+
/*
- a*N-b yields the gain of the filter
- for N key tuples of the index key_no
+ (gain*row_combinations)-cost_of_building_range_filter yields the gain of
+ the filter for 'row_combinations' key tuples of the index key_no
+ calculated with avg_access_and_eval_gain_per_row(container_type);
*/
- double a;
- /* The value of N where the gain is 0 */
+ double gain;
+ /* The value of row_combinations where the gain is 0 */
double cross_x;
/* Used for pruning of the potential range filters */
key_map abs_independent;
@@ -415,16 +418,14 @@ class Range_rowid_filter_cost_info : public Sql_alloc
These two parameters are used to choose the best range filter
in the function TABLE::best_range_rowid_filter_for_partial_join
*/
- double a_adj;
+ double gain_adj;
double cross_x_adj;
public:
- /* The type of the container of the range filter */
- Rowid_filter_container_type container_type;
- /* The index whose range scan would be used to build the range filter */
- uint key_no;
/* The selectivity of the range filter */
double selectivity;
+ /* The type of the container of the range filter */
+ Rowid_filter_container_type container_type;
Range_rowid_filter_cost_info() : table(0), key_no(0) {}
@@ -433,39 +434,44 @@ public:
double build_cost(Rowid_filter_container_type container_type);
- inline double lookup_cost(Rowid_filter_container_type cont_type);
+ double lookup_cost(Rowid_filter_container_type cont_type);
+ inline double lookup_cost() { return lookup_cost(container_type); }
inline double
- avg_access_and_eval_gain_per_row(Rowid_filter_container_type cont_type);
+ avg_access_and_eval_gain_per_row(Rowid_filter_container_type cont_type,
+ double cost_of_row_fetch);
inline double avg_adjusted_gain_per_row(double access_cost_factor);
inline void set_adjusted_gain_param(double access_cost_factor);
/* Get the gain that usage of filter promises for r key tuples */
- inline double get_gain(double r)
+ inline double get_gain(double row_combinations)
{
- return r * a - b;
+ return row_combinations * gain - cost_of_building_range_filter;
}
/* Get the adjusted gain that usage of filter promises for r key tuples */
- inline double get_adjusted_gain(double r)
+ inline double get_adjusted_gain(double row_combinations)
{
- return r * a_adj - b;
+ return row_combinations * gain_adj - cost_of_building_range_filter;
}
/*
The gain promised by usage of the filter for r key tuples
due to less condition evaluations
*/
- inline double get_cmp_gain(double r)
+ inline double get_cmp_gain(double row_combinations)
{
- return r * (1 - selectivity) / TIME_FOR_COMPARE;
+ return (row_combinations * (1 - selectivity) * where_cost);
}
Rowid_filter_container *create_container();
- double get_a() { return a; }
+ double get_setup_cost() { return cost_of_building_range_filter; }
+ double get_lookup_cost();
+ double get_gain() { return gain; }
+ uint get_key_no() { return key_no; }
void trace_info(THD *thd);
@@ -475,11 +481,20 @@ public:
friend
void TABLE::init_cost_info_for_usable_range_rowid_filters(THD *thd);
+ /* Best range row id filter for parital join */
friend
Range_rowid_filter_cost_info *
- TABLE::best_range_rowid_filter_for_partial_join(uint access_key_no,
- double records,
- double access_cost_factor);
+ TABLE::best_range_rowid_filter(uint access_key_no,
+ double records,
+ double fetch_cost,
+ double index_only_cost,
+ double prev_records,
+ double *records_out);
+ Range_rowid_filter_cost_info *
+ apply_filter(THD *thd, TABLE *table, ALL_READ_COST *cost,
+ double *records_arg,
+ double *startup_cost,
+ uint ranges, double record_count);
};
#endif /* ROWID_FILTER_INCLUDED */
diff --git a/sql/rpl_gtid.cc b/sql/rpl_gtid.cc
index 20188d6c..27c10f21 100644
--- a/sql/rpl_gtid.cc
+++ b/sql/rpl_gtid.cc
@@ -1542,19 +1542,18 @@ rpl_slave_state::alloc_gtid_pos_table(LEX_CSTRING *table_name, void *hton,
}
-void rpl_binlog_state::init()
+void
+rpl_binlog_state_base::init()
{
my_hash_init(PSI_INSTRUMENT_ME, &hash, &my_charset_bin, 32,
offsetof(element, domain_id), sizeof(element::domain_id),
NULL, my_free, HASH_UNIQUE);
- my_init_dynamic_array(PSI_INSTRUMENT_ME, &gtid_sort_array, sizeof(rpl_gtid), 8, 8, MYF(0));
- mysql_mutex_init(key_LOCK_binlog_state, &LOCK_binlog_state,
- MY_MUTEX_INIT_SLOW);
initialized= 1;
}
+
void
-rpl_binlog_state::reset_nolock()
+rpl_binlog_state_base::reset_nolock()
{
uint32 i;
@@ -1565,72 +1564,67 @@ rpl_binlog_state::reset_nolock()
void
-rpl_binlog_state::reset()
-{
- mysql_mutex_lock(&LOCK_binlog_state);
- reset_nolock();
- mysql_mutex_unlock(&LOCK_binlog_state);
-}
-
-
-void rpl_binlog_state::free()
+rpl_binlog_state_base::free()
{
if (initialized)
{
initialized= 0;
reset_nolock();
my_hash_free(&hash);
- delete_dynamic(&gtid_sort_array);
- mysql_mutex_destroy(&LOCK_binlog_state);
}
}
+rpl_binlog_state_base::~rpl_binlog_state_base()
+{
+ free();
+}
+
+
bool
-rpl_binlog_state::load(struct rpl_gtid *list, uint32 count)
+rpl_binlog_state_base::load_nolock(struct rpl_gtid *list, uint32 count)
{
uint32 i;
bool res= false;
- mysql_mutex_lock(&LOCK_binlog_state);
reset_nolock();
for (i= 0; i < count; ++i)
{
- if (update_nolock(&(list[i]), false))
+ if (update_nolock(&(list[i])))
{
res= true;
break;
}
}
- mysql_mutex_unlock(&LOCK_binlog_state);
return res;
}
-static int rpl_binlog_state_load_cb(rpl_gtid *gtid, void *data)
-{
- rpl_binlog_state *self= (rpl_binlog_state *)data;
- return self->update_nolock(gtid, false);
-}
-
-
bool
-rpl_binlog_state::load(rpl_slave_state *slave_pos)
+rpl_binlog_state_base::load_nolock(rpl_binlog_state_base *orig_state)
{
- bool res= false;
+ ulong i, j;
+ HASH *h1= &orig_state->hash;
- mysql_mutex_lock(&LOCK_binlog_state);
reset_nolock();
- if (slave_pos->iterate(rpl_binlog_state_load_cb, this, NULL, 0, false))
- res= true;
- mysql_mutex_unlock(&LOCK_binlog_state);
- return res;
-}
-
+ for (i= 0; i < h1->records; ++i)
+ {
+ element *e= (element *)my_hash_element(h1, i);
+ HASH *h2= &e->hash;
+ const rpl_gtid *last_gtid= e->last_gtid;
+ for (j= 0; j < h2->records; ++j)
+ {
+ const rpl_gtid *gtid= (const rpl_gtid *)my_hash_element(h2, j);
+ if (gtid == last_gtid)
+ continue;
+ if (update_nolock(gtid))
+ return true;
+ }
+ if (likely(last_gtid) && update_nolock(last_gtid))
+ return true;
+ }
-rpl_binlog_state::~rpl_binlog_state()
-{
- free();
+ return false;
}
@@ -1640,10 +1634,13 @@ rpl_binlog_state::~rpl_binlog_state()
If the (domain_id, server_id) pair already exists, then the new GTID replaces
the old one for that domain id. Else a new entry is inserted.
+ Note that rpl_binlog_state_base::update_nolock() does not call my_error()
+ for out-of-memory, caller must do that if needed (eg. ER_OUT_OF_RESOURCES).
+
Returns 0 for ok, 1 for error.
*/
int
-rpl_binlog_state::update_nolock(const struct rpl_gtid *gtid, bool strict)
+rpl_binlog_state_base::update_nolock(const struct rpl_gtid *gtid)
{
element *elem;
@@ -1651,13 +1648,6 @@ rpl_binlog_state::update_nolock(const struct rpl_gtid *gtid, bool strict)
(const uchar *)(&gtid->domain_id),
sizeof(gtid->domain_id))))
{
- if (strict && elem->last_gtid && elem->last_gtid->seq_no >= gtid->seq_no)
- {
- my_error(ER_GTID_STRICT_OUT_OF_ORDER, MYF(0), gtid->domain_id,
- gtid->server_id, gtid->seq_no, elem->last_gtid->domain_id,
- elem->last_gtid->server_id, elem->last_gtid->seq_no);
- return 1;
- }
if (elem->seq_no_counter < gtid->seq_no)
elem->seq_no_counter= gtid->seq_no;
if (!elem->update_element(gtid))
@@ -1666,17 +1656,267 @@ rpl_binlog_state::update_nolock(const struct rpl_gtid *gtid, bool strict)
else if (!alloc_element_nolock(gtid))
return 0;
- my_error(ER_OUT_OF_RESOURCES, MYF(0));
return 1;
}
int
+rpl_binlog_state_base::alloc_element_nolock(const rpl_gtid *gtid)
+{
+ element *elem;
+ rpl_gtid *lookup_gtid;
+
+ /* First time we see this domain_id; allocate a new element. */
+ elem= (element *)my_malloc(PSI_INSTRUMENT_ME, sizeof(*elem), MYF(0));
+ lookup_gtid= (rpl_gtid *)my_malloc(PSI_INSTRUMENT_ME, sizeof(*lookup_gtid),
+ MYF(0));
+ if (elem && lookup_gtid)
+ {
+ elem->domain_id= gtid->domain_id;
+ my_hash_init(PSI_INSTRUMENT_ME, &elem->hash, &my_charset_bin, 32,
+ offsetof(rpl_gtid, server_id), sizeof(rpl_gtid::domain_id),
+ NULL, my_free, HASH_UNIQUE);
+ elem->last_gtid= lookup_gtid;
+ elem->seq_no_counter= gtid->seq_no;
+ memcpy(lookup_gtid, gtid, sizeof(*lookup_gtid));
+ if (0 == my_hash_insert(&elem->hash, (const uchar *)lookup_gtid))
+ {
+ lookup_gtid= NULL; /* Do not free. */
+ if (0 == my_hash_insert(&hash, (const uchar *)elem))
+ return 0;
+ }
+ my_hash_free(&elem->hash);
+ }
+
+ /* An error. */
+ if (elem)
+ my_free(elem);
+ if (lookup_gtid)
+ my_free(lookup_gtid);
+ return 1;
+}
+
+
+uint32
+rpl_binlog_state_base::count_nolock()
+{
+ uint32 c= 0;
+ uint32 i;
+
+ for (i= 0; i < hash.records; ++i)
+ c+= ((element *)my_hash_element(&hash, i))->hash.records;
+
+ return c;
+}
+
+
+int
+rpl_binlog_state_base::get_gtid_list_nolock(rpl_gtid *gtid_list, uint32 list_size)
+{
+ uint32 i, j, pos;
+
+ pos= 0;
+ for (i= 0; i < hash.records; ++i)
+ {
+ element *e= (element *)my_hash_element(&hash, i);
+ if (!e->last_gtid)
+ {
+ DBUG_ASSERT(e->hash.records==0);
+ continue;
+ }
+ for (j= 0; j <= e->hash.records; ++j)
+ {
+ const rpl_gtid *gtid;
+ if (j < e->hash.records)
+ {
+ gtid= (rpl_gtid *)my_hash_element(&e->hash, j);
+ if (gtid == e->last_gtid)
+ continue;
+ }
+ else
+ gtid= e->last_gtid;
+
+ if (pos >= list_size)
+ return 1;
+ memcpy(&gtid_list[pos++], gtid, sizeof(*gtid));
+ }
+ }
+
+ return 0;
+}
+
+
+rpl_gtid *
+rpl_binlog_state_base::find_nolock(uint32 domain_id, uint32 server_id)
+{
+ element *elem;
+ if (!(elem= (element *)my_hash_search(&hash, (const uchar *)&domain_id,
+ sizeof(domain_id))))
+ return NULL;
+ return (rpl_gtid *)my_hash_search(&elem->hash, (const uchar *)&server_id,
+ sizeof(server_id));
+}
+
+
+/*
+ Return true if this binlog state is before the position specified by the
+ passed-in slave_connection_state, false otherwise.
+ Note that if the GTID D-S-N is the last GTID added to the state in the
+ domain D, then the state is considered to come before the position D-S-N
+ within domain D.
+*/
+bool
+rpl_binlog_state_base::is_before_pos(slave_connection_state *pos)
+{
+ /*
+ First check each GTID in the slave position, if it comes after what is
+ in the state.
+ */
+ for (uint32 i= 0; i < pos->hash.records; ++i)
+ {
+ const slave_connection_state::entry *e=
+ (const slave_connection_state::entry *)my_hash_element(&pos->hash, i);
+ /*
+ IF we have an entry with the same (domain_id, server_id),
+ AND either
+ ( we are ahead in that server_id
+ OR we are identical, but there's some other server_id after)
+ THEN that position lies before our state.
+ */
+ element *elem;
+ if ((elem= (element *)my_hash_search(&hash,
+ (const uchar *)&e->gtid.domain_id,
+ sizeof(e->gtid.domain_id))))
+ {
+ const rpl_gtid *g= (rpl_gtid *)
+ my_hash_search(&elem->hash, (const uchar *)&e->gtid.server_id,
+ sizeof(e->gtid.server_id));
+ if (g != nullptr &&
+ ( g->seq_no > e->gtid.seq_no ||
+ ( g->seq_no == e->gtid.seq_no && g != elem->last_gtid) ))
+ return false;
+ }
+ }
+
+ /*
+ Then check the state, if there are any domains present that are missing
+ from the position.
+ */
+ for (uint32 i= 0; i < hash.records; ++i)
+ {
+ const element *elem= (const element *) my_hash_element(&hash, i);
+ if (likely(elem->hash.records > 0) &&
+ !pos->find(elem->domain_id))
+ return false;
+ }
+
+ /* Nothing in our state lies after anything in the position. */
+ return true;
+}
+
+
+void rpl_binlog_state::init()
+{
+ rpl_binlog_state_base::init();
+ my_init_dynamic_array(PSI_INSTRUMENT_ME, &gtid_sort_array, sizeof(rpl_gtid), 8, 8, MYF(0));
+ mysql_mutex_init(key_LOCK_binlog_state, &LOCK_binlog_state,
+ MY_MUTEX_INIT_SLOW);
+}
+
+
+void
+rpl_binlog_state::reset()
+{
+ mysql_mutex_lock(&LOCK_binlog_state);
+ reset_nolock();
+ mysql_mutex_unlock(&LOCK_binlog_state);
+}
+
+
+void rpl_binlog_state::free()
+{
+ if (initialized)
+ {
+ rpl_binlog_state_base::free();
+ delete_dynamic(&gtid_sort_array);
+ mysql_mutex_destroy(&LOCK_binlog_state);
+ }
+}
+
+
+rpl_binlog_state::~rpl_binlog_state()
+{
+ free();
+}
+
+
+bool
+rpl_binlog_state::load(struct rpl_gtid *list, uint32 count)
+{
+ mysql_mutex_lock(&LOCK_binlog_state);
+ bool res= load_nolock(list, count);
+ mysql_mutex_unlock(&LOCK_binlog_state);
+ if (res)
+ my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ return res;
+}
+
+
+static int rpl_binlog_state_load_cb(rpl_gtid *gtid, void *data)
+{
+ rpl_binlog_state *self= (rpl_binlog_state *)data;
+ return self->update_nolock(gtid);
+}
+
+
+bool
+rpl_binlog_state::load(rpl_slave_state *slave_pos)
+{
+ bool res= false;
+
+ mysql_mutex_lock(&LOCK_binlog_state);
+ reset_nolock();
+ if (slave_pos->iterate(rpl_binlog_state_load_cb, this, NULL, 0, false))
+ {
+ my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ res= true;
+ }
+ mysql_mutex_unlock(&LOCK_binlog_state);
+ return res;
+}
+
+
+int
rpl_binlog_state::update(const struct rpl_gtid *gtid, bool strict)
{
- int res;
+ int res= 0;
+ element *elem;
+
mysql_mutex_lock(&LOCK_binlog_state);
- res= update_nolock(gtid, strict);
+ if ((elem= (element *)my_hash_search(&hash,
+ (const uchar *)(&gtid->domain_id),
+ sizeof(gtid->domain_id))))
+ {
+ if (strict && elem->last_gtid && elem->last_gtid->seq_no >= gtid->seq_no)
+ {
+ my_error(ER_GTID_STRICT_OUT_OF_ORDER, MYF(0), gtid->domain_id,
+ gtid->server_id, gtid->seq_no, elem->last_gtid->domain_id,
+ elem->last_gtid->server_id, elem->last_gtid->seq_no);
+ res= 1;
+ }
+ else
+ {
+ if (elem->seq_no_counter < gtid->seq_no)
+ elem->seq_no_counter= gtid->seq_no;
+ if (elem->update_element(gtid))
+ res= 1;
+ }
+ }
+ else if (alloc_element_nolock(gtid))
+ {
+ my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ res= 1;
+ }
mysql_mutex_unlock(&LOCK_binlog_state);
return res;
}
@@ -1762,43 +2002,6 @@ rpl_binlog_state::element::update_element(const rpl_gtid *gtid)
}
-int
-rpl_binlog_state::alloc_element_nolock(const rpl_gtid *gtid)
-{
- element *elem;
- rpl_gtid *lookup_gtid;
-
- /* First time we see this domain_id; allocate a new element. */
- elem= (element *)my_malloc(PSI_INSTRUMENT_ME, sizeof(*elem), MYF(MY_WME));
- lookup_gtid= (rpl_gtid *)my_malloc(PSI_INSTRUMENT_ME, sizeof(*lookup_gtid),
- MYF(MY_WME));
- if (elem && lookup_gtid)
- {
- elem->domain_id= gtid->domain_id;
- my_hash_init(PSI_INSTRUMENT_ME, &elem->hash, &my_charset_bin, 32,
- offsetof(rpl_gtid, server_id), sizeof(rpl_gtid::domain_id),
- NULL, my_free, HASH_UNIQUE);
- elem->last_gtid= lookup_gtid;
- elem->seq_no_counter= gtid->seq_no;
- memcpy(lookup_gtid, gtid, sizeof(*lookup_gtid));
- if (0 == my_hash_insert(&elem->hash, (const uchar *)lookup_gtid))
- {
- lookup_gtid= NULL; /* Do not free. */
- if (0 == my_hash_insert(&hash, (const uchar *)elem))
- return 0;
- }
- my_hash_free(&elem->hash);
- }
-
- /* An error. */
- if (elem)
- my_free(elem);
- if (lookup_gtid)
- my_free(lookup_gtid);
- return 1;
-}
-
-
/*
Check that a new GTID can be logged without creating an out-of-order
sequence number with existing GTIDs.
@@ -1950,7 +2153,7 @@ rpl_binlog_state::read_from_iocache(IO_CACHE *src)
p= buf;
end= buf + len;
if (gtid_parser_helper(&p, end, &gtid) ||
- update_nolock(&gtid, false))
+ update_nolock(&gtid))
{
res= 1;
break;
@@ -1962,17 +2165,6 @@ rpl_binlog_state::read_from_iocache(IO_CACHE *src)
rpl_gtid *
-rpl_binlog_state::find_nolock(uint32 domain_id, uint32 server_id)
-{
- element *elem;
- if (!(elem= (element *)my_hash_search(&hash, (const uchar *)&domain_id,
- sizeof(domain_id))))
- return NULL;
- return (rpl_gtid *)my_hash_search(&elem->hash, (const uchar *)&server_id,
- sizeof(server_id));
-}
-
-rpl_gtid *
rpl_binlog_state::find(uint32 domain_id, uint32 server_id)
{
rpl_gtid *p;
@@ -2002,12 +2194,8 @@ rpl_binlog_state::find_most_recent(uint32 domain_id)
uint32
rpl_binlog_state::count()
{
- uint32 c= 0;
- uint32 i;
-
mysql_mutex_lock(&LOCK_binlog_state);
- for (i= 0; i < hash.records; ++i)
- c+= ((element *)my_hash_element(&hash, i))->hash.records;
+ uint32 c= count_nolock();
mysql_mutex_unlock(&LOCK_binlog_state);
return c;
@@ -2017,41 +2205,8 @@ rpl_binlog_state::count()
int
rpl_binlog_state::get_gtid_list(rpl_gtid *gtid_list, uint32 list_size)
{
- uint32 i, j, pos;
- int res= 0;
-
mysql_mutex_lock(&LOCK_binlog_state);
- pos= 0;
- for (i= 0; i < hash.records; ++i)
- {
- element *e= (element *)my_hash_element(&hash, i);
- if (!e->last_gtid)
- {
- DBUG_ASSERT(e->hash.records==0);
- continue;
- }
- for (j= 0; j <= e->hash.records; ++j)
- {
- const rpl_gtid *gtid;
- if (j < e->hash.records)
- {
- gtid= (rpl_gtid *)my_hash_element(&e->hash, j);
- if (gtid == e->last_gtid)
- continue;
- }
- else
- gtid= e->last_gtid;
-
- if (pos >= list_size)
- {
- res= 1;
- goto end;
- }
- memcpy(&gtid_list[pos++], gtid, sizeof(*gtid));
- }
- }
-
-end:
+ int res= get_gtid_list_nolock(gtid_list, list_size);
mysql_mutex_unlock(&LOCK_binlog_state);
return res;
}
diff --git a/sql/rpl_gtid.h b/sql/rpl_gtid.h
index 7d25ee6e..8b697c79 100644
--- a/sql/rpl_gtid.h
+++ b/sql/rpl_gtid.h
@@ -26,6 +26,11 @@
extern const LEX_CSTRING rpl_gtid_slave_state_table_name;
class String;
+#ifdef MYSQL_SERVER
+struct TABLE;
+#endif
+struct slave_connection_state;
+
#define PARAM_GTID(G) G.domain_id, G.server_id, G.seq_no
#define GTID_MAX_STR_LENGTH (10+1+10+1+20)
@@ -296,8 +301,13 @@ struct rpl_slave_state
to know where to start when a master is changed to a slave. As a side
effect, it also allows to skip a hash lookup in the very common case of
logging a new GTID with same server id as last GTID.
+
+ The base class rpl_binlog_state_base contains just be basic data operations
+ to insert/update GTIDs, and is used eg. from Gtid_index_*. The main class
+ rpl_binlog_state builds server logic on top of that like mutex locking,
+ gtid_strict_mode handling, etc.
*/
-struct rpl_binlog_state
+struct rpl_binlog_state_base
{
struct element {
uint32 domain_id;
@@ -309,29 +319,45 @@ struct rpl_binlog_state
int update_element(const rpl_gtid *gtid);
};
+
/* Mapping from domain_id to collection of elements. */
HASH hash;
+ my_bool initialized;
+
+ rpl_binlog_state_base() : initialized(0) {}
+ ~rpl_binlog_state_base();
+ void init();
+ void reset_nolock();
+ void free();
+ bool load_nolock(struct rpl_gtid *list, uint32 count);
+ bool load_nolock(rpl_binlog_state_base *orig_state);
+ int update_nolock(const struct rpl_gtid *gtid);
+ int alloc_element_nolock(const rpl_gtid *gtid);
+ uint32 count_nolock();
+ int get_gtid_list_nolock(rpl_gtid *gtid_list, uint32 list_size);
+ rpl_gtid *find_nolock(uint32 domain_id, uint32 server_id);
+ bool is_before_pos(slave_connection_state *pos);
+};
+
+struct rpl_binlog_state : public rpl_binlog_state_base
+{
/* Mutex protecting access to the state. */
mysql_mutex_t LOCK_binlog_state;
- my_bool initialized;
/* Auxiliary buffer to sort gtid list. */
DYNAMIC_ARRAY gtid_sort_array;
- rpl_binlog_state() :initialized(0) {}
+ rpl_binlog_state() {}
~rpl_binlog_state();
void init();
- void reset_nolock();
void reset();
void free();
bool load(struct rpl_gtid *list, uint32 count);
bool load(rpl_slave_state *slave_pos);
- int update_nolock(const struct rpl_gtid *gtid, bool strict);
int update(const struct rpl_gtid *gtid, bool strict);
int update_with_next_gtid(uint32 domain_id, uint32 server_id,
rpl_gtid *gtid);
- int alloc_element_nolock(const rpl_gtid *gtid);
bool check_strict_sequence(uint32 domain_id, uint32 server_id, uint64 seq_no,
bool no_error= false);
int bump_seq_no_if_needed(uint32 domain_id, uint64 seq_no);
@@ -342,7 +368,6 @@ struct rpl_binlog_state
int get_most_recent_gtid_list(rpl_gtid **list, uint32 *size);
bool append_pos(String *str);
bool append_state(String *str);
- rpl_gtid *find_nolock(uint32 domain_id, uint32 server_id);
rpl_gtid *find(uint32 domain_id, uint32 server_id);
rpl_gtid *find_most_recent(uint32 domain_id);
const char* drop_domain(DYNAMIC_ARRAY *ids, Gtid_list_log_event *glev, char*);
diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc
index 4fc204dd..89a35129 100644
--- a/sql/rpl_mi.cc
+++ b/sql/rpl_mi.cc
@@ -31,7 +31,7 @@ static void init_master_log_pos(Master_info* mi);
Master_info::Master_info(LEX_CSTRING *connection_name_arg,
bool is_slave_recovery)
:Slave_reporting_capability("I/O"),
- ssl(0), ssl_verify_server_cert(1), fd(-1), io_thd(0),
+ ssl(1), ssl_verify_server_cert(1), fd(-1), io_thd(0),
rli(is_slave_recovery), port(MYSQL_PORT),
checksum_alg_before_fd(BINLOG_CHECKSUM_ALG_UNDEF),
connect_retry(DEFAULT_CONNECT_RETRY), inited(0), abort_slave(0),
@@ -220,8 +220,6 @@ void init_master_log_pos(Master_info* mi)
mi->gtid_reconnect_event_skip_count= 0;
mi->gtid_event_seen= false;
- /* Intentionally init ssl_verify_server_cert to 0, no option available */
- mi->ssl_verify_server_cert= 0;
/*
always request heartbeat unless master_heartbeat_period is set
explicitly zero. Here is the default value for heartbeat period
@@ -1370,20 +1368,15 @@ Master_info_index::get_master_info(const LEX_CSTRING *connection_name,
Sql_condition::enum_warning_level warning)
{
Master_info *mi;
- char buff[MAX_CONNECTION_NAME+1], *res;
- size_t buff_length;
DBUG_ENTER("get_master_info");
DBUG_PRINT("enter",
("connection_name: '%.*s'", (int) connection_name->length,
connection_name->str));
/* Make name lower case for comparison */
- res= strmake(buff, connection_name->str, connection_name->length);
- my_casedn_str(system_charset_info, buff);
- buff_length= (size_t) (res-buff);
-
+ IdentBufferCasedn<MAX_CONNECTION_NAME> buff(*connection_name);
mi= (Master_info*) my_hash_search(&master_info_hash,
- (uchar*) buff, buff_length);
+ (const uchar*) buff.ptr(), buff.length());
if (!mi && warning != Sql_condition::WARN_LEVEL_NOTE)
{
my_error(WARN_NO_MASTER_INFO,
diff --git a/sql/rpl_mi.h b/sql/rpl_mi.h
index 159e099f..7f2e4c50 100644
--- a/sql/rpl_mi.h
+++ b/sql/rpl_mi.h
@@ -231,7 +231,7 @@ class Master_info : public Slave_reporting_capability
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
char ssl_cipher[FN_REFLEN], ssl_key[FN_REFLEN];
char ssl_crl[FN_REFLEN], ssl_crlpath[FN_REFLEN];
- bool ssl_verify_server_cert;
+ my_bool ssl_verify_server_cert; /* MUST be my_bool, see mysql_option() */
my_off_t master_log_pos;
File fd; // we keep the file open, so we need to remember the file pointer
@@ -250,7 +250,7 @@ class Master_info : public Slave_reporting_capability
Initialized to novalue, then set to the queried from master
@@global.binlog_checksum and deactivated once FD has been received.
*/
- enum enum_binlog_checksum_alg checksum_alg_before_fd;
+ enum_binlog_checksum_alg checksum_alg_before_fd;
uint connect_retry;
#ifndef DBUG_OFF
int events_till_disconnect;
diff --git a/sql/rpl_record.cc b/sql/rpl_record.cc
index 6266acf7..dd02d972 100644
--- a/sql/rpl_record.cc
+++ b/sql/rpl_record.cc
@@ -143,6 +143,155 @@ pack_row(TABLE *table, MY_BITMAP const* cols,
}
#endif
+#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
+
+struct Unpack_record_state
+{
+ uchar const *const row_data;
+ uchar const *const row_end;
+ size_t const master_null_byte_count;
+ uchar const *null_ptr;
+ uchar const *pack_ptr;
+ /** Mask to mask out the correct bit among the null bits */
+ unsigned int null_mask;
+ /** The "current" null bits */
+ unsigned int null_bits;
+ Unpack_record_state(uchar const *const row_data,
+ uchar const *const row_end,
+ size_t const master_null_byte_count)
+ : row_data(row_data), row_end(row_end),
+ master_null_byte_count(master_null_byte_count),
+ null_ptr(row_data), pack_ptr(row_data + master_null_byte_count)
+ {}
+ void next_null_byte()
+ {
+ DBUG_ASSERT(null_ptr < row_data + master_null_byte_count);
+ null_mask= 1U;
+ null_bits= *null_ptr++;
+ }
+};
+
+
+static bool unpack_field(const table_def *tabledef, Field *f,
+ Unpack_record_state *st, uint field_idx)
+{
+ if ((st->null_mask & 0xFF) == 0)
+ st->next_null_byte();
+
+ DBUG_ASSERT(st->null_mask & 0xFF); // One of the 8 LSB should be set
+
+ if (st->null_bits & st->null_mask)
+ {
+ if (f->maybe_null())
+ {
+ DBUG_PRINT("debug", ("Was NULL; null mask: 0x%x; null bits: 0x%x",
+ st->null_mask, st->null_bits));
+ /**
+ Calling reset just in case one is unpacking on top a
+ record with data.
+
+ This could probably go into set_null() but doing so,
+ (i) triggers assertion in other parts of the code at
+ the moment; (ii) it would make us reset the field,
+ always when setting null, which right now doesn't seem
+ needed anywhere else except here.
+
+ TODO: maybe in the future we should consider moving
+ the reset to make it part of set_null. But then
+ the assertions triggered need to be
+ addressed/revisited.
+ */
+
+#ifndef DBUG_OFF
+ /*
+ f->reset() may call store_value() to reset the value, for example
+ Field_new_decimal. store_value() has below assertion:
+
+ DBUG_ASSERT(marked_for_write_or_computed());
+
+ It asserts write bitmap must be set. That caused an assertion
+ failure for row images generated by FULL_NODUP mode.
+ The assertion is meaningless for unpacking a row image, so
+ the field is marked in write_set temporarily to avoid the
+ assertion failure.
+ */
+ bool was_not_set = !bitmap_is_set(f->table->write_set, f->field_index);
+ if (was_not_set)
+ bitmap_set_bit(f->table->write_set, f->field_index);
+#endif
+ f->reset();
+#ifndef DBUG_OFF
+ if (was_not_set)
+ bitmap_clear_bit(f->table->write_set, f->field_index);
+#endif
+ f->set_null();
+ }
+ else
+ {
+ THD *thd= f->table->in_use;
+
+ f->set_default();
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_BAD_NULL_ERROR,
+ ER_THD(thd, ER_BAD_NULL_ERROR),
+ f->field_name.str);
+ }
+ }
+ else
+ {
+ f->set_notnull();
+
+ /*
+ We only unpack the field if it was non-null.
+ Use the master's size information if available else call
+ normal unpack operation.
+ */
+ uint16 const metadata = tabledef->field_metadata(field_idx);
+#ifdef DBUG_TRACE
+ uchar const *const old_pack_ptr= st->pack_ptr;
+#endif
+
+ st->pack_ptr= f->unpack(f->ptr, st->pack_ptr, st->row_end, metadata);
+ DBUG_PRINT("debug", ("field: %s; metadata: 0x%x;"
+ " pack_ptr: %p; pack_ptr': %p; bytes: %d",
+ f->field_name.str, metadata,
+ old_pack_ptr, st->pack_ptr,
+ (int) (st->pack_ptr - old_pack_ptr)));
+ if (!st->pack_ptr)
+ return false;
+ }
+ st->null_mask <<= 1;
+ return true;
+}
+
+static void convert_field(Field *f, Field *result_field, Field *conv_field)
+{
+#ifndef DBUG_OFF
+ char type_buf[MAX_FIELD_WIDTH];
+ char value_buf[MAX_FIELD_WIDTH];
+ String source_type(type_buf, sizeof(type_buf), system_charset_info);
+ String value_string(value_buf, sizeof(value_buf), system_charset_info);
+ conv_field->sql_type(source_type);
+ conv_field->val_str(&value_string);
+ DBUG_PRINT("debug", ("Copying field '%s' of type '%s' with value '%s'",
+ result_field->field_name.str,
+ source_type.c_ptr_safe(), value_string.c_ptr_safe()));
+#endif
+
+ Copy_field copy;
+ copy.set(result_field, f, TRUE);
+ (*copy.do_copy)(&copy);
+
+#ifndef DBUG_OFF
+ String target_type(type_buf, sizeof(type_buf), system_charset_info);
+ result_field->sql_type(target_type);
+ result_field->val_str(&value_string);
+ DBUG_PRINT("debug", ("Value of field '%s' of type '%s' is now '%s'",
+ result_field->field_name.str,
+ target_type.c_ptr_safe(), value_string.c_ptr_safe()));
+#endif
+}
+
/**
Unpack a row into @c table->record[0].
@@ -165,11 +314,11 @@ pack_row(TABLE *table, MY_BITMAP const* cols,
unpack a row from from the backup image, but can be used for other
purposes as well.
- @param rli Relay log info, which can be NULL
+ @param rgi Relay group info
@param table Table to unpack into
@param colcnt Number of columns to read from record
@param row_data
- Packed row data
+ Packed row datanull_ptr
@param cols Pointer to bitset describing columns to fill in
@param curr_row_end
Pointer to variable that will hold the value of the
@@ -188,26 +337,19 @@ pack_row(TABLE *table, MY_BITMAP const* cols,
@retval HA_ERR_CORRUPT_EVENT
Found error when trying to unpack fields.
*/
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-int
-unpack_row(rpl_group_info *rgi,
- TABLE *table, uint const colcnt,
- uchar const *const row_data, MY_BITMAP const *cols,
- uchar const **const current_row_end, ulong *const master_reclength,
- uchar const *const row_end)
+
+int unpack_row(const rpl_group_info *rgi, TABLE *table, uint const colcnt,
+ uchar const *const row_data, MY_BITMAP const *cols,
+ uchar const **const current_row_end,
+ ulong *const master_reclength, uchar const *const row_end)
{
int error;
DBUG_ENTER("unpack_row");
DBUG_ASSERT(row_data);
DBUG_ASSERT(table);
- size_t const master_null_byte_count= (bitmap_bits_set(cols) + 7) / 8;
+ DBUG_ASSERT(rgi);
- uchar const *null_ptr= row_data;
- uchar const *pack_ptr= row_data + master_null_byte_count;
-
- Field **const begin_ptr = table->field;
- Field **field_ptr;
- Field **const end_ptr= begin_ptr + colcnt;
+ Unpack_record_state st(row_data, row_end, (bitmap_bits_set(cols) + 7) / 8);
if (bitmap_is_clear_all(cols))
{
@@ -215,129 +357,55 @@ unpack_row(rpl_group_info *rgi,
There was no data sent from the master, so there is
nothing to unpack.
*/
- *current_row_end= pack_ptr;
+ *current_row_end= st.pack_ptr;
*master_reclength= 0;
DBUG_RETURN(0);
}
- DBUG_ASSERT(null_ptr < row_data + master_null_byte_count);
- // Mask to mask out the correct bit among the null bits
- unsigned int null_mask= 1U;
- // The "current" null bits
- unsigned int null_bits= *null_ptr++;
+ Rpl_table_data rpl_data= *(RPL_TABLE_LIST*)table->pos_in_table_list;
+ const table_def *tabledef= rpl_data.tabledef;
+ const TABLE *conv_table= rpl_data.conv_table;
+ DBUG_PRINT("debug", ("Table data: tabldef: %p, conv_table: %p",
+ tabledef, conv_table));
uint i= 0;
- table_def *tabledef= NULL;
- TABLE *conv_table= NULL;
- bool table_found= rgi && rgi->get_table_data(table, &tabledef, &conv_table);
- DBUG_PRINT("debug", ("Table data: table_found: %d, tabldef: %p, conv_table: %p",
- table_found, tabledef, conv_table));
- DBUG_ASSERT(table_found);
-
- /*
- If rgi is NULL it means that there is no source table and that the
- row shall just be unpacked without doing any checks. This feature
- is used by MySQL Backup, but can be used for other purposes as
- well.
- */
- if (rgi && !table_found)
- DBUG_RETURN(HA_ERR_GENERIC);
- for (field_ptr= begin_ptr ; field_ptr < end_ptr && *field_ptr ; ++field_ptr)
+ st.next_null_byte();
+ if (!rpl_data.is_online_alter())
{
- /*
- If there is a conversion table, we pick up the field pointer to
- the conversion table. If the conversion table or the field
- pointer is NULL, no conversions are necessary.
- */
- Field *conv_field=
- conv_table ? conv_table->field[field_ptr - begin_ptr] : NULL;
- Field *const f=
- conv_field ? conv_field : *field_ptr;
- DBUG_PRINT("debug", ("Conversion %srequired for field '%s' (#%ld)",
- conv_field ? "" : "not ",
- (*field_ptr)->field_name.str,
- (long) (field_ptr - begin_ptr)));
- DBUG_ASSERT(f != NULL);
-
- /*
- No need to bother about columns that does not exist: they have
- gotten default values when being emptied above.
- */
- if (bitmap_is_set(cols, (uint)(field_ptr - begin_ptr)))
+ Field *result_field= NULL;
+ for (; i < colcnt && (result_field= table->field[i]); i++)
{
- if ((null_mask & 0xFF) == 0)
- {
- DBUG_ASSERT(null_ptr < row_data + master_null_byte_count);
- null_mask= 1U;
- null_bits= *null_ptr++;
- }
-
- DBUG_ASSERT(null_mask & 0xFF); // One of the 8 LSB should be set
+ /*
+ If there is a conversion table, we pick up the field pointer to
+ the conversion table. If the conversion table or the field
+ pointer is NULL, no conversions are necessary.
+ */
+ Field *conv_field= conv_table ? conv_table->field[i] : NULL;
+ Field *const f= conv_field ? conv_field : result_field;
+
+ DBUG_PRINT("debug", ("Conversion %srequired for field '%s' (#%u)",
+ conv_field ? "" : "not ",
+ result_field->field_name.str, i));
+ DBUG_ASSERT(f != NULL);
- if (null_bits & null_mask)
- {
- if (f->maybe_null())
- {
- DBUG_PRINT("debug", ("Was NULL; null mask: 0x%x; null bits: 0x%x",
- null_mask, null_bits));
- /**
- Calling reset just in case one is unpacking on top a
- record with data.
-
- This could probably go into set_null() but doing so,
- (i) triggers assertion in other parts of the code at
- the moment; (ii) it would make us reset the field,
- always when setting null, which right now doesn't seem
- needed anywhere else except here.
-
- TODO: maybe in the future we should consider moving
- the reset to make it part of set_null. But then
- the assertions triggered need to be
- addressed/revisited.
- */
- f->reset();
- f->set_null();
- }
- else
- {
- THD *thd= f->table->in_use;
-
- f->set_default();
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_BAD_NULL_ERROR,
- ER_THD(thd, ER_BAD_NULL_ERROR),
- f->field_name.str);
- }
- }
- else
- {
- f->set_notnull();
+ /*
+ No need to bother about columns that does not exist: they have
+ gotten default values when being emptied above.
+ */
+ if (!bitmap_is_set(cols, i))
+ continue;
- /*
- We only unpack the field if it was non-null.
- Use the master's size information if available else call
- normal unpack operation.
- */
- uint16 const metadata= tabledef->field_metadata(i);
-#ifdef DBUG_TRACE
- uchar const *const old_pack_ptr= pack_ptr;
-#endif
+ result_field->set_has_explicit_value();
- pack_ptr= f->unpack(f->ptr, pack_ptr, row_end, metadata);
- DBUG_PRINT("debug", ("field: %s; metadata: 0x%x;"
- " pack_ptr: %p; pack_ptr': %p; bytes: %d",
- f->field_name.str, metadata,
- old_pack_ptr, pack_ptr,
- (int) (pack_ptr - old_pack_ptr)));
- if (!pack_ptr)
- {
- rgi->rli->report(ERROR_LEVEL, ER_SLAVE_CORRUPT_EVENT,
- rgi->gtid_info(),
- "Could not read field '%s' of table '%s.%s'",
- f->field_name.str, table->s->db.str,
- table->s->table_name.str);
- DBUG_RETURN(HA_ERR_CORRUPT_EVENT);
- }
+ bool unpack_result= unpack_field(tabledef, f, &st, i);
+ if (!unpack_result)
+ {
+ rgi->rli->report(ERROR_LEVEL, ER_SLAVE_CORRUPT_EVENT,
+ rgi->gtid_info(),
+ "Could not read field '%s' of table '%s.%s'",
+ f->field_name.str, table->s->db.str,
+ table->s->table_name.str);
+ DBUG_RETURN(HA_ERR_CORRUPT_EVENT);
}
/*
@@ -345,87 +413,105 @@ unpack_row(rpl_group_info *rgi,
case, we have unpacked the master data to the conversion
table, so we need to copy the value stored in the conversion
table into the final table and do the conversion at the same time.
- */
- if (conv_field)
- {
- Copy_field copy;
-#ifndef DBUG_OFF
- char source_buf[MAX_FIELD_WIDTH];
- char value_buf[MAX_FIELD_WIDTH];
- String source_type(source_buf, sizeof(source_buf), system_charset_info);
- String value_string(value_buf, sizeof(value_buf), system_charset_info);
- conv_field->sql_type(source_type);
- conv_field->val_str(&value_string);
- DBUG_PRINT("debug", ("Copying field '%s' of type '%s' with value '%s'",
- (*field_ptr)->field_name.str,
- source_type.c_ptr_safe(), value_string.c_ptr_safe()));
-#endif
- copy.set(*field_ptr, f, TRUE);
- (*copy.do_copy)(&copy);
-#ifndef DBUG_OFF
- char target_buf[MAX_FIELD_WIDTH];
- String target_type(target_buf, sizeof(target_buf), system_charset_info);
- (*field_ptr)->sql_type(target_type);
- (*field_ptr)->val_str(&value_string);
- DBUG_PRINT("debug", ("Value of field '%s' of type '%s' is now '%s'",
- (*field_ptr)->field_name.str,
- target_type.c_ptr_safe(), value_string.c_ptr_safe()));
-#endif
- }
- null_mask <<= 1;
+ If copy_fields is set, it means we are doing an online alter table,
+ and will use copy_fields set up in copy_data_between_tables
+ */
+ if (conv_field)
+ convert_field(f, result_field, conv_field);
}
- i++;
- }
- /*
- throw away master's extra fields
- */
- uint max_cols= MY_MIN(tabledef->size(), cols->n_bits);
- for (; i < max_cols; i++)
- {
- if (bitmap_is_set(cols, i))
+ /*
+ Throw away master's extra fields
+ */
+ uint max_cols= MY_MIN(tabledef->size(), cols->n_bits);
+ for (; i < max_cols; i++)
{
- if ((null_mask & 0xFF) == 0)
+ if (bitmap_is_set(cols, i))
{
- DBUG_ASSERT(null_ptr < row_data + master_null_byte_count);
- null_mask= 1U;
- null_bits= *null_ptr++;
+ if ((st.null_mask & 0xFF) == 0)
+ st.next_null_byte();
+ DBUG_ASSERT(st.null_mask & 0xFF); // One of the 8 LSB should be set
+
+ if (!((st.null_bits & st.null_mask) && tabledef->maybe_null(i))) {
+ uint32 len= tabledef->calc_field_size(i, (uchar *) st.pack_ptr);
+ DBUG_DUMP("field_data", st.pack_ptr, len);
+ st.pack_ptr+= len;
+ }
+ st.null_mask <<= 1;
}
- DBUG_ASSERT(null_mask & 0xFF); // One of the 8 LSB should be set
+ }
- if (!((null_bits & null_mask) && tabledef->maybe_null(i))) {
- uint32 len= tabledef->calc_field_size(i, (uchar *) pack_ptr);
- DBUG_DUMP("field_data", pack_ptr, len);
- pack_ptr+= len;
- }
- null_mask <<= 1;
+ if (master_reclength)
+ {
+ if (result_field)
+ *master_reclength = (ulong)(result_field->ptr - table->record[0]);
+ else
+ *master_reclength = table->s->reclength;
}
}
+ else
+ {
+ /*
+ For Online Alter, iterate through old table fields to unpack,
+ then iterate through copy_field array to copy to the new table's record.
+ */
- /*
- Add Extra slave persistent columns
- */
- if (unlikely(error= fill_extra_persistent_columns(table, cols->n_bits)))
- DBUG_RETURN(error);
+ DBUG_ASSERT(colcnt == conv_table->s->fields);
+ for (;i < colcnt; i++)
+ {
+ DBUG_ASSERT(bitmap_is_set(cols, i));
+ Field *f= conv_table->field[i];
+#ifndef DBUG_OFF
+ bool result=
+#endif
+ unpack_field(tabledef, f, &st, i);
+ DBUG_ASSERT(result);
+ }
+
+ for (const auto *copy=rpl_data.copy_fields;
+ copy != rpl_data.copy_fields_end; copy++)
+ {
+ copy->to_field->set_has_explicit_value();
+ copy->do_copy(copy);
+ }
+ if (master_reclength)
+ *master_reclength = conv_table->s->reclength;
+ } // if (rpl_data.is_online_alter())
/*
We should now have read all the null bytes, otherwise something is
really wrong.
*/
- DBUG_ASSERT(null_ptr == row_data + master_null_byte_count);
+ DBUG_ASSERT(st.null_ptr == row_data + st.master_null_byte_count);
+ DBUG_DUMP("row_data", row_data, st.pack_ptr - row_data);
- DBUG_DUMP("row_data", row_data, pack_ptr - row_data);
+ *current_row_end = st.pack_ptr;
- *current_row_end = pack_ptr;
- if (master_reclength)
+ if (table->default_field && (rpl_data.is_online_alter() ||
+ LOG_EVENT_IS_WRITE_ROW(rgi->current_event->get_type_code())))
{
- if (*field_ptr)
- *master_reclength = (ulong)((*field_ptr)->ptr - table->record[0]);
- else
- *master_reclength = table->s->reclength;
+ error= table->update_default_fields(table->in_use->lex->ignore);
+ if (unlikely(error))
+ DBUG_RETURN(error);
}
-
+ if (table->vfield)
+ {
+ error= table->update_virtual_fields(table->file, VCOL_UPDATE_FOR_WRITE);
+ if (unlikely(error))
+ DBUG_RETURN(error);
+ }
+
+ if (rpl_data.is_online_alter())
+ {
+ /* we only check constraints for ALTER TABLE */
+ DBUG_ASSERT(table->in_use->lex->ignore == FALSE);
+ error = table->verify_constraints(false);
+ DBUG_ASSERT(error != VIEW_CHECK_SKIP);
+ if (error)
+ DBUG_RETURN(HA_ERR_GENERIC);
+ }
+
DBUG_RETURN(0);
}
@@ -482,30 +568,4 @@ int prepare_record(TABLE *const table, const uint skip, const bool check)
DBUG_RETURN(0);
}
-/**
- Fills @c table->record[0] with computed values of extra persistent column
- which are present on slave but not on master.
-
- @param table Table whose record[0] buffer is prepared.
- @param master_cols No of columns on master
- @returns 0 on success
- */
-int fill_extra_persistent_columns(TABLE *table, int master_cols)
-{
- int error= 0;
- Field **vfield_ptr, *vfield;
-
- if (!table->vfield)
- return 0;
- for (vfield_ptr= table->vfield; *vfield_ptr; ++vfield_ptr)
- {
- vfield= *vfield_ptr;
- if (vfield->field_index >= master_cols && vfield->stored_in_db())
- {
- bitmap_set_bit(table->write_set, vfield->field_index);
- error= vfield->vcol_info->expr->save_in_field(vfield,0);
- }
- }
- return error;
-}
#endif // HAVE_REPLICATION
diff --git a/sql/rpl_record.h b/sql/rpl_record.h
index 357dc761..0f486c51 100644
--- a/sql/rpl_record.h
+++ b/sql/rpl_record.h
@@ -29,7 +29,7 @@ size_t pack_row(TABLE* table, MY_BITMAP const* cols,
#endif
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-int unpack_row(rpl_group_info *rgi,
+int unpack_row(const rpl_group_info *rgi,
TABLE *table, uint const colcnt,
uchar const *const row_data, MY_BITMAP const *cols,
uchar const **const curr_row_end, ulong *const master_reclength,
@@ -37,7 +37,6 @@ int unpack_row(rpl_group_info *rgi,
// Fill table's record[0] with default values.
int prepare_record(TABLE *const table, const uint skip, const bool check);
-int fill_extra_persistent_columns(TABLE *table, int master_cols);
#endif
#endif
diff --git a/sql/rpl_record_old.cc b/sql/rpl_record_old.cc
deleted file mode 100644
index 496e781d..00000000
--- a/sql/rpl_record_old.cc
+++ /dev/null
@@ -1,199 +0,0 @@
-/* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
-
-#include "mariadb.h"
-#include "sql_priv.h"
-#include "rpl_rli.h"
-#include "rpl_record_old.h"
-#include "log_event.h" // Log_event_type
-
-size_t
-pack_row_old(TABLE *table, MY_BITMAP const* cols,
- uchar *row_data, const uchar *record)
-{
- Field **p_field= table->field, *field;
- int n_null_bytes= table->s->null_bytes;
- uchar *ptr;
- uint i;
- my_ptrdiff_t const rec_offset= record - table->record[0];
- my_ptrdiff_t const def_offset= table->s->default_values - table->record[0];
- memcpy(row_data, record, n_null_bytes);
- ptr= row_data+n_null_bytes;
-
- for (i= 0 ; (field= *p_field) ; i++, p_field++)
- {
- if (bitmap_is_set(cols,i))
- {
- my_ptrdiff_t const offset=
- field->is_null(rec_offset) ? def_offset : rec_offset;
- field->move_field_offset(offset);
- ptr= field->pack(ptr, field->ptr);
- field->move_field_offset(-offset);
- }
- }
- return (static_cast<size_t>(ptr - row_data));
-}
-
-
-/*
- Unpack a row into a record.
-
- SYNOPSIS
- unpack_row()
- rli Relay log info
- table Table to unpack into
- colcnt Number of columns to read from record
- record Record where the data should be unpacked
- row Packed row data
- cols Pointer to columns data to fill in
- row_end Pointer to variable that will hold the value of the
- one-after-end position for the row
- master_reclength
- Pointer to variable that will be set to the length of the
- record on the master side
- rw_set Pointer to bitmap that holds either the read_set or the
- write_set of the table
-
- DESCRIPTION
-
- The row is assumed to only consist of the fields for which the
- bitset represented by 'arr' and 'bits'; the other parts of the
- record are left alone.
-
- At most 'colcnt' columns are read: if the table is larger than
- that, the remaining fields are not filled in.
-
- RETURN VALUE
-
- Error code, or zero if no error. The following error codes can
- be returned:
-
- ER_NO_DEFAULT_FOR_FIELD
- Returned if one of the fields existing on the slave but not on
- the master does not have a default value (and isn't nullable)
- ER_SLAVE_CORRUPT_EVENT
- Wrong data for field found.
- */
-#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
-int
-unpack_row_old(rpl_group_info *rgi,
- TABLE *table, uint const colcnt, uchar *record,
- uchar const *row, const uchar *row_buffer_end,
- MY_BITMAP const *cols,
- uchar const **row_end, ulong *master_reclength,
- MY_BITMAP* const rw_set, Log_event_type const event_type)
-{
- DBUG_ASSERT(record && row);
- my_ptrdiff_t const offset= record - (uchar*) table->record[0];
- size_t master_null_bytes= table->s->null_bytes;
-
- if (colcnt != table->s->fields)
- {
- Field **fptr= &table->field[colcnt-1];
- do
- master_null_bytes= (*fptr)->last_null_byte();
- while (master_null_bytes == Field::LAST_NULL_BYTE_UNDEF &&
- fptr-- > table->field);
-
- /*
- If master_null_bytes is LAST_NULL_BYTE_UNDEF (0) at this time,
- there were no nullable fields nor BIT fields at all in the
- columns that are common to the master and the slave. In that
- case, there is only one null byte holding the X bit.
-
- OBSERVE! There might still be nullable columns following the
- common columns, so table->s->null_bytes might be greater than 1.
- */
- if (master_null_bytes == Field::LAST_NULL_BYTE_UNDEF)
- master_null_bytes= 1;
- }
-
- DBUG_ASSERT(master_null_bytes <= table->s->null_bytes);
- memcpy(record, row, master_null_bytes); // [1]
- int error= 0;
-
- bitmap_set_all(rw_set);
-
- Field **const begin_ptr = table->field;
- Field **field_ptr;
- uchar const *ptr= row + master_null_bytes;
- Field **const end_ptr= begin_ptr + colcnt;
- for (field_ptr= begin_ptr ; field_ptr < end_ptr ; ++field_ptr)
- {
- Field *const f= *field_ptr;
-
- if (bitmap_is_set(cols, (uint)(field_ptr - begin_ptr)))
- {
- f->move_field_offset(offset);
- ptr= f->unpack(f->ptr, ptr, row_buffer_end, 0);
- f->move_field_offset(-offset);
- if (!ptr)
- {
- rgi->rli->report(ERROR_LEVEL, ER_SLAVE_CORRUPT_EVENT, NULL,
- "Could not read field `%s` of table `%s`.`%s`",
- f->field_name.str, table->s->db.str,
- table->s->table_name.str);
- return(ER_SLAVE_CORRUPT_EVENT);
- }
- }
- else
- bitmap_clear_bit(rw_set, (uint)(field_ptr - begin_ptr));
- }
-
- *row_end = ptr;
- if (master_reclength)
- {
- if (*field_ptr)
- *master_reclength = (ulong)((*field_ptr)->ptr - table->record[0]);
- else
- *master_reclength = table->s->reclength;
- }
-
- /*
- Set properties for remaining columns, if there are any. We let the
- corresponding bit in the write_set be set, to write the value if
- it was not there already. We iterate over all remaining columns,
- even if there were an error, to get as many error messages as
- possible. We are still able to return a pointer to the next row,
- so redo that.
-
- This generation of error messages is only relevant when inserting
- new rows.
- */
- for ( ; *field_ptr ; ++field_ptr)
- {
- uint32 const mask= NOT_NULL_FLAG | NO_DEFAULT_VALUE_FLAG;
-
- DBUG_PRINT("debug", ("flags = 0x%x, mask = 0x%x, flags & mask = 0x%x",
- (*field_ptr)->flags, mask,
- (*field_ptr)->flags & mask));
-
- if (event_type == WRITE_ROWS_EVENT &&
- ((*field_ptr)->flags & mask) == mask)
- {
- rgi->rli->report(ERROR_LEVEL, ER_NO_DEFAULT_FOR_FIELD, NULL,
- "Field `%s` of table `%s`.`%s` "
- "has no default value and cannot be NULL",
- (*field_ptr)->field_name.str, table->s->db.str,
- table->s->table_name.str);
- error = ER_NO_DEFAULT_FOR_FIELD;
- }
- else
- (*field_ptr)->set_default();
- }
-
- return error;
-}
-#endif
diff --git a/sql/rpl_record_old.h b/sql/rpl_record_old.h
deleted file mode 100644
index 0b2dd432..00000000
--- a/sql/rpl_record_old.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (c) 2007, 2010, Oracle and/or its affiliates.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
-
-#ifndef RPL_RECORD_OLD_H
-#define RPL_RECORD_OLD_H
-
-#include "log_event.h" /* Log_event_type */
-
-#ifndef MYSQL_CLIENT
-size_t pack_row_old(TABLE *table, MY_BITMAP const* cols,
- uchar *row_data, const uchar *record);
-
-#ifdef HAVE_REPLICATION
-int unpack_row_old(rpl_group_info *rgi,
- TABLE *table, uint const colcnt, uchar *record,
- uchar const *row, uchar const *row_buffer_end,
- MY_BITMAP const *cols,
- uchar const **row_end, ulong *master_reclength,
- MY_BITMAP* const rw_set,
- Log_event_type const event_type);
-#endif
-#endif
-#endif
diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc
index a8e59f28..7f020bde 100644
--- a/sql/rpl_rli.cc
+++ b/sql/rpl_rli.cc
@@ -58,7 +58,8 @@ Relay_log_info::Relay_log_info(bool is_slave_recovery, const char* thread_name)
abort_pos_wait(0), slave_run_id(0), sql_driver_thd(),
gtid_skip_flag(GTID_SKIP_NOT), inited(0), abort_slave(0), stop_for_until(0),
slave_running(MYSQL_SLAVE_NOT_RUN), until_condition(UNTIL_NONE),
- until_log_pos(0), retried_trans(0), executed_entries(0),
+ until_log_pos(0), is_until_before_gtids(false),
+ retried_trans(0), executed_entries(0),
last_trans_retry_count(0), sql_delay(0), sql_delay_end(0),
until_relay_log_names_defer(false),
m_flags(0)
@@ -523,13 +524,7 @@ read_relay_log_description_event(IO_CACHE *cur_log, ulonglong start_pos,
Format_description_log_event *fdev;
bool found= false;
- /*
- By default the relay log is in binlog format 3 (4.0).
- Even if format is 4, this will work enough to read the first event
- (Format_desc) (remember that format 4 is just lenghtened compared to format
- 3; format 3 is a prefix of format 4).
- */
- fdev= new Format_description_log_event(3);
+ fdev= new Format_description_log_event(4);
while (!found)
{
@@ -664,14 +659,7 @@ int init_relay_log_pos(Relay_log_info* rli,const char* log,
running, say, CHANGE MASTER.
*/
delete rli->relay_log.description_event_for_exec;
- /*
- By default the relay log is in binlog format 3 (4.0).
- Even if format is 4, this will work enough to read the first event
- (Format_desc) (remember that format 4 is just lenghtened compared to format
- 3; format 3 is a prefix of format 4).
- */
- rli->relay_log.description_event_for_exec= new
- Format_description_log_event(3);
+ rli->relay_log.description_event_for_exec= new Format_description_log_event(4);
mysql_mutex_lock(log_lock);
@@ -1557,7 +1545,7 @@ Relay_log_info::update_relay_log_state(rpl_gtid *gtid_list, uint32 count)
int res= 0;
while (count)
{
- if (relay_log_state.update_nolock(gtid_list, false))
+ if (relay_log_state.update_nolock(gtid_list))
res= 1;
++gtid_list;
--count;
@@ -1696,7 +1684,7 @@ scan_all_gtid_slave_pos_table(THD *thd, int (*cb)(THD *, LEX_CSTRING *, void *),
MY_DIR *dirp;
thd->reset_for_next_command();
- if (lock_schema_name(thd, MYSQL_SCHEMA_NAME.str))
+ if (lock_schema_name(thd, Lex_ident_db_normalized(MYSQL_SCHEMA_NAME)))
return 1;
build_table_filename(path, sizeof(path) - 1, MYSQL_SCHEMA_NAME.str, "", "", 0);
@@ -2494,7 +2482,7 @@ rpl_group_info::mark_start_commit()
If no GTID is available, then NULL is returned.
*/
char *
-rpl_group_info::gtid_info()
+rpl_group_info::gtid_info() const
{
if (!gtid_sub_id || !current_gtid.seq_no)
return NULL;
diff --git a/sql/rpl_rli.h b/sql/rpl_rli.h
index cf991584..c3be5df4 100644
--- a/sql/rpl_rli.h
+++ b/sql/rpl_rli.h
@@ -338,6 +338,8 @@ public:
/* Condition for UNTIL master_gtid_pos. */
slave_connection_state until_gtid_pos;
+ bool is_until_before_gtids;
+
/*
retried_trans is a cumulative counter: how many times the slave
has retried a transaction (any) since slave started.
@@ -668,6 +670,22 @@ struct start_alter_info
mysql_cond_t start_alter_cond;
};
+struct Rpl_table_data
+{
+ const table_def *tabledef;
+ TABLE *conv_table;
+ const Copy_field *copy_fields;
+ const Copy_field *copy_fields_end;
+ Rpl_table_data(const RPL_TABLE_LIST &rpl_table_list)
+ {
+ tabledef= &rpl_table_list.m_tabledef;
+ conv_table= rpl_table_list.m_conv_table;
+ copy_fields= rpl_table_list.m_online_alter_copy_fields;
+ copy_fields_end= rpl_table_list.m_online_alter_copy_fields_end;
+ }
+ bool is_online_alter() const { return copy_fields != NULL; }
+};
+
/*
This is data for various state needed to be kept for the processing of
one event group (transaction) during replication.
@@ -813,7 +831,7 @@ struct rpl_group_info
longlong row_stmt_start_timestamp;
bool long_find_row_note_printed;
/* Needs room for "Gtid D-S-N\x00". */
- char gtid_info_buf[5+10+1+10+1+20+1];
+ mutable char gtid_info_buf[5+10+1+10+1+20+1];
/*
The timestamp, from the master, of the commit event.
@@ -940,29 +958,12 @@ struct rpl_group_info
}
}
- bool get_table_data(TABLE *table_arg, table_def **tabledef_var, TABLE **conv_table_var) const
- {
- DBUG_ASSERT(tabledef_var && conv_table_var);
- for (TABLE_LIST *ptr= tables_to_lock ; ptr != NULL ; ptr= ptr->next_global)
- if (ptr->table == table_arg)
- {
- *tabledef_var= &static_cast<RPL_TABLE_LIST*>(ptr)->m_tabledef;
- *conv_table_var= static_cast<RPL_TABLE_LIST*>(ptr)->m_conv_table;
- DBUG_PRINT("debug", ("Fetching table data for table %s.%s:"
- " tabledef: %p, conv_table: %p",
- table_arg->s->db.str, table_arg->s->table_name.str,
- *tabledef_var, *conv_table_var));
- return true;
- }
- return false;
- }
-
void clear_tables_to_lock();
void cleanup_context(THD *, bool, bool keep_domain_owner= false);
void slave_close_thread_tables(THD *);
void mark_start_commit_no_lock();
void mark_start_commit();
- char *gtid_info();
+ char *gtid_info() const;
void unmark_start_commit();
longlong get_row_stmt_start_timestamp()
diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc
index 04a2efb3..d3189394 100644
--- a/sql/rpl_utility.cc
+++ b/sql/rpl_utility.cc
@@ -176,8 +176,8 @@ PSI_memory_key key_memory_table_def_memory;
table_def::table_def(unsigned char *types, ulong size,
uchar *field_metadata, int metadata_size,
uchar *null_bitmap, uint16 flags)
- : m_size(size), m_type(0), m_field_metadata_size(metadata_size),
- m_field_metadata(0), m_null_bits(0), m_flags(flags),
+ : m_type(0), m_size(size), m_field_metadata_size(metadata_size),
+ m_field_metadata(0), m_flags(flags), m_null_bits(0),
m_memory(NULL)
{
m_memory= (uchar *)my_multi_malloc(key_memory_table_def_memory, MYF(MY_WME),
@@ -296,7 +296,7 @@ table_def::~table_def()
*/
bool event_checksum_test(uchar *event_buf, ulong event_len,
- enum enum_binlog_checksum_alg alg)
+ enum_binlog_checksum_alg alg)
{
bool res= FALSE;
uint16 flags= 0; // to store in FD's buffer flags orig value
diff --git a/sql/rpl_utility.h b/sql/rpl_utility.h
index c28e8aa1..92a2c00e 100644
--- a/sql/rpl_utility.h
+++ b/sql/rpl_utility.h
@@ -43,6 +43,7 @@ struct rpl_group_info;
class table_def
{
+ table_def(const table_def&) = default;
public:
/**
Constructor.
@@ -56,6 +57,18 @@ public:
table_def(unsigned char *types, ulong size, uchar *field_metadata,
int metadata_size, uchar *null_bitmap, uint16 flags);
+
+ /**
+ Move constructor
+ Since it deallocates a memory during destruction, we can't safely copy it.
+ We should instead move it to zero m_memory in an old object
+ */
+ table_def(table_def &&tabledef)
+ : table_def(tabledef)
+ {
+ tabledef.m_memory= NULL;
+ }
+
~table_def();
/**
@@ -63,7 +76,7 @@ public:
@return The number of fields that there is type data for.
*/
- ulong size() const { return m_size; }
+ uint size() const { return m_size; }
/**
@@ -221,12 +234,12 @@ public:
private:
- ulong m_size; // Number of elements in the types array
unsigned char *m_type; // Array of type descriptors
+ uint m_size; // Number of elements in the types array
uint m_field_metadata_size;
uint16 *m_field_metadata;
- uchar *m_null_bits;
uint16 m_flags; // Table flags
+ uchar *m_null_bits;
uchar *m_memory;
};
@@ -236,13 +249,37 @@ private:
Extend the normal table list with a few new fields needed by the
slave thread, but nowhere else.
*/
-struct RPL_TABLE_LIST
- : public TABLE_LIST
+struct RPL_TABLE_LIST : public TABLE_LIST
{
- bool m_tabledef_valid;
table_def m_tabledef;
TABLE *m_conv_table;
+ const Copy_field *m_online_alter_copy_fields;
+ const Copy_field *m_online_alter_copy_fields_end;
+ uint cached_key_nr; // [0..MAX_KEY] if set, ~0U if unset
+ uint cached_usable_key_parts;
+ bool m_tabledef_valid;
bool master_had_triggers;
+
+ RPL_TABLE_LIST(const LEX_CSTRING *db_arg, const LEX_CSTRING *table_name_arg,
+ thr_lock_type thr_lock_type,
+ table_def &&tabledef, bool master_had_trigers)
+ : TABLE_LIST(db_arg, table_name_arg, NULL, thr_lock_type),
+ m_tabledef(std::move(tabledef)), m_conv_table(NULL),
+ m_online_alter_copy_fields(NULL), m_online_alter_copy_fields_end(NULL),
+ cached_key_nr(~0U), m_tabledef_valid(true),
+ master_had_triggers(master_had_trigers)
+ {}
+
+ RPL_TABLE_LIST(TABLE *table, thr_lock_type lock_type, TABLE *conv_table,
+ table_def &&tabledef,
+ const Copy_field online_alter_copy_fields[],
+ const Copy_field *online_alter_copy_fields_end)
+ : TABLE_LIST(table, lock_type),
+ m_tabledef(std::move(tabledef)), m_conv_table(conv_table),
+ m_online_alter_copy_fields(online_alter_copy_fields),
+ m_online_alter_copy_fields_end(online_alter_copy_fields_end),
+ cached_key_nr(~0U), m_tabledef_valid(true), master_had_triggers(false)
+ {}
};
diff --git a/sql/select_handler.cc b/sql/select_handler.cc
index b0b8e586..ab2a6850 100644
--- a/sql/select_handler.cc
+++ b/sql/select_handler.cc
@@ -17,6 +17,7 @@
#include "mariadb.h"
#include "sql_priv.h"
#include "sql_select.h"
+#include "sql_cte.h"
#include "select_handler.h"
@@ -36,11 +37,26 @@
*/
-select_handler::select_handler(THD *thd_arg, handlerton *ht_arg)
- : thd(thd_arg), ht(ht_arg), table(NULL),
- is_analyze(thd_arg->lex->analyze_stmt)
+select_handler::select_handler(THD *thd_arg, handlerton *ht_arg,
+ SELECT_LEX *sel_lex)
+ : select_lex(sel_lex), lex_unit(nullptr), table(nullptr),
+ thd(thd_arg), ht(ht_arg), result(sel_lex->join->result),
+ is_analyze(thd_arg->lex->analyze_stmt)
{}
+select_handler::select_handler(THD *thd_arg, handlerton *ht_arg,
+ SELECT_LEX_UNIT *sel_unit)
+ : select_lex(nullptr), lex_unit(sel_unit), table(nullptr),
+ thd(thd_arg), ht(ht_arg), result(sel_unit->result),
+ is_analyze(thd_arg->lex->analyze_stmt)
+{}
+
+select_handler::select_handler(THD *thd_arg, handlerton *ht_arg,
+ SELECT_LEX *sel_lex, SELECT_LEX_UNIT *sel_unit)
+ : select_lex(sel_lex), lex_unit(sel_unit), table(nullptr), thd(thd_arg),
+ ht(ht_arg), result(sel_lex->join->result),
+ is_analyze(thd_arg->lex->analyze_stmt)
+{}
select_handler::~select_handler()
{
@@ -49,21 +65,40 @@ select_handler::~select_handler()
}
-TABLE *select_handler::create_tmp_table(THD *thd, SELECT_LEX *select)
+TABLE *select_handler::create_tmp_table(THD *thd)
{
List<Item> types;
TMP_TABLE_PARAM tmp_table_param;
- TABLE *table;
DBUG_ENTER("select_handler::create_tmp_table");
- if (select->master_unit()->join_union_item_types(thd, types, 1))
+ SELECT_LEX_UNIT *unit= nullptr;
+ uint unit_parts_count= 0;
+
+ if (lex_unit)
+ {
+ unit= lex_unit;
+ SELECT_LEX *sl= unit->first_select();
+ while (sl)
+ {
+ unit_parts_count++;
+ sl= sl->next_select();
+ }
+ }
+ else
+ {
+ unit= select_lex->master_unit();
+ unit_parts_count= 1;
+ }
+
+ if (unit->join_union_item_types(thd, types, unit_parts_count))
DBUG_RETURN(NULL);
+
tmp_table_param.init();
tmp_table_param.field_count= tmp_table_param.func_count= types.elements;
- table= ::create_tmp_table(thd, &tmp_table_param, types,
- (ORDER *) 0, false, 0,
- TMP_TABLE_ALL_COLUMNS, 1,
- &empty_clex_str, true, false);
+ TABLE *table= ::create_tmp_table(thd, &tmp_table_param, types,
+ (ORDER *) 0, false, 0,
+ TMP_TABLE_ALL_COLUMNS, 1,
+ &empty_clex_str, true, false);
DBUG_RETURN(table);
}
@@ -75,7 +110,7 @@ bool select_handler::prepare()
Some engines (e.g. XPand) initialize "table" on their own.
So we need to create a temporary table only if "table" is NULL.
*/
- if (!table && !(table= create_tmp_table(thd, select)))
+ if (!table && !(table= create_tmp_table(thd)))
DBUG_RETURN(true);
DBUG_RETURN(table->fill_item_list(&result_columns));
}
@@ -92,22 +127,19 @@ bool select_handler::send_result_set_metadata()
DBUG_RETURN(false);
}
#endif /* WITH_WSREP */
- if (select->join->result->send_result_set_metadata(result_columns,
- Protocol::SEND_NUM_ROWS |
- Protocol::SEND_EOF))
- DBUG_RETURN(true);
-
- DBUG_RETURN(false);
+
+ DBUG_RETURN(result->send_result_set_metadata(
+ result_columns, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF));
}
bool select_handler::send_data()
{
- DBUG_ENTER("Pushdown_select::send_data");
-
- if (select->join->result->send_data(result_columns))
+ DBUG_ENTER("select_handler::send_data");
+ int res= result->send_data(result_columns);
+ // "-1" means "duplicate when executing UNION"
+ if (res && res != -1)
DBUG_RETURN(true);
-
DBUG_RETURN(false);
}
@@ -115,10 +147,7 @@ bool select_handler::send_data()
bool select_handler::send_eof()
{
DBUG_ENTER("select_handler::send_eof");
-
- if (select->join->result->send_eof())
- DBUG_RETURN(true);
- DBUG_RETURN(false);
+ DBUG_RETURN(result->send_eof());
}
@@ -171,3 +200,18 @@ void select_handler::print_error(int error, myf errflag)
{
my_error(ER_GET_ERRNO, MYF(0), error, hton_name(ht)->str);
}
+
+select_pushdown_type select_handler::get_pushdown_type()
+{
+ /*
+ In the case of single SELECT select_lex is initialized and lex_unit==NULL,
+ in the case of whole UNIT select_lex == NULL and lex_unit is initialized,
+ in the case of partial pushdown both select_lex and lex_unit
+ are initialized
+ */
+ if(!lex_unit)
+ return select_pushdown_type::SINGLE_SELECT;
+
+ return select_lex ? select_pushdown_type::PART_OF_UNIT :
+ select_pushdown_type::WHOLE_UNIT;
+}
diff --git a/sql/select_handler.h b/sql/select_handler.h
index 5cc63231..207af43f 100644
--- a/sql/select_handler.h
+++ b/sql/select_handler.h
@@ -20,6 +20,12 @@
#include "mariadb.h"
#include "sql_priv.h"
+enum class select_pushdown_type {
+ SINGLE_SELECT,
+ PART_OF_UNIT,
+ WHOLE_UNIT
+};
+
/**
@class select_handler
@@ -30,25 +36,18 @@
class select_handler
{
public:
- THD *thd;
- handlerton *ht;
+ // Constructor for a single SELECT_LEX (not a part of a unit)
+ select_handler(THD *thd_arg, handlerton *ht_arg, SELECT_LEX *sel_lex);
- SELECT_LEX *select; // Select to be excuted
+ // Constructor for a unit (UNION/EXCEPT/INTERSECT)
+ select_handler(THD *thd_arg, handlerton *ht_arg, SELECT_LEX_UNIT *sel_unit);
/*
- Temporary table where all results should be stored in record[0]
- The table has a field for every item from the select_lex::item_list.
- The table is actually never filled. Only its record buffer is used.
+ Constructor for a SELECT_LEX which is a part of a unit
+ (partial pushdown). Both SELECT_LEX and SELECT_LEX_UNIT are passed
*/
- TABLE *table;
- List<Item> result_columns;
-
- bool is_analyze;
-
- bool send_result_set_metadata();
- bool send_data();
-
- select_handler(THD *thd_arg, handlerton *ht_arg);
+ select_handler(THD *thd_arg, handlerton *ht_arg, SELECT_LEX *sel_lex,
+ SELECT_LEX_UNIT *sel_unit);
virtual ~select_handler();
@@ -56,9 +55,29 @@ class select_handler
virtual bool prepare();
- static TABLE *create_tmp_table(THD *thd, SELECT_LEX *sel);
+ /*
+ Select_handler processes these cases:
+ - single SELECT
+ - whole unit (multiple SELECTs combined with UNION/EXCEPT/INTERSECT)
+ - single SELECT that is part of a unit (partial pushdown)
+
+ In the case of single SELECT select_lex is initialized and lex_unit==NULL,
+ in the case of whole UNIT select_lex == NULL and lex_unit is initialized,
+ in the case of partial pushdown both select_lex and lex_unit
+ are initialized
+ */
+ SELECT_LEX *select_lex; // Single select/part of a unit to be executed
+ SELECT_LEX_UNIT *lex_unit; // Unit to be executed
+
+ /*
+ Temporary table where all results should be stored in record[0]
+ The table has a field for every item from the select_lex::item_list.
+ The table is actually never filled. Only its record buffer is used.
+ */
+ TABLE *table;
protected:
+
/*
Functions to scan the select result set.
All these returns 0 if ok, error code in case of error.
@@ -80,7 +99,21 @@ protected:
/* Report errors */
virtual void print_error(int error, myf errflag);
+ bool send_result_set_metadata();
+ bool send_data();
bool send_eof();
+
+ TABLE *create_tmp_table(THD *thd);
+
+ select_pushdown_type get_pushdown_type();
+
+ THD *thd;
+ handlerton *ht;
+
+ select_result *result; // Object receiving the retrieved data
+ List<Item> result_columns;
+
+ bool is_analyze;
};
#endif /* SELECT_HANDLER_INCLUDED */
diff --git a/sql/semisync_master.cc b/sql/semisync_master.cc
index aa1056c8..fdf2cf21 100644
--- a/sql/semisync_master.cc
+++ b/sql/semisync_master.cc
@@ -646,7 +646,7 @@ int Repl_semi_sync_master::report_reply_packet(uint32 server_id,
l_end:
{
char buf[256];
- octet2hex(buf, (const char*) packet,
+ octet2hex(buf, (const unsigned char*) packet,
MY_MIN(sizeof(buf)-1, (size_t) packet_len));
sql_print_information("First bytes of the packet from semisync slave "
"server-id %d: %s", server_id, buf);
diff --git a/sql/session_tracker.cc b/sql/session_tracker.cc
index 14cb78e8..74208b68 100644
--- a/sql/session_tracker.cc
+++ b/sql/session_tracker.cc
@@ -60,6 +60,16 @@ void Session_sysvars_tracker::vars_list::copy(vars_list* from, THD *thd)
from->init();
}
+Session_sysvars_tracker::
+sysvar_node_st *Session_sysvars_tracker::vars_list::search(const sys_var *svar)
+{
+ return reinterpret_cast<sysvar_node_st*>(
+ my_hash_search(&m_registered_sysvars,
+ reinterpret_cast<const uchar*>(&svar->offset),
+ sizeof(svar->offset)));
+}
+
+
/**
Inserts the variable to be tracked into m_registered_sysvars hash.
@@ -559,8 +569,9 @@ uchar *Session_sysvars_tracker::sysvars_get_key(const char *entry,
size_t *length,
my_bool not_used __attribute__((unused)))
{
- *length= sizeof(sys_var *);
- return (uchar *) &(((sysvar_node_st *) entry)->m_svar);
+ auto key=&(((sysvar_node_st *) entry)->m_svar->offset);
+ *length= sizeof(*key);
+ return (uchar *) key;
}
diff --git a/sql/session_tracker.h b/sql/session_tracker.h
index 5715b583..690bbc82 100644
--- a/sql/session_tracker.h
+++ b/sql/session_tracker.h
@@ -154,14 +154,7 @@ class Session_sysvars_tracker: public State_tracker
my_hash_free(&m_registered_sysvars);
}
- sysvar_node_st *search(const sys_var *svar)
- {
- return reinterpret_cast<sysvar_node_st*>(
- my_hash_search(&m_registered_sysvars,
- reinterpret_cast<const uchar*>(&svar),
- sizeof(sys_var*)));
- }
-
+ sysvar_node_st *search(const sys_var *svar);
sysvar_node_st *at(ulong i)
{
DBUG_ASSERT(i < m_registered_sysvars.records);
@@ -290,9 +283,9 @@ enum enum_tx_state {
Transaction access mode
*/
enum enum_tx_read_flags {
- TX_READ_INHERIT = 0, ///< not explicitly set, inherit session.tx_read_only
- TX_READ_ONLY = 1, ///< START TRANSACTION READ ONLY, or tx_read_only=1
- TX_READ_WRITE = 2, ///< START TRANSACTION READ WRITE, or tx_read_only=0
+ TX_READ_INHERIT = 0, ///< not explicitly set, inherit session.transaction_read_only
+ TX_READ_ONLY = 1, ///< START TRANSACTION READ ONLY, or transaction_read_only=1
+ TX_READ_WRITE = 2, ///< START TRANSACTION READ WRITE, or transaction_read_only=0
};
@@ -300,7 +293,7 @@ enum enum_tx_read_flags {
Transaction isolation level
*/
enum enum_tx_isol_level {
- TX_ISOL_INHERIT = 0, ///< not explicitly set, inherit session.tx_isolation
+ TX_ISOL_INHERIT = 0, ///< not explicitly set, inherit session.transaction_isolation
TX_ISOL_UNCOMMITTED = 1,
TX_ISOL_COMMITTED = 2,
TX_ISOL_REPEATABLE = 3,
diff --git a/sql/set_var.cc b/sql/set_var.cc
index aa9ec5ab..61528b45 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -214,8 +214,9 @@ bool sys_var::update(THD *thd, set_var *var)
/*
Make sure we don't session-track variables that are not actually
- part of the session. tx_isolation and and tx_read_only for example
- exist as GLOBAL, SESSION, and one-shot ("for next transaction only").
+ part of the session. transaction_isolation and transaction_read_only for
+ example exist as GLOBAL, SESSION, and one-shot ("for next transaction
+ only").
*/
if ((var->type == OPT_SESSION) && (!ret))
{
@@ -310,7 +311,7 @@ do { \
case SHOW_HA_ROWS: do_num_val (ha_rows,CMD);
#define case_for_double(CMD) \
- case SHOW_DOUBLE: do_num_val (double,CMD)
+ case SHOW_DOUBLE: do_num_val (double,CMD);
#define case_get_string_as_lex_string \
case SHOW_CHAR: \
@@ -423,20 +424,7 @@ void sys_var::do_deprecated_warning(THD *thd)
{
char buf1[NAME_CHAR_LEN + 3];
strxnmov(buf1, sizeof(buf1)-1, "@@", name.str, 0);
-
- /*
- if deprecation_substitute is an empty string,
- there is no replacement for the syntax
- */
- uint errmsg= deprecation_substitute[0] == '\0'
- ? ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
- : ER_WARN_DEPRECATED_SYNTAX;
- if (thd)
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX, ER_THD(thd, errmsg),
- buf1, deprecation_substitute);
- else
- sql_print_warning(ER_DEFAULT(errmsg), buf1, deprecation_substitute);
+ warn_deprecated<999999>(thd, buf1, deprecation_substitute);
}
}
@@ -1550,4 +1538,3 @@ ulonglong get_system_variable_hash_version(void)
{
return system_variable_hash_version;
}
-
diff --git a/sql/set_var.h b/sql/set_var.h
index ce1d01b9..aed4955e 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -84,7 +84,7 @@ protected:
typedef bool (*on_update_function)(sys_var *self, THD *thd, enum_var_type type);
int flags; ///< or'ed flag_enum values
- const SHOW_TYPE show_val_type; ///< what value_ptr() returns for sql_show.cc
+ SHOW_TYPE show_val_type; ///< what value_ptr() returns for sql_show.cc
PolyLock *guard; ///< *second* lock that protects the variable
ptrdiff_t offset; ///< offset to the value from global_system_variables
on_check_function on_check;
@@ -134,6 +134,8 @@ public:
return system_charset_info;
}
bool is_readonly() const { return flags & READONLY; }
+ void update_flags(int new_flags) { flags = new_flags; }
+ int get_flags() const { return flags; }
/**
the following is only true for keycache variables,
that support the syntax @@keycache_name.variable_name
@@ -463,6 +465,9 @@ inline bool IS_SYSVAR_AUTOSIZE(void *ptr)
bool fix_delay_key_write(sys_var *self, THD *thd, enum_var_type type);
sql_mode_t expand_sql_mode(sql_mode_t sql_mode);
+#ifndef EMBEDDED_LIBRARY
+bool validate_redirect_url(char *str, size_t len);
+#endif
const char *sql_mode_string_representation(uint bit_number);
bool sql_mode_string_representation(THD *thd, sql_mode_t sql_mode,
LEX_CSTRING *ls);
@@ -485,5 +490,4 @@ void free_engine_list(plugin_ref *list);
plugin_ref *copy_engine_list(plugin_ref *list);
plugin_ref *temp_copy_engine_list(THD *thd, plugin_ref *list);
char *pretty_print_engine_list(THD *thd, plugin_ref *list);
-
#endif
diff --git a/sql/share/CMakeLists.txt b/sql/share/CMakeLists.txt
index 33d0bea2..54ee10be 100644
--- a/sql/share/CMakeLists.txt
+++ b/sql/share/CMakeLists.txt
@@ -40,14 +40,11 @@ russian
serbian
slovak
spanish
+swahili
swedish
ukrainian
)
-SET(files
- errmsg-utf8.txt
-)
-
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR}
COMPONENT Common PATTERN "languages.html" EXCLUDE
)
@@ -57,5 +54,4 @@ IF (NOT WITHOUT_SERVER)
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server)
ENDFOREACH()
- INSTALL(FILES ${files} DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server)
ENDIF()
diff --git a/sql/share/README.md b/sql/share/README.md
new file mode 100644
index 00000000..2ef8c907
--- /dev/null
+++ b/sql/share/README.md
@@ -0,0 +1,51 @@
+## A quicker way for adding new language translations to the errmsg-utf8.txt file
+
+### Summary
+
+To generate a new language translation of MariaDB use the following pull request (PR) as a template for your work:
+- https://github.com/MariaDB/server/pull/2676
+
+You will notice as part of your translation work, you will have to add your language translations to the file `sql/share/errmsg-utf8.txt` which is found in the current directory. This file is long with many sections which can make the translation work tedious. In this README, we explain a procedure and provide a script `insert_translations_into_errmsg.py` that cuts down the amount of tedium in accomplishing the task.
+
+### Procedure
+1. Start by grepping out all the english translations from errmsg-utf8.txt using the following grep command, and redirecting the output to a file:
+
+ grep -P "^\s*eng\s" errmsg-utf8.txt > all_english_text_in_errmsg-utf8.txt
+
+2. Next use Google translate to obtain a translation of this file. Google translate provides the ability to upload whole files for translation. For example, this technique was used to obtain Swahili translations which yielded a file with output similar to the below (output is truncated for clarity):
+
+ sw "hashchk"
+ sw "isamchk"
+ sw "LA"
+ sw "NDIYO"
+ sw "Haiwezi kuunda faili '% -.200s' (kosa: %M)"
+ sw "Haiwezi kuunda jedwali %`s.%`s (kosa: %M)"
+ sw "Haiwezi kuunda hifadhidata '% -.192s' (kosa: %M)"
+ sw "Haiwezi kuunda hifadhidata '% -.192s'; hifadhidata ipo"
+
+Note that Google translate removes the leading whitespace in the translation file it generates. DO NOT add that leading whitespace back!
+
+3. Give the translated file an appropriate name (e.g. `all_swahili_text_in_errmsg-utf8.txt`) and store it in the same directory with `errmsg-utf8.txt` and `all_english_text_in_errmsg-utf8.txt`. These 3 files will be used by the script insert_translations_into_errmsg.py.
+
+4. Proof check the auto-translations in the file you downloaded from Google translate. Note that Google might ommit formating information
+that will cause the compilation of MariaDB to fail, so pay attention to these.
+
+5. Reintegrate these translations into the errmsg-utf8.txt by running the insert_translations_into_errmsg.py script as follows:
+
+ chmod ugo+x insert_translations_into_errmsg.py # Make the script executable if it is not.
+
+ ./insert_translations_into_errmsg.py <errmsg-utf8.txt file> <file with grepped english entries> <file with new language entries>
+
+ For example, for the swahili translation, we ran the following:
+
+ ./insert_translations_into_errmsg.py errmsg-utf8.txt all_english_text_in_errmsg-utf8.txt all_swahili_text_in_errmsg-utf8.txt
+
+ The script uses the `errmsg-utf8.txt` file and the grepped english file to keep track of each new translation. It then creates a file in the same directory as `errmsg-utf8.txt` with the name `errmsg-utf8-with-new-language.txt`.
+
+6. Check that the reintegration of the new translations into `errmsg-utf8-with-new-language.txt` went OK, and if it did, rename `errmsg-utf8-with-new-language.txt` to `errmsg-utf8.txt`:
+
+ mv errmsg-utf8-with-new-language.txt errmsg-utf8.txt
+
+7. In the header of errmsg-utf8.txt make sure to add your language long form to short form mapping. E.g. for Swahili, add:
+
+ swahili=sw
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
index 0a570892..58fef692 100644
--- a/sql/share/errmsg-utf8.txt
+++ b/sql/share/errmsg-utf8.txt
@@ -1,4 +1,4 @@
-languages bulgarian=bgn, chinese=chi, czech=cze, danish=dan, dutch=nla, english=eng, estonian=est, french=fre, georgian=geo, german=ger, greek=greek, hindi=hindi, hungarian=hun, italian=ita, japanese=jpn, korean=kor, norwegian-ny=norwegian-ny, norwegian=nor, polish=pol, portuguese=por, romanian=rum, russian=rus, serbian=serbian, slovak=slo, spanish=spa, swedish=swe, ukrainian=ukr;
+languages bulgarian=bgn, chinese=chi, czech=cze, danish=dan, dutch=nla, english=eng, estonian=est, french=fre, georgian=geo, german=ger, greek=greek, hindi=hindi, hungarian=hun, italian=ita, japanese=jpn, korean=kor, norwegian-ny=norwegian-ny, norwegian=nor, polish=pol, portuguese=por, romanian=rum, russian=rus, serbian=serbian, slovak=slo, spanish=spa, swahili=sw, swedish=swe, ukrainian=ukr;
default-language eng
@@ -30,6 +30,7 @@ ER_NO
rus "НЕТ"
serbian "NE"
slo "NIE"
+ sw "LA"
ukr "НІ"
ER_YES
chi "是的"
@@ -55,6 +56,7 @@ ER_YES
serbian "DA"
slo "Áno"
spa "SÍ"
+ sw "NDIYO"
ukr "ТАК"
ER_CANT_CREATE_FILE
chi "无法创建文件'%-.200s'(错误号码:%M)"
@@ -81,6 +83,7 @@ ER_CANT_CREATE_FILE
serbian "Ne mogu da kreiram file '%-.200s' (errno: %M)"
slo "Nemôžem vytvoriť súbor '%-.200s' (chybový kód: %M)"
spa "No puedo crear el fichero/archivo '%-.200s' (Error: %M)"
+ sw "Haiwezi kuunda faili '% -.200s' (kosa: %M)"
swe "Kan inte skapa filen '%-.200s' (Felkod: %M)"
ukr "Не можу створити файл '%-.200s' (помилка: %M)"
ER_CANT_CREATE_TABLE
@@ -108,6 +111,7 @@ ER_CANT_CREATE_TABLE
serbian "Ne mogu da kreiram tabelu %`s.%`s (errno: %M)"
slo "Nemôžem vytvoriť tabuľku %`s.%`s (chybový kód: %M)"
spa "No puedo crear la tabla %`s.%`s (Error: %M)"
+ sw "Haiwezi kuunda jedwali %`s.%`s (kosa: %M)"
swe "Kan inte skapa tabellen %`s.%`s (Felkod: %M)"
ukr "Не можу створити таблицю %`s.%`s (помилка: %M)"
ER_CANT_CREATE_DB
@@ -135,6 +139,7 @@ ER_CANT_CREATE_DB
serbian "Ne mogu da kreiram bazu '%-.192s' (errno: %M)"
slo "Nemôžem vytvoriť databázu '%-.192s' (chybový kód: %M)"
spa "No puedo crear la base de datos '%-.192s' (Error: %M)"
+ sw "Haiwezi kuunda hifadhidata '% -.192s' (kosa: %M)"
swe "Kan inte skapa databasen '%-.192s' (Felkod: %M)"
ukr "Не можу створити базу данних '%-.192s' (помилка: %M)"
ER_DB_CREATE_EXISTS
@@ -162,6 +167,7 @@ ER_DB_CREATE_EXISTS
serbian "Ne mogu da kreiram bazu '%-.192s'; baza već postoji"
slo "Nemôžem vytvoriť databázu '%-.192s'; databáza existuje"
spa "No puedo crear la base de datos '%-.192s'; la base de datos ya existe"
+ sw "Haiwezi kuunda hifadhidata '% -.192s'; hifadhidata ipo"
swe "Databasen '%-.192s' existerar redan"
ukr "Не можу створити базу данних '%-.192s'. База данних існує"
ER_DB_DROP_EXISTS
@@ -189,6 +195,7 @@ ER_DB_DROP_EXISTS
serbian "Ne mogu da izbrišem bazu '%-.192s'; baza ne postoji"
slo "Nemôžem zmazať databázu '%-.192s'; databáza neexistuje"
spa "No puedo eliminar la base de datos '%-.192s'; la base de datos no existe"
+ sw "Haiwezi kuangusha hifadhidata '% -.192s'; hifadhidata haipo"
swe "Kan inte radera databasen '%-.192s'; databasen finns inte"
ukr "Не можу видалити базу данних '%-.192s'. База данних не існує"
ER_DB_DROP_DELETE
@@ -216,6 +223,7 @@ ER_DB_DROP_DELETE
serbian "Ne mogu da izbrišem bazu (ne mogu da izbrišem '%-.192s', errno: %M)"
slo "Chyba pri mazaní databázy (nemôžem zmazať '%-.192s', chybový kód: %M)"
spa "Error eliminando la base de datos (no puedo borrar '%-.192s', error %M)"
+ sw "Hitilafu katika kuangusha hifadhidata (haiwezi kufuta '%-.192s', kosa: %M)"
swe "Fel vid radering av databasen (Kan inte radera '%-.192s'. Felkod: %M)"
ukr "Не можу видалити базу данних (Не можу видалити '%-.192s', помилка: %M)"
ER_DB_DROP_RMDIR
@@ -243,6 +251,7 @@ ER_DB_DROP_RMDIR
serbian "Ne mogu da izbrišem bazu (ne mogu da izbrišem direktorijum '%-.192s', errno: %M)"
slo "Chyba pri mazaní databázy (nemôžem vymazať adresár '%-.192s', chybový kód: %M)"
spa "Error eliminando la base de datos (No puedo borrar el directorio '%-.192s', error %M)"
+ sw "Hitilafu katika kuangusha hifadhidata (haiwezi rmdir '%-.192s', errno: %M)"
swe "Fel vid radering av databasen (Kan inte radera biblioteket '%-.192s'. Felkod: %M)"
ukr "Не можу видалити базу данних (Не можу видалити теку '%-.192s', помилка: %M)"
ER_CANT_DELETE_FILE
@@ -270,6 +279,7 @@ ER_CANT_DELETE_FILE
serbian "Greška pri brisanju '%-.192s' (errno: %M)"
slo "Chyba pri mazaní '%-.192s' (chybový kód: %M)"
spa "Error en el borrado de '%-.192s' (Error: %M)"
+ sw "Hitilafu wakati wa kufuta '%-.192s' (kosa: %M)"
swe "Kan inte radera filen '%-.192s' (Felkod: %M)"
ukr "Не можу видалити '%-.192s' (помилка: %M)"
ER_CANT_FIND_SYSTEM_REC
@@ -297,6 +307,7 @@ ER_CANT_FIND_SYSTEM_REC
serbian "Ne mogu da pročitam slog iz sistemske tabele"
slo "Nemôžem čítať záznam v systémovej tabuľke"
spa "No puedo leer el registro en la tabla del sistema"
+ sw "Haiwezi kusoma rekodi kwenye jedwali la mfumo"
swe "Hittar inte posten i systemregistret"
ukr "Не можу зчитати запис з системної таблиці"
ER_CANT_GET_STAT
@@ -324,6 +335,7 @@ ER_CANT_GET_STAT
serbian "Ne mogu da dobijem stanje file-a '%-.200s' (errno: %M)"
slo "Nemôžem zistiť stav '%-.200s' (chybový kód: %M)"
spa "No puedo obtener el estado de '%-.200s' (Error: %M)"
+ sw "Haiwezi kupata hali ya '%-.200s' (kosa: %M)"
swe "Kan inte läsa filinformationen (stat) från '%-.200s' (Felkod: %M)"
ukr "Не можу отримати статус '%-.200s' (помилка: %M)"
ER_CANT_GET_WD
@@ -351,6 +363,7 @@ ER_CANT_GET_WD
serbian "Ne mogu da dobijem trenutni direktorijum (errno: %M)"
slo "Nemôžem zistiť pracovný adresár (chybový kód: %M)"
spa "No puedo obtener directorio de trabajo (Error: %M)"
+ sw "Haiwezi kupata saraka ya kufanya kazi (kosa: %M)"
swe "Kan inte inte läsa aktivt bibliotek. (Felkod: %M)"
ukr "Не можу визначити робочу теку (помилка: %M)"
ER_CANT_LOCK
@@ -378,6 +391,7 @@ ER_CANT_LOCK
serbian "Ne mogu da zaključam file (errno: %M)"
slo "Nemôžem zamknúť súbor (chybový kód: %M)"
spa "No puedo bloquear fichero/archivo: (Error: %M)"
+ sw "Haiwezi kufunga faili (kosa: %M)"
swe "Kan inte låsa filen. (Felkod: %M)"
ukr "Не можу заблокувати файл (помилка: %M)"
ER_CANT_OPEN_FILE
@@ -405,6 +419,7 @@ ER_CANT_OPEN_FILE
serbian "Ne mogu da otvorim file: '%-.200s' (errno: %M)"
slo "Nemôžem otvoriť súbor: '%-.200s' (chybový kód: %M)"
spa "No puedo abrir el fichero/archivo: '%-.200s' (Error: %M)"
+ sw "Haiwezi kufungua faili: '%-.200s' (kosa: %M)"
swe "Kan inte använda '%-.200s' (Felkod: %M)"
ukr "Не можу відкрити файл: '%-.200s' (помилка: %M)"
ER_FILE_NOT_FOUND
@@ -432,6 +447,7 @@ ER_FILE_NOT_FOUND
serbian "Ne mogu da pronađem file: '%-.200s' (errno: %M)"
slo "Nemôžem nájsť súbor: '%-.200s' (chybový kód: %M)"
spa "No puedo hallar el fichero/archivo: '%-.200s' (Error: %M)"
+ sw "Haiwezi kupata faili: '%-.200s' (kosa: %M)"
swe "Hittar inte filen '%-.200s' (Felkod: %M)"
ukr "Не можу знайти файл: '%-.200s' (помилка: %M)"
ER_CANT_READ_DIR
@@ -459,6 +475,7 @@ ER_CANT_READ_DIR
serbian "Ne mogu da pročitam direktorijum '%-.192s' (errno: %M)"
slo "Nemôžem čítať adresár '%-.192s' (chybový kód: %M)"
spa "No puedo leer el directorio de '%-.192s' (Error: %M)"
+ sw "Haiwezi kusoma dir ya '%-.192s' (kosa: %M)"
swe "Kan inte läsa från bibliotek '%-.192s' (Felkod: %M)"
ukr "Не можу прочитати теку '%-.192s' (помилка: %M)"
ER_CANT_SET_WD
@@ -486,6 +503,7 @@ ER_CANT_SET_WD
serbian "Ne mogu da promenim direktorijum na '%-.192s' (errno: %M)"
slo "Nemôžem vojsť do adresára '%-.192s' (chybový kód: %M)"
spa "No puedo cambiar al directorio a '%-.192s' (Error: %M)"
+ sw "Haiwezi kubadilisha dir kuwa '%-.192s' (kosa: %M)"
swe "Kan inte byta till '%-.192s' (Felkod: %M)"
ukr "Не можу перейти у теку '%-.192s' (помилка: %M)"
ER_CHECKREAD
@@ -513,6 +531,7 @@ ER_CHECKREAD
serbian "Slog je promenjen od zadnjeg čitanja tabele '%-.192s'"
slo "Záznam bol zmenený od posledného čítania v tabuľke '%-.192s'"
spa "El registro ha cambiado desde la ultima lectura de la tabla '%-.192s'"
+ sw "Rekodi imebadilika tangu kusomeka mara ya mwisho kwenye jedwali '%-.192s'"
swe "Posten har förändrats sedan den lästes i register '%-.192s'"
ukr "Запис було змінено з часу останнього читання з таблиці '%-.192s'"
ER_DISK_FULL
@@ -540,6 +559,7 @@ ER_DISK_FULL
serbian "Disk je pun (%s). Čekam nekoga da dođe i oslobodi nešto mesta... (errno: %M)"
slo "Disk je plný (%s), čakám na uvoľnenie miesta... (chybový kód: %M)"
spa "Disco lleno (%s). Esperando a que alguien libere algo de espacio... (Error: %M)"
+ sw "Diski imejaa (%s); kusubiri mtu atoe nafasi... (kosa: %M)"
swe "Disken är full (%s). Väntar tills det finns ledigt utrymme... (Felkod: %M)"
ukr "Диск заповнений (%s). Вичикую, доки звільниться трохи місця... (помилка: %M)"
ER_DUP_KEY 23000
@@ -567,6 +587,7 @@ ER_DUP_KEY 23000
serbian "Ne mogu da pišem pošto postoji duplirani ključ u tabeli '%-.192s'"
slo "Nemôžem zapísať, duplikát kľúča v tabuľke '%-.192s'"
spa "No puedo escribir, clave duplicada en la tabla '%-.192s'"
+ sw "Haiwezi kuandika; ufunguo rudufu imepatikana katika jedwali '% -.192s'"
swe "Kan inte skriva, dubbel söknyckel i register '%-.192s'"
ukr "Не можу записати, дублюючийся ключ в таблиці '%-.192s'"
ER_ERROR_ON_CLOSE
@@ -594,6 +615,7 @@ ER_ERROR_ON_CLOSE
serbian "Greška pri zatvaranju '%-.192s' (errno: %M)"
slo "Chyba pri zatváraní '%-.192s' (chybový kód: %M)"
spa "Error en el cierre de '%-.192s' (Error: %M)"
+ sw "Hitilafu wakati wa kufungwa kwa '%-.192s' (kosa: %M)"
swe "Fick fel vid stängning av '%-.192s' (Felkod: %M)"
ukr "Не можу закрити '%-.192s' (помилка: %M)"
ER_ERROR_ON_READ
@@ -621,6 +643,7 @@ ER_ERROR_ON_READ
serbian "Greška pri čitanju file-a '%-.200s' (errno: %M)"
slo "Chyba pri čítaní súboru '%-.200s' (chybový kód: %M)"
spa "Error leyendo el fichero/archivo '%-.200s' (Error: %M)"
+ sw "Hitilafu katika kusoma faili '%-.200s' (kosa: %M)"
swe "Fick fel vid läsning av '%-.200s' (Felkod %M)"
ukr "Не можу прочитати файл '%-.200s' (помилка: %M)"
ER_ERROR_ON_RENAME
@@ -648,6 +671,7 @@ ER_ERROR_ON_RENAME
serbian "Greška pri promeni imena '%-.210s' na '%-.210s' (errno: %M)"
slo "Chyba pri premenovávaní '%-.210s' na '%-.210s' (chybový kód: %M)"
spa "Error en el renombrado de '%-.210s' a '%-.210s' (Error: %M)"
+ sw "Hitilafu ya kubadilisha jina la '%-.210s' hadi '%-.210s' (kosa: %M)"
swe "Kan inte byta namn från '%-.210s' till '%-.210s' (Felkod: %M)"
ukr "Не можу перейменувати '%-.210s' у '%-.210s' (помилка: %M)"
ER_ERROR_ON_WRITE
@@ -675,6 +699,7 @@ ER_ERROR_ON_WRITE
serbian "Greška pri upisu '%-.200s' (errno: %M)"
slo "Chyba pri zápise do súboru '%-.200s' (chybový kód: %M)"
spa "Error escribiendo el fichero/archivo '%-.200s' (Error: %M)"
+ sw "Hitilafu katika kuandika faili '%-.200s' (kosa: %M)"
swe "Fick fel vid skrivning till '%-.200s' (Felkod %M)"
ukr "Не можу записати файл '%-.200s' (помилка: %M)"
ER_FILE_USED
@@ -702,6 +727,7 @@ ER_FILE_USED
serbian "'%-.192s' je zaključan za upis"
slo "'%-.192s' je zamknutý proti zmenám"
spa "'%-.192s' esta bloqueado contra cambios"
+ sw "'%-.192s' imefungwa dhidi ya mabadiliko"
swe "'%-.192s' är låst mot användning"
ukr "'%-.192s' заблокований на внесення змін"
ER_FILSORT_ABORT
@@ -729,6 +755,7 @@ ER_FILSORT_ABORT
serbian "Sortiranje je prekinuto"
slo "Triedenie prerušené"
spa "Ordenación cancelada"
+ sw "Panga imeacha kufanya kazi ghafla"
swe "Sorteringen avbruten"
ukr "Сортування перервано"
ER_FORM_NOT_FOUND
@@ -756,6 +783,7 @@ ER_FORM_NOT_FOUND
serbian "View '%-.192s' ne postoji za '%-.192s'"
slo "Pohľad '%-.192s' neexistuje pre '%-.192s'"
spa "La vista '%-.192s' no existe para '%-.192s'"
+ sw "Angalia '%-.192s' haipo kwa '%-.192s'"
swe "Formulär '%-.192s' finns inte i '%-.192s'"
ukr "Вигляд '%-.192s' не існує для '%-.192s'"
ER_GET_ERRNO
@@ -775,6 +803,7 @@ ER_GET_ERRNO
rum "Eroarea %M obtinuta din handlerul tabelei %s"
rus "Получена ошибка %M от обработчика таблиц %s"
spa "Obtenido error %M desde el motor de almacenaje %s"
+ sw "Nimepata hitilafu %M kutoka kwa injini ya hifadhi %s"
swe "Fick felkod %M från databashanteraren %s"
ukr "Отримано помилку %M від дескриптора таблиці %s"
ER_ILLEGAL_HA
@@ -785,6 +814,7 @@ ER_ILLEGAL_HA
hindi "स्टोरेज इंजन %s में यह विकल्प उपलब्ध नहीं है (टेबल: %`s.%`s)"
rus "Обработчик %s таблицы %`s.%`s не поддерживает эту возможность"
spa "El motor de almacenaje %s de la tabla %`s.%`s no contiene esta opción"
+ sw "Injini ya kuhifadhi %s ya jedwali %`s.%`s haina chaguo hili"
ukr "Дескриптор %s таблиці %`s.%`s не має цієї властивості"
ER_KEY_NOT_FOUND
chi "无法在'%-.192s'中找到记录"
@@ -811,6 +841,7 @@ ER_KEY_NOT_FOUND
serbian "Ne mogu da pronađem slog u '%-.192s'"
slo "Nemôžem nájsť záznam v '%-.192s'"
spa "No puedo encontrar el registro en '%-.192s'"
+ sw "Haiwezi kupata rekodi katika '%-.192s'"
swe "Hittar inte posten '%-.192s'"
ukr "Не можу записати у '%-.192s'"
ER_NOT_FORM_FILE
@@ -838,6 +869,7 @@ ER_NOT_FORM_FILE
serbian "Pogrešna informacija u file-u: '%-.200s'"
slo "Nesprávna informácia v súbore: '%-.200s'"
spa "Información incorrecta en el fichero/archivo: '%-.200s'"
+ sw "Maelezo yasiyo sahihi katika faili: '% -.200s'"
swe "Felaktig fil: '%-.200s'"
ukr "Хибна інформація у файлі: '%-.200s'"
ER_NOT_KEYFILE
@@ -865,6 +897,7 @@ ER_NOT_KEYFILE
serbian "Pogrešan key file za tabelu: '%-.200s'; probajte da ga ispravite"
slo "Nesprávny kľúč pre tabuľku '%-.200s'; pokúste sa ho opraviť"
spa "El índice para la tabla: '%-.200s' está corrupto; intente repararlo"
+ sw "Fahirisi ya jedwali '% -.200s' imeharibika; jaribu kuirekebisha"
swe "Fatalt fel vid hantering av register '%-.200s'; kör en reparation"
ukr "Хибний файл ключей для таблиці: '%-.200s'; Спробуйте його відновити"
ER_OLD_KEYFILE
@@ -892,6 +925,7 @@ ER_OLD_KEYFILE
serbian "Zastareo key file za tabelu '%-.192s'; ispravite ga"
slo "Starý kľúčový súbor pre '%-.192s'; opravte ho!"
spa "Clave antigua de fichero/archivo para la tabla '%-.192s'; ¡repárela!"
+ sw "Faili ya ufunguo wa zamani kwa jedwali '%-.192s'; itengeneze!"
swe "Gammal nyckelfil '%-.192s'; reparera registret"
ukr "Старий файл ключей для таблиці '%-.192s'; Відновіть його!"
ER_OPEN_AS_READONLY
@@ -919,6 +953,7 @@ ER_OPEN_AS_READONLY
serbian "Tabelu '%-.192s' je dozvoljeno samo čitati"
slo "'%-.192s' is čítať only"
spa "La tabla '%-.192s' es de sólo lectura"
+ sw "Jedwali '%-.192s' linasomwa pekee"
swe "'%-.192s' är skyddad mot förändring"
ukr "Таблиця '%-.192s' тільки для читання"
ER_OUTOFMEMORY HY001 S1001
@@ -945,6 +980,7 @@ ER_OUTOFMEMORY HY001 S1001
serbian "Nema memorije. Restartujte MariaDB server i probajte ponovo (potrebno je %d byte-ova)"
slo "Málo pamäti. Reštartujte daemona a skúste znova (je potrebných %d bytov)"
spa "Memoria insuficiente. Reinicie el servidor e inténtelo otra vez (necesita %d bytes)"
+ sw "Kumbukumbu imejaa; anzisha tena seva na ujaribu tena (inahitajika baiti %d)"
swe "Oväntat slut på minnet, starta om programmet och försök på nytt (Behövde %d bytes)"
ukr "Брак пам'яті. Рестартуйте сервер та спробуйте знову (потрібно %d байтів)"
ER_OUT_OF_SORTMEMORY HY001 S1001
@@ -971,6 +1007,7 @@ ER_OUT_OF_SORTMEMORY HY001 S1001
serbian "Nema memorije za sortiranje. Povećajte veličinu sort buffer-a MariaDB server-u"
slo "Málo pamäti pre triedenie, zvýšte veľkosť triediaceho bufferu"
spa "Memoria de ordenación insuficiente. Considere el incrementar el tamaño del búfer de ordenación del servidor"
+ sw "Kumbukumbu ya kupanga imejaa, fikiria kuongeza saizi ya bafa ya kupanga ya seva (server sort buffer)"
swe "Sorteringsbufferten räcker inte till. Kontrollera startparametrarna"
ukr "Брак пам'яті для сортування. Треба збільшити розмір буфера сортування у сервера"
ER_UNEXPECTED_EOF
@@ -997,6 +1034,7 @@ ER_UNEXPECTED_EOF
serbian "Neočekivani kraj pri čitanju file-a '%-.192s' (errno: %M)"
slo "Neočakávaný koniec súboru pri čítaní '%-.192s' (chybový kód: %M)"
spa "Inesperado fin de fichero/archivo mientras leíamos el fichero/archivo '%-.192s' (Error: %M)"
+ sw "Miwsho wa faili (EOF) isiyotarajiwa ilipatikana wakati wa kusoma faili '% -.192s' (kosa: %M)"
swe "Oväntat filslut vid läsning från '%-.192s' (Felkod: %M)"
ukr "Хибний кінець файлу '%-.192s' (помилка: %M)"
ER_CON_COUNT_ERROR 08004
@@ -1024,6 +1062,7 @@ ER_CON_COUNT_ERROR 08004
serbian "Previše konekcija"
slo "Príliš mnoho spojení"
spa "Demasiadas conexiones"
+ sw "Miunganisho mingi sana"
swe "För många anslutningar"
ukr "Забагато з'єднань"
ER_OUT_OF_RESOURCES
@@ -1050,6 +1089,7 @@ ER_OUT_OF_RESOURCES
serbian "Nema memorije."
slo "Málo miesta-pamäti pre vlákno"
spa "Memoria agotada"
+ sw "Kumbukumbu imejaa."
swe "Fick slut på minnet."
ukr "Брак пам'яті."
ER_BAD_HOST_ERROR 08S01
@@ -1077,6 +1117,7 @@ ER_BAD_HOST_ERROR 08S01
serbian "Ne mogu da dobijem ime host-a za vašu IP adresu"
slo "Nemôžem zistiť meno hostiteľa pre vašu adresu"
spa "No puedo obtener el nombre de equipo de la dirección de vd."
+ sw "Siwezi kupata jina la mwenyeji ya anwani yako"
swe "Kan inte hitta 'hostname' för din adress"
ukr "Не можу визначити ім'я хосту для вашої адреси"
ER_HANDSHAKE_ERROR 08S01
@@ -1103,6 +1144,7 @@ ER_HANDSHAKE_ERROR 08S01
serbian "Loš početak komunikacije (handshake)"
slo "Chyba pri nadväzovaní spojenia"
spa "Mal apretón de manos (handshake)"
+ sw "Kupeana mikono vibaya"
swe "Fel vid initiering av kommunikationen med klienten"
ukr "Невірна установка зв'язку"
ER_DBACCESS_DENIED_ERROR 42000
@@ -1129,6 +1171,7 @@ ER_DBACCESS_DENIED_ERROR 42000
serbian "Pristup je zabranjen korisniku '%s'@'%s' za bazu '%-.192s'"
slo "Zakázaný prístup pre užívateľa: '%s'@'%s' k databázi '%-.192s'"
spa "Acceso denegado para usuario: '%s'@'%s' a la base de datos '%-.192s'"
+ sw "Ufikiaji umekataliwa kwa mtumiaji '%s'@'%s' kwenye hifadhidata '%-.192s'"
swe "Användare '%s'@'%s' är ej berättigad att använda databasen %-.192s"
ukr "Доступ заборонено для користувача: '%s'@'%s' до бази данних '%-.192s'"
ER_ACCESS_DENIED_ERROR 28000
@@ -1155,6 +1198,7 @@ ER_ACCESS_DENIED_ERROR 28000
serbian "Pristup je zabranjen korisniku '%s'@'%s' (koristi lozinku: '%s')"
slo "Zakázaný prístup pre užívateľa: '%s'@'%s' (použitie hesla: %s)"
spa "Acceso denegado para usuario: '%s'@'%s' (Usando contraseña: %s)"
+ sw "Ufikiaji umekataliwa kwa mtumiaji '%s'@'%s' (kwa kutumia nenosiri: %s)"
swe "Användare '%s'@'%s' är ej berättigad att logga in (Använder lösen: %s)"
ukr "Доступ заборонено для користувача: '%s'@'%s' (Використано пароль: %s)"
ER_NO_DB_ERROR 3D000
@@ -1182,6 +1226,7 @@ ER_NO_DB_ERROR 3D000
serbian "Ni jedna baza nije selektovana"
slo "Nebola vybraná databáza"
spa "Base de datos no seleccionada"
+ sw "Hakuna hifadhidata iliyochaguliwa"
swe "Ingen databas i användning"
ukr "Базу данних не вибрано"
ER_UNKNOWN_COM_ERROR 08S01
@@ -1209,6 +1254,7 @@ ER_UNKNOWN_COM_ERROR 08S01
serbian "Nepoznata komanda"
slo "Neznámy príkaz"
spa "Comando desconocido"
+ sw "Amri isiyojulikana"
swe "Okänt kommando"
ukr "Невідома команда"
ER_BAD_NULL_ERROR 23000
@@ -1236,6 +1282,7 @@ ER_BAD_NULL_ERROR 23000
serbian "Kolona '%-.192s' ne može biti NULL"
slo "Pole '%-.192s' nemôže byť null"
spa "La columna '%-.192s' no puede ser nula"
+ sw "Safuwima '%-.192s' haiwezi kubatilishwa"
swe "Kolumn '%-.192s' får inte vara NULL"
ukr "Стовбець '%-.192s' не може бути нульовим"
ER_BAD_DB_ERROR 42000
@@ -1263,6 +1310,7 @@ ER_BAD_DB_ERROR 42000
serbian "Nepoznata baza '%-.192s'"
slo "Neznáma databáza '%-.192s'"
spa "Base de datos '%-.192s' desconocida"
+ sw "Hifadhidata isiyojulikana '%-.192s'"
swe "Okänd databas: '%-.192s'"
ukr "Невідома база данних '%-.192s'"
ER_TABLE_EXISTS_ERROR 42S01
@@ -1290,6 +1338,7 @@ ER_TABLE_EXISTS_ERROR 42S01
serbian "Tabela '%-.192s' već postoji"
slo "Tabuľka '%-.192s' už existuje"
spa "La tabla '%-.192s' ya existe"
+ sw "Jedwali '%-.192s' tayari lipo"
swe "Tabellen '%-.192s' finns redan"
ukr "Таблиця '%-.192s' вже існує"
ER_BAD_TABLE_ERROR 42S02
@@ -1317,6 +1366,7 @@ ER_BAD_TABLE_ERROR 42S02
serbian "Nepoznata tabela '%-.100T'"
slo "Neznáma tabuľka '%-.100T'"
spa "Tabla '%-.100T' no reconocida"
+ sw "Jedwali lisilojulikana '%-.100T'"
swe "Okänd tabell '%-.100T'"
ukr "Невідома таблиця '%-.100T'"
ER_NON_UNIQ_ERROR 23000
@@ -1344,6 +1394,7 @@ ER_NON_UNIQ_ERROR 23000
serbian "Kolona '%-.192s' u %-.192s nije jedinstvena u kontekstu"
slo "Pole: '%-.192s' v %-.192s je nejasné"
spa "La columna: '%-.192s' en %-.192s es ambigua"
+ sw "Safuwima '%-.192s' katika %-.192s ina utata"
swe "Kolumn '%-.192s' i %-.192s är inte unik"
ukr "Стовбець '%-.192s' у %-.192s визначений неоднозначно"
ER_SERVER_SHUTDOWN 08S01
@@ -1371,6 +1422,7 @@ ER_SERVER_SHUTDOWN 08S01
serbian "Gašenje servera je u toku"
slo "Prebieha ukončovanie práce servera"
spa "Desconexión de servidor en proceso"
+ sw "Uzimiko wa seva unaendelea"
swe "Servern går nu ned"
ukr "Завершується работа сервера"
ER_BAD_FIELD_ERROR 42S22 S0022
@@ -1398,6 +1450,7 @@ ER_BAD_FIELD_ERROR 42S22 S0022
serbian "Nepoznata kolona '%-.192s' u '%-.192s'"
slo "Neznáme pole '%-.192s' v '%-.192s'"
spa "No se reconoce la columna '%-.192s' en %-.192s"
+ sw "Safu wima isiyojulikana '%-.192s' katika '%-.192s'"
swe "Okänd kolumn '%-.192s' i %-.192s"
ukr "Невідомий стовбець '%-.192s' у '%-.192s'"
ER_WRONG_FIELD_WITH_GROUP 42000 S1009
@@ -1425,6 +1478,7 @@ ER_WRONG_FIELD_WITH_GROUP 42000 S1009
serbian "Entitet '%-.192s' nije naveden u komandi 'GROUP BY'"
slo "Použité '%-.192s' nebolo v 'group by'"
spa "'%-.192s' no se encuentra en GROUP BY"
+ sw "'%-.192s' hayuko kwenye GROUP BY"
swe "'%-.192s' finns inte i GROUP BY"
ukr "'%-.192s' не є у GROUP BY"
ER_WRONG_GROUP_FIELD 42000 S1009
@@ -1452,6 +1506,7 @@ ER_WRONG_GROUP_FIELD 42000 S1009
serbian "Ne mogu da grupišem po '%-.192s'"
slo "Nemôžem použiť 'group' na '%-.192s'"
spa "No puedo agrupar por '%-.192s'"
+ sw "Haiwezi kuweka kikundi kwenye '%-.192s'"
swe "Kan inte använda GROUP BY med '%-.192s'"
ukr "Не можу групувати по '%-.192s'"
ER_WRONG_SUM_SELECT 42000 S1009
@@ -1477,6 +1532,7 @@ ER_WRONG_SUM_SELECT 42000 S1009
serbian "Izraz ima 'SUM' agregatnu funkciju i kolone u isto vreme"
slo "Príkaz obsahuje zároveň funkciu 'sum' a poľa"
spa "La sentencia tiene funciones de suma y columnas en la misma sentencia"
+ sw "Taarifa ina jumla ya kazi na safu wima katika taarifa sawa"
swe "Kommandot har både sum functions och enkla funktioner"
ukr "У виразі використано підсумовуючі функції поряд з іменами стовбців"
ER_WRONG_VALUE_COUNT 21S01
@@ -1503,6 +1559,7 @@ ER_WRONG_VALUE_COUNT 21S01
serbian "Broj kolona ne odgovara broju vrednosti"
slo "Počet polí nezodpovedá zadanej hodnote"
spa "El contador de columnas no coincide con el contador de valores"
+ sw "Hesabu ya safu wima hailingani na hesabu ya thamani"
swe "Antalet kolumner motsvarar inte antalet värden"
ukr "Кількість стовбців не співпадає з кількістю значень"
ER_TOO_LONG_IDENT 42000 S1009
@@ -1530,6 +1587,7 @@ ER_TOO_LONG_IDENT 42000 S1009
serbian "Ime '%-.100T' je predugačko"
slo "Meno identifikátora '%-.100T' je príliš dlhé"
spa "El nombre del identificador '%-.100T' es demasiado grande"
+ sw "Jina la kitambulisho '%-.100T' ni refu sana"
swe "Kolumnnamn '%-.100T' är för långt"
ukr "Ім'я ідентифікатора '%-.100T' задовге"
ER_DUP_FIELDNAME 42S21 S1009
@@ -1557,6 +1615,7 @@ ER_DUP_FIELDNAME 42S21 S1009
serbian "Duplirano ime kolone '%-.192s'"
slo "Opakované meno poľa '%-.192s'"
spa "Nombre duplicado de columna '%-.192s'"
+ sw "Jina la safu wima rudufu '%-.192s'"
swe "Kolumnnamn '%-.192s finns flera gånger"
ukr "Дублююче ім'я стовбця '%-.192s'"
ER_DUP_KEYNAME 42000 S1009
@@ -1584,6 +1643,7 @@ ER_DUP_KEYNAME 42000 S1009
serbian "Duplirano ime ključa '%-.192s'"
slo "Opakované meno kľúča '%-.192s'"
spa "Nombre duplicado de clave '%-.192s'"
+ sw "Jina la ufunguo rudufu '% -.192s'"
swe "Nyckelnamn '%-.192s' finns flera gånger"
ukr "Дублююче ім'я ключа '%-.192s'"
# When using this error code, please use ER(ER_DUP_ENTRY_WITH_KEY_NAME)
@@ -1613,6 +1673,7 @@ ER_DUP_ENTRY 23000 S1009
serbian "Dupliran unos '%-.192T' za ključ '%d'"
slo "Opakovaný kľúč '%-.192T' (číslo kľúča %d)"
spa "Entrada duplicada '%-.192T' para la clave %d"
+ sw "Ingizo rudufu '%-.192T' kwa ufunguo %d"
swe "Dublett '%-.192T' för nyckel %d"
ukr "Дублюючий запис '%-.192T' для ключа %d"
ER_WRONG_FIELD_SPEC 42000 S1009
@@ -1640,6 +1701,7 @@ ER_WRONG_FIELD_SPEC 42000 S1009
serbian "Pogrešan naziv kolone za kolonu '%-.192s'"
slo "Chyba v špecifikácii poľa '%-.192s'"
spa "Especificador de columna incorrecto para la columna '%-.192s'"
+ sw "Kibainishi cha safuwima si sahihi kwa safuwima ya '%-.192s'"
swe "Felaktigt kolumntyp för kolumn '%-.192s'"
ukr "Невірний специфікатор стовбця '%-.192s'"
ER_PARSE_ERROR 42000 s1009
@@ -1667,6 +1729,7 @@ ER_PARSE_ERROR 42000 s1009
serbian "'%s' u iskazu '%-.80T' na liniji %d"
slo "%s blízko '%-.80T' na riadku %d"
spa "%s cerca de '%-.80T' en la línea %d"
+ sw "%s karibu na '%-.80T' kwenye mstari %d"
swe "%s nära '%-.80T' på rad %d"
ukr "%s біля '%-.80T' в строці %d"
ER_EMPTY_QUERY 42000
@@ -1694,6 +1757,7 @@ ER_EMPTY_QUERY 42000
serbian "Upit je bio prazan"
slo "Výsledok požiadavky bol prázdny"
spa "La consulta (query) estaba vacia"
+ sw "Hoja ilikuwa tupu"
swe "Frågan var tom"
ukr "Пустий запит"
ER_NONUNIQ_TABLE 42000 S1009
@@ -1721,6 +1785,7 @@ ER_NONUNIQ_TABLE 42000 S1009
serbian "Tabela ili alias nisu bili jedinstveni: '%-.192s'"
slo "Nie jednoznačná tabuľka/alias: '%-.192s'"
spa "La tabla/alias: '%-.192s' no es única"
+ sw "Si jedwali/lakaba ya kipekee: '%-.192s'"
swe "Icke unikt tabell/alias: '%-.192s'"
ukr "Неунікальна таблиця/псевдонім: '%-.192s'"
ER_INVALID_DEFAULT 42000 S1009
@@ -1748,6 +1813,7 @@ ER_INVALID_DEFAULT 42000 S1009
serbian "Loša default vrednost za '%-.192s'"
slo "Chybná implicitná hodnota pre '%-.192s'"
spa "Valor por defecto inválido para '%-.192s'"
+ sw "Thamani chaguomsingi batili ya '%-.192s'"
swe "Ogiltigt DEFAULT värde för '%-.192s'"
ukr "Невірне значення по замовчуванню для '%-.192s'"
ER_MULTIPLE_PRI_KEY 42000 S1009
@@ -1775,6 +1841,7 @@ ER_MULTIPLE_PRI_KEY 42000 S1009
serbian "Definisani višestruki primarni ključevi"
slo "Zadefinovaných viac primárnych kľúčov"
spa "Múltiples claves primarias definidas"
+ sw "Vifunguo vingi vya msingi vimefafanuliwa"
swe "Flera PRIMARY KEY använda"
ukr "Первинного ключа визначено неодноразово"
ER_TOO_MANY_KEYS 42000 S1009
@@ -1802,6 +1869,7 @@ ER_TOO_MANY_KEYS 42000 S1009
serbian "Navedeno je previše ključeva. Maksimum %d ključeva je dozvoljeno"
slo "Zadaných ríliš veľa kľúčov. Najviac %d kľúčov je povolených"
spa "Demasiadas claves primarias declaradas. Se permite un máximo de %d claves"
+ sw "Vifunguo vingi sana vimebainishwa; funguo zisizozidi %d zinaruhusiwa"
swe "För många nycklar använda. Man får ha högst %d nycklar"
ukr "Забагато ключів зазначено. Дозволено не більше %d ключів"
ER_TOO_MANY_KEY_PARTS 42000 S1009
@@ -1829,6 +1897,7 @@ ER_TOO_MANY_KEY_PARTS 42000 S1009
serbian "Navedeno je previše delova ključa. Maksimum %d delova je dozvoljeno"
slo "Zadaných ríliš veľa častí kľúčov. Je povolených najviac %d častí"
spa "Demasiadas partes de clave declaradas. Se permite un máximo de %d partes"
+ sw "Sehemu nyingi za funguo zimebainishwa; sehemu zisizozidi %d zinaruhusiwa"
swe "För många nyckeldelar använda. Man får ha högst %d nyckeldelar"
ukr "Забагато частин ключа зазначено. Дозволено не більше %d частин"
ER_TOO_LONG_KEY 42000 S1009
@@ -1856,6 +1925,7 @@ ER_TOO_LONG_KEY 42000 S1009
serbian "Navedeni ključ je predug. Maksimalna dužina ključa je %d"
slo "Zadaný kľúč je príliš dlhý, najväčšia dĺžka kľúča je %d"
spa "Declaración de clave demasiado larga. La máxima longitud de clave es de %d"
+ sw "Ufunguo ulioainishwa ulikuwa mrefu sana; urefu wa juu wa funguo ni baiti %d"
swe "För lång nyckel. Högsta tillåtna nyckellängd är %d"
ukr "Зазначений ключ задовгий. Найбільша довжина ключа %d байтів"
ER_KEY_COLUMN_DOES_NOT_EXIST 42000 S1009
@@ -1883,6 +1953,7 @@ ER_KEY_COLUMN_DOES_NOT_EXIST 42000 S1009
serbian "Ključna kolona '%-.192s' ne postoji u tabeli"
slo "Kľúčový stĺpec '%-.192s' v tabuľke neexistuje"
spa "La columna de clave '%-.192s' no existe en la tabla"
+ sw "Safu wima ya ufunguo '%-.192s' haipo kwenye jedwali"
swe "Nyckelkolumn '%-.192s' finns inte"
ukr "Ключовий стовбець '%-.192s' не існує у таблиці"
ER_BLOB_USED_AS_KEY 42000 S1009
@@ -1893,6 +1964,7 @@ ER_BLOB_USED_AS_KEY 42000 S1009
hindi "BLOB कॉलम %`s टेबल %s में KEY विनिर्देश में इस्तेमाल नहीं किया जा सकता"
rus "Столбец типа BLOB %`s не может быть использован как значение ключа в %s таблице"
spa "La columna BLOB %`s no se puede usar en la especificación de clave en la tabla %s"
+ sw "safu wima ya BLOB %`s haiwezi kutumika katika vipimo vya vifunguo kwenye jedwali la %s"
ukr "BLOB стовбець %`s не може бути використаний у визначенні ключа в %s таблиці"
ER_TOO_BIG_FIELDLENGTH 42000 S1009
chi "数据太长超过列容量 '%-.192s' (最长 = %lu); 用 BLOB 或 TEXT 替代"
@@ -1919,6 +1991,7 @@ ER_TOO_BIG_FIELDLENGTH 42000 S1009
serbian "Previše podataka za kolonu '%-.192s' (maksimum je %lu). Upotrebite BLOB polje"
slo "Príliš veľká dĺžka pre pole '%-.192s' (maximum = %lu). Použite BLOB"
spa "Longitud de columna demasiado grande para la columna '%-.192s' (máximo = %lu). Use BLOB o TEXT en su lugar"
+ sw "Urefu wa safu wima ni mkubwa sana kwa safu wima '%-.192s' (max = %lu); tumia BLOB au TEXT badala yake"
swe "För stor kolumnlängd angiven för '%-.192s' (max= %lu). Använd en BLOB instället"
ukr "Задовга довжина стовбця '%-.192s' (max = %lu). Використайте тип BLOB"
ER_WRONG_AUTO_KEY 42000 S1009
@@ -1946,6 +2019,7 @@ ER_WRONG_AUTO_KEY 42000 S1009
serbian "Pogrešna definicija tabele; U tabeli može postojati samo jedna 'AUTO' kolona i ona mora biti istovremeno definisana kao kolona ključa"
slo "Môžete mať iba jedno AUTO pole a to musí byť definované ako kľúč"
spa "Definición incorrecta de tabla; sólo puede haber una columna automática y ésta debe de ser definida como una clave"
+ sw "Ufafanuzi wa jedwali usio sahihi; kunaweza kuwa na safu wima inayojiendesha (auto) moja tu na lazima ifafanuliwe kama ufunguo"
swe "Det får finnas endast ett AUTO_INCREMENT-fält och detta måste vara en nyckel"
ukr "Хибне визначення таблиці; Може бути лише один автоматичний стовбець, що повинен бути визначений як ключ"
ER_BINLOG_CANT_DELETE_GTID_DOMAIN
@@ -1953,6 +2027,7 @@ ER_BINLOG_CANT_DELETE_GTID_DOMAIN
eng "Could not delete gtid domain. Reason: %s."
geo "შეცდომა gtid დომენის წაშლისას. მიზეზი: %s."
spa "No pude borrar el dominio gtid. Motivo: %s."
+ sw "Haikuweza kufuta kikoa cha gtid. Sababu: %s."
ukr "Не можу видалити домен gtid. Причина: %s."
ER_NORMAL_SHUTDOWN
chi "%s(%s):正常关闭"
@@ -1979,6 +2054,7 @@ ER_NORMAL_SHUTDOWN
serbian "%s (%s): Normalno gašenje"
slo "%s (%s): normálne ukončenie"
spa "%s (iniciado por: %s): Apagado normal"
+ sw "%s (ilianzishwa na: %s): Kuzima kwa kawaida"
swe "%s (%s): Normal avslutning"
ukr "%s (%s): Нормальне завершення"
ER_GOT_SIGNAL
@@ -2006,6 +2082,7 @@ ER_GOT_SIGNAL
serbian "%s: Dobio signal %d. Prekidam!\n"
slo "%s: prijatý signál %d, ukončenie (Abort)!\n"
spa "%s: Obtenida señal %d. ¡Abortando!\n"
+ sw "%s: Nimepata ishara %d. Ninaacha kazi ghafla!\n"
swe "%s: Fick signal %d. Avslutar!\n"
ukr "%s: Отримано сигнал %d. Перериваюсь!\n"
ER_SHUTDOWN_COMPLETE
@@ -2033,6 +2110,7 @@ ER_SHUTDOWN_COMPLETE
serbian "%s: Gašenje završeno\n"
slo "%s: práca ukončená\n"
spa "%s: Apagado completado\n"
+ sw "%s: Kuzima kumekamilika\n"
swe "%s: Avslutning klar\n"
ukr "%s: Роботу завершено\n"
ER_FORCING_CLOSE 08S01
@@ -2060,6 +2138,7 @@ ER_FORCING_CLOSE 08S01
serbian "%s: Usiljeno gašenje thread-a %ld koji pripada korisniku: '%-.48s'\n"
slo "%s: násilné ukončenie vlákna %ld užívateľa '%-.48s'\n"
spa "%s: Forzando a cerrar el hilo (thread) %ld usuario: '%-.48s'\n"
+ sw "%s: Kulazimisha kufungwa kwa mazungumzo %ld user: '%-.48s'\n"
swe "%s: Stänger av tråd %ld; användare: '%-.48s'\n"
ukr "%s: Прискорюю закриття гілки %ld користувача: '%-.48s'\n"
ER_IPSOCK_ERROR 08S01
@@ -2087,6 +2166,7 @@ ER_IPSOCK_ERROR 08S01
serbian "Ne mogu da kreiram IP socket"
slo "Nemôžem vytvoriť IP socket"
spa "No puedo crear IP socket"
+ sw "Haiwezi kuunda tundu la IP"
swe "Kan inte skapa IP-socket"
ukr "Не можу створити IP роз'єм"
ER_NO_SUCH_INDEX 42S12 S1009
@@ -2114,6 +2194,7 @@ ER_NO_SUCH_INDEX 42S12 S1009
serbian "Tabela '%-.192s' nema isti indeks kao onaj upotrebljen pri komandi 'CREATE INDEX'. Napravite tabelu ponovo"
slo "Tabuľka '%-.192s' nemá index zodpovedajúci CREATE INDEX. Vytvorte tabulku znova"
spa "La tabla '%-.192s' no tiene un índice como el usado en CREATE INDEX. Crea de nuevo la tabla"
+ sw "Jedwali '%-.192s' halina faharasa kama ile inayotumika katika CREATE INDEX; unda upya jedwali"
swe "Tabellen '%-.192s' har inget index som motsvarar det angivna i CREATE INDEX. Skapa om tabellen"
ukr "Таблиця '%-.192s' має індекс, що не співпадає з вказанним у CREATE INDEX. Створіть таблицю знову"
ER_WRONG_FIELD_TERMINATORS 42000 S1009
@@ -2141,6 +2222,7 @@ ER_WRONG_FIELD_TERMINATORS 42000 S1009
serbian "Argument separatora polja nije ono što se očekivalo. Proverite uputstvo MariaDB server-a"
slo "Argument oddeľovač polí nezodpovedá požiadavkám. Skontrolujte v manuáli"
spa "Los separadores de argumentos del campo no son los especificados. Compruebe el manual"
+ sw "Hoja ya kitenganishi cha shamba sio kile kinachotarajiwa; angalia mwongozo"
swe "Fältseparatorerna är vad som förväntades. Kontrollera mot manualen"
ukr "Хибний розділювач полів. Почитайте документацію"
ER_BLOBS_AND_NO_TERMINATED 42000 S1009
@@ -2168,6 +2250,7 @@ ER_BLOBS_AND_NO_TERMINATED 42000 S1009
serbian "Ne možete koristiti fiksnu veličinu sloga kada imate BLOB polja. Molim koristite 'fields terminated by' opciju"
slo "Nie je možné použiť fixnú dĺžku s BLOBom. Použite 'fields terminated by'"
spa "No se pueden usar longitudes fijas de filas con BLOBs. Por favor, use 'campos terminados por'"
+ sw "Huwezi kutumia urefu usiobadilika na BLOB; tafadhali tumia 'sehemu zilizokatishwa na'"
swe "Man kan inte använda fast radlängd med blobs. Använd 'fields terminated by'"
ukr "Не можна використовувати сталу довжину строки з BLOB. Зкористайтеся 'fields terminated by'"
ER_TEXTFILE_NOT_READABLE
@@ -2195,6 +2278,7 @@ ER_TEXTFILE_NOT_READABLE
serbian "File '%-.128s' mora biti u direktorijumu gde su file-ovi baze i mora imati odgovarajuća prava pristupa"
slo "Súbor '%-.128s' musí byť v adresári databázy, alebo čitateľný pre všetkých"
spa "El fichero/archivo '%-.128s' debe de estar en el directorio de la base de datos o debe de ser legible por todos"
+ sw "Faili '%-.128s' lazima liwe katika saraka ya hifadhidata au isomwe na wote"
swe "Textfilen '%-.128s' måste finnas i databasbiblioteket eller vara läsbar för alla"
ukr "Файл '%-.128s' повинен бути у теці бази данних або мати встановлене право на читання для усіх"
ER_FILE_EXISTS_ERROR
@@ -2222,6 +2306,7 @@ ER_FILE_EXISTS_ERROR
serbian "File '%-.200s' već postoji"
slo "Súbor '%-.200s' už existuje"
spa "El fichero/archivo '%-.200s' ya existe"
+ sw "Faili '%-.200s' tayari ipo"
swe "Filen '%-.200s' existerar redan"
ukr "Файл '%-.200s' вже існує"
ER_LOAD_INFO
@@ -2249,6 +2334,7 @@ ER_LOAD_INFO
serbian "Slogova: %ld Izbrisano: %ld Preskočeno: %ld Upozorenja: %ld"
slo "Záznamov: %ld Zmazaných: %ld Preskočených: %ld Varovania: %ld"
spa "Registros: %ld Borrados: %ld Saltados: %ld Avisos: %ld"
+ sw "Rekodi: %ld Imefutwa: %ld Imerukwa: %ld Maonyo: %ld"
swe "Rader: %ld Bortagna: %ld Dubletter: %ld Varningar: %ld"
ukr "Записів: %ld Видалено: %ld Пропущено: %ld Застережень: %ld"
ER_ALTER_INFO
@@ -2276,6 +2362,7 @@ ER_ALTER_INFO
serbian "Slogova: %ld Duplikata: %ld"
slo "Záznamov: %ld Opakovaných: %ld"
spa "Registros: %ld Duplicados: %ld"
+ sw "Rekodi: %ld Rudufu: %ld"
swe "Rader: %ld Dubletter: %ld"
ukr "Записів: %ld Дублікатів: %ld"
ER_WRONG_SUB_KEY
@@ -2302,6 +2389,7 @@ ER_WRONG_SUB_KEY
serbian "Pogrešan pod-ključ dela ključa. Upotrebljeni deo ključa nije string, upotrebljena dužina je veća od dela ključa ili handler tabela ne podržava jedinstvene pod-ključeve"
slo "Incorrect prefix key; the used key part isn't a string or the used length is longer than the key part"
spa "Prefijo incorrecto de clave; la parte utilizada de la clave no es una cadena, la longitud usada es mayor que la parte de la clave o el motor de almacenaje no soporta claves con prefijo único"
+ sw "Funguo kiambishi awali kisicho sahihi; sehemu ya ufunguo iliyotumika si kamba, urefu uliotumika ni mrefu kuliko sehemu ya funguo, au injini ya hifadhi haitumii vifunguo vya kiambishi awali"
swe "Felaktig delnyckel. Nyckeldelen är inte en sträng eller den angivna längden är längre än kolumnlängden"
ukr "Невірна частина ключа. Використана частина ключа не є строкою, задовга або вказівник таблиці не підтримує унікальних частин ключей"
ER_CANT_REMOVE_ALL_FIELDS 42000
@@ -2329,6 +2417,7 @@ ER_CANT_REMOVE_ALL_FIELDS 42000
serbian "Ne možete da izbrišete sve kolone pomoću komande 'ALTER TABLE'. Upotrebite komandu 'DROP TABLE' ako želite to da uradite"
slo "One nemôžem zmazať all fields with ALTER TABLE; use DROP TABLE instead"
spa "No se pueden borrar todas las columnas con ALTER TABLE. Use DROP TABLE para hacerlo"
+ sw "Huwezi kufuta safu wima zote kwa ALTER TABLE; badala yake tumia DROP TABLE"
swe "Man kan inte radera alla fält med ALTER TABLE. Använd DROP TABLE istället"
ukr "Не можливо видалити всі стовбці за допомогою ALTER TABLE. Для цього скористайтеся DROP TABLE"
ER_CANT_DROP_FIELD_OR_KEY 42000
@@ -2354,6 +2443,7 @@ ER_CANT_DROP_FIELD_OR_KEY 42000
serbian "Ne mogu da izvršim komandu drop 'DROP %s' na %`-.192s. Proverite da li ta kolona (odnosno ključ) postoji"
slo "Nemôžem zrušiť (DROP %s) %`-.192s. Skontrolujte, či neexistujú záznamy/kľúče"
spa "No puedo eliminar %s %`-.192s; compruebe que ya existe"
+ sw "Haiwezi kudondosha (DROP) %s %`-.192s; hakikisha kuwa ipo"
swe "Kan inte ta bort (DROP %s) %`-.192s. Kontrollera att begränsningen/fältet/nyckel finns"
ukr "Не можу DROP %s %`-.192s. Перевірте, чи він існує"
ER_INSERT_INFO
@@ -2381,12 +2471,14 @@ ER_INSERT_INFO
serbian "Slogova: %ld Duplikata: %ld Upozorenja: %ld"
slo "Záznamov: %ld Opakovaných: %ld Varovania: %ld"
spa "Registros: %ld Duplicados: %ld Avisos: %ld"
+ sw "Rekodi: %ld Rudufu: %ld Maonyo: %ld"
swe "Rader: %ld Dubletter: %ld Varningar: %ld"
ukr "Записів: %ld Дублікатів: %ld Застережень: %ld"
ER_UPDATE_TABLE_USED
chi "表 '%-.192s' 被指定了两次, 即作为 '%s' 的目标,又作为数据的独立源"
eng "Table '%-.192s' is specified twice, both as a target for '%s' and as a separate source for data"
geo "ცხრილი '%-.192s' ორჯერაა მითითებული, ორივეჯერ როგორც '%s'-ის სამიზნე და როგორც მონაცემების ცალკე წყარო"
+ sw "Jedwali '%-.192s' limebainishwa mara mbili, kama lengo la '%s' na kama chanzo tofauti cha data"
swe "Table '%-.192s' är använd två gånger. Både för '%s' och för att hämta data"
ukr "Таблиця '%-.192s' вказується двічі, як цільова для '%s', так і як окреме джерело даних"
ER_NO_SUCH_THREAD
@@ -2414,6 +2506,7 @@ ER_NO_SUCH_THREAD
serbian "Nepoznat thread identifikator: %lu"
slo "Neznáma identifikácia vlákna: %lu"
spa "Identificador del hilo (thread): %lu desconocido"
+ sw "Kitambulisho cha uzi kisichojulikana: %lu"
swe "Finns ingen tråd med id %lu"
ukr "Невідомий ідентифікатор гілки: %lu"
ER_KILL_DENIED_ERROR
@@ -2441,6 +2534,7 @@ ER_KILL_DENIED_ERROR
serbian "Vi niste vlasnik thread-a %lld"
slo "Nie ste vlastníkom vlákna %lld"
spa "No eres el propietario del hilo (thread) %lld"
+ sw "Wewe si mmiliki wa uzi %lld"
swe "Du är inte ägare till tråd %lld"
ukr "Ви не володар гілки %lld"
ER_NO_TABLES_USED
@@ -2468,6 +2562,7 @@ ER_NO_TABLES_USED
serbian "Nema upotrebljenih tabela"
slo "Nie je použitá žiadna tabuľka"
spa "No se están usando tablas"
+ sw "Hakuna jedwali zinazotumika"
swe "Inga tabeller angivna"
ukr "Не використано таблиць"
ER_TOO_BIG_SET
@@ -2494,6 +2589,7 @@ ER_TOO_BIG_SET
serbian "Previše string-ova za kolonu '%-.192s' i komandu 'SET'"
slo "Príliš mnoho reťazcov pre pole %-.192s a SET"
spa "Demasiadas cadenas para la columna %-.192s y SET"
+ sw "Kamba mingi sana kwa safu wima %-.192s na SET"
swe "För många alternativ till kolumn %-.192s för SET"
ukr "Забагато строк для стовбця %-.192s та SET"
ER_NO_UNIQUE_LOGFILE
@@ -2521,6 +2617,7 @@ ER_NO_UNIQUE_LOGFILE
serbian "Ne mogu da generišem jedinstveno ime log-file-a: '%-.200s.(1-999)'\n"
slo "Nemôžem vytvoriť unikátne meno log-súboru %-.200s.(1-999)\n"
spa "No puedo generar un único fichero/archivo de historial (log) llamado %-.200s.(1-999)\n"
+ sw "Haiwezi kutengeneza jina la kipekee la faili la kumbukumbu (log-filename) %-.200s.(1-999)\n"
swe "Kan inte generera ett unikt filnamn %-.200s.(1-999)\n"
ukr "Не можу згенерувати унікальне ім'я log-файлу %-.200s.(1-999)\n"
ER_TABLE_NOT_LOCKED_FOR_WRITE
@@ -2548,6 +2645,7 @@ ER_TABLE_NOT_LOCKED_FOR_WRITE
serbian "Tabela '%-.192s' je zaključana READ lock-om; iz nje se može samo čitati ali u nju se ne može pisati"
slo "Tabuľka '%-.192s' bola zamknutá s READ a nemôže byť zmenená"
spa "La tabla '%-.192s' ha sido bloqueada con un READ lock y no puede ser actualizada"
+ sw "Jedwali '%-.192s' lilifungwa kwa kufuli ya SOMA na haliwezi kusasishwa"
swe "Tabell '%-.192s' kan inte uppdateras emedan den är låst för läsning"
ukr "Таблицю '%-.192s' заблоковано тільки для читання, тому її не можна оновити"
ER_TABLE_NOT_LOCKED
@@ -2575,12 +2673,14 @@ ER_TABLE_NOT_LOCKED
serbian "Tabela '%-.192s' nije bila zaključana komandom 'LOCK TABLES'"
slo "Tabuľka '%-.192s' nebola zamknutá s LOCK TABLES"
spa "La tabla '%-.192s' no fue bloqueada con LOCK TABLES"
+ sw "Jedwali '%-.192s' halikufungwa kwa LOCK TABLES"
swe "Tabell '%-.192s' är inte låst med LOCK TABLES"
ukr "Таблицю '%-.192s' не було блоковано з LOCK TABLES"
ER_UNUSED_17
eng "You should never see it"
geo "ის ვერასდროს უნდა დაგენახათ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_WRONG_DB_NAME 42000
chi "数据库名称不正确'%-.100T'"
cze "Nepřípustné jméno databáze '%-.100T'"
@@ -2606,6 +2706,7 @@ ER_WRONG_DB_NAME 42000
serbian "Pogrešno ime baze '%-.100T'"
slo "Neprípustné meno databázy '%-.100T'"
spa "Nombre incorrecto de base de datos '%-.100T'"
+ sw "Jina la hifadhidata si sahihi '% -.100T'"
swe "Felaktigt databasnamn '%-.100T'"
ukr "Невірне ім'я бази данних '%-.100T'"
ER_WRONG_TABLE_NAME 42000
@@ -2633,6 +2734,7 @@ ER_WRONG_TABLE_NAME 42000
serbian "Pogrešno ime tabele '%-.100s'"
slo "Neprípustné meno tabuľky '%-.100s'"
spa "Nombre incorrecto de tabla '%-.100s'"
+ sw "Jina la jedwali lisilo sahihi '% -.100s'"
swe "Felaktigt tabellnamn '%-.100s'"
ukr "Невірне ім'я таблиці '%-.100s'"
ER_TOO_BIG_SELECT 42000
@@ -2660,6 +2762,7 @@ ER_TOO_BIG_SELECT 42000
serbian "Komanda 'SELECT' će ispitati previše slogova i potrošiti previše vremena. Proverite vaš 'WHERE' filter i upotrebite 'SET OPTION SQL_BIG_SELECTS=1' ako želite baš ovakvu komandu"
slo "Zadaná požiadavka SELECT by prechádzala príliš mnoho záznamov a trvala by príliš dlho. Skontrolujte tvar WHERE a ak je v poriadku, použite SET SQL_BIG_SELECTS=1"
spa "El SELECT debería de examinar más de MAX_JOIN_SIZE filas; revise su WHERE y utilice SET SQL_BIG_SELECTS=1 o SET MAX_JOIN_SIZE=# si el SELECT está ok"
+ sw "SELECT itachunguza zaidi ya safu mlalo MAX_JOIN_SIZE; angalia WHERE yako na utumie SET SQL_BIG_SELECTS=1 au SET MAX_JOIN_SIZE=# ikiwa SELECT ni sawa"
swe "Den angivna frågan skulle läsa mer än MAX_JOIN_SIZE rader. Kontrollera din WHERE och använd SET SQL_BIG_SELECTS=1 eller SET MAX_JOIN_SIZE=# ifall du vill hantera stora joins"
ukr "Запиту SELECT потрібно обробити багато записів, що, певне, займе дуже багато часу. Перевірте ваше WHERE та використовуйте SET SQL_BIG_SELECTS=1, якщо цей запит SELECT є вірним"
ER_UNKNOWN_ERROR
@@ -2686,6 +2789,7 @@ ER_UNKNOWN_ERROR
serbian "Nepoznata greška"
slo "Neznámá chyba"
spa "Error desconocido"
+ sw "Hitilafu isiyojulikana"
swe "Okänt fel"
ukr "Невідома помилка"
ER_UNKNOWN_PROCEDURE 42000
@@ -2713,6 +2817,7 @@ ER_UNKNOWN_PROCEDURE 42000
serbian "Nepoznata procedura '%-.192s'"
slo "Neznámá procedúra '%-.192s'"
spa "Procedimiento desconocido %-.192s"
+ sw "Utaratibu usiojulikana '%-.192s'"
swe "Okänd procedur: %-.192s"
ukr "Невідома процедура '%-.192s'"
ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
@@ -2740,6 +2845,7 @@ ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
serbian "Pogrešan broj parametara za proceduru '%-.192s'"
slo "Chybný počet parametrov procedúry '%-.192s'"
spa "Contador de parámetros incorrecto para procedimiento %-.192s"
+ sw "Hesabu isiyo sahihi ya vigezo kwa utaratibu wa '% -.192s'"
swe "Felaktigt antal parametrar till procedur %-.192s"
ukr "Хибна кількість параметрів процедури '%-.192s'"
ER_WRONG_PARAMETERS_TO_PROCEDURE
@@ -2767,6 +2873,7 @@ ER_WRONG_PARAMETERS_TO_PROCEDURE
serbian "Pogrešni parametri prosleđeni proceduri '%-.192s'"
slo "Chybné parametre procedúry '%-.192s'"
spa "Parámetros incorrectos para procedimiento %-.192s"
+ sw "Vigezo visivyo sahihi vya utaratibu wa '%-.192s'"
swe "Felaktiga parametrar till procedur %-.192s"
ukr "Хибний параметер процедури '%-.192s'"
ER_UNKNOWN_TABLE 42S02
@@ -2794,6 +2901,7 @@ ER_UNKNOWN_TABLE 42S02
serbian "Nepoznata tabela '%-.192s' u '%-.32s'"
slo "Neznáma tabuľka '%-.192s' v %-.32s"
spa "Tabla desconocida '%-.192s' en %-.32s"
+ sw "Jedwali lisilojulikana '%-.192s' katika %-.32s"
swe "Okänd tabell '%-.192s' i '%-.32s'"
ukr "Невідома таблиця '%-.192s' у %-.32s"
ER_FIELD_SPECIFIED_TWICE 42000
@@ -2821,6 +2929,7 @@ ER_FIELD_SPECIFIED_TWICE 42000
serbian "Kolona '%-.192s' je navedena dva puta"
slo "Pole '%-.192s' je zadané dvakrát"
spa "Columna '%-.192s' especificada dos veces"
+ sw "Safuwima '%-.192s' imebainishwa mara mbili"
swe "Fält '%-.192s' är redan använt"
ukr "Стовбець '%-.192s' зазначено двічі"
ER_INVALID_GROUP_FUNC_USE
@@ -2845,6 +2954,7 @@ ER_INVALID_GROUP_FUNC_USE
serbian "Pogrešna upotreba 'GROUP' funkcije"
slo "Nesprávne použitie funkcie GROUP"
spa "Inválido uso de función de grupo"
+ sw "Matumizi batili ya kazi ya kikundi"
swe "Felaktig användning av SQL grupp function"
ukr "Хибне використання функції групування"
ER_UNSUPPORTED_EXTENSION 42000
@@ -2872,6 +2982,7 @@ ER_UNSUPPORTED_EXTENSION 42000
serbian "Tabela '%-.192s' koristi ekstenziju koje ne postoji u ovoj verziji MariaDB-a"
slo "Tabuľka '%-.192s' používa rozšírenie, ktoré v tejto verzii MariaDB nie je"
spa "La tabla '%-.192s' usa una extensión que no existe en esta versión de MariaDB"
+ sw "Jedwali '%-.192s' linatumia kiendelezi ambacho hakipo katika toleo hili la MariaDB"
swe "Tabell '%-.192s' har en extension som inte finns i denna version av MariaDB"
ukr "Таблиця '%-.192s' використовує розширення, що не існує у цій версії MariaDB"
ER_TABLE_MUST_HAVE_COLUMNS 42000
@@ -2896,6 +3007,7 @@ ER_TABLE_MUST_HAVE_COLUMNS 42000
serbian "Tabela mora imati najmanje jednu kolonu"
slo "Tabuľka musí mať aspoň 1 pole"
spa "Una tabla debe de tener al menos 1 columna"
+ sw "Jedwali lazima liwe na angalau safu wima 1"
swe "Tabeller måste ha minst 1 kolumn"
ukr "Таблиця повинна мати хочаб один стовбець"
ER_RECORD_FILE_FULL
@@ -2920,6 +3032,7 @@ ER_RECORD_FILE_FULL
serbian "Tabela '%-.192s' je popunjena do kraja"
slo "Tabuľka '%-.192s' je plná"
spa "La tabla '%-.192s' está llena"
+ sw "Jedwali '%-.192s' limejaa"
swe "Tabellen '%-.192s' är full"
ukr "Таблиця '%-.192s' заповнена"
ER_UNKNOWN_CHARACTER_SET 42000
@@ -2944,6 +3057,7 @@ ER_UNKNOWN_CHARACTER_SET 42000
serbian "Nepoznati karakter-set: '%-.64s'"
slo "Neznáma znaková sada: '%-.64s'"
spa "Juego desconocido de caracteres: '%-.64s'"
+ sw "Seti ya herufi isiyojulikana: '% -.64s'"
swe "Okänd teckenuppsättning: '%-.64s'"
ukr "Невідома кодова таблиця: '%-.64s'"
ER_TOO_MANY_TABLES
@@ -2968,6 +3082,7 @@ ER_TOO_MANY_TABLES
serbian "Previše tabela. MariaDB može upotrebiti maksimum %d tabela pri 'JOIN' operaciji"
slo "Príliš mnoho tabuliek. MariaDB môže použiť len %d v JOIN-e"
spa "Demasiadas tablas. MariaDB solamente puede usar %d tablas en un join"
+ sw "Jedwali nyingi sana; MariaDB inaweza kutumia jedwali %d pekee kwenye kiunganishi"
swe "För många tabeller. MariaDB can ha högst %d tabeller i en och samma join"
ukr "Забагато таблиць. MariaDB може використовувати лише %d таблиць у об'єднанні"
ER_TOO_MANY_FIELDS
@@ -2992,6 +3107,7 @@ ER_TOO_MANY_FIELDS
serbian "Previše kolona"
slo "Príliš mnoho polí"
spa "Demasiadas columnas"
+ sw "safu wima nyingi sana"
swe "För många fält"
ukr "Забагато стовбців"
ER_TOO_BIG_ROWSIZE 42000
@@ -3015,6 +3131,7 @@ ER_TOO_BIG_ROWSIZE 42000
serbian "Prevelik slog. Maksimalna veličina sloga, ne računajući BLOB polja, je %ld. Trebali bi da promenite tip nekih polja u BLOB"
slo "Riadok je príliš veľký. Maximálna veľkosť riadku, okrem 'BLOB', je %ld. Musíte zmeniť niektoré položky na BLOB"
spa "Tamaño de fila muy grande. El máximo tamaño de fila para el tipo de tabla usada, sin contar BLOBs, es de %ld. Esto incluye sobrecarga de almacenaje, revise el manual. Tiene que cambiar algunas columnas a TEXT o BLOBs"
+ sw "Ukubwa wa safu mlalo ni kubwa mno. Saizi ya juu zaidi ya safu mlalo kwa aina ya jedwali iliyotumika, bila kuhesabu BLOB, ni %ld. Hii inajumuisha sehemu ya juu ya hifadhi, angalia mwongozo. Inabidi ubadilishe baadhi ya safu wima kuwa TEXT au BLOBs"
swe "För stor total radlängd. Den högst tillåtna radlängden, förutom BLOBs, är %ld. Ändra några av dina fält till BLOB"
ukr "Задовга строка. Найбільшою довжиною строки, не рахуючи BLOB, є %ld. Вам потрібно привести деякі стовбці до типу BLOB"
ER_STACK_OVERRUN
@@ -3037,6 +3154,7 @@ ER_STACK_OVERRUN
serbian "Prepisivanje thread stack-a: Upotrebljeno: %ld od %ld stack memorije. Upotrebite 'mariadbd --thread_stack=#' da navedete veći stack ako je potrebno"
slo "Pretečenie zásobníku vlákna: použité: %ld z %ld. Použite 'mariadbd --thread_stack=#' k zadaniu väčšieho zásobníka"
spa "Desbordamiento de la pila de hilos (threads): Usado: %ld de una pila de %ld. Considere el incrementar la variable de sistema thread_stack"
+ sw "Mrundikano wa rundo la nyuzi: Umetumika: %ld kati ya fungu la %ld. Tumia 'mariadbd --thread_stack=#' kubainisha mrundikano mkubwa zaidi ikihitajika"
swe "Trådstacken tog slut: Har använt %ld av %ld bytes. Använd 'mariadbd --thread_stack=#' ifall du behöver en större stack"
ukr "Стек гілок переповнено: Використано: %ld з %ld. Використовуйте 'mariadbd --thread_stack=#' аби зазначити більший стек, якщо необхідно"
ER_WRONG_OUTER_JOIN 42000
@@ -3059,6 +3177,7 @@ ER_WRONG_OUTER_JOIN 42000
serbian "Unakrsna zavisnost pronađena u komandi 'OUTER JOIN'. Istražite vaše 'ON' uslove"
slo "V OUTER JOIN bol nájdený krížový odkaz. Skontrolujte podmienky ON"
spa "Dependencia cruzada hallada en OUTER JOIN. Examina tus condiciones ON"
+ sw "Utegemezi mwingi umepatikana katika OUTER JOIN; chunguza masharti yako ya ON"
swe "Felaktigt referens i OUTER JOIN. Kontrollera ON-uttrycket"
ukr "Перехресна залежність у OUTER JOIN. Перевірте умову ON"
ER_NULL_COLUMN_IN_INDEX 42000
@@ -3066,6 +3185,7 @@ ER_NULL_COLUMN_IN_INDEX 42000
eng "Table handler doesn't support NULL in given index. Please change column '%-.192s' to be NOT NULL or use another handler"
geo "ცხრილის დამმუშავებელს მითითებულ ინდექში NULL-ის მხარადაჭერა არ გააჩნია. შეცვალეთ სვეტი '%-.192s', რომ გახდეს NOT NULL ტიპის, ან სხვა დამმუშავებელი გამოიყენეთ"
spa "El manejador de tabla no soporta NULL en índice suministrado. Por favor, cambie la columna '%-.192s' para que sea NOT NULL o utilice otro manejador"
+ sw "Kidhibiti cha jedwali hakiauni NULL katika faharasa uliyopewa. Tafadhali badilisha safu wima '% -.192s' kuwa NOT NULL au tumia kidhibiti kingine"
swe "Tabell hanteraren kan inte indexera NULL kolumner för den givna index typen. Ändra '%-.192s' till NOT NULL eller använd en annan hanterare"
ukr "Вказівник таблиці не підтримує NULL у зазначенному індексі. Будь ласка, зменіть стовпчик '%-.192s' на NOT NULL або використайте інший вказівник таблиці."
ER_CANT_FIND_UDF
@@ -3090,6 +3210,7 @@ ER_CANT_FIND_UDF
serbian "Ne mogu da učitam funkciju '%-.192s'"
slo "Nemôžem načítať funkciu '%-.192s'"
spa "No puedo cargar la función '%-.192s'"
+ sw "Haiwezi kupakia kitendo '% -.192s'"
swe "Kan inte ladda funktionen '%-.192s'"
ukr "Не можу завантажити функцію '%-.192s'"
ER_CANT_INITIALIZE_UDF
@@ -3114,6 +3235,7 @@ ER_CANT_INITIALIZE_UDF
serbian "Ne mogu da inicijalizujem funkciju '%-.192s'; %-.80s"
slo "Nemôžem inicializovať funkciu '%-.192s'; %-.80s"
spa "No puedo inicializar la función '%-.192s'; %-.80s"
+ sw "Haiwezi kuanzisha kitendo '%-.192s'; %-.80s"
swe "Kan inte initialisera funktionen '%-.192s'; '%-.80s'"
ukr "Не можу ініціалізувати функцію '%-.192s'; %-.80s"
ER_UDF_NO_PATHS
@@ -3137,6 +3259,7 @@ ER_UDF_NO_PATHS
serbian "Ne postoje dozvoljene putanje do share-ovane biblioteke"
slo "Neprípustné žiadne cesty k zdieľanej knižnici"
spa "No existen rutas autorizadas para biblioteca compartida"
+ sw "Hakuna njia zinazoruhusiwa kwa maktaba iliyoshirikiwa"
swe "Man får inte ange sökväg för dynamiska bibliotek"
ukr "Не дозволено використовувати путі для розділюваних бібліотек"
ER_UDF_EXISTS
@@ -3161,6 +3284,7 @@ ER_UDF_EXISTS
serbian "Funkcija '%-.192s' već postoji"
slo "Funkcia '%-.192s' už existuje"
spa "La función '%-.192s' ya existe"
+ sw "Kitendo '%-.192s' tayari kipo"
swe "Funktionen '%-.192s' finns redan"
ukr "Функція '%-.192s' вже існує"
ER_CANT_OPEN_LIBRARY
@@ -3187,6 +3311,7 @@ ER_CANT_OPEN_LIBRARY
serbian "Ne mogu da otvorim share-ovanu biblioteku '%-.192s' (errno: %d, %-.128s)"
slo "Nemôžem otvoriť zdieľanú knižnicu '%-.192s' (chybový kód: %d, %-.128s)"
spa "No puedo abrir la biblioteca compartida '%-.192s' (error: %d, %-.128s)"
+ sw "Haiwezi kufungua maktaba iliyoshirikiwa '%-.192s' (kosa: %d, %-.128s)"
swe "Kan inte öppna det dynamiska biblioteket '%-.192s' (Felkod: %d, %-.128s)"
ukr "Не можу відкрити розділювану бібліотеку '%-.192s' (помилка: %d, %-.128s)"
ER_CANT_FIND_DL_ENTRY
@@ -3210,6 +3335,7 @@ ER_CANT_FIND_DL_ENTRY
serbian "Ne mogu da pronadjem funkciju '%-.128s' u biblioteci"
slo "Nemôžem nájsť funkciu '%-.128s' v knižnici"
spa "No puedo encontrar el símbolo '%-.128s' en biblioteca"
+ sw "Haiwezi kupata alama ya '% -.128s' kwenye maktaba"
swe "Hittar inte funktionen '%-.128s' in det dynamiska biblioteket"
ukr "Не можу знайти функцію '%-.128s' у бібліотеці"
ER_FUNCTION_NOT_DEFINED
@@ -3234,6 +3360,7 @@ ER_FUNCTION_NOT_DEFINED
serbian "Funkcija '%-.192s' nije definisana"
slo "Funkcia '%-.192s' nie je definovaná"
spa "La función '%-.192s' no está definida"
+ sw "Kitendo cha '%-.192s' hakijafafanuliwa"
swe "Funktionen '%-.192s' är inte definierad"
ukr "Функцію '%-.192s' не визначено"
ER_HOST_IS_BLOCKED
@@ -3257,6 +3384,7 @@ ER_HOST_IS_BLOCKED
rus "Хост '%-.64s' заблокирован из-за слишком большого количества ошибок соединения. Разблокировать его можно с помощью 'mariadb-admin flush-hosts'"
serbian "Host '%-.64s' je blokiran zbog previše grešaka u konekciji. Možete ga odblokirati pomoću komande 'mariadb-admin flush-hosts'"
spa "El equipo '%-.64s' está bloqueado debido a muchos errores de conexión; desbloquea con 'mariadb-admin flush-hosts'"
+ sw "Mpangishi '% -.64s' amezuiwa kwa sababu ya hitilafu nyingi za muunganisho; ondoa kizuizi kwa 'mariadb-admin flush-hosts'"
swe "Denna dator, '%-.64s', är blockerad pga många felaktig paket. Gör 'mariadb-admin flush-hosts' för att ta bort alla blockeringarna"
ukr "Хост '%-.64s' заблоковано з причини великої кількості помилок з'єднання. Для розблокування використовуйте 'mariadb-admin flush-hosts'"
ER_HOST_NOT_PRIVILEGED
@@ -3280,6 +3408,7 @@ ER_HOST_NOT_PRIVILEGED
rus "Хосту '%-.64s' не разрешается подключаться к этому серверу MariaDB"
serbian "Host-u '%-.64s' nije dozvoljeno da se konektuje na ovaj MariaDB server"
spa "El equipo '%-.64s' no está autorizado a conectar con este servidor MariaDB"
+ sw "Mpangishi '% -.64s' hairuhusiwi kuunganishwa kwenye seva hii ya MariaDB"
swe "Denna dator, '%-.64s', har inte privileger att använda denna MariaDB server"
ukr "Хосту '%-.64s' не доволено зв'язуватись з цим сервером MariaDB"
ER_PASSWORD_ANONYMOUS_USER 42000
@@ -3303,6 +3432,7 @@ ER_PASSWORD_ANONYMOUS_USER 42000
rus "Вы используете MariaDB от имени анонимного пользователя, а анонимным пользователям не разрешается менять пароли"
serbian "Vi koristite MariaDB kao anonimni korisnik a anonimnim korisnicima nije dozvoljeno da menjaju lozinke"
spa "Está usando MariaDB como un usuario anónimo y lo usuarios anónimos no tienen permiso para cambiar las propiedades de usuario"
+ sw "Unatumia MariaDB kama mtumiaji asiyejulikana na watumiaji wasiojulikana hawaruhusiwi kurekebisha mipangilio ya mtumiaji"
swe "Du använder MariaDB som en anonym användare och som sådan får du inte ändra ditt lösenord"
ukr "Ви використовуєте MariaDB як анонімний користувач, тому вам не дозволено змінювати паролі"
ER_PASSWORD_NOT_ALLOWED 42000
@@ -3325,6 +3455,7 @@ ER_PASSWORD_NOT_ALLOWED 42000
rus "Для того чтобы изменять пароли других пользователей, у вас должны быть привилегии на изменение таблиц в базе данных mysql"
serbian "Morate imati privilegije da možete da update-ujete određene tabele ako želite da menjate lozinke za druge korisnike"
spa "Vd debe de tener privilegios para actualizar tablas en la base de datos mysql para poder cambiar las contraseñas de otros"
+ sw "Lazima uwe na marupurupu ya kusasisha jedwali kwenye hifadhidata ya mysql ili uweze kubadilisha nywila kwa wengine"
swe "För att ändra lösenord för andra måste du ha rättigheter att uppdatera mysql-databasen"
ukr "Ви повині мати право на оновлення таблиць у базі данних mysql, аби мати можливість змінювати пароль іншим"
ER_PASSWORD_NO_MATCH 28000
@@ -3348,6 +3479,7 @@ ER_PASSWORD_NO_MATCH 28000
rus "Невозможно отыскать подходящую запись в таблице пользователей"
serbian "Ne mogu da pronađem odgovarajući slog u 'user' tabeli"
spa "No puedo encontrar una fila coincidente en la tabla de usuario"
+ sw "Haiwezi kupata safu mlalo yoyote inayolingana kwenye jedwali la mtumiaji"
swe "Hittade inte användaren i 'user'-tabellen"
ukr "Не можу знайти відповідних записів у таблиці користувача"
ER_UPDATE_INFO
@@ -3369,6 +3501,7 @@ ER_UPDATE_INFO
rus "Совпало записей: %ld Изменено: %ld Предупреждений: %ld"
serbian "Odgovarajućih slogova: %ld Promenjeno: %ld Upozorenja: %ld"
spa "Líneas coincidentes: %ld Cambiadas: %ld Avisos: %ld"
+ sw "Safu mlalo zimelingana: %ld Imebadilishwa: %ld Maonyo: %ld"
swe "Rader: %ld Uppdaterade: %ld Varningar: %ld"
ukr "Записів відповідає: %ld Змінено: %ld Застережень: %ld"
ER_CANT_CREATE_THREAD
@@ -3393,6 +3526,7 @@ ER_CANT_CREATE_THREAD
rus "Невозможно создать новый поток (ошибка %M). Если это не ситуация, связанная с нехваткой памяти, то вам следует изучить документацию на предмет описания возможной ошибки работы в конкретной ОС"
serbian "Ne mogu da kreiram novi thread (errno %M). Ako imate još slobodne memorije, trebali biste da pogledate u priručniku da li je ovo specifična greška vašeg operativnog sistema"
spa "No puedo crear un nuevo hilo (thread) (error %M). Si no está falto de memoria disponible, vd puede consultar el manual para un posible error dependiente del SO"
+ sw "Haiwezi kuunda uzi mpya (kosa%M); ikiwa bado uko na kumbukumbu ya kutosha, unaweza kushauriana na mwongozo wa hitilafu inayotegemea OS"
swe "Kan inte skapa en ny tråd (errno %M)"
ukr "Не можу створити нову гілку (помилка %M). Якщо ви не використали усю пам'ять, то прочитайте документацію до вашої ОС - можливо це помилка ОС"
ER_WRONG_VALUE_COUNT_ON_ROW 21S01
@@ -3413,6 +3547,7 @@ ER_WRONG_VALUE_COUNT_ON_ROW 21S01
rus "Количество столбцов не совпадает с количеством значений в записи %lu"
serbian "Broj kolona ne odgovara broju vrednosti u slogu %lu"
spa "El número de columnas no se corresponde con el número de valores en la línea %lu"
+ sw "Hesabu ya safu wima hailingani na hesabu ya thamani kwenye safu mlalo %lu"
swe "Antalet kolumner motsvarar inte antalet värden på rad: %lu"
ukr "Кількість стовбців не співпадає з кількістю значень у строці %lu"
ER_CANT_REOPEN_TABLE
@@ -3439,6 +3574,7 @@ ER_CANT_REOPEN_TABLE
serbian "Ne mogu da ponovo otvorim tabelu '%-.192s'"
slo "Can't reopen table: '%-.192s"
spa "No puedo reabrir la tabla: '%-.192s"
+ sw "Haiwezi kufungua tena jedwali: '% -.192s'"
swe "Kunde inte stänga och öppna tabell '%-.192s"
ukr "Не можу перевідкрити таблицю: '%-.192s'"
ER_INVALID_USE_OF_NULL 22004
@@ -3461,6 +3597,7 @@ ER_INVALID_USE_OF_NULL 22004
rus "Неправильное использование величины NULL"
serbian "Pogrešna upotreba vrednosti NULL"
spa "Uso inválido del valor NULL"
+ sw "Matumizi batili ya thamani ya NULL"
swe "Felaktig använding av NULL"
ukr "Хибне використання значення NULL"
ER_REGEXP_ERROR 42000
@@ -3483,6 +3620,7 @@ ER_REGEXP_ERROR 42000
rus "Ошибка регулярного выражения: %s"
serbian "Funkcija regexp je vratila grešku: %s"
spa "Obtenido error '%s' de regexp"
+ sw "Hitilafu ya Regex '%s'"
swe "Fick fel '%s' från REGEXP"
ukr "Помилка регулярного виразу: %s"
ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
@@ -3504,6 +3642,7 @@ ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
rus "Одновременное использование сгруппированных (GROUP) столбцов (MIN(),MAX(),COUNT(),...) с несгруппированными столбцами является некорректным, если в выражении есть GROUP BY"
serbian "Upotreba agregatnih funkcija (MIN(),MAX(),COUNT()...) bez 'GROUP' kolona je pogrešna ako ne postoji 'GROUP BY' iskaz"
spa "La mezcla de columnas GROUP (MIN(),MAX(),COUNT()...) con columnas no GROUP es ilegal si no exite la cláusula GROUP BY"
+ sw "Kuchanganya safu wima za GROUP (MIN(),MAX(),COUNT(),...) bila safu wima za GROUP ni kinyume cha sheria ikiwa hakuna kifungu cha GROUP BY"
swe "Man får ha både GROUP-kolumner (MIN(),MAX(),COUNT()...) och fält i en fråga om man inte har en GROUP BY-del"
ukr "Змішування GROUP стовбців (MIN(),MAX(),COUNT()...) з не GROUP стовбцями є забороненим, якщо не має GROUP BY"
ER_NONEXISTING_GRANT 42000
@@ -3525,6 +3664,7 @@ ER_NONEXISTING_GRANT 42000
rus "Такие права не определены для пользователя '%-.48s' на хосте '%-.64s'"
serbian "Ne postoji odobrenje za pristup korisniku '%-.48s' na host-u '%-.64s'"
spa "No existe tal concesión (grant) definida para usuario '%-.48s' en el equipo '%-.64s'"
+ sw "Hakuna ruzuku kama hiyo iliyofafanuliwa kwa mtumiaji '% -.48s' kwenye seva pangishi '%-.64s'"
swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s'"
ukr "Повноважень не визначено для користувача '%-.48s' з хосту '%-.64s'"
ER_TABLEACCESS_DENIED_ERROR 42000
@@ -3546,6 +3686,7 @@ ER_TABLEACCESS_DENIED_ERROR 42000
rus "Команда %-.100T запрещена пользователю '%s'@'%s' для таблицы %`s.%`s"
serbian "%-.100T komanda zabranjena za korisnika '%s'@'%s' za tabelu %`s.%`s"
spa "%-.100T comando denegado a usuario '%s'@'%s' para la tabla %`s.%`s"
+ sw "%-.100T amri imekataliwa kwa mtumiaji '%s'@'%s' kwa meza %`s.%`s"
swe "%-.100T ej tillåtet för '%s'@'%s' för tabell %`s.%`s"
ukr "%-.100T команда заборонена користувачу: '%s'@'%s' у таблиці %`s.%`s"
ER_COLUMNACCESS_DENIED_ERROR 42000
@@ -3567,6 +3708,7 @@ ER_COLUMNACCESS_DENIED_ERROR 42000
rus "Команда %-.32s запрещена пользователю '%s'@'%s' для столбца '%-.192s' в таблице '%-.192s'"
serbian "%-.32s komanda zabranjena za korisnika '%s'@'%s' za kolonu '%-.192s' iz tabele '%-.192s'"
spa "%-.32s comando denegado a el usuario '%s'@'%s' para la columna '%-.192s' en la tabla '%-.192s'"
+ sw "%-.32s amri imekataliwa kwa mtumiaji '%s'@'%s' kwa safuwima '%-.192s' katika jedwali '%-.192s'"
swe "%-.32s ej tillåtet för '%s'@'%s' för kolumn '%-.192s' i tabell '%-.192s'"
ukr "%-.32s команда заборонена користувачу: '%s'@'%s' для стовбця '%-.192s' у таблиці '%-.192s'"
ER_ILLEGAL_GRANT_FOR_TABLE 42000
@@ -3593,6 +3735,7 @@ ER_ILLEGAL_GRANT_FOR_TABLE 42000
serbian "Pogrešna 'GRANT' odnosno 'REVOKE' komanda. Molim Vas pogledajte u priručniku koje vrednosti mogu biti upotrebljene"
slo "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used"
spa "Comando GRANT/REVOKE ilegal; por favor, consulte el manual para ver los permisos que se pueden usar"
+ sw "amri haramu ya KUPATA/KUBATILISHA; tafadhali soma mwongozo ili kuona ni mapendeleo gani yanaweza kutumika"
swe "Felaktigt GRANT-privilegium använt"
ukr "Хибна GRANT/REVOKE команда; прочитайте документацію стосовно того, які права можна використовувати"
ER_GRANT_WRONG_HOST_OR_USER 42000
@@ -3615,6 +3758,7 @@ ER_GRANT_WRONG_HOST_OR_USER 42000
rus "Слишком длинное имя пользователя/хоста для GRANT"
serbian "Argument 'host' ili 'korisnik' prosleđen komandi 'GRANT' je predugačak"
spa "El argumento de GRANT para el equipo o usuario es demasiado grande"
+ sw "Hoja ya seva mwenyeji au mtumiaji kwa GRANT ni ndefu sana"
swe "Felaktigt maskinnamn eller användarnamn använt med GRANT"
ukr "Аргумент host або user для GRANT задовгий"
ER_NO_SUCH_TABLE 42S02
@@ -3641,6 +3785,7 @@ ER_NO_SUCH_TABLE 42S02
serbian "Tabela '%-.192s.%-.192s' ne postoji"
slo "Table '%-.192s.%-.192s' doesn't exist"
spa "La tabla '%-.192s.%-.192s' no existe"
+ sw "Jedwali '%-.192s.%-.192s' halipo"
swe "Det finns ingen tabell som heter '%-.192s.%-.192s'"
ukr "Таблиця '%-.192s.%-.192s' не існує"
ER_NONEXISTING_TABLE_GRANT 42000
@@ -3662,6 +3807,7 @@ ER_NONEXISTING_TABLE_GRANT 42000
rus "Такие права не определены для пользователя '%-.48s' на компьютере '%-.64s' для таблицы '%-.192s'"
serbian "Ne postoji odobrenje za pristup korisniku '%-.48s' na host-u '%-.64s' tabeli '%-.192s'"
spa "No existe tal concesión (grant) definida para el usuario '%-.48s' en el equipo '%-.64s' en la tabla '%-.192s'"
+ sw "Hakuna ruzuku kama hiyo iliyofafanuliwa kwa mtumiaji '%-.48s' kwenye seva pangishi '%-.64s' kwenye jedwali '%-.192s'"
swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s' för tabell '%-.192s'"
ukr "Повноважень не визначено для користувача '%-.48s' з хосту '%-.64s' для таблиці '%-.192s'"
ER_NOT_ALLOWED_COMMAND 42000
@@ -3684,6 +3830,7 @@ ER_NOT_ALLOWED_COMMAND 42000
rus "Эта команда не допускается в данной версии MariaDB"
serbian "Upotrebljena komanda nije dozvoljena sa ovom verzijom MariaDB servera"
spa "El comando usado no está permitido con esta versión de MariaDB"
+ sw "Amri iliyotumika hairuhusiwi na toleo hili la MariaDB"
swe "Du kan inte använda detta kommando med denna MariaDB version"
ukr "Використовувана команда не дозволена у цій версії MariaDB"
ER_SYNTAX_ERROR 42000
@@ -3711,6 +3858,7 @@ ER_SYNTAX_ERROR 42000
serbian "Imate grešku u vašoj SQL sintaksi"
slo "Something is wrong in your syntax"
spa "Existe un error en su sintaxis SQL; revise el manual que se corresponde con su versión del servidor MariaDB para averiguar la sintaxis correcta a utilizar"
+ sw "Una hitilafu katika syntax yako ya SQL; angalia mwongozo unaolingana na toleo lako la seva ya MariaDB kwa syntax sahihi ya kutumia"
swe "Du har något fel i din syntax"
ukr "У вас помилка у синтаксисі SQL"
ER_DELAYED_CANT_CHANGE_LOCK
@@ -3732,6 +3880,7 @@ ER_DELAYED_CANT_CHANGE_LOCK
rus "Поток, обслуживающий отложенную вставку (delayed insert), не смог получить запрашиваемую блокировку на таблицу %-.192s"
serbian "Prolongirani 'INSERT' thread nije mogao da dobije traženo zaključavanje tabele '%-.192s'"
spa "El hilo (thread) de inserción retardada no pudo obtener bloqueo requerido para la tabla %-.192s"
+ sw "Uzi uliocheleweshwa wa kuingiza haukuweza kupata ombi la kufuli la jedwali la %-.192s"
swe "DELAYED INSERT-tråden kunde inte låsa tabell '%-.192s'"
ukr "Гілка для INSERT DELAYED не може отримати блокування для таблиці %-.192s"
ER_TOO_MANY_DELAYED_THREADS
@@ -3754,6 +3903,7 @@ ER_TOO_MANY_DELAYED_THREADS
rus "Слишком много потоков, обслуживающих отложенную вставку (delayed insert)"
serbian "Previše prolongiranih thread-ova je u upotrebi"
spa "Demasiados hilos (threads) retardados en uso"
+ sw "nyuzi nyingi zilizochelewa kutumika"
swe "Det finns redan 'max_delayed_threads' trådar i använding"
ukr "Забагато затриманих гілок використовується"
ER_ABORTING_CONNECTION 08S01
@@ -3779,6 +3929,7 @@ ER_ABORTING_CONNECTION 08S01
serbian "Prekinuta konekcija broj %ld ka bazi: '%-.192s' korisnik je bio: '%-.48s' (%-.64s)"
slo "Aborted connection %ld to db: '%-.192s' user: '%-.48s' (%-.64s)"
spa "Conexión %ld abortada para la base de datos: '%-.192s' usuario: '%-.48s' (%-.64s)"
+ sw "Muunganisho ulioacha %ld hadi db: mtumiaji wa '%-.192s': '%-.48s' (%-.64s)"
swe "Avbröt länken för tråd %ld till db '%-.192s', användare '%-.48s' (%-.64s)"
ukr "Перервано з'єднання %ld до бази данних: '%-.192s' користувача: '%-.48s' (%-.64s)"
ER_NET_PACKET_TOO_LARGE 08S01
@@ -3801,6 +3952,7 @@ ER_NET_PACKET_TOO_LARGE 08S01
rus "Полученный пакет больше, чем 'max_allowed_packet'"
serbian "Primio sam mrežni paket veći od definisane vrednosti 'max_allowed_packet'"
spa "Obtenido un paquete mayor de 'max_allowed_packet' bytes"
+ sw "Nina pakiti kubwa kuliko baiti za 'max_allowed_packet'"
swe "Kommunkationspaketet är större än 'max_allowed_packet'"
ukr "Отримано пакет більший ніж max_allowed_packet"
ER_NET_READ_ERROR_FROM_PIPE 08S01
@@ -3823,6 +3975,7 @@ ER_NET_READ_ERROR_FROM_PIPE 08S01
rus "Получена ошибка чтения от потока соединения (connection pipe)"
serbian "Greška pri čitanju podataka sa pipe-a"
spa "Obtenido un error de lectura desde la tubería de la conexión"
+ sw "Nimepata hitilafu ya kusoma kutoka kwa bomba la unganisho"
swe "Fick läsfel från klienten vid läsning från 'PIPE'"
ukr "Отримано помилку читання з комунікаційного каналу"
ER_NET_FCNTL_ERROR 08S01
@@ -3845,6 +3998,7 @@ ER_NET_FCNTL_ERROR 08S01
rus "Получена ошибка от fcntl()"
serbian "Greška pri izvršavanju funkcije fcntl()"
spa "Obtenido un error de fcntl()"
+ sw "Nimepata hitilafu kutoka kwa fcntl()"
swe "Fick fatalt fel från 'fcntl()'"
ukr "Отримано помилкку від fcntl()"
ER_NET_PACKETS_OUT_OF_ORDER 08S01
@@ -3867,6 +4021,7 @@ ER_NET_PACKETS_OUT_OF_ORDER 08S01
rus "Пакеты получены в неверном порядке"
serbian "Primio sam mrežne pakete van reda"
spa "Obtenidos paquetes desordenados"
+ sw "Nimepata pakiti zisizo kwa utaratibu"
swe "Kommunikationspaketen kom i fel ordning"
ukr "Отримано пакети у неналежному порядку"
ER_NET_UNCOMPRESS_ERROR 08S01
@@ -3889,6 +4044,7 @@ ER_NET_UNCOMPRESS_ERROR 08S01
rus "Невозможно распаковать пакет, полученный через коммуникационный протокол"
serbian "Ne mogu da dekompresujem mrežne pakete"
spa "No pude descomprimir paquete de comunicación"
+ sw "Haikuweza kubandua pakiti ya mawasiliano"
swe "Kunde inte packa up kommunikationspaketet"
ukr "Не можу декомпресувати комунікаційний пакет"
ER_NET_READ_ERROR 08S01
@@ -3911,6 +4067,7 @@ ER_NET_READ_ERROR 08S01
rus "Получена ошибка в процессе получения пакета через коммуникационный протокол "
serbian "Greška pri primanju mrežnih paketa"
spa "Obtenido un error leyendo paquetes de comunicación"
+ sw "Nimepata hitilafu ya kusoma pakiti za mawasiliano"
swe "Fick ett fel vid läsning från klienten"
ukr "Отримано помилку читання комунікаційних пакетів"
ER_NET_READ_INTERRUPTED 08S01
@@ -3933,6 +4090,7 @@ ER_NET_READ_INTERRUPTED 08S01
rus "Получен таймаут ожидания пакета через коммуникационный протокол "
serbian "Vremenski limit za čitanje mrežnih paketa je istekao"
spa "Obtenido tiempo agotado (timeout) leyendo paquetes de comunicación"
+ sw "Muda wa kusoma pakiti za mawasiliano ilipita kabla sijamaliza"
swe "Fick 'timeout' vid läsning från klienten"
ukr "Отримано затримку читання комунікаційних пакетів"
ER_NET_ERROR_ON_WRITE 08S01
@@ -3955,6 +4113,7 @@ ER_NET_ERROR_ON_WRITE 08S01
rus "Получена ошибка при передаче пакета через коммуникационный протокол "
serbian "Greška pri slanju mrežnih paketa"
spa "Obtenido un error escribiendo paquetes de comunicación"
+ sw "Nimepata hitilafu ya kuandika pakiti za mawasiliano"
swe "Fick ett fel vid skrivning till klienten"
ukr "Отримано помилку запису комунікаційних пакетів"
ER_NET_WRITE_INTERRUPTED 08S01
@@ -3977,6 +4136,7 @@ ER_NET_WRITE_INTERRUPTED 08S01
rus "Получен таймаут в процессе передачи пакета через коммуникационный протокол "
serbian "Vremenski limit za slanje mrežnih paketa je istekao"
spa "Obtenido tiempo agotado (timeout) escribiendo paquetes de comunicación"
+ sw "Niliacha kuandika pakiti za mawasiliano kwa sababu muda imepita"
swe "Fick 'timeout' vid skrivning till klienten"
ukr "Отримано затримку запису комунікаційних пакетів"
ER_TOO_LONG_STRING 42000
@@ -3999,6 +4159,7 @@ ER_TOO_LONG_STRING 42000
rus "Результирующая строка больше, чем 'max_allowed_packet'"
serbian "Rezultujuči string je duži nego što to dozvoljava parametar servera 'max_allowed_packet'"
spa "La cadena resultante es mayor de max_allowed_packet bytes"
+ sw "Kamba ya matokeo ni mrefu kuliko baiti za 'max_allowed_packet'"
swe "Resultatsträngen är längre än max_allowed_packet"
ukr "Строка результату довша ніж max_allowed_packet"
ER_TABLE_CANT_HANDLE_BLOB 42000
@@ -4020,6 +4181,7 @@ ER_TABLE_CANT_HANDLE_BLOB 42000
rus "%s таблицы не поддерживают типы BLOB/TEXT"
serbian "Iskorišteni tip tabele (%s) ne podržava kolone tipa 'BLOB' odnosno 'TEXT'"
spa "El motor de almacenaje %s no soporta columnas de tipo BLOB/TEXT"
+ sw "Injini ya kuhifadhi %s haitumii safu wima za BLOB/TEXT"
swe "Den använda tabelltypen (%s) kan inte hantera BLOB/TEXT-kolumner"
ukr "%s таблиці не підтримують BLOB/TEXT стовбці"
ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
@@ -4041,6 +4203,7 @@ ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
rus "%s таблицы не поддерживают автоинкрементные столбцы"
serbian "Iskorišteni tip tabele (%s) ne podržava kolone tipa 'AUTO_INCREMENT'"
spa "El motor de almacenaje %s no soporta columnas AUTO_INCREMENT"
+ sw "Injini ya hifadhi %s haitumii safu wima za AUTO_INCREMENT"
swe "Den använda tabelltypen (%s) kan inte hantera AUTO_INCREMENT-kolumner"
ukr "%s таблиці не підтримують AUTO_INCREMENT стовбці"
ER_DELAYED_INSERT_TABLE_LOCKED
@@ -4067,6 +4230,7 @@ ER_DELAYED_INSERT_TABLE_LOCKED
serbian "Komanda 'INSERT DELAYED' ne može biti iskorištena u tabeli '%-.192s', zbog toga što je zaključana komandom 'LOCK TABLES'"
slo "INSERT DELAYED can't be used with table '%-.192s', because it is locked with LOCK TABLES"
spa "INSERT DELAYED no puede ser usado con la tabla '%-.192s' porque esta bloqueada con LOCK TABLES"
+ sw "INSERT DELAYED haiwezi kutumika pamoja na jedwali '%-.192s' kwa sababu imefungwa kwa LOCK TABLES"
swe "INSERT DELAYED kan inte användas med tabell '%-.192s', emedan den är låst med LOCK TABLES"
ukr "INSERT DELAYED не може бути використано з таблицею '%-.192s', тому що її заблоковано з LOCK TABLES"
ER_WRONG_COLUMN_NAME 42000
@@ -4088,6 +4252,7 @@ ER_WRONG_COLUMN_NAME 42000
rus "Неверное имя столбца '%-.100s'"
serbian "Pogrešno ime kolone '%-.100s'"
spa "Nombre Incorrecto de columna '%-.100s'"
+ sw "Jina la safu wima si sahihi '%-.100s'"
swe "Felaktigt kolumnnamn '%-.100s'"
ukr "Невірне ім'я стовбця '%-.100s'"
ER_WRONG_KEY_COLUMN 42000
@@ -4098,6 +4263,7 @@ ER_WRONG_KEY_COLUMN 42000
hindi "स्टोरेज इंजन %s, कॉलम %`s को इंडेक्स नहीं कर सकता"
rus "Обработчик таблиц %s не может проиндексировать столбец %`s"
spa "El motor de almacenaje %s no puede indizar la columna %`s"
+ sw "Injini ya hifadhi %s haiwezi kuorodhesha safu wima %`s"
ukr "Вказівник таблиц %s не може індексувати стовбець %`s"
ER_WRONG_MRG_TABLE
chi "无法打开定义不同或非 MyISAM 类型或不存在的表"
@@ -4122,6 +4288,7 @@ ER_WRONG_MRG_TABLE
serbian "Tabele iskorištene u 'MERGE' tabeli nisu definisane na isti način"
slo "All tables in the MERGE table are not defined identically"
spa "Incapaz de abrir la tabla subyacente por estar definida de forma diferente o por no ser del tipo no-MyISAM o por no existir"
+ sw "Haiwezi kufungua jedwali la msingi ambalo limefafanuliwa tofauti au la aina isiyo ya MyISAM au haipo"
swe "Tabellerna i MERGE-tabellen är inte identiskt definierade"
ukr "Таблиці у MERGE TABLE мають різну структуру"
ER_DUP_UNIQUE 23000
@@ -4142,6 +4309,7 @@ ER_DUP_UNIQUE 23000
rus "Невозможно записать в таблицу '%-.192s' из-за ограничений уникального ключа"
serbian "Zbog provere jedinstvenosti ne mogu da upišem podatke u tabelu '%-.192s'"
spa "No puedo grabar, debido a restricción única, en la tabla '%-.192s'"
+ sw "Siwezi kuandika, kwa sababu ya kikwazo cha kipekee, kuweka meza '%-.192s'"
swe "Kan inte skriva till tabell '%-.192s'; UNIQUE-test"
ukr "Не можу записати до таблиці '%-.192s', з причини вимог унікальності"
ER_BLOB_KEY_WITHOUT_LENGTH 42000
@@ -4168,6 +4336,7 @@ ER_BLOB_KEY_WITHOUT_LENGTH 42000
serbian "BLOB kolona '%-.192s' je upotrebljena u specifikaciji ključa bez navođenja dužine ključa"
slo "BLOB column '%-.192s' used in key specification without a key length"
spa "Columna BLOB/TEXT '%-.192s', usada en especificación de clave, sin tamaño"
+ sw "BLOB/TEXT safu '%-.192s' inayotumika katika vipimo vya ufunguo bila urefu wa ufunguo"
swe "Du har inte angett någon nyckellängd för BLOB '%-.192s'"
ukr "Стовбець BLOB '%-.192s' використано у визначенні ключа без вказання довжини ключа"
ER_PRIMARY_CANT_HAVE_NULL 42000
@@ -4189,6 +4358,7 @@ ER_PRIMARY_CANT_HAVE_NULL 42000
rus "Все части первичного ключа (PRIMARY KEY) должны быть определены как NOT NULL; Если вам нужна поддержка величин NULL в ключе, воспользуйтесь индексом UNIQUE"
serbian "Svi delovi primarnog ključa moraju biti različiti od NULL; Ako Vam ipak treba NULL vrednost u ključu, upotrebite 'UNIQUE'"
spa "Todas las partes de una PRIMARY KEY deben de ser NOT NULL; si necesita NULL en una clave, use UNIQUE en su lugar"
+ sw "Sehemu zote za PRIMARY KEY (UFUNGUO WA MSINGI) lazima iwe NOT NULL (SIO BATILI); ikiwa unahitaji NULL kwenye kitufe, tumia UNIQUE badala yake"
swe "Alla delar av en PRIMARY KEY måste vara NOT NULL; Om du vill ha en nyckel med NULL, använd UNIQUE istället"
ukr "Усі частини PRIMARY KEY повинні бути NOT NULL; Якщо ви потребуєте NULL у ключі, скористайтеся UNIQUE"
ER_TOO_MANY_ROWS 42000
@@ -4210,6 +4380,7 @@ ER_TOO_MANY_ROWS 42000
rus "В результате возвращена более чем одна строка"
serbian "Rezultat je sačinjen od više slogova"
spa "Resultado compuesto de más de una fila"
+ sw "Tokeo lilikuwa na safu zaidi ya moja"
swe "Resultet bestod av mera än en rad"
ukr "Результат знаходиться у більше ніж одній строці"
ER_REQUIRES_PRIMARY_KEY 42000
@@ -4231,6 +4402,7 @@ ER_REQUIRES_PRIMARY_KEY 42000
rus "Этот тип таблицы требует определения первичного ключа"
serbian "Ovaj tip tabele zahteva da imate definisan primarni ključ"
spa "Este tipo de tabla necesita de una clave primaria"
+ sw "Aina hii ya jedwali inahitaji ufunguo msingi"
swe "Denna tabelltyp kräver en PRIMARY KEY"
ukr "Цей тип таблиці потребує первинного ключа"
ER_NO_RAID_COMPILED
@@ -4252,6 +4424,7 @@ ER_NO_RAID_COMPILED
rus "Эта версия MariaDB скомпилирована без поддержки RAID"
serbian "Ova verzija MariaDB servera nije kompajlirana sa podrškom za RAID uređaje"
spa "Esta versión de MariaDB no ha sido compilada con soporte para RAID"
+ sw "Toleo hili la MariaDB halijajumuishwa na usaidizi wa RAID"
swe "Denna version av MariaDB är inte kompilerad med RAID"
ukr "Ця версія MariaDB не зкомпільована з підтримкою RAID"
ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
@@ -4271,6 +4444,7 @@ ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
rus "Вы работаете в режиме безопасных обновлений (safe update mode) и попробовали изменить таблицу без использования ключевого столбца в части WHERE"
serbian "Vi koristite safe update mod servera, a probali ste da promenite podatke bez 'WHERE' komande koja koristi kolonu ključa"
spa "Está usando modo de actualización segura y ha intentado actualizar una tabla sin un WHERE que use una columna KEY"
+ sw "Unatumia hali salama ya kusasisha na ulijaribu kusasisha jedwali bila WHERE inayotumia safu wima ambayo ni KEY (ufunguo)"
swe "Du använder 'säker uppdateringsmod' och försökte uppdatera en tabell utan en WHERE-sats som använder sig av en nyckel"
ukr "Ви у режимі безпечного оновлення та намагаєтесь оновити таблицю без оператора WHERE, що використовує KEY стовбець"
ER_KEY_DOES_NOT_EXISTS 42000 S1009
@@ -4291,6 +4465,7 @@ ER_KEY_DOES_NOT_EXISTS 42000 S1009
rus "Ключ '%-.192s' не существует в таблице '%-.192s'"
serbian "Ključ '%-.192s' ne postoji u tabeli '%-.192s'"
spa "La clave '%-.192s' no existe en la tabla '%-.192s'"
+ sw "Ufunguo '%-.192s' haupo kwenye jedwali '%-.192s'"
swe "Nyckel '%-.192s' finns inte in tabell '%-.192s'"
ukr "Ключ '%-.192s' не існує в таблиці '%-.192s'"
ER_CHECK_NO_SUCH_TABLE 42000
@@ -4311,6 +4486,7 @@ ER_CHECK_NO_SUCH_TABLE 42000
rus "Невозможно открыть таблицу"
serbian "Ne mogu da otvorim tabelu"
spa "No puedo abrir tabla"
+ sw "Haiwezi kufungua jedwali"
swe "Kan inte öppna tabellen"
ukr "Не можу відкрити таблицю"
ER_CHECK_NOT_IMPLEMENTED 42000
@@ -4338,6 +4514,7 @@ ER_CHECK_NOT_IMPLEMENTED 42000
serbian "Handler za ovu tabelu ne dozvoljava %s komande"
slo "The handler for the table doesn't support %s"
spa "El motor de almacenaje para la tabla no soporta %s"
+ sw "Injini ya hifadhi ya jedwali haiauni %s"
swe "Tabellhanteraren för denna tabell kan inte göra %s"
ukr "Вказівник таблиці не підтримуе %s"
ER_CANT_DO_THIS_DURING_AN_TRANSACTION 25000
@@ -4357,6 +4534,7 @@ ER_CANT_DO_THIS_DURING_AN_TRANSACTION 25000
rus "Вам не разрешено выполнять эту команду в транзакции"
serbian "Nije Vam dozvoljeno da izvršite ovu komandu u transakciji"
spa "No tiene el permiso para ejecutar este comando en una transacción"
+ sw "Hauruhusiwi kutekeleza amri hii katika shughuli"
swe "Du får inte utföra detta kommando i en transaktion"
ukr "Вам не дозволено виконувати цю команду в транзакції"
ER_ERROR_DURING_COMMIT
@@ -4377,6 +4555,7 @@ ER_ERROR_DURING_COMMIT
rus "Получена ошибка %M в процессе COMMIT"
serbian "Greška %M za vreme izvršavanja komande 'COMMIT'"
spa "Obtenido error %M durante COMMIT"
+ sw "Nimepata hitilafu %M wakati wa COMMIT"
swe "Fick fel %M vid COMMIT"
ukr "Отримано помилку %M під час COMMIT"
ER_ERROR_DURING_ROLLBACK
@@ -4397,6 +4576,7 @@ ER_ERROR_DURING_ROLLBACK
rus "Получена ошибка %M в процессе ROLLBACK"
serbian "Greška %M za vreme izvršavanja komande 'ROLLBACK'"
spa "Obtenido error %M durante ROLLBACK"
+ sw "Nimepata hitilafu %M wakati wa ROLLBACK"
swe "Fick fel %M vid ROLLBACK"
ukr "Отримано помилку %M під час ROLLBACK"
ER_ERROR_DURING_FLUSH_LOGS
@@ -4417,6 +4597,7 @@ ER_ERROR_DURING_FLUSH_LOGS
rus "Получена ошибка %M в процессе FLUSH_LOGS"
serbian "Greška %M za vreme izvršavanja komande 'FLUSH_LOGS'"
spa "Obtenido error %M durante FLUSH_LOGS"
+ sw "Nimepata hitilafu %M wakati wa FLUSH_LOGS"
swe "Fick fel %M vid FLUSH_LOGS"
ukr "Отримано помилку %M під час FLUSH_LOGS"
ER_ERROR_DURING_CHECKPOINT
@@ -4437,6 +4618,7 @@ ER_ERROR_DURING_CHECKPOINT
rus "Получена ошибка %M в процессе CHECKPOINT"
serbian "Greška %M za vreme izvršavanja komande 'CHECKPOINT'"
spa "Obtenido error %M durante CHECKPOINT"
+ sw "Nimepata hitilafu %M wakati wa CHECKPOINT"
swe "Fick fel %M vid CHECKPOINT"
ukr "Отримано помилку %M під час CHECKPOINT"
ER_NEW_ABORTING_CONNECTION 08S01
@@ -4455,12 +4637,14 @@ ER_NEW_ABORTING_CONNECTION 08S01
rus "Прервано соединение %lld к базе данных '%-.192s' пользователя '%-.48s' с хоста '%-.64s'%-.64s (%-.64s)"
serbian "Prekinuta konekcija broj %lld ka bazi: '%-.192s' korisnik je bio: '%-.48s' a host: '%-.64s'%-.64s (%-.64s)"
spa "Abortada conexión %lld a la base de datos: '%-.192s' usuario: '%-.48s' equipo: '%-.64s'%-.64s (%-.64s)"
+ sw "Muunganisho ulioghairishwa %lld kwa db: mtumiaji wa '%-.192s': '%-.48s' mwenyeji: '%-.64s'%-.64s (%-.64s)"
swe "Avbröt länken för tråd %lld till db '%-.192s', användare '%-.48s', host '%-.64s'%-.64s (%-.64s)"
ukr "Перервано з'єднання %lld до бази данних: '%-.192s' користувач: '%-.48s' хост: '%-.64s'%-.64s (%-.64s)"
ER_UNUSED_10
eng "You should never see it"
geo "ეს ვერასდროს უნდა დაინახოთ"
spa "Nunca lo debería vd de ver"
+ sw "Hupaswi kuiona kamwe"
ER_FLUSH_MASTER_BINLOG_CLOSED
chi "Binlog 已关闭, 不能 RESET MASTER"
eng "Binlog closed, cannot RESET MASTER"
@@ -4471,6 +4655,7 @@ ER_FLUSH_MASTER_BINLOG_CLOSED
rus "Двоичный журнал обновления закрыт, невозможно выполнить RESET MASTER"
serbian "Binarni log file zatvoren, ne mogu da izvršim komandu 'RESET MASTER'"
spa "Binlog cerrado, no puedo hacer RESET MASTER"
+ sw "Binlog imefungwa, haiwezi kuweka RESET MASTER"
ukr "Реплікаційний лог закрито, не можу виконати RESET MASTER"
ER_INDEX_REBUILD
chi "重建 dumped table '%-.192s' 的索引失败"
@@ -4489,6 +4674,7 @@ ER_INDEX_REBUILD
rus "Ошибка перестройки индекса сохраненной таблицы '%-.192s'"
serbian "Izgradnja indeksa dump-ovane tabele '%-.192s' nije uspela"
spa "Fallo reconstruyendo el índice del volcado de la tabla '%-.192s'"
+ sw "Imeshindwa kuunda upya faharasa ya jedwali ambalo nakal lake lililotupwa ndani ya faili '%-.192s'"
ukr "Невдале відновлення індекса переданої таблиці '%-.192s'"
ER_MASTER
chi "Master错误:'%-.64s'"
@@ -4505,6 +4691,7 @@ ER_MASTER
rus "Ошибка от головного сервера: '%-.64s'"
serbian "Greška iz glavnog servera '%-.64s' u klasteru"
spa "Error del maestro (master): '%-.64s'"
+ sw "Hitilafu kutoka kwa bwana: '% -.64s'"
swe "Fel från master: '%-.64s'"
ukr "Помилка від головного: '%-.64s'"
ER_MASTER_NET_READ 08S01
@@ -4522,6 +4709,7 @@ ER_MASTER_NET_READ 08S01
rus "Возникла ошибка чтения в процессе коммуникации с головным сервером"
serbian "Greška u primanju mrežnih paketa sa glavnog servera u klasteru"
spa "Error de red leyendo del maestro (master)"
+ sw "Hitilafu katika usomaji kutoka kwa bwana"
swe "Fick nätverksfel vid läsning från master"
ukr "Мережева помилка читання від головного"
ER_MASTER_NET_WRITE 08S01
@@ -4539,6 +4727,7 @@ ER_MASTER_NET_WRITE 08S01
rus "Возникла ошибка записи в процессе коммуникации с головным сервером"
serbian "Greška u slanju mrežnih paketa na glavni server u klasteru"
spa "Error de red grabando en maestro (master)"
+ sw "Hitilafu katika kuandika kwa bwana"
swe "Fick nätverksfel vid skrivning till master"
ukr "Мережева помилка запису до головного"
ER_FT_MATCHING_KEY_NOT_FOUND
@@ -4557,6 +4746,7 @@ ER_FT_MATCHING_KEY_NOT_FOUND
rus "Невозможно отыскать полнотекстовый (FULLTEXT) индекс, соответствующий списку столбцов"
serbian "Ne mogu da pronađem 'FULLTEXT' indeks koli odgovara listi kolona"
spa "No puedo encontrar índice FULLTEXT coincidente con la lista de columnas"
+ sw "Haiwezi kupata faharasa ya FULLTEXT inayolingana na orodha ya safu wima"
swe "Hittar inte ett FULLTEXT-index i kolumnlistan"
ukr "Не можу знайти FULLTEXT індекс, що відповідає переліку стовбців"
ER_LOCK_OR_ACTIVE_TRANSACTION
@@ -4575,6 +4765,7 @@ ER_LOCK_OR_ACTIVE_TRANSACTION
rus "Невозможно выполнить указанную команду, поскольку у вас присутствуют активно заблокированные таблица или открытая транзакция"
serbian "Ne mogu da izvršim datu komandu zbog toga što su tabele zaključane ili je transakcija u toku"
spa "No puedo ejecutar el comando dado porque tiene tablas activas bloqueadas o una transacción activa"
+ sw "Haiwezi kutekeleza amri uliyopewa kwa sababu una jedwali zilizofungwa au shughuli inayotumika"
swe "Kan inte utföra kommandot emedan du har en låst tabell eller an aktiv transaktion"
ukr "Не можу виконати подану команду тому, що таблиця заблокована або виконується транзакція"
ER_UNKNOWN_SYSTEM_VARIABLE
@@ -4594,6 +4785,7 @@ ER_UNKNOWN_SYSTEM_VARIABLE
rus "Неизвестная системная переменная '%-.*s'"
serbian "Nepoznata sistemska promenljiva '%-.*s'"
spa "Variable de sistema '%-.*s' desconocida"
+ sw "Tofauti ya mfumo isiyojulikana '%-.*s'"
swe "Okänd systemvariabel: '%-.*s'"
ukr "Невідома системна змінна '%-.*s'"
ER_CRASHED_ON_USAGE
@@ -4612,6 +4804,7 @@ ER_CRASHED_ON_USAGE
rus "Таблица '%-.192s' помечена как испорченная и должна пройти проверку и ремонт"
serbian "Tabela '%-.192s' je markirana kao oštećena i trebala bi biti popravljena"
spa "La tabla '%-.192s' está marcada como estropeada y debe de ser reparada"
+ sw "Jedwali '%-.192s' limetiwa alama kuwa limeanguka na linapaswa kurekebishwa"
swe "Tabell '%-.192s' är trasig och bör repareras med REPAIR TABLE"
ukr "Таблицю '%-.192s' марковано як зіпсовану та її потрібно відновити"
ER_CRASHED_ON_REPAIR
@@ -4630,6 +4823,7 @@ ER_CRASHED_ON_REPAIR
rus "Таблица '%-.192s' помечена как испорченная и последний (автоматический?) ремонт не был успешным"
serbian "Tabela '%-.192s' je markirana kao oštećena, a zadnja (automatska?) popravka je bila neuspela"
spa "La tabla '%-.192s' está marcada como estropeada y la última reparación (¿automática?) falló"
+ sw "Jedwali '%-.192s' limetiwa alama kuwa limeanguka na urekebishaji wa mwisho (otomatiki?) haukufaulu"
swe "Tabell '%-.192s' är trasig och senast (automatiska?) reparation misslyckades"
ukr "Таблицю '%-.192s' марковано як зіпсовану та останнє (автоматичне?) відновлення не вдалося"
ER_WARNING_NOT_COMPLETE_ROLLBACK
@@ -4647,6 +4841,7 @@ ER_WARNING_NOT_COMPLETE_ROLLBACK
rus "Внимание: по некоторым измененным нетранзакционным таблицам невозможно будет произвести откат транзакции"
serbian "Upozorenje: Neke izmenjene tabele ne podržavaju komandu 'ROLLBACK'"
spa "Algunas tablas no transaccionales ya cambiadas no puedieron ser retrocedidas (rolled back)"
+ sw "Baadhi ya jedwali zilizobadilishwa zisizo za shughuli hazikuweza kurejeshwa"
swe "Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK"
ukr "Застереження: Деякі нетранзакційні зміни таблиць не можна буде повернути"
ER_TRANS_CACHE_FULL
@@ -4663,6 +4858,7 @@ ER_TRANS_CACHE_FULL
por "Transações multi-declaradas (multi-statement transactions) requeriram mais do que o valor limite (max_binlog_cache_size) de bytes para armazenagem. Aumente o valor desta variável do mariadbd e tente novamente"
rus "Транзакции, включающей большое количество команд, потребовалось более чем 'max_binlog_cache_size' байт. Увеличьте эту переменную сервера mariadbd и попробуйте еще раз"
spa "Transacción multi-sentencia requirió de más de 'max_binlog_cache_size' bytes de almacenamiento"
+ sw "Muamala wa taarifa nyingi unahitaji zaidi ya baiti 'max_binlog_cache_size' za hifadhi; ongeza kigezo hiki cha mariadbd na ujaribu tena"
swe "Transaktionen krävde mera än 'max_binlog_cache_size' minne. Öka denna mariadbd-variabel och försök på nytt"
ukr "Транзакція з багатьма виразами вимагає більше ніж 'max_binlog_cache_size' байтів для зберігання. Збільште цю змінну mariadbd та спробуйте знову"
ER_SLAVE_MUST_STOP
@@ -4678,6 +4874,7 @@ ER_SLAVE_MUST_STOP
rus "Эту операцию невозможно выполнить при работающем потоке подчиненного сервера %2$*1$s. Сначала выполните STOP SLAVE '%2$*1$s'"
serbian "Ova operacija ne može biti izvršena dok je aktivan podređeni '%2$*1$s' server. Zadajte prvo komandu 'STOP SLAVE '%2$*1$s'' da zaustavite podređeni server"
spa "Esta operación no puede ser realizada con el esclavo '%2$*1$s' en marcha; primero ejecute STOP SLAVE '%2$*1$s'"
+ sw "Operesheni hii haiwezi kufanywa kwa vile una mtumwa anayefanya kazi '%2$*1$s'; pea amri ya STOP SLAVE '%2$*1$s' kwanza"
swe "Denna operation kan inte göras under replikering; Du har en aktiv förbindelse till '%2$*1$s'. Gör STOP SLAVE '%2$*1$s' först"
ukr "Операція не може бути виконана з запущеним підлеглим '%2$*1$s', спочатку виконайте STOP SLAVE '%2$*1$s'"
ER_SLAVE_NOT_RUNNING
@@ -4694,6 +4891,7 @@ ER_SLAVE_NOT_RUNNING
rus "Для этой операции требуется работающий подчиненный сервер. Сначала выполните START SLAVE"
serbian "Ova operacija zahteva da je aktivan podređeni server. Konfigurišite prvo podređeni server i onda izvršite komandu 'START SLAVE'"
spa "Esta operación requiere de un esclavo funcionando; configure el esclavo y haga el START SLAVE"
+ sw "Operesheni hii inahitaji mtumwa ambaye ameanzishwa; sanidi mtumwa halafu muanzishe na START SLAVE"
swe "Denna operation kan endast göras under replikering; Konfigurera slaven och gör START SLAVE"
ukr "Операція вимагає запущеного підлеглого, зконфігуруйте підлеглого та виконайте START SLAVE"
ER_BAD_SLAVE
@@ -4710,6 +4908,7 @@ ER_BAD_SLAVE
rus "Этот сервер не настроен как подчиненный. Внесите исправления в конфигурационном файле или с помощью CHANGE MASTER TO"
serbian "Server nije konfigurisan kao podređeni server, ispravite konfiguracioni file ili na njemu izvršite komandu 'CHANGE MASTER TO'"
spa "El servidor no está configurado como esclavo; arréglelo en el fichero/archivo de configuración o con CHANGE MASTER TO"
+ sw "Seva haijasanidiwa kama mtumwa; rekebisha katika faili ya usanidi au kwa kutumia amri ya CHANGE MASTER TO"
swe "Servern är inte konfigurerade som en replikationsslav. Ändra konfigurationsfilen eller gör CHANGE MASTER TO"
ukr "Сервер не зконфігуровано як підлеглий, виправте це у файлі конфігурації або з CHANGE MASTER TO"
ER_MASTER_INFO
@@ -4721,6 +4920,7 @@ ER_MASTER_INFO
jpn "'master info '%.*s''構造体の初期化ができませんでした。MariaDBエラーログでエラーメッセージを確認してください。"
serbian "Nisam mogao da inicijalizujem informacionu strukturu glavnog servera, proverite da li imam privilegije potrebne za pristup file-u 'master.info' '%.*s'"
spa "No pude inicializar estructura info de maestro (master) para '%.*s'; se pueden ver más mensajes de error en el historial (log) de errores de MariaDB"
+ sw "Haikuweza kuanzisha muundo mkuu wa maelezo ya '%.*s'; ujumbe zaidi wa hitilafu unaweza kupatikana kwenye kumbukumbu ya makosa ya MariaDB"
swe "Kunde inte initialisera replikationsstrukturerna för '%.*s'. See MariaDB fel fil för mera information"
ukr "Інформаційна структура з'єднання головного і підлеглого (master.info) для '%.*s' не може бути ініціалізована"
ER_SLAVE_THREAD
@@ -4737,6 +4937,7 @@ ER_SLAVE_THREAD
rus "Невозможно создать поток подчиненного сервера. Проверьте системные ресурсы"
serbian "Nisam mogao da startujem thread za podređeni server, proverite sistemske resurse"
spa "No puedo crear el hilo (thread) esclavo; verifique recursos del sistema"
+ sw "Haikuweza kuunda uzi wa watumwa; angalia rasilimali za mfumo"
swe "Kunde inte starta en tråd för replikering"
ukr "Не можу створити підлеглу гілку, перевірте системні ресурси"
ER_TOO_MANY_USER_CONNECTIONS 42000
@@ -4755,6 +4956,7 @@ ER_TOO_MANY_USER_CONNECTIONS 42000
rus "У пользователя %-.64s уже больше чем 'max_user_connections' активных соединений"
serbian "Korisnik %-.64s već ima više aktivnih konekcija nego što je to određeno 'max_user_connections' promenljivom"
spa "El usuario %-.64s ya tiene más de 'max_user_connections' conexiones activas"
+ sw "Mtumiaji %-.64s tayari ana zaidi ya miunganisho amilifu ya 'max_user_connections'"
swe "Användare '%-.64s' har redan 'max_user_connections' aktiva inloggningar"
ukr "Користувач %-.64s вже має більше ніж 'max_user_connections' активних з'єднань"
ER_SET_CONSTANTS_ONLY
@@ -4773,6 +4975,7 @@ ER_SET_CONSTANTS_ONLY
rus "С этой командой вы можете использовать только константные выражения"
serbian "Možete upotrebiti samo konstantan iskaz sa komandom 'SET'"
spa "Sólo puede usar expresiones constantes en esta sentencia"
+ sw "Unaweza kutumia tu maneno ya mara kwa mara katika taarifa hii"
swe "Man kan endast använda konstantuttryck med SET"
ukr "Можна використовувати лише вирази зі сталими у SET"
ER_LOCK_WAIT_TIMEOUT
@@ -4790,6 +4993,7 @@ ER_LOCK_WAIT_TIMEOUT
rus "Таймаут ожидания блокировки истек; попробуйте перезапустить транзакцию"
serbian "Vremenski limit za zaključavanje tabele je istekao; Probajte da ponovo startujete transakciju"
spa "Tiempo de espera de bloqueo excedido; intente rearrancar la transacción"
+ sw "Muda wa kusubiri kufuli umepita; jaribu kuanzisha upya shughuli"
swe "Fick inte ett lås i tid ; Försök att starta om transaktionen"
ukr "Затримку очікування блокування вичерпано"
ER_LOCK_TABLE_FULL
@@ -4808,6 +5012,7 @@ ER_LOCK_TABLE_FULL
rus "Общее количество блокировок превысило размеры таблицы блокировок"
serbian "Broj totalnih zaključavanja tabele premašuje veličinu tabele zaključavanja"
spa "El número total de bloqueos excede el tamaño de bloqueo de la tabla"
+ sw "Jumla ya idadi ya kufuli inazidi saizi ya jedwali la kufuli"
swe "Antal lås överskrider antalet reserverade lås"
ukr "Загальна кількість блокувань перевищила розмір блокувань для таблиці"
ER_READ_ONLY_TRANSACTION 25000
@@ -4825,6 +5030,7 @@ ER_READ_ONLY_TRANSACTION 25000
rus "Блокировки обновлений нельзя получить в процессе чтения не принятой (в режиме READ UNCOMMITTED) транзакции"
serbian "Zaključavanja izmena ne mogu biti realizovana sve dok traje 'READ UNCOMMITTED' transakcija"
spa "No se pueden adquirir bloqueos de actualización durante una transacción READ UNCOMMITTED"
+ sw "Kufuli za sasisho haziwezi kupatikana wakati wa muamala READ UNCOMMITTED (USOMAJI UNAOJITOLEA)"
swe "Updateringslås kan inte göras när man använder READ UNCOMMITTED"
ukr "Оновити блокування не можливо на протязі транзакції READ UNCOMMITTED"
ER_DROP_DB_WITH_READ_LOCK
@@ -4842,6 +5048,7 @@ ER_DROP_DB_WITH_READ_LOCK
rus "Не допускается DROP DATABASE, пока поток держит глобальную блокировку чтения"
serbian "Komanda 'DROP DATABASE' nije dozvoljena dok thread globalno zaključava čitanje podataka"
spa "DROP DATABASE no permitido mientras un hilo (thread) está ejerciendo un bloqueo de lectura global"
+ sw "DROP DATABASE hairuhusiwi wakati uzi (thread) inashikilia kufuli ya kusoma kimataifa"
swe "DROP DATABASE är inte tillåtet när man har ett globalt läslås"
ukr "DROP DATABASE не дозволено доки гілка перебуває під загальним блокуванням читання"
ER_CREATE_DB_WITH_READ_LOCK
@@ -4859,6 +5066,7 @@ ER_CREATE_DB_WITH_READ_LOCK
rus "Не допускается CREATE DATABASE, пока поток держит глобальную блокировку чтения"
serbian "Komanda 'CREATE DATABASE' nije dozvoljena dok thread globalno zaključava čitanje podataka"
spa "CREATE DATABASE no permitido mientras un hilo (thread) está manteniendo un bloqueo de lectura global"
+ sw "CREATE DATABASE hairuhusiwi wakati uzi (thread) inashikilia kufuli ya kusoma kimataifa"
swe "CREATE DATABASE är inte tillåtet när man har ett globalt läslås"
ukr "CREATE DATABASE не дозволено доки гілка перебуває під загальним блокуванням читання"
ER_WRONG_ARGUMENTS
@@ -4876,6 +5084,7 @@ ER_WRONG_ARGUMENTS
rus "Неверные параметры для %s"
serbian "Pogrešni argumenti prosleđeni na %s"
spa "Argumentos incorrectos para %s"
+ sw "Hoja zisizo sahihi kwa %s"
swe "Felaktiga argument till %s"
ukr "Хибний аргумент для %s"
ER_NO_PERMISSION_TO_CREATE_USER 42000
@@ -4892,6 +5101,7 @@ ER_NO_PERMISSION_TO_CREATE_USER 42000
rus "'%s'@'%s' не разрешается создавать новых пользователей"
serbian "Korisniku '%s'@'%s' nije dozvoljeno da kreira nove korisnike"
spa "'%s'@'%s' no está permitido para crear nuevos usuarios"
+ sw "'%s'@'%s' hairuhusiwi kuunda watumiaji wapya"
swe "'%s'@'%s' har inte rättighet att skapa nya användare"
ukr "Користувачу '%s'@'%s' не дозволено створювати нових користувачів"
ER_UNION_TABLES_IN_DIFFERENT_DIR
@@ -4908,6 +5118,7 @@ ER_UNION_TABLES_IN_DIFFERENT_DIR
rus "Неверное определение таблицы; Все таблицы в MERGE должны принадлежать одной и той же базе данных"
serbian "Pogrešna definicija tabele; sve 'MERGE' tabele moraju biti u istoj bazi podataka"
spa "Definición incorrecta de la tabla; todas las tablas MERGE deben de estar en la misma base de datos"
+ sw "Ufafanuzi wa jedwali usio sahihi; jedwali zote za MERGE lazima ziwe kwenye hifadhidata moja"
swe "Felaktig tabelldefinition; alla tabeller i en MERGE-tabell måste vara i samma databas"
ukr "Хибне визначення таблиці; всі MERGE-таблиці повинні належити до однієї бази ланних."
ER_LOCK_DEADLOCK 40001
@@ -4924,6 +5135,7 @@ ER_LOCK_DEADLOCK 40001
rus "Возникла тупиковая ситуация в процессе получения блокировки; Попробуйте перезапустить транзакцию"
serbian "Unakrsno zaključavanje pronađeno kada sam pokušao da dobijem pravo na zaključavanje; Probajte da restartujete transakciju"
spa "Encontrado estancamiento (deadlock) al intentar obtener el bloqueo; intente volver a comenzar la transacción"
+ sw "Kufungana ya makufuli kumepatikana wakati wa kujaribu kufunga; jaribu kuanzisha tena muamala"
swe "Fick 'DEADLOCK' vid låsförsök av block/rad. Försök att starta om transaktionen"
ukr "Взаємне блокування знайдено під час спроби отримати блокування; спробуйте перезапустити транзакцію."
ER_TABLE_CANT_HANDLE_FT
@@ -4940,6 +5152,7 @@ ER_TABLE_CANT_HANDLE_FT
rus "Используемый тип таблиц (%s) не поддерживает полнотекстовых индексов"
serbian "Upotrebljeni tip tabele (%s) ne podržava 'FULLTEXT' indekse"
spa "El motor de almacenaje %s no soporta índices FULLTEXT"
+ sw "Injini ya kuhifadhi %s haitumii faharasa za FULLTEXT"
swe "Tabelltypen (%s) har inte hantering av FULLTEXT-index"
ukr "Використаний тип таблиці (%s) не підтримує FULLTEXT індексів"
ER_CANNOT_ADD_FOREIGN
@@ -4955,6 +5168,7 @@ ER_CANNOT_ADD_FOREIGN
rus "Невозможно добавить ограничения внешнего ключа для `%s`"
serbian "Ne mogu da dodam proveru spoljnog ključa na `%s`"
spa "No puedo añadir restricción de clave foránea para `%s`"
+ sw "Haiwezi kuongeza kizuizi cha ufunguo wa kigeni kwa `%s`"
swe "Kan inte lägga till 'FOREIGN KEY constraint' för `%s`'"
ukr "Не можу додати обмеження зовнішнього ключа Ha `%s`"
ER_NO_REFERENCED_ROW 23000
@@ -4972,6 +5186,7 @@ ER_NO_REFERENCED_ROW 23000
por "Não pode acrescentar uma linha filha: uma restrição de chave estrangeira falhou"
rus "Невозможно добавить или обновить дочернюю строку: проверка ограничений внешнего ключа не выполняется"
spa "No puedo añadir o actualizar una fila hija: ha fallado una restrición de clave foránea"
+ sw "Haiwezi kuongeza au kusasisha safu mlalo ya mtoto: kizuizi cha ufunguo wa kigeni kinashindwa"
swe "FOREIGN KEY-konflikt: Kan inte skriva barn"
ukr "Не вдається додати або оновити дочірній рядок: невдала перевірка обмеження зовнішнього ключа"
ER_ROW_IS_REFERENCED 23000
@@ -4988,6 +5203,7 @@ ER_ROW_IS_REFERENCED 23000
rus "Невозможно удалить или обновить родительскую строку: проверка ограничений внешнего ключа не выполняется"
serbian "Ne mogu da izbrišem roditeljski slog: provera spoljnog ključa je neuspela"
spa "No puedo borrar o actualizar una fila padre: ha fallado una restrición de clave foránea"
+ sw "Haiwezi kufuta au kusasisha safu mlalo kuu: kizuizi cha ufunguo wa kigeni kinashindwa"
swe "FOREIGN KEY-konflikt: Kan inte radera fader"
ER_CONNECT_TO_MASTER 08S01
chi "连接master时出错:%-.128s"
@@ -5000,6 +5216,7 @@ ER_CONNECT_TO_MASTER 08S01
por "Erro conectando com o master: %-.128s"
rus "Ошибка соединения с головным сервером: %-.128s"
spa "Error conectando al maestro (master): %-.128s"
+ sw "Hitilafu katika kuunganisha kwa bwana: % -.128s"
swe "Fick fel vid anslutning till master: %-.128s"
ER_QUERY_ON_MASTER
chi "在Master上运行查询时出错:%-.128s"
@@ -5012,6 +5229,7 @@ ER_QUERY_ON_MASTER
por "Erro rodando consulta no master: %-.128s"
rus "Ошибка выполнения запроса на головном сервере: %-.128s"
spa "Error ejecutando consulta (query) en maestro (master): %-.128s"
+ sw "Hitilafu ya kutekeleza swali kwa bwana: % -.128s"
swe "Fick fel vid utförande av command på mastern: %-.128s"
ER_ERROR_WHEN_EXECUTING_COMMAND
chi "执行命令%s时出错:%-.128s"
@@ -5026,6 +5244,7 @@ ER_ERROR_WHEN_EXECUTING_COMMAND
rus "Ошибка при выполнении команды %s: %-.128s"
serbian "Greška pri izvršavanju komande %s: %-.128s"
spa "Error al ejecutar comando %s: %-.128s"
+ sw "Hitilafu wakati wa kutekeleza amri %s: %-.128s"
swe "Fick fel vid utförande av %s: %-.128s"
ER_WRONG_USAGE
chi "%s和%s使用不正确"
@@ -5040,6 +5259,7 @@ ER_WRONG_USAGE
rus "Неверное использование %s и %s"
serbian "Pogrešna upotreba %s i %s"
spa "Uso incorrecto de %s y %s"
+ sw "Matumizi yasiyo sahihi ya %s na %s"
swe "Felaktig använding av %s and %s"
ukr "Wrong usage of %s and %s"
ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 21000
@@ -5055,6 +5275,7 @@ ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 21000
rus "Использованные операторы выборки (SELECT) дают разное количество столбцов"
serbian "Upotrebljene 'SELECT' komande adresiraju različit broj kolona"
spa "Las sentencias SELECT usadas tienen un número diferente de columnas"
+ sw "Kauli za SELECT zilizotumika zina idadi tofauti ya safu wima"
swe "SELECT-kommandona har olika antal kolumner"
ER_CANT_UPDATE_WITH_READLOCK
chi "无法执行查询,因为您有冲突的读锁"
@@ -5069,6 +5290,7 @@ ER_CANT_UPDATE_WITH_READLOCK
rus "Невозможно исполнить запрос, поскольку у вас установлены конфликтующие блокировки чтения"
serbian "Ne mogu da izvršim upit zbog toga što imate zaključavanja čitanja podataka u konfliktu"
spa "No puedo ejecutar la consulta (query) porque vd tiene un conflicto de bloqueo de lectura"
+ sw "Haiwezi kutekeleza hoja kwa sababu una kufuli ya kusoma inayokinzana"
swe "Kan inte utföra kommandot emedan du har ett READ-lås"
ER_MIXING_NOT_ALLOWED
chi "事务和非事务表的混合被禁用"
@@ -5083,6 +5305,7 @@ ER_MIXING_NOT_ALLOWED
rus "Использование транзакционных таблиц наряду с нетранзакционными запрещено"
serbian "Mešanje tabela koje podržavaju transakcije i onih koje ne podržavaju transakcije je isključeno"
spa "Desactivada la mezcla de tablas transaccionales y no transaccionales"
+ sw "Mchanganyiko wa jedwali za shughuli na zisizo za shughuli umezimwa"
swe "Blandning av transaktionella och icke-transaktionella tabeller är inaktiverat"
ER_DUP_ARGUMENT
chi "选项'%s'在语句中使用两次"
@@ -5096,6 +5319,7 @@ ER_DUP_ARGUMENT
por "Opção '%s' usada duas vezes no comando"
rus "Опция '%s' дважды использована в выражении"
spa "Opción '%s' usada dos veces en la sentencia"
+ sw "Chaguo '%s' kutumika mara mbili katika taarifa"
swe "Option '%s' användes två gånger"
ER_USER_LIMIT_REACHED 42000
chi "用户'%-.64s'已超过'%s'资源(当前值:%ld)"
@@ -5108,6 +5332,7 @@ ER_USER_LIMIT_REACHED 42000
por "Usuário '%-.64s' tem excedido o '%s' recurso (atual valor: %ld)"
rus "Пользователь '%-.64s' превысил использование ресурса '%s' (текущее значение: %ld)"
spa "El usuario '%-.64s' ha excedido el recurso '%s' (valor actual: %ld)"
+ sw "Mtumiaji '%-.64s' amepita rasilimali ya '%s' (thamani ya sasa: %ld)"
swe "Användare '%-.64s' har överskridit '%s' (nuvarande värde: %ld)"
ER_SPECIFIC_ACCESS_DENIED_ERROR 42000
chi "拒绝访问;您需要(至少一个)%-.128s特权用于此操作"
@@ -5120,6 +5345,7 @@ ER_SPECIFIC_ACCESS_DENIED_ERROR 42000
por "Acesso negado. Você precisa o privilégio %-.128s para essa operação"
rus "В доступе отказано. Вам нужны привилегии %-.128s для этой операции"
spa "Acceso denegado. Usted necesita (al menos un(os)) privilegio(s) %-.128s para esta operación"
+ sw "Ufikiaji umekataliwa; unahitaji (angalau moja ya) mapendeleo ya %-.128s kwa operesheni hii"
swe "Du har inte privlegiet '%-.128s' som behövs för denna operation"
ukr "Access denied. You need the %-.128s privilege for this operation"
ER_LOCAL_VARIABLE
@@ -5133,6 +5359,7 @@ ER_LOCAL_VARIABLE
por "Variável '%-.64s' é uma SESSION variável e não pode ser usada com SET GLOBAL"
rus "Переменная '%-.64s' является потоковой (SESSION) переменной и не может быть изменена с помощью SET GLOBAL"
spa "La variable '%-.64s' es una variable de SESSION y no puede ser usada con SET GLOBAL"
+ sw "Kigezo '% -.64s' ni aina ya SESSION na haiwezi kutumika na SET GLOBAL"
swe "Variabel '%-.64s' är en SESSION variabel och kan inte ändrad med SET GLOBAL"
ER_GLOBAL_VARIABLE
chi "变量'%-.64s'是全局变量,应该用SET GLOBAL设置"
@@ -5145,6 +5372,7 @@ ER_GLOBAL_VARIABLE
por "Variável '%-.64s' é uma GLOBAL variável e deve ser configurada com SET GLOBAL"
rus "Переменная '%-.64s' является глобальной (GLOBAL) переменной, и ее следует изменять с помощью SET GLOBAL"
spa "La variable '%-.64s' es una variable GLOBAL y debería de ser configurada con SET GLOBAL"
+ sw "Kigezo '%-.64s' ni kigezo cha GLOBAL na kinapaswa kuwekwa kwa SET GLOBAL"
swe "Variabel '%-.64s' är en GLOBAL variabel och bör sättas med SET GLOBAL"
ER_NO_DEFAULT 42000
chi "变量'%-.64s'没有默认值"
@@ -5157,6 +5385,7 @@ ER_NO_DEFAULT 42000
por "Variável '%-.64s' não tem um valor padrão"
rus "Переменная '%-.64s' не имеет значения по умолчанию"
spa "La variable '%-.64s' no tiene un valor por defecto"
+ sw "Kigezo '% -.64s' hakina thamani chaguomsingi"
swe "Variabel '%-.64s' har inte ett DEFAULT-värde"
ER_WRONG_VALUE_FOR_VAR 42000
chi "变量'%-.64s'无法设置为'%-.200T'的值"
@@ -5169,6 +5398,7 @@ ER_WRONG_VALUE_FOR_VAR 42000
por "Variável '%-.64s' não pode ser configurada para o valor de '%-.200T'"
rus "Переменная '%-.64s' не может быть установлена в значение '%-.200T'"
spa "La variable '%-.64s' no puede ser configurada para el valor de '%-.200T'"
+ sw "Kigezo '%-.64s' hakiwezi kuwekwa kwa thamani ya '%-.200T'"
swe "Variabel '%-.64s' kan inte sättas till '%-.200T'"
ER_WRONG_TYPE_FOR_VAR 42000
chi "变量'%-.64s'的参数类型不正确"
@@ -5181,6 +5411,7 @@ ER_WRONG_TYPE_FOR_VAR 42000
por "Tipo errado de argumento para variável '%-.64s'"
rus "Неверный тип аргумента для переменной '%-.64s'"
spa "Tipo de argumento incorrecto para variable '%-.64s'"
+ sw "Aina ya hoja isiyo sahihi imetumika kwa kigezo '% -.64s'"
swe "Fel typ av argument till variabel '%-.64s'"
ER_VAR_CANT_BE_READ
chi "变量'%-.64s'只能设置,不能读"
@@ -5193,6 +5424,7 @@ ER_VAR_CANT_BE_READ
por "Variável '%-.64s' somente pode ser configurada, não lida"
rus "Переменная '%-.64s' может быть только установлена, но не считана"
spa "La variable '%-.64s' solamente puede ser configurada, no leída"
+ sw "Kigezo '% -.64s' kinaweza tu kuwekwa, si kusomeka"
swe "Variabeln '%-.64s' kan endast sättas, inte läsas"
ER_CANT_USE_OPTION_HERE 42000
chi "'%s'的使用/放置不正确"
@@ -5205,6 +5437,7 @@ ER_CANT_USE_OPTION_HERE 42000
por "Errado uso/colocação de '%s'"
rus "Неверное использование или в неверном месте указан '%s'"
spa "Incorrecto uso/colocación de '%s'"
+ sw "Matumizi/uwekaji usio sahihi wa '%s'"
swe "Fel använding/placering av '%s'"
ER_NOT_SUPPORTED_YET 42000
chi "此版本的MariaDB尚未支持'%s'"
@@ -5217,6 +5450,7 @@ ER_NOT_SUPPORTED_YET 42000
por "Esta versão de MariaDB não suporta ainda '%s'"
rus "Эта версия MariaDB пока еще не поддерживает '%s'"
spa "Esta versión de MariaDB no soporta todavía '%s'"
+ sw "Toleo hili la MariaDB bado halitumii '%s'"
swe "Denna version av MariaDB kan ännu inte utföra '%s'"
ER_MASTER_FATAL_ERROR_READING_BINLOG
chi "从二进制日志读取数据时,从master遇到致命错误%d:'%-.320s'"
@@ -5229,6 +5463,7 @@ ER_MASTER_FATAL_ERROR_READING_BINLOG
por "Obteve fatal erro %d: '%-.320s' do master quando lendo dados do binary log"
rus "Получена неисправимая ошибка %d: '%-.320s' от головного сервера в процессе выборки данных из двоичного журнала"
spa "Obtenido error fatal %d del maestro (master) al leer datos del historial (log) binario: '%-.320s'"
+ sw "Nimepata hitilafu mbaya %d kutoka kwa bwana wakati wa kusoma data kutoka kwa kumbukumbu ya mfumo wa jozi: '% -.320s'"
swe "Fick fatalt fel %d: '%-.320s' från master vid läsning av binärloggen"
ER_SLAVE_IGNORED_TABLE
chi "由于复制replicate-*-table规则,Slave SQL线程忽略了查询"
@@ -5239,6 +5474,7 @@ ER_SLAVE_IGNORED_TABLE
nla "Slave SQL thread negeerde de query vanwege replicate-*-table opties"
por "Slave SQL thread ignorado a consulta devido às normas de replicação-*-tabela"
spa "El hilo (thread) SQL esclavo ha ignorado la consulta (query) debido a las reglas de replicar-*-tabla"
+ sw "Uzi wa mtumwa wa SQL ulipuuza hoja kwa sababu ya sheria za replicate-*-table"
swe "Slav SQL tråden ignorerade frågan pga en replicate-*-table regel"
ER_INCORRECT_GLOBAL_LOCAL_VAR
chi "变量'%-.192s'是一个%s变量"
@@ -5249,6 +5485,7 @@ ER_INCORRECT_GLOBAL_LOCAL_VAR
nla "Variabele '%-.192s' is geen %s variabele"
serbian "Promenljiva '%-.192s' je %s promenljiva"
spa "La variable '%-.192s' es una variable %s"
+ sw "Kigezo '%-.192s' ni kigezo cha %s"
swe "Variabel '%-.192s' är av typ %s"
ER_WRONG_FK_DEF 42000
chi "'%-.192s'的外键定义不正确:%s"
@@ -5259,6 +5496,7 @@ ER_WRONG_FK_DEF 42000
nla "Incorrecte foreign key definitie voor '%-.192s': %s"
por "Definição errada da chave estrangeira para '%-.192s': %s"
spa "Definición de clave foránea incorrecta para '%-.192s': %s"
+ sw "Ufafanuzi wa ufunguo wa kigeni usio sahihi wa '%-.192s': %s"
swe "Felaktig FOREIGN KEY-definition för '%-.192s': %s"
ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
chi "索引参考和表参考不匹配"
@@ -5269,6 +5507,7 @@ ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
nla "Sleutel- en tabelreferentie komen niet overeen"
por "Referência da chave e referência da tabela não coincidem"
spa "La referencia de clave y la referencia de tabla no coinciden"
+ sw "Marejeleo ya funguo na marejeleo ya jedwali hayalingani"
swe "Nyckelreferensen och tabellreferensen stämmer inte överens"
ER_OPERAND_COLUMNS 21000
chi "操作数应包含%d列"
@@ -5279,6 +5518,7 @@ ER_OPERAND_COLUMNS 21000
nla "Operand behoort %d kolommen te bevatten"
rus "Операнд должен содержать %d колонок"
spa "El operando debería de contener %d columna(s)"
+ sw "Operesheni inapaswa kuwa na safu wima %d"
ukr "Операнд має складатися з %d стовбців"
ER_SUBQUERY_NO_1_ROW 21000
chi "子查询返回超过1行"
@@ -5290,6 +5530,7 @@ ER_SUBQUERY_NO_1_ROW 21000
por "Subconsulta retorna mais que 1 registro"
rus "Подзапрос возвращает более одной записи"
spa "La subconsulta (subquery) devuelve más de 1 fila"
+ sw "Subquery inarudisha zaidi ya safu mlalo 1"
swe "Subquery returnerade mer än 1 rad"
ukr "Підзапит повертає більш нiж 1 запис"
ER_UNKNOWN_STMT_HANDLER
@@ -5302,6 +5543,7 @@ ER_UNKNOWN_STMT_HANDLER
nla "Onebekende prepared statement handler (%.*s) voor %s aangegeven"
por "Desconhecido manipulador de declaração preparado (%.*s) determinado para %s"
spa "Manejador desconocido de sentencia preparada (%.*s) dado para %s"
+ sw "Kidhibiti cha taarifa kilichotayarishwa kisichojulikana (%.*s) kimetolewa kwa %s"
swe "Okänd PREPARED STATEMENT id (%.*s) var given till %s"
ukr "Unknown prepared statement handler (%.*s) given to %s"
ER_CORRUPT_HELP_DB
@@ -5313,6 +5555,7 @@ ER_CORRUPT_HELP_DB
nla "Help database is beschadigd of bestaat niet"
por "Banco de dado de ajuda corrupto ou não existente"
spa "O la Base de datos de Ayuda está corrupta o no existe"
+ sw "Hifadhi ya msaada imeharibika au haipo"
swe "Hjälpdatabasen finns inte eller är skadad"
ER_CYCLIC_REFERENCE
chi "亚查询的死环参考"
@@ -5324,6 +5567,7 @@ ER_CYCLIC_REFERENCE
por "Referência cíclica em subconsultas"
rus "Циклическая ссылка на подзапрос"
spa "Referencia cíclica en subconsultas (subqueries)"
+ sw "Marejeleo ya baiskeli kwenye subqueries"
swe "Cyklisk referens i subqueries"
ukr "Циклічне посилання на підзапит"
ER_AUTO_CONVERT
@@ -5336,6 +5580,7 @@ ER_AUTO_CONVERT
por "Convertendo coluna '%s' de %s para %s"
rus "Преобразование поля '%s' из %s в %s"
spa "Convirtiendo la columna '%s' de %s a %s"
+ sw "Inabadilisha safu wima '%s' kutoka %s hadi %s"
swe "Konvertar kolumn '%s' från %s till %s"
ukr "Перетворення стовбца '%s' з %s у %s"
ER_ILLEGAL_REFERENCE 42S22
@@ -5348,6 +5593,7 @@ ER_ILLEGAL_REFERENCE 42S22
por "Referência '%-.64s' não suportada (%s)"
rus "Ссылка '%-.64s' не поддерживается (%s)"
spa "Referencia '%-.64s' no soportada (%s)"
+ sw "Marejeleo '% -.64s' hayatumiki (%s)"
swe "Referens '%-.64s' stöds inte (%s)"
ukr "Посилання '%-.64s' не пiдтримуется (%s)"
ER_DERIVED_MUST_HAVE_ALIAS 42000
@@ -5359,6 +5605,7 @@ ER_DERIVED_MUST_HAVE_ALIAS 42000
nla "Voor elke afgeleide tabel moet een unieke alias worden gebruikt"
por "Cada tabela derivada deve ter seu próprio alias"
spa "Cada tabla derivada debe de tener su propio alias"
+ sw "Kila jedwali inayotokana lazima iwe na jina lake mwenyewe"
swe "Varje 'derived table' måste ha sitt eget alias"
ER_SELECT_REDUCED 01000
chi "SELECT %u在优化期间被减"
@@ -5370,6 +5617,7 @@ ER_SELECT_REDUCED 01000
por "Select %u foi reduzido durante otimização"
rus "Select %u был упразднен в процессе оптимизации"
spa "La selección %u fué reducida durante optimización"
+ sw "Chagua %u ilipunguzwa wakati wa uboreshaji"
swe "Select %u reducerades vid optimiering"
ukr "Select %u was скасовано при оптимiзацii"
ER_TABLENAME_NOT_ALLOWED_HERE 42000
@@ -5381,6 +5629,7 @@ ER_TABLENAME_NOT_ALLOWED_HERE 42000
nla "Tabel '%-.192s' uit een van de SELECTS kan niet in %-.32s gebruikt worden"
por "Tabela '%-.192s' de um dos SELECTs não pode ser usada em %-.32s"
spa "La tabla '%-.192s' de uno de los SELECT no puede ser usada en %-.32s"
+ sw "Jedwali '%-.192s' kutoka kwa mojawapo ya SELECTs haiwezi kutumika katika %-.32s"
swe "Tabell '%-.192s' från en SELECT kan inte användas i %-.32s"
ER_NOT_SUPPORTED_AUTH_MODE 08004
chi "客户端不支持服务器请求的身份验证协议;考虑升级MariaDB客户端"
@@ -5391,6 +5640,7 @@ ER_NOT_SUPPORTED_AUTH_MODE 08004
nla "Client ondersteunt het door de server verwachtte authenticatieprotocol niet. Overweeg een nieuwere MariaDB client te gebruiken"
por "Cliente não suporta o protocolo de autenticação exigido pelo servidor; considere a atualização do cliente MariaDB"
spa "El cliente no soporta protocolo de autenticación requerido por el servidor; considere mejorar el cliente MariaDB"
+ sw "Mteja haungi mkono itifaki ya uthibitishaji iliyoombwa na seva; fikiria kuboresha mteja wa MariaDB"
swe "Klienten stöder inte autentiseringsprotokollet som begärts av servern; överväg uppgradering av klientprogrammet"
ER_SPATIAL_CANT_HAVE_NULL 42000
chi "SPATIAL索引的所有部分必须不为null"
@@ -5401,6 +5651,7 @@ ER_SPATIAL_CANT_HAVE_NULL 42000
nla "Alle delete van een SPATIAL index dienen als NOT NULL gedeclareerd te worden"
por "Todas as partes de uma SPATIAL index devem ser NOT NULL"
spa "Todas las partes de un índice SPATIAL deben de ser NOT NULL"
+ sw "Sehemu zote za faharisi ya SPATIAL lazima ziwe NOT NULL"
swe "Alla delar av en SPATIAL index måste vara NOT NULL"
ER_COLLATION_CHARSET_MISMATCH 42000
chi "COLLATION'%s'无效地用于字符集'%s'"
@@ -5411,6 +5662,7 @@ ER_COLLATION_CHARSET_MISMATCH 42000
nla "COLLATION '%s' is niet geldig voor CHARACTER SET '%s'"
por "COLLATION '%s' não é válida para CHARACTER SET '%s'"
spa "El COTEJO (COLLATION) '%s' no es válido para CHARACTER SET '%s'"
+ sw "COLLATION '%s' si halali kwa CHARACTER SET '%s'"
swe "COLLATION '%s' är inte tillåtet för CHARACTER SET '%s'"
ER_SLAVE_WAS_RUNNING
chi "Slave已经在运行"
@@ -5421,6 +5673,7 @@ ER_SLAVE_WAS_RUNNING
nla "Slave is reeds actief"
por "O slave já está rodando"
spa "El esclavo ya está funcionando"
+ sw "Mtumwa tayari amewashwa"
swe "Slaven har redan startat"
ER_SLAVE_WAS_NOT_RUNNING
chi "slave已经停止了"
@@ -5431,6 +5684,7 @@ ER_SLAVE_WAS_NOT_RUNNING
nla "Slave is reeds gestopt"
por "O slave já está parado"
spa "El esclavo ya fué parado"
+ sw "Mtumwa tayari amesimamishwa"
swe "Slaven har redan stoppat"
ER_TOO_BIG_FOR_UNCOMPRESS
chi "未压缩的数据量太大;最大量为%d(可能未压缩数据的长度已损坏)"
@@ -5441,6 +5695,7 @@ ER_TOO_BIG_FOR_UNCOMPRESS
nla "Ongecomprimeerder data is te groot; de maximum lengte is %d (waarschijnlijk, de lengte van de gecomprimeerde data was beschadigd)"
por "Tamanho muito grande dos dados des comprimidos. O máximo tamanho é %d. (provavelmente, o comprimento dos dados descomprimidos está corrupto)"
spa "Tamaño demasiado grande para datos descomprimidos; el máximo tamaño es %d. (probablemente, el tamaño de datos descomprimidos fué corrompido)"
+ sw "Ukubwa wa data ambayo haijabanwa ni kubwa mno; saizi ya juu zaidi ni %d (huenda, urefu wa data ambayo haijabanwa iliharibika)"
ER_ZLIB_Z_MEM_ERROR
chi "ZLIB:内存不足"
eng "ZLIB: Not enough memory"
@@ -5450,6 +5705,7 @@ ER_ZLIB_Z_MEM_ERROR
nla "ZLIB: Onvoldoende geheugen"
por "ZLIB: Não suficiente memória disponível"
spa "ZLIB: No hay suficiente memoria"
+ sw "ZLIB: Hakuna kumbukumbu ya kutosha"
ER_ZLIB_Z_BUF_ERROR
chi "ZLIB:输出缓冲区中没有足够的空间(可能未压缩数据的长度已损坏)"
eng "ZLIB: Not enough room in the output buffer (probably, length of uncompressed data was corrupted)"
@@ -5459,6 +5715,7 @@ ER_ZLIB_Z_BUF_ERROR
nla "ZLIB: Onvoldoende ruimte in uitgaande buffer (waarschijnlijk, de lengte van de ongecomprimeerde data was beschadigd)"
por "ZLIB: Não suficiente espaço no buffer emissor (provavelmente, o comprimento dos dados descomprimidos está corrupto)"
spa "ZLIB: No hay suficiente espacio en el búfer de salida (probablemente, el tamaño de datos descomprimidos fué corrompido)"
+ sw "ZLIB: Hakuna nafasi ya kutosha katika bafa ya pato (labda, urefu wa data ambayo haijashinikizwa iliharibiwa)"
ER_ZLIB_Z_DATA_ERROR
chi "ZLIB:输入数据已损坏"
eng "ZLIB: Input data corrupted"
@@ -5468,11 +5725,13 @@ ER_ZLIB_Z_DATA_ERROR
nla "ZLIB: Invoer data beschadigd"
por "ZLIB: Dados de entrada está corrupto"
spa "ZLIB: Dato de entrada corrupto"
+ sw "ZLIB: Data ya kuingiza imeharibika"
ER_CUT_VALUE_GROUP_CONCAT
chi "group_concat()削减了行%u. %s"
eng "Row %u was cut by %s)"
geo "მწკრივი %u გაჭრილია %s-ის მიერ)"
spa "La fila %u ha sido cortada por %s)"
+ sw "Safu %u ilikatwa na %s)"
ER_WARN_TOO_FEW_RECORDS 01000
chi "行%lu不包含所有列的数据"
eng "Row %lu doesn't contain data for all columns"
@@ -5482,6 +5741,7 @@ ER_WARN_TOO_FEW_RECORDS 01000
nla "Rij %lu bevat niet de data voor alle kolommen"
por "Conta de registro é menor que a conta de coluna na linha %lu"
spa "La fila %lu no contiene datos para todas las columnas"
+ sw "Safu ya %lu haina data ya safu wima zote"
ER_WARN_TOO_MANY_RECORDS 01000
chi "行%lu被截断;它包含的数据比输入列更多"
eng "Row %lu was truncated; it contained more data than there were input columns"
@@ -5491,6 +5751,7 @@ ER_WARN_TOO_MANY_RECORDS 01000
nla "Regel %lu ingekort, bevatte meer data dan invoer kolommen"
por "Conta de registro é maior que a conta de coluna na linha %lu"
spa "La fila %lu fué truncada; contenía más datos que columnas de entrada"
+ sw "Safu ya %lu ilipunguzwa; ilikuwa na data zaidi kuliko safu wima za ingizo"
ER_WARN_NULL_TO_NOTNULL 22004
chi "列设置为默认值; NULL在行'%s'中提供给了NOT NULL列%lu"
eng "Column set to default value; NULL supplied to NOT NULL column '%s' at row %lu"
@@ -5499,11 +5760,13 @@ ER_WARN_NULL_TO_NOTNULL 22004
jpn "列にデフォルト値が設定されました。NOT NULLの列 '%s' に 行 %lu で NULL が与えられました。"
por "Dado truncado, NULL fornecido para NOT NULL coluna '%s' na linha %lu"
spa "Columna puesta a valor por defecto; NULL suministrado para columna NOT NULL '%s' en la fila %lu"
+ sw "Safu wima imewekwa kwa thamani chaguomsingi; NULL imewekwa kwa safuwima ya NOT NULL '%s' kwenye safu mlalo %lu"
ER_WARN_DATA_OUT_OF_RANGE 22003
chi "列'%s'行%lu的值超出范围"
eng "Out of range value for column '%s' at row %lu"
geo "სვეტის '%s' მწკრვში %lu მნიშვნელობა დიაპაზონს გარეთაა"
spa "Valor fuera de rango para la columna '%s' en la fila %lu"
+ sw "Thamani iliyo nje ya ukubwa ya safu ya safu wima ya '%s' kwenye safu mlalo %lu"
WARN_DATA_TRUNCATED 01000
chi "数据被截断,在列'%s', 行%lu"
eng "Data truncated for column '%s' at row %lu"
@@ -5512,6 +5775,7 @@ WARN_DATA_TRUNCATED 01000
jpn "列 '%s' の 行 %lu でデータが切り捨てられました。"
por "Dado truncado para coluna '%s' na linha %lu"
spa "Datos truncados para la columna '%s' en la fila %lu"
+ sw "Data imekatwa kwa safu wima ya '%s' kwenye safu mlalo %lu"
ER_WARN_USING_OTHER_HANDLER
chi "使用存储引擎%s 表格'%s'"
eng "Using storage engine %s for table '%s'"
@@ -5521,6 +5785,7 @@ ER_WARN_USING_OTHER_HANDLER
jpn "ストレージエンジン %s が表 '%s' に利用されています。"
por "Usando engine de armazenamento %s para tabela '%s'"
spa "Usando motor de almacenaje %s para la tabla '%s'"
+ sw "Kutumia injini ya hifadhi %s kwa jedwali la '%s'"
swe "Använder handler %s för tabell '%s'"
ER_CANT_AGGREGATE_2COLLATIONS
chi "非法混合collations(%s,%s)和(%s,%s),用于操作'%s'"
@@ -5530,12 +5795,14 @@ ER_CANT_AGGREGATE_2COLLATIONS
jpn "照合順序 (%s,%s) と (%s,%s) の混在は操作 '%s' では不正です。"
por "Combinação ilegal de collations (%s,%s) e (%s,%s) para operação '%s'"
spa "Mezcla ilegal de cotejos (collations) (%s,%s) y (%s,%s) para la operación '%s'"
+ sw "Mchanganyiko haramu wa mikusanyiko (%s,%s) na (%s,%s) kwa ajili ya operesheni '%s'"
ER_DROP_USER
chi "无法删除一个或多个请求的用户"
eng "Cannot drop one or more of the requested users"
ger "Kann einen oder mehrere der angegebenen Benutzer nicht löschen"
geo "ერთი ან მეტი მოთხოვნილი მომხმარებელის წაშლის შეცდომა"
spa "No puedo eliminar uno o más de los usuarios solicitados"
+ sw "Haiwezi kuacha mtumiaji mmoja au zaidi walioombwa"
ER_REVOKE_GRANTS
chi "无法为一个或多个请求的用户撤消所有权限"
eng "Can't revoke all privileges for one or more of the requested users"
@@ -5544,6 +5811,7 @@ ER_REVOKE_GRANTS
jpn "指定されたユーザーから指定された全ての権限を剥奪することができませんでした。"
por "Não pode revocar todos os privilégios, grant para um ou mais dos usuários pedidos"
spa "No puedo revocar todos los privilegios para uno o más de los usuarios solicitados"
+ sw "Haiwezi kubatilisha haki zote za mtumiaji mmoja au zaidi aliyeombwa"
ER_CANT_AGGREGATE_3COLLATIONS
chi "非法混合collations(%s,%s),(%s,%s)和(%s,%s),用于操作'%s'"
eng "Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'"
@@ -5552,6 +5820,7 @@ ER_CANT_AGGREGATE_3COLLATIONS
jpn "照合順序 (%s,%s), (%s,%s), (%s,%s) の混在は操作 '%s' では不正です。"
por "Ilegal combinação de collations (%s,%s), (%s,%s), (%s,%s) para operação '%s'"
spa "Mezcla ilegal de cotejos (collations) (%s,%s), (%s,%s), (%s,%s) para la operación '%s'"
+ sw "Mchanganyiko haramu wa mikusanyiko (%s,%s), (%s,%s), (%s,%s) kwa ajili ya operesheni '%s'"
ER_CANT_AGGREGATE_NCOLLATIONS
chi "非法混合collations操作'%s'"
eng "Illegal mix of collations for operation '%s'"
@@ -5560,6 +5829,7 @@ ER_CANT_AGGREGATE_NCOLLATIONS
jpn "操作 '%s' では不正な照合順序の混在です。"
por "Ilegal combinação de collations para operação '%s'"
spa "Mezcla ilegal de cotejos (collations) para la operación '%s'"
+ sw "Mchanganyiko haramu wa mikusanyiko ya operesheni '%s'"
ER_VARIABLE_IS_NOT_STRUCT
chi "变量'%-.64s'不是可变组件(不能用作xxxx.variable_name)"
eng "Variable '%-.64s' is not a variable component (can't be used as XXXX.variable_name)"
@@ -5568,6 +5838,7 @@ ER_VARIABLE_IS_NOT_STRUCT
jpn "変数 '%-.64s' は構造変数の構成要素ではありません。(XXXX.変数名 という指定はできません。)"
por "Variável '%-.64s' não é uma variável componente (Não pode ser usada como XXXX.variável_nome)"
spa "La variable '%-.64s' no es un componente variable (No puede ser usada como XXXX.variable_name)"
+ sw "Kigezo '%-.64s' si kijenzi cha kigezo (hakiwezi kutumika kama XXXX.variable_name)"
ER_UNKNOWN_COLLATION
chi "未知的collation:'%-.64s'"
eng "Unknown collation: '%-.64s'"
@@ -5576,6 +5847,7 @@ ER_UNKNOWN_COLLATION
jpn "不明な照合順序: '%-.64s'"
por "Collation desconhecida: '%-.64s'"
spa "Cotejo (Collation) desconocido: '%-.64s'"
+ sw "Mkusanyiko usiojulikana: '% -.64s'"
ER_SLAVE_IGNORED_SSL_PARAMS
chi "CHANGE MASTER中的SSL参数被忽略,因为此MariaDB从站未在没有SSL支持的情况下编译;如果启动了SSL的MariaDB从站,则可以使用它们"
eng "SSL parameters in CHANGE MASTER are ignored because this MariaDB slave was compiled without SSL support; they can be used later if MariaDB slave with SSL is started"
@@ -5584,6 +5856,7 @@ ER_SLAVE_IGNORED_SSL_PARAMS
jpn "このMariaDBスレーブはSSLサポートを含めてコンパイルされていないので、CHANGE MASTER のSSLパラメータは無視されました。今後SSLサポートを持つMariaDBスレーブを起動する際に利用されます。"
por "SSL parâmetros em CHANGE MASTER são ignorados porque este escravo MariaDB foi compilado sem o SSL suporte. Os mesmos podem ser usados mais tarde quando o escravo MariaDB com SSL seja iniciado."
spa "Los parámetros SSL en CHANGE MASTER son ignorados porque este esclavo MariaDB fue compilado sin soporte SSL; pueden ser usados después cuando el esclavo MariaDB con SSL sea arrancado"
+ sw "Vigezo vya SSL katika CHANGE MASTER vinapuuzwa kwa sababu mtumwa huyu wa MariaDB aliundwa bila usaidizi wa SSL; vinaweza kutumika baadaye ikiwa mtumwa wa MariaDB aliye na SSL ataanzishwa"
ER_SERVER_IS_IN_SECURE_AUTH_MODE
chi "服务器在--secure-auth模式下运行,但'%s'@'%s'具有旧格式的密码;请将密码更改为新格式"
eng "Server is running in --secure-auth mode, but '%s'@'%s' has a password in the old format; please change the password to the new format"
@@ -5593,6 +5866,7 @@ ER_SERVER_IS_IN_SECURE_AUTH_MODE
por "Servidor está rodando em --secure-auth modo, porêm '%s'@'%s' tem senha no formato antigo; por favor troque a senha para o novo formato"
rus "Сервер запущен в режиме --secure-auth (безопасной авторизации), но для пользователя '%s'@'%s' пароль сохранён в старом формате; необходимо обновить формат пароля"
spa "El servidor se está ejecutando en modo --secure-auth, pero '%s'@'%s' tiene una contraseña con formato antiguo; por favor cambie la contraseña al nuevo formato"
+ sw "Seva inafanya kazi katika --secure-auth mode, lakini '%s'@'%s' ina nenosiri katika umbizo la zamani; tafadhali badilisha nenosiri hadi umbizo jipya"
ER_WARN_FIELD_RESOLVED
chi "列或参考'%-.192s%s%-.192s%s%-.192s' 在SELECT #%d 中, 在SELECT #%d中得到解决"
eng "Field or reference '%-.192s%s%-.192s%s%-.192s' of SELECT #%d was resolved in SELECT #%d"
@@ -5602,6 +5876,7 @@ ER_WARN_FIELD_RESOLVED
por "Campo ou referência '%-.192s%s%-.192s%s%-.192s' de SELECT #%d foi resolvido em SELECT #%d"
rus "Поле или ссылка '%-.192s%s%-.192s%s%-.192s' из SELECTа #%d была найдена в SELECTе #%d"
spa "El campo o la referencia '%-.192s%s%-.192s%s%-.192s' de SELECT #%d se resolvió en SELECT #%d"
+ sw "Sehemu au marejeleo '%-.192s%s%-.192s%s%-.192s' ya SELECT #%d ilitatuliwa katika SELECT #%d"
ukr "Стовбець або посилання '%-.192s%s%-.192s%s%-.192s' із SELECTу #%d було знайдене у SELECTі #%d"
ER_BAD_SLAVE_UNTIL_COND
chi "START SLAVE UNTIL的参数或参数的组合不正确"
@@ -5611,6 +5886,7 @@ ER_BAD_SLAVE_UNTIL_COND
jpn "START SLAVE UNTIL へのパラメータまたはその組み合わせが不正です。"
por "Parâmetro ou combinação de parâmetros errado para START SLAVE UNTIL"
spa "Parámetro incorrecto o combinación de parámetros para START SLAVE UNTIL"
+ sw "Kigezo kisicho sahihi au mchanganyiko wa vigezo vya START SLAVE UNTIL"
ER_MISSING_SKIP_SLAVE
chi "START SLAVE UNTIL进行逐步复制时建议使用--skip-slave-start;否则,如果有意外的Slave的mariadbd重启,可能有问题"
eng "It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mariadbd restart"
@@ -5619,6 +5895,7 @@ ER_MISSING_SKIP_SLAVE
jpn "START SLAVE UNTIL で段階的にレプリケーションを行う際には、--skip-slave-start オプションを使うことを推奨します。使わない場合、スレーブのmariadbdが不慮の再起動をすると問題が発生します。"
por "É recomendado para rodar com --skip-slave-start quando fazendo replicação passo-por-passo com START SLAVE UNTIL, de outra forma você não está seguro em caso de inesperada reinicialição do mariadbd escravo"
spa "Se recomienda usar --skip-slave-start al hacer réplica paso a paso con START SLAVE UNTIL; en caso contrario, obtendrá problemas si tiene lugar un rearranque inesperado del esclavo mariadb"
+ sw "Inapendekezwa kutumia --skip-slave-start unapofanya urudufishaji wa hatua kwa hatua na START SLAVE UNTIL; la sivyo, utapata matatizo ikiwa utapata anzilishaji tena ya mariadbd ya mtumwa usiyotarajiwa"
ER_UNTIL_COND_IGNORED
chi "不能启动SQL线程所以UNTIL选项被忽略"
eng "SQL thread is not to be started so UNTIL options are ignored"
@@ -5627,6 +5904,7 @@ ER_UNTIL_COND_IGNORED
jpn "スレーブSQLスレッドが開始されないため、UNTILオプションは無視されました。"
por "Thread SQL não pode ser inicializado tal que opções UNTIL são ignoradas"
spa "Un hilo (thread) SQL no ha de ser arrancado de esa manera HASTA que las opciones sean ignordas"
+ sw "Uzi wa SQL haupaswi kuanzishwa kwa hivyo chaguzi za UNTIL zinapuuzwa"
ER_WRONG_NAME_FOR_INDEX 42000
chi "索引名称'%-.100s'不正确"
eng "Incorrect index name '%-.100s'"
@@ -5635,6 +5913,7 @@ ER_WRONG_NAME_FOR_INDEX 42000
jpn "索引名 '%-.100s' は不正です。"
por "Incorreto nome de índice '%-.100s'"
spa "Nombre de índice incorrecto '%-.100s'"
+ sw "Jina la faharasa si sahihi '% -.100s'"
swe "Felaktigt index namn '%-.100s'"
ER_WRONG_NAME_FOR_CATALOG 42000
chi "目录名称'%-.100s'不正确"
@@ -5644,6 +5923,7 @@ ER_WRONG_NAME_FOR_CATALOG 42000
jpn "カタログ名 '%-.100s' は不正です。"
por "Incorreto nome de catálogo '%-.100s'"
spa "Nombre de catálogo incorrecto '%-.100s'"
+ sw "Jina la katalogi si sahihi '% -.100s'"
swe "Felaktigt katalog namn '%-.100s'"
ER_WARN_QC_RESIZE
chi "设置查询缓存值%llu失败;新查询缓存值为%lu"
@@ -5653,6 +5933,7 @@ ER_WARN_QC_RESIZE
por "Falha em Query cache para configurar tamanho %llu, novo tamanho de query cache é %lu"
rus "Кеш запросов не может установить размер %llu, новый размер кеша зпросов - %lu"
spa "La caché de consulta (query) ha fallado al poner el tamaño %llu; el nuevo tamaño de caché de consulta (query) es %lu"
+ sw " Akiba ya hoja imeshindwa kuweka ukubwa %llu; ukubwa mpya wa akiba ya hoja ni %lu"
swe "Storleken av "Query cache" kunde inte sättas till %llu, ny storlek är %lu"
ukr "Кеш запитів неспроможен встановити розмір %llu, новий розмір кеша запитів - %lu"
ER_BAD_FT_COLUMN
@@ -5663,6 +5944,7 @@ ER_BAD_FT_COLUMN
jpn "列 '%-.192s' は全文索引のキーにはできません。"
por "Coluna '%-.192s' não pode ser parte de índice FULLTEXT"
spa "La columna '%-.192s' no puede format parte de índice FULLTEXT"
+ sw "Safuwima '%-.192s' haiwezi kuwa sehemu ya faharasa ya FULLTEXT"
swe "Kolumn '%-.192s' kan inte vara del av ett FULLTEXT index"
ER_UNKNOWN_KEY_CACHE
chi "未知索引缓存'%-.100s'"
@@ -5672,6 +5954,7 @@ ER_UNKNOWN_KEY_CACHE
jpn "'%-.100s' は不明なキーキャッシュです。"
por "Key cache desconhecida '%-.100s'"
spa "Caché de clave desconocida '%-.100s'"
+ sw "Akiba ya vitufe isiyojulikana '% -.100s'"
swe "Okänd nyckel cache '%-.100s'"
ER_WARN_HOSTNAME_WONT_WORK
chi "MariaDB以-skip-name-resolve模式启动;想用grant,您必须重新启动,不用这个选项"
@@ -5681,6 +5964,7 @@ ER_WARN_HOSTNAME_WONT_WORK
jpn "MariaDBは --skip-name-resolve モードで起動しています。このオプションを外して再起動しなければ、この権限操作は機能しません。"
por "MariaDB foi inicializado em modo --skip-name-resolve. Você necesita reincializá-lo sem esta opção para este grant funcionar"
spa "MariaDB ha sido arrancada en modo --skip-name-resolve; vd necesita reinicializarla sin esta opción para que esta concesión funcione"
+ sw "MariaDB imeanzishwa katika hali ya --skip-name-resolve; lazima uanzishe upya bila swichi hii ili ruzuku hii ifanye kazi"
ER_UNKNOWN_STORAGE_ENGINE 42000
chi "未知的存储引擎'%s'"
eng "Unknown storage engine '%s'"
@@ -5690,6 +5974,7 @@ ER_UNKNOWN_STORAGE_ENGINE 42000
jpn "'%s' は不明なストレージエンジンです。"
por "Motor de tabela desconhecido '%s'"
spa "Motor de almacenaje '%s' desconocido"
+ sw "Injini ya uhifadhi isiyojulikana '%s'"
ER_WARN_DEPRECATED_SYNTAX
chi "弃用'%s',将在将来的版本中删除。请使用%s"
eng "'%s' is deprecated and will be removed in a future release. Please use %s instead"
@@ -5698,6 +5983,7 @@ ER_WARN_DEPRECATED_SYNTAX
jpn "'%s' は将来のリリースで廃止予定です。代わりに %s を使用してください。"
por "'%s' é desatualizado. Use '%s' em seu lugar"
spa "'%s' está obsoleto y será quitado en una entrega futura, use '%s' en su lugar"
+ sw "'%s' imeacha kutumika na itaondolewa katika toleo lijalo. Tafadhali tumia %s badala yake"
ER_NON_UPDATABLE_TABLE
chi "目标表%-.100s多个%s不可更新"
eng "The target table %-.100s of the %s is not updatable"
@@ -5707,6 +5993,7 @@ ER_NON_UPDATABLE_TABLE
por "A tabela destino %-.100s do %s não é atualizável"
rus "Таблица %-.100s в %s не может изменятся"
spa "La tabla destino %-.100s del %s no es actualizable"
+ sw "Jedwali lengwa la %-.100s la %s haliwezi kusasishwa"
swe "Tabell %-.100s använd med '%s' är inte uppdateringsbar"
ukr "Таблиця %-.100s у %s не може оновлюватись"
ER_FEATURE_DISABLED
@@ -5717,6 +6004,7 @@ ER_FEATURE_DISABLED
jpn "機能 '%s' は無効です。利用するためには '%s' を含めてビルドしたMariaDBが必要です。"
por "O recurso '%s' foi desativado; você necessita MariaDB construído com '%s' para ter isto funcionando"
spa "La característica '%s' fue deshabilitada; usted necesita construir MariaDB con '%s' para tener eso funcionando"
+ sw "Kipengele cha '%s' kimezimwa; unahitaji MariaDB iliyojengwa na '%s' ili ifanye kazi"
swe "'%s' är inte aktiverad; För att aktivera detta måste du bygga om MariaDB med '%s' definierad"
ER_OPTION_PREVENTS_STATEMENT
chi "MariaDB服务器使用%s选项运行,因此无法执行此语句"
@@ -5726,6 +6014,7 @@ ER_OPTION_PREVENTS_STATEMENT
jpn "MariaDBサーバーが %s オプションで実行されているので、このステートメントは実行できません。"
por "O servidor MariaDB está rodando com a opção %s razão pela qual não pode executar esse commando"
spa "El servidor MariaDB se está ejecutando con la opción %s por lo que no se puede ejecutar esta sentencia"
+ sw "Seva ya MariaDB inafanya kazi na chaguo la %s kwa hivyo haiwezi kutekeleza taarifa hii"
swe "MariaDB är startad med %s. Pga av detta kan du inte använda detta kommando"
ER_DUPLICATED_VALUE_IN_TYPE
chi "列'%-.100s'有重复的值'%-.64s'在%s"
@@ -5735,6 +6024,7 @@ ER_DUPLICATED_VALUE_IN_TYPE
jpn "列 '%-.100s' で、重複する値 '%-.64s' が %s に指定されています。"
por "Coluna '%-.100s' tem valor duplicado '%-.64s' em %s"
spa "La columna '%-.100s' tiene valor duplicado '%-.64s' en %s"
+ sw "Safuwima '%-.100s' ina thamani iliyorudiwa '% -.64s' katika %s"
ER_TRUNCATED_WRONG_VALUE 22007
chi "截断的不正确%-.32T值:'%-.128T'"
eng "Truncated incorrect %-.32T value: '%-.128T'"
@@ -5743,6 +6033,7 @@ ER_TRUNCATED_WRONG_VALUE 22007
jpn "不正な %-.32T の値が切り捨てられました。: '%-.128T'"
por "Truncado errado %-.32T valor: '%-.128T'"
spa "Truncado incorrecto %-.32T valor: '%-.128T'"
+ sw "Thamani iliyokatwa sio sahihi %-.32T: '%-.128T'"
ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
chi "表定义不正确;默认或ON UPDATE中只能有一个带有CURRENT_TIMESTAMP的TIMESTAMP列"
eng "Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause"
@@ -5751,6 +6042,7 @@ ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
jpn "不正な表定義です。DEFAULT句またはON UPDATE句に CURRENT_TIMESTAMP をともなうTIMESTAMP型の列は1つまでです。"
por "Incorreta definição de tabela; Pode ter somente uma coluna TIMESTAMP com CURRENT_TIMESTAMP em DEFAULT ou ON UPDATE cláusula"
spa "Definición incorrecta de tabla; solamente puede haber una columna TIMESTAMP con CURRENT_TIMESTAMP en DEFAULT o en cláusula ON UPDATE"
+ sw "Ufafanuzi wa jedwali usio sahihi; kunaweza kuwa na safu wima moja tu ya TIMESTAMP na CURRENT_TIMESTAMP katika kifungu cha DEFAULT au ON UPDATE"
ER_INVALID_ON_UPDATE
chi "在'%-.192s'列的ON UPDATE子句上无效"
eng "Invalid ON UPDATE clause for '%-.192s' column"
@@ -5759,12 +6051,14 @@ ER_INVALID_ON_UPDATE
jpn "列 '%-.192s' に ON UPDATE句は無効です。"
por "Inválida cláusula ON UPDATE para campo '%-.192s'"
spa "Cláusula ON UPDATE inválida para la columna '%-.192s'"
+ sw "Kifungu batili cha UPDATE kwa safu wima ya '%-.192s'"
ER_UNSUPPORTED_PS
chi "尚未在prepared statement协议中支持此命令"
eng "This command is not supported in the prepared statement protocol yet"
ger "Dieser Befehl wird im Protokoll für vorbereitete Anweisungen noch nicht unterstützt"
geo "ეს ბრძანება მომზადებული გამოსახულების პროტოკოლშიჯერ მხარდაჭერილი არაა"
spa "Este comando no se encuentra soportado para protocolo de sentencia preparada, aún"
+ sw "Amri hii bado haijulikani katika itifaki ya taarifa iliyoandaliwa"
ER_GET_ERRMSG
chi "出错%d '%-.200s'来自%s"
dan "Modtog fejl %d '%-.200s' fra %s"
@@ -5775,6 +6069,7 @@ ER_GET_ERRMSG
nor "Mottok feil %d '%-.200s' fa %s"
norwegian-ny "Mottok feil %d '%-.200s' fra %s"
spa "Obtenido error %d '%-.200s' desde %s"
+ sw "Nimepata hitilafu %d '%-.200s' kutoka %s"
ER_GET_TEMPORARY_ERRMSG
chi "出临时错误%d '%-.200s'来自%s"
dan "Modtog temporary fejl %d '%-.200s' fra %s"
@@ -5785,42 +6080,49 @@ ER_GET_TEMPORARY_ERRMSG
nor "Mottok temporary feil %d '%-.200s' fra %s"
norwegian-ny "Mottok temporary feil %d '%-.200s' fra %s"
spa "Obtenido error temporal %d '%-.200s' desde %s"
+ sw "Nimepata hitilafu ya muda mfupi %d '%-.200s' kutoka %s"
ER_UNKNOWN_TIME_ZONE
chi "未知或不正确的时区:'%-.64s'"
eng "Unknown or incorrect time zone: '%-.64s'"
ger "Unbekannte oder falsche Zeitzone: '%-.64s'"
geo "უცნობი ან არასწორი დროის სარტყელი: '%-.64s'"
spa "Zona temporal desconocida o incorrecta: '%-.64s'"
+ sw "Saa isiyojulikana au isiyo sahihi: '%-.64s'"
ER_WARN_INVALID_TIMESTAMP
chi "无效TIMESTAMP值:列'%s' 行'%lu'"
eng "Invalid TIMESTAMP value in column '%s' at row %lu"
ger "Ungültiger TIMESTAMP-Wert in Feld '%s', Zeile %lu"
geo "TIMESTAMP-ის არასწორი მნიშვნელობა სვეტში '%s' მწკრივში %lu"
spa "Valor inválido de SELLO TEMPORAL (TIMESTAMP) en la columna '%s' de la fila %lu"
+ sw "Thamani batili ya TIMESTAMP katika safu wima ya '%s' kwenye safu mlalo %lu"
ER_INVALID_CHARACTER_STRING
chi "无效的%s字符串:'%.64T'"
eng "Invalid %s character string: '%.64T'"
ger "Ungültiger %s-Zeichen-String: '%.64T'"
geo "არასწორი %s სტრიქონი: '%.64T'"
spa "Cadena de carácter %s inválida: '%.64T'"
+ sw "Mfuatano wa herufi batili %s: '%.64T'"
ER_WARN_ALLOWED_PACKET_OVERFLOWED
chi "%s()的结果大于max_allowed_packet(%ld) - 截断"
eng "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
ger "Ergebnis von %s() war größer als max_allowed_packet (%ld) Bytes und wurde deshalb gekürzt"
geo "%s()-ის პასუხი max_allowed_packet-ზე (%ld) დიდია - წაკვეთა"
spa "El resultado de %s() ha sido mayor que max_allowed_packet (%ld) - truncado"
+ sw "Matokeo ya %s() yalikuwa makubwa kuliko max_allowed_packet (%ld) - yamepunguzwa"
ER_CONFLICTING_DECLARATIONS
chi "矛盾语句:'%s%s'和'%s%s'"
eng "Conflicting declarations: '%s%s' and '%s%s'"
ger "Widersprüchliche Deklarationen: '%s%s' und '%s%s'"
geo "კონფლიქტური აღწერები: '%s%s' და '%s%s'"
spa "Declaraciones conflictivas: '%s%s' y '%s%s'"
+ sw "Matangazo yanayokinzana: '%s%s' na '%s%s'"
ER_SP_NO_RECURSIVE_CREATE 2F003
chi "无法从另一个存储过程中创建%s"
eng "Can't create a %s from within another stored routine"
ger "Kann kein %s innerhalb einer anderen gespeicherten Routine erzeugen"
geo "%s-ის სხვა დამახსოვრებულ ქვეპროგრამიდან შექმნა შეუძლებელია"
spa "No puedo crear una %s desde dentro de otra rutina almacenada"
+ sw "Haiwezi kuunda %s kutoka ndani ya utaratibu mwingine uliohifadhiwa"
ER_SP_ALREADY_EXISTS 42000
chi "%s%s已经存在"
eng "%s %s already exists"
@@ -5828,6 +6130,7 @@ ER_SP_ALREADY_EXISTS 42000
geo "%s %s უკვე არსებობს"
hindi "%s %s पहले से ही मौजूद है"
spa "%s %s ya existe"
+ sw "%s %s tayari ipo"
ER_SP_DOES_NOT_EXIST 42000
chi "%s%s不存在"
eng "%s %s does not exist"
@@ -5835,6 +6138,7 @@ ER_SP_DOES_NOT_EXIST 42000
geo "%s %s არ არსებობს"
hindi "%s %s मौजूद नहीं है"
spa "%s %s no existe"
+ sw "%s %s haipo"
ER_SP_DROP_FAILED
chi "未能DROP%s%s"
eng "Failed to DROP %s %s"
@@ -5842,6 +6146,7 @@ ER_SP_DROP_FAILED
geo "%s %s-ის DROP შეუძლებელია"
hindi "%s %s को ड्रॉप करने में असफल रहे"
spa "No pude ELIMINAR (DROP) %s %s"
+ sw "Imeshindwa KUDONDOSHA (DROP) %s %s"
ER_SP_STORE_FAILED
chi "无法创建%s%s"
eng "Failed to CREATE %s %s"
@@ -5849,36 +6154,42 @@ ER_SP_STORE_FAILED
geo "%s %s-ის CREATE შეუძლებელია"
hindi "%s %s को बनाने में असफल रहे"
spa "No pude CREAR %s %s"
+ sw "Imeshindwa KUUNDA (CREATE) %s %s"
ER_SP_LILABEL_MISMATCH 42000
chi "%s,没有匹配标签:%s"
eng "%s with no matching label: %s"
ger "%s ohne passende Marke: %s"
geo "%s-ს ჭდე არ ემთხვევა: %s"
spa "%s sin etiqueta coincidente: %s"
+ sw "%s bila lebo inayolingana: %s"
ER_SP_LABEL_REDEFINE 42000
chi "重新定义标签%s"
eng "Redefining label %s"
ger "Neudefinition der Marke %s"
geo "ჭდე %s თავიდ აღიწერა"
spa "Redefiniendo etiqueta %s"
+ sw "Kufafanua upya lebo %s"
ER_SP_LABEL_MISMATCH 42000
chi "没有匹配的最终标签%s"
eng "End-label %s without match"
ger "Ende-Marke %s ohne zugehörigen Anfang"
geo "ბოლო-ჭდე %s დამთხვევის გარეშე"
spa "Etiqueta-Final %s sin coincidencia"
+ sw "End-label (Lebo ya mwisho) %s bila mechi"
ER_SP_UNINIT_VAR 01000
chi "参考未初始化的变量%s"
eng "Referring to uninitialized variable %s"
ger "Zugriff auf nichtinitialisierte Variable %s"
geo "მიმართვა არაინიციალიზებულ ცვლადზე %s"
spa "Refiriéndose a variable %s sin inicializar"
+ sw "Inarejelea kigezo ambao haujaanzishwa %s"
ER_SP_BADSELECT 0A000
chi "PROCEDURE%s不能返回给定上下文中的结果集"
eng "PROCEDURE %s can't return a result set in the given context"
ger "PROCEDURE %s kann im gegebenen Kontext keine Ergebnismenge zurückgeben"
geo "PROCEDURE %s-ს მითითებულ კონტექსტში პასუხის დაბრუნება არ შეუძლია"
spa "El PROCEDIMIENTO (PROCEDURE) %s no puede devolver un conjunto de resultados en el contexto dado"
+ sw "PROCEDURE %s haiwezi kurejesha matokeo yaliyowekwa katika muktadha uliotolewa"
ER_SP_BADRETURN 42000
chi "RETURN仅允许在函数中"
eng "RETURN is only allowed in a FUNCTION"
@@ -5886,6 +6197,7 @@ ER_SP_BADRETURN 42000
geo "RETURN მხოლოდ FUNCTION-შია დაშვებული"
hindi "RETURN को केवल FUNCTION में इस्तेमाल किया जा सकता है"
spa "RETURN sólo se permite dentro de una FUNCIÓN"
+ sw "RETURN inaruhusiwa tu katika FUNCTION"
ER_SP_BADSTATEMENT 0A000
chi "%s不允许在存储过程中"
eng "%s is not allowed in stored procedures"
@@ -5893,36 +6205,42 @@ ER_SP_BADSTATEMENT 0A000
geo "%s დამახსოვრებულ პროცედურებში დაშვებული არაა"
hindi "%s को STORED PROCEDURE में इस्तेमाल नहीं किया जा सकता है"
spa "%s no permitido en procedimientos almacenados"
+ sw "%s hairuhusiwi katika taratibu zilizohifadhiwa"
ER_UPDATE_LOG_DEPRECATED_IGNORED 42000
chi "更新日志被弃用并由二进制日志替换;SET SQL_LOG_UPDATE已被忽略。此选项将在MariaDB 5.6中删除"
eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MariaDB 5.6"
ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wird ignoriert. Diese Option wird in MariaDB 5.6 entfernt"
geo "Update-Log მოძველებულია და ხდება მისი ჩანაცვლება Binary-Log-ით. SET SQL LOG UPDATE იგნორირებულია. ეს პარამეტრი წაიშლება MariaDB-ის ვერსიაში 5.6"
spa "El historial (log) de actualización se encuentra obsoleto y reemplazado por el historial (log) binario; SET SQL_LOG_UPDATE ha sido ignorado. Esta opción será quitada en MariaDB 5.6"
+ sw "Rajisi ya sasisho imeacha kutumika na nafasi yake kuchukuliwa na logi ya jozi; SET SQL_LOG_UPDATE imepuuzwa. Chaguo hili litaondolewa katika MariaDB 5.6"
ER_UPDATE_LOG_DEPRECATED_TRANSLATED 42000
chi "更新日志被弃用并由二进制日志替换;SET SQL_LOG_UPDATE已被转换为设置SQL_LOG_BIN。此选项将在MariaDB 5.6中删除"
eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been translated to SET SQL_LOG_BIN. This option will be removed in MariaDB 5.6"
ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wurde in SET SQL_LOG_BIN übersetzt. Diese Option wird in MariaDB 5.6 entfernt"
geo "Update-Log მოძველებულია და ხდება მისი ჩანაცვლება Binary-Log-ით. SET SQL_LOG_UPGRATE გარდაიქმნა SET SQL_LOG_BIN პარამეტრად. ეს პარამეტრი წაიშლება MariaDB-ის ვერსიაში 5.6"
spa "El historial (log) de actualización se encuentra obsoleto y reemplazado por el historial binario; SET SQL_LOG_UPDATE ha sido traducido a SET SQL_LOG_BIN. Esta opción será quitada en MariaDB 5.6"
+ sw "Kumbukumbu ya sasisho imeacha kutumika na nafasi yake kuchukuliwa na logi ya jozi; SET SQL_LOG_UPDATE imetafsiriwa hadi SET SQL_LOG_BIN. Chaguo hili litaondolewa katika MariaDB 5.6"
ER_QUERY_INTERRUPTED 70100
chi "查询执行中断"
eng "Query execution was interrupted"
ger "Ausführung der Abfrage wurde unterbrochen"
geo "მოთხოვნის შესრულება შეწყვეტილია"
spa "Se ha interrumpido la ejecución de la consulta (query)"
+ sw "Utekelezaji wa hoja ulikatizwa"
ER_SP_WRONG_NO_OF_ARGS 42000
chi "%s%s的参数数量不正确;预期%u,得到%u"
eng "Incorrect number of arguments for %s %s; expected %u, got %u"
ger "Falsche Anzahl von Argumenten für %s %s; erwarte %u, erhalte %u"
geo "%s %s-ის არგუმენტების არასწორი რაოდენობა. მოველოდი %u-ს, მივიღე %u"
spa "Número incorrecto de argumentos para %s %s; se esperaba %u, se obtuvo %u"
+ sw "Idadi isiyo sahihi ya hoja za %s %s; inayotarajiwa %u, imepata %u"
ER_SP_COND_MISMATCH 42000
chi "未定义的CONDITION:%s"
eng "Undefined CONDITION: %s"
ger "Undefinierte CONDITION: %s"
geo "განუსაზღვრელი CONDITION: %s"
spa "CONDICIÓN no definida: %s"
+ sw "CONDITION Isiyobainishwa: %s"
ER_SP_NORETURN 42000
chi "FUNCTION%s中没有RETURN"
eng "No RETURN found in FUNCTION %s"
@@ -5930,6 +6248,7 @@ ER_SP_NORETURN 42000
geo "ფუნქციაში %s RETURN ვერ ვიპოვე"
hindi "FUNCTION %s में कोई RETURN है"
spa "No se hallado RETURN en FUNCIÓN %s"
+ sw "Hakuna RETURN iliyopatikana katika FUNCTION %s"
ER_SP_NORETURNEND 2F005
chi "FUNCTION%s结束但无RETURN"
eng "FUNCTION %s ended without RETURN"
@@ -5937,18 +6256,21 @@ ER_SP_NORETURNEND 2F005
geo "FUNCTION %s დასრულდა RETURN-ის გარეშე"
hindi "FUNCTION %s RETURN के बिना समाप्त हो गया"
spa "La FUNCIÓN %s termina sin RETURN"
+ sw "FUNCTION %s iliisha bila RETURN"
ER_SP_BAD_CURSOR_QUERY 42000
chi "Cursor语句必须是选择"
eng "Cursor statement must be a SELECT"
ger "Cursor-Anweisung muss ein SELECT sein"
geo "კურსორის გამოსახულება SELECT-ს უნდა წარმოადგენდეს"
spa "La sentencia de cursor debe de ser un SELECT"
+ sw "Taarifa ya kielekezi lazima iwe SELECT"
ER_SP_BAD_CURSOR_SELECT 42000
chi "Cursor SELECT不能有INTO"
eng "Cursor SELECT must not have INTO"
ger "Cursor-SELECT darf kein INTO haben"
geo "Cursor-Select-ი არ შეიძლება, INTO-ს შეიცავდეს"
spa "El SELECT de cursor no debe de tener INTO"
+ sw "Taarifa ya kielekezi SELECT lazima isiwe na INTO"
ER_SP_CURSOR_MISMATCH 42000
chi "未定义的CURSOR:%s"
eng "Undefined CURSOR: %s"
@@ -5956,6 +6278,7 @@ ER_SP_CURSOR_MISMATCH 42000
geo "აღუწერელი CURSOR: %s"
hindi "CURSOR %s अपरिभाषित है"
spa "CURSOR indefinido: %s"
+ sw "Kielekezi Usiofafanuliwa: %s"
ER_SP_CURSOR_ALREADY_OPEN 24000
chi "Cursor已经打开"
eng "Cursor is already open"
@@ -5963,54 +6286,63 @@ ER_SP_CURSOR_ALREADY_OPEN 24000
geo "CURSOR-ი უკვე ღიაა"
hindi "CURSOR पहले से ही खुला है"
spa "Cursor ya abierto"
+ sw "Kielekezi tayari umefunguliwa"
ER_SP_CURSOR_NOT_OPEN 24000
chi "Cursor未打开"
eng "Cursor is not open"
ger "Cursor ist nicht geöffnet"
geo "Cursor-ი ღია არაა"
spa "Cursor no abierto"
+ sw "Kielekezi haujafunguliwa"
ER_SP_UNDECLARED_VAR 42000
chi "未定义的变量:%s"
eng "Undeclared variable: %s"
ger "Nicht deklarierte Variable: %s"
geo "ცვლადი აღწერილი არაა: %s"
spa "Variable sin declarar: %s"
+ sw "Kigezo ambacho hakijatangazwa: %s"
ER_SP_WRONG_NO_OF_FETCH_ARGS
chi "FETCH变量数不正确"
eng "Incorrect number of FETCH variables"
ger "Falsche Anzahl von FETCH-Variablen"
geo "FETCH-ის ცვლადების არასწორი რაოდენობა"
spa "Incorrecto número de variables FETCH"
+ sw "Nambari isiyo sahihi ya vigezo vya FETCH"
ER_SP_FETCH_NO_DATA 02000
chi "没有数据 - 零行被选择或处理"
eng "No data - zero rows fetched, selected, or processed"
ger "Keine Daten - null Zeilen geholt (fetch), ausgewählt oder verarbeitet"
geo "მონაცემების გარეშე - მიღებულია, არჩეულია ან დამუშავებულია 0 ჩანაწერი"
spa "No hay datos - cero filas logradas, seleccionadas o procesadas"
+ sw "Hakuna data - safu mlalo sifuri zilizochukuliwa, zilizochaguliwa, au kuchakatwa"
ER_SP_DUP_PARAM 42000
chi "重复参数:%s"
eng "Duplicate parameter: %s"
ger "Doppelter Parameter: %s"
geo "დუბლირებული პარამეტრი: %s"
spa "Parámetro duplicado: %s"
+ sw "Kigezo rudufu: %s"
ER_SP_DUP_VAR 42000
chi "重复变量:%s"
eng "Duplicate variable: %s"
ger "Doppelte Variable: %s"
geo "დუბლირებული ცვლადი: %s"
spa "Variable duplicada: %s"
+ sw "Tofauti rudufu: %s"
ER_SP_DUP_COND 42000
chi "重复条件:%s"
eng "Duplicate condition: %s"
ger "Doppelte Bedingung: %s"
geo "დუბლირებული პირობა: %s"
spa "Condición duplicada: %s"
+ sw "Hali rudufu: %s"
ER_SP_DUP_CURS 42000
chi "重复Cursor:%s"
eng "Duplicate cursor: %s"
ger "Doppelter Cursor: %s"
geo "დუბლირებული კურსორი: %s"
spa "Cursor duplicado: %s"
+ sw "Kielekezi rudufu: %s"
ER_SP_CANT_ALTER
chi "未能ALTER %s%s"
eng "Failed to ALTER %s %s"
@@ -6018,36 +6350,42 @@ ER_SP_CANT_ALTER
geo "%s %s-ის ALTER-ის შეცდომა"
hindi "%s %s को ALTER करने में असफल रहे"
spa "Fallo en ALTER %s %s"
+ sw "Imeshindwa kufanya ALTER %s %s"
ER_SP_SUBSELECT_NYI 0A000
chi "不支持子查询值"
eng "Subquery value not supported"
ger "Subquery-Wert wird nicht unterstützt"
geo "ქვემოთხოვნის მნიშვნელობა მხარდაუჭერელია"
spa "Valor de Subconsulta (subquery) no soportado"
+ sw "Thamani ya uwasilishaji haitumiki"
ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG 0A000
chi "在存储的函数或触发中不允许%s"
eng "%s is not allowed in stored function or trigger"
ger "%s ist in gespeicherten Funktionen und in Triggern nicht erlaubt"
geo "%s დამახსოვრებულ ფუნქციაში და ტრიგერში დაშვებული არაა"
spa "%s no permitido en función almacenada o en disparador"
+ sw "%s hairuhusiwi katika kitendakazi kilichohifadhiwa au kichochezi"
ER_SP_VARCOND_AFTER_CURSHNDLR 42000
chi "变量或条件声明在cursor或处理程序定义之后"
eng "Variable or condition declaration after cursor or handler declaration"
ger "Deklaration einer Variablen oder einer Bedingung nach der Deklaration eines Cursors oder eines Handlers"
geo "ცვლადის ან პირობის აღწერა კურსორის ან დამმუშავებლის აღწერის შემდეგ"
spa "Declaración de variable o condición tras declaración de cursor o manejador"
+ sw "Kigezo au tamko la masharti baada ya tamko la mshale au kidhibiti"
ER_SP_CURSOR_AFTER_HANDLER 42000
chi "处理程序声明后的cursor声明"
eng "Cursor declaration after handler declaration"
ger "Deklaration eines Cursors nach der Deklaration eines Handlers"
geo "კურსორის აღწერა დამმუშავებლის აღწერის შემდეგ"
spa "Declaración de cursor tras declaración de manejador"
+ sw "Tamko la kielekezi baada ya tamko la kidhibiti"
ER_SP_CASE_NOT_FOUND 20000
chi "未能在CASE语句找到Case"
eng "Case not found for CASE statement"
ger "Fall für CASE-Anweisung nicht gefunden"
geo "CASE გამოსახულებისთვის პირობა ვერ ვიპოვე"
spa "Caso no hallado para sentencia CASE"
+ sw "Kesi haijapatikana kwa taarifa ya CASE"
ER_FPARSER_TOO_BIG_FILE
chi "配置文件'%-.192s'太大了"
eng "Configuration file '%-.192s' is too big"
@@ -6055,6 +6393,7 @@ ER_FPARSER_TOO_BIG_FILE
geo "კონფიგურაციის ფაილი '%-.192s' ძალიან დიდია"
rus "Слишком большой конфигурационный файл '%-.192s'"
spa "El fichero/archivo de configuración '%-.192s' es demasiado grande"
+ sw "Faili ya usanidi '% -.192s' ni kubwa sana"
ukr "Занадто великий конфігураційний файл '%-.192s'"
ER_FPARSER_BAD_HEADER
chi "文件'%-.192s'中的文件类型格式有问题"
@@ -6063,6 +6402,7 @@ ER_FPARSER_BAD_HEADER
geo "ფაილის ტიპის არასწორი თავსართი ფაილში '%-.192s'"
rus "Неверный заголовок типа файла '%-.192s'"
spa "Cabecera de tipo de fichero/archivo malformada en fichero/archivo '%-.192s'"
+ sw "Kijajuu cha aina ya faili kilichoharibika katika faili '% -.192s'"
ukr "Невірний заголовок типу у файлі '%-.192s'"
ER_FPARSER_EOF_IN_COMMENT
chi "解析评论'%-.200s'时意外碰到EOF"
@@ -6071,6 +6411,7 @@ ER_FPARSER_EOF_IN_COMMENT
geo "ფაილის მოულოდნელი დასასრული კომენტარის დამუშავებისას '%-.200s'"
rus "Неожиданный конец файла в коментарии '%-.200s'"
spa "Inesperado fin de fichero/archivo mientras se analizaba comentario '%-.200s'"
+ sw "Mwisho usiotarajiwa wa faili wakati wa kuchanganua maoni '%-.200s'"
ukr "Несподіванний кінець файлу у коментарі '%-.200s'"
ER_FPARSER_ERROR_IN_PARAMETER
chi "解析参数'%-.192s'时出错(行:'%-.192s')"
@@ -6079,6 +6420,7 @@ ER_FPARSER_ERROR_IN_PARAMETER
geo "შეცდომა პარამეტრის ('%-.192s') დამუშავებისას (ხაზი: '%-.192s')"
rus "Ошибка при распознавании параметра '%-.192s' (строка: '%-.192s')"
spa "Error mientras se analizaba parámetro '%-.192s' (línea: '%-.192s')"
+ sw "Hitilafu wakati wa kuchanganua kigezo '%-.192s' (mstari: '%-.192s')"
ukr "Помилка в роспізнаванні параметру '%-.192s' (рядок: '%-.192s')"
ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER
chi "跳过未知参数'%-.192s'时意外碰到EOF"
@@ -6087,6 +6429,7 @@ ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER
geo "ფაილის მოულოდნელი დასასრული უცნობი პარამეტრის (%-.192s') დამუშავებისას"
rus "Неожиданный конец файла при пропуске неизвестного параметра '%-.192s'"
spa "Inesperado fin de fichero/archivo mientras se saltaba parámetro desconocido '%-.192s'"
+ sw "Mwisho usiotarajiwa wa faili huku ukiruka kigezo kisichojulikana '% -.192s'"
ukr "Несподіванний кінець файлу у спробі проминути невідомий параметр '%-.192s'"
ER_VIEW_NO_EXPLAIN
chi "ANALYZE/EXPLAIN/SHOW无法进行;缺乏底层表的特权"
@@ -6095,6 +6438,7 @@ ER_VIEW_NO_EXPLAIN
geo "ANALYZE/EXPLAIN/SHOW-ის გაშვება შეუძლებელია. მოთხოვნილ ცხრილზე საკმარისი წვდომები არ გაგაჩნიათ"
rus "ANALYZE/EXPLAIN/SHOW не может быть выполнено; недостаточно прав на таблицы запроса"
spa "ANALYZE/EXPLAIN/SHOW no puede ser emitdo; privilegios insuficientes para tabla subyacente"
+ sw "ANALYZE/EXPLAIN/SHOW haiwezi kufanyika; kukosa marupurupu ya jedwali la msingi"
ukr "ANALYZE/EXPLAIN/SHOW не може бути виконано; немає прав на таблиці запиту"
ER_FRM_UNKNOWN_TYPE
chi "文件'%-.192s'在其标题中有未知的'%-.64s'"
@@ -6103,6 +6447,7 @@ ER_FRM_UNKNOWN_TYPE
geo "ფაილის '%-.192s' უცნობი ტიპი '%-.64s' მის თავსართში"
rus "Файл '%-.192s' содержит неизвестный тип '%-.64s' в заголовке"
spa "El fichero/archivo '%-.192s' es de un tipo desconocido '%-.64s' en su cabecera"
+ sw "Faili '%-.192s' ina aina isiyojulikana ya '%-.64s' kwenye kichwa chake"
ukr "Файл '%-.192s' має невідомий тип '%-.64s' у заголовку"
ER_WRONG_OBJECT
chi "'%-.192s.%-.192s'不是'%s'类"
@@ -6111,6 +6456,7 @@ ER_WRONG_OBJECT
geo "'%-.192s.%-.192s'-ი '%s'-ის ტიპს არ წარმოადგენს"
rus "'%-.192s.%-.192s' - не %s"
spa "'%-.192s.%-.192s' no es del tipo '%s'"
+ sw "'%-.192s.%-.192s' si ya aina ya '%s'"
ukr "'%-.192s.%-.192s' не є %s"
ER_NONUPDATEABLE_COLUMN
chi "列'%-.192s'不可更新"
@@ -6119,6 +6465,7 @@ ER_NONUPDATEABLE_COLUMN
geo "სვეტი '%-.192s' განახლებადი არაა"
rus "Столбец '%-.192s' не обновляемый"
spa "La columna '%-.192s' no es actualiable"
+ sw "Safuwima '%-.192s' haiwezi kusasishwa"
ukr "Стовбець '%-.192s' не може бути зминений"
ER_VIEW_SELECT_DERIVED
chi "View的Select的FROM包含子查询"
@@ -6127,6 +6474,7 @@ ER_VIEW_SELECT_DERIVED
geo "View-ის SELECT-ი FROM პირობაში ქვემოთხოვნას შეიცავს"
rus "View SELECT содержит подзапрос в конструкции FROM"
spa "El SELECT de la vista contiene una subconsulta (subquery) en la cláusula FROM"
+ sw "SELECT cha tazama kina hoja ndogo katika kifungu cha FROM"
ukr "View SELECT має підзапит у конструкції FROM"
# Not used any more, syntax error is returned instead
@@ -6137,6 +6485,7 @@ ER_VIEW_SELECT_CLAUSE
geo "View-ის SELECT შეიცავს პირობას '%s'"
rus "View SELECT содержит конструкцию '%s'"
spa "El SELECT de la vista contiene una cláusula '%s'"
+ sw "SELECT cha tazama kina kifungu cha '%s'"
ukr "View SELECT має конструкцію '%s'"
ER_VIEW_SELECT_VARIABLE
chi "View的选择包含变量或参数"
@@ -6145,6 +6494,7 @@ ER_VIEW_SELECT_VARIABLE
geo "View-ის SELECT-ი ცვლადს ან პარამეტრს შეიცავს"
rus "View SELECT содержит переменную или параметр"
spa "El SELECT de la vista contiene una variable o un parámetro"
+ sw "SELECT cha tazama kina kigezo (variable) au kigezo (parameter)"
ukr "View SELECT має зминну або параметер"
ER_VIEW_SELECT_TMPTABLE
chi "View的SELECT指的是临时表'%-.192s'"
@@ -6153,6 +6503,7 @@ ER_VIEW_SELECT_TMPTABLE
geo "View-ის SELECT-ი დროებით ცხრილზე '%-.192s' მიმართვას შეიცავს"
rus "View SELECT содержит ссылку на временную таблицу '%-.192s'"
spa "El SELECT de la vista se refiere a una tabla temporal '%-.192s'"
+ sw "SELECT cha tazama kinarejelea jedwali la muda '%-.192s'"
ukr "View SELECT використовує тимчасову таблицю '%-.192s'"
ER_VIEW_WRONG_LIST
chi "View的选择和VIEW的字段列表具有不同的列计数"
@@ -6161,6 +6512,7 @@ ER_VIEW_WRONG_LIST
geo "View-ის SELECT-ი და View-ის ველების სია განსხვავებულ სვეტების რაოდენობას შეიცავენ"
rus "View SELECT и список полей view имеют разное количество столбцов"
spa "El SELECT de la vista y la lista de campos de la vista tienen un contador diferente de columnas"
+ sw "SELECT cha tazama na orodha ya sehemu ya tazama ina hesabu tofauti za safu"
ukr "View SELECT і перелік стовбців view мають різну кількість сковбців"
ER_WARN_VIEW_MERGE
chi "View合并算法目前不能使用(假设未定义的算法)"
@@ -6169,6 +6521,7 @@ ER_WARN_VIEW_MERGE
geo "View-ის შერწყმის ალგორითმს ახლა ვერ გამოიყენებთ (ალგორითმი აღუწერელი იქნება)"
rus "Алгоритм слияния view не может быть использован сейчас (алгоритм будет неопеределенным)"
spa "El algoritmo de fusión de la vista no se puede usar aquí por ahora (se asume algoritmo indefinido)"
+ sw "Algorithm ya tazama ya kuunganisha haiwezi kutumika hapa kwa sasa (inadhaniwa kuwa algorithm isiyofafanuliwa)"
ukr "Алгоритм зливання view не може бути використаний зараз (алгоритм буде невизначений)"
ER_WARN_VIEW_WITHOUT_KEY
chi "更新的视图没有底层表的完整键"
@@ -6177,24 +6530,28 @@ ER_WARN_VIEW_WITHOUT_KEY
geo "განახლებადი View მასში გამოყენებული ცხრილის სრულ გასაღებს არ შეიცავს"
rus "Обновляемый view не содержит ключа использованных(ой) в нем таблиц(ы)"
spa "La vista que se está actualizando no tiene clave completa de la tabla subyacente que contiene"
+ sw "Tazama inayosasishwa haina ufunguo kamili wa jedwali la msingi ndani yake"
ukr "View, що оновлюеться, не містить повного ключа таблиці(ь), що викорістана в ньюому"
ER_VIEW_INVALID
chi "View'%-.192s.%-.192s'引用无效的表、列、函数、或者函数或View缺乏使用权"
eng "View '%-.192s.%-.192s' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them"
geo "View '%-.192s.%-.192s' მიმართავს არასწორ ცხრილებს ან სვეტებს ან ფუნქციებს ან View-ის აღმწერს/ჩამწოდებელს მისი გამოყენების უფლებები არ გააჩნია"
spa "La vista '%-.192s.%-.192s' hace referencia a tabla(s) o columna(s) o función(es) inválida(s) o al definidor/invocador de vista le faltan derechos para usarlos"
+ sw "Tazama '%-.192s.%-.192s' inarejelea jedwali au safu wima au vitendakazi zisizo sahihi au kibainisha/mchochezi wa tazama hawana haki ya kuzitumia"
ER_SP_NO_DROP_SP
chi "无法从另一个存储的例程中删除或更改%s"
eng "Can't drop or alter a %s from within another stored routine"
ger "Kann eine %s nicht von innerhalb einer anderen gespeicherten Routine löschen oder ändern"
geo "%s-ის წაშლა ან შეცვლა სხვა დამახსოვრებული ქვეპროგრამიდან შეუძლებელია"
spa "No puedo eliminar o alterar una %s desde dentro de otra rutina almacenada"
+ sw "Haiwezi kuangusha au kubadilisha %s kutoka ndani ya utaratibu mwingine uliohifadhiwa"
ER_SP_GOTO_IN_HNDLR
chi "在存储过程处理程序中不允许GOTO"
eng "GOTO is not allowed in a stored procedure handler"
ger "GOTO ist im Handler einer gespeicherten Prozedur nicht erlaubt"
geo "GOTO დამახსოვრებული პროცედურის დამმუშავებელში დაუშვებელია"
spa "GOTO no permitido en manejador de procedimiento almacenado"
+ sw "GOTO hairuhusiwi katika kidhibiti cha utaratibu kilichohifadhiwa"
ER_TRG_ALREADY_EXISTS
chi "触发'%s'已经存在"
eng "Trigger '%s' already exists"
@@ -6202,6 +6559,7 @@ ER_TRG_ALREADY_EXISTS
geo "ტრიგერი '%s' უკვე არსებობს"
hindi "TRIGGER '%s' पहले से मौजूद है"
spa "Ya existe el disparador `%s`"
+ sw "Kichochezi '%s' tayari ipo"
ER_TRG_DOES_NOT_EXIST
chi "触发不存在"
eng "Trigger does not exist"
@@ -6209,6 +6567,7 @@ ER_TRG_DOES_NOT_EXIST
geo "ტრიგერი არ არსებობს"
hindi "TRIGGER मौजूद नहीं है"
spa "El disparador no existe"
+ sw "Kichochezi haipo"
ER_TRG_ON_VIEW_OR_TEMP_TABLE
chi "触发器的'%-.192s'是视图或临时表"
eng "Trigger's '%-.192s' is a view, temporary table or sequence"
@@ -6216,24 +6575,28 @@ ER_TRG_ON_VIEW_OR_TEMP_TABLE
geo "ტრიგერის '%-.192s' View-ს, დროებით ცხრილს ან მიმდევრობას წარმოადგენს"
spa "El disparador '%-.192s' es una vista, tabla temporal o secuencia"
hindi "Trigger का '%-.192s' एक व्यू, टेम्पररी टेबल या सीक्वेंस है"
+ sw "Kichochezi '%-.192s' ni tazama, jedwali la muda au mfuatano"
ER_TRG_CANT_CHANGE_ROW
chi "更新%s行在%s触发器中不允许"
eng "Updating of %s row is not allowed in %strigger"
ger "Aktualisieren einer %s-Zeile ist in einem %s-Trigger nicht erlaubt"
geo "%s მწკრივის განახლება %s ტრიგერში შეუძლებელია"
spa "Actualizar la fila %s no está permitido en disparador %s"
+ sw "Kusasisha safu mlalo %s hairuhusiwi katika kichochezi %s"
ER_TRG_NO_SUCH_ROW_IN_TRG
chi "没有%s行,触发%s"
eng "There is no %s row in %s trigger"
ger "Es gibt keine %s-Zeile im %s-Trigger"
geo "%s მწრივი %s ტრიგერში არ არსებობს"
spa "No hay fila %s en disparador %s"
+ sw "Hakuna safu mlalo %s katika kichochezi cha %s"
ER_NO_DEFAULT_FOR_FIELD
chi "字段'%-.192s'没有默认值"
eng "Field '%-.192s' doesn't have a default value"
ger "Feld '%-.192s' hat keinen Vorgabewert"
geo "ველს '%-.192s' ნაგულისხმები მნიშვნელობა არ გააჩნია"
spa "El campo '%-.192s' no tiene un valor por defecto"
+ sw "Sehemu '%-.192s' haina thamani chaguo-msingi"
ER_DIVISION_BY_ZERO 22012
chi "除0错误"
eng "Division by 0"
@@ -6241,18 +6604,21 @@ ER_DIVISION_BY_ZERO 22012
geo "ნულზე გაყოფა"
hindi "0 से विभाजन"
spa "División por 0"
+ sw "Mgawanyiko kwa 0"
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD 22007
chi "不正确的%-.32s值:'%-.128T'用于列`%.192s`%.192s`%.192s`在%lu行"
eng "Incorrect %-.32s value: '%-.128T' for column `%.192s`.`%.192s`.`%.192s` at row %lu"
ger "Falscher %-.32s-Wert: '%-.128T' für Feld '`%.192s`.`%.192s`.`%.192s` in Zeile %lu"
geo "%-.32s-ის არასწორი მნიშვნელობა '%-.128T' სვეტისთვის `%.192s`.`%.192s`.`%.192s` მწკრივთან %lu"
spa "Incorrecto %-.32s valor: '%-.128T' para columna `%.192s`.`%.192s`.`%.192s` en la fila %lu"
+ sw "Thamani ya %-.32 si sahihi: '%-.128T' kwa safu wima `%.192s`.`%.192s`.`%.192s` kwenye safu mlalo %lu"
ER_ILLEGAL_VALUE_FOR_TYPE 22007
chi "在解析期间发现的非法%s '%-.192T'值"
eng "Illegal %s '%-.192T' value found during parsing"
ger "Nicht zulässiger %s-Wert '%-.192T' beim Parsen gefunden"
geo "დამუშავებისას აღმოჩენილია %s '%-.192T'-ის დაუშვებელი მნიშვნელობა"
spa "Hallado valor ilegal %s '%-.192T' durante el análisi"
+ sw "Thamani ya %s '%-.192T' isiyo halali imepatikana wakati wa uchanganuzi"
ER_VIEW_NONUPD_CHECK
chi "在不可更新的视图%`-.192s.%`-.192s上CHECK OPTION"
eng "CHECK OPTION on non-updatable view %`-.192s.%`-.192s"
@@ -6260,6 +6626,7 @@ ER_VIEW_NONUPD_CHECK
geo "CHECK OPTION განუახლებელი VIEW-სთვის %`-.192s.%`-.192s"
rus "CHECK OPTION для необновляемого VIEW %`-.192s.%`-.192s"
spa "CHECK OPTION en vista no actualizable %`-.192s.%`-.192s"
+ sw "CHECK OPTION kwenye mwonekano usiosasishwa %`-.192s.%`-.192s"
ukr "CHECK OPTION для VIEW %`-.192s.%`-.192s що не може бути оновленним"
ER_VIEW_CHECK_FAILED 44000
chi "CHECK OPTION失败%`-.192s.%`-.192s"
@@ -6268,6 +6635,7 @@ ER_VIEW_CHECK_FAILED 44000
geo "CHECK OPTION-ის შეცდომა %`-.192s.%`-.192s"
rus "Проверка CHECK OPTION для VIEW %`-.192s.%`-.192s провалилась"
spa "CHECK OPTION falló %`-.192s.%`-.192s"
+ sw "CHECK OPTION halikufaulu %`-.192s.%`-.192s"
ukr "Перевірка CHECK OPTION для VIEW %`-.192s.%`-.192s не пройшла"
ER_PROCACCESS_DENIED_ERROR 42000
chi "%-.32s命令被拒绝。用户为'%s'@'%s' 例程'%-.192s'"
@@ -6275,36 +6643,42 @@ ER_PROCACCESS_DENIED_ERROR 42000
ger "Befehl %-.32s nicht zulässig für Benutzer '%s'@'%s' in Routine '%-.192s'"
geo "%-.32s ბრძანება აკრძალულია მომხმარებლისთვის '%s'@'%s' ქვეპროგრამისთვის '%-.192s'"
spa "Comando %-.32s denegado para el usuario '%s'@'%s' para rutina '%-.192s'"
+ sw "%-.32s amri imekataliwa kwa mtumiaji '%s'@'%s' kwa utaratibu wa '%-.192s'"
ER_RELAY_LOG_FAIL
chi "清除旧继relay日志失败:%s"
eng "Failed purging old relay logs: %s"
ger "Bereinigen alter Relais-Logs fehlgeschlagen: %s"
geo "ძველი Relay-Log-ის წაშლის შეცდომა: %s"
spa "Falló la purga de viejos historiales (logs) de reenvío: %s"
+ sw "Imeshindwa kusafisha kumbukumbu za zamani za relay: %s"
ER_PASSWD_LENGTH
chi "密码哈希应该是一个%d-digit十六进制数"
eng "Password hash should be a %d-digit hexadecimal number"
ger "Passwort-Hash sollte eine Hexdaezimalzahl mit %d Stellen sein"
geo "პაროლი %d-ციფრიან თექვსმეტობით რიცხვს უნდა წარმოადგენდეს"
spa "El valor calculado de la contraseña debería de ser un número hexadecimal de %d-dígitos"
+ sw "Nenosiri heshi inapaswa kuwa nambari ya heksadesimali yenye tarakimu %d"
ER_UNKNOWN_TARGET_BINLOG
chi "在Binlog索引中找不到目标日志"
eng "Target log not found in binlog index"
ger "Ziel-Log im Binlog-Index nicht gefunden"
geo "სამიზნე ჟურნალი binlog-ის ინდექსში აღმოჩენილი არაა"
spa "Historial (log) de destino no hallado en índice binlog"
+ sw "logi inayolengwa haipatikani katika faharasa ya binlog"
ER_IO_ERR_LOG_INDEX_READ
chi "读取日志索引文件时I/O错误"
eng "I/O error reading log index file"
ger "Fehler beim Lesen der Log-Index-Datei"
geo "შეტ/გამოტ შეცდომა ჟურნალის ინდექსის ფაილის კითხვისას"
spa "Error de E/S leyendo fichero/archivo índice de historial (log)"
+ sw "I/O kosa la kusoma faili ya logi"
ER_BINLOG_PURGE_PROHIBITED
chi "服务器配置不允许Binlog清除"
eng "Server configuration does not permit binlog purge"
ger "Server-Konfiguration erlaubt keine Binlog-Bereinigung"
geo "სერვერის კონფიგურაცია Binlog ჟურნალის წაშლის უფლებას არ იძლევა"
spa "La configuración del servidor no permite purgar binlog"
+ sw "Usanidi wa seva hauruhusu kusafisha/kufuta binlog"
ER_FSEEK_FAIL
chi "fseek()失败"
eng "Failed on fseek()"
@@ -6312,96 +6686,112 @@ ER_FSEEK_FAIL
geo "fseek()-ის შეცდომა"
hindi "fseek() विफल रहा"
spa "Fallo en fseek()"
+ sw "Imeshindwa kwenye fseek()"
ER_BINLOG_PURGE_FATAL_ERR
chi "日志清除期间的致命错误"
eng "Fatal error during log purge"
ger "Schwerwiegender Fehler bei der Log-Bereinigung"
geo "ფატალური შეცდომა ჟურნალის წაშლისას"
spa "Error fatal durante la purga del historial (log)"
+ sw "Kosa mbaya wakati wa kusafisha logi"
ER_LOG_IN_USE
chi "日志在用,不会清除"
eng "A purgeable log is in use, will not purge"
ger "Ein zu bereinigendes Log wird gerade benutzt, daher keine Bereinigung"
geo "წასაშლელი ჟურნალი უკვე გამოიყენება. არ წაიშლება"
spa "Se encuentra en uso un historial purgable, no lo purgaré"
+ sw "logi inayoweza kusafishwa inatumika, haitasafisha"
ER_LOG_PURGE_UNKNOWN_ERR
chi "日志清除期间未知错误"
eng "Unknown error during log purge"
ger "Unbekannter Fehler bei Log-Bereinigung"
geo "უცნობი შეცდომა ჟურნალის წაშლისას"
spa "Error desconocido durante la purga del historial (log)"
+ sw "Hitilafu isiyojulikana wakati wa kusafisha logi"
ER_RELAY_LOG_INIT
chi "初始化relay日志失败。位置:%s"
eng "Failed initializing relay log position: %s"
ger "Initialisierung der Relais-Log-Position fehlgeschlagen: %s"
geo "Relay-Log-ის მდებარეობის ინიციალიზაციის შეცდომა: %s"
spa "Fallo inicializando la posición del historial de reenvío: %s"
+ sw "Imeshindwa kuanzisha nafasi ya kumbukumbu ya relay: %s"
ER_NO_BINARY_LOGGING
chi "您不使用二进制日志记录"
eng "You are not using binary logging"
ger "Sie verwenden keine Binärlogs"
geo "თქვენ Binary-Log-ს არ იყენებთ"
spa "No está usando historial (log) binario"
+ sw "Hutumii ukataji wa binary"
ER_RESERVED_SYNTAX
chi "'%-.64s'语法保留用于MariaDB服务器内部"
eng "The '%-.64s' syntax is reserved for purposes internal to the MariaDB server"
ger "Die Schreibweise '%-.64s' ist für interne Zwecke des MariaDB-Servers reserviert"
geo "'%-.64s' სინტაქსი MariaDB სერვერის შიდა მოხმარებისთვის გამოიყენება"
spa "La sintaxis '%-.64s' está reservada para propósitos internos del servidor MariaDB"
+ sw "Sintaksia ya '% -.64s' imehifadhiwa kwa madhumuni ya ndani ya seva ya MariaDB"
ER_WSAS_FAILED
chi "WSAStartup失败了"
eng "WSAStartup Failed"
ger "WSAStartup fehlgeschlagen"
geo "WSAStartup-ის შეცდომა"
spa "Falló WSAStartup"
+ sw "WSAStartup haikufaulu"
ER_DIFF_GROUPS_PROC
chi "无法处理具有不同组的过程"
eng "Can't handle procedures with different groups yet"
ger "Kann Prozeduren mit unterschiedlichen Gruppen noch nicht verarbeiten"
geo "სხვაადსხვა ჯგუფების მქონე პროცედურების დამუშავება ჯერ შეუძლებელია"
spa "No puedo manejar procedimientos con grupos diferentes, aún"
+ sw "Bado haiwezi kushughulikia taratibu na vikundi tofauti"
ER_NO_GROUP_FOR_PROC
chi "SELECT必须具有此过程的组"
eng "Select must have a group with this procedure"
ger "SELECT muss bei dieser Prozedur ein GROUP BY haben"
geo "ამ პროცედურაში SELECT-ს ჯგუფი უნდა ჰქონდეს"
spa "La selección debe de tener un grupo con este procedimiento"
+ sw "Chagua lazima iwe na kikundi na utaratibu huu"
ER_ORDER_WITH_PROC
chi "无法在次存储过程使用ORDER子句"
eng "Can't use ORDER clause with this procedure"
ger "Kann bei dieser Prozedur keine ORDER-BY-Klausel verwenden"
geo "ამ პროცედურაში ORDER პირობას ვერ გამოიყენებთ"
spa "No puedo usar la cláusula ORDER con este procedimiento"
+ sw "Haiwezi kutumia sehemu ya taarifa ya ORDER na utaratibu huu"
ER_LOGGING_PROHIBIT_CHANGING_OF
chi "二进制日志记录和复制禁止更改全局服务器%s"
eng "Binary logging and replication forbid changing the global server %s"
ger "Binärlogs und Replikation verhindern Wechsel des globalen Servers %s"
geo "Binary-Log-ი და რეპლიკაცია კრძალავს გლობალური სერვერის %s ცვლილებას"
spa "El historial (log) binario y la réplica prohibe cambiar el servidor global %s"
+ sw "Uwekaji kumbukumbu wa mfumo wa jozi na urudufishaji unakataza kubadilisha seva ya kimataifa %s"
ER_NO_FILE_MAPPING
chi "无法映射文件:%-.200s,错误号码:%M"
eng "Can't map file: %-.200s, errno: %M"
ger "Kann Datei nicht abbilden: %-.200s, Fehler: %M"
geo "ფაილის მიბმის შეცდომა %-.200s, შეცდ. კოდი: %M"
spa "No puedo mapear fichero/archivo: %-.200s, error: %M"
+ sw "Haiwezi kuuanganisha na faili: %-.200s, kosa: %M"
ER_WRONG_MAGIC
chi "魔法错误%-.64s"
eng "Wrong magic in %-.64s"
ger "Falsche magische Zahlen in %-.64s"
geo "არასწორი მაგიური რიცხვი %-.64s-ში"
spa "Magia equivocada en %-.64s"
+ sw "Nambari ya uchawi mbaya katika % -.64s"
ER_PS_MANY_PARAM
chi "Prepared statement包含太多占位符"
eng "Prepared statement contains too many placeholders"
ger "Vorbereitete Anweisung enthält zu viele Platzhalter"
geo "მომზდადებული გამოსახულება მეტისმეტად ბევრ ადგილმჭერს შეიცავს"
spa "Sentencia preparada contiene demasiados marcadores de posición"
+ sw "Taarifa iliyotayarishwa ina vishikilia nafasi vingi sana"
ER_KEY_PART_0
chi "索引部分'%-.192s'长度不能为0"
eng "Key part '%-.192s' length cannot be 0"
ger "Länge des Schlüsselteils '%-.192s' kann nicht 0 sein"
geo "გასაღების ნაწილის '%-.192s' სიგრძე ნულის ტოლი ვერ იქნება"
spa "El tamaño de trozo de clave '%-.192s' no puede ser 0"
+ sw "Sehemu ya funguo '%-.192s' hauwezi kuwa na urefu ya 0"
ER_VIEW_CHECKSUM
chi "查看文本checksum失败"
eng "View text checksum failed"
@@ -6409,6 +6799,7 @@ ER_VIEW_CHECKSUM
geo "View-Text-ის საკონტროლო ჯამის პრობლემა"
rus "Проверка контрольной суммы текста VIEW провалилась"
spa "Ha fallado la suma de comprobación del texto de la vista"
+ sw "Ukaguzi wa maandishi wa tazama haikufaulu"
ukr "Перевірка контрольної суми тексту VIEW не пройшла"
ER_VIEW_MULTIUPDATE
chi "无法通过JOIN视图'%-.192s.%-.192s'修改多个基础表。"
@@ -6417,6 +6808,7 @@ ER_VIEW_MULTIUPDATE
geo "JOIN VIEW '%-.192s.%-.192s'-ით ერთი ან მეტი საბაზისო ცხრილის ცვლილება შეუძლებელია"
rus "Нельзя изменить больше чем одну базовую таблицу используя многотабличный VIEW '%-.192s.%-.192s'"
spa "No puedo modificar más de una tabla base a través de una vista de unión '%-.192s.%-.192s'"
+ sw "Haiwezi kurekebisha zaidi ya jedwali moja la msingi kupitia tazama ya kuunganisha '%-.192s.%-.192s'"
ukr "Неможливо оновити більш ниж одну базову таблицю выкористовуючи VIEW '%-.192s.%-.192s', що містіть декілька таблиць"
ER_VIEW_NO_INSERT_FIELD_LIST
chi "无法写入JOIN视图'%-.192s.%-.192s'没有字段列表"
@@ -6425,6 +6817,7 @@ ER_VIEW_NO_INSERT_FIELD_LIST
geo "join view '%-.192s.%-.192s'-ში ველების სიის გარეშე ჩანაწერეების დამატება შეუძლებელია"
rus "Нельзя вставлять записи в многотабличный VIEW '%-.192s.%-.192s' без списка полей"
spa "No puedo insertar dentro de vista de unión '%-.192s.%-.192s' sin lista de campos"
+ sw "Haiwezi kuingiza kwenye tazama ya kuunganisha '%-.192s.%-.192s' bila orodha ya sehemu"
ukr "Неможливо уставити рядки у VIEW '%-.192s.%-.192s', що містить декілька таблиць, без списку стовбців"
ER_VIEW_DELETE_MERGE_VIEW
chi "无法从JOIN视图'%-.192s.%-.192s'删除"
@@ -6433,6 +6826,7 @@ ER_VIEW_DELETE_MERGE_VIEW
geo "JOIN VIEW '%-.192s.%-.192s'-დან წაშლა შეუძლებელია"
rus "Нельзя удалять из многотабличного VIEW '%-.192s.%-.192s'"
spa "No puedo borrar desde vista de unión '%-.192s.%-.192s'"
+ sw "Haiwezi kufuta kutoka kwenye tazama ya kuunganisha '%-.192s.%-.192s'"
ukr "Неможливо видалити рядки у VIEW '%-.192s.%-.192s', що містить декілька таблиць"
ER_CANNOT_USER
chi "操作%s失败%.256s"
@@ -6441,18 +6835,21 @@ ER_CANNOT_USER
geo "%s ოპერაციის შეცდომა %.256s-სთვის"
norwegian-ny "Operation %s failed for '%.256s'"
spa "Ha fallado la operación %s para %.256s"
+ sw "Operesheni %s haikufaulu kwa %.256s"
ER_XAER_NOTA XAE04
chi "XAER_NOTA:未知的XID"
eng "XAER_NOTA: Unknown XID"
ger "XAER_NOTA: Unbekannte XID"
geo "XAER_NOTA: უცნობი XID"
spa "XAER_NOTA: XID desconocido"
+ sw "XAER_NOTA: XID Isiyojulikana"
ER_XAER_INVAL XAE05
chi "XAER_INVAL:无效的参数(或不支持的命令)"
eng "XAER_INVAL: Invalid arguments (or unsupported command)"
ger "XAER_INVAL: Ungültige Argumente (oder nicht unterstützter Befehl)"
geo "XAER_INVAL: არასწორი არგუმენტები (ან მხარდაუჭერელი ბრძანება)"
spa "XAER_INVAL: Argumentos inválidos (o comando no soportado)"
+ sw "XAER_INVAL: Hoja batili (au amri isiyotumika)"
ER_XAER_RMFAIL XAE07
chi "XAER_RMFAIL:当全局事务处于%.64s状态时,无法执行该命令"
eng "XAER_RMFAIL: The command cannot be executed when global transaction is in the %.64s state"
@@ -6460,218 +6857,255 @@ ER_XAER_RMFAIL XAE07
geo "XAER_RMFAIL: ბრძანების შესრულება შეუძლებელია, სანამ გლობალური ტრანზაქცია %.64s მდგომარეობაშია"
rus "XAER_RMFAIL: эту команду нельзя выполнять когда глобальная транзакция находится в состоянии '%.64s'"
spa "XAER_RMFAIL: El comando no se puede ejecutar cuando la transacción global se encuentra en estado %.64s"
+ sw "XAER_RMFAIL: Amri haiwezi kutekelezwa wakati shughuli ya kimataifa iko katika hali ya %.64s"
ER_XAER_OUTSIDE XAE09
chi "XAER_OUTSIDE:一些工作是在全局交易之外完成的"
eng "XAER_OUTSIDE: Some work is done outside global transaction"
ger "XAER_OUTSIDE: Einige Arbeiten werden außerhalb der globalen Transaktion verrichtet"
geo "XAER_OUTSIDE: ზოგიერთი სამუსაო გლობალური ტრანზაქცის გარეთ სრულდება"
spa "XAER_OUTSIDE: Algún trabajo se ha realizado fuera de la transacción global"
+ sw "XAER_OUTSIDE: Baadhi ya kazi inafanywa nje ya shughuli za kimataifa"
ER_XAER_RMERR XAE03
chi "XAER_RMERR:事务分支中发生致命错误 - 检查您的数据以获得一致性"
eng "XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency"
ger "XAER_RMERR: Schwerwiegender Fehler im Transaktionszweig - prüfen Sie Ihre Daten auf Konsistenz"
geo "XAER_RMERR: ტრანზაქციის ბრენჩის ფატალური შეცდომა - შეამოწმეთ თქვენი მონაცემების სიმთელე"
spa "XAER_RMERR: Ha ocurrido un error fatal en la rama de la transacción - revise la consitencia de sus datos"
+ sw "XAER_RMERR: Hitilafu mbaya imetokea katika tawi la muamala - hakikisha data yako ina uthabiti"
ER_XA_RBROLLBACK XA100
chi "XA_RBROLBACK:交易分支回滚"
eng "XA_RBROLLBACK: Transaction branch was rolled back"
ger "XA_RBROLLBACK: Transaktionszweig wurde zurückgerollt"
geo "XA_RBROLLBACK: ტრნზაქციის ბრენჩი დაბრუნდა"
spa "XA_RBROLLBACK: La rama de la transacción ha sido retrocedida (rolled back)"
+ sw "XA_RBROLLBACK: Tawi la muamala lilirejeshwa"
ER_NONEXISTING_PROC_GRANT 42000
chi "无授权:用户'%-.48s'主机'%-.64s'ROUTINE'%-.192s'"
eng "There is no such grant defined for user '%-.48s' on host '%-.64s' on routine '%-.192s'"
ger "Es gibt diese Berechtigung für Benutzer '%-.48s' auf Host '%-.64s' für Routine '%-.192s' nicht"
geo "მომხმარებლისთვის '%-.48s' ჰოსტზე '%-.64s' ქვეპროგრამაზე '%-.192s' უფლება აღწერილი არაა"
spa "No existe tal concesión definida para el usuario '%-.48s' en equipo '%-.64s' en rutina '%-.192s'"
+ sw "Hakuna ruzuku kama hiyo iliyofafanuliwa kwa mtumiaji '%-.48s' kwenye seva pangishi '%-.64s' kwa utaratibu '%-.192s'"
ER_PROC_AUTO_GRANT_FAIL
chi "无法授予EXECUTE和ALTER ROUTINE权限"
eng "Failed to grant EXECUTE and ALTER ROUTINE privileges"
ger "Gewährung von EXECUTE- und ALTER-ROUTINE-Rechten fehlgeschlagen"
geo "EXECUTE და ALTER ROUTINE პრივილეგიების მინიჭების შეცდომა"
spa "Fallo al conceder privilegios de EXECUTE y ALTER ROUTINE"
+ sw "Imeshindwa kutoa mapendeleo ya EXECUTE na ALTER ROUTINE"
ER_PROC_AUTO_REVOKE_FAIL
chi "无法撤消所有权限以删除例程"
eng "Failed to revoke all privileges to dropped routine"
ger "Rücknahme aller Rechte für die gelöschte Routine fehlgeschlagen"
geo "მოცილებული პროცედურიდან ყველა პრივილეგიის გაუქმების შეცდომა"
spa "Fallo al rescindir todos los privilegios de la rutina anulada"
+ sw "Imeshindwa kubatilisha marupurupu yote ya utaratibu ulioangushwa"
ER_DATA_TOO_LONG 22001
chi "列'%s'行%lu数据太长"
eng "Data too long for column '%s' at row %lu"
ger "Daten zu lang für Feld '%s' in Zeile %lu"
geo "მონაცემი ძალიან გრძელია სვეტისთვის '%s' მწკრივზე %lu"
spa "Datos demasiado largos para la columna '%s' en la fila %lu"
+ sw "Data ndefu sana kwa safuwima '%s' kwenye safu mlalo %lu"
ER_SP_BAD_SQLSTATE 42000
chi "坏SQLSTATE:'%s'"
eng "Bad SQLSTATE: '%s'"
ger "Ungültiger SQLSTATE: '%s'"
geo "ცუდი SQLSTATE: '%s'"
spa "Mal SQLSTATE: '%s'"
+ sw "SQLSTATE mbaya: '%s'"
ER_STARTUP
chi "%s:已经准备好接受连接\nVersion:'%s'套接字:'%s'端口:%d %s"
eng "%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d %s"
ger "%s: bereit für Verbindungen.\nVersion: '%s' Socket: '%s' Port: %d %s"
geo "%s: დასაკავშირებლად მზადაა.\nვერსია: '%s' სოკეტი: '%s' პორტი: %d %s"
spa "%s: preparada para conexiones.\nVersión: '%s' conector: '%s' puerto: %d %s"
+ sw "%s: tayari kwa miunganisho.\nToleo: tundu la '%s': mlango wa '%s': %d %s"
ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR
chi "无法从带有固定大小行的文件中加载值到变量"
eng "Can't load value from file with fixed size rows to variable"
ger "Kann Wert aus Datei mit Zeilen fester Größe nicht in Variable laden"
geo "ფიქსირებული ზომის მწკრივების მქონე ფაილიდან ცვლადში მნისვნელობის ჩატვირთვის შეცდომა"
spa "No puedo cargar valor desde fichero/archivo con filas de tamaño fijo en variable"
+ sw "Haiwezi kupakia thamani kutoka kwa faili iliyo na safu za saizi maalum hadi kutofautisha"
ER_CANT_CREATE_USER_WITH_GRANT 42000
chi "您不允许使用创建用户时给予GRANT"
eng "You are not allowed to create a user with GRANT"
ger "Sie dürfen keinen Benutzer mit GRANT anlegen"
geo "GRANT-ით მომხმარებლის შექმნის უფლება არ გაქვთ"
spa "No está autorizado a crear un usuario con GRANT"
+ sw "Hauruhusiwi kuunda mtumiaji na GRANT"
ER_WRONG_VALUE_FOR_TYPE
chi "不正确的%-.32s值:'%-.128T' 函数:%-.32s"
eng "Incorrect %-.32s value: '%-.128T' for function %-.32s"
ger "Falscher %-.32s-Wert: '%-.128T' für Funktion %-.32s"
geo "არასწორი %-.32s მნიშვნელობა: '%-.128T' ფუნქციისთვის %-.32s"
spa "Incorrecto valor %-.32s: '%-.128T' para la función %-.32s"
+ sw "Thamani ya % -.32 si sahihi: '%-.128T' kwa kitendo %-.32s"
ER_TABLE_DEF_CHANGED
chi "表定义已更改,请重试"
eng "Table definition has changed, please retry transaction"
ger "Tabellendefinition wurde geändert, bitte starten Sie die Transaktion neu"
geo "ცხრილის აღწერა შეიცვალა. გთხოვთ, თავიდან გაუშვათ ტრანზაქცია"
spa "Ha cambiado la definición de la tabla, por favor reintente la transacción"
+ sw "Ufafanuzi wa jedwali umebadilika, tafadhali jaribu tena muamala"
ER_SP_DUP_HANDLER 42000
chi "在同一块中声明的处理程序重复"
eng "Duplicate handler declared in the same block"
ger "Doppelter Handler im selben Block deklariert"
geo "იგივე ბლოკში დუბლირებული დამმუშავებელია აღწერილი"
spa "Manejador duplicado declarado en mismo bloque"
+ sw "Kidhibiti cha nakala kilichotangazwa kwenye kizuizi kimoja"
ER_SP_NOT_VAR_ARG 42000
chi "OUT或INOUT参数%d 例程 %s的不是BEFORE触发器里的变量或新伪变量"
eng "OUT or INOUT argument %d for routine %s is not a variable or NEW pseudo-variable in BEFORE trigger"
ger "OUT- oder INOUT-Argument %d für Routine %s ist keine Variable"
geo "OUT და INOUT არგუმენტი %d ქვეპროგრამისთვის %s ცვლადს არ წარმოადგენს, ან NEW ფსევდოცვლადი BEFORE ტრიგერში"
spa "El argumento %d OUT o INOUT para la rutina %s no es una variable o pseudo-variable NEW en disparador BEFORE"
+ sw "Hoja ya OUT(KUTOKA) au INOUT %d kwa utaratibu %s sio kigeugeu au kigeu-badala NEW katika kichochezi cha BEFORE"
ER_SP_NO_RETSET 0A000
chi "不允许从%s返回结果集"
eng "Not allowed to return a result set from a %s"
ger "Rückgabe einer Ergebnismenge aus einer %s ist nicht erlaubt"
geo "%s-დან შედეგების ნაკრების დაბრუნება დაუშვებელია"
spa "No autorizado a devolver un conjunto de resultados desde un %s"
+ sw "Hairuhusiwi kurudisha seti ya matokeo kutoka kwa %s"
ER_CANT_CREATE_GEOMETRY_OBJECT 22003
chi "无法从发送到几何字段的数据中获取几何对象"
eng "Cannot get geometry object from data you send to the GEOMETRY field"
ger "Kann kein Geometrieobjekt aus den Daten machen, die Sie dem GEOMETRY-Feld übergeben haben"
geo "GEOMETRY ველში გაგზავნილი მონაცემებიდან გეომეტრიული ობიექტის მიღება შეუძლებელია"
spa "No puedo obtener objeto de geometría desde los datos que vd envía al campo GEOMETRY"
+ sw "Haiwezi kupata kitu cha jiometri kutoka kwa data unayotuma kwenye uwanja wa GEOMETRY"
ER_FAILED_ROUTINE_BREAK_BINLOG
chi "ROUTINE失败,定义中既没有NO SQL也没有READ SQL DAT。启用二进制日志记录;如果更新非事务性表,则二进制日志将会错过其更改"
eng "A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes"
ger "Eine Routine, die weder NO SQL noch READS SQL DATA in der Deklaration hat, schlug fehl und Binärlogging ist aktiv. Wenn Nicht-Transaktions-Tabellen aktualisiert wurden, enthält das Binärlog ihre Änderungen nicht"
geo "ქვეპროგრამა ავარიულად დასრულდა და გააჩნია არც NO SQL, არც READS SQL DATA მის აღწერაში და ბინარული ჟურნალი ჩართულია. თუ განახლებულია არატრანზაქციული ცხრილები, ბინარული ჟურნალი მათ ცვლილებებს არ შეიცავს"
spa "Ha fallado una rutina y no tiene ni NO SQL ni READS SQL DATA en su declaración y el historial (log) binario se encuentra activado; si han sido actualizadas tablas no transaccionales, el fichero/archivo binario de historial (log) perderá sus cambios"
+ sw "Utaratibu haukufaulu na hauna NO SQL wala READS SQL DATA katika tamko lake na uwekaji wa data katika mfumo wa jozi umewashwa; ikiwa jedwali zisizo za shughuli zilisasishwa, logi ya binary itakosa mabadiliko yao"
ER_BINLOG_UNSAFE_ROUTINE
chi "此函数定义中没有DETERMINISTIC,NO SQL,或者READS SQL DATA,并且已启用二进制日志记录(您*可能*希望使用较少的安全性的log_bin_trust_function_creators变量)"
eng "This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)"
ger "Diese Routine hat weder DETERMINISTIC, NO SQL noch READS SQL DATA in der Deklaration und Binärlogging ist aktiv (*vielleicht* sollten Sie die weniger sichere Variable log_bin_trust_function_creators verwenden)"
geo "ამ ფუნქციას არ გააჩნია DETERMINISTIC, NO SQL, ან READS SQL DATA მის აღწერაში და ბინარული ჟურნალი ჩართულია (შეიძლება თქვენ ნაკლებად უსაფრთხო log_bin_trust_function_creators ცვლადის გამოყენება გჭირდებათ)"
spa "Esta función no tiene ninguno de DETERMINISTIC, NO SQL o READS SQL DATA en su declaración y está activado el historial binario (vd *podría* querer usar la variable menos segura log_bin_trust_function_creators)"
+ sw " Kazi hii haina DETERMINISTIC, NO SQL, au READS SQL DATA katika tamko yake na uwekaji wa data katika mfumo wa jozi umewezeshwa (unaweza * kutaka kutumia utofauti usio salama kabisa wa log_bin_trust_function_creators)"
ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
chi "您没有超级特权和二进制日志记录已启用(您*可能*想要使用较少的安全log_bin_trust_function_creators变量)"
eng "You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)"
ger "Sie haben keine SUPER-Berechtigung und Binärlogging ist aktiv (*vielleicht* sollten Sie die weniger sichere Variable log_bin_trust_function_creators verwenden)"
geo "თქვენ SUPER პრივილეგია არ გაგაჩნიათ და ბინარული ჟურნალი ჩართულია (შეიძლება თქვენ ნაკლებად უსაფრთხო log_bin_trust_function_creators ცვლადის გამოყენება გჭირდებათ)"
spa "No tiene el privilegio SUPER y está activado el historial binario (*podría* querer usar la variable menos segura log_bin_trust_function_creators)"
+ sw "Huna fursa ya SUPER na uwekaji wa data katika mfumo wa jozi umewezeshwa (unaweza * kutaka kutumia kigezo kisicho salama kabisa cha log_bin_trust_function_creators)"
ER_EXEC_STMT_WITH_OPEN_CURSOR
chi "您无法执行具有与之关联的打开Cursor的prepared statement。重置语句以重新执行它"
eng "You can't execute a prepared statement which has an open cursor associated with it. Reset the statement to re-execute it"
ger "Sie können keine vorbereitete Anweisung ausführen, die mit einem geöffneten Cursor verknüpft ist. Setzen Sie die Anweisung zurück, um sie neu auszuführen"
geo "თქვენ არ შეგიძლიათ გაუშვათ მომზადებული გამოსახულება, რომელსაც მასთან ასოცირებული ღია კურსორი გააჩნია. გამოსახულების თავიდან შესასრულებლად მისი საწყის მნიშვნელობებზე დაბრუნებაა საჭირო"
spa "No puede ejecutar una sentencia preparada que tiene abierto un cursor asociado con ella. Renueve la sentencia para re-ejecutarla"
+ sw "Huwezi kutekeleza taarifa iliyotayarishwa ambayo ina kishale wazi kinachohusishwa nayo. Weka upya taarifa hiyo ili kuitekeleza tena"
ER_STMT_HAS_NO_OPEN_CURSOR
chi "语句(%lu)没有开放的Cursor"
eng "The statement (%lu) has no open cursor"
ger "Die Anweisung (%lu) hat keinen geöffneten Cursor"
geo "გამოსახულებას (%lu) ღია კურსორი არ გააჩნია"
spa "La sentencia (%lu) no tiene cursor abierto"
+ sw "Taarifa (%lu) haina kielezi wazi"
ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
chi "在存储的函数或触发器中不允许显式或隐式提交"
eng "Explicit or implicit commit is not allowed in stored function or trigger"
ger "Explizites oder implizites Commit ist in gespeicherten Funktionen und in Triggern nicht erlaubt"
spa "Comisión (commit) implícita o explícita no permitida en funciones almacenadas o en disparadores"
+ sw "Ahadi ya wazi au isiyo wazi hairuhusiwi katika utendaji kazi uliohifadhiwa au kichochezi"
ER_NO_DEFAULT_FOR_VIEW_FIELD
chi "VIEW的列'%-.192s.%-.192s'底层表没有默认值"
eng "Field of view '%-.192s.%-.192s' underlying table doesn't have a default value"
ger "Ein Feld der dem View '%-.192s.%-.192s' zugrundeliegenden Tabelle hat keinen Vorgabewert"
geo "ხედის ველის '%-.192s.%-.192s' ქვედა ცხრილს ნაგულისხმები მნიშვნელობა არ გააჩნია"
spa "El campo de tabla subyacente de vista '%-.192s.%-.192s' no tiene valor por defecto"
+ sw "Sehemu ya kutazamwa '%-.192s.%-.192s' jedwali la msingi halina thamani chaguomsingi"
ER_SP_NO_RECURSION
chi "不允许递归存储功能和触发器"
eng "Recursive stored functions and triggers are not allowed"
ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt"
geo "რეკურსიული დამახსოვრებული ფუნქციები და ტრიგერები დაშვებული არაა"
spa "No autorizadas funciones almacenadas recursivas ni disparadores"
+ sw "Vitendaji na vichochezi vinavyojirudia haviruhusiwi"
ER_TOO_BIG_SCALE 42000 S1009
chi "指定的大规模为'%-.192s'。最大是%u"
eng "Too big scale specified for '%-.192s'. Maximum is %u"
ger "Zu großer Skalierungsfaktor für '%-.192s' angegeben. Maximum ist %u"
geo "'%-.192s'-სთვის მითითებული მასშტაბი მეტისმეტად დიდია. მაქსიმუმია %u"
spa "Escala demasiado grande especificada para '%-.192s'. El máximo es de %u"
+ sw "Kiwango kikubwa mno kimebainishwa kwa '%-.192s'. Upeo ni %u"
ER_TOO_BIG_PRECISION 42000 S1009
chi "指定的精度太大 '%-.192s'。最大是%u"
eng "Too big precision specified for '%-.192s'. Maximum is %u"
ger "Zu große Genauigkeit für '%-.192s' angegeben. Maximum ist %u"
geo "'%-.192s'-სთვის მითითებული სიზუსთე მეტისმეტად დიდია. მაქსიმუმია %u"
spa "Precisión demasiado grande especificada para '%-.192s'. El máximo es de %u"
+ sw "Usahihi mkubwa sana umebainishwa kwa '%-.192s'. Upeo ni %u"
ER_M_BIGGER_THAN_D 42000 S1009
chi "对于FLOAT(M,D),DOUBLE(M,D)或DECIMAL(M,D),M必须> = D(列'%-.192s')"
eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.192s')"
ger "Für FLOAT(M,D), DOUBLE(M,D) oder DECIMAL(M,D) muss M >= D sein (Feld '%-.192s')"
geo "float(M,D), double(M,D) და decimal(M,D)-სთვის M >= D უნდა იყოს (სვეტი '%-.192s')"
spa "Para flotante(M,D), doble(M,D) o decimal(M,D), M debe de ser >= D (columna '%-.192s')"
+ sw "Kwa float(M,D), double(M,D) au decimal(M,D), M lazima iwe >= D (safu '%-.192s')"
ER_WRONG_LOCK_OF_SYSTEM_TABLE
chi "您无法将系统表的写入锁定与其他表或锁定类型相结合"
eng "You can't combine write-locking of system tables with other tables or lock types"
ger "Sie können Schreibsperren auf der Systemtabelle nicht mit anderen Tabellen kombinieren"
geo "სისტემური ცხრილების ჩაწერის დაბლოკვის სხვა ცხრილების ან დაბლოკვის ტიპებთან შერევა შეუძლებელია"
spa "No puede combinar bloqueo de escritura de tablas de sistema con otras tablas o tipos de bloqueo"
+ sw "Huwezi kuchanganya ufungaji wa maandishi wa jedwali la mfumo na jedwali zingine au aina za kufuli"
ER_CONNECT_TO_FOREIGN_DATA_SOURCE
chi "无法连接到外数据源:%.64s"
eng "Unable to connect to foreign data source: %.64s"
ger "Kann nicht mit Fremddatenquelle verbinden: %.64s"
geo "გარე მონაცემების წყაროსთან მიერთების შეცდომა: %.64s"
spa "No puedo conectar a fuente foránea de datos: %.64s"
+ sw "Haiwezi kuunganisha kwa chanzo cha data ya kigeni: %.64s"
ER_QUERY_ON_FOREIGN_DATA_SOURCE
chi "处理对外数据源上的查询时出现问题。数据源错误:%-.64s"
eng "There was a problem processing the query on the foreign data source. Data source error: %-.64s"
ger "Bei der Verarbeitung der Abfrage ist in der Fremddatenquelle ein Problem aufgetreten. Datenquellenfehlermeldung: %-.64s"
geo "გარე მონაცემების წყაროზე მოთხოვნის დამუშავების პრობლემა. მონაცემების წყაროს შეცდომა: %-.64s"
spa "Hubo un problema procesando la consulta (query) en la fuente foránea de datos. Error de fuente de datos: %-.64s"
+ sw "Kulikuwa na tatizo la kuchakata hoja kwenye chanzo cha data cha kigeni. Hitilafu ya chanzo cha data: %-.64s"
ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST
chi "您尝试引用的外数据源不存在。数据源错误:%-.64s"
eng "The foreign data source you are trying to reference does not exist. Data source error: %-.64s"
ger "Die Fremddatenquelle, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
geo "მონაცემების გარე წყარო, რომელსაც ცდილობთ მიმართოთ, არ არსებობს. მონაცემების წყაროს შეცდომა: %-.64s"
spa "La fuente foránea de datos que intenta referenciar no existe. Error en fuente de datos: %-.64s"
+ sw "Chanzo cha data ya kigeni unachojaribu kurejelea hakipo. Hitilafu ya chanzo cha data: % -.64s"
ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE
chi "无法创建联合表。数据源连接字符串'%-.64s'不是正确的格式"
eng "Can't create federated table. The data source connection string '%-.64s' is not in the correct format"
ger "Kann föderierte Tabelle nicht erzeugen. Der Datenquellen-Verbindungsstring '%-.64s' hat kein korrektes Format"
spa "No puedo crear tabla federada. La cadena de conexión de la fuente de datos '%-.64s' no tiene el formato correcto"
+ sw "Haiwezi kuunda jedwali la shirikisho. Mfuatano wa muunganisho wa chanzo cha data '%-.64s' hauko katika umbizo sahihi"
ER_FOREIGN_DATA_STRING_INVALID
chi "数据源连接字符串'%-.64s'不是正确的格式"
eng "The data source connection string '%-.64s' is not in the correct format"
ger "Der Datenquellen-Verbindungsstring '%-.64s' hat kein korrektes Format"
spa "La cadena de conexón de la fuente de datos '%-.64s' no tiene el formato correcto"
+ sw "Mfuatano wa herufi wa muunganisho wa chanzo cha data '%-.64s' haiko katika umbizo sahihi"
ER_CANT_CREATE_FEDERATED_TABLE
chi "无法创建联合表。外数据SRC错误:%-.64s"
eng "Can't create federated table. Foreign data src error: %-.64s"
ger "Kann föderierte Tabelle nicht erzeugen. Fremddatenquellenfehlermeldung: %-.64s"
spa "No puedo crear tabla federada. Error en fuente de datos foráneos: %-.64s"
+ sw "Haiwezi kuunda jedwali la shirikisho. Hitilafu ya chanzo cha data ya kigeni: % -.64s"
ER_TRG_IN_WRONG_SCHEMA
chi "触发在错的SCHEMA"
eng "Trigger in wrong schema"
ger "Trigger im falschen Schema"
geo "ტრიგერი არასწორ სქემაშია"
spa "Disparador en esquema equivocado"
+ sw "Kichochezi kwenye schema isiyo sahihi"
ER_STACK_OVERRUN_NEED_MORE
chi "线程堆栈溢出:%ld字节堆栈的%ld字节,以及所需的%ld字节。使用'mariadbd --thread_stack =#'指定更大的堆栈"
eng "Thread stack overrun: %ld bytes used of a %ld byte stack, and %ld bytes needed. Consider increasing the thread_stack system variable."
@@ -6679,124 +7113,142 @@ ER_STACK_OVERRUN_NEED_MORE
geo "ნაკადის სტეკის გადავსება: გამოყენებულია %ld ბაიტი %ld ბაიტიანი სტეკიდან და საჭიროა %ld ბაიტი. გაზარდეთ სისტემის ცვლადი thread_stack."
jpn "スレッドスタック不足です(使用: %ld ; サイズ: %ld ; 要求: %ld)。より大きい値で 'mariadbd --thread_stack=#' の指定をしてください。"
spa "Desbordamiento en pila de hilos (threads): %ld bytes usados de una pila de %ld y son necesarios %ld bytes. Considere el incrementar la variable de sistema --thread_stack=#."
+ sw "Mrundikano wa rafu ya uzi: baiti %ld zinazotumika kwa rafu ya baiti %ld, na ka %ld zinahitajika. Zingatia kuongeza mabadiliko ya mfumo wa thread_stack."
ER_TOO_LONG_BODY 42000 S1009
chi "'%-.100s”的ROUTINE太长了"
eng "Routine body for '%-.100s' is too long"
ger "Routinen-Body für '%-.100s' ist zu lang"
geo "qveprogramis სხეული '%-.100s' ძალიან დიდია"
spa "El cuerpo de rutina para '%-.100s' es demasiado largo"
+ sw "Kiini cha utaratibu cha '%-.100s' ni kirefu sana"
ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
chi "无法删除默认索引缓存"
eng "Cannot drop default keycache"
ger "Der vorgabemäßige Schlüssel-Cache kann nicht gelöscht werden"
geo "ნაგულისხმები გასაღების კეშის წაშლა შეუძლებელია"
spa "No puedo eliminar keycache por defecto"
+ sw "Haiwezi kufuta akiba ya ufunguo chaguo-msingi"
ER_TOO_BIG_DISPLAYWIDTH 42000 S1009
chi "显示宽度超过'%-.192s'的范围(max =%lu)"
eng "Display width out of range for '%-.192s' (max = %lu)"
ger "Anzeigebreite außerhalb des zulässigen Bereichs für '%-.192s' (Maximum = %lu)"
geo "'%-.192s'-ის ჩვენების სიგანე დიაპაზონს გარეთაა (მაქს. = %lu)"
spa "Ancho a mostrar fuera de rango para '%-.192s' (máx = %lu)"
+ sw "Onyesha upana nje ya masafa kwa '%-.192s' (max = %lu)"
ER_XAER_DUPID XAE08
chi "XAER_DUPID:xid已存在"
eng "XAER_DUPID: The XID already exists"
ger "XAER_DUPID: Die XID existiert bereits"
geo "XAER_DUPID: XID-ი უკვე არსებობს"
spa "XAER_DUPID: El XID ya existe"
+ sw "XAER_DUPID: XID tayari ipo"
ER_DATETIME_FUNCTION_OVERFLOW 22008
chi "DateTime函数:%-.32s字段溢出"
eng "Datetime function: %-.32s field overflow"
ger "Datetime-Funktion: %-.32s Feldüberlauf"
geo "დრო-თარიღის ფუნქცია: %-.32s ველი გადავსებულია"
spa "Función Datetime: %-.32s desbordamiento de campo"
+ sw "Kitendaji cha muda (Datetime): % -.32s kufurika kwa uga"
ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
chi "在存储的函数/触发器中无法更新表'%-.192s',因为它已被调用此存储的函数/触发器调用的语句"
eng "Can't update table '%-.192s' in stored function/trigger because it is already used by statement which invoked this stored function/trigger"
ger "Kann Tabelle '%-.192s' in gespeicherter Funktion oder Trigger nicht aktualisieren, weil sie bereits von der Anweisung verwendet wird, die diese gespeicherte Funktion oder den Trigger aufrief"
geo "ცხრილის ('%-.192s') შენახულ პროცედურაში/ტრიგერში განახლება შეუძლებელია, რადგან ის უკვე გამოიყენება გამოსახულების მიერ, რომელსაც ეს შენახული ფუნქცია/ტრიგერი იყენებს"
spa "No puedo actualizar tabla '%-.192s' en función almacenada/disparador porque ya está siendo usada por la sentencia que invocó esta función almacenada/disparador"
+ sw "Haiwezi kusasisha jedwali '%-.192s' katika kitendo/kichochezi kilichohifadhiwa kwa sababu tayari linatumiwa na taarifa iliyotumia kitendakazi/kichochezi hiki kilichohifadhiwa"
ER_VIEW_PREVENT_UPDATE
chi "表'%-.192s'的定义可防止在表'%-.192s'上的操作'%-.192s'"
eng "The definition of table '%-.192s' prevents operation %-.192s on table '%-.192s'"
ger "Die Definition der Tabelle '%-.192s' verhindert die Operation %-.192s auf Tabelle '%-.192s'"
geo "ცხრილის ('%-.192s') აღწერა ხელს უშლის ოპერაციას ('%-.192s') ცხრილზე '%-.192s'"
spa "La definición de la tabla '%-.192s' previene la operación %-.192s en la tabla '%-.192s'"
+ sw "Ufafanuzi wa jedwali '%-.192s' huzuia operesheni %-.192s kwenye jedwali '%-.192s'"
ER_PS_NO_RECURSION
chi "prepared statement包含一个有关该语句的存储例程调用。它不允许以这种递归方式执行prepared statement"
eng "The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner"
ger "Die vorbereitete Anweisung enthält einen Aufruf einer gespeicherten Routine, die auf eben dieselbe Anweisung verweist. Es ist nicht erlaubt, eine vorbereitete Anweisung in solch rekursiver Weise auszuführen"
geo "მომზადებული გამოსახულება შეიცავს დამახსოვრებულ ქვეპროგრამის გამოძახებას, რომელიც იგივე გამოსახულებას მიმართავს. შენახული გამოსახულების რეკურსიულად გაშვება დაშვებული არაა"
spa "La sentencia preparada contiene una llamada a rutina almacenada que se refiere a esa misma sentencia. No está permitido ejecutar una sentencia preparada de esta manera recursiva"
+ sw "Taarifa iliyotayarishwa ina utaratibu iliyohifadhiwa ambayo inarejelea taarifa hiyo hiyo. Hairuhusiwi kutekeleza taarifa iliyotayarishwa kwa njia ya kujirudia"
ER_SP_CANT_SET_AUTOCOMMIT
chi "不允许从存储的函数或触发器设置自动判处"
eng "Not allowed to set autocommit from a stored function or trigger"
ger "Es ist nicht erlaubt, innerhalb einer gespeicherten Funktion oder eines Triggers AUTOCOMMIT zu setzen"
geo "შენახული ფუნქციიდან და ტრიგერიდან ავტოკომიტის დაყენება დაშვებული არაა"
spa "No permitido usar auto acometida (autocommit) desde una función almacenada o disparador"
+ sw "Hairuhusiwi kuweka ahadi otomatiki kutoka kwa kitendaji iliyohifadhiwa au kichochezi"
ER_MALFORMED_DEFINER 0L000
chi "无效的定义"
eng "Invalid definer"
geo "არასწორი აღმწერი"
spa "Definidor inválido"
+ sw "Kibainisha batili"
ER_VIEW_FRM_NO_USER
chi "VIEW'%-.192s'。'%-.192s'没有绝定的信息(旧表格式)。当前用户用作定义。请重新创建视图!"
eng "View '%-.192s'.'%-.192s' has no definer information (old table format). Current user is used as definer. Please recreate the view!"
ger "View '%-.192s'.'%-.192s' hat keine Definierer-Information (altes Tabellenformat). Der aktuelle Benutzer wird als Definierer verwendet. Bitte erstellen Sie den View neu"
geo "ხედს '%-.192s'.'%-.192s' აღმწერის ინფორმაცია არ გააჩნია (ცხრილის ფორმატი ძველია). აღმწერად მიმდინარე მომხმარებელი გამოიყენება. გთხოვთ, შექმენით ეს ხედი თავიდან!"
spa "La vista '%-.192s'.'%-.192s' no tiene información de definidor (formato viejo de tabla). Se usa el usuario actual como definidor. Por favor, ¡recrea la vista!"
-ER_VIEW_OTHER_USER
- chi "您需要使用'%-.192s'@'%-.192s'的创建视图的超级特权"
- eng "You need the SUPER privilege for creation view with '%-.192s'@'%-.192s' definer"
- ger "Sie brauchen die SUPER-Berechtigung, um einen View mit dem Definierer '%-.192s'@'%-.192s' zu erzeugen"
- spa "Vd necesita el privilegio SUPER para la creación de la vista con definidor '%-.192s'@'%-.192s'"
+ sw "Tazama '%-.192s'.'%-.192s' haina maelezo ya kifafanua (muundo wa jedwali la zamani). Mtumiaji wa sasa anatumika kama kibainishaji. Tafadhali tengeneza tazama mpya!"
+ER_UNUSED_30
+ eng "You should never see it"
+ sw "Hupaswi kuiona kamwe"
ER_NO_SUCH_USER
chi "指定为定义的用户('%-.64s'@'%-.64s')不存在"
eng "The user specified as a definer ('%-.64s'@'%-.64s') does not exist"
ger "Der als Definierer angegebene Benutzer ('%-.64s'@'%-.64s') existiert nicht"
geo "('%-.64s'@'%-.64s')-ის აღმწერად მითითებული მომხმარებელი არ არსებობს"
spa "El usuario especificado como definidor ('%-.64s'@'%-.64s') no existe"
+ sw "Mtumiaji aliyebainishwa kama kibainishaji ('%-.64s'@'%-.64s') hayupo"
ER_FORBID_SCHEMA_CHANGE
chi "不允许从'%-.192s'到'%-.192s'的SCHEMA更改"
eng "Changing schema from '%-.192s' to '%-.192s' is not allowed"
ger "Wechsel des Schemas von '%-.192s' auf '%-.192s' ist nicht erlaubt"
geo "სქემის '%-.192s'-დან '%-.192s'-ზე შეცვლა დაშვებული არაა"
spa "Vd no está autorizado a cambiar el esquema de '%-.192s' a '%-.192s'"
+ sw "Kubadilisha schema kutoka '%-.192s' hadi '%-.192s' hairuhusiwi"
ER_ROW_IS_REFERENCED_2 23000
chi "无法删除或更新父行:外键约束失败(%.192s)"
eng "Cannot delete or update a parent row: a foreign key constraint fails (%.192s)"
ger "Kann Eltern-Zeile nicht löschen oder aktualisieren: eine Fremdschlüsselbedingung schlägt fehl (%.192s)"
geo "მშობელი მწკრივის წაშლა ან განახლება შეუძლებელია: გარე გასაღების შეზღუდვა შეცდომას შეიცავს (%.192s)"
spa "No puedo borrar o actualizar una fila padre: falla una restricción de clave foránea (%.192s)"
+ sw "Haiwezi kufuta au kusasisha safu mlalo kuu: kizuizi cha ufunguo wa kigeni hakifaulu (%.192s)"
ER_NO_REFERENCED_ROW_2 23000
chi "无法添加或更新子行:外键约束失败(%.192s)"
eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)"
ger "Kann Kind-Zeile nicht hinzufügen oder aktualisieren: eine Fremdschlüsselbedingung schlägt fehl (%.192s)"
geo "შვილი მწკრივის წაშლა ან განახლება შეუძლებელია: გარე გასაღების შეზღუდვა შეცდომას შეიცავს (%.192s)"
spa "No puedo añadir o actualizar una fila hija: falla una restricción de clave foránea (%.192s)"
+ sw "Haiwezi kuongeza au kusasisha safu mlalo ya mtoto: kizuizi cha ufunguo wa kigeni hakifaulu (%.192s)"
ER_SP_BAD_VAR_SHADOW 42000
chi "变量'%-.64s'必须用`...`,或重命名"
eng "Variable '%-.64s' must be quoted with `...`, or renamed"
ger "Variable '%-.64s' muss mit `...` geschützt oder aber umbenannt werden"
geo "ცვლადი '%-.64s' `...` ბრჭყალებში უნდა ჩასვათ, ან სახელი გადაარქვათ"
spa "La variable '%-.64s' debe de ser entrecomillada con `...` o renombrada"
+ sw "Kigezo '% -.64s' lazima kinukuliwe kwa `...`, au kibadilishwe jina"
ER_TRG_NO_DEFINER
chi "触发'%-.192s'的绝对属性。'%-.192s'。触发器将在调用者的授权下激活,该权限可能不足。请重新创建触发器"
eng "No definer attribute for trigger '%-.192s'.'%-.192s'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger"
ger "Kein Definierer-Attribut für Trigger '%-.192s'.'%-.192s'. Der Trigger wird mit der Autorisierung des Aufrufers aktiviert, der möglicherweise keine zureichenden Berechtigungen hat. Bitte legen Sie den Trigger neu an"
geo "ტრიგერს '%-.192s'.'%-.192s' აღმწერის ატრიბუტი არ გააჩნია. ტრიგერი გამშვების ავტორიზაციის ქვეშ გაეშვება, რომლის პრივილეგიებიც შეიძლება საკმარისი არ აღმოჩნდეს. თავიდან შექმენით ტრიგერი"
spa "No hay atributo de definidor para disparador '%-.192s'.'%-.192s'. El disparador será activado bajo la autorización del invocador, el cual puede tener insuficientes privilegios. Por favor, vuelva a crear el disparador"
+ sw "Hakuna sifa kibainishaji cha kichochezi '%-.192s'.'%-.192s'. Kichochezi kitawashwa chini ya uidhinishaji wa mchochezi, ambacho kinaweza kuwa na upendeleo usiotosha. Tafadhali unda kichochezi kipya"
ER_OLD_FILE_FORMAT
chi "'%-.192s'具有旧格式,您应该重新创建'%s'对象"
eng "'%-.192s' has an old format, you should re-create the '%s' object(s)"
ger "'%-.192s' hat altes Format, Sie sollten die '%s'-Objekt(e) neu erzeugen"
geo "'%-.192s'-ის ფორმატი მოძველებულია. საჭიროა '%s' ობიექტის თავიდან შექმნა"
spa "'%-.192s' tiene un formato viejo, debería vd de volver a crear el/los objeto(s) '%s'"
+ sw "'%-.192s' ina umbizo la zamani, unapaswa kuunda tena kipengee cha '%s'"
ER_SP_RECURSION_LIMIT
chi "递归限制%d(如max_sp_recursion_depth变量设置)的例程%.192s"
eng "Recursive limit %d (as set by the max_sp_recursion_depth variable) was exceeded for routine %.192s"
ger "Rekursionsgrenze %d (durch Variable max_sp_recursion_depth gegeben) wurde für Routine %.192s überschritten"
geo "რეკურსიულობის ლიმიტი %d (დაყენებულია ცვლადით max_sp_recursion_depth) გადაცილებულია ქვეპროგრამისთვის %.192s"
spa "El límite recursivo %d (según se indica mediante la variable max_sp_recursion_depth) se ha excedido para la rutina %.192s"
+ sw "Kikomo cha kujirudia %d (kama ilivyowekwa na max_sp_recursion_depth variable) kilipitwa kwa utaratibu %.192s"
ER_SP_PROC_TABLE_CORRUPT
chi "无法加载常规%-.192s(内部代码%d)。有关更多详细信息,请运行SHOW WARNINGS"
eng "Failed to load routine %-.192s (internal code %d). For more details, run SHOW WARNINGS"
@@ -6804,60 +7256,70 @@ ER_SP_PROC_TABLE_CORRUPT
geo "ქვეპროგრამის (%-.192s) ჩატვირთვის შეცდომა (შიდა კოდი %d). მეტი დეტალებისთვის გაუშვით SHOW WARNINGS"
ukr "Невдала спроба завантажити процедуру %-.192s (внутрішний код %d). Для отримання детальної інформації використовуйте SHOW WARNINGS"
spa "No pude cargar la rutina %-.192s (código interno %d). Para más detalles, ejecute SHOW WARNINGS"
+ sw "Imeshindwa kupakia utaratibu wa %-.192s (msimbo wa ndani %d). Kwa maelezo zaidi, toa amri ya SHOW WARNING"
ER_SP_WRONG_NAME 42000
chi "常规名称错误不正确'%-.192s'"
eng "Incorrect routine name '%-.192s'"
ger "Ungültiger Routinenname '%-.192s'"
geo "ქვეპროგრამის არასწორი სახელი '%-.192s'"
spa "Nombre incorrecto de rutina '%-.192s'"
+ sw "Jina la utaratibu lisilo sahihi '% -.192s'"
ER_TABLE_NEEDS_UPGRADE
chi "需要升级。请做\"修复%s%`s \"或转储/重新加载以修复!"
eng "Upgrade required. Please do \"REPAIR %s %`s\" or dump/reload to fix it!"
ger "Aktualisierung erforderlich. Bitte zum Reparieren \"REPAIR %s %`s\" eingeben!"
geo "აუცილებელია განახლება. გასასწორებლად გაუშვით \"REPAIR %s %`s\" ან დამპი აიღეთ და თავიდან ჩატვირთეთ!"
spa "Es necesaria una mejora. Por favor, ¡haga \"REPAIR %s %`s\" o vuelque/recargue para arreglarlo!"
+ sw "Uboreshaji unahitajika. Tafadhali fanya \"REPAIR %s %`s\" au tupa kwa faili halafu pakia upya ili kuirekebisha!"
ER_SP_NO_AGGREGATE 42000
chi "存储函数不支持聚合"
eng "AGGREGATE is not supported for stored functions"
ger "AGGREGATE wird bei gespeicherten Funktionen nicht unterstützt"
geo "დამახსოვრებული ფუნქციებისთვის AGGREGATE მხარდაჭერილი არაა"
spa "AGGREGATE no está soportado en funciones almacenadas"
+ sw "AGGREGATE haitumiki kwa vitendaji vilivyohifadhiwa"
ER_MAX_PREPARED_STMT_COUNT_REACHED 42000
chi "无法创建超过max_prepared_stmt_count语句(当前值:%u)"
eng "Can't create more than max_prepared_stmt_count statements (current value: %u)"
ger "Kann nicht mehr Anweisungen als max_prepared_stmt_count erzeugen (aktueller Wert: %u)"
geo "max_prepared_stmt_count-ზე მეტი გამოსახულების შექმნა შეუძლებელია (მიმდინარე მნიშვნელობაა: %u)"
spa "No puedo crear más de max_prepared_stmt_count sentencias (valor en curso: %u)"
+ sw "Haiwezi kuunda zaidi ya taarifa max_prepared_stmt_count (thamani ya sasa: %u)"
ER_VIEW_RECURSIVE
chi "%`s.%`s包含视图递归"
eng "%`s.%`s contains view recursion"
ger "%`s.%`s enthält View-Rekursion"
geo "%`s.%`s ხედის რეკურსიას შეიცავს"
spa "`%-.192s`.`%-.192s` contiene recursividad de vista""
+ sw "%`s.%`s ina urejeshaji wa tazama"
ER_NON_GROUPING_FIELD_USED 42000
chi "非分组字段'%-.192s'用于%-.64s条款"
eng "Non-grouping field '%-.192s' is used in %-.64s clause"
ger "In der %-.192s-Klausel wird das die Nicht-Gruppierungsspalte '%-.64s' verwendet"
geo "არა-დაჯგუფებადი ველი '%-.192s' გამოიყენება პირობაში %-.64s"
spa "No hay campo agrupado '%-.192s' usado en cláusula %-.64s"
+ sw "Sehemu isiyo ya kupanga '%-.192s' inatumika katika kifungu cha %-.64s"
ER_TABLE_CANT_HANDLE_SPKEYS
chi "存储引擎%s不支持SPATIAL索引"
eng "The storage engine %s doesn't support SPATIAL indexes"
ger "Der verwendete Tabellentyp (%s) unterstützt keine SPATIAL-Indizes"
geo "საცავის ძრავას "%s" SPATIAL ტიპის ინდექსების მხარდაჭერა არ გააჩნია"
spa "El motor de almacenaje %s no soporta índices SPATIAL"
+ sw "Injini ya kuhifadhi %s haitumii faharasa za SPATIAL"
ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
chi "无法在系统表上创建触发器"
eng "Triggers can not be created on system tables"
ger "Trigger können nicht auf Systemtabellen erzeugt werden"
geo "სისტემურ ცხრილებზე ტრიგერებს ვერ შექმნით"
spa "Los disparadores no pueden ser creados en las tablas del sistema"
+ sw "Vichochezi haviwezi kuundwa kwenye jedwali za mfumo"
ER_REMOVED_SPACES
chi "前面的空格从名称'%s'删除"
eng "Leading spaces are removed from name '%s'"
ger "Führende Leerzeichen werden aus dem Namen '%s' entfernt"
geo "დასაწყისში გამოტოვებები წაშლილია სახელიდა '%s'"
spa "Se quitan los espacios iniciales del nombre '%s'"
+ sw "Nafasi zinazoongoza zimeondolewa kutoka kwa jina '%s'"
ER_AUTOINC_READ_FAILED
chi "无法从存储引擎读取自动增量值"
eng "Failed to read auto-increment value from storage engine"
@@ -6865,6 +7327,7 @@ ER_AUTOINC_READ_FAILED
geo "საცავის ძრავიდან ავტომატური გაზრდის მნიშვნელობის წაკითხვის შეცდომა"
hindi "स्टोरेज इंजन से auto-increment का मान पढ़ने में असफल रहे"
spa "No pude leer valor de auto-incremento del motor de almacenaje"
+ sw "Imeshindwa kusoma thamani ya kuongeza kiotomatiki kutoka kwa injini ya kuhifadhi"
ER_USERNAME
chi "用户名"
eng "user name"
@@ -6872,6 +7335,7 @@ ER_USERNAME
geo "მომხმარებლის სახელი"
hindi "यूज़र का नाम"
spa "nombre de usuario"
+ sw "jina la mtumiaji"
ER_HOSTNAME
chi "主机名"
eng "host name"
@@ -6879,12 +7343,14 @@ ER_HOSTNAME
geo "ჰოსტის სახელი"
hindi "होस्ट का नाम"
spa "nombre de equipo"
+ sw "jina la seva mwenyeji"
ER_WRONG_STRING_LENGTH
chi "字符串'%-.70T'对于%s(应不超过%d)太长"
eng "String '%-.70T' is too long for %s (should be no longer than %d)"
ger "String '%-.70T' ist zu lang für %s (sollte nicht länger sein als %d)"
geo "სტრიქონი '%-.70T' %s-სთვის ძალიან გრძელია (სიგრძე %d-ზე მეტს არ უნდა უდრიდეს)"
spa "La cadena '%-.70T' es demasiado larga para %s (no debería de ser mayor de %d)"
+ sw "Mfuatano wa herufi '%-.70T' ni ndefu sana kwa %s (haifai kuwa zaidi ya %d)"
ER_NON_INSERTABLE_TABLE
chi "目标表%-.100s %s不可插入"
eng "The target table %-.100s of the %s is not insertable-into"
@@ -6892,30 +7358,35 @@ ER_NON_INSERTABLE_TABLE
geo "სამიზნე ცხრილი %-.100s %s-დან ჩამატებადი არაა"
jpn "対象表 %-.100s は挿入可能ではないので、%s を行えません。"
spa "La tabla destino %-.100s de la %s no es insertable-dentro"
+ sw "Jedwali lengwa la %-.100s la %s haliwezi kuingiziwa"
ER_ADMIN_WRONG_MRG_TABLE
chi "表'%-.64s'不同定义、或非myisam类型、或不存在"
eng "Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist"
ger "Tabelle '%-.64s' ist unterschiedlich definiert, nicht vom Typ MyISAM oder existiert nicht"
geo "ცხრილი '%-.64s' სხვანაირადაა აღწერილი, არაა MyISAM-ის ტიპის, ან არ არსებობს"
spa "La tabla '%-.64s' está definida de forma diferente o es del tipo no-MyISAM o no existe"
+ sw "Jedwali '%-.64s' limefafanuliwa kwa njia tofauti au la aina isiyo ya MyISAM au haipo"
ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
chi "太高的嵌套SELECT"
eng "Too high level of nesting for select"
ger "Zu tief verschachtelte SELECT-Anweisungen"
geo "SELECT-ის მეტისმეტად მაღალი ან ჩალაგების დონე"
spa "Demasiado alto el nivel de anidamiento para la selección"
+ sw "Kiwango cha juu sana cha kuweka kiota kwa chaguo"
ER_NAME_BECOMES_EMPTY
chi "名'%-.64s'已成为''"
eng "Name '%-.64s' has become ''"
ger "Name '%-.64s' wurde zu ''"
geo "სახელი '%-.64s' გადაიქცა ''"
spa "El nombre '%-.64s' ha pasado a ser ''"
+ sw "Jina '%-.64s' limekuwa ''"
ER_AMBIGUOUS_FIELD_TERM
chi "FIELDS TERMINATED字符串的第一个字符是模棱两可的;请使用非空字段FIELDS ENCLOSED BY"
eng "First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY"
ger "Das erste Zeichen der Zeichenkette FIELDS TERMINATED ist mehrdeutig; bitte benutzen Sie nicht optionale und nicht leere FIELDS ENCLOSED BY"
geo "FIELDS TERMINATED სტრქოინის პირველი სიმბოლო ბუნდოვანია. გამოიყენეთ სავალდებულო და არაცარიელი FIELDS ENCLOSED BY"
spa "El primer carácter de la cadena de los FIELDS TERMINATED es ambiguo; por favor, use FIELDS ENCLOSED BY no opcionales y no vacíos"
+ sw "Herufi ya kwanza ya mfuatano wa FIELDS TERMINATED ina utata; tafadhali tumia FIELDS ENCLOSED BY isiyo ya hiari na isiyo tupu"
ER_FOREIGN_SERVER_EXISTS
chi "无法创建外部服务器'%s',因为它已经存在"
eng "Cannot create foreign server '%s' as it already exists"
@@ -6932,6 +7403,7 @@ ER_FOREIGN_SERVER_EXISTS
por "Não foi possível criar o servidor externo '%s' porque ele já existe"
rus "Невозможно создать сторонний сервер '%s', так как он уже существует"
spa "No se puede crear el servidor externo '%s' porque ya existe"
+ sw "Haiwezi kuunda seva ya kigeni '%s' kwa sababu ipo tayari"
swe "Det gick inte att skapa främmande server '%s' eftersom den redan finns"
ER_FOREIGN_SERVER_DOESNT_EXIST
chi "您尝试引用的外部服务器名称不存在。数据源错误:%-.64s"
@@ -6939,18 +7411,21 @@ ER_FOREIGN_SERVER_DOESNT_EXIST
ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
geo "გარე სერვერის სახელი, რომელსაც ცდილობთ, მიმართოთ, არ არსებობს. მონაცემების წყაროს შეცდომა: %-.64s"
spa "El nombre del servidor foráneo que intenta referenciar no existe. Error en fuentes de datos: %-.64s"
+ sw "Jina la seva ya kigeni unalojaribu kurejelea halipo. Hitilafu ya chanzo cha data: % -.64s"
ER_ILLEGAL_HA_CREATE_OPTION
chi "表存储引擎'%-.64s'不支持创建选项'%.64s'"
eng "Table storage engine '%-.64s' does not support the create option '%.64s'"
ger "Speicher-Engine '%-.64s' der Tabelle unterstützt die Option '%.64s' nicht"
geo "ცხრილის საცავის ძრავა '%-.64s' შექმნის პარამეტრის '%-.64s' მხარდაჭერა არ გააჩნია"
spa "El motor de almacenaje de la tabla '%-.64s' no soporta la opción de creación '%.64s'"
+ sw "Injini ya hifadhi ya jedwali '% -.64s' haiauni chaguo la kuunda '%.64s'"
ER_PARTITION_REQUIRES_VALUES_ERROR
chi "语法错误:%-.64s PARTITIONING需要定义给每个分区VALUES %-.64s"
eng "Syntax error: %-.64s PARTITIONING requires definition of VALUES %-.64s for each partition"
ger "Fehler in der SQL-Syntax: %-.64s-PARTITIONierung erfordert Definition von VALUES %-.64s für jede Partition"
geo "სინტაქსის შეცდომა: %-.64s. PARTITIONING-ს VALUES %-.64s-ის დაყენება სჭირდება თითოეული დანაყოფისთვის"
spa "Error de sintaxis: %-.64s PARTITIONING requiere de la definición de VALUES %-.64s para cada partición"
+ sw "Hitilafu ya kisintaksia: % -.64s PARTITIONING inahitaji ufafanuzi wa VALUES % -.64s kwa kila kizigeu"
swe "Syntaxfel: %-.64s PARTITIONering kräver definition av VALUES %-.64s för varje partition"
ER_PARTITION_WRONG_VALUES_ERROR
chi "只有%-.64s PARTITIONING可以使用VALUES %-.64s在分区定义中"
@@ -6958,6 +7433,7 @@ ER_PARTITION_WRONG_VALUES_ERROR
ger "Nur %-.64s-PARTITIONierung kann VALUES %-.64s in der Partitionsdefinition verwenden"
geo "მხოლოდ %-.64s PARTITIONING-ს შეუძლია გამოიყენოს VALUES %-.64s დანაყოფის აღწერისას"
spa "Sólo %-.64s PARTITIONING puede usar VALUES %-.64s en la definición de la partición"
+ sw "Kizigeu cha % -.64s pekee ndiyo inayoweza kutumia VALUES %-.64s katika ufafanuzi wa kizigeu"
swe "Endast %-.64s partitionering kan använda VALUES %-.64s i definition av partitionen"
ER_PARTITION_MAXVALUE_ERROR
chi "MAXVALUE只能在最后一个分区定义中使用"
@@ -6965,6 +7441,7 @@ ER_PARTITION_MAXVALUE_ERROR
ger "MAXVALUE kann nur für die Definition der letzten Partition verwendet werden"
geo "MAXVALUE-ის გამოყენება მხოლოდ ბოლო დანაყოფის აღწერისას შეგიძლიათ"
spa "MAXVALUE sólo se puede usar en la definición de la última partición"
+ sw "MAXVALUE inaweza tu kutumika katika ufafanuzi wa kizigeu cha mwisho"
swe "MAXVALUE kan bara användas i definitionen av den sista partitionen"
ER_PARTITION_SUBPARTITION_ERROR
chi "子分区只能是哈希分区和分区列"
@@ -6972,6 +7449,7 @@ ER_PARTITION_SUBPARTITION_ERROR
ger "Unterpartitionen dürfen nur HASH- oder KEY-Partitionen sein"
geo "ქვედაყანოფები მხოლოდ HASH და KEY დანაყოფებს შეიძლება წარმოადგენდეს"
spa "Las subparticiones sólo pueden ser particiones dispersas (hash) y mediante clave"
+ sw "Vizigeu ndogo vinaweza tu kuwa vizigeu vya hashi na kwa ufunguo"
swe "Subpartitioner kan bara vara hash och key partitioner"
ER_PARTITION_SUBPART_MIX_ERROR
chi "如果在一个分区上,必须在所有分区上定义子组分"
@@ -6979,6 +7457,7 @@ ER_PARTITION_SUBPART_MIX_ERROR
ger "Wenn Sie Unterpartitionen auf einer Partition definieren, müssen Sie das für alle Partitionen tun"
geo "თუ ქვედანაყოფს ერთ დანაყოფზე მაინც აღწერთ, ისინი ყველა დანაყოფზე უნდა აღწეროთ"
spa "Se deben de definir subparticiones en todas las particiones si se está en una partición"
+ sw "Lazima ifafanue vizigeu ndogo kwenye vizigeu vyote ikiwa kwenye kizigeu kimoja"
swe "Subpartitioner måste definieras på alla partitioner om på en"
ER_PARTITION_WRONG_NO_PART_ERROR
chi "定义了错误的分区数,与以前的设置不匹配"
@@ -6986,6 +7465,7 @@ ER_PARTITION_WRONG_NO_PART_ERROR
ger "Falsche Anzahl von Partitionen definiert, stimmt nicht mit vorherigen Einstellungen überein"
geo "აღწერილია დანაყოფების არასწორი რაოდენობა. ის წინა პარამეტრს არ ემთხვევა"
spa "Definido un número equivocado de particiones, no coincide con configuración previa"
+ sw "Idadi mbaya ya vizigeu vilivyofafanuliwa, kutolingana na mpangilio uliopita"
swe "Antal partitioner definierade och antal partitioner är inte lika"
ER_PARTITION_WRONG_NO_SUBPART_ERROR
chi "错误的子组分数定义,与以前的设置不匹配"
@@ -6993,6 +7473,7 @@ ER_PARTITION_WRONG_NO_SUBPART_ERROR
ger "Falsche Anzahl von Unterpartitionen definiert, stimmt nicht mit vorherigen Einstellungen überein"
geo "აღწერილია ქვედაყანოფეის არასწორი რაოდენობა. ის წინა პარამეტრს არ ემთხვევა"
spa "Definido un número equivocado de subparticiones, no coincide con configuración previa"
+ sw "Idadi isiyo sahihi ya vizigeu ndogo imefafanuliwa, hailingani na mpangilio uliopita"
swe "Antal subpartitioner definierade och antal subpartitioner är inte lika"
ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
chi "不允许(子)分区功能中的常量,随机或时区依赖表达式"
@@ -7000,6 +7481,7 @@ ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
ger "Konstante oder Random-Ausdrücke in (Unter-)Partitionsfunktionen sind nicht erlaubt"
geo "(ქვე)დაყოფის ფუნქციაში მუდმივი, შემთხვევითი და დროის სარტყელზე დამოკიდებული გამოსახულებების გამოყენება დაშვებული არაა"
spa "Las expresiones constantes, al azar o dependientes de zona en función de (sub)particionado no están permitidas"
+ sw "Semi za thabiti, nasibu au tegemezi za eneo katika kitendaji cha kugawa (ndogo) haziruhusiwi"
swe "Konstanta uttryck eller slumpmässiga uttryck är inte tillåtna (sub)partitioneringsfunktioner"
ER_NOT_CONSTANT_EXPRESSION
chi "%s中的表达必须是恒定的"
@@ -7007,6 +7489,7 @@ ER_NOT_CONSTANT_EXPRESSION
ger "Ausdrücke in %s müssen konstant sein"
geo "%s-ში გამოსახულება მუდმივი უნდა იყოს"
spa "Las expresiones incluidas en %s deben de ser constantes"
+ sw "Usemi katika %s lazima uwe thabiti"
swe "Uttryck i %s måste vara ett konstant uttryck"
ER_FIELD_NOT_FOUND_PART_ERROR
chi "在表中找不到分区功能的字段列表中的字段"
@@ -7014,6 +7497,7 @@ ER_FIELD_NOT_FOUND_PART_ERROR
ger "Felder in der Feldliste der Partitionierungsfunktion wurden in der Tabelle nicht gefunden"
geo "ველი დაყოფის ფუნქციისთვის ცხრილის ველების სიაში აღმოჩენილი არაა"
spa "Campo en la lista de campos para función de partición no hallado en tabla"
+ sw "Sehemu katika orodha ya sehemu za kitendaji cha kugawa haipatikani kwenye jedwali"
swe "Fält i listan av fält för partitionering med key inte funnen i tabellen"
ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
chi "只允许在索引分区中允许字段列表"
@@ -7021,6 +7505,7 @@ ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
ger "Eine Feldliste ist nur in KEY-Partitionen erlaubt"
geo "ველების სია მხოლოდ KEY დანაყოფებზეა დაშვებული"
spa "Lista de campos sólo se permite en particiones KEY"
+ sw "Orodha ya sehemu inaruhusiwa tu katika vizigeu vya KEY"
swe "En lista av fält är endast tillåtet för KEY partitioner"
ER_INCONSISTENT_PARTITION_INFO_ERROR
chi "FRM文件中的分区信息不与可以写入FRM文件的内容一致"
@@ -7028,6 +7513,7 @@ ER_INCONSISTENT_PARTITION_INFO_ERROR
ger "Die Partitionierungsinformationen in der frm-Datei stimmen nicht mit dem überein, was in die frm-Datei geschrieben werden kann"
geo "დანაყოფების შესახებ ინფორმაცია frm ფაილშიარ ემთხვევა იმას, რაც frm ფაილში წერია"
spa "La información de partición en el fichero/archivo frm no es consistente con lo que se puede grabar en un fichero/archivo frm"
+ sw "Maelezo ya kizigeu katika faili ya frm hayaendani na kile kinachoweza kuandikwa kwenye faili ya frm"
swe "Partitioneringsinformationen i frm-filen är inte konsistent med vad som kan skrivas i frm-filen"
ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
chi "%-.192s函数返回错误的类型"
@@ -7035,6 +7521,7 @@ ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
ger "Die %-.192s-Funktion gibt einen falschen Typ zurück"
geo "ფუნქცია %-.192s არასწორ ტიპს აბრუნებს"
spa "La función %-.192s devueve un tipo equivocado"
+ sw "Kitendaji cha %-.192s kinarudisha aina isiyo sahihi"
swe "%-.192s-funktionen returnerar felaktig typ"
ER_PARTITIONS_MUST_BE_DEFINED_ERROR
chi "对于%-.64s分区必须定义每个分区"
@@ -7042,6 +7529,7 @@ ER_PARTITIONS_MUST_BE_DEFINED_ERROR
ger "Für %-.64s-Partitionen muss jede Partition definiert sein"
geo "%-.64s დანაყოფებისთვის ყველა დანაყოფი უნდა აღიწეროს"
spa "Para las particiones %-.64s, se debe de definir cada partición"
+ sw "Kwa vizigeu %-.64s kila kizigeu lazima kifafanuliwe"
swe "För %-.64s partitionering så måste varje partition definieras"
ER_RANGE_NOT_INCREASING_ERROR
chi "每个分区的VALUES LESS THAN的值必须严格增加"
@@ -7049,6 +7537,7 @@ ER_RANGE_NOT_INCREASING_ERROR
ger "Werte in VALUES LESS THAN müssen für jede Partition strikt aufsteigend sein"
geo "VALUES LESS THAN მნიშვნელობები თითოეული დანაყოფისთვის მხოლოდ უნდა იზრდებოდეს"
spa "El valor VALUES LESS THAN debe de ser estrictamente incremental para cada partición"
+ sw "Thamani ya VALUES LESS THAN lazima iongezeke kwa kila kizigeu"
swe "Värden i VALUES LESS THAN måste vara strikt växande för varje partition"
ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
chi "VALUES值必须与分区函数相同"
@@ -7056,6 +7545,7 @@ ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
ger "VALUES-Werte müssen vom selben Typ wie die Partitionierungsfunktion sein"
geo "VALUES მნისვნელობა დანაყოფის ფუნქციის ტიპის უნდა იყოს"
spa "El valor VALUES debe de ser del mismo tipo que la función de partición"
+ sw "Thamani ya VALUES lazima iwe ya aina sawa na kitendaji cha kizigeu"
swe "Värden i VALUES måste vara av samma typ som partitioneringsfunktionen"
ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
chi "列表分区中相同常量的多个定义"
@@ -7063,6 +7553,7 @@ ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
ger "Mehrfachdefinition derselben Konstante bei Listen-Partitionierung"
geo "სიის დანაყოფებში აღმოჩენილია მუდმივის ერთზე მეტი აღწერა"
spa "Definición múltiple de la misma constante en el particionamiento de la lista"
+ sw "Ufafanuzi mwingi wa thabiti rudufu katika orodha ya vizigeu"
swe "Multipel definition av samma konstant i list partitionering"
ER_PARTITION_ENTRY_ERROR
chi "分区不能在查询中独立使用"
@@ -7070,6 +7561,7 @@ ER_PARTITION_ENTRY_ERROR
ger "Partitionierung kann in einer Abfrage nicht alleinstehend benutzt werden"
geo "დაყოფა არ შეიძლება, მოთხოვნაში ცალკე გამოიყენოთ"
spa "El particionado no puede ser usado de forma autónoma en consulta (query)"
+ sw "Kugawanya hakuwezi kutumika kwa kujitegemea katika swala"
swe "Partitioneringssyntax kan inte användas på egen hand i en SQL-fråga"
ER_MIX_HANDLER_ERROR
chi "此版本的MariaDB中不允许分区中的处理程序混合"
@@ -7077,6 +7569,7 @@ ER_MIX_HANDLER_ERROR
ger "Das Vermischen von Handlern in Partitionen ist in dieser Version von MariaDB nicht erlaubt"
geo "MariaDB-ის ამ ვერსიაში დანაყოფებში დამმუშავებლების შერევა დაშვებული არაა"
spa "La mezcla de manejadores en las particiones no está autorizada en esta versión de MariaDB"
+ sw "Mchanganyiko wa vidhibiti katika vizigeu haziruhusiwi katika toleo hili la MariaDB"
swe "Denna mix av lagringsmotorer är inte tillåten i denna version av MariaDB"
ER_PARTITION_NOT_DEFINED_ERROR
chi "对于分区引擎,需要定义所有%-.64s"
@@ -7084,6 +7577,7 @@ ER_PARTITION_NOT_DEFINED_ERROR
ger "Für die partitionierte Engine müssen alle %-.64s definiert sein"
geo "დაყოფის ძრავისთვის ყველა %-.64s-ის აღწერა აუცილებელია"
spa "Para el motor de particionado es necesario definir todas %-.64s"
+ sw "Kwa injini iliyogawanywa ni muhimu kufafanua zote % -.64s"
swe "För partitioneringsmotorn så är det nödvändigt att definiera alla %-.64s"
ER_TOO_MANY_PARTITIONS_ERROR
chi "定义了太多分区(包括子组分)"
@@ -7091,12 +7585,14 @@ ER_TOO_MANY_PARTITIONS_ERROR
ger "Es wurden zu vielen Partitionen (einschließlich Unterpartitionen) definiert"
geo "აღწერილია მეტისმეტად ბევრი დანაყოფი (ქვედანაყოფების ჩათვლით)"
spa "Definidas demasiadas particiones (incluyendo las subparticiones)"
+ sw "Vizigeu vingi sana (pamoja na vizigeu vidogo) vilifafanuliwa"
swe "För många partitioner (inkluderande subpartitioner) definierades"
ER_SUBPARTITION_ERROR
chi "只有在子节分节的HASH/KEY分区中可以混合RANGE/LIST分区"
eng "It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning"
ger "RANGE/LIST-Partitionierung kann bei Unterpartitionen nur zusammen mit HASH/KEY-Partitionierung verwendet werden"
spa "Sólo es posible mezclar particionado RANGE/LIST con particionado HASH/KEY para el subparticionado"
+ sw "Inawezekana tu kuchanganya vizigeu vya RANGE/LIST na vizigeu vya HASH/KEY kwa ugawaji wa vizigeu ndogo"
swe "Det är endast möjligt att blanda RANGE/LIST partitionering med HASH/KEY partitionering för subpartitionering"
ER_CANT_CREATE_HANDLER_FILE
chi "无法创建特定的处理程序文件"
@@ -7104,6 +7600,7 @@ ER_CANT_CREATE_HANDLER_FILE
ger "Erzeugen einer spezifischen Handler-Datei fehlgeschlagen"
geo "მითითებული დამმუშავებლის ფაილის შექმნის შეცდომა"
spa "No pude crear fichero/archivo de manejador específico"
+ sw "Imeshindwa kuunda faili maalum ya kushughulikia"
swe "Misslyckades med att skapa specifik fil i lagringsmotor"
ER_BLOB_FIELD_IN_PART_FUNC_ERROR
chi "分区功能中不允许BLOB字段"
@@ -7111,18 +7608,21 @@ ER_BLOB_FIELD_IN_PART_FUNC_ERROR
ger "In der Partitionierungsfunktion sind BLOB-Spalten nicht erlaubt"
geo "დანაყოფის ფუნქციაში BLOB ველი დაშვებული არაა"
spa "No se autoriza campo BLOB en la función de partición"
+ sw "Sehemu ya BLOB hairuhusiwi katika kitendaji cha kizigeu"
swe "Ett BLOB-fält är inte tillåtet i partitioneringsfunktioner"
ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
chi "A%-.192s必须包含表的分区功能中的所有列"
eng "A %-.192s must include all columns in the table's partitioning function"
geo "%-.192s ცხრილის დაყოფის ფუნქციაში ყველა სვეტს უნდა შეიცავდეს"
spa "Un %-.192s debe de incluir todas las columnas en la función de particionado de la tabla"
+ sw "Ile %-.192s lazima ijumuishe safu wima zote katika kitendakazi cha kugawanya cha jedwali"
ER_NO_PARTS_ERROR
chi "不允许%-.64s = 0"
eng "Number of %-.64s = 0 is not an allowed value"
ger "Eine Anzahl von %-.64s = 0 ist kein erlaubter Wert"
geo "%-.64s = 0 რაოდენობა დაშვებული არაა"
spa "El número de %-.64s = 0 no es un valor autorizado"
+ sw "Nambari ya % -.64s = 0 sio thamani inayoruhusiwa"
swe "Antal %-.64s = 0 är inte ett tillåten värde"
ER_PARTITION_MGMT_ON_NONPARTITIONED
chi "不分区表上的分区管理是不可能的"
@@ -7130,17 +7630,20 @@ ER_PARTITION_MGMT_ON_NONPARTITIONED
ger "Partitionsverwaltung einer nicht partitionierten Tabelle ist nicht möglich"
geo "დანაყოფების მართვა ცხრილზე, რომელიც დაყოფილი არაა, შეუძლებელია"
spa "La gestión de particiones en una tabla no particionada no es posible"
+ sw "Usimamizi wa kizigeu kwenye jedwali ambalo halijagawanywa hauwezekani"
swe "Partitioneringskommando på en opartitionerad tabell är inte möjligt"
ER_FEATURE_NOT_SUPPORTED_WITH_PARTITIONING
eng "Partitioned tables do not support %s"
geo "დაყოფილ ცხრილებს %s-ის მხარდაჭერა არ გააჩნიათ"
spa "Las tablas particionadas no soportan %s"
+ sw "Jedwali zilizogawanywa haziauni %s"
ER_PARTITION_DOES_NOT_EXIST
chi "分区名称或分区列表错误"
eng "Wrong partition name or partition list"
ger "Falscher Name einer Partition oder Fehler in der Partitionsliste"
geo "დანაყოფის არასწორი სახელი ან დანაყოფების სია"
spa "Error en lista de particiones"
+ sw "Jina lisilo sahihi la kizigeu au orodha ya kizigeu"
swe "Fel namn av en partition eller fel i listan av partitioner"
ER_DROP_LAST_PARTITION
chi "无法删除所有分区,请使用删除表"
@@ -7148,6 +7651,7 @@ ER_DROP_LAST_PARTITION
ger "Es lassen sich nicht sämtliche Partitionen löschen, benutzen Sie statt dessen DROP TABLE"
geo "ყველა დანაყოფის წაშლა შეუძლებელია. ამისთვის DROP TABLE გამოიყენეთ"
spa "No puedo quitar todas las particiones, use DROP TABLE en su lugar"
+ sw "Haiwezi kuondoa vizigeu vyote, tumia DROP TABLE badala yake"
swe "Det är inte tillåtet att ta bort alla partitioner, använd DROP TABLE istället"
ER_COALESCE_ONLY_ON_HASH_PARTITION
chi "COALESCE分区只能用于哈希/索引分区"
@@ -7155,6 +7659,7 @@ ER_COALESCE_ONLY_ON_HASH_PARTITION
ger "COALESCE PARTITION kann nur auf HASH- oder KEY-Partitionen benutzt werden"
geo "COALESCE PARTITION-ის გამოყენება მხოლოდ HASH/KEY დანაყოფებზეა შესაძლებელი"
spa "COALESCE PARTITION sólo se puede usar en particiones HASH/KEY"
+ sw "COALESCE PARTITION inaweza kutumika kwenye vizigeu vya HASH/KEY pekee"
swe "COALESCE PARTITION kan bara användas på HASH/KEY partitioner"
ER_REORG_HASH_ONLY_ON_SAME_NO
chi "REORGANIZE PARTITION只能用于重新组织不改变他们的数字的分区"
@@ -7162,6 +7667,7 @@ ER_REORG_HASH_ONLY_ON_SAME_NO
ger "REORGANIZE PARTITION kann nur zur Reorganisation von Partitionen verwendet werden, nicht, um ihre Nummern zu ändern"
geo "REORGANIZE PARTITION-ის გამოყენება მხოლოდ დანაყოფების გადასალაგებლადაა შესაძლებელი და არა მათი ნომრების შესაცვლელად"
spa "REORGANIZE PARTITION sólo se puede usar para reorganizar particiones no para cambiar sus números"
+ sw "REORGANIZE PARTITION inaweza tu kutumika kupanga upya vizigeu lakini si kubadilisha nambari zao"
swe "REORGANIZE PARTITION kan bara användas för att omorganisera partitioner, inte för att ändra deras antal"
ER_REORG_NO_PARAM_ERROR
chi "没有参数的REORGANIZE PARTITION只能用于HASH PARTITION的自动分区表"
@@ -7169,6 +7675,7 @@ ER_REORG_NO_PARAM_ERROR
ger "REORGANIZE PARTITION ohne Parameter kann nur für auto-partitionierte Tabellen verwendet werden, die HASH-Partitionierung benutzen"
geo "REORGANIZE PARTITION-ის პარამეტრების გარეშე გამოყენება HASH PARTITION-ის გამოყენებით ავტომატურად დაყოფილ ცხრილებზეა შესაძლებელი"
spa "REORGANIZE PARTITION sin parámetros sólo se puede usar en tablas auto-particionadas usando HASH PARTITIONs"
+ sw "REORGANIZE PARTITION bila vigezo inaweza kutumika tu kwenye jedwali zilizogawanywa kiotomatiki kwa kutumia HASH PARTITIONs"
swe "REORGANIZE PARTITION utan parametrar kan bara användas på auto-partitionerade tabeller som använder HASH partitionering"
ER_ONLY_ON_RANGE_LIST_PARTITION
chi "%-.64s分区只能用于RANGE/LIST分区"
@@ -7176,6 +7683,7 @@ ER_ONLY_ON_RANGE_LIST_PARTITION
ger "%-.64s PARTITION kann nur für RANGE- oder LIST-Partitionen verwendet werden"
geo "%-.64s PARTITION-ის გამოყენება მხოლოდ RANGE/LIST ტიპის დანაყოფებზეა შესაძლებელი"
spa "%-.64s PARTITION sólo puede ser usada en particiones RANGE/LIST"
+ sw "% -.64s PARTITION inaweza kutumika tu kwenye vizigeu vya RANGE/LIST"
swe "%-.64s PARTITION kan bara användas på RANGE/LIST-partitioner"
ER_ADD_PARTITION_SUBPART_ERROR
chi "尝试用错误数量的子分区添加分区"
@@ -7183,6 +7691,7 @@ ER_ADD_PARTITION_SUBPART_ERROR
ger "Es wurde versucht, eine oder mehrere Partitionen mit der falschen Anzahl von Unterpartitionen hinzuzufügen"
geo "არასწორი ქვედანაყოფების რაოდენობის მქონე დანაყოფების დამატების მცდელობა"
spa "Intentando añadir particion(es) usando un número equivocado de subparticiones"
+ sw "Kujaribu Kuongeza kizigeu na nambari zisizo sahihi za vizigeu vidogo"
swe "ADD PARTITION med fel antal subpartitioner"
ER_ADD_PARTITION_NO_NEW_PARTITION
chi "必须添加至少一个分区"
@@ -7190,18 +7699,21 @@ ER_ADD_PARTITION_NO_NEW_PARTITION
ger "Es muss zumindest eine Partition hinzugefügt werden"
geo "აუცილებელია, ერთი დანაყოფი მაინც დაამატოთ"
spa "Se debe de añadir una partición, al menos"
+ sw "Angalau kizigeu kimoja lazima kiongezwe"
swe "Åtminstone en partition måste läggas till vid ADD PARTITION"
ER_COALESCE_PARTITION_NO_PARTITION
chi "至少一个分区必须合并"
eng "At least one partition must be coalesced"
ger "Zumindest eine Partition muss mit COALESCE PARTITION zusammengefügt werden"
spa "Se debe de fusionar una partición, al menos"
+ sw "Angalau kizigeu kimoja lazima kiunganishwe"
swe "Åtminstone en partition måste slås ihop vid COALESCE PARTITION"
ER_REORG_PARTITION_NOT_EXIST
chi "分区重组量超过而不是分区量"
eng "More partitions to reorganize than there are partitions"
ger "Es wurde versucht, mehr Partitionen als vorhanden zu reorganisieren"
spa "Hay más particiones a reorganizar que las que existen"
+ sw "Vizigeu vingi vya kupanga upya kuliko nambari ya vizigeu"
swe "Fler partitioner att reorganisera än det finns partitioner"
ER_SAME_NAME_PARTITION
chi "重复分区名称%-.192s"
@@ -7209,6 +7721,7 @@ ER_SAME_NAME_PARTITION
ger "Doppelter Partitionsname: %-.192s"
geo "დუბლირებული დანაყოფის სახელი %-.192s"
spa "Nombre de partición duplicado %-.192s"
+ sw "Jina la kizigeu rudufu %-.192s"
swe "Duplicerat partitionsnamn %-.192s"
ER_NO_BINLOG_ERROR
chi "在此命令上不允许关闭binlog"
@@ -7216,29 +7729,34 @@ ER_NO_BINLOG_ERROR
ger "Es es nicht erlaubt, bei diesem Befehl binlog abzuschalten"
geo "ამ ბრძანებაზე binlog-ის გამორთვა აკრძალულია"
spa "No se autoriza a apagar binlog con este comando"
+ sw "Hairuhusiwi kuzima binlog kwenye amri hii"
swe "Det är inte tillåtet att stänga av binlog på detta kommando"
ER_CONSECUTIVE_REORG_PARTITIONS
chi "在重新组织一组分区时,它们必须按照次序"
eng "When reorganizing a set of partitions they must be in consecutive order"
ger "Bei der Reorganisation eines Satzes von Partitionen müssen diese in geordneter Reihenfolge vorliegen"
spa "Para reorganizar un conjunto de particiones, éstas deben de estar ordenadas consecutivamente"
+ sw "Wakati wa kupanga upya seti ya vizigeu lazima iwe kwa mpangilio mfululizo"
swe "När ett antal partitioner omorganiseras måste de vara i konsekutiv ordning"
ER_REORG_OUTSIDE_RANGE
chi "重组范围分区无法更改除最后分区之外的总范围,无法扩展范围"
eng "Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range"
ger "Die Reorganisation von RANGE-Partitionen kann Gesamtbereiche nicht verändern, mit Ausnahme der letzten Partition, die den Bereich erweitern kann"
spa "El reorganizar un rango de particiones no puede cambiar los rangos totales excepto para la última partición donde se puede extender el rango"
+ sw "Kupanga upya vizigeu vya masafa hakuwezi kubadilisha jumla ya masafa isipokuwa kizigeu cha mwisho ambapo kinaweza kupanua safu"
swe "Reorganisering av rangepartitioner kan inte ändra den totala intervallet utom för den sista partitionen där intervallet kan utökas"
ER_PARTITION_FUNCTION_FAILURE
chi "此版不支持此处理程序的分区功能"
eng "Partition function not supported in this version for this handler"
ger "Partitionsfunktion in dieser Version dieses Handlers nicht unterstützt"
spa "Función de partición no soportada en esta versión para este manejador"
+ sw "Kitendaji cha kugawa hakitumiki katika toleo hili la kidhibiti hiki"
ER_PART_STATE_ERROR
chi "无法从CREATE/ALTER表中定义分区状态"
eng "Partition state cannot be defined from CREATE/ALTER TABLE"
ger "Partitionszustand kann nicht von CREATE oder ALTER TABLE aus definiert werden"
spa "El estado de una partición no se puede definir desde CREATE/ALTER TABLE"
+ sw "Hali ya kizigeu haiwezi kufafanuliwa kutoka CREATE/ALTER TABLE"
swe "Partition state kan inte definieras från CREATE/ALTER TABLE"
ER_LIMITED_PART_RANGE
chi "%-.64s处理程序仅支持32-bit整数"
@@ -7246,6 +7764,7 @@ ER_LIMITED_PART_RANGE
ger "Der Handler %-.64s unterstützt in VALUES nur 32-Bit-Integers"
geo "'%-.64s'-ის დამმუშავებელს VALUES-ში მხოლოდ 32 ბიტიანი მთელი რიცხვების მხარდაჭერა გააჩნია"
spa "El manejador %-.64s sólo soporta enteros de 32 bit en VALUES"
+ sw "Kidhibiti cha % -.64s kinaweza kutumia nambari kamili za biti 32 pekee katika VALUES"
swe "%-.64s stödjer endast 32 bitar i integers i VALUES"
ER_PLUGIN_IS_NOT_LOADED
chi "插件'%-.192s'未加载"
@@ -7253,24 +7772,28 @@ ER_PLUGIN_IS_NOT_LOADED
ger "Plugin '%-.192s' ist nicht geladen"
geo "დამატება '%-.192s' ჩატვირთული არაა"
spa "Enchufe (plugin) '%-.192s' no cargado"
+ sw "Programu-jalizi '%-.192s' haijapakiwa"
ER_WRONG_VALUE
chi "错误%-.32s值:'%-.128T'"
eng "Incorrect %-.32s value: '%-.128T'"
ger "Falscher %-.32s-Wert: '%-.128T'"
geo "%-.32s-ის არასწორი მნიშვნელობა: '%-.128T'"
spa "Incorrecto %-.32s valor: '%-.128T'"
+ sw "Thamani ya %-.32 si sahihi: '%-.128T'"
ER_NO_PARTITION_FOR_GIVEN_VALUE
chi "表没有%-.64s的分区"
eng "Table has no partition for value %-.64s"
ger "Tabelle hat für den Wert %-.64s keine Partition"
geo "ცხრილს მნიშვნელობისთვის %-.64s დანაყოფი არ გააჩნია"
spa "La tabla no tiene partición para valor %-.64s"
+ sw "Jedwali halina kizigeu cha thamani %-.64s"
ER_FILEGROUP_OPTION_ONLY_ONCE
chi "设置%s不能超过一次"
eng "It is not allowed to specify %s more than once"
ger "%s darf nicht mehr als einmal angegegeben werden"
geo "%s-ის მითითება მხოლოდ ერთხელ შეგიძლიათ"
spa "No se permite especificar %s más de unva vez"
+ sw "Hairuhusiwi kubainisha %s zaidi ya mara moja"
ER_CREATE_FILEGROUP_FAILED
chi "无法创建%s"
eng "Failed to create %s"
@@ -7278,6 +7801,7 @@ ER_CREATE_FILEGROUP_FAILED
geo "%s-ის შექმნის შეცდომა"
hindi "%s को बनाने में असफल रहे"
spa "No pude crear %s"
+ sw "Imeshindwa kuunda %s"
ER_DROP_FILEGROUP_FAILED
chi "未能DROP%s"
eng "Failed to drop %s"
@@ -7285,24 +7809,28 @@ ER_DROP_FILEGROUP_FAILED
geo "%s-ის წაშლის შეცდომა"
hindi "%s को हटाने में असफल रहे"
spa "No pude eliminar %s"
+ sw "Imeshindwa kufuta/kuangusha %s"
ER_TABLESPACE_AUTO_EXTEND_ERROR
chi "处理程序不支持表空间的自动扩展名"
eng "The handler doesn't support autoextend of tablespaces"
ger "Der Handler unterstützt keine automatische Erweiterung (Autoextend) von Tablespaces"
geo "დამმუშავებელს ცხრილის სივრცეების ავტომატური გაფართოების მხარდაჭერა არ გააჩნია"
spa "El manejador no soporta autoextensión de espacios de tabla"
+ sw "Kidhibiti hakiauni upanuzi otomatiki wa nafasi za jedwali"
ER_WRONG_SIZE_NUMBER
chi "尺寸参数被错误地指定,编号或表单10M"
eng "A size parameter was incorrectly specified, either number or on the form 10M"
ger "Ein Größen-Parameter wurde unkorrekt angegeben, muss entweder Zahl sein oder im Format 10M"
geo "ზომის პარამეტრი არასწორადაა მითითბული, ან რიცხვით, ან ფორმით '1M'"
spa "Se ha especificado de forma incorrecta un parámetro de medida o el número o en la forma 10M"
+ sw "Kigezo cha saizi kilibainishwa kimakosa, ama nambari au kwenye fomu 10M"
ER_SIZE_OVERFLOW_ERROR
chi "尺寸编号是正确的,但我们不允许数字部分超过20亿"
eng "The size number was correct but we don't allow the digit part to be more than 2 billion"
ger "Die Zahl für die Größe war korrekt, aber der Zahlanteil darf nicht größer als 2 Milliarden sein"
geo "ზომის სიდიდე სწორია, მაგრამ ამჟამად ჩვენ 2 მილიარდზე მეტი ნაწილის მხარდაჭერ არ გაგვაჩნია"
spa "El número de medida es correcto pero no permitimos que la parte del dígito tenga más de 2 billones"
+ sw "Nambari ya saizi ilikuwa sahihi lakini haturuhusu sehemu ya tarakimu kuwa zaidi ya bilioni 2"
ER_ALTER_FILEGROUP_FAILED
chi "未能改变:%s"
eng "Failed to alter: %s"
@@ -7310,42 +7838,49 @@ ER_ALTER_FILEGROUP_FAILED
geo "ცვლილების შეცდომა: %s"
hindi "%s को ALTER करने में असफल रहे"
spa "No pude alterar: %s"
+ sw "Imeshindwa kubadilisha: %s"
ER_BINLOG_ROW_LOGGING_FAILED
chi "将一行写入基于行的二进制日志失败"
eng "Writing one row to the row-based binary log failed"
ger "Schreiben einer Zeilen ins zeilenbasierte Binärlog fehlgeschlagen"
geo "მწკრივებზე დაფუძლებულ ბინარულ ჟურნალში ერთი მწკრივის ჩაწერის შეცდომა"
spa "Ha fallado el grabar una fila en historial (log) binario basado en fila"
+ sw "Kuandika safu mlalo moja kwa logi ya msingi ya safu mlalo kumeshindwa"
ER_BINLOG_ROW_WRONG_TABLE_DEF
chi "表定义主机和从站不匹配:%s"
eng "Table definition on master and slave does not match: %s"
ger "Tabellendefinition auf Master und Slave stimmt nicht überein: %s"
geo "მთავარ და დამორჩილებულ სერვერებზე ცხრილის აღწერა ერთმანეთს არ ემთხვევა: %s"
spa "La definición de tabla en maestro (master) y esclavo no coincide: %s"
+ sw "Ufafanuzi wa jedwali kwa bwana na mtumwa haulingani: %s"
ER_BINLOG_ROW_RBR_TO_SBR
chi "使用--log-slave-updates的从站必须使用基于行的二进制日志记录,以便能够复制基于行的二进制日志事件"
eng "Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events"
ger "Slave, die mit --log-slave-updates laufen, müssen zeilenbasiertes Loggen verwenden, um zeilenbasierte Binärlog-Ereignisse loggen zu können"
geo "დამორჩილებული, რომელიც --log-slave-updates პარამეტრითაა გაშვებული, მწკრივებზე დაფუძნებული ბინარული ჟურნალის მოვლენების რეპლიკაციისთვის მწკრივებზე-დამოკიდებულ ბინარულ ჟურნალს უნდა იყენებდეს"
spa "La ejecución esclava con --log-slave-updates debe de usar un historial (log) binario basado en fila para que pueda replicar eventos de historial (log) binario basados en fila"
+ sw "Mtumwa anayefanya kazi na --log-slave-updates lazima atumie uwekaji wa data aina ya safu mlalo kwenye kumbukumbu ili kuweza kuiga matukio ya kumbukumbu ya safu mlalo"
ER_EVENT_ALREADY_EXISTS
chi "事件'%-.192s'已经存在"
eng "Event '%-.192s' already exists"
ger "Event '%-.192s' existiert bereits"
geo "მოვლენა '%-.192s' უკვე არსებობს"
spa "El evento '%-.192s' ya existe"
+ sw "Tukio '%-.192s' tayari lipo"
ER_EVENT_STORE_FAILED
chi "无法存储事件%s。错误代码%M来自存储引擎"
eng "Failed to store event %s. Error code %M from storage engine"
ger "Speichern von Event %s fehlgeschlagen. Fehlercode der Speicher-Engine: %M"
geo "%s მოვლენის დამახსოვრების შეცდომა. საცავის ძრავიდან მიღებული შეცდომის კოდია %M"
spa "No pude almacenar evento %s. Código de error %M desde motor de almacenaje"
+ sw "Imeshindwa kuhifadhi tukio %s. Msimbo wa hitilafu %M kutoka kwa injini ya hifadhi"
ER_EVENT_DOES_NOT_EXIST
chi "未知事件'%-.192s'"
eng "Unknown event '%-.192s'"
ger "Unbekanntes Event '%-.192s'"
geo "უცნობი მოვლენა '%-.192s'"
spa "Evento desconocido '%-.192s'"
+ sw "Tukio lisilojulikana '%-.192s'"
ER_EVENT_CANT_ALTER
chi "无法改变事件'%-.192s'"
eng "Failed to alter event '%-.192s'"
@@ -7353,6 +7888,7 @@ ER_EVENT_CANT_ALTER
geo "მოვლენის ('%-.192s') ჩასწორების შეცდომა"
hindi "'%-.192s' EVENT को ALTER करने में असफल रहे"
spa "No pude alterar evento '%-.192s'"
+ sw "Imeshindwa kubadilisha tukio '% -.192s'"
ER_EVENT_DROP_FAILED
chi "未能DROP%s"
eng "Failed to drop %s"
@@ -7360,24 +7896,28 @@ ER_EVENT_DROP_FAILED
geo "%s-ის წაშლის შეცდომა"
hindi "%s को हटाने में असफल रहे"
spa "No pude eliminar %s"
+ sw "Imeshindwa kuangusha %s"
ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG
chi "INTERVAL为负或太大"
eng "INTERVAL is either not positive or too big"
ger "INTERVAL ist entweder nicht positiv oder zu groß"
geo "INTERVAL-ის მნიშვნელობა დადებითი არაა ან ძალიან დიდია"
spa "O INTERVAL no es positivo o es demasiado grande"
+ sw "INTERVAL sio chanya ama ni kubwa sana"
ER_EVENT_ENDS_BEFORE_STARTS
chi "ENDS无效的或在STARTS之前"
eng "ENDS is either invalid or before STARTS"
ger "ENDS ist entweder ungültig oder liegt vor STARTS"
geo "ENDS ან არასწორია, ან STARTS-ის წინაა"
spa "O ENDS es inválido o anterior a STARTS"
+ sw "ENDS ni batili au kabla ya STARTS"
ER_EVENT_EXEC_TIME_IN_THE_PAST
chi "事件执行时间在过去。事件已被禁用"
eng "Event execution time is in the past. Event has been disabled"
ger "Ausführungszeit des Events liegt in der Vergangenheit. Event wurde deaktiviert"
geo "მოვლენის შესრულების დრო წარსულშია. მოვლენა გაითიშა"
spa "El tiempo de ejecución de evento se encuentra en el pasado. El evento ha sido desactivado"
+ sw "Muda wa utekelezaji wa tukio iko kwa wakati uliyopita. Tukio limezimwa"
ER_EVENT_OPEN_TABLE_FAILED
chi "无法打开mysql.event"
eng "Failed to open mysql.event"
@@ -7385,20 +7925,24 @@ ER_EVENT_OPEN_TABLE_FAILED
geo "mysql.event-ის გახსნის შეცდომა"
hindi "mysql.event को खोलने में असफल रहे"
spa "No puede abrir mysql.event"
+ sw "Imeshindwa kufungua mysql.event"
ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
chi "没有提供DateTime表达式"
eng "No datetime expression provided"
ger "Kein DATETIME-Ausdruck angegeben"
geo "დრო/თარიღის გამოსახულება მითითებული არაა"
spa "No se ha suministrado expresión datetime"
+ sw "Hakuna usemi wa tarehe (datetime) uliotolewa"
ER_UNUSED_2
eng "You should never see it"
geo "ამას წესით ვერ უნდა ხედავდეთ"
spa "No lo debería vd de ver nunca"
+ sw "Hupaswi kuiona kamwe"
ER_UNUSED_3
eng "You should never see it"
geo "ამას წესით ვერასდროს უნდა ხედავდეთ"
spa "No lo debería vd de ver nunca"
+ sw "Hupaswi kuiona kamwe"
ER_EVENT_CANNOT_DELETE
chi "无法从mysql.event删除该事件"
eng "Failed to delete the event from mysql.event"
@@ -7406,35 +7950,41 @@ ER_EVENT_CANNOT_DELETE
geo "mysql.event-დან მოვლენის წაშლის შეცდომა"
hindi "EVENT को mysql.event से हटाने मैं असफल रहे"
spa "No pude borrar el evento desde mysql.event"
+ sw "Imeshindwa kufuta tukio kutoka kwa mysql.event"
ER_EVENT_COMPILE_ERROR
chi "在汇编事件的主体时出错"
eng "Error during compilation of event's body"
ger "Fehler beim Kompilieren des Event-Bodys"
geo "მოვლენის ტანის აგების შეცდომა"
spa "Error durante compilación de cuerpo de evento"
+ sw "Hitilafu wakati wa kukusanya mwili wa tukio"
ER_EVENT_SAME_NAME
chi "相同的旧活动名称"
eng "Same old and new event name"
ger "Alter und neuer Event-Name sind gleich"
geo "ძველი და ახალი მოვლენის სახელების იგივეა"
spa "Mismo nombre de evento viejo y nuevo"
+ sw "Jina lile lile la tukio la zamani na jipya"
ER_EVENT_DATA_TOO_LONG
chi "列'%s'数据太长"
eng "Data for column '%s' too long"
ger "Daten der Spalte '%s' zu lang"
geo "მონაცემები სვეტისთვის '%s' ძალიან გრძელია"
spa "Datos demasiado largos para la columna '%s'"
+ sw "Data ya safu wima ya '%s' ndefu sana"
ER_DROP_INDEX_FK
chi "无法删除索引'%-.192s':外部索引约束中需要它"
eng "Cannot drop index '%-.192s': needed in a foreign key constraint"
ger "Kann Index '%-.192s' nicht löschen: wird für eine Fremdschlüsselbeschränkung benötigt"
spa "No puedo eliminar índice '%-.192s': necesario en una restricción de clave foránea"
+ sw "Haiwezi kuangusha faharasa '%-.192s': inahitajika katika kizuizi cha ufunguo wa kigeni"
# When using this error message, use the ER_WARN_DEPRECATED_SYNTAX error
# code.
ER_WARN_DEPRECATED_SYNTAX_WITH_VER
chi "语法'%s'被弃用,将在Mariadb%s中删除。请使用%s"
eng "The syntax '%s' is deprecated and will be removed in MariaDB %s. Please use %s instead"
ger "Die Syntax '%s' ist veraltet und wird in MariaDB %s entfernt. Bitte benutzen Sie statt dessen %s"
+ sw "Sintaksia '%s' imeacha kutumika na itaondolewa katika MariaDB %s. Tafadhali tumia %s badala yake"
geo "სინტაქსი '%s' მოძველებულია და MariaDB %s-ში წაიშლება. გამოიეყენეთ %s"
spa "La sintaxis '%s' está obsoleta y será quitada en MariaDB %s. Por favor, use %s en su lugar"
ER_CANT_WRITE_LOCK_LOG_TABLE
@@ -7443,38 +7993,45 @@ ER_CANT_WRITE_LOCK_LOG_TABLE
ger "Eine Log-Tabelle kann nicht schreibgesperrt werden. Es ist ohnehin nur Lesezugriff möglich"
geo "ჟურნალის ცხრილის ჩაწერაზე დაბლოკვა შეუძლებელია. შესაძლებელია მხოლოდ წაკითხვა"
spa "No puede hacer bloqueo de escritura en una tabla de historial (log). Sólo es posible acceso de lectura"
+ sw "Huwezi kuandika-kufunga jedwali la kumbukumbu. Ufikiaji wa kusoma pekee unawezekana"
ER_CANT_LOCK_LOG_TABLE
chi "您无法使用带日志表的锁"
eng "You can't use locks with log tables"
ger "Log-Tabellen können nicht gesperrt werden"
geo "ჟურნალის ცხრილის დაბლოკვა შეუძლებელია"
spa "No puede usar bloqueos con tablas de historial (log)"
+ sw "Huwezi kutumia kufuli na jedwali za kumbukumbu"
ER_UNUSED_4
eng "You should never see it"
geo "ამას ვერ უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE
chi "mysql的列计数。%s是错误的。预期%d,找到%d。使用MariaDB%d创建,现在运行%d。请使用mariadb-upgrade来修复此错误"
eng "Column count of mysql.%s is wrong. Expected %d, found %d. Created with MariaDB %d, now running %d. Please use mariadb-upgrade to fix this error"
ger "Spaltenanzahl von mysql.%s falsch. %d erwartet, aber %d erhalten. Erzeugt mit MariaDB %d, jetzt unter %d. Bitte benutzen Sie mariadb-upgrade, um den Fehler zu beheben"
geo "mysql.%s-ის სვეტების რაოდენობა არასწორია. მოველოდი: %d, მივიღე: %d. შექმნილია MaraDB-ის ვერსიით %d, ახლა კი გაქვთ %d. am შეცდომის გასასწორებლად mariadb-upgrade გაუშვით"
spa "El contador de columnas de mysql.%s está equivocado. Se esperaba %d, hallado %d. Creado con MariaDB %d, ahora ejecuando %d. Por favor, use mariadb-upgrade para solucionar este error"
+ sw "Hesabu ya safu wima ya mysql.%s si sahihi. Ilitarajiwa %d, imepatikana %d. Iliundwa na MariaDB %d, sasa inatumikwa kwa %d. Tafadhali fanya uboreshaji wa mariadb kutumia mariadb-upgrade kurekebisha hitilafu hii"
ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
chi "当会话打开临时表时,无法切换出基于行的二进制日志格式"
eng "Cannot switch out of the row-based binary log format when the session has open temporary tables"
ger "Kann nicht aus dem zeilenbasierten Binärlog-Format herauswechseln, wenn die Sitzung offene temporäre Tabellen hat"
geo "როცა სესიას ღია დროებითი ცხრილები გააჩნია, მწკრივებზე დაფუძნებული ბინარული ჟურნალის ფორმატის გადართვა შეუძლებელია"
spa "No puedo conmutar fuera del formato de historial (log) binario basado en fila cuando la sesión ha abierto tablas temporales"
+ sw "Haiwezi kubadili kutoka kwa umbizo la logi ya safu mlalo wakati kipindi kina majedwali ya muda yaliyo wazi"
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
chi "无法更改存储函数或触发器内的二进制记录格式"
eng "Cannot change the binary logging format inside a stored function or trigger"
ger "Das Binärlog-Format kann innerhalb einer gespeicherten Funktion oder eines Triggers nicht geändert werden"
geo "შენახულიფუნქციის და ტრიგერის შიგნიდან ბინარული ჟურნალის ფორმატის შეცვლა შეუძლებელია"
spa "No puedo cambiar el formato de historial (log) binario dentro de funciones almacenadas o disparadores"
+ sw "Haiwezi kubadilisha umbizo la kumbukumbu ya mfumo ya jozi ndani ya kitendaji iliyohifadhiwa au kichochezi"
ER_UNUSED_13
eng "You should never see it"
geo "მას ვერ უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_PARTITION_NO_TEMPORARY
chi "无法使用分区创建临时表"
eng "Cannot create temporary table with partitions"
@@ -7482,12 +8039,14 @@ ER_PARTITION_NO_TEMPORARY
geo "დანაყოფების მქონე დროებითი ცხრილის შექმნა შეუძლებელია"
hindi "अस्थाई टेबल को पार्टिशन्स के साथ नहीं बनाया जा सकता"
spa "No puedo crear tabla temporal con particiones"
+ sw "Haiwezi kuunda meza ya muda na kizigeu"
ER_PARTITION_CONST_DOMAIN_ERROR
chi "分区常量超出分区功能域"
eng "Partition constant is out of partition function domain"
ger "Partitionskonstante liegt außerhalb der Partitionsfunktionsdomäne"
geo "დანაყოფის მუდმივა დანაყოფის ფუნქციის დომენის გარეთაა"
spa "La constante de partición está fuera del dominio de función de partición"
+ sw "Kiwango cha kugawa kiko nje ya kikoa cha kuhesabu"
swe "Partitionskonstanten är utanför partitioneringsfunktionens domän"
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
chi "不允许此分区功能"
@@ -7495,6 +8054,7 @@ ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
ger "Diese Partitionierungsfunktion ist nicht erlaubt"
geo "დაყოფის ეს ფუნქცია დაშვებული არაა"
spa "Esta función de partición no está permitida"
+ sw "Kitendaji hiki cha kugawa hakiruhusiwi"
swe "Denna partitioneringsfunktion är inte tillåten"
ER_DDL_LOG_ERROR
chi "DDL日志中的错误"
@@ -7503,12 +8063,14 @@ ER_DDL_LOG_ERROR
geo "შეცდომა DDL-ის ჟურნალში"
hindi "DDL लॉग में त्रुटि हुई"
spa "Error en historial (log) DDL"
+ sw "Kosa katika logi ya DDL"
ER_NULL_IN_VALUES_LESS_THAN
chi "VALUES LESS THAN不允许使用NULL"
eng "Not allowed to use NULL value in VALUES LESS THAN"
ger "In VALUES LESS THAN dürfen keine NULL-Werte verwendet werden"
geo "VALUES LESS THAN-ში NULL მნიშვნელობა დაუშვებელია"
spa "No autorizado a usar valor NULL en VALUES LESS THAN"
+ sw "Hairuhusiwi kutumia thamani NULL katika VALUES LESS THAN"
swe "Det är inte tillåtet att använda NULL-värden i VALUES LESS THAN"
ER_WRONG_PARTITION_NAME
chi "分区名称不正确"
@@ -7517,35 +8079,41 @@ ER_WRONG_PARTITION_NAME
geo "დანაყოფის არასწორი სახელი"
hindi "पार्टीशन का नाम गलत है"
spa "Nombre incorrecto de partición"
+ sw "Jina lisilo sahihi la kizigeu"
swe "Felaktigt partitionsnamn"
ER_CANT_CHANGE_TX_CHARACTERISTICS 25001
chi "交易正在进行,无法更改事务特性"
eng "Transaction characteristics can't be changed while a transaction is in progress"
geo "ტრანზაქციის მიმდინარეობისას მისი მახასიათებლების შეცვლა შეუძლებელია"
spa "No se pueden cambiar las característias de transacción mientras que una transacción se ecuentre en proceso"
+ sw "Sifa za muamala haziwezi kubadilishwa wakati shughuli inaendelea"
ER_DUP_ENTRY_AUTOINCREMENT_CASE
chi "ALTER TABLE表会导致AUTO_INCREMENT重建,导致重复的条目'%-.192T'用于索引'%-.192s'"
eng "ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '%-.192T' for key '%-.192s'"
ger "ALTER TABLE führt zur Neusequenzierung von auto_increment, wodurch der doppelte Eintrag '%-.192T' für Schlüssel '%-.192s' auftritt"
spa "ALTER TABLE causa resecuenciado de auto_incremento resultando en entrada duplicada '%-.192T' para la clave '%-.192s'"
+ s "ALTER TABLE husababisha mfuatano auto_increment kunfanywa tena, na kusababisha ingizo nakala '%-.192T' kwa ufunguo '%-.192s'"
ER_EVENT_MODIFY_QUEUE_ERROR
chi "内部调度器错误%d"
eng "Internal scheduler error %d"
ger "Interner Scheduler-Fehler %d"
geo "შიდა დამგეგმავის შეცდომა %d"
spa "Error en organizador interno %d"
+ sw "Hitilafu ya kiratibu ya ndani %d"
ER_EVENT_SET_VAR_ERROR
chi "在开始/停止调度程序期间出错。错误代码%M"
eng "Error during starting/stopping of the scheduler. Error code %M"
ger "Fehler während des Startens oder Anhalten des Schedulers. Fehlercode %M"
geo "შეცდომა დამგეგმავის გაშვება/გაჩერებისას. შეცდომის კოდია %M"
spa "Error durante arranque/parada del organizador. Código de error %M"
+ sw "Hitilafu wakati wa kuanzisha/kusimamisha kipanga ratiba. Msimbo wa hitilafu %M"
ER_PARTITION_MERGE_ERROR
chi "引擎不能用于分区表"
eng "Engine cannot be used in partitioned tables"
ger "Engine kann in partitionierten Tabellen nicht verwendet werden"
geo "ძრავას დაყოფილ ცხრილებში ვერ გამოიყენებთ"
spa "No se puede usar el motor en tablas particionadas"
+ sw "Injini haiwezi kutumika katika jedwali zilizogawanywa"
swe "Engine inte användas i en partitionerad tabell"
ER_CANT_ACTIVATE_LOG
chi "无法激活'%-.64s'日志"
@@ -7553,18 +8121,21 @@ ER_CANT_ACTIVATE_LOG
ger "Kann Logdatei '%-.64s' nicht aktivieren"
geo "'%-.64s' ჟურნალის აქტივაცია შეუძლებელია"
spa "No puedo activar historial (log) '%-.64s'"
+ sw "Haiwezi kuwezesha kumbukumbu ya '% -.64s'"
ER_RBR_NOT_AVAILABLE
chi "服务器不是基于行的复制构建的"
eng "The server was not built with row-based replication"
ger "Der Server wurde nicht mit zeilenbasierter Replikation gebaut"
geo "სერვერის აგების დროს მწკრივებზე დაფუძნებული რეპლიკაცია ჩართული არ იყო"
spa "El servidor no ha sido construido con réplica basada en fila"
+ sw "Seva haikujengwa na urudufu wa msingi wa safu"
ER_BASE64_DECODE_ERROR
chi "Base64字符串的解码失败"
eng "Decoding of base64 string failed"
ger "Der Server hat keine zeilenbasierte Replikation"
geo "base64 სტრიქონის გაშიფვრის შეცდომა"
spa "Ha fallado la decodificación de cadena base64"
+ sw "Decoding ya mfuatano wa herufi wa base64 haikufaulu"
swe "Avkodning av base64 sträng misslyckades"
ER_EVENT_RECURSION_FORBIDDEN
chi "EVENT主体存在时EVENT DDL语句递归被禁止"
@@ -7572,18 +8143,21 @@ ER_EVENT_RECURSION_FORBIDDEN
ger "Rekursivität von EVENT-DDL-Anweisungen ist unzulässig wenn ein Hauptteil (Body) existiert"
geo "როცა სხეული არსებობს, EVENT DDL გამოსახულებების რეკურსია დაშვებული არაა"
spa "Se prohiben sentencias de EVENT DDL cuando se encuentra presente el cuerpo"
+ sw "Urejeshaji wa taarifa za EVENT DDL ni marufuku wakati mwili upo"
ER_EVENTS_DB_ERROR
chi "无法继续,因为事件调度程序已禁用"
eng "Cannot proceed, because event scheduler is disabled"
ger "Die Operation kann nicht fortgesetzt werden, da Event Scheduler deaktiviert ist."
geo "გაგრძელება შეუძლებელია, რადგან მოვლენების დამგეგმავი გამორთულია"
spa "No puedo proceder porque el organizado de eventos está desactivado"
+ sw "Haiwezi kuendelea, kwa sababu kipanga tukio kimezimwa"
ER_ONLY_INTEGERS_ALLOWED
chi "这里只允许整数作为数字"
eng "Only integers allowed as number here"
ger "An dieser Stelle sind nur Ganzzahlen zulässig"
geo "აქ მხოლოდ მთელი რიცხვის გამოყენება შეგიძლიათ"
spa "Sólo se permiten enteros como número aquí"
+ sw "Nambari kamili pekee zinazoruhusiwa kama nambari hapa"
ER_UNSUPORTED_LOG_ENGINE
chi "存储引擎%s不能用于日志表"
eng "Storage engine %s cannot be used for log tables"
@@ -7591,38 +8165,45 @@ ER_UNSUPORTED_LOG_ENGINE
geo "ჟურნალის ცხრილებისთვის საცავის ძრავას %s ვერ გამოიყენებთ"
hindi "स्टोरेज इंजन %s को लॉग टेबल्स के लिए इस्तेमाल नहीं किया जा सकता है"
spa "No se puede usar el motor de almacenaje %s para tablas de historial (log)"
+ sw "Injini ya hifadhi %s haiwezi kutumika kwa majedwali ya kumbukumbu"
ER_BAD_LOG_STATEMENT
chi "如果启用日志记录,则无法'%s'日志表"
eng "You cannot '%s' a log table if logging is enabled"
ger "Sie können eine Logtabelle nicht '%s', wenn Loggen angeschaltet ist"
geo "თუ ჟურნალი ჩართულია, მის ცხრილზე '%s' ოპერაციას ვერ შეასრულებთ"
spa "No puede '%s' una tabla de historial (log) cuando se encuentra activado el llevar historial (log)"
+ sw "Huwezi '%s' jedwali la kumbukumbu ikiwa uwekaji wa data ndani ya kumbukumbu umewezeshwa"
ER_CANT_RENAME_LOG_TABLE
chi "无法重命名'%s'。启用日志记录时,重命名日志表必须重命名两个表:日志表到存档表,另一个表返回'%s'"
eng "Cannot rename '%s'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to '%s'"
ger "Kann '%s' nicht umbenennen. Wenn Loggen angeschaltet ist, müssen zwei Tabellen umbenannt werden: die Logtabelle zu einer Archivtabelle, und eine weitere Tabelle zu '%s'"
spa "No puedo renombrar '%s'. Si se encuentra activo el llevar historial (log), el renombrar a/desde tabla de historial (log) debe de renombrar dos tablas: la tabla de historial (log) a una tabla archivo y otra tabla de vuelta a '%s'"
+ sw "Haiwezi kubadilisha jina la '%s'. Uwekaji kumbukumbu unapowezeshwa, ubadilishe jina kwa/kutoka kwa jedwali la kumbukumbu lazima ubadilishe jedwali mbili: jedwali la kumbukumbu hadi jedwali la kumbukumbu aina ya archive na jedwali lingine kurudi kwenye '%s'"
ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT 42000
chi "对本机函数的呼叫中的参数计数不正确'%-.192s'"
eng "Incorrect parameter count in the call to native function '%-.192s'"
ger "Falsche Anzahl von Parametern beim Aufruf der nativen Funktion '%-.192s'"
spa "Contador de parámetro incorrecto en la llamada a función nativa '%-.192s'"
+ sw "Hesabu isiyo sahihi ya kigezo katika wito wa kitendaji asili '%-.192s'"
ER_WRONG_PARAMETERS_TO_NATIVE_FCT 42000
chi "对本机函数'%-.192s'呼叫中的参数不正确"
eng "Incorrect parameters in the call to native function '%-.192s'"
ger "Falscher Parameter beim Aufruf der nativen Funktion '%-.192s'"
spa "Parámetros incorrectos en la llamada a función nativa '%-.192s'"
+ sw "Vigezo visivyo sahihi katika wito kwa kitendaji asili '%-.192s'"
ER_WRONG_PARAMETERS_TO_STORED_FCT 42000
chi "呼叫中的参数不正确为存储函数'%-.192s'"
eng "Incorrect parameters in the call to stored function '%-.192s'"
ger "Falsche Parameter beim Aufruf der gespeicherten Funktion '%-.192s'"
geo "არასწორი პარამეტრები დამახსოვრებული ფუნქციის გამოძახებისას '%-.192s'"
spa "Parámetros incorrectos en la llamada a función almacenada '%-.192s'"
+ sw "Vigezo visivyo sahihi katika wito wa kitendaji kilichohifadhiwa '%-.192s'"
ER_NATIVE_FCT_NAME_COLLISION
chi "此功能'%-.192s'具有与本机函数相同的名称"
eng "This function '%-.192s' has the same name as a native function"
ger "Die Funktion '%-.192s' hat denselben Namen wie eine native Funktion"
spa "Esta función '%-.192s' tiene el mismo nombre que una función nativa"
+ sw "Kitendaji hiki cha '%-.192s' kina jina sawa na kitendaji asili"
# When using this error message, use the ER_DUP_ENTRY error code. See, for
# example, code in handler.cc.
ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009
@@ -7649,6 +8230,7 @@ ER_DUP_ENTRY_WITH_KEY_NAME 23000 S1009
serbian "Dupliran unos '%-.64T' za ključ '%-.192s'"
slo "Opakovaný kľúč '%-.64T' (číslo kľúča '%-.192s')"
spa "Entrada duplicada '%-.64T' para la clave '%-.192s'"
+ sw "Ingizo rudufu '% -.64T' kwa ufunguo wa '%-.192s'"
swe "Dublett '%-.64T' för nyckel '%-.192s'"
ukr "Дублюючий запис '%-.64T' для ключа '%-.192s'"
ER_BINLOG_PURGE_EMFILE
@@ -7657,33 +8239,39 @@ ER_BINLOG_PURGE_EMFILE
ger "Zu viele offene Dateien, bitte führen Sie den Befehl noch einmal aus"
geo "გახსნილია მეტისმეტად ბევრი ფაილი. ბრძანება თავიდან გაუშვით"
spa "Demasiados ficheros/archivos abiertos. Por favor, ejecute el comando otra vez"
+ sw "Faili nyingi zimefunguliwa, tafadhali tekeleza amri tena"
ER_EVENT_CANNOT_CREATE_IN_THE_PAST
chi "事件执行时间在过去,并ON COMPLETION NOT PRESERVE。创建后,事件立即丢弃"
eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation"
ger "Ausführungszeit des Events liegt in der Vergangenheit, und es wurde ON COMPLETION NOT PRESERVE gesetzt. Das Event wurde unmittelbar nach Erzeugung gelöscht"
spa "El tiempo de jecución del evento se encuentra en el pasado y está configurado ON COMPLETION NOT PRESERVE. El evento fue eliminado inmediatamente tras su creación"
+ sw "Muda wa utekelezaji wa tukio umepita na COMPLETION NOT PRESERVE umewekwa. Tukio hilo liliondolewa mara tu baada ya kuundwa"
ER_EVENT_CANNOT_ALTER_IN_THE_PAST
chi "事件执行时间在过去,并ON COMPLETION NOT PRESERVE。事件没有改变。指定将来的时间"
eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was not changed. Specify a time in the future"
ger "Execution Zeitpunkt des Ereignisses in der Vergangenheit liegt, und es war NACH ABSCHLUSS Set nicht erhalten. Die Veranstaltung wurde nicht verändert. Geben Sie einen Zeitpunkt in der Zukunft"
spa "El tiempo de jecución del evento se encuentra en el pasado y está configurado ON COMPLETION NOT PRESERVE. El evento no fue cambiado. Especifique un tiempo del futuro"
+ sw "Muda wa utekelezaji wa tukio ni wa zamani na COMPLETION NOT PRESERVE umewekwa. Tukio halikubadilishwa. Bainisha muda katika wakati ijayo"
ER_SLAVE_INCIDENT
chi "事件%s发生在master上。消息:%-.64s"
eng "The incident %s occurred on the master. Message: %-.64s"
ger "Der Vorfall %s passierte auf dem Master. Meldung: %-.64s"
geo "მთავარი სერვერის ინციდენტი %s. შეტყობინება: %-.64s"
spa "Ha ocurrido un incidente %s en el maestro (master). Mensaje: %-.64s"
+ sw "Tukio %s lilitokea kwa bwana. Ujumbe: %-.64s"
ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
chi "表对某些现有值没有分区"
eng "Table has no partition for some existing values"
ger "Tabelle hat für einige bestehende Werte keine Partition"
geo "ზოგიერთი არსებული მნიშვნელობისთვის ცხრილს დანაყოფი არ გააჩნია"
spa "La tabla no tiene partición para algunos valores existentes"
+ sw "Jedwali halina kizigeu kwa baadhi ya thamani yaliyopo"
ER_BINLOG_UNSAFE_STATEMENT
chi "自从BINLOG_FORMAT =STATEMENT以来,使用语句格式写入二进制日志的不安全语句。%s."
eng "Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. %s"
ger "Unsichere Anweisung ins Binärlog geschrieben, weil Anweisungsformat BINLOG_FORMAT = STATEMENT. %s"
spa "Se ha grabado una sentencia no segura en historial (log) binario usando el formato de sentencia desde BINLOG_FORMAT = STATEMENT. %s"
+ sw "Taarifa isiyo salama imeandikwa kwa logi ya jozi kwa kutumia umbizo la taarifa kwa sababu BINLOG_FORMAT = STATEMENT. %s"
swe "Detta är inte säkert att logga i statement-format, för BINLOG_FORMAT = STATEMENT. %s"
ER_SLAVE_FATAL_ERROR
chi "致命错误:%s"
@@ -7691,18 +8279,21 @@ ER_SLAVE_FATAL_ERROR
ger "Fataler Fehler: %s"
geo "ფატალური შეცდომა: %s"
spa "Error fatal: %s"
+ sw "Hitilafu mbaya: %s"
ER_SLAVE_RELAY_LOG_READ_FAILURE
chi "relay日志读取失败:%s"
eng "Relay log read failure: %s"
ger "Relaylog-Lesefehler: %s"
geo "RelayLog-ის წაკითხვის შეცდომა: %s"
spa "Fallo de lectura en historial (log) de reenvío: %s"
+ sw "Imeshindwa kusoma kumbukumbu ya relay: %s"
ER_SLAVE_RELAY_LOG_WRITE_FAILURE
chi "relay日志写入失败:%s"
eng "Relay log write failure: %s"
ger "Relaylog-Schreibfehler: %s"
geo "RelayLog-ში ჩაწერის შეცდომა: %s"
spa "Fallo de grabación en historial (log) de reenvío: %s"
+ sw "Kushindwa kwa kuandika katika logi ya relay: %s"
ER_SLAVE_CREATE_EVENT_FAILURE
chi "无法创建%s"
eng "Failed to create %s"
@@ -7710,183 +8301,215 @@ ER_SLAVE_CREATE_EVENT_FAILURE
geo "%s-ის შექმნის შეცდომა"
hindi "%s को बनाने मैं असफल रहे"
spa "Fallo al crear %s"
+ sw "Imeshindwa kuunda %s"
ER_SLAVE_MASTER_COM_FAILURE
chi "Master命令%s失败:%s"
eng "Master command %s failed: %s"
ger "Master-Befehl %s fehlgeschlagen: %s"
geo "მთავარი სერვერის ბრძანება %s ავარიულად დასრულდა: %s"
spa "El comando maestro (master) %s ha fallado: %s"
+ sw "Amri ya mkubwa %s imeshindwa: %s"
ER_BINLOG_LOGGING_IMPOSSIBLE
chi "二进制记录不可能。消息:%s"
eng "Binary logging not possible. Message: %s"
ger "Binärlogging nicht möglich. Meldung: %s"
geo "ბინარული ჟურნალი შეუძლებელია. შეტყობინება: %s"
spa "No es posible llevar historial (log) binario. Mensaje: %s"
+ sw "Uwekaji katika kumbukumbu ya mfumo wa jozi hauwezekani. Ujumbe: %s"
ER_VIEW_NO_CREATION_CTX
chi "View%`s.%`s没有创建上下文"
eng "View %`s.%`s has no creation context"
ger "View %`s.%`s hat keinen Erzeugungskontext"
geo "ხედს %`s.%`s შექმნის კონტექსტი არ გააჩნია"
spa "La vista %`s.%`s no tiene contexto de creación"
+ sw "Tazama %`s.%`s haina muktadha wa uundaji"
ER_VIEW_INVALID_CREATION_CTX
chi "Creation View%`s.%`s的上下文无效"
eng "Creation context of view %`s.%`s is invalid"
ger "Erzeugungskontext des Views%`s.%`s ist ungültig"
geo "ხედის %`s.%`s შექნის კონტექსტი არასწორია"
spa "El contexto de creación de la vista %`s.%`s es inválido"
+ sw "Muktadha wa uundaji wa tazama %`s.%`s ni batili"
ER_SR_INVALID_CREATION_CTX
chi "存储例程%`s.%`s的创建上下文无效"
eng "Creation context of stored routine %`s.%`s is invalid"
ger "Erzeugungskontext der gespeicherten Routine%`s.%`s ist ungültig"
geo "დამახსოვრებული ქვეპროგრამის %`s.%`s შექმნის კონტექსტი არასწორია"
spa "El contexto de creación de la rutina almacenada %`s.%`s es inválido"
+ sw "Muktadha wa uundaji wa utaratibu uliohifadhiwa %`s.%`s ni batili"
ER_TRG_CORRUPTED_FILE
chi "表的trg文件损坏了。%`s.%`s"
eng "Corrupted TRG file for table %`s.%`s"
ger "Beschädigte TRG-Datei für Tabelle %`s.%`s"
geo "დაზიანებული TRG ფაილი ცხრილისთვის %`s.%`s"
spa "Fichero/archivo TRG estropeado para la tabla %`s.%`s`"
+ sw "Faili ya TRG ya jedwali %`s.%`s imeharibika"
ER_TRG_NO_CREATION_CTX
chi "表%`s.%`s的触发器没有创建上下文"
eng "Triggers for table %`s.%`s have no creation context"
ger "Trigger für Tabelle %`s.%`s haben keinen Erzeugungskontext"
geo "ტრიგერებს ცხრილისთვის %`s.%`s შექმნის კონტექსტი არ გააჩნიათ"
spa "Los disparadores para la tabla %`s.%`s no tienen contexto de creación"
+ sw "Vichochezi vya jedwali %`s.%`s havina muktadha wa uundaji"
ER_TRG_INVALID_CREATION_CTX
chi "触发表%`s.%`s的创建上下文无效"
eng "Trigger creation context of table %`s.%`s is invalid"
ger "Trigger-Erzeugungskontext der Tabelle %`s.%`s ist ungültig"
geo "ტრიგერის შექმნის კონტექსტი ცხრილისთვის %`s.%`s არასწორია"
spa "El contexto de creación del disparador de la tabla %`s.%`s es inválido"
+ sw "Muktadha wa uundaji wa kichochezi cha jedwali %`s.%`s ni batili"
ER_EVENT_INVALID_CREATION_CTX
chi "事件%`s.%`s的创建上下文无效"
eng "Creation context of event %`s.%`s is invalid"
ger "Erzeugungskontext des Events %`s.%`s ist ungültig"
geo "მოვლენის %`s.%`s შექმნის კონტექსტი არასწორია"
spa "El contexto de creación del evento %`s.%`s es inválido"
+ sw "Muktadha wa uundaji wa tukio %`s.%`s ni batili"
ER_TRG_CANT_OPEN_TABLE
chi "无法打开触发%`s.%`s的表"
eng "Cannot open table for trigger %`s.%`s"
ger "Kann Tabelle für den Trigger %`s.%`s nicht öffnen"
geo "ცხრილის გახსნის შეცდომა ტრიგერისთვის %`s.%`s"
spa "No puedo abrir tabla para disparador %`s.%`s"
+ sw "Haiwezi kufungua jedwali ya kichochezi %`s.%`s"
ER_CANT_CREATE_SROUTINE
chi "无法创建存储过程%`s。检查警告"
eng "Cannot create stored routine %`s. Check warnings"
ger "Kann gespeicherte Routine %`s nicht erzeugen. Beachten Sie die Warnungen"
geo "შენახული ქვეპროგრამის %`s შექმნის შეცდომა. შეამოწმეთ გაფრთხილებები"
spa "No puedo crear rutina alnacenada %`s. Revise los avisos"
+ sw "Haiwezi kuunda utaratibu uliohifadhiwa %`s. Angalia maonyo"
ER_UNUSED_11
eng "You should never see it"
geo "ამას ვერ უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT
chi "类型%s的Binlog语句未在格式描述binlog语句之前"
eng "The BINLOG statement of type %s was not preceded by a format description BINLOG statement"
ger "Der BINLOG-Anweisung vom Typ %s ging keine BINLOG-Anweisung zur Formatbeschreibung voran"
spa "La sentencia BINLOG del tipo `%s` no ha sido precedida por una sentencia de descripción de formato BINLOG"
+ sw "Taarifa ya BINLOG ya aina %s haikutanguliwa na maelezo ya umbizo taarifa ya BINLOG"
ER_SLAVE_CORRUPT_EVENT
chi "检测到损坏的复制事件"
eng "Corrupted replication event was detected"
ger "Beschädigtes Replikationsereignis entdeckt"
geo "აღმოჩენილია დაზიანებული რეპლიკაციის მოვლენა"
spa "Se ha detectado un evento de réplica estropeado"
+ sw "Tukio mbovu la urudufishaji limegunduliwa"
ER_LOAD_DATA_INVALID_COLUMN
chi "LOAD DATA中的列引用(%-.64s)无效"
eng "Invalid column reference (%-.64s) in LOAD DATA"
ger "Ungültige Spaltenreferenz (%-.64s) bei LOAD DATA"
geo "არასწორი სვეტის მიმართვა (%-.64s) LOAD DATA-ში"
spa "Referencia inválida a columna (%-.64s) en LOAD DATA"
+ sw "Rejeleo la safuwima batili (% -.64s) katika LOAD DATA"
ER_LOG_PURGE_NO_FILE
chi "未找到清除的log%s"
eng "Being purged log %s was not found"
ger "Zu bereinigende Logdatei %s wurde nicht gefunden"
geo "წასაშლელი ჟურნალი %s ვერ ვიპოვე"
spa "No ha sido hallado historial (log) %s siendo purgado"
+ sw "logi ya kusafishwa %s haikupatikana"
ER_XA_RBTIMEOUT XA106
chi "XA_RBTIMEOUT:交易分支回滚:花了太久了"
eng "XA_RBTIMEOUT: Transaction branch was rolled back: took too long"
ger "XA_RBTIMEOUT: Transaktionszweig wurde zurückgerollt: Zeitüberschreitung"
geo "XA_RBTIMEOUT: ტრანზაქციის ბრენჩი დაბრუნდა: მეტისმეტად დიდი დრო დასჭირდა"
spa "XA_RBTIMEOUT: Rama de transacción ha sido retrocedida (rolled back): transcurrido demasiado tiempo"
+ sw "XA_RBTIMEOUT: Tawi la muamala lilirejeshwa: ilichukua muda mrefu sana"
ER_XA_RBDEADLOCK XA102
chi "XA_RBDEADLOCK:交易分支回滚:检测到死锁"
eng "XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected"
ger "XA_RBDEADLOCK: Transaktionszweig wurde zurückgerollt: Deadlock entdeckt"
geo "XA_RBDEADLOCK: ტრანაქციის ბრენჩი დაბრუნდა: აღმოჩენილია უსასრულო ციკლი"
spa "XA_RBDEADLOCK: Rama de transacción ha dido retrocedida (rolled back): se ha detectado estancamiento (deadlock)"
+ sw "XA_RBDEADLOCK: Tawi la muamala lilirejeshwa: makataa yamegunduliwa"
ER_NEED_REPREPARE
chi "prepared statement需要重新准备"
eng "Prepared statement needs to be re-prepared"
ger "Vorbereitete Anweisungen müssen noch einmal vorbereitet werden"
geo "საჭიროა მომზადებული გამოსახულება თავიდან მოამზადოთ"
spa "Sentencia preparada necesita volver a ser preparada"
+ sw "Taarifa iliyotayarishwa inahitaji kutayarishwa upya"
ER_DELAYED_NOT_SUPPORTED
chi "表'%-.192s'不支持延迟选项"
eng "DELAYED option not supported for table '%-.192s'"
ger "Die DELAYED-Option wird für Tabelle '%-.192s' nicht unterstützt"
geo "ცხრილისთვის '%-.192s' პარამეტრი DELAYED მხარდაჭერილი არაა"
spa "Opción DELAYED no soportada para la tabla '%-.192s'"
+ sw "Chaguo la DELAYED halitumiki kwa jedwali la '%-.192s'"
WARN_NO_MASTER_INFO
eng "There is no master connection '%.*s'"
ger "Die Master-Info-Struktur existiert nicht '%.*s'"
geo "მთავარ სერვერთან მიერთება '%.*s' არ არსებობს"
spa "No existe conexión maestra '%.*s'"
+ sw "Hakuna muunganisho mkuu '%.*s'"
WARN_OPTION_IGNORED
eng "<%-.64s> option ignored"
ger "Option <%-.64s> ignoriert"
geo "პარამეტრი <%-.64s> იგნორირებულია"
spa "Opción <%-.64s> ignorada"
+ sw "<%-.64s> chaguo limepuuzwa"
ER_PLUGIN_DELETE_BUILTIN
chi "内置插件无法删除"
eng "Built-in plugins cannot be deleted"
ger "Eingebaute Plugins können nicht gelöscht werden"
geo "ჩაშენებული დამატებების წაშლა შეუძლებელია"
spa "No se pueden borrar los enchufes (plugins) internos"
+ sw "Programu-jalizi zilizojengwa haziwezi kufutwa"
WARN_PLUGIN_BUSY
chi "插件很忙,将在关机时卸载"
eng "Plugin is busy and will be uninstalled on shutdown"
ger "Plugin wird verwendet und wird erst beim Herunterfahren deinstalliert"
geo "დამატება დაკავებულია და გამორთვისას წაიშლება"
spa "El enchufe (plugin) está ocupado y será desinstalado cuando se apague"
+ sw "Programu-jalizi ina shughuli nyingi na itatolewa wakati wa kuzima"
ER_VARIABLE_IS_READONLY
chi "%s变量'%s'是只读的。使用set%s付值"
eng "%s variable '%s' is read-only. Use SET %s to assign the value"
ger "%s Variable '%s' ist nur lesbar. Benutzen Sie SET %s, um einen Wert zuzuweisen"
geo "%s ცვლადი '%s' მხოლოდ წაკითხვადია. მნიშვნელობის მისანიჭებლად გამოიყენეთ ბრძანება SET %s"
spa "%s variable '%s' es de sólo lectura. Use SET %s para asignar el valor"
+ sw "%s variable '%s' ni ya kusoma tu. Tumia SET %s kugeuza thamani"
ER_WARN_ENGINE_TRANSACTION_ROLLBACK
chi "存储引擎%s不支持此语句的回滚。交易回滚并必须重新启动"
eng "Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted"
ger "Speicher-Engine %s unterstützt für diese Anweisung kein Rollback. Transaktion wurde zurückgerollt und muss neu gestartet werden"
spa "El motor de almacenaje %s no soporta retroceso (rollback) para esta sentencia. Transacción retrocedida (rolled back) y debe de ser rearrancada"
+ sw "Injini ya hifadhi %s haiauni urejeshaji wa taarifa hii. Muamala umerejeshwa na lazima uanzishwe upya"
ER_SLAVE_HEARTBEAT_FAILURE
chi "意外的master心跳数据:%s"
eng "Unexpected master's heartbeat data: %s"
ger "Unerwartete Daten vom Heartbeat des Masters: %s"
geo "მთავარი სერვერის გულისცემის მოულოდნელი მონაცემები: %s"
spa "Datos inesperados de latido (heartbeat) de maestro (master): %s"
+ sw "Data isiyotarajiwa ya mapigo ya moyo ya bwana: %s"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
chi "心跳周期的请求值是负的或超过允许的最大值(%u秒)"
eng "The requested value for the heartbeat period is either negative or exceeds the maximum allowed (%u seconds)"
geo "გულისცემის პერიოდის მოთოხვნილი მნიშვნელობა ან უარყოფითა, ან მაქსიმალურ დაშვებულ მნიშვნელობას (%u წამი) აჭარბებს"
spa "El valor requerido para el período de latido o es negativo o excede al máximo permitido (%u segundos)"
+ sw "Thamani iliyoombwa kwa kipindi cha mpigo wa moyo ni hasi au inazidi kiwango cha juu kinachoruhusiwa (sekunde %u)"
ER_UNUSED_14
eng "You should never see it"
geo "ამას ვერ უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_CONFLICT_FN_PARSE_ERROR
chi "解析冲突功能时出错。消息:%-.64s"
eng "Error in parsing conflict function. Message: %-.64s"
ger "Fehler beim Parsen einer Konflikt-Funktion. Meldung: %-.64s"
geo "კონფლიქტური ფუნქციის დამუშავების შეცდომა. შეტყობინება: %-.64s"
spa "Error al analizar función de conflicto. Mensaje: %-.64s"
+ sw "Hitilafu katika kuchanganua kitendaji cha mzozo. Ujumbe: %-.64s"
ER_EXCEPTIONS_WRITE_ERROR
chi "写入异常表失败。消息:%-.128s"
eng "Write to exceptions table failed. Message: %-.128s""
ger "Schreiben in Ausnahme-Tabelle fehlgeschlagen. Meldung: %-.128s""
geo "გამონაკლისების ცხრილში ჩაწერის შეცდომა. შეტყობინება: %-.128s""
spa "Ha fallado el grabar en tabla de excepciones. Mensaje: %-.128s""
+ sw "Imeshindwa kuandika kwenye jedwali la vighairi. Ujumbe: %-.128s""
ER_TOO_LONG_TABLE_COMMENT
chi "表格备注'%-.64s'太长(max =%u)"
eng "Comment for table '%-.64s' is too long (max = %u)"
@@ -7894,6 +8517,7 @@ ER_TOO_LONG_TABLE_COMMENT
geo "კომენტარი ცხრილისთვის '%-.64s' ძალიან გრძელია (მაქს. = %u)"
por "Comentário para a tabela '%-.64s' é longo demais (max = %u)"
spa "El comentario para tabla '%-.64s' es demasiado largo (máx = %u)"
+ sw "Maoni ya jedwali '% -.64s' ni marefu sana (max = %u)"
ER_TOO_LONG_FIELD_COMMENT
chi "字段'%-.64s'太长(max =%u)"
eng "Comment for field '%-.64s' is too long (max = %u)"
@@ -7901,12 +8525,14 @@ ER_TOO_LONG_FIELD_COMMENT
geo "კომენტარი ველისთვის '%-.64s' ძალიან გრძელია (მაქს. = %u)"
por "Comentário para o campo '%-.64s' é longo demais (max = %u)"
spa "El comentario para el campo '%-.64s' es demasiado largo (máx = %u)"
+ sw "Maoni ya sehemu '% -.64s' ni marefu sana (max = %u)"
ER_FUNC_INEXISTENT_NAME_COLLISION 42000
chi "FUNCTION %s不存在。在参考手册中查看“函数名称解析”部分"
eng "FUNCTION %s does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual"
ger "FUNCTION %s existiert nicht. Erläuterungen im Abschnitt 'Function Name Parsing and Resolution' im Referenzhandbuch"
geo "FUNCTION %s არ არსებობს. სახელმძღვანელოში 'ფუნქციის სახელის დამუშავების და გადაჭრის' სექცია მოძებნეთ"
spa "La FUNCTION %s no existe. Revise la sección de 'Function Name Parsing and Resolution' en el Manual de Referencia"
+ sw "FUNCTION %s haipo. Angalia sehemu ya 'Jina la Kitendaji Uchanganuzi na Utatuzi' katika Mwongozo wa Marejeleo"
# When updating these, please update EXPLAIN_FILENAME_MAX_EXTRA_LENGTH in
# sql_table.h with the new maximal additional length for explain_filename.
ER_DATABASE_NAME
@@ -7916,6 +8542,7 @@ ER_DATABASE_NAME
geo "მონაცემთა ბაზა"
hindi "डेटाबेस"
spa "Base de datos"
+ sw "Hifadhidata"
swe "Databas"
ER_TABLE_NAME
chi "表"
@@ -7924,6 +8551,7 @@ ER_TABLE_NAME
geo "ცხრილი"
hindi "टेबल"
spa "Tabla"
+ sw "Jedwali"
swe "Tabell"
ER_PARTITION_NAME
chi "分区"
@@ -7932,6 +8560,7 @@ ER_PARTITION_NAME
geo "დანაყოფი"
hindi "पार्टीशन"
spa "Partición"
+ sw "Kizigeu"
swe "Partition"
ER_SUBPARTITION_NAME
chi "下分区"
@@ -7940,6 +8569,7 @@ ER_SUBPARTITION_NAME
geo "ქვედანაყოფი"
hindi "सब-पार्टीशन"
spa "Subpartición"
+ sw "Kizigeu ndogo"
swe "Subpartition"
ER_TEMPORARY_NAME
chi "暂时的"
@@ -7948,6 +8578,7 @@ ER_TEMPORARY_NAME
geo "დროებითი"
hindi "अस्थायी"
spa "Temporaria"
+ sw "Muda mfupi"
swe "Temporär"
ER_RENAMED_NAME
chi "重命名"
@@ -7955,12 +8586,14 @@ ER_RENAMED_NAME
ger "Umbenannt"
geo "გადარქმეულია"
spa "Renombrado"
+ sw "Jina jipya"
swe "Namnändrad"
ER_TOO_MANY_CONCURRENT_TRXS
chi "“太多并发交易"
eng "Too many active concurrent transactions"
ger "Zu viele aktive simultane Transaktionen"
geo "გაშვებულია მეტისმეტად ბევრი აქტიური ერთდროული ტრანზაქცია"
+ sw "Muamala nyingi zinazoendelea kwa wakati mmoja"
spa "Demasiadas transacciones concurrentes activas"
WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
chi "非ASCII分隔符参数不完全支持"
@@ -7968,24 +8601,28 @@ WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
ger "Nicht-ASCII-Trennargumente werden nicht vollständig unterstützt"
geo "არა-ASCII გამყოფი არგუმენტები სრულად მხარდაჭერილი არაა"
spa "Los argumentos con separador No ASCII no están completamente soportados"
+ sw "Hoja za kitenganishi zisizo za ASCII haziungwi mkono kikamilifu"
ER_DEBUG_SYNC_TIMEOUT
chi "调试同步点等待超时"
eng "debug sync point wait timed out"
ger "Debug Sync Point Wartezeit überschritten"
geo "გამართვის სინქრონიზაციის წერტილის მოლოდინის დრო ამოიწურა"
spa "agotado tiempo de espera de punto de sincronización de depuración"
+ sw "hatua ya kusawazisha utatuzi imepitwa na wakati"
ER_DEBUG_SYNC_HIT_LIMIT
chi "调试同步点限制达到"
eng "debug sync point hit limit reached"
ger "Debug Sync Point Hit Limit erreicht"
geo "მიღწეულია სინქრონიზაციის წერტილის ზღვარი"
spa "alcanzado límite de punto de sincronización de depuración"
+ sw "kikomo cha hatua ya kusawazisha utatuzi kimefikiwa"
ER_DUP_SIGNAL_SET 42000
chi "重复条件信息项'%s'"
eng "Duplicate condition information item '%s'"
ger "Informationselement '%s' für Duplikatbedingung"
geo "დუბლირებული პირობის ინფორმაცია ჩანაწერზე '%s'"
spa "Duplicado elemento de información de condición '%s'"
+ sw "Rudufu kipengee cha habari cha hali '%s'"
# Note that the SQLSTATE is not 01000, it is provided by SIGNAL/RESIGNAL
ER_SIGNAL_WARN 01000
chi "未处理用户定义的警告条件"
@@ -7993,293 +8630,349 @@ ER_SIGNAL_WARN 01000
ger "Unbehandelte benutzerdefinierte Warnbedingung"
geo "დაუმუშავებელი მომხმარებლის მიერ აღწერილი გაფრთხილების პირობა"
spa "Condición de aviso definida por usuario sin manejar"
+ sw "Hali ya onyo iliyoainishwa na mtumiaji ambayo haijashughulikiwa"
# Note that the SQLSTATE is not 02000, it is provided by SIGNAL/RESIGNAL
ER_SIGNAL_NOT_FOUND 02000
chi "未找到的用户定义未找到条件"
eng "Unhandled user-defined not found condition"
ger "Unbehandelte benutzerdefinierte Nicht-gefunden-Bedingung"
spa "Condición de no hallado definida por usuario sin manejar"
+ sw "Hali ya mtumiaji ambayo haijashughulikiwa haijapatikana"
# Note that the SQLSTATE is not HY000, it is provided by SIGNAL/RESIGNAL
ER_SIGNAL_EXCEPTION HY000
chi "未处理用户定义的异常条件"
eng "Unhandled user-defined exception condition"
ger "Unbehandelte benutzerdefinierte Ausnahmebedingung"
spa "Condición de excepción definida por usuario sin manejar"
+ sw "Hali ya ubaguzi iliyoainishwa na mtumiaji ambayo haijashughulikiwa"
ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER 0K000
chi "RESIGNAL处理程序不活跃"
eng "RESIGNAL when handler not active"
ger "RESIGNAL bei nicht aktivem Handler"
geo "RESIGNAL როცა დამმუშავებელი აქტიური არაა"
spa "RESIGNAL cuando el manejador no activo"
+ sw "RESIGNAL wakati kidhibiti hakifanyiki"
ER_SIGNAL_BAD_CONDITION_TYPE
chi "SIGNAL/RESIGNAL只能使用SQLState定义的条件"
eng "SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE"
ger "SIGNAL/RESIGNAL kann nur mit einer Bedingung (CONDITION) benutzt werden, die bei SQLSTATE definiert wurde"
geo "SIGNAL/RESIGNAL-ს მხოლოდ SQLSTATE-ით აღწერილი CONDITION-ის გამოყენება შეუძლია"
spa "SIGNAL/RESIGNAL sólo pueden usar una CONDITION definida mediante SQLSTATE"
+ sw "SIGNAL/RESIGNAL inaweza tu kutumia CONDITION iliyofafanuliwa na SQLSTATE"
WARN_COND_ITEM_TRUNCATED
chi "数据被截断为条件项目'%s'"
eng "Data truncated for condition item '%s'"
ger "Daten gekürzt für Bedingungselement '%s'"
geo "პირობის ჩანაწერისთვის '%s' მონაცემები წაკვეთილია"
spa "Datos truncados para elemento de condición '%s'"
+ sw "Data imepunguzwa kwa kipengee cha hali '%s'"
ER_COND_ITEM_TOO_LONG
chi "条件项目'%s'的数据太长"
eng "Data too long for condition item '%s'"
ger "Daten zu lang für Bedingungselement '%s'"
geo "პირობის ჩანაწერისთვის '%s' მონაცემები ძალიან გრძელია"
spa "Datos demasiados largos para elemento de condición '%s'"
+ sw "Data ni ndefu sana kwa kipengee cha sharti '%s'"
ER_UNKNOWN_LOCALE
chi "未知区域设置:'%-.64s'"
eng "Unknown locale: '%-.64s'"
ger "Unbekannte Locale: '%-.64s'"
geo "უცნობი ლოკალი: '%-.64s'"
spa "Localización (locale) desconocida: '%-.64s'"
+ sw "Maeneo yasiyojulikana: '% -.64s'"
ER_SLAVE_IGNORE_SERVER_IDS
chi "请求的服务器ID%d与SLAVE启动选项--replicate-same-server-id冲突"
eng "The requested server id %d clashes with the slave startup option --replicate-same-server-id"
ger "Die angeforderte Server-ID %d steht im Konflikt mit der Startoption --replicate-same-server-id für den Slave"
spa "La id %d del servidor requerido choca con la opción de arranque del esclavo --replicate-same-server-id"
+ sw "Kitambulisho cha seva kilichoombwa %d kinagongana na chaguo la kuanzisha mtumwa --replicate-same-server-id"
ER_QUERY_CACHE_DISABLED
chi "查询缓存已禁用;将query_cache_type设置为ON或DEMAND启用它"
eng "Query cache is disabled; set query_cache_type to ON or DEMAND to enable it"
spa "Caché de consulta (query) desactivada; configura query_cache_type a ON o DEMAND para activarla"
+ s "Kumbukumbu ya hoja imezimwa; weka query_cache_type ya ON au DEMAND ili kuiwezesha"
ER_SAME_NAME_PARTITION_FIELD
chi "重复分区字段名称'%-.192s'"
eng "Duplicate partition field name '%-.192s'"
ger "Partitionsfeld '%-.192s' ist ein Duplikat"
spa "Nombre de campo de partición duplicado '%-.192s'"
+ sw "Rudufu jina la kizigeu ya sehemu '%-.192s'"
ER_PARTITION_COLUMN_LIST_ERROR
chi "分区用的列和列表使用不一致"
eng "Inconsistency in usage of column lists for partitioning"
ger "Inkonsistenz bei der Benutzung von Spaltenlisten für Partitionierung"
spa "Inconsistencia en uso de listas de columna para particionar"
+ sw "Kutokuwa na usawa katika utumiaji wa orodha za safu kwa kugawanya"
ER_WRONG_TYPE_COLUMN_VALUE_ERROR
chi "不正确类型的分区列值"
eng "Partition column values of incorrect type"
ger "Partitionsspaltenwerte sind vom falschen Typ"
spa "Valores de columna de partición de tipo incorrecto"
+ sw "Thamani za safu wima za kizigeu ina aina isiyo sahihi"
ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR
chi "'%-.192s'中的太多字段"
eng "Too many fields in '%-.192s'"
ger "Zu viele Felder in '%-.192s'"
geo "მეტისმეტად ბევრი ველი '%-.192s'-ში"
spa "Demasiados campos en '%-.192s'"
+ sw "Sehemu nyingi sana katika '%-.192s'"
ER_MAXVALUE_IN_VALUES_IN
chi "不能在VALUES IN使用MAXVALUE"
eng "Cannot use MAXVALUE as value in VALUES IN"
ger "MAXVALUE kann nicht als Wert in VALUES IN verwendet werden"
geo "MAXVALUE-ის გამოყენება VALUES IN-ში შეუძლებელია"
spa "No puedo usar MAXVALUE como valor en VALUES IN"
+ sw "Haiwezi kutumia MAXVALUE kama thamani katika VALUES IN"
ER_TOO_MANY_VALUES_ERROR
chi "这种类型不能有多个值%-.64s 分区"
eng "Cannot have more than one value for this type of %-.64s partitioning"
ger "Für den Partionierungstyp %-.64s darf es nicht mehr als einen Wert geben"
geo "%-.64s ტიპის დაყოფისთვის ერთზე მეტი მნიშვნელობა ვერ გექნებათ"
spa "No puedo tener más de un valor para este tipo de particionamiento %-.64s"
+ sw "Haiwezi kuwa na thamani zaidi ya moja kwa aina hii ya %-.64s ya kugawa"
ER_ROW_SINGLE_PARTITION_FIELD_ERROR
chi "仅允许的多字段列分区的VALUES IN的行表达式"
eng "Row expressions in VALUES IN only allowed for multi-field column partitioning"
ger "Zeilenausdrücke in VALUES IN sind nur für Mehrfeld-Spaltenpartionierung erlaubt"
spa "Expresiones de fila en VALUES IN sólo permitidas para particionamiento de columna multi-campo"
+ sw "Semi za safu mlalo katika VALUES IN zinaruhusiwa tu kwa ugawaji wa safu wima nyingi"
ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
chi "字段'%-.192s'类型不允许为此类型的分区类型"
eng "Field '%-.192s' is of a not allowed type for this type of partitioning"
ger "Feld '%-.192s' ist für diese Art von Partitionierung von einem nicht zulässigen Typ"
geo "ველი %-.192s ამ ტიპის დაყოფისთვის დაუშვებელია"
spa "El campo '%-.192s' es de un tipo no permitido para este tipo de particionado"
+ sw "Sehemu '%-.192s' ni ya aina isiyoruhusiwa kwa aina hii ya ugawaji"
ER_PARTITION_FIELDS_TOO_LONG
chi "分区字段的总长度太大"
eng "The total length of the partitioning fields is too large"
ger "Die Gesamtlänge der Partitionsfelder ist zu groß"
geo "დაყოფის ველების ჯამური სიგრძე მეტისმეტეად დიდია"
spa "El tamaño total de los campos de particionado es demasiado grande"
+ sw "Urefu wa jumla wa sehemu za kugawa ni kubwa sana"
ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE
chi "无法执行语句:由于引擎不能支持行和语句,因此无法写入二进制日志"
eng "Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ რეჟიმში ჩაწერა შეუძლებელია, რადგან ჩარეულია ორივე, მწკრივობის შეუძლებელი და გამოსახულების შეუძლებელი ძრავები"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que ambos motores de fila-incapaz y de sentencia-incapaz están involucrados"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandika kwa kumbukumbu ya mfumo ya jozi kwa kuwa injini zisizo na safu na injini zisizo na uwezo wa taarifa zinahusika"
ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
chi "无法执行语句:由于BINLOG_FORMAT =ROW和至少一个表使用存储引擎限制为基于语句的日志记录,因此无法写入二进制日志"
eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ ჟურნალში ჩაწერა შეუძლებელია, რადგან BINLOG_FORMAT = ROW და სულ ცოტა ერთი ცხრილი იყენებს შენახვის ძრავას, რომელიც გამოსახულების-ჟურნალითაა შეზღუდული"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que BINLOG_FORMAT = ROW y al menos una tabla utiliza motor de almacenaje limitado a historiales basados en sentencia"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandikia logi ya mfumo wa jozi kwa kuwa BINLOG_FORMAT = ROW na angalau jedwali moja hutumia injini ya kuhifadhi iliyo na uwezo wa kuweka data kulingana na taarifa pekee, na hiwezi kuweka data kwa njia zingine"
ER_BINLOG_UNSAFE_AND_STMT_ENGINE
chi "无法执行语句:由于语句不安全,无法写入二进制日志,存储引擎仅限于基于语句的日志记录,而BINLOG_FORMAT = MIXED。%s."
eng "Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. %s"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ ჟურნალში ჩაწერა შეუძლებელია, რადგან გამოსახულება უსაფრთხო არაა, საცავის ძრავა შეზღუდულია გამოსახულებებზე-დაფუძნებულ ჟურნალზე და BINLOG_FORMAT = MIXED. %s"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia no es segura, el motor de almacenaje está limitado a historial basado en sentencia y BINLOG_FORMAT = MIXED. %s"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandikia kumbukumbu ya mfumo wa jozi kwa kuwa taarifa si salama, injini ya hifadhi ina uwezo wa kuweka data kulingana na taarifa pekee, na BINLOG_FORMAT = MIXED. %s"
ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE
chi "无法执行语句:由于语句以行格式,至少一个表使用基于语句的日志记录的存储引擎,因此无法写入二进制日志。"
eng "Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ ჟურნალში ჩაწერა შეუძლებელია, რადგან გამოსახულება მწკრივის ფორმატშია და სულ ცოტა ერთი ცხრილი იყენებს საცავის ძრავას, რომელიც გამოსახულებაზე ბაზირებული ჟურნალითაა შეზღუდული"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia está en un formato de fila y al menos una tabla utiliza un motor de almacenaje limitado a historial basado en sentencia"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandikia logi ya jozi kwa kuwa taarifa iko katika muundo wa safu mlalo na angalau jedwali moja hutumia injini ya kuhifadhi iliyo na uwezo wa uwekaji data kulingana na taarifa"
ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
chi "无法执行语句:由于BINLOG_FORMAT = STATEMENT,并且至少一个表使用存储引擎限制为基于行的日志记录,因此无法写入二进制日志。%s"
eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.%s"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ ჟურნალში ჩაწერა შეუძლებელია, რადგან BINLOG_FORMAT = STATEMENT და სულ ცოტა ერთი ცხრილი იყენებს საცავის ძრავას, რომელიც მწკრივებზე ბაზირებული ჟურნალითაა შეზღუდული. %s"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que BINLOG_FORMAT = STATEMENT y al menos una tabla utilizan un motor de almacenaje limitado a historial basado en fila. %s"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandikia kumbukumbu ya jozi kwa kuwa BINLOG_FORMAT = STATEMENT na angalau jedwali moja linatumia injini ya hifadhi iliyodhibitiwa kwa uwekaji data kulingana na safu mlalo.%s"
ER_BINLOG_ROW_INJECTION_AND_STMT_MODE
chi "无法执行语句:由于语句的正常格式和BINLOG_FORMAT = STATEMENT,因此无法写入二进制日志"
eng "Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ ჟურნალში ჩაწერა შეუძლებელია, რადგან გამოსახულება მწკრივის ფორმატშია და BINLOG_FORMAT = STATEMENT"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que la sentencia está en formato de fila y BINLOG_FORMAT = STATEMENT"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandika kwa logi ya jozi kwa kuwa taarifa iko katika muundo wa safu na BINLOG_FORMAT = STATEMENT"
ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
chi "无法执行语句:由于涉及多个引擎并且至少有一个引擎是自记录的,因此无法写入二进制日志。"
eng "Cannot execute statement: impossible to write to binary log since more than one engine is involved and at least one engine is self-logging"
geo "გამოსახულების შესრულება შეუძლებელია: ბინარულ ჟურნალში ჩაწერა შეუძლებელია, რადგან ჩარეულია ერთზე მეტი ძრავა და სულ ცოტა ერთი ძრავა ჟურნალს თავისთან ინახავს"
spa "No puedo ejecutar sentencia: imposible grabar historial (log) binario ya que hay más de un motor involucrado y al menos un motor usa auto-historial"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandika kwa kumbukumbu ya mfumo wa jozi kwani zaidi ya injini moja inahusika na angalau injini moja inajiweka data yake yenyewe"
ER_BINLOG_UNSAFE_LIMIT
chi "该语句不安全,因为它使用限制子句。这不安全,因为所包含的一组行无法预测"
eng "The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted"
geo "გამოსახულება უსაფრთხო არაა, რადგან ის LIMIT პირობას იყენებს. ეს უსაფრთხო არაა, რადგან მწკრივების ნაკრები, რომელიც ჩასმული იქნება, წინასწარ უცნობია"
spa "La sentencia no es segura debido a usar una cláusula LIMIT. No es segura porque el conjunto incluido de filas no se puede predecir"
+ sw "Taarifa si salama kwa sababu inatumia kifungu cha amri LIMIT. Hii si salama kwa sababu seti ya safu mlalo iliyojumuishwa haiwezi kutabiriwa"
ER_BINLOG_UNSAFE_INSERT_DELAYED
chi "该声明不安全,因为它使用插入延迟。这是不安全的,因为无法预测插入行的时间"
eng "The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted"
geo "გამოსახულება უსაფრთხო არაა, რადგან ის INSERT DELAYED-ს იყენებს. ეს უსაფრთხო არაა, რადგან წინასწარ უცნობია, რამდენჯერ მოხდება მწკრივების ჩასმა"
spa "La sentencia no es segura debido a usar una INSERT DELAYED. No es segura porque los momentos en que las filas han de insertarse no se pueden predecir"
+ sw "Taarifa si salama kwa sababu inatumia INSERT DELAYED. Hii si salama kwa sababu nyakati ambazo safu mlalo zinaingizwa haziwezi kutabiriwa"
ER_BINLOG_UNSAFE_SYSTEM_TABLE
chi "该声明不安全,因为它使用常规日志,慢查询日志或performance_schema表。这是不安全的,因为系统表可能在slave上不同"
eng "The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves"
spa "La sentencia no es segura debido a usar el historial (log) general, un historial (log) lento o tabla(s) de performance_schema. No es segura porque las tablas de sistema pueden diferir de las esclavas"
+ sw "Taarifa si salama kwa sababu inatumia kumbukumbu ya jumla, kumbukumbu ya hoja polepole, au majedwali ya performance_schema table(s). Hii si salama kwa sababu majedwali ya mfumo yanaweza kutofautiana kwa watumwa"
ER_BINLOG_UNSAFE_AUTOINC_COLUMNS
chi "语句不安全,因为它调用了插入AUTO_INCREMENT列的触发器或存储函数。插入的值无法正确记录"
eng "Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly"
geo "გამოსახულება უსაფრთხო არაა, რადგან ის უშვებს ტრიგერს ან დამახსოვრებულ ფუნქციას, რომელიც AUTO_INCREMENT სვეტში ამატებს. ჩასული მნიშვნელობების ჟურნალში სწორად ჩაწერა შეუძლებელია"
spa "La sentencia no es segura debido a invocar un disparador o una función almacenada que inserta una columna de AUTO_INCREMENT. No se puede llevar historial correcto de Los valores insertados".
+ sw "Taarifa si salama kwa sababu inaomba kichochezi au kitendakazi kilichohifadhiwa ambacho huchopekwa kwenye safu wima ya AUTO_INCREMENT. Thamani zilizoingizwa haziwezi kurekodiwa ipasavyo"
ER_BINLOG_UNSAFE_UDF
chi "语句不安全,因为它使用了一个可能在从设备上返回相同值的UDF"
eng "Statement is unsafe because it uses a UDF which may not return the same value on the slave"
geo "გამოსახულება უსაფრთხო არაა, რადგან ის იყენებს UDF-ს, რომელმაც შეიძლება დამორჩილებულ სერვერებზე იგივე მნიშვნელობა არ დააბრუნოს"
spa "La sentencia no es segura porque usa un UDF que puede no devolver el mismo valor en el esclavo"
+ sw "Taarifa si salama kwa sababu inatumia UDF ambayo inaweza isirejeshe thamani sawa kwa mtumwa"
ER_BINLOG_UNSAFE_SYSTEM_VARIABLE
chi "语句不安全,因为它使用的系统变量可能在从站上具有不同的值"
eng "Statement is unsafe because it uses a system variable that may have a different value on the slave"
spa "La sentencia no es segura porque usa una variable de sistema que puede tener un valor diferente en el esclavo"
+ sw "Taarifa sio salama kwa sababu hutumia kibadilishaji cha mfumo ambacho kinaweza kuwa na thamani tofauti kwa mtumwa"
ER_BINLOG_UNSAFE_SYSTEM_FUNCTION
chi "语句不安全,因为它使用系统函数可能在从站上返回不同的值"
eng "Statement is unsafe because it uses a system function that may return a different value on the slave"
geo "გამოსახულება უსაფრთხო არაა, რადგან ის იყენებს სისტემურ ფუნქციას, რომელმაც შეიძლება დამორჩილებულ სერვერებზე იგივე მნიშვნელობა არ დააბრუნოს"
spa "La sentencia no es segura porque usa una función de sistema que puede devolver un valor diferente en el esclavo"
+ sw "Taarifa si salama kwa sababu hutumia kitendakazi cha mfumo ambacho kinaweza kurudisha thamani tofauti kwa mtumwa"
ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS
chi "语句不安全,因为它在访问同一事务中访问事务表后访问非事务性表"
eng "Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction"
geo "გამოსახულება უსაფრთხო არაა, რადგან ის ერთი ტრანზაქციიდან არატრანზაქციულ და ტრანზაქციულ ცხრილებს ერთდროულად მიმართავს"
spa "La sentencia no es segura porque accede a una tabla no transaccional tras acceder a una transaccional dentro de la misma transacción"
+ sw "Taarifa si salama kwa sababu inafikia jedwali lisilo la muamala baada ya kufikia jedwali la muamala ndani ya muamala hiyo hiyo"
ER_MESSAGE_AND_STATEMENT
chi "%s.语句:%s"
eng "%s. Statement: %s"
geo "%s. გამოსახულება: %s"
spa "%s. Sentencia: %s"
+ sw "%s. Taarifa: %s"
ER_SLAVE_CONVERSION_FAILED
chi "列%d表'%-.192s.%-.192s'无法从'%-.50s'类型为'%-.50s'"
eng "Column %d of table '%-.192s.%-.192s' cannot be converted from type '%-.50s' to type '%-.50s'"
geo "სვეტის %d ცხრილიდან '%-.192s.%-.192s' გადაყვანა ტიპიდან '%-.50s' ტიპში '%-.50s' შეუძლებელია"
spa "La columna %d de la tabla '%-.192s.%-.192s' no puede ser convertida desde el tipo '%-.50s' al tipo '%-.50s'"
+ sw "Safu wima ya %d ya jedwali '%-.192s.%-.192s' haiwezi kubadilishwa kutoka aina ya '%-.50s' hadi aina ya '%-.50s'"
ER_SLAVE_CANT_CREATE_CONVERSION
chi "无法为表创建转换表'%-.192s.%-.192s'"
eng "Can't create conversion table for table '%-.192s.%-.192s'"
geo "ცხრილისთვის '%-.192s.%-.192s' გადაყვანის ცხრილის შექმნა შეუძლებელია"
spa "No puedo crear tabla de conversión para la tabla '%-.192s.%-.192s'"
+ sw "Haiwezi kuunda jedwali la ubadilishaji la jedwali la '%-.192s.%-.192s'"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
chi "无法在事务中修改@@session.binlog_format"
eng "Cannot modify @@session.binlog_format inside a transaction"
geo "@@session.binlog_format-ის შეცვლა ტრანზაქციის შიგნიდან შეუძლებელია"
spa "No puedo modificar @@session.binlog_format dentro de una transacción"
+ sw "Haiwezi kubadilisha @session.binlog_format ndani ya muamala"
ER_PATH_LENGTH
chi "指定%.64T的路径太长了"
eng "The path specified for %.64T is too long"
geo "%.64T-სთვის მითითებული ბილიკი მეტისმეტად გრძელია"
hindi "%.64T के लिए निर्दिष्ट पथ बहुत लंबा है"
spa "La ruta especificada para %.64T es demasiado larga"
+ sw "Njia iliyobainishwa kwa %.64T ni ndefu sana"
ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
chi "'%s'被弃用,将在将来的版本中删除"
eng "'%s' is deprecated and will be removed in a future release"
ger "'%s' ist veraltet und wird in einer zukünftigen Version entfernt werden"
geo "'%s' მოძველებულია და მომავალ ვერსიებში წაიშლება"
spa "'%s' está obsoleto y será quitada en una entrega futura"
+ sw "'%s' imeacha kutumika na itaondolewa katika toleo lijalo"
ER_WRONG_NATIVE_TABLE_STRUCTURE
chi "本机表'%-.64s'。'%-.64s'具有错误的结构"
eng "Native table '%-.64s'.'%-.64s' has the wrong structure"
spa "La tabla nativa '%-.64s'.'%-.64s' tiene una estructura equivocada"
+ sw "Jedwali la asili '%-.64s'.'%-.64s' lina muundo usio sahihi"
ER_WRONG_PERFSCHEMA_USAGE
chi "performance_schema使用无效"
eng "Invalid performance_schema usage"
geo "performance_schema-ის არასწორი გამოყენება"
hindi "performance_schema का अवैध उपयोग"
spa "Uso inválido de performance_schema"
+ sw "Matumizi batili ya performance_schema"
ER_WARN_I_S_SKIPPED_TABLE
chi "表'%s'.'%s'由于并发DDL语句正在修改其定义,因此跳过"
eng "Table '%s'.'%s' was skipped since its definition is being modified by concurrent DDL statement"
geo "ცხრილი '%s'.'%s' გამოტოვებულია, რადგან მისი აღწერა ერთდროული DDL გამოსახულების მიერ იცვლება"
spa "La tabla '%s'.'%s' fue saltada ya que su definición está siendo modificada por la sentencia DDL concurrente"
+ sw "Jedwali '%s'.'%s' lilirukwa kwa kuwa ufafanuzi wake unarekebishwa kwa taarifa ya DDL inayofanyika sasa hivi"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT
chi "无法在交易事务中修改@@session.binlog_direct_non_transactional_updates"
eng "Cannot modify @@session.binlog_direct_non_transactional_updates inside a transaction"
geo "@@session.binlog_direct_non_transactional_updates-ის ტრანზაქციის შიგნიდან შეცვლა შეუძლებელია"
spa "No puedo modificar @@session.binlog_direct_non_transactional_updates dentro de una transacción"
+ sw "Haiwezi kubadilisha @@session.binlog_direct_non_transactional_updates ndani ya muamala"
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT
chi "无法在存储的函数或触发器内更改Binlog Direct标志"
eng "Cannot change the binlog direct flag inside a stored function or trigger"
geo "binlog-ის direct ალმის დამახსოვრებული ფუნქციის ან ტრიგერის შიგნიდან შეცვლა შეუძლებელია"
spa "No puedo cambiar la bandera directa de binlog dentro de una función almacenada o de un disparador"
+ sw "Haiwezi kubadilisha bendera ya binlog direct ndani ya kitendakazi kilichohifadhiwa au kichochezi"
ER_SPATIAL_MUST_HAVE_GEOM_COL 42000
chi "空间索引可以仅包含几何类型列"
eng "A SPATIAL index may only contain a geometrical type column"
ger "Ein raumbezogener Index (SPATIAL) darf nur Spalten geometrischen Typs enthalten"
geo "SPATIAL ტიპის ინდექსი მხოლოდ გეომეტრიული ტიპის სვეტს შეიძლება შეიცავდეს"
spa "Un índice SPATIAL sólo puede contener una columna de tipo geométrico"
+ sw "Faharisi ya SPATIAL inaweza kuwa na safu wima ya aina ya kijiometri pekee"
ER_TOO_LONG_INDEX_COMMENT
chi "索引评论'%-.64s'太长(max =%lu)"
eng "Comment for index '%-.64s' is too long (max = %lu)"
geo "კომენტარი ინდექსისთვის '%-.64s' ძალიან გრძელია (მაქს. = %lu)"
spa "El comentario para el índice '%-.64s' es demasiado largo (máx = %lu)"
+ sw "Maoni ya faharisi '% -.64s' ni marefu sana (max = %lu)"
ER_LOCK_ABORTED
chi "由于待处理的独家锁,等待锁被中止"
eng "Wait on a lock was aborted due to a pending exclusive lock"
spa "Se ha abortado la espera por un bloqueo debido a bloqueo exclusivo pendiente"
+ sw "Subiri kwenye kufuli iliondolewa kwa sababu ya kufuli ya kipekee inayosubiri"
ER_DATA_OUT_OF_RANGE 22003
chi "%s值超出'%s'范围"
eng "%s value is out of range in '%s'"
geo "%s-ის მნიშვნელობა '%s'-ში დიაპაზონს გარეთაა"
spa "%s valor se encuentra fuera de rango '%s'"
+ sw "%s thamani iko nje ya anuwai katika '%s'"
ER_WRONG_SPVAR_TYPE_IN_LIMIT
chi "基于非整数类型的基于LIMIT子句的变量"
eng "A variable of a non-integer based type in LIMIT clause"
geo "LIMIT პირობაში ცვლადი არამთელი ტიპისაა"
spa "Una variable de tipo basado en no entero en cláusula LIMIT"
+ sw "Kigezo cha aina isiyo ya nambari kamili katika kifungu cha LIMIT"
ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
chi "混合声明中的自记录和非自动记录引擎是不安全的"
eng "Mixing self-logging and non-self-logging engines in a statement is unsafe"
spa "No es segura la mezcla de motores de auto-historial (log) y de no auto-historial en una sentencia"
+ sw "Kuchanganya injini zinazojiweka kwa kumbukumbu na zisizojiweka kwa kumbukumbu katika taarifa sio salama"
ER_BINLOG_UNSAFE_MIXED_STATEMENT
chi "语句访问非致突变表以及事务性或临时表,并写入其中任何一个"
eng "Statement accesses nontransactional table as well as transactional or temporary table, and writes to any of them"
spa "La sentencia accede a tabla no transaccional así como transaccional o tabla temporal y graba en cualquiera de ellas"
+ sw "Taarifa hufikia jedwali lisilo la miamala na vile vile jedwali la muamala au la muda, na kumwandikia yeyote kati yao"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN
chi "无法修改事务中的@@sessient.sql_log_bin"
eng "Cannot modify @@session.sql_log_bin inside a transaction"
geo "@@session.sql_log_bin-ის ტრანზაქციის შიგნით შეცვლა შეუძლებელია"
spa "No puedo modificar @@session.sql_log_bin dentro de una transacción"
+ sw "Haiwezi kubadilisha @@session.sql_log_bin ndani ya muamala"
ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN
chi "无法在存储的函数或触发器内更改SQL_LOG_BIN"
eng "Cannot change the sql_log_bin inside a stored function or trigger"
geo "sql_log_bin-ის შეცვლა დამახსოვრებული ფუნქციის და ტრიგერის შიგნით შეუძლებელია"
spa "No puedo cambiar sql_log_bin dentro de una función almacenada o disparador"
+ sw "Haiwezi kubadilisha sql_log_bin ndani ya kitendaji iliyohifadhiwa au kichochezi"
ER_FAILED_READ_FROM_PAR_FILE
chi "无法从.par文件中读取"
eng "Failed to read from the .par file"
geo ".par ფაილიდან წაკითხვის შეცდომა"
hindi ".par फ़ाइल से पढ़ने में असफल रहे"
spa "No pude leer desde fichero/archivo .par"
+ sw "Imeshindwa kusoma kutoka kwa faili ya .par"
swe "Misslyckades läsa från .par filen"
ER_VALUES_IS_NOT_INT_TYPE_ERROR
chi "分区的值'%-.64s'必须具有类型INT"
eng "VALUES value for partition '%-.64s' must have type INT"
geo "VALUES-ის მნიშვნელობა დანაყოფისთვის '%-.64s' INT ტიპის უნდა იყოს"
spa "El valor VALUES para la partición '%-.64s' debe de tener el tipo INT"
+ sw "VALUES thamani ya kizigeu '%-.64s' lazima iwe na aina ya INT"
swe "Värden i VALUES för partition '%-.64s' måste ha typen INT"
ER_ACCESS_DENIED_NO_PASSWORD_ERROR 28000
chi "拒绝用户'%s'@'%s'"
@@ -8304,6 +8997,7 @@ ER_ACCESS_DENIED_NO_PASSWORD_ERROR 28000
serbian "Pristup je zabranjen korisniku '%s'@'%s'"
slo "Zakázaný prístup pre užívateľa: '%s'@'%s'"
spa "Acceso denegado para usuario: '%s'@'%s'"
+ sw "Ufikiaji umekataliwa kwa mtumiaji '%s'@'%s'"
swe "Användare '%s'@'%s' är ej berättigad att logga in"
ukr "Доступ заборонено для користувача: '%s'@'%s'"
@@ -8312,156 +9006,185 @@ ER_SET_PASSWORD_AUTH_PLUGIN
eng "SET PASSWORD is ignored for users authenticating via %s plugin"
geo "მომხმარებლებისთვის, რომლებიც ავთენტიკაციას %s დამატებით გადიან, SET PASSWORD იგნორირებულია"
spa "SET PASSWORD no tiene significado para usuarios que se autentican vía enchufe (plugin) %s"
+ sw "SET PASSWORD imepuuzwa kwa watumiaji wanaothibitisha kupitia programu-jalizi ya %s"
ER_GRANT_PLUGIN_USER_EXISTS
chi "由于用户%-.*s已经存在,GRANT IDENTIFIED WITH授权是非法的"
eng "GRANT with IDENTIFIED WITH is illegal because the user %-.*s already exists"
geo "ბრძანება GRANT პარამეტრით IDENTIFIED WITH დაუშვებელია, რადგან მოხმარებელი %-.*s უკვე არსებობს"
spa "GRANT con IDENTIFIED WITH es ilegal porque el usuario %-.*s ya existe"
+ sw "GRANT yenye IDENTIFIED WITH ni kinyume cha sheria kwa sababu mtumiaji %-.*s tayari yupo"
ER_TRUNCATE_ILLEGAL_FK 42000
chi "无法截断外键约束中引用的表(%.192s)"
eng "Cannot truncate a table referenced in a foreign key constraint (%.192s)"
spa "No puedo truncar una tabla referenciada en una restricción de clave foránea (%.192s)"
+ sw "Haiwezi kupunguza jedwali lililorejelewa katika kizuizi cha ufunguo wa kigeni (%.192s)"
ER_PLUGIN_IS_PERMANENT
chi "插件'%s'是force_plus_permanent,无法卸载"
eng "Plugin '%s' is force_plus_permanent and can not be unloaded"
geo "დამატება '%s'-ი force_plus_permanent ტიპისაა და მისი გამოტვირთვა შეუძლებელია"
spa "El enchufe (plugin) '%s' está force_plus_permanent y no puede ser descargado"
+ sw "Programu-jalizi '%s' ni force_plus_permanent na haiwezi kupakuliwa"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN
chi "心跳期的要求值小于1毫秒。该值重置为0,这意味着心跳将有效地禁用"
eng "The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled"
geo "გულისცემის პერიოდის მოთხოვნილი მნიშვნელობა 1 მილიწამზე ნაკლებია. მნიშვნელობა ნულს გაუტოლდა, რაც ნიშნავს, რომ გულისცემა გამორთულია"
spa "El valor de requerimiento para el período de latido es menor de 1 milisegundo. El valor se vuelve a poner a 0, indicando que el latido será efectivamente desactivado"
+ sw "Thamani iliyoombwa kwa kipindi cha mpigo wa moyo ni chini ya milisekunde 1. Thamani imewekwa upya hadi 0, kumaanisha kuwa mapigo ya moyo yatazimwa kikamilifu"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX
chi "心跳期的请求值超出了“slave_net_timeout”秒的值。该期间的明智价值应小于超时"
eng "The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout"
spa "El valor de requerimiento para el período de latido excede el valor de `slave_net_timeout` segundos. Un valor sensible para el período debería de ser menor que el 'tiempo agotado'"
+ sw "Thamani iliyoombwa ya kipindi cha mpigo wa moyo inazidi thamani ya sekunde za `slave_net_timeout'. Thamani ya busara ya kipindi hicho inapaswa kuwa chini ya slave_net_timeout"
ER_STMT_CACHE_FULL
chi "需要多行语句超过“max_binlog_stmt_cache_size”字节的存储;增加这个mariadbd变量,然后重试"
eng "Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage."
spa "Las sentencias Multi-fila requieren de más de 'max_binlog_stmt_cache_size' bytes para almacenaje."
+ sw "Taarifa za safu mlalo nyingi zilihitaji zaidi ya baiti 'max_binlog_stmt_cache_size' za hifadhi."
ER_MULTI_UPDATE_KEY_CONFLICT
chi "由于表格被更新为'%-.192s'和'%-.192s',因此不允许允许主键/分区索引更新。"
eng "Primary key/partition key update is not allowed since the table is updated both as '%-.192s' and '%-.192s'"
spa "La actualización de clave primaria de o de partición no está permitida por estar la tabla actualizada como '%-.192s' y '%-.192s'"
+ sw "Usasishaji wa ufunguo wa msingi/kizigeu hauruhusiwi kwa kuwa jedwali limesasishwa kama '%-.192s' na '%-.192s'"
# When translating this error message make sure to include "ALTER TABLE" in the
# message as mariadb-check parses the error message looking for ALTER TABLE.
ER_TABLE_NEEDS_REBUILD
chi "表需重建。请做ALTER TABLE %`s FORCE”或转储/重新加载以修复它!"
eng "Table rebuild required. Please do \"ALTER TABLE %`s FORCE\" or dump/reload to fix it!"
spa "Se requiere reconstrucción de la tabla. Por favor, ¡haga un \"ALTER TABLE %`s FORCE\" o volcado/recarga para solucionarlo!"
+ sw "Jedwali la kujenga upya linahitajika. Tafadhali fanya \"ALTER TABLE %`s FORCE\" au angusha/pakia upya ili kuirekebisha!"
WARN_OPTION_BELOW_LIMIT
chi "'%s'的值应该不小于'%s'的值"
eng "The value of '%s' should be no less than the value of '%s'"
geo "'%s'-ის მნიშვნელობა '%s'-ის მნიშვნელობაზე ნაკლები არ უნდა იყოს"
spa "El valor de '%s' debería de ser no menor que el valor de '%s'"
+ sw "Thamani ya '%s' inapaswa kuwa si chini ya thamani ya '%s'"
ER_INDEX_COLUMN_TOO_LONG
chi "索引列太大。最大列大小为%lu字节"
eng "Index column size too large. The maximum column size is %lu bytes"
geo "ინდექსის სვეტის ზომა ძალიან დიდია. სვეტის მაქსიმალური ზომაა %lu ბაიტი"
spa "El tamaño de índice de columna es demasiado grande. El tamaño máximo de columna es de %lu bytes"
+ sw "Saizi ya safu wima ni kubwa mno. Saizi ya juu zaidi ya safu wima ni baiti %lu"
ER_ERROR_IN_TRIGGER_BODY
chi "触发器'%-.64s'内存在错误:'%-.256s'"
eng "Trigger '%-.64s' has an error in its body: '%-.256s'"
geo "შეცდომა ტრიგერის ('%-.64s') სხეულში: '%-.256s'"
spa "El disparador '%-.64s' tiene una error en su cuerpo: '%-.256s'"
+ sw "Kichochezi '%-.64s' kina hitilafu katika mwili wake: '%-.256s'"
ER_ERROR_IN_UNKNOWN_TRIGGER_BODY
chi "未知触发器内存在错误:'%-.256s'"
eng "Unknown trigger has an error in its body: '%-.256s'"
geo "შეცდომა უცნობი ტრიგერის სხეულში: '%-.256s'"
spa "El disparador desconocido tiene un error en su cuerpo: '%-.256s'"
+ sw "Kichochezi kisichojulikana kina hitilafu katika mwili wake: '% -.256s'"
ER_INDEX_CORRUPT
chi "索引%s已损坏"
eng "Index %s is corrupted"
geo "ინდექსი %s დაზიანებულია"
spa "El índice %s está estropeado"
+ sw "Fahirisi %s imeharibika"
ER_UNDO_RECORD_TOO_BIG
chi "撤消日志记录太大"
eng "Undo log record is too big"
geo "დაბრუნების ჟურნალის ჩანაწერი მეტისმეტად დიდია"
spa "El registro de historial (log) para deshacer es demasiado grande"
+ sw "Rekodi ya kutendua ni kubwa sana"
ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT
chi "INSERT IGNORE...SELECT不安全,因为选择由select检索行的顺序确定哪个(如果有)行被忽略。无法预测此顺序,并且在master和slave方面可能有所不同"
eng "INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
spa "INSERT IGNORE... SELECT es no seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "INSERT IGNORE... SELECT si salama kwa sababu mpangilio wa safu mlalo hurejeshwa na SELECT huamua ni safumlalo zipi (ikiwa zipo) zitapuuzwa. Mpangilio huu hauwezi kutabiriwa na unaweza kutofautiana kwa bwana na mtumwa"
ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE
chi "INSERT... SELECT... ON DUPLICATE KEY UPDATE是不安全的,因为SELECT检索行的顺序确定哪个(如果有的话)是更新的。无法预测此顺序,并且在master和slave方面可能有所不同"
eng "INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are updated. This order cannot be predicted and may differ on master and the slave"
spa "INSERT... SELECT... ON DUPLICATE KEY UPDATE no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son actualizadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "INSERT... SELECT... ON DUPLICATE KEY UPDATE si salama kwa sababu mpangilio wa safu mlalo hurejeshwa na SELECT huamua ni safu zipi (ikiwa zipo) zitasasishwa. Agizo hili haliwezi kutabiriwa na linaweza kutofautiana kwa bwana na mtumwa. "
ER_BINLOG_UNSAFE_REPLACE_SELECT
chi "REPLACE... SELECT 不安全,因为选择由select检索行的顺序确定哪个(如果有)行被替换。无法预测此顺序,并且在master和slave方面可能有所不同"
eng "REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave"
spa "REPLACE... SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son sustituidas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "REPLACE... SELECT si salama kwa sababu mpangilio wa safu mlalo hurejeshwa na SELECT huamua ni safumlalo zipi (ikiwa zipo) zitabadilishwa. Agizo hili haliwezi kutabiriwa na linaweza kutofautiana kwa bwana na mtumwa"
ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT
chi "CREATE... IGNORE SELECT是不安全,因为选择由SELECT检索行的顺序确定哪个(如果有)行被忽略。无法预测此顺序,并且在master和slave方面可能有所不同"
eng "CREATE... IGNORE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
spa "CREATE... IGNORE SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "CREATE... IGNORE SELECT si salama kwa sababu mpangilio wa safu mlalo hurejeshwa na SELECT huamua ni safu zipi (kama zipo) zitapuuzwa. Mpangilio huu hauwezi kutabiriwa na unaweza kutofautiana kwa bwana na mtumwa"
ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT
chi "CREATE... REPLACE SELECT不安全,因为选择由SELECT检索行的顺序确定哪个(如果有)是替换哪个(如果有的话)。无法预测此顺序,并且在master和slave方面可能有所不同"
eng "CREATE... REPLACE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave"
spa "CREATE... REPLACE SELECT no es seguro porque el orden en el que las filas se recuperan por el SELECT determina qué filas (si hay alguna) son sustituidas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "CREATE... REPLACE SELECT si salama kwa sababu mpangilio ambao safu mlalo hurejeshwa na SELECT huamua ni safumlalo zipi (ikiwa zipo) zitabadilishwa. Mpangilio huu hauwezi kutabiriwa na unaweza kutofautiana kwa bwana na mtumwa"
ER_BINLOG_UNSAFE_UPDATE_IGNORE
chi "UPDATE IGNORE不安全,因为更新行的顺序确定了哪个(如果有)行被忽略。无法预测此顺序,并且在master和slave方面可能有所不同"
eng "UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave"
spa "UPDATE IGNORE no es seguro porque el orden en el que las filas son actualizadas determina qué filas (si hay alguna) son ignoradas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "UPDATE IGNORE si salama kwa sababu mpangilio wa safu mlalo husasishwa huamua ni safumlalo zipi (ikiwa zipo) zitapuuzwa. Agizo hili haliwezi kutabiriwa na linaweza kutofautiana kwa bwana na mtumwa"
ER_UNUSED_15
eng "You should never see it"
geo "ამას ვერასდროს უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_UNUSED_16
eng "You should never see it"
geo "ამას ვერასდროს უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT
chi "从另一个表选择后,使用自动增量列的表格写入的语句是不安全的,因为检索行的顺序确定将写入哪些(如果有)行。无法预测此顺序,并且在主站和slave方面可能有所不同"
eng "Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave"
spa "Las sentencias que graban en una tabla con columna de auto-incremento tras seleccionar desde otra tabla no son seguras porque el orden en el que las filas son recuperadas determina qué filas (si hay alguna) serán grabadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "Taarifa zinazoandikia jedwali lenye safu wima ya kuongeza kiotomatiki baada ya kuchagua kutoka kwa jedwali lingine si salama kwa sababu mpangilio wa safu mlalo hurejeshwa huamua ni safu mlalo zipi (ikiwa zipo) zitaandikwa. Agizo hili haliwezi kutabiriwa na linaweza kutofautiana kwa bwana na mtumwa"
ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC
chi "创建表...在具有自动增量列的表上选择...不安全,因为选择的顺序是由select检索行的顺序,确定插入哪个(如果有)行。无法预测此订单,并且在主站和slave方面可能有所不同"
eng "CREATE TABLE... SELECT... on a table with an auto-increment column is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are inserted. This order cannot be predicted and may differ on master and the slave"
spa "CREATE TABLE... SELECT... en una tabla con columna de auto-incremento no es segura porque el orden en el que las filas son recuperadas por el SELECT determina qué filas (si hay alguna) serán insertadas. Este orden no puede ser predicho y puede diferir entre maestro (master) y esclavo"
+ sw "CREATE TABLE... SELECT... kwenye jedwali iliyo na safu wima ya kuongeza kiotomatiki si salama kwa sababu mpangilio wa safu mlalo hurejeshwa na SELECT huamua ni safu zipi (ikiwa zipo) zimeingizwa. Mpangilio huu hauwezi kutabiriwa na unaweza tofauti kwa ya bwana na mtumwa"
ER_BINLOG_UNSAFE_INSERT_TWO_KEYS
chi "在具有多个唯一键的表上INSERT... ON DUPLICATE KEY UPDATE的重复索引更新是不安全的"
eng "INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe"
spa "INSERT... ON DUPLICATE KEY UPDATE en una tabla con más de una UNIQUE KEY no es segura"
+ sw "INSERT... ON DUPLICATE KEY UPDATE kwenye jedwali iliyo na zaidi ya UNIQUE KEY moja si salama"
ER_UNUSED_28
chi "你永远不应该看到它"
eng "You should never see it"
geo "ამას ვერასდროს უნდა ხედავდეთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_VERS_NOT_ALLOWED
chi "系统版本的表%`s.%`s不允许"
eng "Not allowed for system-versioned table %`s.%`s"
+ sw "Hairuhusiwi kwa jedwali la mfumo (system-versioned) %`s.%`s"
ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST
chi "插入AutoIncrement字段,该字段不是组成的主键中的第一部分是不安全的"
eng "INSERT into autoincrement field which is not the first part in the composed primary key is unsafe"
spa "INSERT dentro de campo con autoincremento que no es la primera parte en la clave primaria compuesta no es seguro"
+ sw "INSERT kwenye sehemu ya kuongeza kiotomatiki ambayo si sehemu ya kwanza katika ufunguo msingi uliotungwa si salama"
#
# End of 5.5 error messages.
#
@@ -8472,142 +9195,172 @@ ER_CANNOT_LOAD_FROM_TABLE_V2
ger "Kann %s.%s nicht einlesen. Tabelle ist wahrscheinlich beschädigt"
geo "%s.%s-დან ჩატვირთვის პრობლემა. ალბათ ცხრილი დაზიანებულია"
spa "No puedo cargar desde %s.%s. La tabla está probablemente estropeada"
+ sw "Haiwezi kupakia kutoka %s.%s. Jedwali labda limeharibika"
ER_MASTER_DELAY_VALUE_OUT_OF_RANGE
chi "主延迟的所需值%lu超过最大%lu"
eng "The requested value %lu for the master delay exceeds the maximum %lu"
spa "El valor requerido %lu para retraso en maestro (master) excede el máximo de %lu"
+ sw "Thamani iliyoombwa %lu kwa ucheleweshaji wa bwana inazidi kiwango cha juu cha %lu"
ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT
chi "在Binlog语句中只允许Format_Description_Log_Event和行事件(但是提供了%s)"
eng "Only Format_description_log_event and row events are allowed in BINLOG statements (but %s was provided)"
spa "Sólo se permiten Format_description_log_event y eventos de fila en sentencias BINLOG (pero %s fue suministrado)"
+ sw "Tukio la Format_description_log_event na matukio ya safu mlalo pekee yanaruhusiwa katika taarifa za BINLOG (lakini %s ilitolewa)"
ER_PARTITION_EXCHANGE_DIFFERENT_OPTION
chi "分区和表之间的非匹配属性'%-.64s'"
eng "Non matching attribute '%-.64s' between partition and table"
spa "Atributo no coincidente '%-.64s' entre la partición y la tabla"
+ sw "Sifa isiyolingana '% -.64s' kati ya kizigeu na jedwali"
swe "Attributet '%-.64s' är olika mellan partition och tabell"
ER_PARTITION_EXCHANGE_PART_TABLE
chi "用分区交换的表是分区:'%-.64s'"
eng "Table to exchange with partition is partitioned: '%-.64s'"
spa "La tabla para intercambiar con la partición está particionada: '%-.64s'"
+ sw "Jedwali la kubadilishana na kizigeu limegawanywa: '% -.64s'"
swe "Tabellen att byta ut mot partition är partitionerad: '%-.64s'"
ER_PARTITION_EXCHANGE_TEMP_TABLE
chi "与分区交换的表是临时的:'%-.64s'"
eng "Table to exchange with partition is temporary: '%-.64s'"
spa "La tabla para intercambiar con la partición es temporal: '%-.64s'"
+ sw "Jedwali la kubadilishana na kizigeu ni la muda: '% -.64s'"
swe "Tabellen att byta ut mot partition är temporär: '%-.64s'"
ER_PARTITION_INSTEAD_OF_SUBPARTITION
chi "子分区表,使用子分区代替分区"
eng "Subpartitioned table, use subpartition instead of partition"
spa "La tabla subparticionada utiliza subpartición en lugar de partición"
+ sw "Jedwali cha kizigeu ndogo, tumia kizigeu ndogo badala ya kizigeu"
swe "Subpartitionerad tabell, använd subpartition istället för partition"
ER_UNKNOWN_PARTITION
chi "未知分区'%-.64s'在表'%-.64s'"
eng "Unknown partition '%-.64s' in table '%-.64s'"
spa "Partición desconocida '%-.64s' en la tabla '%-.64s'"
+ sw "Kizigeu kisichojulikana '%-.64s' kwenye jedwali '%-.64s'"
swe "Okänd partition '%-.64s' i tabell '%-.64s'"
ER_TABLES_DIFFERENT_METADATA
chi "表有不同的定义"
eng "Tables have different definitions"
spa "Las tablas tienen diferentes definiciones"
+ sw "Majedwali yana ufafanuzi tofauti"
swe "Tabellerna har olika definitioner"
ER_ROW_DOES_NOT_MATCH_PARTITION
chi "找到了与分区不匹配的行"
eng "Found a row that does not match the partition"
spa "Hallada una fila que no coincide con la partición"
+ sw "Tumepata safu mlalo ambayo hailingani na kizigeu"
swe "Hittade en rad som inte passar i partitionen"
ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX
chi "选项binlog_cache_size(%lu)大于max_binlog_cache_size(%lu);设置binlog_cache_size等于max_binlog_cache_size"
eng "Option binlog_cache_size (%lu) is greater than max_binlog_cache_size (%lu); setting binlog_cache_size equal to max_binlog_cache_size"
spa "La opción binlog_cache_size (%lu) es mayor que max_binlog_cache_size (%lu); configurando binlog_cache_size igual a max_binlog_cache_size"
+ sw "Chaguo la binlog_cache_size (%lu) ni kubwa kuliko max_binlog_cache_size (%lu); kuweka binlog_cache_size sawa na max_binlog_cache_size"
ER_WARN_INDEX_NOT_APPLICABLE
chi "不能使用%-.64s在索引'%-.64s'上的访问,由于字段'%-.64s”的类型或排序规则转换"
eng "Cannot use %-.64s access on index '%-.64s' due to type or collation conversion on field '%-.64s'"
spa "No puedo usar acceso %-.64s en índice '%-.64s' debido al tipo o conversión de cotejo en campo '%-.64s'"
+ sw "Haiwezi kutumia ufikiaji wa %-.64s kwenye faharasa '%-.64s' kwa sababu ya aina au mikusanyiko kwenye sehemu ya '%-.64s'"
ER_PARTITION_EXCHANGE_FOREIGN_KEY
chi "与分区交换的表具有外键参考:'%-.64s'"
eng "Table to exchange with partition has foreign key references: '%-.64s'"
spa "La tabla para intercambiar con la partición tiene referencias a clave foránea: '%-.64s'"
+ sw "Jedwali la kubadilishana na kizigeu lina marejeleo ya vifunguo vigeni: '% -.64s'"
swe "Tabellen att byta ut mot partition har foreign key referenser: '%-.64s'"
ER_NO_SUCH_KEY_VALUE
chi "键值'%-.192s'在表'%-.192s%-.192s'不存在"
eng "Key value '%-.192s' was not found in table '%-.192s.%-.192s'"
spa "Valor de clave '%-.192s' no hallado en la tabla '%-.192s.%-.192s'"
+ sw "Thamani ya funguo '%-.192s' haikupatikana kwenye jedwali '%-.192s.%-.192s'"
ER_VALUE_TOO_LONG
chi "'%s'的价值太长了"
eng "Too long value for '%s'"
spa "Valor demasiado largo para '%s'"
+ sw "Thamani ndefu sana kwa '%s'"
ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE
chi "从网络读取时,复制事件校验和验证失败"
eng "Replication event checksum verification failed while reading from network"
spa "Ha fallado la verificación de la suma de revisión de evento de réplica mientras se leía desde la red"
+ sw "Uthibitishaji wa ukaguzi wa tukio la kurudiwa umeshindwa wakati wa kusoma kutoka kwa mtandao"
ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE
chi "从日志文件读取时复制事件校验和验证失败"
eng "Replication event checksum verification failed while reading from a log file"
spa "Ha fallado la verificación de la suma de revisión de evento de réplica mientras se leía desde fichero/archivo de historial (log)"
+ sw "Uthibitishaji wa ukaguzi wa tukio la kurudiwa umeshindwa wakati wa kusoma kutoka kwa faili ya kumbukumbu"
ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX
chi "选项binlog_stmt_cache_size(%lu)大于max_binlog_stmt_cache_size(%lu);设置binlog_stmt_cache_size等于max_binlog_stmt_cache_size"
eng "Option binlog_stmt_cache_size (%lu) is greater than max_binlog_stmt_cache_size (%lu); setting binlog_stmt_cache_size equal to max_binlog_stmt_cache_size"
spa "La opción binlog_stmt_cache_size (%lu) es mayor que max_binlog_stmt_cache_size (%lu); configurando binlog_stmt_cache_size igual a max_binlog_stmt_cache_size"
+ sw "Chaguo binlog_stmt_cache_size (%lu) ni kubwa kuliko max_binlog_stmt_cache_size (%lu); kuweka binlog_stmt_cache_size sawa na max_binlog_stmt_cache_size"
ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT
chi "无法更新表'%-.192s'正在创建'%-.192s'"
eng "Can't update table '%-.192s' while '%-.192s' is being created"
spa "No puedo actualizar tabla '%-.192s' mientras '%-.192s' está siendo creada"
+ sw "Haiwezi kusasisha jedwali '%-.192s' wakati '%-.192s' inaundwa"
ER_PARTITION_CLAUSE_ON_NONPARTITIONED
chi "非分区表上的PARTITION()子句"
eng "PARTITION () clause on non partitioned table"
spa "Cláusula PARTITION () en tabla no particionada"
+ sw "Kifungu cha PARTITION () kwenye jedwali lisilogawanywa"
swe "PARTITION () klausul för en icke partitionerad tabell"
ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET
chi "发现不匹配给定分区集的行"
eng "Found a row not matching the given partition set"
spa "Hallada una fila que no coincide con el conjunto dado de partición"
+ sw "Tumepata safu mlalo isiyolingana na seti uliyopewa ya kizigeu"
swe "Hittade en rad som inte passar i någon given partition"
ER_UNUSED_5
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE
chi "更改Replication存储库类型时失败:%s"
eng "Failure while changing the type of replication repository: %s"
spa "Fallo mientras cambiaba el tipo de repositorio de réplica: %s"
+ sw "Hitilafu wakati wa kubadilisha aina ya hazina ya urudufishaji: %s"
ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE
chi "无法回滚一些临时表的创建"
eng "The creation of some temporary tables could not be rolled back"
spa "La creación de algunas tablas temporales no se pudo retroceder (ROLLBACK)"
+ sw "Uundaji wa baadhi ya jedwali za muda haukuweza kurudishwa nyuma"
ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE
chi "一些临时表被删除,但这些操作无法回滚"
eng "Some temporary tables were dropped, but these operations could not be rolled back"
spa "Algunas tablas temporales fueron eliminadas, pero estas operaciones no se pudieron retroceder (ROLLBACK)"
+ sw "Baadhi ya jedwali za muda ziliangushwa, lakini shughuli hizi hazikuweza kurejeshwa"
ER_MTS_FEATURE_IS_NOT_SUPPORTED
chi "%s不支持多线程从模式。%s."
eng "%s is not supported in multi-threaded slave mode. %s"
geo "დამორჩილებული სერვერის მრავალკანადიან რეჟიმში %s მხარდაჭერილი არაა. %s"
spa "%s no se soporta en modo esclavo multi-hilo (thread). %s"
+ sw "%s haitumiki katika hali ya mtumwa yenye mazungumzo mengi. %s"
ER_MTS_UPDATED_DBS_GREATER_MAX
chi "修改的数据库的数量超过了最大%d;数据库名称不会包含在Replication事件元数据中"
eng "The number of modified databases exceeds the maximum %d; the database names will not be included in the replication event metadata"
spa "El núermo de bases de datos modificadas excede el máximo de %d; los nombres de base de datos no serán incluidos en los metadatos de eventos de réplica"
+ sw "Idadi ya hifadhidata iliyobadilishwa inazidi kiwango cha juu cha %d; majina ya hifadhidata hayatajumuishwa katika metadata ya tukio la urudufishaji"
ER_MTS_CANT_PARALLEL
chi "无法以并行模式执行当前事件组。遇到事件%s,中继日志名称%s,position%s,它防止并行模式执行此事件组。原因:%s"
eng "Cannot execute the current event group in the parallel mode. Encountered event %s, relay-log name %s, position %s which prevents execution of this event group in parallel mode. Reason: %s"
spa "No puedo ejecutar el grupo de eventos actual en modo paralelo. Encontrado evento %s, nombre de historial (log) de reenvío %s, posición %s que previene la ejecución de este grupo de eventos en modo paralelo. Motivo: %s"
+ sw "Haiwezi kutekeleza kikundi cha tukio la sasa katika hali sambamba. Tukio lililokumbana na %s, jina la kumbukumbu ya relay %s, nafasi %s ambayo inazuia utekelezaji wa kikundi hiki cha tukio katika hali sambamba. Sababu: %s"
ER_MTS_INCONSISTENT_DATA
eng "%s"
geo "%s"
+ sw "%s"
ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING
chi "分区表不支持FullText索引"
eng "FULLTEXT index is not supported for partitioned tables"
geo "დაყოფილ ცხრილებზე FULLTEXT ინდექსი მხარდაჭერილი არაა"
spa "El índice FULLTEXT no está soportado para tablas particionadas"
+ sw "Faharasa cha FULLTEXT hakitumiki kwa jedwali zilizogawanywa"
swe "FULLTEXT index stöds ej för partitionerade tabeller"
ER_DA_INVALID_CONDITION_NUMBER 35000
@@ -8616,22 +9369,26 @@ ER_DA_INVALID_CONDITION_NUMBER 35000
geo "პირობის არასწორი ნომერი"
por "Número de condição inválido"
spa "Número inválido de condición"
+ sw "Nambari ya masharti batili"
ER_INSECURE_PLAIN_TEXT
chi "在没有SSL/TLS的纯文本中发送密码非常不安全"
eng "Sending passwords in plain text without SSL/TLS is extremely insecure"
spa "Enviar contraseñas en texto plano sin SSL/TLS es extremadamente inseguro"
+ sw "Kutuma manenosiri kwa maandishi wazi bila SSL/TLS sio salama sana"
ER_INSECURE_CHANGE_MASTER
chi "在Master.Info存储库中存储MariaDB用户名或密码信息不安全,因此不建议使用。有关此问题和可能的替代方案,请参阅MariaDB手册"
eng "Storing MariaDB user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MariaDB Manual for more about this issue and possible alternatives"
spa "Almacenar nombre de usuario de MariaDB o información de contraseña en el repositorio master.info no es seguro y por ello no se recomienda. Por favor, mira el manual de MariaDB para saber más acerca de este asunto y sus posibles alternativas"
+ sw "Kuhifadhi jina la mtumiaji la MariaDB au maelezo ya nenosiri kwenye hazina ya master.info si salama na kwa hivyo haipendekezwi. Tafadhali angalia Mwongozo wa MariaDB kwa zaidi kuhusu suala hili na njia mbadala zinazowezekana"
ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO 23000 S1009
chi "表'%.192s'的外键约束,记录'%-.192s'会导致表'%.192s'中的重复条目,键'%.192s'"
eng "Foreign key constraint for table '%.192s', record '%-.192s' would lead to a duplicate entry in table '%.192s', key '%.192s'"
ger "Fremdschlüssel-Beschränkung für Tabelle '%.192s', Datensatz '%-.192s' würde zu einem doppelten Eintrag in Tabelle '%.192s', Schlüssel '%.192s' führen"
spa "La restricción de clave foránea para tabla '%.192s', registro '%-.192s' llevaría a una entrada duplicada en la tabla '%.192s', clave '%.192s'"
+ sw "Kizuizi cha vifunguo vya kigeni kwa jedwali '%.192s', rekodi '%-.192s' ingefanya ingizo la nakala katika jedwali '%.192s', ufunguo '%.192s'"
swe "FOREIGN KEY constraint för tabell '%.192s', posten '%-.192s' kan inte uppdatera barntabell '%.192s' på grund av nyckel '%.192s'"
ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO 23000 S1009
@@ -8639,150 +9396,179 @@ ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO 23000 S1009
eng "Foreign key constraint for table '%.192s', record '%-.192s' would lead to a duplicate entry in a child table"
ger "Fremdschlüssel-Beschränkung für Tabelle '%.192s', Datensatz '%-.192s' würde zu einem doppelten Eintrag in einer Kind-Tabelle führen"
spa "La restricción de clave foránea para tabla '%.192s', registro '%-.192s' llevaría a una entrada duplicada en una tabla hija"
+ sw "Kizuizi cha ufunguo wa kigeni kwa jedwali '%.192s', rekodi ya '%-.192s' ingefanya ingizo la nakala katika jedwali la mtoto"
swe "FOREIGN KEY constraint för tabell '%.192s', posten '%-.192s' kan inte uppdatera en barntabell på grund av UNIQUE-test"
ER_SQLTHREAD_WITH_SECURE_SLAVE
chi "仅在启动从SQL线程时无法设置身份验证选项"
eng "Setting authentication options is not possible when only the Slave SQL Thread is being started"
spa "Configurar opciones de autenticación no es posible si sólo se ha arrancado el Hilo (thread) SQL Esclavo"
+ sw "Kuweka chaguzi za uthibitishaji haiwezekani wakati tu Slave SQL Thread (zungumzo la SQL la mtumwa) unaanzishwa"
ER_TABLE_HAS_NO_FT
chi "该表没有全文索引来支持此查询"
eng "The table does not have FULLTEXT index to support this query"
geo "ამ მოთხოვნის მხარდასაჭერად ცხრილს FULLTEXT ინდექსი არ გააჩნია"
spa "La tabla no tiene índice FULLTEXT que soporte esta consulta (query)"
+ sw "Jedwali halina faharasa ya FULLTEXT kuruhusisha utekelezaji wa hoja hii"
ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER
chi "无法在存储的函数或触发器中设置系统变量%.200s"
eng "The system variable %.200s cannot be set in stored functions or triggers"
geo "სისტემური ცვლადის %.200s მნიშვნელობას დამახსოვრებული ფუნქციებიდან და ტრიგერებიდან ვერ დააყენებთ"
spa "La variable de sistema %.200s no se puede poner en funciones almacenadas o disparadores"
+ sw "Kigezo cha mfumo %.200s hakiwezi kuwekwa katika vitendaji vilivyohifadhiwa au vichochezi"
ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION
chi "持续交易时,无法设置系统变量%.200s"
eng "The system variable %.200s cannot be set when there is an ongoing transaction"
spa "La variable de sistema %.200s no se puede poner si hay una transacción en curso"
+ sw "Kigezo cha mfumo %.200s hakiwezi kuwekwa wakati kuna muamala unaoendelea"
ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST
chi "系统变量@@session.gtid_next具有值%.200s,该值未在@@session.gtid_next_list中列出"
eng "The system variable @@SESSION.GTID_NEXT has the value %.200s, which is not listed in @@SESSION.GTID_NEXT_LIST"
spa "La variable de sistema @@SESSION.GTID_NEXT tiene el valor %.200s, el cual no está listado en @@SESSION.GTID_NEXT_LIST"
+ sw "Kigezo cha mfumo @@SESSION.GTID_NEXT kina thamani ya %.200s, ambayo haijaorodheshwa katika @@SESSION.GTID_NEXT_LIST"
ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION_WHEN_GTID_NEXT_LIST_IS_NULL
chi "当@@session.gtid_next_list == null时,系统变量@@session.gtid_next无法在事务内更改"
eng "When @@SESSION.GTID_NEXT_LIST == NULL, the system variable @@SESSION.GTID_NEXT cannot change inside a transaction"
spa "Cuando @@SESSION.GTID_NEXT_LIST == NULL, la variable de sistema @@SESSION.GTID_NEXT no puede cambiar dentro de una transacción"
+ sw "Wakati @@SESSION.GTID_NEXT_LIST == NULL, kigezo cha mfumo @@SESSION.GTID_NEXT haiwezi kubadilika ndani ya muamala"
ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION
chi "语句'SET %.200s'无法调用存储的函数"
eng "The statement 'SET %.200s' cannot invoke a stored function"
spa "La sentencia 'SET %.200s' no puede invocar una función almacenada"
+ sw "Taarifa ya 'SET %.200s' haiwezi kuita kitendaji kilichohifadhiwa"
ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL
chi "系统变量@@sessient.gtid_next不能是'自动'@@sessient.gtid_next_list非null时"
eng "The system variable @@SESSION.GTID_NEXT cannot be 'AUTOMATIC' when @@SESSION.GTID_NEXT_LIST is non-NULL"
spa "La variable de sistema @@SESSION.GTID_NEXT no puede ser 'AUTOMATIC' si la @@SESSION.GTID_NEXT_LIST es no-NULL"
+ sw "Kigezo cha mfumo @@SESSION.GTID_NEXT hakiwezi kuwa 'AUTOMATIC' wakati @@SESSION.GTID_NEXT_LIST sio NULL"
ER_SKIPPING_LOGGED_TRANSACTION
chi "跳过事务%.200s,因为它已经被执行和记录"
eng "Skipping transaction %.200s because it has already been executed and logged"
spa "Saltando transacción %.200s porque ya ha sido ejecutada y puesta en historial (log)"
+ sw "Kuruka muamala %.200s kwa sababu tayari imetekelezwa na kurekodiwa"
ER_MALFORMED_GTID_SET_SPECIFICATION
chi "畸形GTID设置规范'%.200s'"
eng "Malformed GTID set specification '%.200s'"
spa "GTID malformado pone especificación '%.200s'"
+ sw "Vipimo vya seti za kuweka GTID vilivyo na hitilafu '%.200s'"
ER_MALFORMED_GTID_SET_ENCODING
chi "格式错误的GTID集编码"
eng "Malformed GTID set encoding"
spa "GTID malformado pone codificación"
+ sw "Usimbaji wa seti ya GTID ulio na kasoro"
ER_MALFORMED_GTID_SPECIFICATION
chi "畸形GTID规范'%.200s'"
eng "Malformed GTID specification '%.200s'"
geo "GTID-ის არასწორი სპეციფიკაცია '%.200s'"
spa "GTID malformado especificación '%.200s'"
+ sw "Vipimo vibaya vya GTID '%.200s'"
ER_GNO_EXHAUSTED
chi "无法生成全局事务标识符:整数组件达到了最大值。用新server_uuId重新启动服务器"
eng "Impossible to generate Global Transaction Identifier: the integer component reached the maximal value. Restart the server with a new server_uuid"
spa "Imposible generar Identificador Global de Transacción: el componente entero alcanzó el máximo valor. Rearranque el servidor con un nuevo server_uuid"
+ sw "Haiwezekani kuzalisha Kitambulishi cha Muamala wa Kimataifa (Global Transaction Identifier): sehemu kamili ilifikia thamani ya juu zaidi. Anzisha upya seva kwa server_uuid mpya"
ER_BAD_SLAVE_AUTO_POSITION
chi "当MASTER_AUTO_POSITION处于活动状态时,无法设置参数MASTER_LOG_FILE,MASTER_LOG_POS,RELAY_LOG_FILE和RELAY_LOG_POS"
eng "Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active"
spa "Los parámetros MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE y RELAY_LOG_POS no pueden ser puestos cuando MASTER_AUTO_POSITION esté activo"
+ sw "Vigezo MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE na RELAY_LOG_POS haviwezi kuwekwa MASTER_AUTO_POSITION inapotumika"
ER_AUTO_POSITION_REQUIRES_GTID_MODE_ON
chi "CHANGE MASTER TO MASTER_AUTO_POSITION = 1只能在GTID_MODE = ON上执行"
eng "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 can only be executed when GTID_MODE = ON"
spa "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 sólo se puede ejecutar cuando GTID_MODE = ON"
+ sw "CHANGE MASTER TO MASTER_AUTO_POSITION = 1 inaweza tu kutekelezwa wakati GTID_MODE = ON"
ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET
chi "当GTID_Next != AUTOMATIC 或GTID_NEXT_LIST != NULL时,无法在事务中执行语句"
eng "Cannot execute statements with implicit commit inside a transaction when GTID_NEXT != AUTOMATIC or GTID_NEXT_LIST != NULL"
spa "No puedo ejecutar sentencias con acometidas (commit) implícitas dentro de una transacción cuando GTID_NEXT != AUTOMATIC o GTID_NEXT_LIST != NULL"
+ sw "Haiwezi kutekeleza taarifa kwa ahadi isiyo wazi ndani ya muamala wakati GTID_NEXT != AUTOMATIC au GTID_NEXT_LIST != NULL"
ER_GTID_MODE_2_OR_3_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON
chi "GTID_MODE = ON或GTID_MODE = UPGRADE_STEP_2需要ENFORCE_GTID_CONSISTY = 1"
eng "GTID_MODE = ON or GTID_MODE = UPGRADE_STEP_2 requires ENFORCE_GTID_CONSISTENCY = 1"
spa "GTID_MODE = ON o GTID_MODE = UPGRADE_STEP_2 requiere que ENFORCE_GTID_CONSISTENCY = 1"
+ sw "GTID_MODE = ON au GTID_MODE = UPGRADE_STEP_2 inahitaji ENFORCE_GTID_CONSISTENCY = 1"
ER_GTID_MODE_REQUIRES_BINLOG
chi "GTID_MODE = ON或UPGRADE_STEP_1或UPGRADE_STEP_2需要--log-bin和-log-slave-updates"
eng "GTID_MODE = ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates"
spa "GTID_MODE = ON o UPGRADE_STEP_1 o UPGRADE_STEP_2 requiere --log-bin y --log-slave-updates"
+ sw "GTID_MODE = ON au UPGRADE_STEP_1 au UPGRADE_STEP_2 inahitaji --log-bin na --log-slave-updates"
ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF
chi "GTID_NEXT无法设置为UUID:NUMBER 当GTID_MODE = OFF"
eng "GTID_NEXT cannot be set to UUID:NUMBER when GTID_MODE = OFF"
spa "GTID_NEXT no se puede poner a UUID:NUMBER cuando GTID_MODE = OFF"
+ sw "GTID_NEXT haiwezi kuwekwa kuwa UUID:NUMBER wakati GTID_MODE = OFF"
ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON
chi "GTID_NEXT无法在当GTID_MODE = ON上时设置为ANONYMOUS"
eng "GTID_NEXT cannot be set to ANONYMOUS when GTID_MODE = ON"
spa "GTID_NEXT no se puede poner como ANONYMOUS cuando GTID_MODE = ON"
+ sw "GTID_NEXT haiwezi kuwekwa ANONYMOUS wakati GTID_MODE = ON"
ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF
chi "GTID_NEXT_LIST无法设置为非空值当GTID_MODE = OFF"
eng "GTID_NEXT_LIST cannot be set to a non-NULL value when GTID_MODE = OFF"
spa "GTID_NEXT_LIST no se puede poner como valor no-NULL cuando GTID_MODE = OFF"
+ sw "GTID_NEXT_LIST haiwezi kuwekwa kwa thamani isiyo ya NULL wakati GTID_MODE = OFF"
ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF
chi "找到一个Gtid_log_event或Previous_gtids_log_event,当gtid_mode = OFF时"
eng "Found a Gtid_log_event or Previous_gtids_log_event when GTID_MODE = OFF"
spa "Hallado un Gtid_log_event o Previous_gtids_log_event cuando GTID_MODE = OFF"
+ sw "Tumepata Gtid_log_event au Previous_gtids_log_event wakati GTID_MODE = OFF"
ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE
chi "当Enforce_gtid_consistenty = 1时,对非事务性表的更新只能在Autocomated语句或单一语句事务中完成,而不是在与事务表中的更新相同的语句中"
eng "When ENFORCE_GTID_CONSISTENCY = 1, updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables"
spa "Cuando ENFORCE_GTID_CONSISTENCY = 1, las actualiaciones a tablas no transaccionales sólo se puede hacer o bien en sentencias autoacometidas o en transacciones de sentencias simples y nunca dentro de la misma sentencia como actualizaciones a tablas transaccionales"
+ sw "Wakati ENFORCE_GTID_CONSISTENCY = 1, masasisho kwa majedwali yasiyo ya muamala yanaweza tu kufanywa katika taarifa za otomatiki au miamala ya taarifa moja, na kamwe katika taarifa sawa na masasisho ya majedwali ya muamala"
ER_GTID_UNSAFE_CREATE_SELECT
chi "CREATE TABLE...SELECT在ENFORCE_GTID_CONSISTENCY = 1时被禁止"
eng "CREATE TABLE ... SELECT is forbidden when ENFORCE_GTID_CONSISTENCY = 1"
spa "CREATE TABLE ... SELECT está prohibido si ENFORCE_GTID_CONSISTENCY = 1"
+ sw "CREATE TABLE ... SELECT hairuhusiwi wakati ENFORCE_GTID_CONSISTENCY = 1"
ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION
chi "当ENFORCE_GTID_CONSISTENCY = 1时,语句CREATE TEMPORARY TABL和DROP TEMPORARY TABLE,只能在非事务性上下文中执行,并且要求autocommit = 1"
eng "When ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can be executed in a non-transactional context only, and require that AUTOCOMMIT = 1"
spa "Cuando ENFORCE_GTID_CONSISTENCY = 1, las sentencias CREATE TEMPORARY TABLE y DROP TEMPORARY TABLE pueden ser ejecutadas sólo en contextos no-transaccionales y requieren que AUTOCOMMIT = 1"
+ sw "Wakati ENFORCE_GTID_CONSISTENCY = 1, taarifa za CREATE TEMPORARY TABLE na DROP TEMPORARY TABLE zinaweza kutekelezwa katika muktadha usio wa muamala pekee, na zinahitaji kwamba AUTOCOMMIT = 1"
ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME
chi "GTID_MODE的值只能一次更改一步:OFF<-> UPGRODE_STEP_1 <-> UPGRODE_STEP_2 <-> ON。另请注意,此值必须在所有服务器上同时上升或下降;有关说明,请参阅手册。“"
eng "The value of GTID_MODE can only change one step at a time: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. Also note that this value must be stepped up or down simultaneously on all servers; see the Manual for instructions."
spa "El valor de GTID_MODE sólo puede cambiar un paso a la vez: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. También ten en cuenta que este valor debe de ser aumentado y disminuido simultaneamente en todos los servidores; mira el Manual para instrucciones."
+ sw "Thamani ya GTID_MODE inaweza tu kubadilisha hatua moja kwa wakati mmoja: OFF <-> UPGRADE_STEP_1 <-> UPGRADE_STEP_2 <-> ON. Pia kumbuka kuwa thamani hii lazima iingizwe juu au chini kwa wakati mmoja kwenye seva zote; angalia Mwongozo kwa maagizo. ."
ER_MASTER_HAS_PURGED_REQUIRED_GTIDS
chi "从机更改主站到Master_Auto_Position = 1,因此主站连接,但主设备已清除了slave需要的GTID的二进制日志"
eng "The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires"
spa "El esclavo se está conectando usando CHANGE MASTER TO MASTER_AUTO_POSITION = 1, pero el maestro (master) ha purgado los historiales (logs) binarios que contienen GTIDs requeridos por el esclavo"
+ sw "Mtumwa anaunganisha kwa kutumia CHANGE MASTER TO MASTER_AUTO_POSITION = 1, lakini bwana amesafisha kumbukumbu za binary zenye GTID ambazo mtumwa anahitaji"
ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID
chi "无法由拥有GTID的客户端更改GTID_NEXT。客户拥有%s。所有权在提交或回滚上发布"
eng "GTID_NEXT cannot be changed by a client that owns a GTID. The client owns %s. Ownership is released on COMMIT or ROLLBACK"
spa "GTID_NEXT no se puede cambiar por un cliente que posee un GTID. El cliente posee %s. La propiedad se libera con COMMIT o ROLLBACK"
+ sw "GTID_NEXT haiwezi kubadilishwa na mteja anayemiliki GTID. Mteja anamiliki %s. Umiliki utatolewa kwenye COMMIT au ROLLBACK"
ER_UNKNOWN_EXPLAIN_FORMAT
chi "未知%s格式名称:'%s'"
@@ -8790,155 +9576,184 @@ ER_UNKNOWN_EXPLAIN_FORMAT
geo "უცნობი ფორმატის სახელი ბრძანებისთვის %s: '%s'"
rus "Неизвестное имя формата команды %s: '%s'"
spa "Nombre de formato %s desconocido: '%s'"
+ sw "Jina la umbizo la %s lisilojulikana: '%s'"
ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION 25006
chi "无法在只读事务中执行语句"
eng "Cannot execute statement in a READ ONLY transaction"
spa "No puedo ejecutar sentencia en una transacción READ ONLY"
+ sw "Haiwezi kutekeleza taarifa katika muamala wa READ ONLY"
ER_TOO_LONG_TABLE_PARTITION_COMMENT
chi "表分区的评论'%-.64s'太长(max =%lu)"
eng "Comment for table partition '%-.64s' is too long (max = %lu)"
spa "El comentario para partición de tabla '%-.64s' es demasido largo (máx = %lu)"
+ sw "Maoni ya kizigeu cha jedwali '% -.64s' ni ndefu sana (max = %lu)"
ER_SLAVE_CONFIGURATION
chi "从站未配置或未能正确初始化。您必须至少set --server-id以启用主站或从站。可以在MariaDB错误日志中找到其他错误消息"
eng "Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MariaDB error log"
spa "El esclavo no está configurado o falló al inicializarse de forma adecuada. Vd debe de poner al menos --server-id para activar o bien un maestro (master) o un esclavo. Mensajes de error adicionales pueden ser hallados en historial (log) de errores de MariaDB"
+ sw "Mtumwa haijasanidiwa au imeshindwa kuanzishwa ipasavyo. Ni lazima angalau uweke --server-id ili kuwezesha bwana au mtumwa. Ujumbe wa ziada wa hitilafu unaweza kupatikana katika kumbukumbu ya makosa ya MariaDB"
ER_INNODB_FT_LIMIT
chi "InnoDB目前一次支持一个全文索引创建"
eng "InnoDB presently supports one FULLTEXT index creation at a time"
spa "Actualmente InnoDB soporta la creación de un índice FULLTEXT a la vez"
+ sw "InnoDB kwa sasa inaruhusu uundaji wa faharasa moja ya FULLTEXT kwa wakati mmoja"
ER_INNODB_NO_FT_TEMP_TABLE
chi "无法在临时InnoDB表上创建FullText索引"
eng "Cannot create FULLTEXT index on temporary InnoDB table"
spa "No puedo crear índice FULLTEXT en tabla temporaria InnoDB"
+ sw "Haiwezi kuunda faharisi ya FULLTEXT kwenye jedwali la muda la InnoDB"
ER_INNODB_FT_WRONG_DOCID_COLUMN
chi "列'%-.192s'是innodb fulltext索引的错误类型"
eng "Column '%-.192s' is of wrong type for an InnoDB FULLTEXT index"
spa "La columna '%-.192s' es de tipo equivocado para un índice InnoDB FULLTEXT"
+ sw "Safuwima '%-.192s' ni ya aina isiyo sahihi kwa faharasa ya InnoDB FULLTEXT"
ER_INNODB_FT_WRONG_DOCID_INDEX
chi "InnoDB全文索引的索引'%-.192s'是错误的类型错误"
eng "Index '%-.192s' is of wrong type for an InnoDB FULLTEXT index"
spa "El índice '%-.192s' es de tipo equivocado para un índice InnoDB FULLTEXT"
+ sw "Fahirisi '%-.192s' ni ya aina isiyo sahihi kwa faharasa ya InnoDB FULLTEXT"
ER_INNODB_ONLINE_LOG_TOO_BIG
chi "创建索引'%-.192s'所需的多于'innodb_online_alter_log_max_size'字节的修改日志。请再试一次"
eng "Creating index '%-.192s' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again"
spa "La creación de índice '%-.192s' requirió más de 'innodb_online_alter_log_max_size' bytes de historial (log) de modificaciones. Por favor, pruebe otra vez"
+ sw "Kuunda faharasa '%-.192s' inahitajika zaidi ya baiti za 'innodb_online_alter_log_max_size' za kumbukumbu ya urekebishaji. Tafadhali jaribu tena"
ER_UNKNOWN_ALTER_ALGORITHM
chi "未知算法'%s'"
eng "Unknown ALGORITHM '%s'"
geo "უცნობი ALGORITHM '%s'"
spa "ALGORITHM desconocido '%s'"
+ sw "ALGORITHM '%s' isiyojulikana"
ER_UNKNOWN_ALTER_LOCK
chi "未知锁定类型'%s'"
eng "Unknown LOCK type '%s'"
geo "უცნობი LOCK-ის ტიპი '%s'"
spa "Tipo de LOCK desconocido '%s'"
+ sw "Aina ya LOCK isiyojulikana '%s'"
ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS
chi "当从站因为错误停止或以MTS模式终止时,不呢执行CHANGE MASTER。考虑使用RESET SLAVE或START SLAVE UNTIL"
eng "CHANGE MASTER cannot be executed when the slave was stopped with an error or killed in MTS mode. Consider using RESET SLAVE or START SLAVE UNTIL"
spa "CHANGE MASTER no se puede ejecutar cuando se ha parado el esclavo con un error o matado en modo MTS. Considere el usar RESET SLAVE o START SLAVE UNTIL"
+ sw "CHANGE MASTER haiwezi kutekelezwa wakati mtumwa alisimamishwa kwa hitilafu au kuuawa katika hali ya MTS. Fikiria kutumia RESET SLAVE au START SLAVE UNTIL"
ER_MTS_RECOVERY_FAILURE
chi "从并行执行模式下的从站错误后无法恢复。可以在MariaDB错误日志中找到其他错误消息"
eng "Cannot recover after SLAVE errored out in parallel execution mode. Additional error messages can be found in the MariaDB error log"
spa "No puedo recuperar después de que SLAVE diera error en modo paralelo de ejecución. Mensajes de error adicionales se pueden hallar en el historial (log) de error de MariaDB"
+ sw "Haiwezi kurejesha baada ya SLAVE kukosea katika hali ya utekelezaji sambamba. Ujumbe wa ziada wa hitilafu unaweza kupatikana katika kumbukumbu ya makosa ya MariaDB"
ER_MTS_RESET_WORKERS
chi "无法清理工作者信息表。可以在MariaDB错误日志中找到其他错误消息"
eng "Cannot clean up worker info tables. Additional error messages can be found in the MariaDB error log"
spa "No puedo limpiar tablas de información de trabajador. Mensajes de error adicionales se pueden hallar en el historial (log) de error de MariaDB"
+ sw "Haiwezi kusafisha majedwali ya maelezo ya mfanyakazi. Ujumbe wa ziada wa hitilafu unaweza kupatikana kwenye kumbukumbu ya makosa ya MariaDB"
ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2
chi "列数为%s.%s是错误的。预期的%d,找到%d。表可能损坏了"
eng "Column count of %s.%s is wrong. Expected %d, found %d. The table is probably corrupted"
ger "Spaltenanzahl von %s.%s falsch. %d erwartet, aber %d gefunden. Tabelle ist wahrscheinlich beschädigt"
spa "El contador de columnas %s.%s está equivocado. Se esperaba %d, hallado %d. La tabla está probablemente estropeada"
+ sw "Hesabu ya safu wima ya %s.%s si sahihi. Inatarajiwa %d, imepatikana %d. Jedwali labda limeharibika"
ER_SLAVE_SILENT_RETRY_TRANSACTION
chi "从站必须静默地重试当前事务"
eng "Slave must silently retry current transaction"
spa "El esclavo debe de reintentar silenciosamente la transacción en curso"
+ sw "Lazima mtumwa ajaribu tena muamala wa sasa kimya kimya"
ER_UNUSED_22
eng "You should never see it"
geo "ეს არასდროს უნდა დაინახოთ"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_TABLE_SCHEMA_MISMATCH
chi "架构不匹配(%s)"
eng "Schema mismatch (%s)"
geo "სქემა არ ემთხვევა (%s)"
spa "Esquema no coincide (%s)"
+ sw "Schema hailingani (%s)"
ER_TABLE_IN_SYSTEM_TABLESPACE
chi "表%-.192s在系统表空间中"
eng "Table %-.192s in system tablespace"
spa "Tabla %-.192s en espacio de tablas del sitema"
+ sw "Jedwali %-.192s katika nafasi ya jedwali la mfumo"
ER_IO_READ_ERROR
chi "IO读取错误:(%lu,%s)%s"
eng "IO Read error: (%lu, %s) %s"
geo "IO წაკითხვის შეცდომა: (%lu, %s) %s"
spa "Error de Lectura de E/S: (%lu, %s) %s"
+ sw "Hitilafu ya IO ya kusoma: (%lu, %s) %s"
ER_IO_WRITE_ERROR
chi "IO写错错误:(%lu,%s)%s"
eng "IO Write error: (%lu, %s) %s"
geo "IO ჩაწერის შეცდომა: (%lu, %s) %s"
spa "Error de Escritura de E/S: (%lu, %s) %s"
+ sw "Hitilafu ya Kuandika ya IO: (%lu, %s) %s"
ER_TABLESPACE_MISSING
chi "表空间缺少表'%-.192s'"
eng "Tablespace is missing for table '%-.192s'"
spa "Espacio de tabla falta para la tabla '%-.192s'"
+ sw "Nafasi ya jedwali ya jedwali '%-.192s'haipo"
ER_TABLESPACE_EXISTS
chi "表格'%-.192s'的表空间。请在导入之前丢弃表空间"
eng "Tablespace for table '%-.192s' exists. Please DISCARD the tablespace before IMPORT"
spa "Existe Espacio de tabla para la tabla '%-.192s'. Por favor, haga DISCARD del espacio de tabla antes de hacer IMPORT"
+ sw "Nafasi ya jedwali ya jedwali '%-.192s' ipo. Tafadhali DISCARD nafasi ya jedwali kabla ya kufanya IMPORT"
ER_TABLESPACE_DISCARDED
chi "表空间已被丢弃为表%`s"
eng "Tablespace has been discarded for table %`s"
spa "El espacio de tabla ha sido descartado para la tabla %`s"
+ sw "Nafasi ya jedwali imetupwa kwa jedwali %`s"
ER_INTERNAL_ERROR
chi "内部错误:%-.192s"
eng "Internal error: %-.192s"
geo "შიდა შეცდომა: %-.192s"
spa "Error interno: %-.192s"
+ sw "Hitilafu ya ndani: %-.192s"
ER_INNODB_IMPORT_ERROR
chi "ALTER TABLE '%-.192s' IMPORT TABLESPACE 失败,错误%lu:'%s'"
eng "ALTER TABLE '%-.192s' IMPORT TABLESPACE failed with error %lu : '%s'"
geo "ALTER TABLE '%-.192s' IMPORT TABLESPACE დასრულდა შეცდომით %lu : '%s'"
spa "ALTER TABLE '%-.192s' IMPORT TABLESPACE ha fallado con error %lu : '%s'"
+ sw "ALTER TABLE '%-.192s' IMPORT TABLESPACE imeshindwa na hitilafu %lu : '%s'"
ER_INNODB_INDEX_CORRUPT
chi "索引损坏:%s"
eng "Index corrupt: %s"
geo "ინდექსი დაზიანებულია: %s"
spa "Índice corrupto: %s"
+ sw "Kielezo kimeharibika: %s"
ER_INVALID_YEAR_COLUMN_LENGTH
chi "已弃用YEAR(%lu)列类型。创建YEAR(4)列代替"
eng "YEAR(%lu) column type is deprecated. Creating YEAR(4) column instead"
rus "Тип YEAR(%lu) более не поддерживается, вместо него будет создана колонка с типом YEAR(4)"
spa "El tipo de columna YEAR(%lu) está obsoleto. Creando columna YEAR(4) en su lugar"
+ sw "YEAR(%lu) aina ya safu imeacha kutumika. Inaunda safu wima ya YEAR(4) badala yake"
ER_NOT_VALID_PASSWORD
eng "Your password does not satisfy the current policy requirements (%s)"
geo "თქვენი პაროლი მიმდინარე პოლიტიკის მოთხოვნებს არ აკმაყოფილებს (%s)"
+ sw "Nenosiri lako halikidhi mahitaji ya sasa ya sera (%s)"
ukr "Ваш пароль не відповідає поточним правилам (%s)"
ER_MUST_CHANGE_PASSWORD
@@ -8948,203 +9763,242 @@ ER_MUST_CHANGE_PASSWORD
geo "ამ გამოსახულების გაშვებამდე SET PASSWORD უნდა გაუშვათ"
rum "Trebuie sa iti schimbi parola folosind SET PASSWORD inainte de a executa aceasta comanda"
spa "Debe vd de poner SET PASSWORD antes de ejecutar esta sentencia"
+ sw "Lazima uweke nenosiri kwa kutumia SET PASSWORD kabla ya kutekeleza taarifa hii"
ER_FK_NO_INDEX_CHILD
chi "无法添加外键约束。外表'%s'中的约束'%s'缺少索引"
eng "Failed to add the foreign key constraint. Missing index for constraint '%s' in the foreign table '%s'"
spa "No pude añadir la restricción de clave foránea. Falta índice para restricción '%s' en la tabla foránea '%s'"
+ sw "Imeshindwa kuongeza kizuizi cha ufunguo wa kigeni. Faharasa haipo ya kizuizi '%s' katika jedwali la kigeni '%s'"
ER_FK_NO_INDEX_PARENT
chi "无法添加外键约束。引用的表'%s'中的约束'%s'缺少索引"
eng "Failed to add the foreign key constraint. Missing index for constraint '%s' in the referenced table '%s'"
spa "No pude añadir la restricción de clave foránea. Falta índice para restricción '%s' en la tabla referenciada '%s'"
+ sw "Imeshindwa kuongeza kizuizi cha kigeni cha ufunguo. Faharasa haipo ya kizuizi '%s' katika jedwali la marejeleo '%s'"
ER_FK_FAIL_ADD_SYSTEM
chi "无法将外键约束'%s'添加到系统表"
eng "Failed to add the foreign key constraint '%s' to system tables"
spa "No pude añadir la restricción de clave foránea '%s' a las tablas del sistema"
+ sw "Imeshindwa kuongeza kizuizi cha ufunguo wa kigeni '%s' kwenye jedwali la mfumo"
ER_FK_CANNOT_OPEN_PARENT
chi "无法打开引用的表'%s'"
eng "Failed to open the referenced table '%s'"
spa "No pude abrir la tabla referenciada '%s'"
+ sw "Imeshindwa kufungua jedwali lililorejelewa '%s'"
ER_FK_INCORRECT_OPTION
chi "无法在表'%s'上添加外键约束。外键约束'%s'中的选项不正确"
eng "Failed to add the foreign key constraint on table '%s'. Incorrect options in FOREIGN KEY constraint '%s'"
spa "No pude añadir restricción de clave foránea en la tabla '%s'. Opciones incorrectas en restricción FOREIGN KEY '%s'"
+ sw "Imeshindwa kuongeza kizuizi cha ufunguo wa kigeni kwenye jedwali '%s'. Chaguo zisizo sahihi katika kikwazo cha FOREIGN KEY '%s'"
ER_DUP_CONSTRAINT_NAME
chi "重复%s约束名称'%s'"
eng "Duplicate %s constraint name '%s'"
spa "Duplicada restricción %s llamada '%s'"
+ sw "Rudufu %s jina la kizuizi '%s'"
ER_PASSWORD_FORMAT
chi "密码哈希没有预期的格式。检查密码()函数是否使用正确的密码算法"
eng "The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function"
spa "El cálculo de contraseña no tiene el formato esperado. Revise si se está usando el algoritmo correcto de contraseña con la función PASSWORD()"
+ sw "Heshi ya nenosiri haina umbizo linalotarajiwa. Angalia kama kanuni sahihi ya nenosiri inatumiwa na kitendakazi cha PASSWORD()"
ER_FK_COLUMN_CANNOT_DROP
chi "无法删除'%-.192s'列:在外部索引约束'%-.192s'中需要"
eng "Cannot drop column '%-.192s': needed in a foreign key constraint '%-.192s'"
ger "Kann Spalte '%-.192s' nicht löschen: wird für eine Fremdschlüsselbeschränkung '%-.192s' benötigt"
spa "No puedo eliminar la columna '%-.192s': necesaria en restricción de clave foránea '%-.192s'"
+ sw "Haiwezi kudondosha safuwima '%-.192s': inahitajika katika kizuizi cha ufunguo wa kigeni '%-.192s'"
ER_FK_COLUMN_CANNOT_DROP_CHILD
chi "无法删除列'%-.192s':在外键约束'%-.192s'中需要,表%-.192s"
eng "Cannot drop column '%-.192s': needed in a foreign key constraint '%-.192s' of table %-.192s"
ger "Kann Spalte '%-.192s' nicht löschen: wird für eine Fremdschlüsselbeschränkung '%-.192s' der Tabelle %-.192s benötigt"
spa "No puedo eliminar la columna '%-.192s': necesaria en restriccón de clave foránea '%-.192s' de la tabla %-.192s"
+ sw "Haiwezi kudondosha safuwima '%-.192s': inahitajika katika kizuizi cha kigeni cha '%-.192s' cha jedwali %-.192s"
ER_FK_COLUMN_NOT_NULL
chi "列'%-.192s'不能没有null:在外键约束'%-.192s'设置为null"
eng "Column '%-.192s' cannot be NOT NULL: needed in a foreign key constraint '%-.192s' SET NULL"
ger "Spalte '%-.192s' kann nicht NOT NULL sein: wird für eine Fremdschlüsselbeschränkung '%-.192s' SET NULL benötigt"
spa "La columna '%-.192s' no puede ser NOT NULL: necesaria en restricción de clave foránea '%-.192s' SET NULL"
+ sw "Safuwima '%-.192s' haiwezi NOT NULL: inahitajika katika kikwazo cha ufunguo wa kigeni '% -.192s' SET NULL"
ER_DUP_INDEX
chi "重复索引%`s。这已弃用,将在未来的版本中不允许"
eng "Duplicate index %`s. This is deprecated and will be disallowed in a future release"
spa "Índice duplicado %`s. Éste está obsoleto y será quitado en entregas futuras"
+ sw "Nakala kielezo %`s. Hii imeacha kutumika na haitakubaliwa katika toleo la baadaye"
ER_FK_COLUMN_CANNOT_CHANGE
chi "无法更改列'%-.192s':用于外部键约束'%-.192s'"
eng "Cannot change column '%-.192s': used in a foreign key constraint '%-.192s'"
spa "No puedo cambiar la columna '%-.192s': usada en una restricción de clave foránea '%-.192s'"
+ sw "Haiwezi kubadilisha safuwima '%-.192s': inatumika katika kizuizi cha ufunguo wa kigeni '%-.192s'"
ER_FK_COLUMN_CANNOT_CHANGE_CHILD
chi "无法更改列'%-.192s':用于在外部键约束'%-.192s'的表'%-.192s'"
eng "Cannot change column '%-.192s': used in a foreign key constraint '%-.192s' of table '%-.192s'"
spa "No puedo cambiar la columna '%-.192s': usada en restricción de clave foránea '%-.192s' de la tabla '%-.192s'"
+ sw "Haiwezi kubadilisha safuwima '%-.192s': inatumika katika kizuizi cha kigeni cha '%-.192s' cha jedwali '%-.192s'"
ER_FK_CANNOT_DELETE_PARENT
chi "无法从表中删除来自表中的父级的表中的行'%-.192s”表'%-.192s'"
eng "Cannot delete rows from table which is parent in a foreign key constraint '%-.192s' of table '%-.192s'"
spa "No puedo borrar filas de la tabla que es padre en restricción de clave foránea '%-.192s' de la tabla '%-.192s'"
+ sw "Haiwezi kufuta safu mlalo kutoka kwa jedwali ambalo ni mzazi katika kizuizi cha kigeni cha '%-.192s' cha jedwali '%-.192s'"
ER_MALFORMED_PACKET
chi "畸形通信包"
eng "Malformed communication packet"
geo "კომუნიკაციის არასწორი პაკეტი"
spa "Paquete de comunicación malformado"
+ sw "Pakiti ya mawasiliano iliyoharibika"
ER_READ_ONLY_MODE
chi "以只读模式运行"
eng "Running in read-only mode"
geo "გაშვებულია მხოლოდ-წაკითხვის რეჟიმში"
spa "Ejecutando em modo sólo-lectura"
+ sw "Kufanya kazi katika hali ya kusoma tu"
ER_GTID_NEXT_TYPE_UNDEFINED_GROUP
chi "当GTID_NEXT设置为GTID时,必须在提交或回滚后立即将其再次设置。如果在从SQL线程中看到此错误消息,则表示当前事务中的表是在主站和从站上的非交易的事务性。在客户端连接中,它意味着您在事务之前执行SET GTID_NEXT并忘记将GTID_NEXT设置为不同的标识符或在提交或回滚后“自动”。当前gtid_next是'%s'"
eng "When GTID_NEXT is set to a GTID, you must explicitly set it again after a COMMIT or ROLLBACK. If you see this error message in the slave SQL thread, it means that a table in the current transaction is transactional on the master and non-transactional on the slave. In a client connection, it means that you executed SET GTID_NEXT before a transaction and forgot to set GTID_NEXT to a different identifier or to 'AUTOMATIC' after COMMIT or ROLLBACK. Current GTID_NEXT is '%s'"
spa "Cuando GTID_NEXT se pone a GTID, debe vd de ponerlo de nuevo de forma explícita tras un COMMIT o ROLLBACK. Si vd ve este mensaje de error en el hilo (thread) de SQL esclavo, indica que una tabla de la transacción en curso es transaccional en el maestro (master) y no transaccional en el esclavo. En una conexión cliente, indica que has ejecutado SET GTID_NEXT antes de una transacción y has olvidado poner GTID_NEXT a un identificador diferente o a 'AUTOMATIC' tras COMMIT o ROLLBACK. El GTID_NEXT actual es '%s'"
+ sw "GTID_NEXT inapowekwa kuwa GTID, lazima uiweke tena kwa uwazi baada ya COMMIT au ROLLBACK. Ukiona ujumbe huu wa hitilafu kwenye mnyororo wa SQL wa mtumwa, inamaanisha kuwa jedwali katika muamala wa sasa ni wa muamala kwa bwana na sio muamala kwa mtumwa. Katika muunganisho wa mteja, inamaanisha kuwa ulitekeleza SET GTID_NEXT kabla ya muamala na ukasahau kuweka GTID_NEXT kuwa kitambulisho tofauti au 'AUTOMATIC' baada ya COMMIT au ROLLBACK. GTID_NEXT ya sasa ni '%s'"
ER_VARIABLE_NOT_SETTABLE_IN_SP
chi "无法在存储过程中设置系统变量%.200s"
eng "The system variable %.200s cannot be set in stored procedures"
spa "La variable de sistema %.200s no se puede poner en procedimentos almacenados"
+ sw "Kigezo cha mfumo %.200s hakiwezi kuwekwa katika taratibu zilizohifadhiwa"
ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF
chi "只能在GTID_MODE = ON设置GTID_PURGED"
eng "GTID_PURGED can only be set when GTID_MODE = ON"
spa "GTID_PURGED sólo se puede usar cuando GTID_MODE = ON"
+ sw "GTID_PURGED inaweza tu kuwekwa wakati GTID_MODE = ON"
ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY
chi "只有在GTID_EXECUTED为空时才可以设置GTID_PURGED"
eng "GTID_PURGED can only be set when GTID_EXECUTED is empty"
spa "GTID_PURGED sólo se puede poner cuando GTID_EXECUTED está vacío"
+ sw "GTID_PURGED inaweza tu kuwekwa wakati GTID_EXECUTED ni tupu"
ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY
chi "只有在没有持续的事务时才可以设置GTID_PURGED(即使在其他客户端中不)"
eng "GTID_PURGED can only be set when there are no ongoing transactions (not even in other clients)"
spa "GTID_PURGED sólo se puede poner cuando no hay trasacciones en curso (ni incluso en otros clientes)"
+ sw "GTID_PURGED inaweza tu kuwekwa wakati hakuna miamala inayoendelea (hata kwa wateja wengine)"
ER_GTID_PURGED_WAS_CHANGED
chi "GTID_PURGED从'%s'更改为'%s'"
eng "GTID_PURGED was changed from '%s' to '%s'"
geo "GTID_PURGED შეიცვალა '%s'-დან '%s'-ზე"
spa "GTID_PURGED se cambió de '%s' a '%s'"
+ sw "GTID_PURGED ilibadilishwa kutoka '%s' hadi '%s'"
ER_GTID_EXECUTED_WAS_CHANGED
chi "GTID_EXECUTE从'%s'更改为'%s'"
eng "GTID_EXECUTED was changed from '%s' to '%s'"
geo "GTID_EXECUTED შეიცვალა '%s'-დან '%s'-ზე"
spa "GTID_EXECUTED se cambió de '%s' a '%s'"
+ sw "GTID_EXECUTED ilibadilishwa kutoka '%s' hadi '%s'"
ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES
chi "无法执行语句:由于BINLOG_FORMAT = STATEMENT,因此无法写入二进制日志,并将复制和非复制表写入"
eng "Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT, and both replicated and non replicated tables are written to"
spa "No puedo ejecutar sentencia: imposible escribir en historial (log) binario desde BINLOG_FORMAT = STATEMENT y en tablas replicadas y no replicadas"
+ sw "Haiwezi kutekeleza taarifa: haiwezekani kuandika kwa logi ya jozi kwa kuwa BINLOG_FORMAT = STATEMENT, na majedwali yaliyonakiliwa na yasiyo na nakala yameandikwa tayari"
ER_ALTER_OPERATION_NOT_SUPPORTED 0A000
chi "此操作不支持%s。试试%s"
eng "%s is not supported for this operation. Try %s"
spa "%s no está soportado para esta operación. Pruebe %s"
+ sw "%s haitumiki kwa operesheni hii. Jaribu %s"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON 0A000
chi "不支持%s。原因:%s。试试%s"
eng "%s is not supported. Reason: %s. Try %s"
spa "%s no está soportado. Motivo: %s. Pruebe %s"
+ sw "%s haitumiki. Sababu: %s. Jaribu %s"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY
chi "复制算法需要锁定"
eng "COPY algorithm requires a lock"
spa "El algoritmo de COPY requiere de un bloqueo"
+ sw "Taratibu ya COPY inahitaji kufuli"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION
chi "分区特定操作尚不支持锁定/算法"
eng "Partition specific operations do not yet support LOCK/ALGORITHM"
spa "Las operaciones específicas de partición aún no soportan LOCK/ALGORITHM"
+ sw "Shughuli maalum za kizigeu bado haziauni LOCK/ALGORITHM"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME
chi "参与外键的列被更名"
eng "Columns participating in a foreign key are renamed"
spa "Las columnas que participan en una clave foránea son renombradas"
+ sw "Safu wima zinazoshiriki katika ufunguo wa kigeni zinabadilishwa jina"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE
chi "无法更改列类型"
eng "Cannot change column type"
spa "No puedo cambiar el tipo de la columna"
+ sw "Haiwezi kubadilisha aina ya safu"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK
chi "添加外键需要figner_key_checks = OFF"
eng "Adding foreign keys needs foreign_key_checks=OFF"
spa "El añadir claves foráneas necesita de foreign_key_checks=OFF"
+ sw "Kuongeza funguo za kigeni kunahitaji foreign_key_checks=OFF"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_IGNORE
chi "使用忽略创建唯一索引需要复制算法删除重复行"
eng "Creating unique indexes with IGNORE requires COPY algorithm to remove duplicate rows"
spa "El crear ídices únicos con IGNORE requiere del algoritmo COPY para quitar filas duplicadas"
+ sw "Kuunda faharisi za kipekee na IGNORE kunahitaji utaratibu wa COPY ili kuondoa safu mlalo"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK
chi "不允许删除主键,而不添加新的主键"
eng "Dropping a primary key is not allowed without also adding a new primary key"
spa "Eliminar una clave primaria no está permitido sin añadir también una nueva clave primaria"
+ sw "Kudondosha ufunguo msingi hairuhusiwi bila pia kuongeza ufunguo mpya msingi"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC
chi "添加自动增量列需要锁定"
eng "Adding an auto-increment column requires a lock"
spa "Para añadir una columna auto-incrementable se requiere de un bloqueo"
+ sw "Kuongeza safu wima ya kuongeza kiotomatiki kunahitaji kufuli"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS
chi "无法使用用户可见的替换隐藏的FTS_DOC_ID"
eng "Cannot replace hidden FTS_DOC_ID with a user-visible one"
spa "No puedo reemplazar FTS_DOC_ID oculta con una visible-por-usuario"
+ sw "Haiwezi kuchukua nafasi ya FTS_DOC_ID iliyofichwa na inayoonekana na mtumiaji"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS
chi "无法删除或重命名FTS_DOC_ID"
eng "Cannot drop or rename FTS_DOC_ID"
spa "No puedo eliminar o renombrar FTS_DOC_ID"
+ sw "Haiwezi kudondosha au kubadili jina FTS_DOC_ID"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS
chi "fulltext索引创建需要锁定"
eng "Fulltext index creation requires a lock"
spa "La creación de un índice Fulltext requiere de un bloqueo"
+ sw "Uundaji wa faharasa ya maandishi kamili(fulltext) unahitaji kufuli"
ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE
chi "使用GTID_Mode = ON运行时,无法设置SQL_SLAVE_SKIP_COUNTER。相反,对于要跳过的每个事务,使用与事务相同的GTID生成空事务"
eng "sql_slave_skip_counter can not be set when the server is running with GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction"
spa "sql_slave_skip_counter no se puede poner cuando el servidor se ejecuta con GTID_MODE = ON. En su lugar, para cada transacción que desees saltar, genera una transacción vacía con el mismo GTID que la transacción"
+ sw "sql_slave_skip_counter haiwezi kuwekwa seva inapofanya kazi na GTID_MODE = ON. Badala yake, kwa kila muamala unaotaka kuruka, toa muamala tupu kwa GTID sawa na muamala"
ER_DUP_UNKNOWN_IN_INDEX 23000
chi "索引的重复条目'%-.192s'"
@@ -9170,6 +10024,7 @@ ER_DUP_UNKNOWN_IN_INDEX 23000
serbian "Dupliran unos za ključ '%-.192s'"
slo "Opakovaný kľúč (číslo kľúča '%-.192s')"
spa "Entrada duplicada para la clave '%-.192s'"
+ sw "Ingizo rudufu la ufunguo '% -.192s'"
swe "Dublett för nyckel '%-.192s'"
ukr "Дублюючий запис для ключа '%-.192s'"
@@ -9177,11 +10032,13 @@ ER_IDENT_CAUSES_TOO_LONG_PATH
chi "对象的长数据库名称和标识符导致路径长度超过%d字符。路径:'%s'"
eng "Long database name and identifier for object resulted in path length exceeding %d characters. Path: '%s'"
spa "Nombre largo de base de datos e identificador para objeto resultó en que el tamaño de la ruta excedió de %d caracteres. Ruta: '%s'"
+ sw "Jina refu la hifadhidata na kitambulisho cha kitu kilisababisha urefu wa njia kuzidi vibambo %d. Njia: '%s'"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL
chi "无法将null转换为非常量默认值"
eng "cannot convert NULL to non-constant DEFAULT"
spa "no puedo convertir NULL a DEFAULT no-constante"
+ sw "haiwezi kubadilisha NULL kuwa DEFAULT isiyo ya mara kwa mara"
ER_MUST_CHANGE_PASSWORD_LOGIN
bgn "Паролата ви е изтекла. За да влезете трябва да я смените използвайки клиент който поддрържа такива пароли"
@@ -9189,92 +10046,110 @@ ER_MUST_CHANGE_PASSWORD_LOGIN
eng "Your password has expired. To log in you must change it using a client that supports expired passwords"
rum "Parola ta a expirat. Pentru a te loga, trebuie sa o schimbi folosind un client ce suporta parole expirate"
spa "Su contraseña ha expirado. Para ingresar, vd debe de cambiarla usando un cliente que soporte contraseñas expiradas"
+ sw "Nenosiri lako limeisha muda wake. Ili kuingia lazima ulibadilishe kwa kutumia kiteja kinachotumia nywila zilizoisha muda wake"
ER_ROW_IN_WRONG_PARTITION
chi "在错误分区%s中找到了一行"
eng "Found a row in wrong partition %s"
spa "Hallada una fila en partición equivocada %s"
+ sw "Tumepata safu katika kizigeu kisicho sahihi %s"
swe "Hittade en rad i fel partition %s"
ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX
chi "无法安排事件%s,中继日志名称%s,position%s对工作线程,因为它的大小%lu超过了slave_pending_jobs_size_max (%lu)"
eng "Cannot schedule event %s, relay-log name %s, position %s to Worker thread because its size %lu exceeds %lu of slave_pending_jobs_size_max"
spa "No puedo organizar evento %s, nombre de historial (log)-reenvío %s, posiciona %s a hilo (thread) de Trabajador porque su tamaño %lu excede %lu de slave_pending_jobs_size_max"
+ sw "Haiwezi kuratibu tukio %s, jina la kumbukumbu ya relay %s, weka %s kwa mazungumzo ya Mfanyakazi kwa sababu ukubwa wake %lu unazidi %lu ya slave_pending_jobs_size_max"
ER_INNODB_NO_FT_USES_PARSER
chi "无法在InnoDB表上CREATE FULLTEXT INDEX WITH PARSER"
eng "Cannot CREATE FULLTEXT INDEX WITH PARSER on InnoDB table"
spa "No puedo CREATE FULLTEXT INDEX WITH PARSER en tabla InnoDB"
+ sw "Haiwezi kufanya CREATE FULLTEXT INDEX WITH PARSER kwenye jedwali la InnoDB"
ER_BINLOG_LOGICAL_CORRUPTION
chi "二进制日志文件'%s'逻辑损坏:%s"
eng "The binary log file '%s' is logically corrupted: %s"
spa "El fichero/archivo de historial (log) binario '%s' está lógicamente corrupto: %s"
+ sw "Faili ya kumbukumbu ya mfumo wa jozi '%s' imepotoshwa kimantiki: %s"
ER_WARN_PURGE_LOG_IN_USE
chi "未清除文件%s,因为它被%d线程读取,只清除%d文件中的%d"
eng "file %s was not purged because it was being read by %d thread(s), purged only %d out of %d files"
spa "el fchero %s no se ha purgado porque estaba siendo leído por hilo(s) (thread) %d, purgado sólo %d de %d ficheros/archivos"
+ sw "faili %s haikusafishwa kwa sababu ilikuwa ikisomwa na %d mazungumzo, iliyosafishwa %d pekee kati ya faili %d"
ER_WARN_PURGE_LOG_IS_ACTIVE
chi "文件%s未清除,因为它是活动日志文件"
eng "file %s was not purged because it is the active log file"
spa "el fichero/archivo %s no fue purgado porque es el fichero/archivo activo de historial (log)"
+ sw "faili %s haikusafishwa kwa sababu ni faili ya kumbukumbu inayotumika"
ER_AUTO_INCREMENT_CONFLICT
chi "更新中的自动增量值与内部生成的值冲突"
eng "Auto-increment value in UPDATE conflicts with internally generated values"
spa "Valor de Auto-incremento en UPDATE está en conflicto con valores generados internamente"
+ sw "Thamani ya kuongeza kiotomatiki ya UPDATE ziko katika migongano na thamani zinazozalishwa ndani"
WARN_ON_BLOCKHOLE_IN_RBR
chi "未记录行事件的%s语句,该语句以行格式修改BlackHole表。表:'%-.192s'"
eng "Row events are not logged for %s statements that modify BLACKHOLE tables in row format. Table(s): '%-.192s'"
spa "Los eventos de fila no son puestos en historial (log) para sentencias %s que modifican tablas BLACKHOLE en formato de fila. Tabla(s): '%-.192s'"
+ sw "Matukio ya safu mlalo hayawekwi kwa kumbukumbu kama ni ya taarifa %s zinazorekebisha majedwali ya BLACKHOLE katika umbizo la safu mlalo. Majedwali: '%-.192s'"
ER_SLAVE_MI_INIT_REPOSITORY
chi "从设备无法从存储库初始化主信息结构"
eng "Slave failed to initialize master info structure from the repository"
spa "El esclavo falló al inicializar información de estructura del maestro (master) desde el repositorio"
+ sw "Mtumwa alishindwa kuanzisha muundo mkuu wa habari kutoka kwa hazina"
ER_SLAVE_RLI_INIT_REPOSITORY
chi "从站无法从存储库初始化中继日志信息结构"
eng "Slave failed to initialize relay log info structure from the repository"
spa "El esclavo falló al inicializar estructura de información de historial (log) de reenvío desde el repositorio"
+ sw "Mtumwa alishindwa kuanzisha muundo wa habari ya relay wa logi kutoka kwa hazina"
ER_ACCESS_DENIED_CHANGE_USER_ERROR 28000
bgn "Отказан достъп при опит за смяна към потребител %-.48s'@'%-.64s' (използвана парола: %s). Затваряне на връзката"
chi "访问拒绝尝试更改为用户'%-.48s'@'%-.64s'(使用密码:%s)。断开连接"
eng "Access denied trying to change to user '%-.48s'@'%-.64s' (using password: %s). Disconnecting"
spa "Acceso denegado intentando cambiar a usuario '%-.48s'@'%-.64s' (usando contraseña: %s). Desconectando"
+ sw "Ufikiaji umekataliwa kujaribu kubadilisha hadi mtumiaji '%-.48s'@'%-.64s' (kwa kutumia nenosiri: %s). Inatenganisha"
ER_INNODB_READ_ONLY
chi "innodb是只读模式"
eng "InnoDB is in read only mode"
hindi "InnoDB केवल READ-ONLY मोड में है"
spa "InnoDB está en modo de sólo lectura"
+ sw "InnoDB iko katika hali ya kusoma tu"
ER_STOP_SLAVE_SQL_THREAD_TIMEOUT
chi "STOP SLAVE命令执行不完整:从SQL线程获得停止信号,线程正忙,一旦当前任务完成后,SQL线程将停止"
eng "STOP SLAVE command execution is incomplete: Slave SQL thread got the stop signal, thread is busy, SQL thread will stop once the current task is complete"
spa "La ejecución del comando STOP SLAVE está incompleta: El hilo (thread) de SQL esclavo recibió la señal de parada, hilo (thread) ocupado, el hilo (thread) SQL se parará una vez que se complete la tarea actual"
+ sw "Utekelezaji wa amri ya STOP SLAVE haujakamilika: Zungumzo wa Slave SQL umepata ishara ya kusimamisha, zungumzo una shughuli nyingi, zungumzo wa SQL utasimama mara tu kazi ya sasa itakapokamilika"
ER_STOP_SLAVE_IO_THREAD_TIMEOUT
chi "STOP SLAVE命令执行不完整:从机动程线程得到停止信号,线程很忙,一旦当前任务完成后,IO线程将停止。"
eng "STOP SLAVE command execution is incomplete: Slave IO thread got the stop signal, thread is busy, IO thread will stop once the current task is complete"
spa "La ejecución del comando STOP SLAVE está incompleta: El hilo (thread) de E/S esclavo recibió la señal de parada, hilo (thread) ocupado, el hilo (thread) de E/S se parará una vez que se complete la tarea actual"
+ sw "Utekelezaji wa amri ya STOP SLAVE haujakamilika: Zungumzo wa Slave IO umepata ishara ya kusimamisha, zungumzo una shughuli nyingi, zungumzo wa IO utasimama mara tu kazi ya sasa itakapokamilika"
ER_TABLE_CORRUPT
chi "无法执行操作。表'%-.64s。%-.64s'丢失,损坏或包含不良数据"
eng "Operation cannot be performed. The table '%-.64s.%-.64s' is missing, corrupt or contains bad data"
spa "La operación no se puede realizar. Falta la tabla '%-.64s.%-.64s', está corrupta o contiene datos malos"
+ sw "Operesheni haiwezi kufanywa. Jedwali '%-.64s.%-.64s' halipo, limeharibika au lina data mbaya"
ER_TEMP_FILE_WRITE_FAILURE
chi "临时文件写入失败"
eng "Temporary file write failure"
spa "Fallo al escribir fichero/archivo temporal"
+ sw "Kushindwa kuandika faili kwa muda"
ER_INNODB_FT_AUX_NOT_HEX_ID
chi "升级索引名称失败,请使用创建索引(ALTER TABLE)算法复制来重建索引"
eng "Upgrade index name failed, please use create index(alter table) algorithm copy to rebuild index"
spa "Falló la mejora de nombre de índice. Por favor, use una copia del algoritmo de create index(alter table) para reconstruir el índice"
+ sw "Kuboresha jina la fahirisi kumeshindwa, tafadhali tumia create index(alter table) algorithm copy kuunda upya faharasa"
#
#
# MariaDB error messages section starts here
@@ -9285,6 +10160,7 @@ ER_INNODB_FT_AUX_NOT_HEX_ID
ER_LAST_MYSQL_ERROR_MESSAGE
eng ""
+ sw ""
# MariaDB error numbers starts from 1900
start-error-number 1900
@@ -9295,28 +10171,34 @@ ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
chi "函数或表达式'%s'不能用于%s的%`s"
eng "Function or expression '%s' cannot be used in the %s clause of %`s"
spa "La Función o expresión '%s' no se puede usar en la cláusula %s de %`s"
+ sw "Kitendo au usemi '%s' hauwezi kutumika katika kifungu cha %s cha %`s"
ER_UNUSED_19
eng "You should never see it"
ER_PRIMARY_KEY_BASED_ON_GENERATED_COLUMN
chi "主键无法在生成的列上定义"
eng "Primary key cannot be defined upon a generated column"
spa "La clave primaria no se puede definir sobre una columna generada"
+ sw "Ufunguo wa msingi hauwezi kufafanuliwa kwenye safu wima iliyotengenezwa kiotomatiki"
ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN
chi "无法在虚拟生成的列上定义键/索引"
eng "Key/Index cannot be defined on a virtual generated column"
spa "Key/Index no se puede definir en una columna virtual generada"
+ sw "Ufunguo/Faharisi haiwezi kufafanuliwa kwenye safu wima iliyotengenezwa kiotomatiki na ni aina ya virtual"
ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN
chi "无法在生成的列上定义%s子句的外键"
eng "Cannot define foreign key with %s clause on a generated column"
spa "No puedo definir clave foránea con cláusula %s en una columna generada"
+ sw "Haiwezi kufafanua ufunguo wa kigeni na kifungu cha %s kwenye safu wima iliyotengenezwa kiotomatiki"
ER_WARNING_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN
chi "忽略了表'%s'中为生成的列'%s'指定的值已被忽略"
eng "The value specified for generated column '%s' in table '%s' has been ignored"
spa "El valor especificado para columna generada '%s' en la tabla '%s' ha sido ignorado"
+ sw "Thamani iliyobainishwa kwa safu wima '%s' iliyotengenezwa kiotomatiki kwenye jedwali '%s' imepuuzwa"
ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN
chi "生成的列尚未支持这一点"
eng "This is not yet supported for generated columns"
spa "Esto no está aún soportado para columnas generadas"
+ sw "Hii bado haijatumika kwa safu wima zinazozalishwa"
ER_UNUSED_20
eng "You should never see it"
ER_UNUSED_21
@@ -9326,87 +10208,108 @@ ER_UNSUPPORTED_ENGINE_FOR_GENERATED_COLUMNS
eng "%s storage engine does not support generated columns"
hindi "स्टोरेज इंजन %s COMPUTED कॉलम्स को सपोर्ट नहीं करता"
spa "El motor de almacenaje %s no soporta columnas generadas"
+ sw "%s injini ya hifadhi haitumii safu wima zilizotengenezwa kiotomatiki"
ER_UNKNOWN_OPTION
chi "未知选项'%-.64s'"
eng "Unknown option '%-.64s'"
hindi "अज्ञात विकल्प '%-.64s'"
spa "Opción desconocida '%-.64s'"
+ sw "Chaguo lisilojulikana '% -.64s'"
ER_BAD_OPTION_VALUE
chi "值不正确'%-.64T'选项'%-.64s'"
eng "Incorrect value '%-.64T' for option '%-.64s'"
hindi "गलत मान '%-.64T' विकल्प '%-.64s' के लिए"
spa "Valor incorrecto '%-.64T' para opción '%-.64s'"
+ sw "Thamani isiyo sahihi '% -.64T' kwa chaguo '% -.64s'"
ER_UNUSED_6
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_UNUSED_7
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_UNUSED_8
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_DATA_OVERFLOW 22003
chi "转换'%-.128s'到%-.32s时溢出。值截断"
eng "Got overflow when converting '%-.128s' to %-.32s. Value truncated"
spa "Obtenido desbordamiento al convertir '%-.128s' a %-.32s. Valor truncado"
+ sw "Imefurika wakati wa kubadilisha '%-.128s' hadi %-.32s. Thamani imepunguzwa"
ER_DATA_TRUNCATED 22003
chi "转换'%-.128s'到%-.32s时值截断"
eng "Truncated value '%-.128s' when converting to %-.32s"
spa "Valor truncado '%-.128s' al convertir a %-.32s"
+ sw "Thamani iliyopunguzwa '%-.128s' wakati wa kubadilisha hadi %-.32s"
ER_BAD_DATA 22007
chi "非法值'%-.128s',在转换%-.32s时遇到"
eng "Encountered illegal value '%-.128s' when converting to %-.32s"
spa "Encontrado valor ilegal '%-.128s' al convertir a %-.32s"
+ sw "Imekumbana na thamani haramu '%-.128s' wakati wa kubadilisha hadi %-.32s"
ER_DYN_COL_WRONG_FORMAT
chi "遇到非法格式的动态列字符串"
eng "Encountered illegal format of dynamic column string"
spa "Encontrado formato ilegal de cadena en columna dinámica"
+ sw "Imekumbana na umbizo lisilo halali la mfuatano wa herufi wa safu wima inayobadilika"
ER_DYN_COL_IMPLEMENTATION_LIMIT
chi "达到动态列实现限制"
eng "Dynamic column implementation limit reached"
spa "Alcanzado límite de implementación de columna dinámica"
+ sw "Kikomo cha utekelezaji wa safu wima inayobadilika kimefikiwa"
ER_DYN_COL_DATA 22007
chi "非法值用作动态列函数的参数"
eng "Illegal value used as argument of dynamic column function"
spa "Valor ilegal usado como argumento de función de columna dinámica"
+ sw "Thamani isiyo halali inayotumika kama hoja ya chaguo la kitendakazi cha safu wima inayobadilika"
ER_DYN_COL_WRONG_CHARSET
chi "动态列包含未知字符集"
eng "Dynamic column contains unknown character set"
spa "Columna dinámica contiene conjunto desconocido de caracteres"
+ sw "Safu wima inayobadilika ina seti ya herufi isiyojulikana"
ER_ILLEGAL_SUBQUERY_OPTIMIZER_SWITCHES
chi "“in_to_exists”或'materialization'optimizer_switch标志中的至少一个必须是'开启'"
eng "At least one of the 'in_to_exists' or 'materialization' optimizer_switch flags must be 'on'"
hindi "कम से कम 'in_to_exists' या 'materialization' optimizer_switch फ्लैग 'ON' होना चाहिए"
spa "Al menos una de las banderas de optimizer_switch 'in_to_exists' o 'materialization' debe de estar a 'on'"
+ sw "Angalau chaguo la 'in_to_exists' au 'materialization' la aina ya optimizer_switch lazima iwe 'on' (iwashwe)"
ER_QUERY_CACHE_IS_DISABLED
chi "查询缓存已禁用(调整大小或类似命令正在进行中);稍后重复此命令"
eng "Query cache is disabled (resize or similar command in progress); repeat this command later"
spa "Caché de consulta (query) desactivada (el comando ajustar o similar está en proceso); repite este comando más tarde"
+ sw "Kashe ya hoja imezimwa (resize au amri sawa inaendelea); rudia amri hii baadaye"
ER_QUERY_CACHE_IS_GLOBALY_DISABLED
chi "查询缓存全局禁用,您无法为此会话启用它"
eng "Query cache is globally disabled and you can't enable it only for this session"
hindi "क्वेरी कैश ग्लोबल स्तर पर DISABLED है और आप इसे केवल सत्र के लिए ENABLE नहीं कर सकते"
spa "La caché de consulta (query) está desactivada de forma global y no puede activarla sólo para esta sesión"
+ sw "Kashe ya hoja imezimwa kote (globally) na huwezi kuiwezesha kwa kipindi hiki pekee"
ER_VIEW_ORDERBY_IGNORED
chi "查看'%-.192s'.'%-.192s's ORDER BY子句被忽略,因为还有其他ORDER BY子句"
eng "View '%-.192s'.'%-.192s' ORDER BY clause ignored because there is other ORDER BY clause already"
spa "Cláusula de vista '%-.192s'.'%-.192s' ORDER BY ignorada porque ya hay otra clásula ORDER BY"
+ sw "Angalia '%-.192s'.'%-.192s' ORDER BY clause imepuuzwa kwa sababu tayari kuna ORDER BY clause nyingine"
ER_CONNECTION_KILLED 70100
chi "连接被杀死"
eng "Connection was killed"
hindi "कनेक्शन को समाप्त कर दिया गया है"
spa "La conexión fue matada"
+ sw "Muunganisho uliuawa"
ER_UNUSED_12
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SKIP_REPLICATION
chi "无法修改事务中的@@session.skip_replication"
eng "Cannot modify @@session.skip_replication inside a transaction"
spa "No puedo modificar @@session.skip_replication dentro de una transacción"
+ sw "Haiwezi kurekebisha @@session.skip_replication ndani ya muamala"
ER_STORED_FUNCTION_PREVENTS_SWITCH_SKIP_REPLICATION
chi "无法修改存储函数或触发器内的@@session.skip_replication"
eng "Cannot modify @@session.skip_replication inside a stored function or trigger"
spa "No puedo modificar @@session.skip_replication dentro de una función almacenada o disparador"
+ sw "Haiwezi kurekebisha @@session.skip_replication ndani ya kitendakazi kilichohifadhiwa au kichochezi"
ER_QUERY_RESULT_INCOMPLETE
eng "Query execution was interrupted. The query exceeded %s %llu. The query result may be incomplete"
ER_NO_SUCH_TABLE_IN_ENGINE 42S02
@@ -9414,108 +10317,133 @@ ER_NO_SUCH_TABLE_IN_ENGINE 42S02
eng "Table '%-.192s.%-.192s' doesn't exist in engine"
hindi "टेबल '%-.192s.%-.192s' इंजन में मौजूद नहीं है"
spa "La tabla '%-.192s.%-.192s' no existe en el motor"
+ sw "Jedwali '%-.192s.%-.192s' halipo kwenye injini"
swe "Det finns ingen tabell som heter '%-.192s.%-.192s' i handlern"
ER_TARGET_NOT_EXPLAINABLE
eng "Target is not executing an operation with a query plan"
chi "目标未运行可解释的命令"
spa "El objetivo no está ejecutando una operación con un plan de consulta (query)"
+ sw "Lengo halitekelezi operesheni na mpango wa hoja"
ER_CONNECTION_ALREADY_EXISTS
chi "连接'%.*s'与现有连接'%.*s'冲突"
eng "Connection '%.*s' conflicts with existing connection '%.*s'"
spa "La conexión '%.*s' está en conflicto con la conexión existente '%.*s'"
+ sw "Muunganisho '%.*s' unakinzana na muunganisho uliopo '%.*s'"
ER_MASTER_LOG_PREFIX
chi "Master'%.*s':"
eng "Master '%.*s': "
geo "მთავარი სერვერი '%.*s': "
spa "Maestro (master) '%.*s': "
+ sw "Bwana '%.*s': "
ER_CANT_START_STOP_SLAVE
chi "不能%sSLAVE'%.*s'"
eng "Can't %s SLAVE '%.*s'"
spa "No puedo %s ESCLAVO '%.*s'"
+ sw "%s haiwezi TUMWA '%.*s'"
ER_SLAVE_STARTED
chi "SLAVE '%.*s'开始了"
eng "SLAVE '%.*s' started"
geo "SLAVE '%.*s' გაეშვა"
spa "ESCLAVO '%.*s' arrancado"
+ sw "MTUMWA '%.*s' imeanza"
ER_SLAVE_STOPPED
chi "slave'%.*s'停止了"
eng "SLAVE '%.*s' stopped"
geo "SLAVE '%.*s' გაჩერდა"
spa "ESCLAVO '%.*s' parado"
+ sw "MTUMWA '%.*s' imesimamishwa"
ER_SQL_DISCOVER_ERROR
chi "引擎%s无法发现表%`-.192s.%`-.192s,'%s'"
eng "Engine %s failed to discover table %`-.192s.%`-.192s with '%s'"
spa "El motor %s no pudo descubr la tabla %`-.192s.%`-.192s con '%s'"
+ sw "Injini %s imeshindwa kugundua jedwali la %`-.192s.%`-.192s lenye '%s'"
ER_FAILED_GTID_STATE_INIT
chi "初始化复制GTID状态失败"
eng "Failed initializing replication GTID state"
spa "Fallo inicializando estado de réplica GTID"
+ sw "Imeshindwa kuanzisha hali ya urudufishaji wa GTID"
ER_INCORRECT_GTID_STATE
chi "无法解析GTID列表"
eng "Could not parse GTID list"
spa "No pude analizar la lista GTID"
+ sw "Haikuweza kuchanganua orodha ya GTID"
ER_CANNOT_UPDATE_GTID_STATE
chi "无法更新Replication Slave GTID状态"
eng "Could not update replication slave gtid state"
spa "No pude actualizar estado gtid de esclavo de réplica"
+ sw "Haikuweza kusasisha hali ya uigaji ya gtid ya mtumwa"
ER_DUPLICATE_GTID_DOMAIN
chi "GTID %u-%u-%llu和%u-%u-%llu冲突(重复域ID%u)"
eng "GTID %u-%u-%llu and %u-%u-%llu conflict (duplicate domain id %u)"
spa "Conflicto GTID %u-%u-%llu y %u-%u-%llu (duplicado id de dominio %u)"
+ sw "GTID %u-%u-%llu na %u-%u-%llu inakinzana (kitambulisho cha kikoa rudufu %u)"
ER_GTID_OPEN_TABLE_FAILED
chi "未能打开%s.%s"
eng "Failed to open %s.%s"
ger "Öffnen von %s.%s fehlgeschlagen"
geo "%s.%s-ის გახსნის შეცდომა"
spa "No pude abrir %s.%s"
+ sw "Imeshindwa kufungua %s.%s"
ER_GTID_POSITION_NOT_FOUND_IN_BINLOG
chi "连接从站请求从GTID%u-%u-%llu开始,这不在Master的Binlog中"
eng "Connecting slave requested to start from GTID %u-%u-%llu, which is not in the master's binlog"
spa "Se ha requerido que conectar esclavo arranque desde GTID %u-%u-%llu, el cual no está en el binlog del maestro (master)"
+ sw "Mtumwa anayejaribu kuuanganisha ameomba kuanza kutoka kwa GTID %u-%u-%llu, ambayo haiko kwenye logi ya bwana"
ER_CANNOT_LOAD_SLAVE_GTID_STATE
chi "无法从表%s中加载Replication Slave GTID位置。%s"
eng "Failed to load replication slave GTID position from table %s.%s"
spa "No pude cargar posición GTID de esclavo de réplica desde la tabla %s.%s"
+ sw "Imeshindwa kupakia nafasi ya GTID ya mtumwa anayefanya nakala kutoka kwa jedwali %s.%s"
ER_MASTER_GTID_POS_CONFLICTS_WITH_BINLOG
chi "指定的GTID%u-%u-%llu与二进制日志冲突,其中包含更新的GTID%u-%u-%llu。如果使用master_gtid_pos = current_pos,则Binlog位置将覆盖@@gtid_slave_pos的新值"
eng "Specified GTID %u-%u-%llu conflicts with the binary log which contains a more recent GTID %u-%u-%llu. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos"
spa "El especificado GTID %u-%u-%llu está en conflicto con el historial (log) binario el cual contiene un más reciente GTID %u-%u-%llu. Si se usa MASTER_GTID_POS=CURRENT_POS, la posición de binlog sobreescribirá el nuevo valor de @@gtid_slave_pos"
+ sw "GTID %u-%u-%llu iliyoainishwa inakinzana na kumbukumbu ya mfumo wa jozi ambayo ina GTID %u-%u-%llu ya hivi majuzi zaidi. Ikiwa MASTER_GTID_POS=CURRENT_POS itatumika, nafasi ya binlog itabatilisha thamani mpya ya @@ gtid_slave_pos"
ER_MASTER_GTID_POS_MISSING_DOMAIN
chi "指定值为@@gtid_slave_pos不包含复制域%u的值。这与二进制日志冲突,其中包含gtid%u-%u-%llu。如果使用master_gtid_pos = current_pos,则Binlog位置将覆盖@@ gtid_slave_pos的新值"
eng "Specified value for @@gtid_slave_pos contains no value for replication domain %u. This conflicts with the binary log which contains GTID %u-%u-%llu. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos"
spa "El valor especificado para @@gtid_slave_pos no contiene valor para dominio de réplica %u. Esto está en conflicto con el historial (log) binario el cual contiene un GTID %u-%u-%llu. Si se usa MASTER_GTID_POS=CURRENT_POS, la posición binlog sobreescribirá el nuevo valor de @@gtid_slave_pos"
+ sw "Thamani iliyobainishwa ya @@gtid_slave_pos haina thamani ya kikoa cha kunakili %u. Hii inakinzana na kumbukumbu ya mfumo wa jozi iliyo na GTID %u-%u-%llu. Ikiwa MASTER_GTID_POS=CURRENT_POS itatumika, nafasi ya binlog itabatilisha thamani mpya ya @@gtid_slave_pos"
ER_UNTIL_REQUIRES_USING_GTID
chi "启动从站,直到master_gtid_pos要求从站使用gtid"
eng "START SLAVE UNTIL master_gtid_pos requires that slave is using GTID"
spa "START SLAVE UNTIL master_gtid_pos requiere que esclavo esté usando GTID"
+ sw "START SLAVE UNTIL master_gtid_pos inahitaji mtumwa atumie GTID"
ER_GTID_STRICT_OUT_OF_ORDER
chi "尝试对Binlog GTID%u-%u-%llu进行,这将创建具有现有GTID%u-%u-%llu的订单无序序列号,并且启用了GTID严格模式"
eng "An attempt was made to binlog GTID %u-%u-%llu which would create an out-of-order sequence number with existing GTID %u-%u-%llu, and gtid strict mode is enabled"
spa "Se ha intentado hacer binlog de GTID %u-%u-%llu lo cual crearía un número de secuencia fuera de orden con el existente GTID %u-%u-%llu y está activado gtid en modo estricto"
+ sw "Jaribio lilifanywa ili kuweka binlog GTID %u-%u-%llu ambayo ingeunda nambari ya mfuatano isiyo ya mpangilio na GTID %u-%u-%llu iliyopo, na hali ya ukali ya gtid imewashwa (gtid strict mode)"
ER_GTID_START_FROM_BINLOG_HOLE
chi "主机上的Binlog缺少从站所需请求的GTID%u-%u-%llu(即使存在后续的序列号),并启用GTID严格模式"
eng "The binlog on the master is missing the GTID %u-%u-%llu requested by the slave (even though a subsequent sequence number does exist), and GTID strict mode is enabled"
spa "Al binlog del maestro (master) le falta el GTID %u-%u-%llu requerido por el esclavo (incluso aunque existe un número posterior de secuencia) y está activado GTID en modo estricto"
+ sw "Binlog kwenye bwana inakosa GTID %u-%u-%llu iliyoombwa na mtumwa (ingawa nambari ya mfuatano ifuatayo ipo), na hali kali ya GTID imewashwa"
ER_SLAVE_UNEXPECTED_MASTER_SWITCH
chi "重新连接后,从master收到意外的GTID。这通常表示在不重新启动从线程的情况下替换主服务器。%s."
eng "Unexpected GTID received from master after reconnect. This normally indicates that the master server was replaced without restarting the slave threads. %s"
spa "Se ha recibido un GTID inesperado desde el maestro (master) tras reconectar. Esto indica normalmente que el servidor maestro (master) ha sido reemplazado sin rearrancar los hilos (threads) del esclavo. %s"
+ sw "GTID Isiyotarajiwa ilipokelewa kutoka kwa bwana baada ya kuunganishwa tena. Hii kwa kawaida inaonyesha kuwa seva kuu ilibadilishwa bila kuanzisha upya nyuzi za mtumwa. %s"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_GTID_DOMAIN_ID_SEQ_NO
chi "无法修改@@sessient.gtid_domain_id或@@session.gtid_seq_no"
eng "Cannot modify @@session.gtid_domain_id or @@session.gtid_seq_no inside a transaction"
spa "No puedo modificar @@session.gtid_domain_id o @@session.gtid_seq_no dentro de una transacción"
+ sw "Haiwezi kurekebisha @@session.gtid_domain_id au @@session.gtid_seq_no ndani ya muamala"
ER_STORED_FUNCTION_PREVENTS_SWITCH_GTID_DOMAIN_ID_SEQ_NO
chi "无法修改@@sessient.gtid_domain_id或@@session.gtid_seq_no或触发器"
eng "Cannot modify @@session.gtid_domain_id or @@session.gtid_seq_no inside a stored function or trigger"
spa "No puedo modificar @@session.gtid_domain_id o @@session.gtid_seq_no dentro de una función almacenada o de un disparador"
+ sw "Haiwezi kurekebisha @@session.gtid_domain_id au @@session.gtid_seq_no ndani ya kitendakazi kilichohifadhiwa au kichochezi"
ER_GTID_POSITION_NOT_FOUND_IN_BINLOG2
chi "连接从站请求从GTID%u-%u-%llu开始,这不在Master的Binlog中。由于Master的Binlog包含具有更高序列号的GTID,因此它可能意味着由于执行额外错误的交易,因此slave已经分歧"
eng "Connecting slave requested to start from GTID %u-%u-%llu, which is not in the master's binlog. Since the master's binlog contains GTIDs with higher sequence numbers, it probably means that the slave has diverged due to executing extra erroneous transactions"
spa "Se ha requerido arrancar la conexión a esclavo desde GTID %u-%u-%llu, el cual no está en el binlog del maestro (master). Ya que el binlog del maestro (master) contiene GTIDs con números mayores de secuencia, es probable que indique que el esclavo diverge debido a ejecutar transacciones extra erróneas"
+ sw "Mtumwa anayeunganisha ameomba kuanza kutoka GTID %u-%u-%llu, ambayo haiko kwenye kumbukumbu ya jozi (binlog) ya bwana. Kwa kuwa kumbukumbu ya jozi ya bwana ina GTID zilizo na nambari mfuatano za juu zaidi, labda inamaanisha kuwa mtumwa ametofautiana kwa sababu ya kutekeleza miamala ya makosa ya ziada."
ER_BINLOG_MUST_BE_EMPTY
chi "如果已将任何GTID记录到二进制日志,则不允许此操作。首先运行RESET MASTER擦除日志"
eng "This operation is not allowed if any GTID has been logged to the binary log. Run RESET MASTER first to erase the log"
spa "Esta operación no está permitida si cualquier GTID ha sido puesto en historial (log) binario. Ejecuta primero RESET MASTER para borrar el historial (log)"
+ sw "Operesheni hii hairuhusiwi ikiwa GTID yoyote imeingia kwenye kumbukumbu ya jozi. Tekeleza RESET MASTER kwanza ili kufuta kumbukumbu"
ER_NO_SUCH_QUERY
chi "未知查询ID:%lld"
eng "Unknown query id: %lld"
@@ -9524,10 +10452,12 @@ ER_NO_SUCH_QUERY
hindi "अज्ञात क्वेरी ID: %lld"
rus "Неизвестный номер запроса: %lld"
spa "Id desconocido de consulta (query): %lld"
+ sw "Kitambulisho cha hoja kisichojulikana: %lld"
ER_BAD_BASE64_DATA
chi "错误Base64数据作为位置%u"
eng "Bad base64 data as position %u"
spa "Datos base64 malos en posición %u"
+ sw "Data mbaya ya base64 kama nafasi %u"
ER_INVALID_ROLE OP000
chi "无效的角色规范%`s"
eng "Invalid role specification %`s"
@@ -9535,96 +10465,116 @@ ER_INVALID_ROLE OP000
hindi "अमान्य रोल विनिर्देश %`s"
rum "Rolul %`s este invalid"
spa "Especificación inválida de rol %`s"
+ sw "Vipimo batili vya jukumu %`s"
ER_INVALID_CURRENT_USER 0L000
chi "当前用户无效"
eng "The current user is invalid"
hindi "वर्तमान यूज़र अमान्य है"
rum "Utilizatorul curent este invalid"
spa "El usuario en curso no es válido"
+ sw "Mtumiaji wa sasa ni batili"
ER_CANNOT_GRANT_ROLE
chi "无法将角色'%s'授予:%s"
eng "Cannot grant role '%s' to: %s"
hindi "रोल '%s', %s को प्रदान नहीं कर सकते"
rum "Rolul '%s' nu poate fi acordat catre: %s"
spa "No puedo conceder rol '%s' a: %s"
+ sw "Haiwezi kutoa jukumu la '%s' kwa: %s"
ER_CANNOT_REVOKE_ROLE
chi "无法撤消来自:%s的角色'%s'"
eng "Cannot revoke role '%s' from: %s"
hindi "रोल '%s', %s से हटाया नहीं जा सका"
rum "Rolul '%s' nu poate fi revocat de la: %s"
spa "No puedo revocar rol '%s' desde: %s"
+ sw "Haiwezi kubatilisha jukumu la '%s' kutoka kwa: %s"
ER_CHANGE_SLAVE_PARALLEL_THREADS_ACTIVE
chi "无法更改@@slave_parallel_threads,而另一个更改正在进行中"
eng "Cannot change @@slave_parallel_threads while another change is in progress"
spa "No puedo cambiar @@slave_parallel_threads mientras otro cambio esté en proceso"
+ sw "Haiwezi kubadilisha @@slave_parallel_threads wakati mabadiliko mengine yanaendelea"
ER_PRIOR_COMMIT_FAILED
chi "由于早期提交的失败取决于依赖于哪个依赖性,提交失败"
eng "Commit failed due to failure of an earlier commit on which this one depends"
spa "Ha fallado la acometida (commit) debido a un fallo previo en acometida (commit) de la que depende ésta"
+ sw "Ahadi imeshindwa kwa sababu ya kushindwa kwa ahadi ya awali ambayo hii inategemea"
ER_IT_IS_A_VIEW 42S02
chi "'%-.192s'是一个VIEW"
eng "'%-.192s' is a view"
hindi "'%-.192s' एक VIEW है"
spa "'%-.192s' es una vista"
+ sw "'%-.192s' ni mtazamo"
ER_SLAVE_SKIP_NOT_IN_GTID
chi "使用并行复制和带有多个复制域的GTID时,无法使用@@SQL_SLAVE_SKIP_COUNTER。相反,可以使用明确设置@@gtid_slave_pos以在给定的gtid位置之后跳到"
eng "When using parallel replication and GTID with multiple replication domains, @@sql_slave_skip_counter can not be used. Instead, setting @@gtid_slave_pos explicitly can be used to skip to after a given GTID position"
spa "Al usar réplica paralela y GTID con múltiples dominios de réplica, no se puede usar @@sql_slave_skip_counter. En su lugar, poner @@gtid_slave_pos de forma explícita se puede usar para saltar tras una posición GTID dada"
+ sw "Unapotumia urudufishaji sambamba na GTID yenye vikoa vingi vya urudufishaji, @@sql_slave_skip_counter haiwezi kutumika. Badala yake, kuweka @@gtid_slave_pos kwa uwazi kunaweza kutumiwa kuruka hadi baada ya nafasi fulani ya GTID"
ER_TABLE_DEFINITION_TOO_BIG
chi "表%`s的定义太大了"
eng "The definition for table %`s is too big"
hindi "टेबल %`s की परिभाषा बहुत बड़ी है"
spa "La definición para la tabla %`s es demasiado larga"
+ sw "Ufafanuzi wa jedwali %`s ni kubwa sana"
ER_PLUGIN_INSTALLED
chi "插件'%-.192s'已安装"
eng "Plugin '%-.192s' already installed"
hindi "प्लग-इन '%-.192s' पहले से ही इन्स्टॉल्ड है"
rus "Плагин '%-.192s' уже установлен"
spa "Ya instalado el enchufe (plugin) '%-.192s'"
+ sw "Programu-jalizi '%-.192s' tayari imesakinishwa"
ER_STATEMENT_TIMEOUT 70100
chi "查询执行中断(超出MAX_STATEMENT_TIME)"
eng "Query execution was interrupted (max_statement_time exceeded)"
+ sw "Utekelezaji wa hoja ulikatizwa (muda_wa_max_statement umepitwa)"
spa "Se ha interrumpido la ejecución de una consulta (query) (excedido max_statement_time)
ER_SUBQUERIES_NOT_SUPPORTED 42000
chi "%s不支持子查询或存储的函数"
eng "%s does not support subqueries or stored functions"
spa "%s no soporta subconsultas (subqueries) o funciones almacenadas"
+ sw "%s haitumii hoja ndogo au vitendaji vilivyohifadhiwa"
ER_SET_STATEMENT_NOT_SUPPORTED 42000
chi "系统变量%.200s无法在set语句中设置。“"
eng "The system variable %.200s cannot be set in SET STATEMENT."
spa "La variable del sistema %.200s no se puede poner en SET STATEMENT."
+ sw "Kigezo cha mfumo %.200s hakiwezi kuwekwa katika SET STATEMENT."
ER_UNUSED_9
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_USER_CREATE_EXISTS
chi "无法创建用户'%-.64s'@'%-.64s';它已经存在"
eng "Can't create user '%-.64s'@'%-.64s'; it already exists"
hindi "यूज़र '%-.64s'@'%-.64s' को नहीं बना सकते; यह पहले से ही मौजूद है"
spa "No puedo crear usuario '%-.64s'@'%-.64s'; ya existe"
+ sw "Haiwezi kuunda mtumiaji '%-.64s'@'%-.64s'; tayari ipo"
ER_USER_DROP_EXISTS
chi "无法删除用户'%-.64s'@'%-.64s';它不存在"
eng "Can't drop user '%-.64s'@'%-.64s'; it doesn't exist"
hindi "यूज़र '%-.64s'@'%-.64s' को ड्रॉप नहीं कर सकते; यह मौजूद नहीं है"
spa "No puedo eliminar usuario '%-.64s'@'%-.64s'; no existe"
+ sw "Haiwezi kufuta mtumiaji '%-.64s'@'%-.64s'; haipo"
ER_ROLE_CREATE_EXISTS
chi "无法创建角色'%-.64s';它已经存在"
eng "Can't create role '%-.64s'; it already exists"
hindi "रोल '%-.64s' को नहीं बना सकते; यह पहले से ही मौजूद है"
spa "No puedo crear rol '%-.64s'; ya existe"
+ sw "Haiwezi kuunda jukumu la '% -.64s'; tayari lipo"
ER_ROLE_DROP_EXISTS
chi "无法删除'%-.64s'。它不存在"
eng "Can't drop role '%-.64s'; it doesn't exist"
hindi "रोल '%-.64s' को ड्रॉप नहीं कर सकते; यह मौजूद नहीं है"
spa "No puedo eliminar rol '%-.64s'; no existe"
+ sw "Haiwezi kuacha jukumu la '% -.64s'; halipo"
ER_CANNOT_CONVERT_CHARACTER
chi "无法将'%s'字符0x转换为0x%-.64s到'%s'"
eng "Cannot convert '%s' character 0x%-.64s to '%s'"
spa "No puedo convertir '%s' carácter 0x%-.64s a '%s'"
+ sw "Haiwezi kubadilisha herufi '%s' 0x%-.64s hadi '%s'"
ER_INVALID_DEFAULT_VALUE_FOR_FIELD 22007
chi "列的默认值不正确'%-.128T' '%.192s'"
eng "Incorrect default value '%-.128T' for column '%.192s'"
hindi "गलत डिफ़ॉल्ट मान '%-.128T' कॉलम '%.192s' के लिए"
spa "Valor por defecto incorrecto '%-.128T' para columna '%.192s'"
+ sw "Thamani chaguo-msingi si sahihi '%-.128T' kwa safuwima '%.192s'"
ER_KILL_QUERY_DENIED_ERROR
chi "你不是查询%lld的所有者"
eng "You are not owner of query %lld"
@@ -9632,21 +10582,25 @@ ER_KILL_QUERY_DENIED_ERROR
hindi "आप क्वेरी %lld के OWNER नहीं हैं"
rus "Вы не являетесь владельцем запроса %lld"
spa "No eres el propietario de la consulta (query) %lld"
+ sw "Wewe si mmiliki wa hoja %lld"
ER_NO_EIS_FOR_FIELD
chi "没有收集无关的统计信息列'%s'"
eng "Engine-independent statistics are not collected for column '%s'"
hindi "Engine-independent सांख्यिकी कॉलम '%s' के लिए एकत्रित नहीं किया जा रहा है"
spa "No se han recolectado estadísticas independientes del motor para la columna '%s'"
+ sw "Takwimu zisizotegemea injini hazikusanywi kwa safu wima ya '%s'"
ukr "Незалежна від типу таблиці статистика не збирається для стовбця '%s'"
ER_WARN_AGGFUNC_DEPENDENCE
chi "聚合函数'%-.192s)'SELECT#%d的属于选择#%d"
eng "Aggregate function '%-.192s)' of SELECT #%d belongs to SELECT #%d"
spa "La función de agregación '%-.192s)' del SELECT #%d pertenece a SELECT #%d"
+ sw "Jumla ya kukokotoa '%-.192s)' ya SELECT #%d ni ya SELECT #%d"
ukr "Агрегатна функція '%-.192s)' з SELECTу #%d належить до SELECTу #%d"
WARN_INNODB_PARTITION_OPTION_IGNORED
chi "<%-.64s> innodb分区忽略的选项"
eng "<%-.64s> option ignored for InnoDB partition"
spa "<%-.64s> opción ignorada para partición InnoDB"
+ sw "<% -.64s> chaguo limepuuzwa kwa kizigeu cha InnoDB"
#
# Internal errors, not used
@@ -9660,121 +10614,145 @@ ER_FILE_CORRUPT
chi "文件%s已损坏"
eng "File %s is corrupted"
spa "El fichero/archivo %s está corrupto"
+ sw "Faili %s imeharibika"
ER_ERROR_ON_MASTER
chi "查询在主设备上部分完成(主设备:%d)并中止。你的master在这一点上有可能不一致。如果您确定您的主站是可以的,请在从站上手动运行此查询,然后使用SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE ;查询:'%s'"
eng "Query partially completed on the master (error on master: %d) and was aborted. There is a chance that your master is inconsistent at this point. If you are sure that your master is ok, run this query manually on the slave and then restart the slave with SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Query:'%s'"
spa "Consulta (query) completada de forma parcial en el maestro (master) (error en maestro (master): %d) y se ha abortado. Existe una posibilidad de que su maestro (master) esté inconsitente en este punto. Si está seguro de que su maestro (master) está ok, ejecute esta consulta (query) de forma manual en el esclavo y luego rearranque el esclavo mediante SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Consulta (query):'%s'"
+ sw "Sehemu ya hoja imekamilika kwa bwana (hitilafu kwa bwana: %d) na ilibatilishwa. Kuna uwezekano kwamba bwana wako haendani katika hatua hii. Ikiwa una uhakika kuwa bwana wako yuko sawa, tekeleza hoja hii kwa mikono kwa mtumwa. na kisha uwashe tena mtumwa kwa SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;. Hoji:'%s'"
ER_INCONSISTENT_ERROR
chi "查询在主站和从站上引起了不同的错误。主站错误:消息(格式)='%s'错误代码=%d;从站错误:实际消息='%s',错误代码=%d。默认数据库:'%s'。查询:'%s'"
eng "Query caused different errors on master and slave. Error on master: message (format)='%s' error code=%d; Error on slave:actual message='%s', error code=%d. Default database:'%s'. Query:'%s'"
spa "La consulta (query) ha ocasionado diferentes errores en el maestro (master) y en el esclavo. Error en maestro (master): mensaje (formato)='%s' código de error=%d; Error en esclavo: mensaje actual='%s', código de error=%d. Base de datos por defecto:'%s'. Consulta (query):'%s'"
+ sw "Hoja ilisababisha makosa tofauti kwa bwana na mtumwa. Hitilafu kwenye bwana: ujumbe (format)='%s' error code=%d; Hitilafu kwenye mtumwa:ujumbe maalum='%s', hitilafu=%d. Hifadhidata chaguomsingi :'%s'. Hoja:'%s'"
ER_STORAGE_ENGINE_NOT_LOADED
chi "表'%s'的存储引擎'%s'没有加载。"
eng "Storage engine for table '%s'.'%s' is not loaded."
spa "El motor de almacenaje para la tabla '%s'.'%s' no ha sido cargado."
+ sw "Injini ya hifadhi ya jedwali '%s'.'%s' haijapakiwa."
ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER 0Z002
chi "处理程序未激活时GET STACKED DIAGNOSTICS"
eng "GET STACKED DIAGNOSTICS when handler not active"
spa "GET STACKED DIAGNOSTICS cuando el manejador no está activo"
+ sw "Fanya GET STACKED DIAGNOSTICS wakati kidhibiti hakifanyiki"
ER_WARN_LEGACY_SYNTAX_CONVERTED
chi "不再支持%s。该语句被转换为%s。"
eng "%s is no longer supported. The statement was converted to %s."
spa "%s ya no está soportada. Se ha convertido la sentencia a %s."
+ sw "%s haitumiki tena. Taarifa ilibadilishwa kuwa %s."
ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN
chi "语句不安全,因为它使用全文解析器插件,它可能不会在从站上返回相同的值。"
eng "Statement is unsafe because it uses a fulltext parser plugin which may not return the same value on the slave."
spa "La sentencia no es segura porque usa un enchufe (plugin) analizador de fulltext que puede que no devuelva el mismo valor en el esclavo."
+ sw "Taarifa si salama kwa sababu inatumia programu-jalizi ya kuchanganua maandishi kamili ambayo inaweza isirejeshe thamani sawa kwa mtumwa."
ER_CANNOT_DISCARD_TEMPORARY_TABLE
chi "无法丢弃与临时表相关联的/导入表空间"
eng "Cannot DISCARD/IMPORT tablespace associated with temporary table"
spa "No puedo DISCARD/IMPORT espacio de tabla asociado con tabla temporal"
+ sw "Haiwezi DISCARD/IMPORT nafasi ya meza inayohusishwa na jedwali la muda"
ER_FK_DEPTH_EXCEEDED
chi "外键级联删除/更新超出了%d的最大深度。"
eng "Foreign key cascade delete/update exceeds max depth of %d."
spa "La cascada borrar/actualizar en clave foránea excede la máxima profundidad de %d."
+ sw "Ufutaji/sasisho la ufunguo wa kigeni unazidi upeo wa kina wa %d."
ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2
chi "列数为%s.%s是错误的。预期的%d,找到%d。使用MariaDB%d创建,现在运行%d。请使用mariadb-upgrade来修复此错误。"
eng "Column count of %s.%s is wrong. Expected %d, found %d. Created with MariaDB %d, now running %d. Please use mariadb-upgrade to fix this error."
ger "Spaltenanzahl von %s.%s falsch. %d erwartet, aber %d erhalten. Erzeugt mit MariaDB %d, jetzt unter %d. Bitte benutzen Sie mariadb-upgrade, um den Fehler zu beheben"
spa "El contador de columna de %s.%s está equivocado. Se esperaba %d, hallado %d, Creado con MariaDB %d, ahora ejecutando %d. Por favor, use mariadb-upgrade para arreglar este error."
+ sw "Nambari ya safu wima ya %s.%s si sahihi. Inatarajiwa %d, imepatikana %d. Iliundwa na MariaDB %d, sasa inaendeshwa %d. Tafadhali tumia mariadb-upgrade kurekebisha hitilafu hii."
ER_WARN_TRIGGER_DOESNT_HAVE_CREATED
chi "触发器%s.%s.%s没有CREATE属性。"
eng "Trigger %s.%s.%s does not have CREATED attribute."
spa "El disparador %s.%s.%s no tiene el atributo CREATED."
+ sw "Anzisha %s.%s.%s haina sifa CREATED."
ER_REFERENCED_TRG_DOES_NOT_EXIST_MYSQL
chi "引用的触发器'%s'用于给定的动作时间和事件类型不存在。"
eng "Referenced trigger '%s' for the given action time and event type does not exist."
spa "El disparador referenciado '%s' para el momento dado de acción y el tipo de evento no existe."
+ sw "Kichochezi kinachorejelewa '%s' kwa muda uliotolewa wa kitendo na aina ya tukio hakipo."
ER_EXPLAIN_NOT_SUPPORTED
chi "EXPLAIN FOR CONNECTION仅支持SELECT/UPDATE/INSERT/DELETE/REPLACE"
eng "EXPLAIN FOR CONNECTION command is supported only for SELECT/UPDATE/INSERT/DELETE/REPLACE"
spa "El comando EXPLAIN FOR CONNECTION sólo se soporta para SELECT/UPDATE/INSERT/DELETE/REPLACE"
+ sw "Amri la EXPLAIN FOR CONNECTION inatumika kwa SELECT/UPDATE/INSERT/DELETE/REPLACE pekee"
ER_INVALID_FIELD_SIZE
chi "列'%-.192s'的大小无效。"
eng "Invalid size for column '%-.192s'."
spa "Tamaño inválido para columna '%-.192s'."
+ sw "Ukubwa batili wa safuwima '%-.192s'."
ER_MISSING_HA_CREATE_OPTION
chi "表存储引擎'%-.64s'所找到的必备创建选项丢失"
eng "Table storage engine '%-.64s' found required create option missing"
spa "El motor hallado de almacenaje de tabla '%-.64s' requería de la opción de crear que falta"
+ s "Injini ya hifadhi ya jedwali '% -.64s' imepata kuwa chaguo la kuunda linalohitajika halipo"
ER_ENGINE_OUT_OF_MEMORY
chi "存储引擎'%-.64s'中的内存不足。"
eng "Out of memory in storage engine '%-.64s'."
spa "Memoria agotada en motor de almacenaje '%-.64s'."
+ sw "Kumbukumbu imeisha katika injini ya kuhifadhi '% -.64s'."
ER_PASSWORD_EXPIRE_ANONYMOUS_USER
chi "匿名用户的密码不能过期。"
eng "The password for anonymous user cannot be expired."
spa "La contraseña para usuario anónimo no puede expirar."
+ sw "Nenosiri la mtumiaji asiyejulikana haliwezi kuisha muda wake."
ER_SLAVE_SQL_THREAD_MUST_STOP
chi "无法使用正在运行的从SQL线程执行此操作;首先运行STOP SLAVE SQL_THREAD"
eng "This operation cannot be performed with a running slave sql thread; run STOP SLAVE SQL_THREAD first"
spa "Esta operación no se puede realizar con hilo (thread) sql esclavo en ejecución; ejecuta STOP SLAVE SQL_THREAD primero"
+ sw "Operesheni hii haiwezi kufanywa kwa uzi wa mtumwa wa sql ambayo bado inafanya kazi; simamisha uzi kutumia STOP SLAVE SQL_THREAD kwanza"
ER_NO_FT_MATERIALIZED_SUBQUERY
chi "无法在物化的子查询上创建FullText索引"
eng "Cannot create FULLTEXT index on materialized subquery"
spa "No puedo crear índice FULLTEXT en subconsulta (subquery) materializada"
+ sw "Haiwezi kuunda faharasa ya FULLTEXT kwenye hoja ndogo iliyofanywa (materialized subquery)"
ER_INNODB_UNDO_LOG_FULL
chi "撤消日志错误:%s"
eng "Undo Log error: %s"
spa "Error de Historial (log) de Deshacer: %s"
+ sw "Hitilafu ya Kumbukumbu ya kutendua: %s"
ER_INVALID_ARGUMENT_FOR_LOGARITHM 2201E
chi "对数的参数无效"
eng "Invalid argument for logarithm"
spa "Argumento inválido para logaritmo"
+ sw "Hoja batili ya logarithm"
ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP
chi "无法使用正在运行的slave IO线程执行此操作;首先运行STOP SLAVE IO_THREAD FOR CHANNEL'%s'。"
eng "This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '%s' first."
spa "Esta operación no se puede realizar con un hilo (thread) de e/s de esclavo en ejecución; ejecuta STOP SLAVE IO_THREAD FOR CHANNEL '%s' primero."
+ sw "Operesheni hii haiwezi kufanywa kwa uzi wa mtumwa wa io inayofanya kazi; endesha STOP SLAVE IO_THREAD FOR CHANNEL '%s' kwanza."
ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO
chi "当从站具有临时表时,此操作可能不安全。表将保持打开,直到服务器重新启动或通过任何复制的DROP语句删除表。建议等到Slave_open_temp_tables = 0。"
eng "This operation may not be safe when the slave has temporary tables. The tables will be kept open until the server restarts or until the tables are deleted by any replicated DROP statement. Suggest to wait until slave_open_temp_tables = 0."
spa "Esta operación puede no ser segura cuando el esclavo tenga tablas temporales. Las tablas serán mantenidas abiertas hasta que el servidor rearranque o hasta que las tablas sean borradas por cualquier sentencia DROP replicada. Se sugiere esperar hasta slave_open_temp_tables = 0."
+ sw "Operesheni hii inaweza isiwe salama wakati mtumwa ana majedwali ya muda. Majedwali yatawekwa wazi hadi seva iwashe upya au hadi majedwali yafutwe kwa taarifa yoyote iliyoigizwa ya DROP. Tunapendekeza kusubiri hadi slave_open_temp_tables = 0."
ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS
chi "使用CHANGE MASTER TO master_log_file子句更改master,但没有master_log_pos子句可能不安全。旧位置值可能对新的二进制日志文件无效。"
eng "CHANGE MASTER TO with a MASTER_LOG_FILE clause but no MASTER_LOG_POS clause may not be safe. The old position value may not be valid for the new binary log file."
spa "CHANGE MASTER TO mediante una cláusula MASTER_LOG_FILE pero sin existir cláusula MASTER_LOG_POS puede no ser seguro. El valor viejo de la posición puede no ser válido para el nuevo fichero/archivo binario de historial (log)."
+ sw "CHANGE MASTER TO pamoja na kifungu cha MASTER_LOG_FILE lakini bila kifungu cha MASTER_LOG_POS kinaweza kuwa si salama. Thamani ya nafasi ya zamani inaweza kuwa si halali kwa faili mpya ya kumbukumbu ya binary."
ER_UNUSED_1
eng "You should never see it"
@@ -9783,166 +10761,199 @@ ER_NON_RO_SELECT_DISABLE_TIMER
chi "SELECT不是只读语句,禁用计时器"
eng "Select is not a read only statement, disabling timer"
spa "Select no es una sentencia de sólo lectura, desactivando cronómetro"
+ sw "Chagua sio taarifa ya kusoma tu, kipima saa imelemazwa"
ER_DUP_LIST_ENTRY
chi "重复条目'%-.192s'。"
eng "Duplicate entry '%-.192s'."
spa "Entrada duplicada '%-.192s'."
+ sw "Ingizo rudufu '% -.192s'."
ER_SQL_MODE_NO_EFFECT
chi "'%s'模式不再有任何效果。使用STRICT_ALL_TABLES或STRICT_TRANS_TABLES。"
eng "'%s' mode no longer has any effect. Use STRICT_ALL_TABLES or STRICT_TRANS_TABLES instead."
spa "El modo '%s' ya no tiene efecto alguno. Use STRICT_ALL_TABLES o STRICT_TRANS_TABLES en su lugar"
+ sw "'%s' hali haina athari tena. Tumia STRICT_ALL_TABLES au STRICT_TRANS_TABLES badala yake."
ER_AGGREGATE_ORDER_FOR_UNION
chi "表达式#%u ORDER BY包含聚合函数并适用于UNION"
eng "Expression #%u of ORDER BY contains aggregate function and applies to a UNION"
spa "La expresión #%u de ORDER BY contiene función de agregación y se aplica a UNION"
+ sw "Maelezo #%u ya ORDER BY yana utendakazi wa jumla na inatumika kwa UNION"
ER_AGGREGATE_ORDER_NON_AGG_QUERY
chi "表达式#%u通过包含聚合函数,并适用于非聚合查询的结果"
eng "Expression #%u of ORDER BY contains aggregate function and applies to the result of a non-aggregated query"
spa "La expresión #%u de ORDER BY contiene función de agregación y se aplica al resultado de una consulta (query) no agregada"
+ sw "Maelezo #%u ya ORDER BY yana utendakazi wa jumla na hutumika kwa matokeo ya hoja isiyojumlishwa"
ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR
chi "在启用了slave保存提交次序时至少有一个以前的工人遇到错误后,slave工作者已停止。要保留提交次序,此线程执行的最后一项事务尚未提交。在修复任何故障线程后重新启动从站时,您也应该修复此工作人。"
eng "Slave worker has stopped after at least one previous worker encountered an error when slave-preserve-commit-order was enabled. To preserve commit order, the last transaction executed by this thread has not been committed. When restarting the slave after fixing any failed threads, you should fix this worker as well."
spa "El trabajador esclavo se ha parado tras al menos encontrar un error en trabajador previo cuando slave-preserve-commit-order fue activado. Para preserver el orden de acometida (commit), la última transacción ejecutada por este hilo (thread) no se ha acometido (commit). Al rearrancar el esclavo tras arreglar cualquier hilo (thread) fallido, vd debería de arreglar este trabajador también"
+ sw "Mfanyakazi wa utumwa ameacha kufanya kazi baada ya angalau mfanyakazi mmoja wa awali kupata hitilafu wakati agizo la slave-preserve-commit-order lilipowezeshwa. Ili kuhifadhi agizo la ahadi, muamala wa mwisho uliotekelezwa na uzi huu haujafanywa. Wakati wa kuanzisha upya mtumwa baada ya kurekebisha nyuzi zozote zilizopata hitilafu, unapaswa kurekebisha mfanyakazi huyu pia."
ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER
chi "slave_preerve_commit_order不支持%s。"
eng "slave_preserve_commit_order is not supported %s."
spa "slave_preserve_commit_order no está soportado %s."
+ sw "slave_preserve_commit_order haitumiki %s."
ER_SERVER_OFFLINE_MODE
chi "服务器目前处于离线模式"
eng "The server is currently in offline mode"
spa "El servidor se encuentra actualmente en modo fuera de línea"
+ sw "Seva kwa sasa iko katika hali ya nje ya mtandao"
ER_GIS_DIFFERENT_SRIDS
chi "二进制几何函数%s给定两个不同SRID的几何形状:%u和%u,应该是相同的。"
eng "Binary geometry function %s given two geometries of different srids: %u and %u, which should have been identical."
spa "La función binaria de geomertía %s ha dado dos geometrías de diferente srids: %u y %u, que deberían de haber sido idénticas"
+ sw "Kitendaji cha jiometri cha binary %s imepewa jiometri mbili za sridi tofauti: %u na %u, ambazo zinapaswa kuwa sawa."
ER_GIS_UNSUPPORTED_ARGUMENT
chi "调用几何函数%s与不受支持类型的参数。"
eng "Calling geometry function %s with unsupported types of arguments."
spa "Llamando a función de geometría %s con tipos de argumento no soportados."
+ sw "Kuita kitendakazi cha jiometri %s na hoja za aina zisizotumika."
ER_GIS_UNKNOWN_ERROR
chi "未知的GIS错误发生在功能%s中。"
eng "Unknown GIS error occurred in function %s."
spa "Ha ocurrido un error GIS desconocido en función %s."
+ sw "Hitilafu isiyojulikana ya GIS ilitokea katika kitendakazi %s."
ER_GIS_UNKNOWN_EXCEPTION
chi "在GIS功能%s中捕获的未知异常。"
eng "Unknown exception caught in GIS function %s."
spa "Excepción desconocida capturada en función GIS %s."
+ sw "Hitilafu usiojulikana umepatikana katika kitendakazi chaa GIS %s."
ER_GIS_INVALID_DATA 22023
chi "提供给功能%s的GIS数据无效。"
eng "Invalid GIS data provided to function %s."
spa "Suministrados datos GIS inválidos a función %s."
+ sw "Data batili ya GIS ilipewa kwa kitendakazi %s."
ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION
chi "几何形状在功能%s中没有数据。"
eng "The geometry has no data in function %s."
spa "La geometría no tiene datos en función %s."
+ sw "Jiometri haina data katika kitendakazi %s."
ER_BOOST_GEOMETRY_CENTROID_EXCEPTION
chi "无法计算质心,因为在功能%s中几何为空。"
eng "Unable to calculate centroid because geometry is empty in function %s."
spa "Imposible calcular centroid porque la geometría está vacía en la función %s."
+ sw "Haiwezi kukokotoa centroid kwa sababu jiometri haiko katika kitendakazi %s."
ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION
chi "几何叠加计算错误:几何数据在功能%s中无效。"
eng "Geometry overlay calculation error: geometry data is invalid in function %s."
spa "Error de cálculo de superposición de geometría: el dato de geometría es inválido en la función %s."
+ sw "Hitilafu ya kukokotoa wekeleo la jiometri: data ya jiometri ni batili katika kitendaji %s."
ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION
chi "几何旋转信息计算错误:几何数据在功能%s中无效。"
eng "Geometry turn info calculation error: geometry data is invalid in function %s."
spa "Error de cálculo de información devuelto: los datos de geometría son inválidos en la función %s."
+ sw "Hitilafu ya kukokotoa maelezo ya jiometri: data ya jiometri ni batili katika kitendaji %s."
ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION
chi "在功能%s中出乎意料地中断交叉点的分析程序。"
eng "Analysis procedures of intersection points interrupted unexpectedly in function %s."
spa "Los procedimientos de análisis de puntos de intersección se interrumpieron inesperadamente en la función %s."
+ sw "Taratibu za uchanganuzi wa sehemu za makutano zimekatizwa bila kutarajiwa katika kitendakazi %s."
ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION
chi "在功能%s中抛出的未知异常。"
eng "Unknown exception thrown in function %s."
spa "Excepción desconocida lanzada en la función %s."
+ sw "Kighairi kisichojulikana kilitupwa katika kitendaji %s."
ER_STD_BAD_ALLOC_ERROR
chi "内存分配错误:%-.256s。函数%s。"
eng "Memory allocation error: %-.256s in function %s."
spa "Error en adjudicación de memoria: %-.256s en la función %s."
+ sw "Hitilafu ya mgao wa kumbukumbu: %-.256s katika kitendaji %s."
ER_STD_DOMAIN_ERROR
chi "域名错误:%-.256s. 函数%s"
eng "Domain error: %-.256s in function %s."
spa "Error en dominio: %-.256s en función %s."
+ sw "Hitilafu ya kikoa: %-.256s katika kitendaji %s."
ER_STD_LENGTH_ERROR
chi "长度误差:%-.256s函数%s。"
eng "Length error: %-.256s in function %s."
spa "Error de tamaño: %-.256s en función %s."
+ sw "Hitilafu ya urefu: %-.256s katika kitendaji %s."
ER_STD_INVALID_ARGUMENT
chi "无效的参数错误:%-.256s函数%s。"
eng "Invalid argument error: %-.256s in function %s."
spa "Error de argumento inválido: %-.256s en función %s."
+ sw "Hitilafu batili ya hoja: %-.256s katika kitendaji %s."
ER_STD_OUT_OF_RANGE_ERROR
chi "超出范围错误:%-.256s 函数%s。"
eng "Out of range error: %-.256s in function %s."
spa "Error de fuera de rango: %-.256s en función %s."
+ sw "Hitilafu nje ya masafa: %-.256s katika kitendaji %s."
ER_STD_OVERFLOW_ERROR
chi "溢出错误:%-.256s。功能%s。"
eng "Overflow error: %-.256s in function %s."
spa "Error de desbordamiento: %-.256s en función %s."
+ sw "Hitilafu ya kufurika: %-.256s katika kitendaji %s."
ER_STD_RANGE_ERROR
chi "范围错误:%-.256s函数%s。"
eng "Range error: %-.256s in function %s."
spa "Error de rango: %-.256s en función %s."
+ sw "Hitilafu ya safu: %-.256s katika kitendaji %s."
ER_STD_UNDERFLOW_ERROR
chi "下溢错误:%-.256s函数%s。"
eng "Underflow error: %-.256s in function %s."
spa "Error de refreno (underflow): %-.256s en la función %s."
+ sw "Hitilafu ya mtiririko wa chini: %-.256s katika kitendaji %s."
ER_STD_LOGIC_ERROR
chi "逻辑错误:%-.256s 函数%s。"
eng "Logic error: %-.256s in function %s."
spa "Error lógico: %-.256s en la función %s."
+ sw "Hitilafu ya kimantiki: %-.256s katika kitendaji %s."
ER_STD_RUNTIME_ERROR
chi "运行时错误:%-.256s函数%s。"
eng "Runtime error: %-.256s in function %s."
spa "Error en tiempo de ejecución: %-.256s en la función %s."
+ sw "Hitilafu ya wakati wa utekelezaji: %-.256s katika kitendaji %s."
ER_STD_UNKNOWN_EXCEPTION
chi "未知例外:%-.384s在函数%s中。"
eng "Unknown exception: %-.384s in function %s."
spa "Excepción desconocida: %-.384s en la función %s."
+ sw "Kighairi kisichojulikana: %-.384s katika kitendaji %s."
ER_GIS_DATA_WRONG_ENDIANESS
chi "几何字节字符串必须是小endian。"
eng "Geometry byte string must be little endian."
spa "La cadena de byte en Geometría debe de ser 'little endian'."
+ sw "Mfuatano wa herufi wa baiti ya jiometri lazima iwe endian ndogo."
ER_CHANGE_MASTER_PASSWORD_LENGTH
chi "为Replication User提供的密码超过32个字符的最大长度"
eng "The password provided for the replication user exceeds the maximum length of 32 characters"
spa "La contraseña suministrada para el usuario de réplica excede el tamaño máximo de 32 caracteres"
+ sw "Nenosiri lililotolewa kwa mtumiaji wa kurudia linazidi urefu wa juu wa herufi 32"
ER_USER_LOCK_WRONG_NAME 42000
chi "用户级锁名名称'%-.192s'不正确。"
eng "Incorrect user-level lock name '%-.192s'."
spa "Nombre de bloqueo incorrecto a nivel de usuario '%-.192s'."
+ sw "Jina la kufuli la kiwango cha mtumiaji si sahihi '% -.192s'."
# Should be different from ER_LOCK_DEADLOCK since it doesn't cause implicit
# rollback. Should not be mapped to SQLSTATE 40001 for the same reason.
@@ -9950,237 +10961,592 @@ ER_USER_LOCK_DEADLOCK
chi "在尝试获得用户级锁时发现死锁;尝试回滚交易/释放锁定并重新启动锁定采集。"
eng "Deadlock found when trying to get user-level lock; try rolling back transaction/releasing locks and restarting lock acquisition."
spa "Hallado estancamiento (deadlock) al intentar obtener bloqueo a nivel de usuario; intente retroceder (roll back) bloqueos de transacción/entrega y rearranque la adquisición de bloqueo."
+ sw "Kufungana kwa kufuli kumepatikana wakati wa kujaribu kupata kufuli kwa kiwango cha mtumiaji; jaribu kurudisha nyuma muamala/kutoa kufuli na kuanzisha upya upataji wa kufuli."
ER_REPLACE_INACCESSIBLE_ROWS
chi "无法执行REPLACE,因为它需要删除不在视图中的行"
eng "REPLACE cannot be executed as it requires deleting rows that are not in the view"
spa "REPLACE no se puede ejecutar ya que requiere borrar filas que no están en la vista"
+ sw "REPLACE haiwezi kutekelezwa kwani inahitaji kufuta safu mlalo ambazo haziko kwa tazama"
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS
chi "不要支持使用GIS索引的表中的在线操作"
eng "Do not support online operation on table with GIS index"
spa "No soporta operación en línea en tabla con índice GIS"
+ sw "Haiwezi kufanya operesheni ya mtandaoni kwenye jedwali na faharisi ya GIS"
+
+ER_MYSQL_3061
+ eng ""
+
+ER_MYSQL_3062
+ eng ""
+
+ER_MYSQL_3063
+ eng ""
+
+ER_MYSQL_3064
+ eng ""
+
+ER_MYSQL_3065
+ eng ""
+
+ER_MYSQL_3066
+ eng ""
+
+ER_MYSQL_3067
+ eng ""
+
+ER_MYSQL_3068
+ eng ""
+
+ER_MYSQL_3069
+ eng ""
+
+ER_MYSQL_3070
+ eng ""
+
+ER_MYSQL_3071
+ eng ""
+
+ER_MYSQL_3072
+ eng ""
+
+ER_MYSQL_3073
+ eng ""
+
+ER_MYSQL_3074
+ eng ""
+
+ER_MYSQL_3075
+ eng ""
+
+ER_MYSQL_3076
+ eng ""
+
+ER_MYSQL_3077
+ eng ""
+
+ER_MYSQL_3078
+ eng ""
+
+ER_MYSQL_3079
+ eng ""
+
+ER_MYSQL_3080
+ eng ""
+
+ER_MYSQL_3081
+ eng ""
+
+ER_MYSQL_3082
+ eng ""
+
+ER_MYSQL_3083
+ eng ""
+
+ER_MYSQL_3084
+ eng ""
+
+ER_MYSQL_3085
+ eng ""
+
+ER_MYSQL_3086
+ eng ""
+
+ER_MYSQL_3087
+ eng ""
+
+ER_MYSQL_3088
+ eng ""
+
+ER_MYSQL_3089
+ eng ""
+
+ER_MYSQL_3090
+ eng ""
+
+ER_MYSQL_3091
+ eng ""
+
+ER_MYSQL_3092
+ eng ""
+
+ER_MYSQL_3093
+ eng ""
+
+ER_MYSQL_3094
+ eng ""
+
+ER_MYSQL_3095
+ eng ""
+
+ER_MYSQL_3096
+ eng ""
+
+ER_MYSQL_3097
+ eng ""
+
+ER_MYSQL_3098
+ eng ""
+
+ER_MYSQL_3099
+ eng ""
+
+ER_MYSQL_3100
+ eng ""
+
+ER_MYSQL_3101
+ eng ""
+
+ER_MYSQL_3102
+ eng ""
+
+ER_MYSQL_3103
+ eng ""
+
+ER_MYSQL_3104
+ eng ""
+
+ER_MYSQL_3105
+ eng ""
+
+ER_MYSQL_3106
+ eng ""
+
+ER_MYSQL_3107
+ eng ""
+
+ER_MYSQL_3108
+ eng ""
+
+ER_MYSQL_3109
+ eng ""
+
+ER_MYSQL_3110
+ eng ""
+
+ER_MYSQL_3111
+ eng ""
+
+ER_MYSQL_3112
+ eng ""
+
+ER_MYSQL_3113
+ eng ""
+
+ER_MYSQL_3114
+ eng ""
+
+ER_MYSQL_3115
+ eng ""
+
+ER_MYSQL_3116
+ eng ""
+
+ER_MYSQL_3117
+ eng ""
+
+ER_MYSQL_3118
+ eng ""
+
+ER_MYSQL_3119
+ eng ""
+
+ER_MYSQL_3120
+ eng ""
+
+ER_MYSQL_3121
+ eng ""
+
+ER_MYSQL_3122
+ eng ""
+
+ER_MYSQL_3123
+ eng ""
+
+ER_MYSQL_3124
+ eng ""
+
+ER_MYSQL_3125
+ eng ""
+
+ER_MYSQL_3126
+ eng ""
+
+ER_MYSQL_3127
+ eng ""
+
+ER_MYSQL_3128
+ eng ""
+
+ER_MYSQL_3129
+ eng ""
+
+ER_MYSQL_3130
+ eng ""
+
+ER_MYSQL_3131
+ eng ""
+
+ER_MYSQL_3132
+ eng ""
+
+ER_MYSQL_3133
+ eng ""
+
+ER_MYSQL_3134
+ eng ""
+
+ER_MYSQL_3135
+ eng ""
+
+ER_MYSQL_3136
+ eng ""
+
+ER_MYSQL_3137
+ eng ""
+
+ER_MYSQL_3138
+ eng ""
+
+ER_MYSQL_3139
+ eng ""
+
+ER_MYSQL_3140
+ eng ""
+
+ER_MYSQL_3141
+ eng ""
+
+ER_MYSQL_3142
+ eng ""
+
+ER_MYSQL_3143
+ eng ""
+
+ER_MYSQL_3144
+ eng ""
+
+ER_MYSQL_3145
+ eng ""
+
+ER_MYSQL_3146
+ eng ""
+
+ER_MYSQL_3147
+ eng ""
+
+ER_MYSQL_3148
+ eng ""
+
+ER_MYSQL_3149
+ eng ""
+
+ER_MYSQL_3150
+ eng ""
+
+ER_MYSQL_3151
+ eng ""
+
+ER_MYSQL_3152
+ eng ""
+
+ER_MYSQL_3153
+ eng ""
+
+ER_MYSQL_3154
+ eng ""
+
+ER_MYSQL_3155
+ eng ""
+
+ER_MYSQL_3156
+ eng ""
+
+ER_MYSQL_3157
+ eng ""
+
+ER_MYSQL_3158
+ eng ""
+
+ER_SECURE_TRANSPORT_REQUIRED 08004
+ eng "Connections using insecure transport are prohibited while --require_secure_transport=ON."
+
# MariaDB extra error numbers starts from 4000
skip-to-error-number 4000
ER_UNUSED_26 0A000
eng "This error never happens"
spa "Este error nunca ocurre"
+ sw "Hitilafu hii haifanyiki kamwe"
ER_UNUSED_27
eng "This error never happens"
spa "Este error nunca ocurre"
+ sw "Hitilafu hii haifanyiki kamwe"
ER_WITH_COL_WRONG_LIST
chi "使用列列表并选择字段列表具有不同的列计数"
eng "WITH column list and SELECT field list have different column counts"
spa "La lista de columnas de WITH y lista de campos de SELECT tienen diferentes contadores de columna"
+ sw "Orodha ya safuwima ya WITH na orodha ya sehemu ya SELECT ina hesabu tofauti za safuwima"
ER_TOO_MANY_DEFINITIONS_IN_WITH_CLAUSE
chi "WITH条款中的元素太多了"
eng "Too many WITH elements in WITH clause"
spa "Demasiados elementos WITH en cláusua WITH"
+ sw "Vipengee vingi sana vya WITH katika kifungu cha WITH"
ER_DUP_QUERY_NAME
chi "WITH子句重复查询名称%`-.64s"
eng "Duplicate query name %`-.64s in WITH clause"
spa "Nombre de consulta (query) %`-.64s duplicada en cláusula WITH"
+ sw "Jina la swali linalorudiwa %`-.64s katika kifungu cha WITH"
ER_RECURSIVE_WITHOUT_ANCHORS
chi "没有元素'%s'递归的锚点"
eng "No anchors for recursive WITH element '%s'"
spa "No hay anclajes para elemento WITH recursivo '%s'"
+ sw "Hakuna nanga za kipengele cha WITH kinachojirudia '%s'"
ER_UNACCEPTABLE_MUTUAL_RECURSION
chi "锚定表'%s'不可接受的相互递归"
eng "Unacceptable mutual recursion with anchored table '%s'"
spa "Recursión mutua inaceptable con tabla anclada '%s'"
+ sw "Urudiaji usiokubalika wa pande zote na jedwali lenye nanga '%s'"
ER_REF_TO_RECURSIVE_WITH_TABLE_IN_DERIVED
chi "物质化的衍生参考指向递归的WITH 表'%s'"
eng "Reference to recursive WITH table '%s' in materialized derived"
spa "Referencia recursiva con WITH tabla '%s' en derivada materializada"
+ sw "Rejea ya kujirudishia na jedwali '%s' katika muundo wa kuonekana"
ER_NOT_STANDARD_COMPLIANT_RECURSIVE
chi "表'%s'R_WRONG_WINDOW_SPEC_NAME违反了递归定义的限制"
eng "Restrictions imposed on recursive definitions are violated for table '%s'"
+ sw "Vikwazo vilivyowekwa kwa ufafanuzi wa kujirudia vimekiukwa kwa jedwali la '%s'"
ER_WRONG_WINDOW_SPEC_NAME
chi "没有定义名称'%s'的窗口规范"
eng "Window specification with name '%s' is not defined"
spa "Especificación de ventana con nombre '%s' no definida"
+ sw "Maelezo ya dirisha yenye jina '%s' hayajafafanuliwa"
ER_DUP_WINDOW_NAME
chi "具有相同名称'%s'的多个窗口规范"
eng "Multiple window specifications with the same name '%s'"
spa "Múltiples especificaciones de ventana con el mismo nombre '%s'"
+ sw "Vipimo vingi vya madirisha yenye jina sawa '%s'"
ER_PARTITION_LIST_IN_REFERENCING_WINDOW_SPEC
chi "窗口规范引用另一个'%s'不能包含分区列表"
eng "Window specification referencing another one '%s' cannot contain partition list"
spa "La especificación de ventana que referencia a otra '%s' no puede contener una lista de partición"
+ sw "Kipimo cha dirisha kinachorejelea '%s' nyingine haiwezi kuwa na orodha ya kizigeu"
ER_ORDER_LIST_IN_REFERENCING_WINDOW_SPEC
chi "引用的窗口规范'%s'已包含次序列表"
eng "Referenced window specification '%s' already contains order list"
spa "La especificación de ventana referenciada '%s' ya contiene lista de orden"
+ sw "Kipimo cha dirisha kinachorejelea '%s' tayari kina orodha ya agizo"
ER_WINDOW_FRAME_IN_REFERENCED_WINDOW_SPEC
chi "引用的窗口规范'%s'不能包含窗口框架"
eng "Referenced window specification '%s' cannot contain window frame"
spa "La especificación referenciada de ventana '%s' no puede contener marco de ventana"
+ sw "Kipimo cha dirisha kinachorejelea '%s' hakiwezi kuwa na fremu ya dirisha"
ER_BAD_COMBINATION_OF_WINDOW_FRAME_BOUND_SPECS
chi "窗框绑定规格的不可接受的组合"
eng "Unacceptable combination of window frame bound specifications"
spa "Combinación inaceptable de especificaciones ligadas a marco de ventana"
+ sw "Mchanganyiko usiokubalika wa kipimo cha sura ya dirisha"
ER_WRONG_PLACEMENT_OF_WINDOW_FUNCTION
chi "窗口函数仅在SELECT列表和ORDER BY子句中允许"
eng "Window function is allowed only in SELECT list and ORDER BY clause"
spa "La función de ventana sólo se permite en lista SELECT y en cláusula ORDER BY"
+ sw "Kitendaji cha dirisha kinaruhusiwa tu katika orodha ya SELECT na ORDER BY clause"
ER_WINDOW_FUNCTION_IN_WINDOW_SPEC
chi "窗口规范中不允许窗口功能"
eng "Window function is not allowed in window specification"
spa "La función de ventana no está permitida en especificación de ventana"
+ sw "Kitendaji cha dirisha hairuhusiwi katika kipimo cha dirisha"
ER_NOT_ALLOWED_WINDOW_FRAME
chi "窗框不允许使用'%s'"
eng "Window frame is not allowed with '%s'"
spa "El marco de ventana no está permitido con '%s'"
+ sw "Fremu ya dirisha hairuhusiwi na '%s'"
ER_NO_ORDER_LIST_IN_WINDOW_SPEC
chi "在“%s”的窗口规范中没有订单列表"
eng "No order list in window specification for '%s'"
spa "No exite lista de orden en especificación de ventana para '%s'"
+ sw "Hakuna orodha ya kuagiza katika vipimo vya dirisha kwa '%s'"
ER_RANGE_FRAME_NEEDS_SIMPLE_ORDERBY
chi "范围型框架需要单个排序键订购逐个条款"
eng "RANGE-type frame requires ORDER BY clause with single sort key"
spa "El marco tipo-RANGE requiere de la cláusula ORDER BY con clave única de clasificación"
+ sw "fremu ya aina ya RANGE inahitaji ORDER BY clause yenye ufunguo wa kufanya orodha wa aina moja"
ER_WRONG_TYPE_FOR_ROWS_FRAME
chi "行类型框架需要整数"
eng "Integer is required for ROWS-type frame"
spa "Se requiere de un entero para marco tipo-ROWS"
+ sw "Nambari kamili inahitajika kwa fremu ya aina ya ROWS"
ER_WRONG_TYPE_FOR_RANGE_FRAME
chi "范围类型框架需要数字数据类型"
eng "Numeric datatype is required for RANGE-type frame"
spa "Se requiere de tipo de dato numérico para marco tipo-RANGE"
+ sw "aina ya data ya nambari inahitajika kwa fremu ya aina ya RANGE"
ER_FRAME_EXCLUSION_NOT_SUPPORTED
chi "帧排除尚不支持"
eng "Frame exclusion is not supported yet"
spa "No se seporta aún la exclusión del marco"
+ sw "Utengaji wa fremu bado hautumiki"
ER_WINDOW_FUNCTION_DONT_HAVE_FRAME
chi "此窗口功能可能没有窗口框架"
eng "This window function may not have a window frame"
spa "Esta función de ventana puede no tener un marco de ventana"
+ sw "Kitendaji hiki cha dirisha kinaweza kutokuwa na fremu ya dirisha"
ER_INVALID_NTILE_ARGUMENT
chi "NTILE的参数必须大于0"
eng "Argument of NTILE must be greater than 0"
spa "El argumento de NTILE debe de ser mayor de 0"
+ sw "Hoja ya NTILE lazima iwe kubwa kuliko 0"
ER_CONSTRAINT_FAILED 23000
chi "CONSTRAINT %`s失败的%`-.192s。%`-.192s"
eng "CONSTRAINT %`s failed for %`-.192s.%`-.192s"
ger "CONSTRAINT %`s fehlgeschlagen: %`-.192s.%`-.192s"
rus "проверка CONSTRAINT %`s для %`-.192s.%`-.192s провалилась"
spa "No se cumple la RESTRICCIÓN %`s para %`-.192s.%`-.192s"
+ sw "CONSTRAINT ya %`s imeshindwa kwa %`-.192s.%`-.192s"
ukr "Перевірка CONSTRAINT %`s для %`-.192s.%`-.192s не пройшла"
ER_EXPRESSION_IS_TOO_BIG
chi "%s条款中的表达太大了"
eng "Expression in the %s clause is too big"
spa "La expresión en la cláusula %s es demasiado grande"
+ sw "Semi katika kifungu cha %s ni makubwa sana"
ER_ERROR_EVALUATING_EXPRESSION
chi "获得了一个错误评估存储的表达式%s"
eng "Got an error evaluating stored expression %s"
spa "Obtenido error evaluando expresión almacenada %s"
+ sw "Nimepata hitilafu kutathmini usemi uliohifadhiwa %s"
ER_CALCULATING_DEFAULT_VALUE
chi "计算默认值为%`s时出错"
eng "Got an error when calculating default value for %`s"
spa "Obtenido un error al calcular valor por defecto para %`s"
+ sw "Nimepata hitilafu wakati wa kuhesabu thamani chaguo-msingi ya %`s"
ER_EXPRESSION_REFERS_TO_UNINIT_FIELD 01000
chi "字段%`-.64s的表达指的是未初始化的字段%`s"
eng "Expression for field %`-.64s is referring to uninitialized field %`s"
spa "La expresión para campo %`-.64s se refiere a un campo sin inicializar %`s"
+ sw "Semi za sehemu %`-.64s yanarejelea sehemu ambayo haijaanzishwa %`s"
ER_PARTITION_DEFAULT_ERROR
chi "只允许一个默认分区"
eng "Only one DEFAULT partition allowed"
spa "Sólo se permite una partición DEFAULT"
+ sw "Kizigeu kimoja tu cha DEFAULT kinaruhusiwa"
ukr "Припустимо мати тільки один DEFAULT розділ"
ER_REFERENCED_TRG_DOES_NOT_EXIST
chi "给定动作时间和事件类型的引用触发'%s'不存在"
eng "Referenced trigger '%s' for the given action time and event type does not exist"
spa "No existe disparador referenciado '%s' para el momento dado de acción y para el tipo de evento"
+ sw "Kichochezi kinachorejelewa '%s' kwa muda uliotolewa wa kitendo na aina ya tukio hakipo"
ER_INVALID_DEFAULT_PARAM
chi "此类参数使用不支持默认/忽略值"
eng "Default/ignore value is not supported for such parameter usage"
spa "El valor por defecto/ignorado no está soportado para tal utilización de parámetro"
+ sw "Thamani chaguo-msingi/puuza haitumiki kwa matumizi kama hayo ya kigezo"
ukr "Значення за замовчуванням або ігнороване значення не підтримано для цього випадку використання параьетра"
ER_BINLOG_NON_SUPPORTED_BULK
chi "仅支持基于行的复制,支持批量操作"
eng "Only row based replication supported for bulk operations"
spa "Sólo la réplica basada en fila es soportada para operaciones enormes"
+ sw "Unakilishaji wa msingi wa safu mlalo pekee unaotumika kwa shughuli za kazi nyingi"
ER_BINLOG_UNCOMPRESS_ERROR
chi "解压压缩的binlog失败"
eng "Uncompress the compressed binlog failed"
spa "Ha fallado la descompresión del binlog comprimido"
+ sw "Imeshindwa kubatilisha logi iliyoshinikizwa"
ER_JSON_BAD_CHR
chi "坏JSON,参数%d 函数'%s' 位置%d"
eng "Broken JSON string in argument %d to function '%s' at position %d"
spa "Cadena JSON rota en argumento %d para función '%s' en posición %d"
+ sw "Mfuatano wa herufi wa JSON uliovunjika katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_NOT_JSON_CHR
chi "变量%d出现禁止字符,函数'%s'在%d处"
eng "Character disallowed in JSON in argument %d to function '%s' at position %d"
spa "Carácter no permitido en JSON en argumento %d para función '%s' en la posición %d"
+ sw "Herufi imekataliwa katika JSON katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_EOS
chi "JSON文本中的意外结尾,参数%d 函数'%s'"
eng "Unexpected end of JSON text in argument %d to function '%s'"
spa "Fin inesperado de texto JSON en argumento %d a función '%s'"
+ sw "Mwisho usiotarajiwa wa maandishi ya JSON katika hoja ya %d ya kitendakazi '%s'"
ER_JSON_SYNTAX
chi "JSON文本语法错误 参数%d 函数'%s' 位置%d"
eng "Syntax error in JSON text in argument %d to function '%s' at position %d"
spa "Error de sintaxis en texto JSON en argumento %d a función '%s' en la posición %d"
+ sw "Hitilafu ya kisintaksia katika maandishi ya JSON katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_ESCAPING
chi "JSON文本中逸出不正确 参数%d 函数'%s' 位置%d"
eng "Incorrect escaping in JSON text in argument %d to function '%s' at position %d"
spa "Incorrecta escapatoria en texto JSON en argumento %d a función '%s' en la posicón %d"
+ sw "Kuepuka kwa njia isiyo sahihi katika maandishi ya JSON katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_DEPTH
chi "超过JSON嵌套深度的%d限制 参数%d 函数'%s' 位置%d的"
eng "Limit of %d on JSON nested structures depth is reached in argument %d to function '%s' at position %d"
spa "El límite de %d en profundidad de estructuras JSON anidadas se ha alcanzado en argumento %d a función '%s' en la posición %d"
+ sw "Kikomo cha %d kwenye kina cha miundo iliyopachikwa kwenye JSON kinafikiwa katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_PATH_EOS
chi "JSON文本路径错误 参数%d 函数'%s'"
eng "Unexpected end of JSON path in argument %d to function '%s'"
spa "Fin inesperado de ruta JSON en argumento %d a función '%s'"
+ sw "Mwisho usiotarajiwa wa njia ya JSON katika hoja ya %d ya kitendakazi '%s'"
ER_JSON_PATH_SYNTAX
chi "JSON路径语法错误 参数%d 函数'%s' 位置%d"
eng "Syntax error in JSON path in argument %d to function '%s' at position %d"
spa "Error de sintaxis en ruta JSON en argumento %d a función '%s' en la posición %d"
+ sw "Hitilafu ya kisintaksia katika njia ya JSON katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_PATH_DEPTH
chi "JSON路径深度上限达到:%d 参数%d 函数'%s' 位置%d"
eng "Limit of %d on JSON path depth is reached in argument %d to function '%s' at position %d"
spa "El límite de %d en profundidad de ruta JSON se ha alcanzado en argumento %d a función '%s' en la posición %d"
+ sw "Kikomo cha %d kwenye kina cha njia ya JSON kinafikiwa katika hoja %d ya kitendakazi '%s' katika nafasi ya %d"
ER_JSON_PATH_NO_WILDCARD
chi "JSON路径中的通配符不允许 参数%d 函数'%s'"
eng "Wildcards or range in JSON path not allowed in argument %d to function '%s'"
spa "Comodines en ruta JSON no permitidos en argumento %d a función '%s'"
+ sw "Wildcards au masafa katika njia ya JSON hairuhusiwi katika hoja %d ya kitendakazi '%s'"
ER_JSON_PATH_ARRAY
chi "JSON路径应当以排列为终 参数%d 函数'%s'"
eng "JSON path should end with an array identifier in argument %d to function '%s'"
spa "La ruta JSON debería de terminar con identificador de arreglo en argumento %d a función '%s'"
+ sw "Njia ya JSON inapaswa kuisha na kitambulisho cha safu katika hoja %d ya kitendakazi '%s'"
ER_JSON_ONE_OR_ALL
chi "函数'%s'的第二个参数必须是'一个'或'全部'"
eng "Argument 2 to function '%s' must be "one" or "all"."
spa "El argumento 2 a función '%s' debe de ser "one" o "all"."
+ sw "Hoja ya pili ya kitendakazi '%s' lazima iwe "one" au "all"."
ER_UNSUPPORTED_COMPRESSED_TABLE
chi "CREATE TEMPORARY TABLE 不允许用ROW_FORMAT=COMPRESSED或KEY_BLOCK_SIZE"
eng "InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE."
spa "InnoDB rechaza grabar en tablas con ROW_FORMAT=COMPRESSED o KEY_BLOCK_SIZE."
+ sw "InnoDB inakataa kuandika jedwali zenye ROW_FORMAT=COMPRESSED au KEY_BLOCK_SIZE."
ER_GEOJSON_INCORRECT
chi "为st_geomfromgeojson函数指定了不正确的GeoJSON格式。"
eng "Incorrect GeoJSON format specified for st_geomfromgeojson function."
spa "Especficado formato GeoJSON incorrecto para función st_geomfromgeojson."
+ sw "Muundo usio sahihi wa GeoJSON uliobainishwa kwa kitendakazi cha st_geomfromgeojson."
ER_GEOJSON_TOO_FEW_POINTS
chi "Geojson格式不正确 - Linestring指定的太少点。"
eng "Incorrect GeoJSON format - too few points for linestring specified."
spa "Formato GeoJSON incorrecto - demasiados pocos puntos especificados para linestring."
+ sw "Muundo usio sahihi wa GeoJSON - nukta chache sana kwa linestring uliobainishwa."
ER_GEOJSON_NOT_CLOSED
chi "Geojson格式不正确 - 多边形未关闭。"
eng "Incorrect GeoJSON format - polygon not closed."
spa "Formato GeoJSON incorrect - polígono no cerrado."
+ sw "Muundo usio sahihi wa GeoJSON - poligoni haijafungwa."
ER_JSON_PATH_EMPTY
chi "path表达式'$'不允许在参数%d中允许运行'%s'。"
eng "Path expression '$' is not allowed in argument %d to function '%s'."
spa "La expresión de ruta '$' no está permitida en argumento %d a función '%s'."
+ sw "Usemi wa njia '$' hauruhusiwi katika hoja %d ya kitendakazi '%s'."
ER_SLAVE_SAME_ID
chi "与此从站相同的server_uuId / server_id的从站已连接到主设备"
eng "A slave with the same server_uuid/server_id as this slave has connected to the master"
spa "Un esclavo con el mismo server_uuid/server_id que este esclavo se ha conectado al maestro (master)"
+ sw "Mtumwa aliye na seva_uuid/server_id sawa na mtumwa huyu ameunganishwa na bwana"
ER_FLASHBACK_NOT_SUPPORTED
chi "闪回不支持%s%s"
eng "Flashback does not support %s %s"
spa "Retrospectiva no soporta %s %s"
+ sw "Flashback haiauni %s %s"
#
# MyRocks error messages
@@ -10189,247 +11555,302 @@ ER_KEYS_OUT_OF_ORDER
chi "钥匙在散装负载期间出现订单"
eng "Keys are out order during bulk load"
spa "Claves desordenadas durante carga enorme"
+ sw "Vifunguo havijapangwa sambamba wakati wa upakiaji mwingi"
ER_OVERLAPPING_KEYS
chi "批量负载行重叠现有行"
eng "Bulk load rows overlap existing rows"
spa "La carga enorme de filas se superpone con filas existentes"
+ sw "Safu mlalo za upakiaji mwingi hupishana safu mlalo zilizopo"
ER_REQUIRE_ROW_BINLOG_FORMAT
chi "binlog_format != ROW时无法在master上执行更新"
eng "Can't execute updates on master with binlog_format != ROW."
spa "No puedo ejecutar actualizaciones en maestro (master) con binlog_format != ROW."
+ sw "Haiwezi kutekeleza masasisho kwenye bwana ukiwa binlog_format != ROW."
ER_ISOLATION_MODE_NOT_SUPPORTED
chi "MyRocks仅支持读取承诺和可重复读取隔离级别。请从当前隔离级别的%s改变"
eng "MyRocks supports only READ COMMITTED and REPEATABLE READ isolation levels. Please change from current isolation level %s"
spa "MyRocks soporta sólo niveles de aislamiento READ COMMITTED y REPEATABLE READ. Por favor, cambie desde nivel de aislamiento actual %s"
+ sw "MyRocks inaauni viwango vya kutengwa READ COMMITTED and REPEATABLE READ. Tafadhali badilisha kutoka kiwango cha sasa cha kutengwa %s"
ER_ON_DUPLICATE_DISABLED
chi "当在MyRocks禁用唯一检查时,INSERT,UPDATE, LOAD,使用Clauses更新或替换索引的子句(即,在重复的重复键更新,替换)中,不允许使用。查询:%s"
eng "When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: %s"
spa "Al desactivar chequeo de único en MyRocks, las sentencias INSERT, UPDATE, LOAD con cláusulas que actualizan o reemplazan la clave (p.ej. INSERT ON DUPLICATE KEY UPDATE, REPLACE) no se permiten. Consulte (query): %s"
+ sw "Ukaguaji wa kipekee unapozimwa katika MyRocks, taarifa za INSERT,UPDATE,LOAD zilizo na vifungu vinavyosasisha au kuchukua nafasi ya funguo (yaani INSERT ON DUPLICATE KEY, REPLACE) haziruhusiwi. Hoja: %s"
ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
chi "START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT时,无法执行更新。"
eng "Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
spa "No puedo ejecutar actualizaciones cuando has iniciado una transacción mediante START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
+ sw "Haiwezi kutekeleza masasisho ulipoanzisha muamala kwa START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
ER_ROLLBACK_ONLY
chi "此交易回滚并无法承诺。只支持支持的操作是滚动,因此将丢弃所有待处理的更改。请重新启动其他事务。"
eng "This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction."
spa "Esta transacción se ha retrocedido (rolled back) y no puede ser acometida (commit). La única operación soportada es retroceder (roll back), de tal forma que se descartarán todos los cambios pendientes. Por favor, rearranque otra transacción."
+ sw "Muamala huu umerejeshwa na hauwezi kufanywa. Operesheni inayoruhusiwa tu ni kuirejesha, kwa hivyo mabadiliko yote yanayosubiri yatatupwa. Tafadhali anzisha upya muamala nyingine."
ER_ROLLBACK_TO_SAVEPOINT
chi "如果修改行,MyRocks目前不支持保存点的回滚。"
eng "MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows."
spa "MyRocks en este momento no soporta ROLLBACK TO SAVEPOINT si se están modificando filas."
+ sw "MyRocks kwa sasa haiauni ROLLBACK TO SAVEPOINT ikiwa inarekebisha safu mlalo."
ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
chi "在RockSDB存储引擎中,START TRANSACTION WITH CONSISTENT SNAPSHOT 只支持REPEATABLE READ隔离"
eng "Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine."
spa "Sólo el nivel de aislamiento REPEATABLE READ se soporta para START TRANSACTION WITH CONSISTENT SNAPSHOT en Motor de Almacenaje RocksDB."
+ sw "Kiwango cha kutengwa cha REPEATABLE READ pekee ndicho kinachoauniwa kwa START TRANSACTION WITH CONSISTENT SNAPSHOT katika RocksDB Storage Engine."
ER_UNSUPPORTED_COLLATION
chi "字符串索引列%s的不受支持的归类。%s使用二进制校构(%s)。"
eng "Unsupported collation on string indexed column %s.%s Use binary collation (%s)."
spa "Cotejo (collation) no soportado en columna indizada de cadena %s.%s Use cotejo binario (%s)."
+ sw "Mgongano usioauniwa kwenye safu wima iliyoorodheshwa ya mfuatano wa herufi wa %s.%s Tumia mgongano wa jozi (%s)."
ER_METADATA_INCONSISTENCY
chi "表'%s'不存在,但MyRocks内存存在元数据信息。这是数据不一致的标志。请检查是否存在'%s.frm',并尝试恢复如果它不存在。"
eng "Table '%s' does not exist, but metadata information exists inside MyRocks. This is a sign of data inconsistency. Please check if '%s.frm' exists, and try to restore it if it does not exist."
spa "La tabla '%s' no existe, pero existe información de metadatos dentro de MyRocks. Esto es una señal de datos inconsistentes. Por favor, revise si existe '%s.frm' e intente restaurarla si no existe."
+ sw "Jedwali '%s' halipo, lakini maelezo ya metadata yapo ndani ya MyRocks. Hii ni ishara ya kutofautiana kwa data. Tafadhali angalia kama '%s.frm' ipo, na ujaribu kuirejesha ikiwa haipo."
ER_CF_DIFFERENT
chi "列族('%s')标志(%d)与现有标志(%d)不同。分配新的CF标志,或者不要更改现有的CF标志。"
eng "Column family ('%s') flag (%d) is different from an existing flag (%d). Assign a new CF flag, or do not change existing CF flag."
spa "La familia de columna ('%s') bandera (%d) es diferente de una bandera existente (%d). Asigne una nueva bandera CF o no cambie la bandera CF."
+ sw "Bendera ya familia ya safu wima ('%s') (%d) ni tofauti na bendera iliyopo (%d). Weka bendera mpya ya CF, au usibadilishe bendera iliyopo ya CF."
ER_RDB_TTL_DURATION_FORMAT
chi "Myrocks中的TTL持续时间(%s)必须是无符号非空64位整数。"
eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer."
spa "La duración de TTL (%s) en MyRocks debe de ser un entero sin signo no-null de 64-bit."
+ sw "Muda wa TTL (%s) katika MyRocks lazima uwe nambari kamili ya biti 64 ambayo haijatiwa saini."
ER_RDB_STATUS_GENERAL
chi "状态误差%d从RockSDB收到:%s"
eng "Status error %d received from RocksDB: %s"
spa "Recibido error de estado %d desde RocksDB: %s"
+ sw "Hitilafu ya hali %d imepokelewa kutoka RocksDB: %s"
ER_RDB_STATUS_MSG
chi "%s,状态误差%d从rocksdb收到:%s"
eng "%s, Status error %d received from RocksDB: %s"
spa "%s, Recibido error de estado %d desde RocksDB: %s"
+ sw "%s, hitilafu ya hali %d imepokelewa kutoka RocksDB: %s"
ER_RDB_TTL_UNSUPPORTED
chi "当表有隐藏的PK时,目前禁用TTL支持。"
eng "TTL support is currently disabled when table has a hidden PK."
spa "El soporte TTL está desactivado en este momento cuando la tabla tiene una PK oculta."
+ sw "Uauniaji wa TTL umezimwa kwa sasa wakati jedwali lina PK iliyofichwa."
ER_RDB_TTL_COL_FORMAT
chi "Myrocks中的TTL列(%s)必须是一个无符号的非空64位整数,存在于表内,并具有伴随的TTL持续时间。"
eng "TTL column (%s) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration."
spa "La columna TTL (%s) en MyRocks debe de ser un entero sin signo no-null de 64-bit, debe de existir dentro de la tabla y debe de tener una duración ttl acompañante."
+ sw "Safu wima ya TTL (%s) katika MyRocks lazima iwe nambari kamili ya biti 64 ambayo haijatiwa saini, iwe ndani ya jedwali, na iwe na muda wa ttl unaoandamana."
ER_PER_INDEX_CF_DEPRECATED
chi "已弃用每个索引列族选项"
eng "The per-index column family option has been deprecated"
spa "La opcion de familia de columna por-índice está obsoleta"
+ sw "Chaguo la familia la safu wima kwa kila kielezo limeacha kutumika"
ER_KEY_CREATE_DURING_ALTER
chi "MyRocks在Alter期间创建新的索引定义失败。"
eng "MyRocks failed creating new key definitions during alter."
spa "MyRocks no pudo crear nuevas definiciones de clave durante 'alter'."
+ sw "MyRocks imeshindwa kuunda mafafanuzi mpya ya funguo wakati wa kubadilisha."
ER_SK_POPULATE_DURING_ALTER
chi "MyRocks在Alter期间失败填充次要索引。"
eng "MyRocks failed populating secondary key during alter."
spa "MyRocks falló al poblar clave secundaria duante el 'alter'."
+ sw "MyRocks imeshindwa kujaza ufunguo wa sekondari wakati wa kubadilisha."
# MyRocks messages end
ER_SUM_FUNC_WITH_WINDOW_FUNC_AS_ARG
chi "窗口函数不能用作组函数的参数。"
eng "Window functions can not be used as arguments to group functions."
spa "Las funciones de ventana no se pueden usar como argumentos para agrupar funciones."
+ sw "Vitendaji vya dirisha haviwezi kutumika kama hoja kwa vitendaji vya kikundi."
ER_NET_OK_PACKET_TOO_LARGE
chi "好的包太大了"
eng "OK packet too large"
spa "Paquete OK demasiado grande"
+ sw "Sawa pakiti kubwa sana"
ER_GEOJSON_EMPTY_COORDINATES
chi "Geojson格式不正确 - 空的'coordinates'阵列。"
eng "Incorrect GeoJSON format - empty 'coordinates' array."
spa "Formato GeoJSON incorrecto - arreglo vacío de coordenadas."
+ sw "Muundo usio sahihi wa GeoJSON - safu tupu ya 'coordinates'."
ER_MYROCKS_CANT_NOPAD_COLLATION
chi "MyRocks目前不支持与“No Pad \”属性的归类。"
eng "MyRocks doesn't currently support collations with \"No pad\" attribute."
spa "MyRocks no soporta en la actualidad cotejos con atributo \"No pad\"."
+ sw "MyRocks kwa sasa haiauni miunganisho yenye sifa ya \"No pad\"."
ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
chi "非法参数数据类型%s和%s为操作'%s'"
eng "Illegal parameter data types %s and %s for operation '%s'"
spa "Tipos de datos de parámetro ilegales %s y %s para operación '%s'"
+ sw "Aina za data za kigezo haramu %s na %s kwa operesheni '%s'"
ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
chi "非法参数数据类型%s用于操作'%s'"
eng "Illegal parameter data type %s for operation '%s'"
spa "Tipo de dato %s de parámetro ilegal para operación '%s'"
+ sw "Aina ya data ya kigezo haramu %s kwa operesheni '%s'"
ER_WRONG_PARAMCOUNT_TO_CURSOR 42000
chi "对Cursor的参数计数不正确'%-.192s'"
eng "Incorrect parameter count to cursor '%-.192s'"
spa "Contador incorrecto de parámetro para cursor '%-.192s'"
rus "Некорректное количество параметров для курсора '%-.192s'"
+ sw "Hesabu isiyo sahihi ya kigezo kwa kielekezi '%-.192s'"
ER_UNKNOWN_STRUCTURED_VARIABLE
chi "未知的结构系统变量或行程变量'%-.*s'"
eng "Unknown structured system variable or ROW routine variable '%-.*s'"
spa "Variable de sistema con estructura desconocida o variable de rutina ROW '%-.*s'"
+ sw "Kigezo cha mfumo uliopangwa usiojulikana au kigezo cha utaratibu wa ROW '%-.*s'"
ER_ROW_VARIABLE_DOES_NOT_HAVE_FIELD
chi "行变量'%-.192s'没有字段'%-.192s'"
eng "Row variable '%-.192s' does not have a field '%-.192s'"
spa "La variable de fila '%-.192s' no tiene un campo '%-.192s'"
+ sw "Kigezo cha safu mlalo '%-.192s' hakina sehemu ya '%-.192s'"
ER_END_IDENTIFIER_DOES_NOT_MATCH
chi "结束标识符'%-.192s'不匹配'%-.192s'"
eng "END identifier '%-.192s' does not match '%-.192s'"
spa "Identificador END '%-.192s' no coincide con '%-.192s'"
+ sw "Kitambulisho cha END '%-.192s' hakilingani na '%-.192s'"
ER_SEQUENCE_RUN_OUT
chi "序列'%-.64s。%-.64s'已经用完了"
eng "Sequence '%-.64s.%-.64s' has run out"
spa "La secuencia '%-.64s.%-.64s' se ha agotado"
+ sw "Mfuatano wa '%-.64s.%-.64s' umeisha"
ER_SEQUENCE_INVALID_DATA
chi "序列'%-.64s。%-.64s的值冲突"
eng "Sequence '%-.64s.%-.64s' has out of range value for options"
spa "La secuencia '%-.64s.%-.64s' tiene un valor fuera de rango para las opciones"
+ sw "Mfuatano '%-.64s.%-.64s' una thamani nje ya masafa kwa chaguo"
ER_SEQUENCE_INVALID_TABLE_STRUCTURE
chi "序列'%-.64s。%-.64s'表结构无效(%s)"
eng "Sequence '%-.64s.%-.64s' table structure is invalid (%s)"
spa "La estuctura de tabla de secuencia '%-.64s.%-.64s' es inválida (%s)"
+ sw "Mfuatano wa '%-.64s.%-.64s' muundo wa jedwali ni batili (%s)"
ER_SEQUENCE_ACCESS_ERROR
chi "序列'%-.64s。%-.64s的访问错误"
eng "Sequence '%-.64s.%-.64s' access error"
spa "Error en acceso a secuencia '%-.64s.%-.64s'"
+ sw "Hitilafu ya ufikiaji ya mfuatano '%-.64s.%-.64s'"
ER_SEQUENCE_BINLOG_FORMAT
eng "Sequences requires binlog_format mixed or row"
spa "Las secuencias requieren binlog_format mixto o fila"
+ sw "Mfuatano unahitaji binlog_format mixed au row"
ER_NOT_SEQUENCE 42S02
chi "'%-.64s。%-.64s'不是序列"
eng "'%-.64s.%-.64s' is not a SEQUENCE"
spa "'%-.64s.%-.64s' no es una SECUENCIA"
+ sw "'%-.64s.%-.64s' sio SEQUENCE"
ER_NOT_SEQUENCE2 42S02
chi "'%-.192s'不是序列"
eng "'%-.192s' is not a SEQUENCE"
spa "'%-.192s' no es una SECUENCIA"
+ sw "'% -.192s' sio SEQUENCE"
ER_UNKNOWN_SEQUENCES 42S02
chi "未知序列:'%-.300s'"
eng "Unknown SEQUENCE: '%-.300s'"
spa "SECUENCIA desconocida: '%-.300s'"
+ sw "SEQUENCE Isiyojulikana: '% -.300s'"
ER_UNKNOWN_VIEW 42S02
chi "未知视图:'%-.300s'"
eng "Unknown VIEW: '%-.300s'"
spa "VISTA desconocida: '%-.300s'"
+ sw "VIEW Usiojulikana: '% -.300s'"
ER_WRONG_INSERT_INTO_SEQUENCE
chi "错误插入序列。人们只能将单表插入到序列对象(与mariadb-dump)中进行。如果要更改序列,请使用更改序列。"
eng "Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a sequence object (like with mariadb-dump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead."
spa "INSERT equivocado dentro de SEQUENCE. Uno sólo puede hacer INSERT único en tabla dentro de un objeto de secuencia (como con volcado-mariadb). Si desea cambiar la SECUENCIA, use ALTER SEQUENCE en su lugar."
+ sw "INSERT mbaya katika SEQUENCE. Mtu anaweza tu kufanya INSERT katika jedwali moja kwenye kitu cha mfuatano (kama vile na mariadb-dump). Ikiwa ungependa kubadilisha SEQUENCE, tumia ALTER SEQUENCE badala yake."
ER_SP_STACK_TRACE
chi "在%u中以%s"
eng "At line %u in %s"
spa "En la línea %u en %s"
+ sw "Kwenye mstari %u katika %s"
ER_PACKAGE_ROUTINE_IN_SPEC_NOT_DEFINED_IN_BODY
- chi "在包规范中声明子程序'%-.192s',但未在包主体中定义"
- eng "Subroutine '%-.192s' is declared in the package specification but is not defined in the package body"
- spa "La subrutina '%-.192s' está declarada en la especificación del paquete pero no está definida en el cuerpo del paquete"
+ chi "在包规范中声明子程序%s %`s,但未在包主体中定义"
+ eng "%s %`s is declared in the package specification but is not defined in the package body"
+ spa "La %s %`s está declarada en la especificación del paquete pero no está definida en el cuerpo del paquete"
+ sw "Utaratibu mdogo %s %`s umetangazwa katika ubainisho wa kifurushi lakini haijafafanuliwa kwenye mwili wa kifurushi"
ER_PACKAGE_ROUTINE_FORWARD_DECLARATION_NOT_DEFINED
- chi "子程序'%-.192s'具有前向声明但未定义"
- eng "Subroutine '%-.192s' has a forward declaration but is not defined"
- spa "La subrutina '%-.192s' tiene una declaración adelantada pero no está definida"
+ chi "子程序%s %`s 具有前向声明但未定义"
+ eng "%s %`s has a forward declaration but is not defined"
+ spa "La %s %`s tiene una declaración adelantada pero no está definida"
+ sw "Utaratibu mdogo %s %`s una tamko la mbele lakini haijafafanuliwa"
ER_COMPRESSED_COLUMN_USED_AS_KEY
chi "压缩列'%-.192s'不能用于索引规范"
eng "Compressed column '%-.192s' can't be used in key specification"
spa "Una columna comprimida '%-.192s' no se puede usar en especificación de clave"
+ sw "Safu iliyobanwa '%-.192s' haiwezi kutumika katika ubainishaji wa ufunguo"
ER_UNKNOWN_COMPRESSION_METHOD
chi "未知压缩方法:%s"
eng "Unknown compression method: %s"
spa "Método de compresión desconocido: %s"
+ sw "Mbinu ya mbano isiyojulikana: %s"
ER_WRONG_NUMBER_OF_VALUES_IN_TVC
chi "使用的表值构造函数具有不同数量的值"
eng "The used table value constructor has a different number of values"
spa "El constructor del valor de tabla usado tiene un número diferente de valores"
+ sw "Mjenzi wa thamani ya jedwali iliyotumika ina idadi tofauti ya mathamani"
ER_FIELD_REFERENCE_IN_TVC
chi "字段参考'%-.192s'不能用于表值构造函数"
eng "Field reference '%-.192s' can't be used in table value constructor"
spa "La referencia a campo '%-.192s' no se puede usar en constructor de valor de tabla"
+ sw "Marejeleo ya sehemu '%-.192s' hayawezi kutumika katika kijenzi cha thamani ya jedwali"
ER_WRONG_TYPE_FOR_PERCENTILE_FUNC
chi "%s函数需要数字数据类型"
eng "Numeric datatype is required for %s function"
spa "Se requiere de tipo de dato numérico para función %s"
+ sw "Aina ya data ya nambari inahitajika kwa kitendakazi %s"
ER_ARGUMENT_NOT_CONSTANT
chi "%s函数的参数不是分区的常量"
eng "Argument to the %s function is not a constant for a partition"
spa "El argumento de la función %s no es una constante para una partición"
+ sw "Hoja kwa kitendakazi %s sio aina isiyobadilika kwa kizigeu"
ER_ARGUMENT_OUT_OF_RANGE
chi "%s函数的参数不属于范围[0,1]"
eng "Argument to the %s function does not belong to the range [0,1]"
spa "El argumento de la función %s no pertenece al rango [0,1]"
+ sw "Hoja ya kitendakazi %s si ya masafa [0,1]"
ER_WRONG_TYPE_OF_ARGUMENT
chi "%s函数仅接受可以转换为数字类型的参数"
eng "%s function only accepts arguments that can be converted to numerical types"
spa "La función %s sólo acepta argumentos que se puedan convertir a tipos numéricos"
+ sw "%s kitendakazi inakubali tu hoja zinazoweza kubadilishwa kuwa aina za nambari"
ER_NOT_AGGREGATE_FUNCTION
chi "在错误的上下文中使用的聚合特定指令(fetch组下一行)"
eng "Aggregate specific instruction (FETCH GROUP NEXT ROW) used in a wrong context"
spa "Instrucción específica de agregación (FETCH GROUP NEXT ROW) usada en contexto equivocado"
+ sw "Maagizo mahususi ya kujumlisha ( FETCH GROUP NEXT ROW) inayotumika katika muktadha usio sahihi"
ER_INVALID_AGGREGATE_FUNCTION
chi "聚合函数丢失的聚合特定指令(fetch组下一行)"
eng "Aggregate specific instruction(FETCH GROUP NEXT ROW) missing from the aggregate function"
spa "Falta instrucción específica de agregación (FETCH GROUP NEXT ROW) de la función de agregación"
+ sw "Maagizo mahususi ya kujumlisha(FETCH GROUP NEXT ROW) haipo kwenye kitendakazi cha jumla"
ER_INVALID_VALUE_TO_LIMIT
chi "限制仅接受整数值"
eng "Limit only accepts integer values"
spa "El límite sólo acepta valores enteros"
+ sw "Kikomo kinakubali tu thamani za nambari kamili"
ER_INVISIBLE_NOT_NULL_WITHOUT_DEFAULT
chi "隐形列%`s必须具有默认值"
eng "Invisible column %`s must have a default value"
spa "Una columna invisible %`s debe de tener valor por defecto"
+ sw "Safu wima isiyoonekana %`s lazima iwe na thamani chaguo-msingi"
# MariaDB error numbers related to System Versioning
@@ -10439,323 +11860,415 @@ ER_UPDATE_INFO_WITH_SYSTEM_VERSIONING
chi "匹配的行:%ld已更改:%ld插入:%ld警告:%ld"
eng "Rows matched: %ld Changed: %ld Inserted: %ld Warnings: %ld"
spa "Filas coincidentes: %ld Cambiadas: %ld Insertadas: %ld Avisos: %ld"
+ sw "Safu mlalo zimelingana: %ld Imebadilishwa: %ld Imeingizwa: %ld Maonyo: %ld"
ER_VERS_FIELD_WRONG_TYPE
chi "%`s必须为系统版本为表%s的类型%`s"
eng "%`s must be of type %s for system-versioned table %`s"
spa "%`s debe de ser del tipo %s para tabla versionada del sistema %`s"
+ sw "%`s lazima ziwe za aina %s kwa jedwali la mfumo %`s"
ER_VERS_ENGINE_UNSUPPORTED
chi "Transaction-Precise系统版本控制%`s不受支持"
eng "Transaction-precise system versioning for %`s is not supported"
spa "No se soporta versionado de sistema de transacción precisa para %`s"
+ sw "Toleo la mfumo wa muamala kamili kwa %`s halitumiki"
ER_UNUSED_23
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_PARTITION_WRONG_TYPE
chi "错误分区类型%`s,应当是%`s"
eng "Wrong partition type %`s for partitioning by %`s"
spa "Tipo de partición equivocada %`s para particionado mediante %`s"
+ sw "Aina mbaya ya kizigeu %`s kwa kugawa kwa %`s"
WARN_VERS_PART_FULL
chi "版本化表%`s.%`s:partition%`s已满,添加更多历史分区(out of %s)"
eng "Versioned table %`s.%`s: last HISTORY partition (%`s) is out of %s, need more HISTORY partitions"
spa "Tabla versionada %`s.%`s: última partición HISTORY (%`s) fuera de %s, necesita de más particiones HISTORY"
+ sw "Jedwali lililotolewa %`s.%`s: kizigeu cha mwisho cha HISTORY (%`s) iko nje ya %s, inahitaji vizigeu zaidi vya HISTORY"
WARN_VERS_PARAMETERS
chi "也许缺少参数:%s"
eng "Maybe missing parameters: %s"
spa "Parámetros que quizás faltan: %s"
+ sw "Labda kukosa vigezo: %s"
ER_VERS_DROP_PARTITION_INTERVAL
chi "只能在旋转间隔时丢弃最旧的分区"
eng "Can only drop oldest partitions when rotating by INTERVAL"
spa "Sólo se pueden eliminar viejas particiones al rotar mediante INTERVAL"
+ sw "Inaweza tu kuacha kizigeu cha zamani zaidi wakati wa kuzungushwa kwa INTERVAL"
ER_UNUSED_25
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
WARN_VERS_PART_NON_HISTORICAL
chi "分区%`s包含非历史数据"
eng "Partition %`s contains non-historical data"
spa "La partición %`s contiene datos no históricos"
+ sw "Kizigeu %`s ina data isiyo ya kihistoria"
ER_VERS_ALTER_NOT_ALLOWED
chi "系统版本为%`s.%`s不允许。更改@@system_versioning_alter_history用ALTER。"
eng "Not allowed for system-versioned %`s.%`s. Change @@system_versioning_alter_history to proceed with ALTER."
spa "No permitido para versionado del sistema %`s.%`s. Cambie @@system_versioning_alter_history para proceder con ALTER."
+ sw "Hairuhusiwi kwa toleo la mfumo %`s.%`s. Badilisha @@system_versioning_alter_history ili kuendelea na ALTER."
ER_VERS_ALTER_ENGINE_PROHIBITED
chi "不允许系统版本为%`s.%`s。不支持更改返回/来自本机系统版本传输引擎。"
eng "Not allowed for system-versioned %`s.%`s. Change to/from native system versioning engine is not supported."
spa "No permitido para versionado del sistema %`s.%`s. Cambio a/desde motor de versionado nativo no soportado."
+ sw "Hairuhusiwi kwa toleo la mfumo %`s.%`s. Kubadilisha hadi/kutoka injini ya toleo la mfumo asili haiauniwi."
ER_VERS_RANGE_PROHIBITED
chi "不允许使用SYSTEM_TIME范围选择器"
eng "SYSTEM_TIME range selector is not allowed"
spa "Selector de rango SYSTEM_TIME no permitido"
+ sw "Kiteuzi cha masafa cha SYSTEM_TIME hakiruhusiwi"
ER_CONFLICTING_FOR_SYSTEM_TIME
chi "与递归的System_time子句相冲突"
eng "Conflicting FOR SYSTEM_TIME clauses in WITH RECURSIVE"
spa "Cláusulas conflictivas FOR SYSTEM_TIME en WITH RECURSIVE"
+ sw "Vifungu vinavyokinzana vya FOR SYSTEM_TIME katika WITH RECURSIVE"
ER_VERS_TABLE_MUST_HAVE_COLUMNS
chi "表%`s必须至少有一个版本后的列"
eng "Table %`s must have at least one versioned column"
spa "La tabla %`s debe de tener al menos una columna versionada"
+ sw "Jedwali %`s lazima iwe na angalau safu wima moja aina ya toleo"
ER_VERS_NOT_VERSIONED
chi "表%`s不是系统版本的"
eng "Table %`s is not system-versioned"
spa "La tabla %`s no es versionada del sistema"
+ sw "Jedwali %`s halijasasishwa na mfumo"
ER_MISSING
chi "%`s的错误参数:缺少'%s'"
eng "Wrong parameters for %`s: missing '%s'"
spa "Parámetros equivocados para %`s: falta '%s'"
+ sw "Vigezo vibaya vya %`s: vinakosa '%s'"
ER_VERS_PERIOD_COLUMNS
chi "system_time的时期必须使用列%`s和%`s"
eng "PERIOD FOR SYSTEM_TIME must use columns %`s and %`s"
spa "PERIOD FOR SYSTEM_TIME debe de usar columnas %`s y %`s"
+ sw "PERIOD FOR SYSTEM_TIME lazima itumie safu wima %`s na %`s"
ER_PART_WRONG_VALUE
chi "用于分区%`s的错误参数:'%s'的错误值"
eng "Wrong parameters for partitioned %`s: wrong value for '%s'"
spa "Parámetros equivocados para particionado %`s: valor equivocado para '%s'"
+ sw "Vigezo visivyo sahihi vya kugawanywa %`s: thamani isiyo sahihi ya '%s'"
ER_VERS_WRONG_PARTS
chi "%`s的错误分区:必须至少有一个HISTORY,只能有一个CURRENT"
eng "Wrong partitions for %`s: must have at least one HISTORY and exactly one last CURRENT"
spa "Particiones equivocadas para %`s: debe de tener al menos una HISTORY y exactamente un último CURRENT"
+ sw "Vizigeu visivyo sahihi vya %`s: lazima viwe na angalau HISTORY moja na CURRENT moja ya mwisho tu"
ER_VERS_NO_TRX_ID
chi "TRX_ID%llu在`mysql.transaction_registry`中找不到"
eng "TRX_ID %llu not found in `mysql.transaction_registry`"
spa "TRX_ID %llu no hallado en `mysql.transaction_registry`"
+ sw "TRX_ID %llu haipatikani katika `mysql.transaction_registry`"
ER_VERS_ALTER_SYSTEM_FIELD
chi "无法更改系统版本配置字段%`s"
eng "Can not change system versioning field %`s"
spa "No puedo cambiar campo de versionado de sistema %`s"
+ sw "Haiwezi kubadilisha sehemu ya toleo la mfumo %`s"
ER_DROP_VERSIONING_SYSTEM_TIME_PARTITION
chi "无法删除由SYSTEM_TIME分区的表%`s的系统版本"
eng "Can not DROP SYSTEM VERSIONING for table %`s partitioned BY SYSTEM_TIME"
spa "No puedo DROP SYSTEM VERSIONING para la tabla %`s particionada BY SYSTEM_TIME"
+ sw "Haiwezi kufanya DROP SYSTEM VERSIONING kwa jedwali %`s lililogawanywa kwa BY SYSTEM_TIME"
ER_VERS_DB_NOT_SUPPORTED
chi "不支持%`s数据库中的系统版本化表"
eng "System-versioned tables in the %`s database are not supported"
spa "No se soportan las tablas versionadas del sistema en la base de datos %`s"
+ sw "Jedwali za toleo la mfumo katika hifadhidata ya %`s haziauniwi"
ER_VERS_TRT_IS_DISABLED
chi "事务注册表已禁用"
eng "Transaction registry is disabled"
spa "El registro de transaciones está desactivado"
+ sw "Usajili wa muamala umezimwa"
ER_VERS_DUPLICATE_ROW_START_END
chi "重复行%s列%`s"
eng "Duplicate ROW %s column %`s"
spa "Duplicada FILA %s columna %`s"
+ sw "Safu mlalo (ROW) %s safu wima%`s rudufu"
ER_VERS_ALREADY_VERSIONED
chi "表%`s已经是系统版本的"
eng "Table %`s is already system-versioned"
spa "La tabla %`s ya es versionada del sistema"
+ sw "Jedwali %`s tayari ni la toleo la mfumo"
ER_UNUSED_24
eng "You should never see it"
spa "Nunca debería vd de ver esto"
+ sw "Hupaswi kuiona kamwe"
ER_VERS_NOT_SUPPORTED
chi "系统版本的表不支持%s"
eng "System-versioned tables do not support %s"
spa "Las tablas versionadas del sistema no soportan %s"
+ sw "Jedwali za toleo la mfumo haziauniwi %s"
ER_VERS_TRX_PART_HISTORIC_ROW_NOT_SUPPORTED
chi "事务 - 精确的系统 - 版本的表不支持按行开始或行末端分区"
eng "Transaction-precise system-versioned tables do not support partitioning by ROW START or ROW END"
spa "Las tablas versionadas del sistemas de transacción precisa no soportan particionado mediante ROW START o ROW END"
+ sw "Jedwali za muamala maalum zilizo za toleo la mfumo haziauni kugawanya kwa ROW START au ROW END"
ER_INDEX_FILE_FULL
chi "表'%-.192s'的索引文件已满"
eng "The index file for table '%-.192s' is full"
spa "El fichero/archivo índice para la tabla '%-.192s' está lleno"
+ sw "Faili ya faharasa ya jedwali '%-.192s' imejaa"
ER_UPDATED_COLUMN_ONLY_ONCE
chi "列%`s.%`s在单个更新语句中不能更换一次"
eng "The column %`s.%`s cannot be changed more than once in a single UPDATE statement"
spa "La columna %`s.%`s no se pude cambiar más de ua vez en una sentencia UPDATE única"
+ sw "Safu wima %`s.%`s haiwezi kubadilishwa zaidi ya mara moja katika taarifa moja ya UPDATE"
ER_EMPTY_ROW_IN_TVC
chi "在此上下文中,表值构造函数不允许在没有元素的行"
eng "Row with no elements is not allowed in table value constructor in this context"
spa "Fila sin elementos no se permite en constructor de valor de tabla en este contexto"
+ sw "Safu isiyo na vipengee hairuhusiwi katika mjenzi wa thamani ya jedwali katika muktadha huu"
ER_VERS_QUERY_IN_PARTITION
chi "表%`s的SYSTEM_TIME分区不支持历史查询"
eng "SYSTEM_TIME partitions in table %`s does not support historical query"
spa "Las particiones SYSTEM_TIME en la tabla %`s no soportan consulta (query) histórica"
+ sw "Vizigeu vya SYSTEM_TIME katika jedwali %`s haziauni hoja ya kihistoria"
ER_KEY_DOESNT_SUPPORT
chi "%s索引%`s不支持此操作"
eng "%s index %`s does not support this operation"
spa "%s índice %`s no soporta esta operación"
+ sw "%s faharasa %`s haiauni utendakazi huu"
ER_ALTER_OPERATION_TABLE_OPTIONS_NEED_REBUILD
chi "更改表选项需要将要重建的表格重建"
eng "Changing table options requires the table to be rebuilt"
spa "Cambiar las opciones de tabla requiere que la tabla sea reconstruida"
+ sw "Kubadilisha chaguzi za jedwali kunahitaji jedwali kujengwa upya"
ER_BACKUP_LOCK_IS_ACTIVE
chi "由于您在运行BACKUP STAGE,无法执行命令"
eng "Can't execute the command as you have a BACKUP STAGE active"
spa "No puedo ejecutar el comando cuando vd tiene activo un BACKUP STAGE"
+ sw "Haiwezi kutekeleza amri kwani una BACKUP STAGE (HATUA YA BACKUP) inayotumika"
ER_BACKUP_NOT_RUNNING
chi "您必须启动备份“备份阶段开始”"
eng "You must start backup with \"BACKUP STAGE START\""
spa "Vd debe de arracar respaldo mediante \"BACKUP STAGE START\""
+ sw "Lazima uanze kuhifadhi nakala kwa \"BACKUP STAGE START\""
ER_BACKUP_WRONG_STAGE
chi "备份阶段'%s'相同或在当前备份阶段'%s'之前"
eng "Backup stage '%s' is same or before current backup stage '%s'"
spa "La fase de respaldo '%s' es la misma o anterior a la fase de respaldo actual '%s'"
+ sw "Hatua ya kuhifadhi nakala '%s' ni sawa au kabla ya hatua ya sasa ya kuhifadhi '%s'"
ER_BACKUP_STAGE_FAILED
chi "备份阶段'%s'失败"
eng "Backup stage '%s' failed"
spa "La fase de respaldo '%s' ha fallado"
+ sw "Hatua ya kuhifadhi nakala '%s' imeshindwa"
ER_BACKUP_UNKNOWN_STAGE
chi "未知备份阶段:'%s'。阶段应该是START,FLUSH,BLOCK_DDL,BLOCK_COMIT或END之一"
eng "Unknown backup stage: '%s'. Stage should be one of START, FLUSH, BLOCK_DDL, BLOCK_COMMIT or END"
spa "Fase de respaldo desconocida: '%s'. La fase debería de ser una de START, FLUSH, BLOCK_DDL, BLOCK_COMMIT o END"
+ sw "Hatua ya kuhifadhi nakala isiyojulikana: '%s'. Hatua inapaswa kuwa moja ya START, FLUSH, BLOCK_DDL, BLOCK_COMMIT au END"
ER_USER_IS_BLOCKED
chi "由于凭证错误太多,用户被阻止;用'FLUSH PRIVILEGES'解锁"
eng "User is blocked because of too many credential errors; unblock with 'FLUSH PRIVILEGES'"
spa "El usuario está bloqueado a causa de demasiados errores de credenciales; desbloquee mediante 'FLUSH PRIVILEGES'"
+ sw "Mtumiaji amezuiwa kwa sababu ya hitilafu nyingi za kitambulisho; ondoa kizuizi kwa 'FLUSH PRIVILEGES'"
ER_ACCOUNT_HAS_BEEN_LOCKED
chi "访问拒绝,此帐户已锁定"
eng "Access denied, this account is locked"
rum "Acces refuzat, acest cont este blocat"
spa "Acceso denegado, esta cuenta está bloqueada"
+ sw "Ufikiaji umekataliwa, akaunti hii imefungwa"
ER_PERIOD_TEMPORARY_NOT_ALLOWED
chi "应用程序时间段表不能临时"
eng "Application-time period table cannot be temporary"
spa "Una tabla de período de momento-de-aplicación no puede ser temporal"
+ sw "Jedwali la kipindi cha muda wa ombi haliwezi kuwa la muda"
ER_PERIOD_TYPES_MISMATCH
chi "%`s的期间的字段有不同的类型"
eng "Fields of PERIOD FOR %`s have different types"
spa "Los campos de PERIOD FOR %`s tienen tipos diferentes"
+ sw "Sehemu za PERIOD FOR %`s zina aina tofauti"
ER_MORE_THAN_ONE_PERIOD
chi "无法指定多个应用程序时间段"
eng "Cannot specify more than one application-time period"
spa "No se puede especificar más de un período de momento de aplicación"
+ sw "Haiwezi kubainisha zaidi ya kipindi kimoja cha muda wa maombi"
ER_PERIOD_FIELD_WRONG_ATTRIBUTES
chi "期间字段%`s不能是%s"
eng "Period field %`s cannot be %s"
spa "El campo de período %`s no puede ser %s"
+ sw "Sehemu ya kipindi %`s haiwezi kuwa %s"
ER_PERIOD_NOT_FOUND
chi "期间%`s未在表中找到"
eng "Period %`s is not found in table"
spa "El período %`s no se ha hallado en la tabla"
+ sw "Kipindi %`s hakipatikani kwenye jedwali"
ER_PERIOD_COLUMNS_UPDATED
chi "列%`s在更新集列表中指定的周期%`s中使用"
eng "Column %`s used in period %`s specified in update SET list"
spa "La columna %`s usada en período %`s especificado en lista de actualizar SET"
+ sw "Safuwima %`s inayotumika katika kipindi %`s iliyobainishwa katika orodha ya sasisho la SET"
ER_PERIOD_CONSTRAINT_DROP
chi "无法DROP CONSTRAINT `%s`。使用DROP PERIOD `%s`"
eng "Can't DROP CONSTRAINT `%s`. Use DROP PERIOD `%s` for this"
spa "No puedo DROP CONSTRAINT `%s`. Use DROP PERIOD `%s` para esto"
+ sw "Haiwezi kufanya DROP CONSTRAINT kwa `%s`. Tumia DROP PERIOD `%s` kwa hili"
ER_TOO_LONG_KEYPART 42000 S1009
chi "指定的索引部分太长;最大索引部分长度为 %u 个字节"
eng "Specified key part was too long; max key part length is %u bytes"
spa "La parte de clave especificada es demasiado larga; el tamaño máximo de la parte de clave es de %u bytes"
+ sw "Sehemu ya ufunguo iliyoainishwa ilikuwa ndefu sana; urefu kuu wa sehemu ya funguo ni baiti %u"
ER_TOO_LONG_DATABASE_COMMENT
eng "Comment for database '%-.64s' is too long (max = %u)"
spa "El comentario para la base de datos '%-.64s' es demasiado largo (máx = %u)"
+ sw "Maoni kwa hifadhidata '% -.64s' ni ndefu sana (max = %u)"
ER_UNKNOWN_DATA_TYPE
eng "Unknown data type: '%-.64s'"
spa "Tipo de datos desconocido: '%-.64s'"
+ sw "Aina ya data isiyojulikana: '% -.64s'"
ER_UNKNOWN_OPERATOR
eng "Operator does not exist: '%-.128s'"
spa "El operador no existe: '%-.128s'"
+ sw "Opereta haipo: '% -.128s'"
ER_UNUSED_29
eng "You should never see it"
+ sw "Hupaswi kuiona kamwe"
ER_PART_STARTS_BEYOND_INTERVAL
eng "%`s: STARTS is later than query time, first history partition may exceed INTERVAL value"
spa "%`s: STARTS es posterior al momento de consulta (query), la primera partición de historia puede exceder el valor INTERVAL"
+ sw "%`s: STARTS ni ya baadaye kuliko muda wa hoja, kizigeu cha kwanza ya historia inaweza kuzidi thamani ya INTERVAL"
ER_GALERA_REPLICATION_NOT_SUPPORTED
eng "Galera replication not supported"
spa "La replicación en Galera no está soportada"
+ sw "Marudio ya Galera hayatumiki"
ER_LOAD_INFILE_CAPABILITY_DISABLED
eng "The used command is not allowed because the MariaDB server or client has disabled the local infile capability"
rum "Comanda folosită nu este permisă deoarece clientul sau serverul MariaDB a dezactivat această capabilitate"
spa "El comando usado no está permitido porque el servidor MariaDB o el cliente han desactivado la capacidad 'local infile'"
+ sw "Amri iliyotumika hairuhusiwi kwa sababu seva ya MariaDB au mteja amezima uwezo wa faili wa ndani"
ER_NO_SECURE_TRANSPORTS_CONFIGURED
eng "No secure transports are configured, unable to set --require_secure_transport=ON"
spa "No se han configurado transportes seguros, imposible poner --require_secure_transport=ON"
+ sw "Hakuna usafiri salama uliosanidiwa, hauwezi kuweka --require_secure_transport=ON"
ER_SLAVE_IGNORED_SHARED_TABLE
eng "Slave SQL thread ignored the '%s' because table is shared"
ger "Slave-SQL-Thread hat die Abfrage '%s' ignoriert"
nla "Slave SQL thread negeerde de query '%s'"
por "Slave SQL thread ignorado a consulta devido '%s'"
spa "Hilo (thread) SQL esclavo ignoró la '%s' porque la tabla está compartida"
+ sw "Uzi wa SQL wa Mtumwa ulipuuza '%s' kwa sababu jedwali limeshirikiwa"
swe "Slav SQL tråden ignorerade '%s' pga tabellen är delad"
ER_NO_AUTOINCREMENT_WITH_UNIQUE
+ sw "Safuwima ya AUTO_INCREMENT %`s haiwezi kutumika katika faharasa ya UNIQUE %`s"
eng "AUTO_INCREMENT column %`s cannot be used in the UNIQUE index %`s"
spa "La columna %'s con AUTO_INCREMENT no se puede usar en índice UNIQUE %`s"
ER_KEY_CONTAINS_PERIOD_FIELDS
eng "Key %`s cannot explicitly include column %`s"
spa "La clave %`s no puede incluir de forma explícita la columna %`s"
+ sw "Ufunguo %`s hauwezi kujumuisha safu wima %`s waziwazi"
ER_KEY_CANT_HAVE_WITHOUT_OVERLAPS
eng "Key %`s cannot have WITHOUT OVERLAPS"
spa "La clave %`s no puede tener WITHOUT OVERLAPS"
+ sw "Ufunguo %`s hauwezi kuwa na WITHOUT OVERLAPS"
ER_NOT_ALLOWED_IN_THIS_CONTEXT
eng "'%-.128s' is not allowed in this context"
spa "'%-.128s' no está permitido en este contexto"
+ sw "'%-.128s' hairuhusiwi katika muktadha huu"
ER_DATA_WAS_COMMITED_UNDER_ROLLBACK
eng "Engine %s does not support rollback. Changes were committed during rollback call"
spa "El motor %s no soporta retroceso (rollback). Los cambios se acometieron (commit) durante la llamada a retroceso (rollback)"
+ sw "Injini %s haiauni urejeshaji. Mabadiliko yalifanyika wakati wa utekelezaji wa kurejesha"
ER_PK_INDEX_CANT_BE_IGNORED
eng "A primary key cannot be marked as IGNORE"
spa "Una clave primaria no se puede marcar como IGNORE"
+ sw "Ufunguo msingi hauwezi kutiwa alama kuwa IGNORE (PUUZA)"
ER_BINLOG_UNSAFE_SKIP_LOCKED
eng "SKIP LOCKED makes this statement unsafe"
spa "SKIP LOCKED hace que esta sentencia sea no segura"
+ sw "SKIP LOCKED hufanya taarifa hii isiwe salama"
ER_JSON_TABLE_ERROR_ON_FIELD
eng "Field '%s' can't be set for JSON_TABLE '%s'."
spa "El campo '%s' no se puede poner para JSON_TABLE '%s'."
+ sw "Sehemu ya '%s' haiwezi kuwekwa kwa JSON_TABLE '%s'."
ER_JSON_TABLE_ALIAS_REQUIRED
eng "Every table function must have an alias."
spa "Cada función de tabla debe de tener un alias."
+ sw "Kila kitendakazi cha jedwali lazima iwe na lakabu."
ER_JSON_TABLE_SCALAR_EXPECTED
eng "Can't store an array or an object in the scalar column '%s' of JSON_TABLE '%s'."
spa "No puedo guardar un arreglo o un objeto en la columna escalar '%s' de JSON_TABLE '%s'."
+ sw "Haiwezi kuhifadhi safu au kitu katika safu wima ya '%s' ya JSON_TABLE '%s'."
ER_JSON_TABLE_MULTIPLE_MATCHES
eng "Can't store multiple matches of the path in the column '%s' of JSON_TABLE '%s'."
spa "No puedo guardar múltiples coincidencias de la ruta en la columna '%s' de JSON_TABLE '%s'."
+ sw "Haiwezi kuhifadhi mechi nyingi za njia katika safu wima ya '%s' ya JSON_TABLE '%s'."
ER_WITH_TIES_NEEDS_ORDER
eng "FETCH ... WITH TIES requires ORDER BY clause to be present"
spa "FETCH ... WITH TIES requiere que esté presente la cláusula ORDER BY"
+ sw "FETCH ... WITH TIES inahitaji kifungu cha ORDER BY kuwepo"
ER_REMOVED_ORPHAN_TRIGGER
eng "Dropped orphan trigger '%-.64s', originally created for table: '%-.192s'"
spa "Eliminado disparador huérfano '%-.64s', creado originálmente para la tabla: '%-.192s'"
+ sw "Kufuta kwa Kichochezi yatima '% -.64s', kilichoundwa awali kwa ajili ya jedwali: '%-.192s'"
ER_STORAGE_ENGINE_DISABLED
eng "Storage engine %s is disabled"
spa "El motor de almacenaje %s está desactivado"
+ sw "Injini ya kuhifadhi %s imezimwa"
WARN_SFORMAT_ERROR
eng "SFORMAT error: %s"
+ sw "kosa la SFORMAT: %s"
ER_PARTITION_CONVERT_SUBPARTITIONED
eng "Convert partition is not supported for subpartitioned table."
+ sw "Ubadilishaji wa kigeuzi hakitauniwi kwa jedwali iliyo na vizigeu vidogo."
ER_PROVIDER_NOT_LOADED
eng "MariaDB tried to use the %s, but its provider plugin is not loaded"
+ sw "MariaDB ilijaribu kutumia %s, lakini programu-jalizi yake ya mtoa huduma haijapakiwa"
ER_JSON_HISTOGRAM_PARSE_FAILED
eng "Failed to parse histogram for table %s.%s: %s at offset %d."
+ sw "Imeshindwa kuchanganua histogramu ya jedwali %s.%s: %s kwenye %d."
ER_SF_OUT_INOUT_ARG_NOT_ALLOWED
eng "OUT or INOUT argument %d for function %s is not allowed here"
+ sw "Hoja ya OUT au INOUT %d ya kitendakazi %s hairuhusiwi hapa"
ER_INCONSISTENT_SLAVE_TEMP_TABLE
eng "Replicated query '%s' table `%s.%s` can not be temporary"
+ sw "Jedwali la swali lililojirudia la '%s' `%s.%s` haliwezi kuwa la muda mfupi"
ER_VERS_HIST_PART_FAILED
eng "Versioned table %`s.%`s: adding HISTORY partition(s) failed"
+ sw "Jedwali lililotolewa %`s.%`s: kuongeza vizigeu vya HISTORY kumeshindwa"
WARN_OPTION_CHANGING
eng "%s is implicitly changing the value of '%s' from '%s' to '%s'"
+ sw "%s inabadilisha thamani ya '%s' kutoka '%s' hadi '%s'"
ER_CM_OPTION_MISSING_REQUIREMENT
eng "CHANGE MASTER TO option '%s=%s' is missing requirement %s"
+ sw "Chaguo la CHANGE MASTER TO chaguo '%s=%s' inakosa mahitaji %s"
ER_SLAVE_STATEMENT_TIMEOUT 70100
eng "Slave log event execution was interrupted (slave_max_statement_time exceeded)"
+ sw "Utekelezaji wa kumbukumbu ya watumwa ulikatizwa (muda wa slave_max_statement umepita)"
+ER_JSON_INVALID_VALUE_FOR_KEYWORD
+ eng "Invalid value for keyword %s"
+ sw "Thamani batili ya neno kuu %s"
+ER_JSON_SCHEMA_KEYWORD_UNSUPPORTED
+ eng "%s keyword is not supported"
+ sw "%s neno kuu halitumiki"
+ER_JSON_NO_VARIABLE_SCHEMA
+ eng "Variable schema is not supported."
diff --git a/sql/share/insert_translations_into_errmsg.py b/sql/share/insert_translations_into_errmsg.py
new file mode 100755
index 00000000..6c567736
--- /dev/null
+++ b/sql/share/insert_translations_into_errmsg.py
@@ -0,0 +1,279 @@
+#!/usr/bin/python3
+import pdb
+import re
+from dataclasses import dataclass
+import bisect
+import argparse
+################################################################################
+# How this script works
+# The script is mainly driven by a state machine that consumes input
+# and produces output "record-by-record"in an iterator-like fashion. Coroutines,
+# are used to consume each of the inputs only when they are needed for each
+# state, assuring proper rate-matching as 3 input sources are utilized to
+# determine the insertion point of the new language, and not all
+# 3 inputs are consumed at the same rate.
+# The following steps are performed by the script to insert translations
+# of the new language into a copy of the errmsg-utf8.txt file:
+# 1. Load the source file and map out the lines in a data structure
+# 2. Start reading the source file line by line.
+# 2.1 For each line you can be in
+# 2.1.1 SEARCHING_FOR_NEXT_HEADER state
+# - In this state, we continually search the incoming
+# lines from the source file for a string starting
+# with a series of capital letters (^[A-Z]+).
+# - Write each line to the output file, which is a copy
+# of 'errmsg-utf8.txt'.
+# - Change the state to CALCULATE_INSERT_POINT if a string matching
+# the previous criteria is found
+# - Take the string starting with capitals and save it in
+# the current_header variable"
+# 2.1.2 CALCULATE_INSERT_POINT state
+# - Go to the data structure for the source file and
+# using te current_header as a key, read out the
+# value part of the structure. The value part should be
+# a list .
+# - Find the insert point for the new language
+# error message based on the list from the previous step.
+# - Change state to PERFORM_INSERT
+# 2.1.3 PERFORM_INSERT state
+# - Read the source file and copy out each line to the output
+# file (the copy of 'errmsg-utf8.txt').
+# - Continue reading the source file and checking if the
+# insert point has been reached. Once it has been reached
+# insert the new language in the output file.
+# - Change state to SEARCHING_FOR_NEXT_HEADER
+################################################################################
+
+class SectionList(list):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.comment_locations = []
+
+
+def read_file(filename):
+ ''' A function that reads a file in one go '''
+ with open(filename, 'r') as f:
+ data = f.read()
+ return data
+
+def obtain_key_value_from_translation_line(translation_match, line):
+ if translation_match :
+ return translation_match.groups()
+ else:
+ return '#', line # Here we assume some other line type
+ #that is not a language type and its translation. Return as is with hash character as key
+
+def map_out_source_data(data):
+ '''
+ Load the source error message file into a navigable data structure (a lists of lists
+ has been chosen to ensure the source order is not disrupted)
+ '''
+ # use a regex to split the data into sections
+ sections = re.split(r'\n(?=[A-Z])', data)
+ # create a dictionary to store the processed data
+ data_dict = {}
+ # process each section
+ for section in sections:
+ if not re.match(r'^[A-Z]+', section):
+ continue
+ # split the section into lines
+ lines = section.split('\n')
+ # the title of the section is the first line
+ title = lines[0].strip()
+ # create a list for the key-value pairs in this section
+ section_list = []
+ comment_list = []
+ prev_key = ''
+ current_line_loc = 0
+ # process each line (except the first one)
+ for line in lines[1:]:
+ # split the line into a key and a value
+ print(line)
+ translation_match = re.match(r'\s*([a-z\-]+) \"(.*)\"', line)
+ key, value = obtain_key_value_from_translation_line(translation_match,line)
+ # add the key-value pair to the section list
+ if key != '#':
+ section_list.append([key, value])
+ prev_key = key
+ elif '#' in value:
+ # Current line in file is a comment, we want to keep
+ # track of its location in the original file
+ comment_list.append(current_line_loc)
+ current_line_loc += 1
+ section_list_with_attributes = SectionList(section_list)
+ section_list_with_attributes.comment_locations = comment_list.copy()
+
+ # add the section list to the main list
+ data_dict[title] = section_list_with_attributes
+ return data_dict
+
+def single_file_reader(input_file_name):
+ with open(input_file_name, 'r') as input_file:
+ for line in input_file:
+ yield line
+
+def single_file_writer(output_file_name):
+ with open(output_file_name, 'w') as output_file:
+ while True:
+ line = yield
+ output_file.write(line)
+
+def double_file_reader(file1, file2):
+ with open(file1, 'r') as f1, open(file2, 'r') as f2:
+ for line1, line2 in zip(f1, f2):
+ yield (line1, line2)
+
+def detect_language(file_name):
+ with open(file_name, 'r') as f:
+ first_line = f.readline()
+ lang = first_line.split()[0]
+ return lang
+
+def detect_leading_whitespace_from_source_lang_file(file_name):
+ with open(file_name, 'r') as f:
+ first_line = f.readline()
+ whitespace = first_line[:len(first_line) - len(first_line.lstrip())]
+ return whitespace
+
+@dataclass
+class StateControlData:
+ """ Class for keeping track of state machine information"""
+ current_state: str = ''
+ current_header: str = ''
+ detected_dest_lang: str = ''
+ whitespace: str = ''
+ insert_point_index: int = 0
+ stop_state_machine: bool = False
+ mapped_input_data: any = None
+ input_reader: any = None
+ output_writer: any = None
+ eng_to_new_lang_translation_mapper: any = None
+
+
+def searching_for_next_header_action(state_machine_data):
+ for input_line in state_machine_data.input_reader:
+ if re.match(r'^[A-Z]+', input_line):
+ state_machine_data.current_header = input_line.strip()
+ state_machine_data.current_state = "CALCULATE_INSERT_POINT"
+ state_machine_data.output_writer.send(input_line)
+ break
+ state_machine_data.output_writer.send(input_line)
+ else:
+ state_machine_data.stop_state_machine = True
+
+ return state_machine_data
+
+def calculate_insert_point_action(state_machine_data):
+ detected_dest_lang = state_machine_data.detected_dest_lang
+ current_header = state_machine_data.current_header
+
+ old_lang_list = state_machine_data.mapped_input_data[current_header]
+
+ # Determine the spot where the new translation should fit in
+ # the list of translations
+ index = bisect.bisect([lang for lang, _ in old_lang_list], detected_dest_lang)
+
+ state_machine_data.insert_point_index = index
+ state_machine_data.current_state = "PERFORM_INSERT"
+
+ return state_machine_data
+
+def finding_insert_point_action(state_machine_data):
+ def adjust_for_comments_occuring_before_insert_point(insert_point_index, comment_locations):
+ for comment_loc in comment_locations:
+ if comment_loc <= insert_point_index:
+ insert_point_index += 1
+ return insert_point_index
+
+ eng_to_new_lang_tuple = next(state_machine_data.eng_to_new_lang_translation_mapper)
+ current_header = state_machine_data.current_header
+ old_lang_list = state_machine_data.mapped_input_data[current_header]
+ index = adjust_for_comments_occuring_before_insert_point(state_machine_data.insert_point_index, old_lang_list.comment_locations)
+ detected_whitespace = state_machine_data.whitespace
+
+
+ for i,elem in enumerate(old_lang_list):
+ if index == i:
+ state_machine_data.output_writer.send(detected_whitespace + eng_to_new_lang_tuple[1])
+
+ input_line = next(state_machine_data.input_reader, None)
+ if input_line is None:
+ pdb.set_trace()
+ state_machine_data.output_writer.send(input_line)
+
+
+ # New lang should be placed last
+ if index >= len(old_lang_list):
+ state_machine_data.output_writer.send(detected_whitespace + eng_to_new_lang_tuple[1])
+ #state_machine_data.output_writer.send("\n") # The lines are stripped so we add a carriage-return
+
+ state_machine_data.current_state = "SEARCHING_FOR_NEXT_HEADER"
+ return state_machine_data
+
+
+def language_inserter(data_dict, english_lang_translations_file, new_lang_translations_file):
+ '''
+ Inserts the new language into a copy of errmsg-utf8.txt, using a state machine to
+ keep track of what step it is to take. Coroutines are used to keep control flow
+ tractable when dealing with 4 separate files
+ '''
+ state_machine = {
+ "SEARCHING_FOR_NEXT_HEADER" : searching_for_next_header_action,
+ "CALCULATE_INSERT_POINT" : calculate_insert_point_action,
+ "PERFORM_INSERT" : finding_insert_point_action
+ }
+
+ state_machine_data = StateControlData()
+
+ state_machine_data.output_writer = single_file_writer('errmsg-utf8-with-new-language.txt')
+ next(state_machine_data.output_writer)
+ state_machine_data.input_reader = single_file_reader('errmsg-utf8.txt')
+ state_machine_data.eng_to_new_lang_translation_mapper = double_file_reader(english_lang_translations_file, new_lang_translations_file)
+
+ state_machine_data.detected_dest_lang = detect_language(new_lang_translations_file)
+ state_machine_data.whitespace = detect_leading_whitespace_from_source_lang_file(english_lang_translations_file)
+ state_machine_data.current_header =''
+ state_machine_data.current_state = "SEARCHING_FOR_NEXT_HEADER"
+ state_machine_data.mapped_input_data = data_dict
+
+ while not state_machine_data.stop_state_machine:
+ current_state = state_machine_data.current_state
+ state_machine_data = state_machine[current_state](state_machine_data)
+
+
+def main():
+ ''' main function '''
+ parser = argparse.ArgumentParser(description='''Given errmsg-utf8.txt,
+ an english language file extracted from errmsg-utf8.txt and another
+ file with translations into a new language from the english language
+ file, reinsert the new language translations into their correct
+ positions in a copy of errmsg-utf8.txt.''')
+ parser.add_argument('errmsg_file', type=str, help='Path to errmsg-utf8.txt')
+ parser.add_argument('english_lang_translations_file', type=str, help='Path to English lang translations file')
+ parser.add_argument('new_lang_translations_file', type=str, help='Path to new lang translations file')
+
+ args = parser.parse_args()
+ errmsg_file = args.errmsg_file
+ english_lang_translations_file = args.english_lang_translations_file
+ new_lang_translations_file = args.new_lang_translations_file
+
+ data = read_file(errmsg_file)
+ data_dict = map_out_source_data(data)
+ print('Original file errmsg-utf8.txt has been successfully mapped into memory.')
+ print('''Now starting insertion process into errmsg-utf8-with-new-language.txt which is
+ a copy of errmsg-utf8.txt''')
+
+ # In case you want to hard code the language source files, uncomment
+ # the below two lines, set the new language file name and disable
+ # argument parsing.
+ #english_lang_translations_file = 'all_english_text_in_errmsg-utf8.txt'
+ #new_lang_translations_file = 'all_swahili_text_in_errmsg-utf8.txt'
+ language_inserter(data_dict, english_lang_translations_file, new_lang_translations_file)
+ print("Insertion of new language translations into errmsg-utf8-with-new-language.txt is done")
+
+# call the main function
+if __name__ == "__main__":
+ main()
+
+
+
diff --git a/sql/simple_tokenizer.h b/sql/simple_tokenizer.h
new file mode 100644
index 00000000..b284dc10
--- /dev/null
+++ b/sql/simple_tokenizer.h
@@ -0,0 +1,85 @@
+/* Copyright (c) 2023, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
+
+#ifndef SIMPLE_TOKENIZER_INCLUDED
+#define SIMPLE_TOKENIZER_INCLUDED
+
+
+class Simple_tokenizer
+{
+ const char *m_ptr;
+ const char *m_end;
+public:
+ Simple_tokenizer(const char *str, size_t length)
+ :m_ptr(str), m_end(str + length)
+ { }
+ const char *ptr() const
+ {
+ return m_ptr;
+ }
+ bool eof() const
+ {
+ return m_ptr >= m_end;
+ }
+ void get_spaces()
+ {
+ for ( ; !eof(); m_ptr++)
+ {
+ if (m_ptr[0] != ' ')
+ break;
+ }
+ }
+ bool is_ident_start(char ch) const
+ {
+ return (ch >= 'a' && ch <= 'z') ||
+ (ch >= 'A' && ch <= 'Z') ||
+ ch == '_';
+ }
+ bool is_ident_body(char ch) const
+ {
+ return is_ident_start(ch) ||
+ (ch >= '0' && ch <= '9');
+ }
+ bool is_ident_start() const
+ {
+ return !eof() && is_ident_start(*m_ptr);
+ }
+ bool is_ident_body() const
+ {
+ return !eof() && is_ident_body(*m_ptr);
+ }
+ LEX_CSTRING get_ident()
+ {
+ get_spaces();
+ if (!is_ident_start())
+ return {m_ptr,0};
+ const char *start= m_ptr++;
+ for ( ; is_ident_body(); m_ptr++)
+ { }
+ LEX_CSTRING res= {start, (size_t) (m_ptr - start)};
+ return res;
+ }
+ bool get_char(char ch)
+ {
+ get_spaces();
+ if (eof() || *m_ptr != ch)
+ return true;
+ m_ptr++;
+ return false;
+ }
+};
+
+
+#endif // SIMPLE_TOKENIZER_INCLUDED
diff --git a/sql/slave.cc b/sql/slave.cc
index 9ac467cc..48be8cd0 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -36,7 +36,6 @@
#include "rpl_filter.h"
#include "repl_failsafe.h"
#include "transaction.h"
-#include <thr_alarm.h>
#include <my_dir.h>
#include <sql_common.h>
#include <errmsg.h>
@@ -159,7 +158,6 @@ failed read"
typedef enum { SLAVE_THD_IO, SLAVE_THD_SQL} SLAVE_THD_TYPE;
static int process_io_rotate(Master_info* mi, Rotate_log_event* rev);
-static int process_io_create_file(Master_info* mi, Create_file_log_event* cev);
static bool wait_for_relay_log_space(Relay_log_info* rli);
static bool io_slave_killed(Master_info* mi);
static bool sql_slave_killed(rpl_group_info *rgi);
@@ -1076,24 +1074,11 @@ terminate_slave_thread(THD *thd,
mysql_mutex_lock(&thd->LOCK_thd_kill);
mysql_mutex_lock(&thd->LOCK_thd_data);
-#ifndef DONT_USE_THR_ALARM
- /*
- Error codes from pthread_kill are:
- EINVAL: invalid signal number (can't happen)
- ESRCH: thread already killed (can happen, should be ignored)
- */
- int err __attribute__((unused))= pthread_kill(thd->real_id, thr_client_alarm);
- DBUG_ASSERT(err != EINVAL);
-#endif
thd->awake_no_mutex(NOT_KILLED);
mysql_mutex_unlock(&thd->LOCK_thd_kill);
mysql_mutex_unlock(&thd->LOCK_thd_data);
- /*
- There is a small chance that slave thread might miss the first
- alarm. To protect againts it, resend the signal until it reacts
- */
struct timespec abstime;
set_timespec(abstime,2);
error= mysql_cond_timedwait(term_cond, term_lock, &abstime);
@@ -1490,20 +1475,6 @@ bool net_request_file(NET* net, const char* fname)
(uchar*) "", 0));
}
-/*
- From other comments and tests in code, it looks like
- sometimes Query_log_event and Load_log_event can have db == 0
- (see rewrite_db() above for example)
- (cases where this happens are unclear; it may be when the master is 3.23).
-*/
-
-const char *print_slave_db_safe(const char* db)
-{
- DBUG_ENTER("*print_slave_db_safe");
-
- DBUG_RETURN((db ? db : ""));
-}
-
#endif /* HAVE_REPLICATION */
bool Sql_cmd_show_slave_status::execute(THD *thd)
@@ -1788,6 +1759,8 @@ static int get_master_version_and_clock(MYSQL* mysql, Master_info* mi)
case 0:
case 1:
case 2:
+ case 3:
+ case 4:
errmsg= err_buff2;
snprintf(err_buff2, sizeof(err_buff2),
"Master reported unrecognized MariaDB version: %s",
@@ -1795,14 +1768,6 @@ static int get_master_version_and_clock(MYSQL* mysql, Master_info* mi)
err_code= ER_SLAVE_FATAL_ERROR;
sprintf(err_buff, ER_DEFAULT(err_code), err_buff2);
break;
- case 3:
- mi->rli.relay_log.description_event_for_queue= new
- Format_description_log_event(1, mysql->server_version);
- break;
- case 4:
- mi->rli.relay_log.description_event_for_queue= new
- Format_description_log_event(3, mysql->server_version);
- break;
default:
/*
Master is MySQL >=5.0. Give a default Format_desc event, so that we can
@@ -1813,7 +1778,8 @@ static int get_master_version_and_clock(MYSQL* mysql, Master_info* mi)
master is 3.23, 4.0, etc.
*/
mi->rli.relay_log.description_event_for_queue= new
- Format_description_log_event(4, mysql->server_version);
+ Format_description_log_event(4, mysql->server_version,
+ mi->rli.relay_log.relay_log_checksum_alg);
break;
}
}
@@ -1872,10 +1838,8 @@ static int get_master_version_and_clock(MYSQL* mysql, Master_info* mi)
until it has received a new FD_m.
*/
- mi->rli.relay_log.description_event_for_queue->checksum_alg=
- mi->rli.relay_log.relay_log_checksum_alg;
- DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->checksum_alg !=
+ DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->used_checksum_alg !=
BINLOG_CHECKSUM_ALG_UNDEF);
DBUG_ASSERT(mi->rli.relay_log.relay_log_checksum_alg !=
BINLOG_CHECKSUM_ALG_UNDEF);
@@ -2548,6 +2512,42 @@ after_set_capability:
goto err;
}
}
+
+ query_str.length(0);
+ if (query_str.append(
+ STRING_WITH_LEN("SET @slave_gtid_until_before_gtids="),
+ system_charset_info) ||
+ query_str.append_ulonglong(mi->rli.is_until_before_gtids))
+ {
+ err_code= ER_OUTOFMEMORY;
+ errmsg=
+ "The slave I/O thread stops because a fatal out-of-memory error "
+ "is encountered when it tries to set "
+ "@slave_gtid_until_before_gtids.";
+ sprintf(err_buff, "%s Error: Out of memory", errmsg);
+ goto err;
+ }
+
+ rc= mysql_real_query(mysql, query_str.ptr(), query_str.length());
+ if (unlikely(rc))
+ {
+ err_code= mysql_errno(mysql);
+ if (is_network_error(err_code))
+ {
+ mi->report(ERROR_LEVEL, err_code, NULL,
+ "Setting @slave_gtid_until_before_gtids failed with "
+ "error: %s", mysql_error(mysql));
+ goto network_err;
+ }
+ else
+ {
+ /* Fatal error */
+ errmsg= "The slave I/O thread stops because a fatal error is "
+ "encountered when it tries to set @slave_gtid_until_before_gtids.";
+ sprintf(err_buff, "%s Error: %s", errmsg, mysql_error(mysql));
+ goto err;
+ }
+ }
}
}
else
@@ -2764,7 +2764,7 @@ static void write_ignored_events_info_to_relay_log(THD *thd, Master_info *mi)
{
DBUG_PRINT("info",("writing a Rotate event to track down ignored events"));
rev->server_id= 0; // don't be ignored by slave SQL thread
- if (unlikely(rli->relay_log.append(rev)))
+ if (unlikely(rli->relay_log.append(rev, rli->relay_log.relay_log_checksum_alg)))
mi->report(ERROR_LEVEL, ER_SLAVE_RELAY_LOG_WRITE_FAILURE, NULL,
ER_THD(thd, ER_SLAVE_RELAY_LOG_WRITE_FAILURE),
"failed to write a Rotate event"
@@ -2777,7 +2777,7 @@ static void write_ignored_events_info_to_relay_log(THD *thd, Master_info *mi)
DBUG_PRINT("info",("writing a Gtid_list event to track down ignored events"));
glev->server_id= 0; // don't be ignored by slave SQL thread
glev->set_artificial_event(); // Don't mess up Exec_Master_Log_Pos
- if (unlikely(rli->relay_log.append(glev)))
+ if (unlikely(rli->relay_log.append(glev, rli->relay_log.relay_log_checksum_alg)))
mi->report(ERROR_LEVEL, ER_SLAVE_RELAY_LOG_WRITE_FAILURE, NULL,
ER_THD(thd, ER_SLAVE_RELAY_LOG_WRITE_FAILURE),
"failed to write a Gtid_list event to the relay log, "
@@ -4949,34 +4949,31 @@ connected:
goto connected;
}
- if (mi->rli.relay_log.description_event_for_queue->binlog_version > 1)
+ /*
+ Register ourselves with the master.
+ */
+ THD_STAGE_INFO(thd, stage_registering_slave_on_master);
+ if (register_slave_on_master(mysql, mi, &suppress_warnings))
{
- /*
- Register ourselves with the master.
- */
- THD_STAGE_INFO(thd, stage_registering_slave_on_master);
- if (register_slave_on_master(mysql, mi, &suppress_warnings))
+ if (!check_io_slave_killed(mi, "Slave I/O thread killed "
+ "while registering slave on master"))
{
- if (!check_io_slave_killed(mi, "Slave I/O thread killed "
- "while registering slave on master"))
- {
- sql_print_error("Slave I/O thread couldn't register on master");
- if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings,
- reconnect_messages[SLAVE_RECON_ACT_REG]))
- goto err;
- }
- else
+ sql_print_error("Slave I/O thread couldn't register on master");
+ if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings,
+ reconnect_messages[SLAVE_RECON_ACT_REG]))
goto err;
- goto connected;
}
- DBUG_EXECUTE_IF("fail_com_register_slave",
- {
- mi->report(ERROR_LEVEL, ER_SLAVE_MASTER_COM_FAILURE, NULL,
- ER(ER_SLAVE_MASTER_COM_FAILURE), "COM_REGISTER_SLAVE",
- "Debug Induced Error");
- goto err;
- });
+ else
+ goto err;
+ goto connected;
}
+ DBUG_EXECUTE_IF("fail_com_register_slave",
+ {
+ mi->report(ERROR_LEVEL, ER_SLAVE_MASTER_COM_FAILURE, NULL,
+ ER(ER_SLAVE_MASTER_COM_FAILURE), "COM_REGISTER_SLAVE",
+ "Debug Induced Error");
+ goto err;
+ });
DBUG_PRINT("info",("Starting reading binary log from master"));
thd->set_command(COM_SLAVE_IO);
@@ -5998,115 +5995,6 @@ err_during_init:
/*
- process_io_create_file()
-*/
-
-static int process_io_create_file(Master_info* mi, Create_file_log_event* cev)
-{
- int error = 1;
- ulong num_bytes;
- bool cev_not_written;
- THD *thd = mi->io_thd;
- NET *net = &mi->mysql->net;
- DBUG_ENTER("process_io_create_file");
-
- if (unlikely(!cev->is_valid()))
- DBUG_RETURN(1);
-
- if (!mi->rpl_filter->db_ok(cev->db))
- {
- skip_load_data_infile(net);
- DBUG_RETURN(0);
- }
- DBUG_ASSERT(cev->inited_from_old);
- thd->file_id = cev->file_id = mi->file_id++;
- thd->variables.server_id = cev->server_id;
- cev_not_written = 1;
-
- if (unlikely(net_request_file(net,cev->fname)))
- {
- sql_print_error("Slave I/O: failed requesting download of '%s'",
- cev->fname);
- goto err;
- }
-
- /*
- This dummy block is so we could instantiate Append_block_log_event
- once and then modify it slightly instead of doing it multiple times
- in the loop
- */
- {
- Append_block_log_event aev(thd,0,0,0,0);
-
- for (;;)
- {
- if (unlikely((num_bytes=my_net_read(net)) == packet_error))
- {
- sql_print_error("Network read error downloading '%s' from master",
- cev->fname);
- goto err;
- }
- if (unlikely(!num_bytes)) /* eof */
- {
- /* 3.23 master wants it */
- net_write_command(net, 0, (uchar*) "", 0, (uchar*) "", 0);
- /*
- If we wrote Create_file_log_event, then we need to write
- Execute_load_log_event. If we did not write Create_file_log_event,
- then this is an empty file and we can just do as if the LOAD DATA
- INFILE had not existed, i.e. write nothing.
- */
- if (unlikely(cev_not_written))
- break;
- Execute_load_log_event xev(thd,0,0);
- xev.log_pos = cev->log_pos;
- if (unlikely(mi->rli.relay_log.append(&xev)))
- {
- mi->report(ERROR_LEVEL, ER_SLAVE_RELAY_LOG_WRITE_FAILURE, NULL,
- ER_THD(thd, ER_SLAVE_RELAY_LOG_WRITE_FAILURE),
- "error writing Exec_load event to relay log");
- goto err;
- }
- mi->rli.relay_log.harvest_bytes_written(&mi->rli.log_space_total);
- break;
- }
- if (unlikely(cev_not_written))
- {
- cev->block = net->read_pos;
- cev->block_len = num_bytes;
- if (unlikely(mi->rli.relay_log.append(cev)))
- {
- mi->report(ERROR_LEVEL, ER_SLAVE_RELAY_LOG_WRITE_FAILURE, NULL,
- ER_THD(thd, ER_SLAVE_RELAY_LOG_WRITE_FAILURE),
- "error writing Create_file event to relay log");
- goto err;
- }
- cev_not_written=0;
- mi->rli.relay_log.harvest_bytes_written(&mi->rli.log_space_total);
- }
- else
- {
- aev.block = net->read_pos;
- aev.block_len = num_bytes;
- aev.log_pos = cev->log_pos;
- if (unlikely(mi->rli.relay_log.append(&aev)))
- {
- mi->report(ERROR_LEVEL, ER_SLAVE_RELAY_LOG_WRITE_FAILURE, NULL,
- ER_THD(thd, ER_SLAVE_RELAY_LOG_WRITE_FAILURE),
- "error writing Append_block event to relay log");
- goto err;
- }
- mi->rli.relay_log.harvest_bytes_written(&mi->rli.log_space_total) ;
- }
- }
- }
- error=0;
-err:
- DBUG_RETURN(error);
-}
-
-
-/*
Start using a new binary log on the master
SYNOPSIS
@@ -6150,25 +6038,10 @@ static int process_io_rotate(Master_info *mi, Rotate_log_event *rev)
mi->events_till_disconnect++;
#endif
- /*
- If description_event_for_queue is format <4, there is conversion in the
- relay log to the slave's format (4). And Rotate can mean upgrade or
- nothing. If upgrade, it's to 5.0 or newer, so we will get a Format_desc, so
- no need to reset description_event_for_queue now. And if it's nothing (same
- master version as before), no need (still using the slave's format).
- */
+ /* this prevents a redundant FDLE in the relay log */
if (mi->rli.relay_log.description_event_for_queue->binlog_version >= 4)
- {
- DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->checksum_alg ==
- mi->rli.relay_log.relay_log_checksum_alg);
-
- delete mi->rli.relay_log.description_event_for_queue;
- /* start from format 3 (MySQL 4.0) again */
- mi->rli.relay_log.description_event_for_queue= new
- Format_description_log_event(3);
- mi->rli.relay_log.description_event_for_queue->checksum_alg=
- mi->rli.relay_log.relay_log_checksum_alg;
- }
+ mi->rli.relay_log.description_event_for_queue->binlog_version= 3;
+
/*
Rotate the relay log makes binlog format detection easier (at next slave
start or mysqlbinlog)
@@ -6177,216 +6050,9 @@ static int process_io_rotate(Master_info *mi, Rotate_log_event *rev)
}
/*
- Reads a 3.23 event and converts it to the slave's format. This code was
- copied from MySQL 4.0.
-*/
-static int queue_binlog_ver_1_event(Master_info *mi, const uchar *buf,
- ulong event_len)
-{
- const char *errmsg = 0;
- ulong inc_pos;
- bool ignore_event= 0;
- uchar *tmp_buf = 0;
- Relay_log_info *rli= &mi->rli;
- DBUG_ENTER("queue_binlog_ver_1_event");
-
- /*
- If we get Load event, we need to pass a non-reusable buffer
- to read_log_event, so we do a trick
- */
- if ((uchar)buf[EVENT_TYPE_OFFSET] == LOAD_EVENT)
- {
- if (unlikely(!(tmp_buf= (uchar*) my_malloc(key_memory_binlog_ver_1_event,
- event_len+1, MYF(MY_WME)))))
- {
- mi->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR, NULL,
- ER(ER_SLAVE_FATAL_ERROR), "Memory allocation failed");
- DBUG_RETURN(1);
- }
- memcpy(tmp_buf,buf,event_len);
- /*
- Create_file constructor wants a 0 as last char of buffer, this 0 will
- serve as the string-termination char for the file's name (which is at the
- end of the buffer)
- We must increment event_len, otherwise the event constructor will not see
- this end 0, which leads to segfault.
- */
- tmp_buf[event_len++]=0;
- int4store(tmp_buf+EVENT_LEN_OFFSET, event_len);
- buf= tmp_buf;
- }
- /*
- This will transform LOAD_EVENT into CREATE_FILE_EVENT, ask the master to
- send the loaded file, and write it to the relay log in the form of
- Append_block/Exec_load (the SQL thread needs the data, as that thread is not
- connected to the master).
- */
- Log_event *ev=
- Log_event::read_log_event(buf, event_len, &errmsg,
- mi->rli.relay_log.description_event_for_queue, 0);
- if (unlikely(!ev))
- {
- sql_print_error("Read invalid event from master: '%s',\
- master could be corrupt but a more likely cause of this is a bug",
- errmsg);
- my_free(tmp_buf);
- DBUG_RETURN(1);
- }
-
- mysql_mutex_lock(&mi->data_lock);
- ev->log_pos= mi->master_log_pos; /* 3.23 events don't contain log_pos */
- switch (ev->get_type_code()) {
- case STOP_EVENT:
- ignore_event= 1;
- inc_pos= event_len;
- break;
- case ROTATE_EVENT:
- if (unlikely(process_io_rotate(mi,(Rotate_log_event*)ev)))
- {
- delete ev;
- mysql_mutex_unlock(&mi->data_lock);
- DBUG_RETURN(1);
- }
- inc_pos= 0;
- break;
- case CREATE_FILE_EVENT:
- /*
- Yes it's possible to have CREATE_FILE_EVENT here, even if we're in
- queue_old_event() which is for 3.23 events which don't comprise
- CREATE_FILE_EVENT. This is because read_log_event() above has just
- transformed LOAD_EVENT into CREATE_FILE_EVENT.
- */
- {
- /* We come here when and only when tmp_buf != 0 */
- DBUG_ASSERT(tmp_buf != 0);
- inc_pos=event_len;
- ev->log_pos+= inc_pos;
- int error = process_io_create_file(mi,(Create_file_log_event*)ev);
- delete ev;
- mi->master_log_pos += inc_pos;
- DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) mi->master_log_pos));
- mysql_mutex_unlock(&mi->data_lock);
- my_free(tmp_buf);
- DBUG_RETURN(error);
- }
- default:
- inc_pos= event_len;
- break;
- }
- if (likely(!ignore_event))
- {
- if (ev->log_pos)
- /*
- Don't do it for fake Rotate events (see comment in
- Log_event::Log_event(const char* buf...) in log_event.cc).
- */
- ev->log_pos+= event_len; /* make log_pos be the pos of the end of the event */
- if (unlikely(rli->relay_log.append(ev)))
- {
- delete ev;
- mysql_mutex_unlock(&mi->data_lock);
- DBUG_RETURN(1);
- }
- rli->relay_log.harvest_bytes_written(&rli->log_space_total);
- }
- delete ev;
- mi->master_log_pos+= inc_pos;
- DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) mi->master_log_pos));
- mysql_mutex_unlock(&mi->data_lock);
- DBUG_RETURN(0);
-}
-
-/*
- Reads a 4.0 event and converts it to the slave's format. This code was copied
- from queue_binlog_ver_1_event(), with some affordable simplifications.
-*/
-static int queue_binlog_ver_3_event(Master_info *mi, const uchar *buf,
- ulong event_len)
-{
- const char *errmsg = 0;
- ulong inc_pos;
- char *tmp_buf = 0;
- Relay_log_info *rli= &mi->rli;
- DBUG_ENTER("queue_binlog_ver_3_event");
-
- /* read_log_event() will adjust log_pos to be end_log_pos */
- Log_event *ev=
- Log_event::read_log_event(buf, event_len, &errmsg,
- mi->rli.relay_log.description_event_for_queue, 0);
- if (unlikely(!ev))
- {
- sql_print_error("Read invalid event from master: '%s',\
- master could be corrupt but a more likely cause of this is a bug",
- errmsg);
- my_free(tmp_buf);
- DBUG_RETURN(1);
- }
- mysql_mutex_lock(&mi->data_lock);
- switch (ev->get_type_code()) {
- case STOP_EVENT:
- goto err;
- case ROTATE_EVENT:
- if (unlikely(process_io_rotate(mi,(Rotate_log_event*)ev)))
- {
- delete ev;
- mysql_mutex_unlock(&mi->data_lock);
- DBUG_RETURN(1);
- }
- inc_pos= 0;
- break;
- default:
- inc_pos= event_len;
- break;
- }
-
- if (unlikely(rli->relay_log.append(ev)))
- {
- delete ev;
- mysql_mutex_unlock(&mi->data_lock);
- DBUG_RETURN(1);
- }
- rli->relay_log.harvest_bytes_written(&rli->log_space_total);
- delete ev;
- mi->master_log_pos+= inc_pos;
-err:
- DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) mi->master_log_pos));
- mysql_mutex_unlock(&mi->data_lock);
- DBUG_RETURN(0);
-}
-
-/*
- queue_old_event()
-
- Writes a 3.23 or 4.0 event to the relay log, after converting it to the 5.0
- (exactly, slave's) format. To do the conversion, we create a 5.0 event from
- the 3.23/4.0 bytes, then write this event to the relay log.
-
- TODO:
- Test this code before release - it has to be tested on a separate
- setup with 3.23 master or 4.0 master
-*/
-
-static int queue_old_event(Master_info *mi, const uchar *buf, ulong event_len)
-{
- DBUG_ENTER("queue_old_event");
-
- switch (mi->rli.relay_log.description_event_for_queue->binlog_version) {
- case 1:
- DBUG_RETURN(queue_binlog_ver_1_event(mi,buf,event_len));
- case 3:
- DBUG_RETURN(queue_binlog_ver_3_event(mi,buf,event_len));
- default: /* unsupported format; eg version 2 */
- DBUG_PRINT("info",("unsupported binlog format %d in queue_old_event()",
- mi->rli.relay_log.description_event_for_queue->binlog_version));
- DBUG_RETURN(1);
- }
-}
-
-/*
queue_event()
- If the event is 3.23/4.0, passes it to queue_old_event() which will convert
- it. Otherwise, writes a 5.0 (or newer) event to the relay log. Then there is
+ Writes a 5.0 (or newer) event to the relay log. Then there is
no format conversion, it's pure read/write of bytes.
So a 5.0.0 slave's relay log can contain events in the slave's format or in
any >=5.0.0 format.
@@ -6417,7 +6083,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
Show-up of FD:s affects checksum_alg at once because
that changes FD_queue.
*/
- enum enum_binlog_checksum_alg checksum_alg=
+ enum_binlog_checksum_alg checksum_alg=
mi->checksum_alg_before_fd != BINLOG_CHECKSUM_ALG_UNDEF ?
mi->checksum_alg_before_fd : mi->rli.relay_log.relay_log_checksum_alg;
@@ -6441,7 +6107,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
{
// checksum behaviour is similar to the pre-checksum FD handling
mi->checksum_alg_before_fd= BINLOG_CHECKSUM_ALG_UNDEF;
- mi->rli.relay_log.description_event_for_queue->checksum_alg=
+ mi->rli.relay_log.description_event_for_queue->used_checksum_alg=
mi->rli.relay_log.relay_log_checksum_alg= checksum_alg=
BINLOG_CHECKSUM_ALG_OFF;
}
@@ -6474,10 +6140,6 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
}
DBUG_ASSERT(((uchar) buf[FLAGS_OFFSET] & LOG_EVENT_ACCEPT_OWN_F) == 0);
- if (mi->rli.relay_log.description_event_for_queue->binlog_version<4 &&
- buf[EVENT_TYPE_OFFSET] != FORMAT_DESCRIPTION_EVENT /* a way to escape */)
- DBUG_RETURN(queue_old_event(mi,buf,event_len));
-
#ifdef ENABLED_DEBUG_SYNC
/*
A (+d,dbug.rows_events_to_delay_relay_logging)-test is supposed to
@@ -6570,8 +6232,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
We detect this case by noticing a change of server_id and in this
case likewise rollback the partially received event group.
*/
- Format_description_log_event fdle(4);
- fdle.checksum_alg= checksum_alg;
+ Format_description_log_event fdle(4, NULL, checksum_alg);
/*
Possible crash is flagged in being created FD' common header
@@ -6603,7 +6264,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
rev.new_log_ident);
}
mysql_mutex_lock(log_lock);
- if (likely(!rli->relay_log.write_event(&fdle) &&
+ if (likely(!rli->relay_log.write_event(&fdle, checksum_alg) &&
!rli->relay_log.flush_and_sync(NULL)))
{
rli->relay_log.harvest_bytes_written(&rli->log_space_total);
@@ -6652,7 +6313,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
event_len - BINLOG_CHECKSUM_LEN);
int4store(&rot_buf[event_len - BINLOG_CHECKSUM_LEN], rot_crc);
DBUG_ASSERT(event_len == uint4korr(&rot_buf[EVENT_LEN_OFFSET]));
- DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->checksum_alg ==
+ DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->used_checksum_alg ==
mi->rli.relay_log.relay_log_checksum_alg);
/* the first one */
DBUG_ASSERT(mi->checksum_alg_before_fd != BINLOG_CHECKSUM_ALG_UNDEF);
@@ -6672,7 +6333,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
int4store(&rot_buf[EVENT_LEN_OFFSET],
uint4korr(&rot_buf[EVENT_LEN_OFFSET]) - BINLOG_CHECKSUM_LEN);
DBUG_ASSERT(event_len == uint4korr(&rot_buf[EVENT_LEN_OFFSET]));
- DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->checksum_alg ==
+ DBUG_ASSERT(mi->rli.relay_log.description_event_for_queue->used_checksum_alg ==
mi->rli.relay_log.relay_log_checksum_alg);
/* the first one */
DBUG_ASSERT(mi->checksum_alg_before_fd != BINLOG_CHECKSUM_ALG_UNDEF);
@@ -6712,11 +6373,11 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
tmp->copy_crypto_data(mi->rli.relay_log.description_event_for_queue);
delete mi->rli.relay_log.description_event_for_queue;
mi->rli.relay_log.description_event_for_queue= tmp;
- if (tmp->checksum_alg == BINLOG_CHECKSUM_ALG_UNDEF)
- tmp->checksum_alg= BINLOG_CHECKSUM_ALG_OFF;
+ if (tmp->used_checksum_alg == BINLOG_CHECKSUM_ALG_UNDEF)
+ tmp->used_checksum_alg= BINLOG_CHECKSUM_ALG_OFF;
/* installing new value of checksum Alg for relay log */
- mi->rli.relay_log.relay_log_checksum_alg= tmp->checksum_alg;
+ mi->rli.relay_log.relay_log_checksum_alg= tmp->used_checksum_alg;
/*
Do not queue any format description event that we receive after a
@@ -6741,7 +6402,7 @@ static int queue_event(Master_info* mi, const uchar *buf, ulong event_len)
*/
inc_pos= uint4korr(buf+LOG_POS_OFFSET) ? event_len : 0;
DBUG_PRINT("info",("binlog format is now %d",
- mi->rli.relay_log.description_event_for_queue->binlog_version));
+ mi->rli.relay_log.description_event_for_queue->binlog_version));
}
break;
@@ -7281,7 +6942,8 @@ dbug_gtid_accept:
rli->relay_log.description_event_for_queue->created= 0;
rli->relay_log.description_event_for_queue->set_artificial_event();
if (rli->relay_log.append_no_lock
- (rli->relay_log.description_event_for_queue))
+ (rli->relay_log.description_event_for_queue,
+ rli->relay_log.relay_log_checksum_alg))
error= ER_SLAVE_RELAY_LOG_WRITE_FAILURE;
else
rli->relay_log.harvest_bytes_written(&rli->log_space_total);
@@ -7294,7 +6956,8 @@ dbug_gtid_accept:
*/
Rotate_log_event fake_rev(mi->master_log_name, 0, mi->master_log_pos, 0);
fake_rev.server_id= mi->master_id;
- if (rli->relay_log.append_no_lock(&fake_rev))
+ if (rli->relay_log.append_no_lock(&fake_rev,
+ rli->relay_log.relay_log_checksum_alg))
error= ER_SLAVE_RELAY_LOG_WRITE_FAILURE;
else
rli->relay_log.harvest_bytes_written(&rli->log_space_total);
@@ -7567,28 +7230,23 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
if (opt_slave_compressed_protocol)
client_flag|= CLIENT_COMPRESS; /* We will use compression */
- mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
- mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
- mysql_options(mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
- (char*) &my_true);
+ mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &slave_net_timeout);
+ mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, &slave_net_timeout);
+ mysql_options(mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY, &my_true);
#ifdef HAVE_OPENSSL
if (mi->ssl)
{
- mysql_ssl_set(mysql,
- mi->ssl_key[0]?mi->ssl_key:0,
- mi->ssl_cert[0]?mi->ssl_cert:0,
- mi->ssl_ca[0]?mi->ssl_ca:0,
- mi->ssl_capath[0]?mi->ssl_capath:0,
- mi->ssl_cipher[0]?mi->ssl_cipher:0);
- mysql_options(mysql, MYSQL_OPT_SSL_CRL,
- mi->ssl_crl[0] ? mi->ssl_crl : 0);
- mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH,
- mi->ssl_crlpath[0] ? mi->ssl_crlpath : 0);
+ mysql_ssl_set(mysql, mi->ssl_key, mi->ssl_cert, mi->ssl_ca, mi->ssl_capath,
+ mi->ssl_cipher);
+ mysql_options(mysql, MYSQL_OPT_SSL_CRL, mi->ssl_crl);
+ mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH, mi->ssl_crlpath);
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
&mi->ssl_verify_server_cert);
}
+ else
#endif
+ mysql->options.use_ssl= 0;
/*
If server's default charset is not supported (like utf16, utf32) as client
@@ -7698,78 +7356,6 @@ static int safe_reconnect(THD* thd, MYSQL* mysql, Master_info* mi,
}
-#ifdef NOT_USED
-MYSQL *rpl_connect_master(MYSQL *mysql)
-{
- Master_info *mi= my_pthread_getspecific_ptr(Master_info*, RPL_MASTER_INFO);
- bool allocated= false;
- my_bool my_true= 1;
- THD *thd;
-
- if (!mi)
- {
- sql_print_error("'rpl_connect_master' must be called in slave I/O thread context.");
- return NULL;
- }
- thd= mi->io_thd;
- if (!mysql)
- {
- if(!(mysql= mysql_init(NULL)))
- {
- sql_print_error("rpl_connect_master: failed in mysql_init()");
- return NULL;
- }
- allocated= true;
- }
-
- /*
- XXX: copied from connect_to_master, this function should not
- change the slave status, so we cannot use connect_to_master
- directly
-
- TODO: make this part a seperate function to eliminate duplication
- */
- mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
- mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
- mysql_options(mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
- (char*) &my_true);
-
-#ifdef HAVE_OPENSSL
- if (mi->ssl)
- {
- mysql_ssl_set(mysql,
- mi->ssl_key[0]?mi->ssl_key:0,
- mi->ssl_cert[0]?mi->ssl_cert:0,
- mi->ssl_ca[0]?mi->ssl_ca:0,
- mi->ssl_capath[0]?mi->ssl_capath:0,
- mi->ssl_cipher[0]?mi->ssl_cipher:0);
- mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
- &mi->ssl_verify_server_cert);
- }
-#endif
-
- mysql_options(mysql, MYSQL_SET_CHARSET_NAME,
- default_charset_info->cs_name.str);
-
- if (mi->user == NULL
- || mi->user[0] == 0
- || io_slave_killed( mi)
- || !mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
- mi->port, 0, 0))
- {
- if (!io_slave_killed( mi))
- sql_print_error("rpl_connect_master: error connecting to master: %s (server_error: %d)",
- mysql_error(mysql), mysql_errno(mysql));
-
- if (allocated)
- mysql_close(mysql); // this will free the object
- return NULL;
- }
- return mysql;
-}
-#endif
-
-
/*
Called when we notice that the current "hot" log got rotated under our feet.
*/
@@ -7781,8 +7367,8 @@ static IO_CACHE *reopen_relay_log(Relay_log_info *rli, const char **errmsg)
DBUG_ASSERT(rli->cur_log_fd == -1);
IO_CACHE *cur_log = rli->cur_log=&rli->cache_buf;
- if ((rli->cur_log_fd=open_binlog(cur_log,rli->event_relay_log_name,
- errmsg)) <0)
+ rli->cur_log_fd= open_binlog(cur_log,rli->event_relay_log_name, errmsg);
+ if (rli->cur_log_fd <0)
DBUG_RETURN(0);
/*
We want to start exactly where we was before:
diff --git a/sql/sp.cc b/sql/sp.cc
index 4f82b983..3c9cd91d 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -65,7 +65,7 @@ ulong Sp_handler_procedure::recursion_depth(THD *thd) const
bool Sp_handler::add_instr_freturn(THD *thd, sp_head *sp,
sp_pcontext *spcont,
- Item *item, LEX *lex) const
+ Item *item, sp_expr_lex *lex) const
{
my_error(ER_SP_BADRETURN, MYF(0));
return true;
@@ -82,7 +82,7 @@ bool Sp_handler::add_instr_preturn(THD *thd, sp_head *sp,
bool Sp_handler_function::add_instr_freturn(THD *thd, sp_head *sp,
sp_pcontext *spcont,
- Item *item, LEX *lex) const
+ Item *item, sp_expr_lex *lex) const
{
return sp->add_instr_freturn(thd, spcont, item, lex);
}
@@ -798,36 +798,41 @@ Sp_handler::db_find_and_cache_routine(THD *thd,
/**
- Silence DEPRECATED SYNTAX warnings when loading a stored procedure
- into the cache.
+ Make a copy of a SQL statement used for creation of a stored routine.
+
+ @param defstr Original SQL statement that is used for creation
+ a stored routine
+ @param sp_mem_root Memory root where a copy of original SQL statement should
+ be placed.
+
+ @return a copy of an original CREATE PROCEDURE/FUNCTION/EVENT/TRIGGER
+ SQL statement wrapped into an instance of LEX_STRING.
+ The data member LEX_STRING.str of returning object is set nullptr
+ in case of error.
*/
-struct Silence_deprecated_warning : public Internal_error_handler
+static LEX_STRING copy_definition_string(String *defstr,
+ MEM_ROOT *sp_mem_root)
{
-public:
- virtual bool handle_condition(THD *thd,
- uint sql_errno,
- const char* sqlstate,
- Sql_condition::enum_warning_level *level,
- const char* msg,
- Sql_condition ** cond_hdl);
-};
+ LEX_STRING definition_string;
-bool
-Silence_deprecated_warning::handle_condition(
- THD *,
- uint sql_errno,
- const char*,
- Sql_condition::enum_warning_level *level,
- const char*,
- Sql_condition ** cond_hdl)
-{
- *cond_hdl= NULL;
- if (sql_errno == ER_WARN_DEPRECATED_SYNTAX &&
- *level == Sql_condition::WARN_LEVEL_WARN)
- return TRUE;
+ /*
+ Make a \0-terminated copy of the original SQL statement
+ */
+ definition_string.str= (char*)strmake_root(sp_mem_root, defstr->c_ptr_safe(),
+ defstr->length());
+ if (!definition_string.str)
+ {
+ my_error(ER_OUTOFMEMORY, MYF(ME_FATAL), defstr->length());
+ return LEX_STRING{nullptr, 0};
+ }
- return FALSE;
+ /*
+ Set the length as an original string has
+ */
+ definition_string.length= defstr->length();
+
+ return definition_string;
}
@@ -854,22 +859,39 @@ static sp_head *sp_compile(THD *thd, String *defstr, sql_mode_t sql_mode,
sql_mode_t old_sql_mode= thd->variables.sql_mode;
ha_rows old_select_limit= thd->variables.select_limit;
sp_rcontext *old_spcont= thd->spcont;
- Silence_deprecated_warning warning_handler;
Parser_state parser_state;
thd->variables.sql_mode= sql_mode;
thd->variables.select_limit= HA_POS_ERROR;
- if (parser_state.init(thd, defstr->c_ptr_safe(), defstr->length()))
+ LEX_STRING definition_string;
+
+ lex_start(thd);
+
+ init_sql_alloc(key_memory_sp_head_main_root, &thd->lex->sp_mem_root,
+ MEM_ROOT_BLOCK_SIZE, MEM_ROOT_PREALLOC, MYF(0));
+
+ thd->lex->sp_mem_root_ptr= &thd->lex->sp_mem_root;
+ /*
+ Copy a stored routine definition string to a memory buffer allocated on
+ the stored routine's memory root.
+ */
+ definition_string= copy_definition_string(defstr, thd->lex->sp_mem_root_ptr);
+
+ /*
+ Check for OOM condition
+ */
+ if (!definition_string.str)
+ return nullptr;
+
+ if (parser_state.init(thd, definition_string.str, definition_string.length))
{
thd->variables.sql_mode= old_sql_mode;
thd->variables.select_limit= old_select_limit;
return NULL;
}
- lex_start(thd);
thd->lex->sphead= parent;
- thd->push_internal_handler(&warning_handler);
thd->spcont= 0;
if (parse_sql(thd, & parser_state, creation_ctx) || thd->lex == NULL)
@@ -881,9 +903,9 @@ static sp_head *sp_compile(THD *thd, String *defstr, sql_mode_t sql_mode,
else
{
sp= thd->lex->sphead;
+ sp->set_definition_string(definition_string);
}
- thd->pop_internal_handler();
thd->spcont= old_spcont;
thd->variables.sql_mode= old_sql_mode;
thd->variables.select_limit= old_select_limit;
@@ -1218,7 +1240,7 @@ Sp_handler::sp_create_routine(THD *thd, const sp_head *sp) const
retstr.set_charset(system_charset_info);
/* Grab an exclusive MDL lock. */
- if (lock_object_name(thd, mdl_type, sp->m_db.str, sp->m_name.str))
+ if (lock_object_name(thd, mdl_type, sp->m_db, sp->m_name))
{
my_error(ER_BAD_DB_ERROR, MYF(0), sp->m_db.str);
DBUG_RETURN(TRUE);
@@ -1588,7 +1610,7 @@ Sp_handler::sp_drop_routine(THD *thd,
MDL_key::enum_mdl_namespace mdl_type= get_mdl_type();
/* Grab an exclusive MDL lock. */
- if (lock_object_name(thd, mdl_type, name->m_db.str, name->m_name.str))
+ if (lock_object_name(thd, mdl_type, name->m_db, name->m_name))
DBUG_RETURN(SP_DELETE_ROW_FAILED);
if (!(table= open_proc_table_for_update(thd)))
@@ -1635,7 +1657,7 @@ Sp_handler::sp_update_routine(THD *thd, const Database_qualified_name *name,
MDL_key::enum_mdl_namespace mdl_type= get_mdl_type();
/* Grab an exclusive MDL lock. */
- if (lock_object_name(thd, mdl_type, name->m_db.str, name->m_name.str))
+ if (lock_object_name(thd, mdl_type, name->m_db, name->m_name))
DBUG_RETURN(SP_OPEN_TABLE_FAILED);
if (!(table= open_proc_table_for_update(thd)))
@@ -1736,7 +1758,7 @@ public:
cases.
*/
-bool lock_db_routines(THD *thd, const char *db)
+bool lock_db_routines(THD *thd, const Lex_ident_db_normalized &db)
{
TABLE *table;
uint key_len;
@@ -1745,7 +1767,7 @@ bool lock_db_routines(THD *thd, const char *db)
uchar keybuf[MAX_KEY_LENGTH];
DBUG_ENTER("lock_db_routines");
- DBUG_SLOW_ASSERT(ok_for_lower_case_names(db));
+ DBUG_SLOW_ASSERT(Lex_ident_fs(db).ok_for_lower_case_names());
start_new_trans new_trans(thd);
@@ -1768,7 +1790,7 @@ bool lock_db_routines(THD *thd, const char *db)
DBUG_RETURN(thd->is_error() || thd->killed);
}
- table->field[MYSQL_PROC_FIELD_DB]->store(db, strlen(db), system_charset_info);
+ table->field[MYSQL_PROC_FIELD_DB]->store(db, system_charset_info);
key_len= table->key_info->key_part[0].store_length;
table->field[MYSQL_PROC_FIELD_DB]->get_key_image(keybuf, key_len, Field::itRAW);
int nxtres= table->file->ha_index_init(0, 1);
@@ -1794,7 +1816,7 @@ bool lock_db_routines(THD *thd, const char *db)
sp_type);
if (!sph)
sph= &sp_handler_procedure;
- MDL_REQUEST_INIT(mdl_request, sph->get_mdl_type(), db, sp_name,
+ MDL_REQUEST_INIT(mdl_request, sph->get_mdl_type(), db.str, sp_name,
MDL_EXCLUSIVE, MDL_TRANSACTION);
mdl_requests.push_front(mdl_request);
} while (! (nxtres= table->file->ha_index_next_same(table->record[0], keybuf, key_len)));
@@ -1811,7 +1833,7 @@ bool lock_db_routines(THD *thd, const char *db)
/* We should already hold a global IX lock and a schema X lock. */
DBUG_ASSERT(thd->mdl_context.is_lock_owner(MDL_key::BACKUP, "", "",
MDL_BACKUP_DDL) &&
- thd->mdl_context.is_lock_owner(MDL_key::SCHEMA, db, "",
+ thd->mdl_context.is_lock_owner(MDL_key::SCHEMA, db.str, "",
MDL_EXCLUSIVE));
DBUG_RETURN(thd->mdl_context.acquire_locks(&mdl_requests,
thd->variables.lock_wait_timeout));
@@ -1830,23 +1852,22 @@ error:
*/
int
-sp_drop_db_routines(THD *thd, const char *db)
+sp_drop_db_routines(THD *thd, const LEX_CSTRING &db)
{
TABLE *table;
int ret;
uint key_len;
MDL_savepoint mdl_savepoint= thd->mdl_context.mdl_savepoint();
uchar keybuf[MAX_KEY_LENGTH];
- size_t db_length= strlen(db);
Sql_mode_instant_remove smir(thd, MODE_PAD_CHAR_TO_FULL_LENGTH); // see below
DBUG_ENTER("sp_drop_db_routines");
- DBUG_PRINT("enter", ("db: %s", db));
+ DBUG_PRINT("enter", ("db: %s", db.str));
ret= SP_OPEN_TABLE_FAILED;
if (!(table= open_proc_table_for_update(thd)))
goto err;
- table->field[MYSQL_PROC_FIELD_DB]->store(db, db_length, system_charset_info);
+ table->field[MYSQL_PROC_FIELD_DB]->store(db, system_charset_info);
key_len= table->key_info->key_part[0].store_length;
table->field[MYSQL_PROC_FIELD_DB]->get_key_image(keybuf, key_len, Field::itRAW);
@@ -1874,7 +1895,8 @@ sp_drop_db_routines(THD *thd, const char *db)
enum_sp_type sp_type= (enum_sp_type) table->field[MYSQL_PROC_MYSQL_TYPE]->ptr[0];
/* Drop statistics for this stored program from performance schema. */
- MYSQL_DROP_SP(sp_type, db, static_cast<uint>(db_length), name->ptr(), name->length());
+ MYSQL_DROP_SP(sp_type, db.str, static_cast<uint>(db.length),
+ name->ptr(), name->length());
#endif
}
else
@@ -2269,7 +2291,7 @@ Sp_handler::sp_exist_routines(THD *thd, TABLE_LIST *routines) const
thd->get_stmt_da()->clear_warning_info(thd->query_id);
if (! sp_object_found)
{
- my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "FUNCTION or PROCEDURE",
+ my_error(ER_SP_DOES_NOT_EXIST, MYF(0), type_lex_cstring().str,
routine->table_name.str);
DBUG_RETURN(TRUE);
}
@@ -2561,9 +2583,9 @@ bool Sp_handler::
pkgstr, name->m_name, type()))
{
DBUG_ASSERT(ret == SP_OK);
- pkgname->copy(thd->mem_root, caller->m_db, pkgstr);
*pkg_routine_handler= package_routine_handler();
- if (name->make_package_routine_name(thd->mem_root, pkgstr, name->m_name))
+ if (pkgname->copy_sp_name_internal(thd->mem_root, caller->m_db, pkgstr) ||
+ name->make_package_routine_name(thd->mem_root, pkgstr, name->m_name))
return true;
}
return ret != SP_OK;
@@ -2606,7 +2628,7 @@ Sp_handler::sp_resolve_package_routine(THD *thd,
const Sp_handler **pkg_routine_handler,
Database_qualified_name *pkgname) const
{
- if (!thd->db.length || !(thd->variables.sql_mode & MODE_ORACLE))
+ if (!thd->db.length)
return false;
return name->m_explicit_name ?
diff --git a/sql/sp.h b/sql/sp.h
index 698b576e..2de2d130 100644
--- a/sql/sp.h
+++ b/sql/sp.h
@@ -35,6 +35,7 @@ class sp_head;
class sp_package;
class sp_pcontext;
class sp_name;
+class sp_expr_lex;
class Database_qualified_name;
struct st_sp_chistics;
class Stored_program_creation_ctx;
@@ -156,6 +157,8 @@ public:
}
virtual enum_sp_type type() const= 0;
virtual LEX_CSTRING type_lex_cstring() const= 0;
+ virtual enum_sql_command sqlcom_create() const= 0;
+ virtual enum_sql_command sqlcom_drop() const= 0;
virtual LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const
{
static LEX_CSTRING m_empty_body= {STRING_WITH_LEN("???")};
@@ -185,7 +188,7 @@ public:
}
virtual bool add_instr_freturn(THD *thd, sp_head *sp,
sp_pcontext *spcont,
- Item *item, LEX *lex) const;
+ Item *item, sp_expr_lex *lex) const;
virtual bool add_instr_preturn(THD *thd, sp_head *sp,
sp_pcontext *spcont) const;
@@ -255,6 +258,8 @@ public:
static LEX_CSTRING m_type_str= { STRING_WITH_LEN("PROCEDURE")};
return m_type_str;
}
+ enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_PROCEDURE; }
+ enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_PROCEDURE; }
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const;
const char *show_create_routine_col1_caption() const
{
@@ -305,6 +310,8 @@ public:
static LEX_CSTRING m_type_str= { STRING_WITH_LEN("FUNCTION")};
return m_type_str;
}
+ enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_FUNCTION; }
+ enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_FUNCTION; }
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const;
const char *show_create_routine_col1_caption() const
{
@@ -324,7 +331,7 @@ public:
HASH *get_priv_hash() const;
#endif
bool add_instr_freturn(THD *thd, sp_head *sp, sp_pcontext *spcont,
- Item *item, LEX *lex) const;
+ Item *item, sp_expr_lex *lex) const;
};
@@ -374,6 +381,8 @@ public:
static LEX_CSTRING m_type_str= {STRING_WITH_LEN("PACKAGE")};
return m_type_str;
}
+ enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_PACKAGE; }
+ enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_PACKAGE; }
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const
{
static LEX_CSTRING m_empty_body= {STRING_WITH_LEN("BEGIN END")};
@@ -407,6 +416,8 @@ public:
static LEX_CSTRING m_type_str= {STRING_WITH_LEN("PACKAGE BODY")};
return m_type_str;
}
+ enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_PACKAGE_BODY; }
+ enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_PACKAGE_BODY; }
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const
{
static LEX_CSTRING m_empty_body= {STRING_WITH_LEN("BEGIN END")};
@@ -440,6 +451,8 @@ public:
static LEX_CSTRING m_type_str= { STRING_WITH_LEN("TRIGGER")};
return m_type_str;
}
+ enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_TRIGGER; }
+ enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_TRIGGER; }
MDL_key::enum_mdl_namespace get_mdl_type() const
{
DBUG_ASSERT(0);
@@ -581,7 +594,7 @@ enum
/* Drop all routines in database 'db' */
int
-sp_drop_db_routines(THD *thd, const char *db);
+sp_drop_db_routines(THD *thd, const LEX_CSTRING &db);
/**
Acquires exclusive metadata lock on all stored routines in the
@@ -593,7 +606,7 @@ sp_drop_db_routines(THD *thd, const char *db);
@retval false Success
@retval true Failure
*/
-bool lock_db_routines(THD *thd, const char *db);
+bool lock_db_routines(THD *thd, const Lex_ident_db_normalized &db);
/**
Structure that represents element in the set of stored routines
diff --git a/sql/sp_cache.cc b/sql/sp_cache.cc
index f67ef421..2a777c14 100644
--- a/sql/sp_cache.cc
+++ b/sql/sp_cache.cc
@@ -235,6 +235,7 @@ void sp_cache_flush_obsolete(sp_cache **cp, sp_head **sp)
{
if ((*sp)->sp_cache_version() < Cversion && !(*sp)->is_invoked())
{
+ DBUG_EXECUTE_IF("check_sp_cache_not_invalidated", DBUG_SUICIDE(););
(*cp)->remove(*sp);
*sp= NULL;
}
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index b7a9ba4c..8a6ff571 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -34,6 +34,7 @@
#ifdef USE_PRAGMA_IMPLEMENTATION
#pragma implementation
#endif
+#include "sp_instr.h"
#include "sp_head.h"
#include "sp.h"
#include "sp_pcontext.h"
@@ -50,12 +51,6 @@
#include "wsrep_trans_observer.h"
#endif /* WITH_WSREP */
-/*
- Sufficient max length of printed destinations and frame offsets (all uints).
-*/
-#define SP_INSTR_UINT_MAXLEN 8
-#define SP_STMT_PRINT_MAXLEN 40
-
#include <my_user.h>
#include "mysql/psi/mysql_statement.h"
#include "mysql/psi/mysql_sp.h"
@@ -516,16 +511,16 @@ check_routine_name(const LEX_CSTRING *ident)
*/
sp_head *sp_head::create(sp_package *parent, const Sp_handler *handler,
- enum_sp_aggregate_type agg_type)
+ enum_sp_aggregate_type agg_type, MEM_ROOT *sp_mem_root)
{
MEM_ROOT own_root;
- init_sql_alloc(key_memory_sp_head_main_root, &own_root, MEM_ROOT_BLOCK_SIZE,
- MEM_ROOT_PREALLOC, MYF(0));
- sp_head *sp;
- if (!(sp= new (&own_root) sp_head(&own_root, parent, handler, agg_type)))
- free_root(&own_root, MYF(0));
-
- return sp;
+ if (!sp_mem_root)
+ {
+ init_sql_alloc(key_memory_sp_head_main_root, &own_root, MEM_ROOT_BLOCK_SIZE,
+ MEM_ROOT_PREALLOC, MYF(0));
+ sp_mem_root= &own_root;
+ }
+ return new (sp_mem_root) sp_head(sp_mem_root, parent, handler, agg_type);
}
@@ -537,9 +532,9 @@ void sp_head::destroy(sp_head *sp)
MEM_ROOT own_root= sp->main_mem_root;
DBUG_PRINT("info", ("mem_root %p moved to %p",
&sp->mem_root, &own_root));
+ sp->m_thd= nullptr;
delete sp;
-
free_root(&own_root, MYF(0));
}
}
@@ -576,6 +571,7 @@ sp_head::sp_head(MEM_ROOT *mem_root_arg, sp_package *parent,
m_sp_cache_version(0),
m_creation_ctx(0),
unsafe_flags(0),
+ new_query_arena_is_set(false),
m_created(0),
m_modified(0),
m_recursion_level(0),
@@ -616,14 +612,18 @@ sp_head::sp_head(MEM_ROOT *mem_root_arg, sp_package *parent,
sp_package *sp_package::create(LEX *top_level_lex, const sp_name *name,
- const Sp_handler *sph)
+ const Sp_handler *sph, MEM_ROOT *sp_mem_root)
{
MEM_ROOT own_root;
- init_sql_alloc(key_memory_sp_head_main_root, &own_root, MEM_ROOT_BLOCK_SIZE,
- MEM_ROOT_PREALLOC, MYF(0));
+ if (!sp_mem_root)
+ {
+ init_sql_alloc(key_memory_sp_head_main_root, &own_root, MEM_ROOT_BLOCK_SIZE,
+ MEM_ROOT_PREALLOC, MYF(0));
+ sp_mem_root= &own_root;
+ }
sp_package *sp;
- if (!(sp= new (&own_root) sp_package(&own_root, top_level_lex, name, sph)))
- free_root(&own_root, MYF(0));
+ if (!(sp= new (sp_mem_root) sp_package(sp_mem_root, top_level_lex, name, sph)))
+ free_root(sp_mem_root, MYF(0));
return sp;
}
@@ -708,6 +708,7 @@ bool sp_package::validate_public_routines(THD *thd, sp_package *spec)
if (!found)
{
my_error(ER_PACKAGE_ROUTINE_IN_SPEC_NOT_DEFINED_IN_BODY, MYF(0),
+ lex->sphead->m_handler->type_str(),
ErrConvDQName(lex->sphead).ptr());
return true;
}
@@ -742,6 +743,7 @@ bool sp_package::validate_private_routines(THD *thd)
if (!found)
{
my_error(ER_PACKAGE_ROUTINE_FORWARD_DECLARATION_NOT_DEFINED, MYF(0),
+ lex->sphead->m_handler->type_str(),
ErrConvDQName(lex->sphead).ptr());
return true;
}
@@ -809,12 +811,6 @@ sp_head::init(LEX *lex)
if (!lex->spcont)
DBUG_VOID_RETURN;
- /*
- Altough trg_table_fields list is used only in triggers we init for all
- types of stored procedures to simplify reset_lex()/restore_lex() code.
- */
- lex->trg_table_fields.empty();
-
#ifdef PROTECT_STATEMENT_MEMROOT
executed_counter= 0;
#endif
@@ -823,7 +819,7 @@ sp_head::init(LEX *lex)
}
-void
+bool
sp_head::init_sp_name(const sp_name *spname)
{
DBUG_ENTER("sp_head::init_sp_name");
@@ -832,10 +828,10 @@ sp_head::init_sp_name(const sp_name *spname)
DBUG_ASSERT(spname && spname->m_db.str && spname->m_db.length);
- /* We have to copy strings to get them into the right memroot. */
- Database_qualified_name::copy(&main_mem_root, spname->m_db, spname->m_name);
m_explicit_name= spname->m_explicit_name;
- DBUG_VOID_RETURN;
+ /* We have to copy strings to get them into the right memroot. */
+ DBUG_RETURN(copy_sp_name_internal(&main_mem_root,
+ spname->m_db, spname->m_name));
}
void
@@ -896,7 +892,6 @@ sp_head::set_stmt_end(THD *thd, const char *cpp_body_end)
sp_head::~sp_head()
{
- LEX *lex;
sp_instr *i;
DBUG_ENTER("sp_head::~sp_head");
@@ -915,14 +910,7 @@ sp_head::~sp_head()
THD::lex. It is safe to not update LEX::ptr because further query
string parsing and execution will be stopped anyway.
*/
- while ((lex= (LEX *)m_lex.pop()))
- {
- THD *thd= lex->thd;
- thd->lex->sphead= NULL;
- lex_end(thd->lex);
- delete thd->lex;
- thd->lex= lex;
- }
+ unwind_aux_lexes_and_restore_original_lex();
my_hash_free(&m_sptabs);
my_hash_free(&m_sroutines);
@@ -1018,171 +1006,6 @@ sp_head::create_result_field(uint field_max_length, const LEX_CSTRING *field_nam
}
-int cmp_rqp_locations(Rewritable_query_parameter * const *a,
- Rewritable_query_parameter * const *b)
-{
- return (int)((*a)->pos_in_query - (*b)->pos_in_query);
-}
-
-
-/*
- StoredRoutinesBinlogging
- This paragraph applies only to statement-based binlogging. Row-based
- binlogging does not need anything special like this.
-
- Top-down overview:
-
- 1. Statements
-
- Statements that have is_update_query(stmt) == TRUE are written into the
- binary log verbatim.
- Examples:
- UPDATE tbl SET tbl.x = spfunc_w_side_effects()
- UPDATE tbl SET tbl.x=1 WHERE spfunc_w_side_effect_that_returns_false(tbl.y)
-
- Statements that have is_update_query(stmt) == FALSE (e.g. SELECTs) are not
- written into binary log. Instead we catch function calls the statement
- makes and write it into binary log separately (see #3).
-
- 2. PROCEDURE calls
-
- CALL statements are not written into binary log. Instead
- * Any FUNCTION invocation (in SET, IF, WHILE, OPEN CURSOR and other SP
- instructions) is written into binlog separately.
-
- * Each statement executed in SP is binlogged separately, according to rules
- in #1, with the exception that we modify query string: we replace uses
- of SP local variables with NAME_CONST('spvar_name', <spvar-value>) calls.
- This substitution is done in subst_spvars().
-
- 3. FUNCTION calls
-
- In sp_head::execute_function(), we check
- * If this function invocation is done from a statement that is written
- into the binary log.
- * If there were any attempts to write events to the binary log during
- function execution (grep for start_union_events and stop_union_events)
-
- If the answers are No and Yes, we write the function call into the binary
- log as "SELECT spfunc(<param1value>, <param2value>, ...)"
-
-
- 4. Miscellaneous issues.
-
- 4.1 User variables.
-
- When we call mysql_bin_log.write() for an SP statement, thd->user_var_events
- must hold set<{var_name, value}> pairs for all user variables used during
- the statement execution.
- This set is produced by tracking user variable reads during statement
- execution.
-
- For SPs, this has the following implications:
- 1) thd->user_var_events may contain events from several SP statements and
- needs to be valid after exection of these statements was finished. In
- order to achieve that, we
- * Allocate user_var_events array elements on appropriate mem_root (grep
- for user_var_events_alloc).
- * Use is_query_in_union() to determine if user_var_event is created.
-
- 2) We need to empty thd->user_var_events after we have wrote a function
- call. This is currently done by making
- reset_dynamic(&thd->user_var_events);
- calls in several different places. (TODO cosider moving this into
- mysql_bin_log.write() function)
-
- 4.2 Auto_increment storage in binlog
-
- As we may write two statements to binlog from one single logical statement
- (case of "SELECT func1(),func2()": it is binlogged as "SELECT func1()" and
- then "SELECT func2()"), we need to reset auto_increment binlog variables
- after each binlogged SELECT. Otherwise, the auto_increment value of the
- first SELECT would be used for the second too.
-*/
-
-
-/**
- Replace thd->query{_length} with a string that one can write to
- the binlog.
-
- The binlog-suitable string is produced by replacing references to SP local
- variables with NAME_CONST('sp_var_name', value) calls.
-
- @param thd Current thread.
- @param instr Instruction (we look for Item_splocal instances in
- instr->free_list)
- @param query_str Original query string
-
- @return
- - FALSE on success.
- thd->query{_length} either has been appropriately replaced or there
- is no need for replacements.
- - TRUE out of memory error.
-*/
-
-static bool
-subst_spvars(THD *thd, sp_instr *instr, LEX_STRING *query_str)
-{
- DBUG_ENTER("subst_spvars");
-
- Dynamic_array<Rewritable_query_parameter*> rewritables(PSI_INSTRUMENT_MEM);
- char *pbuf;
- StringBuffer<512> qbuf;
- Copy_query_with_rewrite acc(thd, query_str->str, query_str->length, &qbuf);
-
- /* Find rewritable Items used in this statement */
- for (Item *item= instr->free_list; item; item= item->next)
- {
- Rewritable_query_parameter *rqp= item->get_rewritable_query_parameter();
- if (rqp && rqp->pos_in_query)
- rewritables.append(rqp);
- }
- if (!rewritables.elements())
- DBUG_RETURN(FALSE);
-
- rewritables.sort(cmp_rqp_locations);
-
- thd->query_name_consts= (uint)rewritables.elements();
-
- for (Rewritable_query_parameter **rqp= rewritables.front();
- rqp <= rewritables.back(); rqp++)
- {
- if (acc.append(*rqp))
- DBUG_RETURN(TRUE);
- }
- if (acc.finalize())
- DBUG_RETURN(TRUE);
-
- /*
- Allocate additional space at the end of the new query string for the
- query_cache_send_result_to_client function.
-
- The query buffer layout is:
- buffer :==
- <statement> The input statement(s)
- '\0' Terminating null char
- <length> Length of following current database name 2
- <db_name> Name of current database
- <flags> Flags struct
- */
- size_t buf_len= (qbuf.length() + 1 + QUERY_CACHE_DB_LENGTH_SIZE +
- thd->db.length + QUERY_CACHE_FLAGS_SIZE + 1);
- if ((pbuf= (char *) alloc_root(thd->mem_root, buf_len)))
- {
- char *ptr= pbuf + qbuf.length();
- memcpy(pbuf, qbuf.ptr(), qbuf.length());
- *ptr= 0;
- int2store(ptr+1, thd->db.length);
- }
- else
- DBUG_RETURN(TRUE);
-
- thd->set_query(pbuf, qbuf.length());
-
- DBUG_RETURN(FALSE);
-}
-
-
void Sp_handler_procedure::recursion_level_error(THD *thd,
const sp_head *sp) const
{
@@ -2695,8 +2518,6 @@ sp_head::merge_lex(THD *thd, LEX *oldlex, LEX *sublex)
sublex->set_trg_event_type_for_tables();
- oldlex->trg_table_fields.push_back(&sublex->trg_table_fields);
-
/* If this substatement is unsafe, the entire routine is too. */
DBUG_PRINT("info", ("sublex->get_stmt_unsafe_flags: 0x%x",
sublex->get_stmt_unsafe_flags()));
@@ -2724,6 +2545,22 @@ sp_head::merge_lex(THD *thd, LEX *oldlex, LEX *sublex)
DBUG_RETURN(FALSE);
}
+
+void sp_head::unwind_aux_lexes_and_restore_original_lex()
+{
+ LEX *lex;
+
+ while ((lex= (LEX *)m_lex.pop()))
+ {
+ THD *thd= lex->thd;
+ thd->lex->sphead= NULL;
+ lex_end(thd->lex);
+ delete thd->lex;
+ thd->lex= lex;
+ }
+}
+
+
/**
Put the instruction on the backpatch list, associated with the label.
*/
@@ -2990,6 +2827,7 @@ sp_head::reset_thd_mem_root(THD *thd)
free_list= thd->free_list; // Keep the old list
thd->free_list= NULL; // Start a new one
m_thd= thd;
+ new_query_arena_is_set= true;
DBUG_VOID_RETURN;
}
@@ -3009,7 +2847,7 @@ sp_head::restore_thd_mem_root(THD *thd)
skip restoration of old arena/mem_root if this method has been
already called for this routine.
*/
- if (!m_thd)
+ if (!new_query_arena_is_set)
DBUG_VOID_RETURN;
Item *flist= free_list; // The old list
@@ -3020,10 +2858,41 @@ sp_head::restore_thd_mem_root(THD *thd)
&mem_root, &thd->mem_root));
thd->free_list= flist; // Restore the old one
thd->mem_root= m_thd_root;
- m_thd= NULL;
+ new_query_arena_is_set= false;
+
DBUG_VOID_RETURN;
}
+/**
+ Check Global-DB-procedure access
+
+ @param thd Thread handler
+ @param privilege requested privilege
+ @param sp SP to check
+ @param no_errors FALSE/TRUE - report/don't report error to
+ the client (using my_error() call).
+
+ @retval
+ 0 OK
+ @retval
+ 1 access denied, error is sent to client
+*/
+
+bool check_db_routine_access(THD *thd, privilege_t privilege,
+ const char *db, const char *name,
+ const Sp_handler *sph,
+ bool no_errors)
+{
+ privilege_t db_priv;
+ if (check_access(thd, privilege, db,
+ &db_priv, NULL, 0, no_errors))
+ return 1;
+ if ((db_priv & privilege) == privilege)
+ return 0;
+
+ return check_routine_level_acl(thd, (privilege & ~db_priv),
+ db, name, sph);
+}
/**
Check if a user has access right to a routine.
@@ -3046,7 +2915,10 @@ bool check_show_routine_access(THD *thd, sp_head *sp, bool *full_access)
tables.table_name= MYSQL_PROC_NAME;
tables.alias= MYSQL_PROC_NAME;
- *full_access= ((!check_table_access(thd, SELECT_ACL, &tables, FALSE,
+ *full_access= (!check_db_routine_access(thd, SHOW_CREATE_ROUTINE_ACL,
+ sp->m_db.str, sp->m_name.str,
+ sp->m_handler, TRUE) ||
+ (!check_table_access(thd, SELECT_ACL, &tables, FALSE,
1, TRUE) &&
(tables.grant.privilege & SELECT_ACL) != NO_ACL) ||
/* Check if user owns the routine. */
@@ -3256,6 +3128,39 @@ int sp_head::add_instr(sp_instr *instr)
*/
instr->mem_root= &main_mem_root;
instr->m_lineno= m_thd->m_parser_state->m_lip.yylineno;
+
+ /*
+ Check if SP is a trigger and there are Item_trigger_field objects
+ created on parsing the current SP instruction.
+ */
+ if (m_handler->type() == SP_TYPE_TRIGGER &&
+ m_cur_instr_trig_field_items.elements)
+ {
+ /*
+ Get a pointer to a list of Item_trigger_field objects owned by
+ the current SP instruction. This list is used for storing
+ Item_trigger_field objects that can be created on parsing
+ the SP instruction's statement. If the current SP instruction is not
+ an instance of the class sp_lex_instr or derived class then
+ the value nullptr is returned by the virtual method
+ get_instr_trig_field_list().
+ */
+ SQL_I_List<Item_trigger_field> *instr_trig_fld_list=
+ instr->get_instr_trig_field_list();
+
+ /*
+ If the current SP instruction can store a list of Item_trigger_field
+ objects created on its parsing then move these Item_trigger_field
+ objects to the SP instruction's list.
+ */
+ if (instr_trig_fld_list)
+ {
+ m_cur_instr_trig_field_items.save_and_clear(instr_trig_fld_list);
+ m_trg_table_fields.link_in_list(
+ instr_trig_fld_list,
+ &instr_trig_fld_list->first->next_trig_field_list);
+ }
+ }
return insert_dynamic(&m_instr, (uchar*)&instr);
}
@@ -3288,11 +3193,11 @@ bool sp_head::add_instr_jump_forward_with_backpatch(THD *thd,
bool sp_head::add_instr_freturn(THD *thd, sp_pcontext *spcont,
- Item *item, LEX *lex)
+ Item *item, sp_expr_lex *lex)
{
sp_instr_freturn *i= new (thd->mem_root)
sp_instr_freturn(instructions(), spcont, item,
- m_return_field_def.type_handler(), lex);
+ m_return_field_def.type_handler(), lex);
if (i == NULL || add_instr(i))
return true;
m_flags|= sp_head::HAS_RETURN;
@@ -3357,7 +3262,7 @@ bool sp_head::replace_instr_to_nop(THD *thd, uint ip)
void sp_head::optimize()
{
- List<sp_instr> bp;
+ List<sp_instr_opt_meta> bp;
sp_instr *i;
uint src, dst;
@@ -3379,14 +3284,13 @@ void sp_head::optimize()
if (src != dst)
{
/* Move the instruction and update prev. jumps */
- sp_instr *ibp;
- List_iterator_fast<sp_instr> li(bp);
+ sp_instr_opt_meta *ibp;
+ List_iterator_fast<sp_instr_opt_meta> li(bp);
set_dynamic(&m_instr, (uchar*)&i, dst);
while ((ibp= li++))
{
- sp_instr_opt_meta *im= static_cast<sp_instr_opt_meta *>(ibp);
- im->set_destination(src, dst);
+ ibp->set_destination(src, dst);
}
}
i->opt_move(dst, &bp);
@@ -3547,1489 +3451,6 @@ sp_head::show_routine_code(THD *thd)
#endif // ifndef DBUG_OFF
-/**
- Prepare LEX and thread for execution of instruction, if requested open
- and lock LEX's tables, execute instruction's core function, perform
- cleanup afterwards.
-
- @param thd thread context
- @param nextp out - next instruction
- @param open_tables if TRUE then check read access to tables in LEX's table
- list and open and lock them (used in instructions which
- need to calculate some expression and don't execute
- complete statement).
- @param sp_instr instruction for which we prepare context, and which core
- function execute by calling its exec_core() method.
-
- @note
- We are not saving/restoring some parts of THD which may need this because
- we do this once for whole routine execution in sp_head::execute().
-
- @return
- 0/non-0 - Success/Failure
-*/
-
-int
-sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
- bool open_tables, sp_instr* instr)
-{
- int res= 0;
- DBUG_ENTER("reset_lex_and_exec_core");
-
- /*
- The flag is saved at the entry to the following substatement.
- It's reset further in the common code part.
- It's merged with the saved parent's value at the exit of this func.
- */
- bool parent_modified_non_trans_table=
- thd->transaction->stmt.modified_non_trans_table;
- unsigned int parent_unsafe_rollback_flags=
- thd->transaction->stmt.m_unsafe_rollback_flags;
- thd->transaction->stmt.modified_non_trans_table= FALSE;
- thd->transaction->stmt.m_unsafe_rollback_flags= 0;
-
- DBUG_ASSERT(!thd->derived_tables);
- DBUG_ASSERT(thd->Item_change_list::is_empty());
- /*
- Use our own lex.
- We should not save old value since it is saved/restored in
- sp_head::execute() when we are entering/leaving routine.
- */
- thd->lex= m_lex;
-
- thd->set_query_id(next_query_id());
-
- if (thd->locked_tables_mode <= LTM_LOCK_TABLES)
- {
- /*
- This statement will enter/leave prelocked mode on its own.
- Entering prelocked mode changes table list and related members
- of LEX, so we'll need to restore them.
- */
- if (lex_query_tables_own_last)
- {
- /*
- We've already entered/left prelocked mode with this statement.
- Attach the list of tables that need to be prelocked and mark m_lex
- as having such list attached.
- */
- *lex_query_tables_own_last= prelocking_tables;
- m_lex->mark_as_requiring_prelocking(lex_query_tables_own_last);
- }
- }
-
- reinit_stmt_before_use(thd, m_lex);
-
-#ifndef EMBEDDED_LIBRARY
- /*
- If there was instruction which changed tracking state,
- the result of changed tracking state send to client in OK packed.
- So it changes result sent to client and probably can be different
- independent on query text. So we can't cache such results.
- */
- if ((thd->client_capabilities & CLIENT_SESSION_TRACK) &&
- (thd->server_status & SERVER_SESSION_STATE_CHANGED))
- thd->lex->safe_to_cache_query= 0;
-#endif
-
- Opt_trace_start ots(thd);
- ots.init(thd, m_lex->query_tables, SQLCOM_SELECT, &m_lex->var_list,
- NULL, 0, thd->variables.character_set_client);
-
- Json_writer_object trace_command(thd);
- Json_writer_array trace_command_steps(thd, "steps");
- if (open_tables)
- res= instr->exec_open_and_lock_tables(thd, m_lex->query_tables);
-
- if (likely(!res))
- {
- res= instr->exec_core(thd, nextp);
- DBUG_PRINT("info",("exec_core returned: %d", res));
- }
-
- /*
- Call after unit->cleanup() to close open table
- key read.
- */
- if (open_tables)
- {
- m_lex->unit.cleanup();
- /* Here we also commit or rollback the current statement. */
- if (! thd->in_sub_stmt)
- {
- thd->get_stmt_da()->set_overwrite_status(true);
- thd->is_error() ? trans_rollback_stmt(thd) : trans_commit_stmt(thd);
- thd->get_stmt_da()->set_overwrite_status(false);
- }
- close_thread_tables(thd);
- thd_proc_info(thd, 0);
-
- if (! thd->in_sub_stmt)
- {
- if (thd->transaction_rollback_request)
- {
- trans_rollback_implicit(thd);
- thd->release_transactional_locks();
- }
- else if (! thd->in_multi_stmt_transaction_mode())
- thd->release_transactional_locks();
- else
- thd->mdl_context.release_statement_locks();
- }
- }
- //TODO: why is this here if log_slow_query is in sp_instr_stmt::execute?
- delete_explain_query(m_lex);
-
- if (m_lex->query_tables_own_last)
- {
- /*
- We've entered and left prelocking mode when executing statement
- stored in m_lex.
- m_lex->query_tables(->next_global)* list now has a 'tail' - a list
- of tables that are added for prelocking. (If this is the first
- execution, the 'tail' was added by open_tables(), otherwise we've
- attached it above in this function).
- Now we'll save the 'tail', and detach it.
- */
- lex_query_tables_own_last= m_lex->query_tables_own_last;
- prelocking_tables= *lex_query_tables_own_last;
- *lex_query_tables_own_last= NULL;
- m_lex->query_tables_last= m_lex->query_tables_own_last;
- m_lex->mark_as_requiring_prelocking(NULL);
- }
- thd->rollback_item_tree_changes();
- /*
- Update the state of the active arena if no errors on
- open_tables stage.
- */
- if (likely(!res) || likely(!thd->is_error()))
- thd->stmt_arena->state= Query_arena::STMT_EXECUTED;
-
- /*
- Merge here with the saved parent's values
- what is needed from the substatement gained
- */
- thd->transaction->stmt.modified_non_trans_table |= parent_modified_non_trans_table;
- thd->transaction->stmt.m_unsafe_rollback_flags |= parent_unsafe_rollback_flags;
-
- TRANSACT_TRACKER(add_trx_state_from_thd(thd));
-
- /*
- Unlike for PS we should not call Item's destructors for newly created
- items after execution of each instruction in stored routine. This is
- because SP often create Item (like Item_int, Item_string etc...) when
- they want to store some value in local variable, pass return value and
- etc... So their life time should be longer than one instruction.
-
- cleanup_items() is called in sp_head::execute()
- */
- thd->lex->restore_set_statement_var();
- DBUG_RETURN(res || thd->is_error());
-}
-
-
-int sp_lex_keeper::cursor_reset_lex_and_exec_core(THD *thd, uint *nextp,
- bool open_tables,
- sp_instr *instr)
-{
- Query_arena *old_arena= thd->stmt_arena;
- /*
- Get the Query_arena from the cursor statement LEX, which contains
- the free_list of the query, so new items (if any) are stored in
- the right free_list, and we can cleanup after each cursor operation,
- e.g. open or cursor_copy_struct (for cursor%ROWTYPE variables).
- */
- thd->stmt_arena= m_lex->query_arena();
- int res= reset_lex_and_exec_core(thd, nextp, open_tables, instr);
- cleanup_items(thd->stmt_arena->free_list);
- thd->stmt_arena= old_arena;
- return res;
-}
-
-
-/*
- sp_instr class functions
-*/
-
-int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables)
-{
- int result;
-
- /*
- Check whenever we have access to tables for this statement
- and open and lock them before executing instructions core function.
- */
- if (thd->open_temporary_tables(tables) ||
- check_table_access(thd, SELECT_ACL, tables, FALSE, UINT_MAX, FALSE)
- || open_and_lock_tables(thd, tables, TRUE, 0))
- result= -1;
- else
- result= 0;
- /* Prepare all derived tables/views to catch possible errors. */
- if (!result)
- result= mysql_handle_derived(thd->lex, DT_PREPARE) ? -1 : 0;
-
- return result;
-}
-
-uint sp_instr::get_cont_dest() const
-{
- return (m_ip+1);
-}
-
-
-int sp_instr::exec_core(THD *thd, uint *nextp)
-{
- DBUG_ASSERT(0);
- return 0;
-}
-
-/*
- sp_instr_stmt class functions
-*/
-
-PSI_statement_info sp_instr_stmt::psi_info=
-{ 0, "stmt", 0};
-
-int
-sp_instr_stmt::execute(THD *thd, uint *nextp)
-{
- int res;
- bool save_enable_slow_log;
- const CSET_STRING query_backup= thd->query_string;
- Sub_statement_state backup_state;
- DBUG_ENTER("sp_instr_stmt::execute");
- DBUG_PRINT("info", ("command: %d", m_lex_keeper.sql_command()));
-
- MYSQL_SET_STATEMENT_TEXT(thd->m_statement_psi, m_query.str, static_cast<uint>(m_query.length));
-
-#if defined(ENABLED_PROFILING)
- /* This s-p instr is profilable and will be captured. */
- thd->profiling.set_query_source(m_query.str, m_query.length);
-#endif
-
- save_enable_slow_log= thd->enable_slow_log;
- thd->store_slow_query_state(&backup_state);
-
- if (!(res= alloc_query(thd, m_query.str, m_query.length)) &&
- !(res=subst_spvars(thd, this, &m_query)))
- {
- /*
- (the order of query cache and subst_spvars calls is irrelevant because
- queries with SP vars can't be cached)
- */
- general_log_write(thd, COM_QUERY, thd->query(), thd->query_length());
-
- if (query_cache_send_result_to_client(thd, thd->query(),
- thd->query_length()) <= 0)
- {
- thd->reset_slow_query_state();
- res= m_lex_keeper.reset_lex_and_exec_core(thd, nextp, FALSE, this);
- bool log_slow= !res && thd->enable_slow_log;
-
- /* Finalize server status flags after executing a statement. */
- if (log_slow || thd->get_stmt_da()->is_eof())
- thd->update_server_status();
-
- if (thd->get_stmt_da()->is_eof())
- thd->protocol->end_statement();
-
- query_cache_end_of_result(thd);
-
- mysql_audit_general(thd, MYSQL_AUDIT_GENERAL_STATUS,
- thd->get_stmt_da()->is_error() ?
- thd->get_stmt_da()->sql_errno() : 0,
- command_name[COM_QUERY].str);
-
- if (log_slow)
- log_slow_statement(thd);
-
- /*
- Restore enable_slow_log, that can be changed by a admin or call
- command
- */
- thd->enable_slow_log= save_enable_slow_log;
-
- /* Add the number of rows to thd for the 'call' statistics */
- thd->add_slow_query_state(&backup_state);
- }
- else
- {
- /* change statistics */
- enum_sql_command save_sql_command= thd->lex->sql_command;
- thd->lex->sql_command= SQLCOM_SELECT;
- status_var_increment(thd->status_var.com_stat[SQLCOM_SELECT]);
- thd->update_stats();
- thd->lex->sql_command= save_sql_command;
- *nextp= m_ip+1;
-#ifdef PROTECT_STATEMENT_MEMROOT
- mark_as_qc_used();
-#endif
- }
- thd->set_query(query_backup);
- thd->query_name_consts= 0;
-
- if (likely(!thd->is_error()))
- {
- res= 0;
- thd->get_stmt_da()->reset_diagnostics_area();
- }
- }
-
- DBUG_RETURN(res || thd->is_error());
-}
-
-
-void
-sp_instr_stmt::print(String *str)
-{
- size_t i, len;
-
- /* stmt CMD "..." */
- if (str->reserve(SP_STMT_PRINT_MAXLEN+SP_INSTR_UINT_MAXLEN+8))
- return;
- str->qs_append(STRING_WITH_LEN("stmt "));
- str->qs_append((uint)m_lex_keeper.sql_command());
- str->qs_append(STRING_WITH_LEN(" \""));
- len= m_query.length;
- /*
- Print the query string (but not too much of it), just to indicate which
- statement it is.
- */
- if (len > SP_STMT_PRINT_MAXLEN)
- len= SP_STMT_PRINT_MAXLEN-3;
- /* Copy the query string and replace '\n' with ' ' in the process */
- for (i= 0 ; i < len ; i++)
- {
- char c= m_query.str[i];
- if (c == '\n')
- c= ' ';
- str->qs_append(c);
- }
- if (m_query.length > SP_STMT_PRINT_MAXLEN)
- str->qs_append(STRING_WITH_LEN("...")); /* Indicate truncated string */
- str->qs_append('"');
-}
-
-
-int
-sp_instr_stmt::exec_core(THD *thd, uint *nextp)
-{
- MYSQL_QUERY_EXEC_START(thd->query(),
- thd->thread_id,
- thd->get_db(),
- &thd->security_ctx->priv_user[0],
- (char *)thd->security_ctx->host_or_ip,
- 3);
- int res= mysql_execute_command(thd);
- MYSQL_QUERY_EXEC_DONE(res);
- *nextp= m_ip+1;
- return res;
-}
-
-
-/*
- sp_instr_set class functions
-*/
-
-PSI_statement_info sp_instr_set::psi_info=
-{ 0, "set", 0};
-
-int
-sp_instr_set::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_set::execute");
- DBUG_PRINT("info", ("offset: %u", m_offset));
-
- DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
-}
-
-
-sp_rcontext *sp_instr_set::get_rcontext(THD *thd) const
-{
- return m_rcontext_handler->get_rcontext(thd->spcont);
-}
-
-
-int
-sp_instr_set::exec_core(THD *thd, uint *nextp)
-{
- int res= get_rcontext(thd)->set_variable(thd, m_offset, &m_value);
- *nextp = m_ip+1;
- return res;
-}
-
-void
-sp_instr_set::print(String *str)
-{
- /* set name@offset ... */
- size_t rsrv = SP_INSTR_UINT_MAXLEN+6;
- sp_variable *var = m_ctx->find_variable(m_offset);
- const LEX_CSTRING *prefix= m_rcontext_handler->get_name_prefix();
-
- /* 'var' should always be non-null, but just in case... */
- if (var)
- rsrv+= var->name.length + prefix->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("set "));
- str->qs_append(prefix->str, prefix->length);
- if (var)
- {
- str->qs_append(&var->name);
- str->qs_append('@');
- }
- str->qs_append(m_offset);
- str->qs_append(' ');
- m_value->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-
-/*
- sp_instr_set_field class functions
-*/
-
-int
-sp_instr_set_row_field::exec_core(THD *thd, uint *nextp)
-{
- int res= get_rcontext(thd)->set_variable_row_field(thd, m_offset,
- m_field_offset,
- &m_value);
- *nextp= m_ip + 1;
- return res;
-}
-
-
-void
-sp_instr_set_row_field::print(String *str)
-{
- /* set name@offset[field_offset] ... */
- size_t rsrv= SP_INSTR_UINT_MAXLEN + 6 + 6 + 3;
- sp_variable *var= m_ctx->find_variable(m_offset);
- const LEX_CSTRING *prefix= m_rcontext_handler->get_name_prefix();
- DBUG_ASSERT(var);
- DBUG_ASSERT(var->field_def.is_row());
- const Column_definition *def=
- var->field_def.row_field_definitions()->elem(m_field_offset);
- DBUG_ASSERT(def);
-
- rsrv+= var->name.length + def->field_name.length + prefix->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("set "));
- str->qs_append(prefix);
- str->qs_append(&var->name);
- str->qs_append('.');
- str->qs_append(&def->field_name);
- str->qs_append('@');
- str->qs_append(m_offset);
- str->qs_append('[');
- str->qs_append(m_field_offset);
- str->qs_append(']');
- str->qs_append(' ');
- m_value->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-
-/*
- sp_instr_set_field_by_name class functions
-*/
-
-int
-sp_instr_set_row_field_by_name::exec_core(THD *thd, uint *nextp)
-{
- int res= get_rcontext(thd)->set_variable_row_field_by_name(thd, m_offset,
- m_field_name,
- &m_value);
- *nextp= m_ip + 1;
- return res;
-}
-
-
-void
-sp_instr_set_row_field_by_name::print(String *str)
-{
- /* set name.field@offset["field"] ... */
- size_t rsrv= SP_INSTR_UINT_MAXLEN + 6 + 6 + 3 + 2;
- sp_variable *var= m_ctx->find_variable(m_offset);
- const LEX_CSTRING *prefix= m_rcontext_handler->get_name_prefix();
- DBUG_ASSERT(var);
- DBUG_ASSERT(var->field_def.is_table_rowtype_ref() ||
- var->field_def.is_cursor_rowtype_ref());
-
- rsrv+= var->name.length + 2 * m_field_name.length + prefix->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("set "));
- str->qs_append(prefix);
- str->qs_append(&var->name);
- str->qs_append('.');
- str->qs_append(&m_field_name);
- str->qs_append('@');
- str->qs_append(m_offset);
- str->qs_append("[\"",2);
- str->qs_append(&m_field_name);
- str->qs_append("\"]",2);
- str->qs_append(' ');
- m_value->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-
-/*
- sp_instr_set_trigger_field class functions
-*/
-
-PSI_statement_info sp_instr_set_trigger_field::psi_info=
-{ 0, "set_trigger_field", 0};
-
-int
-sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_set_trigger_field::execute");
- thd->count_cuted_fields= CHECK_FIELD_ERROR_FOR_NULL;
- DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
-}
-
-
-int
-sp_instr_set_trigger_field::exec_core(THD *thd, uint *nextp)
-{
- Abort_on_warning_instant_set aws(thd, thd->is_strict_mode() && !thd->lex->ignore);
- const int res= (trigger_field->set_value(thd, &value) ? -1 : 0);
- *nextp = m_ip+1;
- return res;
-}
-
-void
-sp_instr_set_trigger_field::print(String *str)
-{
- str->append(STRING_WITH_LEN("set_trigger_field "));
- trigger_field->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
- str->append(STRING_WITH_LEN(":="));
- value->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-/*
- sp_instr_opt_meta
-*/
-
-uint sp_instr_opt_meta::get_cont_dest() const
-{
- return m_cont_dest;
-}
-
-
-/*
- sp_instr_jump class functions
-*/
-
-PSI_statement_info sp_instr_jump::psi_info=
-{ 0, "jump", 0};
-
-int
-sp_instr_jump::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_jump::execute");
- DBUG_PRINT("info", ("destination: %u", m_dest));
-
- *nextp= m_dest;
- DBUG_RETURN(0);
-}
-
-void
-sp_instr_jump::print(String *str)
-{
- /* jump dest */
- if (str->reserve(SP_INSTR_UINT_MAXLEN+5))
- return;
- str->qs_append(STRING_WITH_LEN("jump "));
- str->qs_append(m_dest);
-}
-
-uint
-sp_instr_jump::opt_mark(sp_head *sp, List<sp_instr> *leads)
-{
- m_dest= opt_shortcut_jump(sp, this);
- if (m_dest != m_ip+1) /* Jumping to following instruction? */
- marked= 1;
- m_optdest= sp->get_instr(m_dest);
- return m_dest;
-}
-
-uint
-sp_instr_jump::opt_shortcut_jump(sp_head *sp, sp_instr *start)
-{
- uint dest= m_dest;
- sp_instr *i;
-
- while ((i= sp->get_instr(dest)))
- {
- uint ndest;
-
- if (start == i || this == i)
- break;
- ndest= i->opt_shortcut_jump(sp, start);
- if (ndest == dest)
- break;
- dest= ndest;
- }
- return dest;
-}
-
-void
-sp_instr_jump::opt_move(uint dst, List<sp_instr> *bp)
-{
- if (m_dest > m_ip)
- bp->push_back(this); // Forward
- else if (m_optdest)
- m_dest= m_optdest->m_ip; // Backward
- m_ip= dst;
-}
-
-
-/*
- sp_instr_jump_if_not class functions
-*/
-
-PSI_statement_info sp_instr_jump_if_not::psi_info=
-{ 0, "jump_if_not", 0};
-
-int
-sp_instr_jump_if_not::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_jump_if_not::execute");
- DBUG_PRINT("info", ("destination: %u", m_dest));
- DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
-}
-
-
-int
-sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp)
-{
- Item *it;
- int res;
-
- it= thd->sp_prepare_func_item(&m_expr, 1);
- if (! it)
- {
- res= -1;
- }
- else
- {
- res= 0;
- if (! it->val_bool())
- *nextp = m_dest;
- else
- *nextp = m_ip+1;
- }
-
- return res;
-}
-
-
-void
-sp_instr_jump_if_not::print(String *str)
-{
- /* jump_if_not dest(cont) ... */
- if (str->reserve(2*SP_INSTR_UINT_MAXLEN+14+32)) // Add some for the expr. too
- return;
- str->qs_append(STRING_WITH_LEN("jump_if_not "));
- str->qs_append(m_dest);
- str->qs_append('(');
- str->qs_append(m_cont_dest);
- str->qs_append(STRING_WITH_LEN(") "));
- m_expr->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-
-uint
-sp_instr_jump_if_not::opt_mark(sp_head *sp, List<sp_instr> *leads)
-{
- sp_instr *i;
-
- marked= 1;
- if ((i= sp->get_instr(m_dest)))
- {
- m_dest= i->opt_shortcut_jump(sp, this);
- m_optdest= sp->get_instr(m_dest);
- }
- sp->add_mark_lead(m_dest, leads);
- if ((i= sp->get_instr(m_cont_dest)))
- {
- m_cont_dest= i->opt_shortcut_jump(sp, this);
- m_cont_optdest= sp->get_instr(m_cont_dest);
- }
- sp->add_mark_lead(m_cont_dest, leads);
- return m_ip+1;
-}
-
-void
-sp_instr_jump_if_not::opt_move(uint dst, List<sp_instr> *bp)
-{
- /*
- cont. destinations may point backwards after shortcutting jumps
- during the mark phase. If it's still pointing forwards, only
- push this for backpatching if sp_instr_jump::opt_move() will not
- do it (i.e. if the m_dest points backwards).
- */
- if (m_cont_dest > m_ip)
- { // Forward
- if (m_dest < m_ip)
- bp->push_back(this);
- }
- else if (m_cont_optdest)
- m_cont_dest= m_cont_optdest->m_ip; // Backward
- /* This will take care of m_dest and m_ip */
- sp_instr_jump::opt_move(dst, bp);
-}
-
-
-/*
- sp_instr_freturn class functions
-*/
-
-PSI_statement_info sp_instr_freturn::psi_info=
-{ 0, "freturn", 0};
-
-int
-sp_instr_freturn::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_freturn::execute");
- DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
-}
-
-
-int
-sp_instr_freturn::exec_core(THD *thd, uint *nextp)
-{
- /*
- RETURN is a "procedure statement" (in terms of the SQL standard).
- That means, Diagnostics Area should be clean before its execution.
- */
-
- if (!(thd->variables.sql_mode & MODE_ORACLE))
- {
- /*
- Don't clean warnings in ORACLE mode,
- as they are needed for SQLCODE and SQLERRM:
- BEGIN
- SELECT a INTO a FROM t1;
- RETURN 'No exception ' || SQLCODE || ' ' || SQLERRM;
- EXCEPTION WHEN NO_DATA_FOUND THEN
- RETURN 'Exception ' || SQLCODE || ' ' || SQLERRM;
- END;
- */
- Diagnostics_area *da= thd->get_stmt_da();
- da->clear_warning_info(da->warning_info_id());
- }
-
- /*
- Change <next instruction pointer>, so that this will be the last
- instruction in the stored function.
- */
-
- *nextp= UINT_MAX;
-
- /*
- Evaluate the value of return expression and store it in current runtime
- context.
-
- NOTE: It's necessary to evaluate result item right here, because we must
- do it in scope of execution the current context/block.
- */
-
- return thd->spcont->set_return_value(thd, &m_value);
-}
-
-void
-sp_instr_freturn::print(String *str)
-{
- /* freturn type expr... */
- if (str->reserve(1024+8+32)) // Add some for the expr. too
- return;
- str->qs_append(STRING_WITH_LEN("freturn "));
- LEX_CSTRING name= m_type_handler->name().lex_cstring();
- str->qs_append(&name);
- str->qs_append(' ');
- m_value->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-/*
- sp_instr_preturn class functions
-*/
-
-PSI_statement_info sp_instr_preturn::psi_info=
-{ 0, "preturn", 0};
-
-int
-sp_instr_preturn::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_preturn::execute");
- *nextp= UINT_MAX;
- DBUG_RETURN(0);
-}
-
-void
-sp_instr_preturn::print(String *str)
-{
- str->append(STRING_WITH_LEN("preturn"));
-}
-
-/*
- sp_instr_hpush_jump class functions
-*/
-
-PSI_statement_info sp_instr_hpush_jump::psi_info=
-{ 0, "hpush_jump", 0};
-
-int
-sp_instr_hpush_jump::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_hpush_jump::execute");
-
- int ret= thd->spcont->push_handler(this);
-
- *nextp= m_dest;
-
- DBUG_RETURN(ret);
-}
-
-
-void
-sp_instr_hpush_jump::print(String *str)
-{
- /* hpush_jump dest fsize type */
- if (str->reserve(SP_INSTR_UINT_MAXLEN*2 + 21))
- return;
-
- str->qs_append(STRING_WITH_LEN("hpush_jump "));
- str->qs_append(m_dest);
- str->qs_append(' ');
- str->qs_append(m_frame);
-
- switch (m_handler->type) {
- case sp_handler::EXIT:
- str->qs_append(STRING_WITH_LEN(" EXIT"));
- break;
- case sp_handler::CONTINUE:
- str->qs_append(STRING_WITH_LEN(" CONTINUE"));
- break;
- default:
- // The handler type must be either CONTINUE or EXIT.
- DBUG_ASSERT(0);
- }
-}
-
-
-uint
-sp_instr_hpush_jump::opt_mark(sp_head *sp, List<sp_instr> *leads)
-{
- sp_instr *i;
-
- marked= 1;
- if ((i= sp->get_instr(m_dest)))
- {
- m_dest= i->opt_shortcut_jump(sp, this);
- m_optdest= sp->get_instr(m_dest);
- }
- sp->add_mark_lead(m_dest, leads);
-
- /*
- For continue handlers, all instructions in the scope of the handler
- are possible leads. For example, the instruction after freturn might
- be executed if the freturn triggers the condition handled by the
- continue handler.
-
- m_dest marks the start of the handler scope. It's added as a lead
- above, so we start on m_dest+1 here.
- m_opt_hpop is the hpop marking the end of the handler scope.
- */
- if (m_handler->type == sp_handler::CONTINUE)
- {
- for (uint scope_ip= m_dest+1; scope_ip <= m_opt_hpop; scope_ip++)
- sp->add_mark_lead(scope_ip, leads);
- }
-
- return m_ip+1;
-}
-
-
-/*
- sp_instr_hpop class functions
-*/
-
-PSI_statement_info sp_instr_hpop::psi_info=
-{ 0, "hpop", 0};
-
-int
-sp_instr_hpop::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_hpop::execute");
- thd->spcont->pop_handlers(m_count);
- *nextp= m_ip+1;
- DBUG_RETURN(0);
-}
-
-void
-sp_instr_hpop::print(String *str)
-{
- /* hpop count */
- if (str->reserve(SP_INSTR_UINT_MAXLEN+5))
- return;
- str->qs_append(STRING_WITH_LEN("hpop "));
- str->qs_append(m_count);
-}
-
-
-/*
- sp_instr_hreturn class functions
-*/
-
-PSI_statement_info sp_instr_hreturn::psi_info=
-{ 0, "hreturn", 0};
-
-int
-sp_instr_hreturn::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_hreturn::execute");
-
- uint continue_ip= thd->spcont->exit_handler(thd->get_stmt_da());
-
- *nextp= m_dest ? m_dest : continue_ip;
-
- DBUG_RETURN(0);
-}
-
-
-void
-sp_instr_hreturn::print(String *str)
-{
- /* hreturn framesize dest */
- if (str->reserve(SP_INSTR_UINT_MAXLEN*2 + 9))
- return;
- str->qs_append(STRING_WITH_LEN("hreturn "));
- if (m_dest)
- {
- // NOTE: this is legacy: hreturn instruction for EXIT handler
- // should print out 0 as frame index.
- str->qs_append(STRING_WITH_LEN("0 "));
- str->qs_append(m_dest);
- }
- else
- {
- str->qs_append(m_frame);
- }
-}
-
-
-uint
-sp_instr_hreturn::opt_mark(sp_head *sp, List<sp_instr> *leads)
-{
- marked= 1;
-
- if (m_dest)
- {
- /*
- This is an EXIT handler; next instruction step is in m_dest.
- */
- return m_dest;
- }
-
- /*
- This is a CONTINUE handler; next instruction step will come from
- the handler stack and not from opt_mark.
- */
- return UINT_MAX;
-}
-
-
-/*
- sp_instr_cpush class functions
-*/
-
-PSI_statement_info sp_instr_cpush::psi_info=
-{ 0, "cpush", 0};
-
-int
-sp_instr_cpush::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_cpush::execute");
-
- sp_cursor::reset(thd, &m_lex_keeper);
- m_lex_keeper.disable_query_cache();
- thd->spcont->push_cursor(this);
-
- *nextp= m_ip+1;
-
- DBUG_RETURN(false);
-}
-
-
-void
-sp_instr_cpush::print(String *str)
-{
- const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
-
- /* cpush name@offset */
- size_t rsrv= SP_INSTR_UINT_MAXLEN+7;
-
- if (cursor_name)
- rsrv+= cursor_name->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("cpush "));
- if (cursor_name)
- {
- str->qs_append(cursor_name->str, cursor_name->length);
- str->qs_append('@');
- }
- str->qs_append(m_cursor);
-}
-
-
-/*
- sp_instr_cpop class functions
-*/
-
-PSI_statement_info sp_instr_cpop::psi_info=
-{ 0, "cpop", 0};
-
-int
-sp_instr_cpop::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_cpop::execute");
- thd->spcont->pop_cursors(thd, m_count);
- *nextp= m_ip+1;
- DBUG_RETURN(0);
-}
-
-
-void
-sp_instr_cpop::print(String *str)
-{
- /* cpop count */
- if (str->reserve(SP_INSTR_UINT_MAXLEN+5))
- return;
- str->qs_append(STRING_WITH_LEN("cpop "));
- str->qs_append(m_count);
-}
-
-
-/*
- sp_instr_copen class functions
-*/
-
-/**
- @todo
- Assert that we either have an error or a cursor
-*/
-
-PSI_statement_info sp_instr_copen::psi_info=
-{ 0, "copen", 0};
-
-int
-sp_instr_copen::execute(THD *thd, uint *nextp)
-{
- /*
- We don't store a pointer to the cursor in the instruction to be
- able to reuse the same instruction among different threads in future.
- */
- sp_cursor *c= thd->spcont->get_cursor(m_cursor);
- int res;
- DBUG_ENTER("sp_instr_copen::execute");
-
- if (! c)
- res= -1;
- else
- {
- sp_lex_keeper *lex_keeper= c->get_lex_keeper();
- res= lex_keeper->cursor_reset_lex_and_exec_core(thd, nextp, FALSE, this);
- /* TODO: Assert here that we either have an error or a cursor */
- }
- DBUG_RETURN(res);
-}
-
-
-int
-sp_instr_copen::exec_core(THD *thd, uint *nextp)
-{
- sp_cursor *c= thd->spcont->get_cursor(m_cursor);
- int res= c->open(thd);
- *nextp= m_ip+1;
- return res;
-}
-
-void
-sp_instr_copen::print(String *str)
-{
- const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
-
- /* copen name@offset */
- size_t rsrv= SP_INSTR_UINT_MAXLEN+7;
-
- if (cursor_name)
- rsrv+= cursor_name->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("copen "));
- if (cursor_name)
- {
- str->qs_append(cursor_name->str, cursor_name->length);
- str->qs_append('@');
- }
- str->qs_append(m_cursor);
-}
-
-
-/*
- sp_instr_cclose class functions
-*/
-
-PSI_statement_info sp_instr_cclose::psi_info=
-{ 0, "cclose", 0};
-
-int
-sp_instr_cclose::execute(THD *thd, uint *nextp)
-{
- sp_cursor *c= thd->spcont->get_cursor(m_cursor);
- int res;
- DBUG_ENTER("sp_instr_cclose::execute");
-
- if (! c)
- res= -1;
- else
- res= c->close(thd);
- *nextp= m_ip+1;
- DBUG_RETURN(res);
-}
-
-
-void
-sp_instr_cclose::print(String *str)
-{
- const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
-
- /* cclose name@offset */
- size_t rsrv= SP_INSTR_UINT_MAXLEN+8;
-
- if (cursor_name)
- rsrv+= cursor_name->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("cclose "));
- if (cursor_name)
- {
- str->qs_append(cursor_name->str, cursor_name->length);
- str->qs_append('@');
- }
- str->qs_append(m_cursor);
-}
-
-
-/*
- sp_instr_cfetch class functions
-*/
-
-PSI_statement_info sp_instr_cfetch::psi_info=
-{ 0, "cfetch", 0};
-
-int
-sp_instr_cfetch::execute(THD *thd, uint *nextp)
-{
- sp_cursor *c= thd->spcont->get_cursor(m_cursor);
- int res;
- Query_arena backup_arena;
- DBUG_ENTER("sp_instr_cfetch::execute");
-
- res= c ? c->fetch(thd, &m_varlist, m_error_on_no_data) : -1;
-
- *nextp= m_ip+1;
- DBUG_RETURN(res);
-}
-
-
-void
-sp_instr_cfetch::print(String *str)
-{
- List_iterator_fast<sp_variable> li(m_varlist);
- sp_variable *pv;
- const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
-
- /* cfetch name@offset vars... */
- size_t rsrv= SP_INSTR_UINT_MAXLEN+8;
-
- if (cursor_name)
- rsrv+= cursor_name->length;
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("cfetch "));
- if (cursor_name)
- {
- str->qs_append(cursor_name->str, cursor_name->length);
- str->qs_append('@');
- }
- str->qs_append(m_cursor);
- while ((pv= li++))
- {
- if (str->reserve(pv->name.length+SP_INSTR_UINT_MAXLEN+2))
- return;
- str->qs_append(' ');
- str->qs_append(&pv->name);
- str->qs_append('@');
- str->qs_append(pv->offset);
- }
-}
-
-/*
- sp_instr_agg_cfetch class functions
-*/
-
-PSI_statement_info sp_instr_agg_cfetch::psi_info=
-{ 0, "agg_cfetch", 0};
-
-int
-sp_instr_agg_cfetch::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_agg_cfetch::execute");
- int res= 0;
- if (!thd->spcont->instr_ptr)
- {
- *nextp= m_ip+1;
- thd->spcont->instr_ptr= m_ip + 1;
- }
- else if (!thd->spcont->pause_state)
- thd->spcont->pause_state= TRUE;
- else
- {
- thd->spcont->pause_state= FALSE;
- if (thd->server_status & SERVER_STATUS_LAST_ROW_SENT)
- {
- my_message(ER_SP_FETCH_NO_DATA,
- ER_THD(thd, ER_SP_FETCH_NO_DATA), MYF(0));
- res= -1;
- thd->spcont->quit_func= TRUE;
- }
- else
- *nextp= m_ip + 1;
- }
- DBUG_RETURN(res);
-}
-
-void
-sp_instr_agg_cfetch::print(String *str)
-{
-
- uint rsrv= SP_INSTR_UINT_MAXLEN+11;
-
- if (str->reserve(rsrv))
- return;
- str->qs_append(STRING_WITH_LEN("agg_cfetch"));
-}
-
-/*
- sp_instr_cursor_copy_struct class functions
-*/
-
-/**
- This methods processes cursor %ROWTYPE declarations, e.g.:
- CURSOR cur IS SELECT * FROM t1;
- rec cur%ROWTYPE;
- and does the following:
- - opens the cursor without copying data (materialization).
- - copies the cursor structure to the associated %ROWTYPE variable.
-*/
-
-PSI_statement_info sp_instr_cursor_copy_struct::psi_info=
-{ 0, "cursor_copy_struct", 0};
-
-int
-sp_instr_cursor_copy_struct::exec_core(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_cursor_copy_struct::exec_core");
- int ret= 0;
- Item_field_row *row= (Item_field_row*) thd->spcont->get_variable(m_var);
- DBUG_ASSERT(row->type_handler() == &type_handler_row);
-
- /*
- Copy structure only once. If the cursor%ROWTYPE variable is declared
- inside a LOOP block, it gets its structure on the first loop interation
- and remembers the structure for all consequent loop iterations.
- It we recreated the structure on every iteration, we would get
- potential memory leaks, and it would be less efficient.
- */
- if (!row->arguments())
- {
- sp_cursor tmp(thd, &m_lex_keeper, true);
- // Open the cursor without copying data
- if (!(ret= tmp.open(thd)))
- {
- Row_definition_list defs;
- /*
- Create row elements on the caller arena.
- It's the same arena that was used during sp_rcontext::create().
- This puts cursor%ROWTYPE elements on the same mem_root
- where explicit ROW elements and table%ROWTYPE reside:
- - tmp.export_structure() allocates new Spvar_definition instances
- and their components (such as TYPELIBs).
- - row->row_create_items() creates new Item_field instances.
- They all are created on the same mem_root.
- */
- Query_arena current_arena;
- thd->set_n_backup_active_arena(thd->spcont->callers_arena, &current_arena);
- if (!(ret= tmp.export_structure(thd, &defs)))
- row->row_create_items(thd, &defs);
- thd->restore_active_arena(thd->spcont->callers_arena, &current_arena);
- tmp.close(thd);
- }
- }
- *nextp= m_ip + 1;
- DBUG_RETURN(ret);
-}
-
-
-int
-sp_instr_cursor_copy_struct::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_cursor_copy_struct::execute");
- int ret= m_lex_keeper.cursor_reset_lex_and_exec_core(thd, nextp, FALSE, this);
- DBUG_RETURN(ret);
-}
-
-
-void
-sp_instr_cursor_copy_struct::print(String *str)
-{
- sp_variable *var= m_ctx->find_variable(m_var);
- const LEX_CSTRING *name= m_ctx->find_cursor(m_cursor);
- str->append(STRING_WITH_LEN("cursor_copy_struct "));
- str->append(name);
- str->append(' ');
- str->append(&var->name);
- str->append('@');
- str->append_ulonglong(m_var);
-}
-
-
-/*
- sp_instr_error class functions
-*/
-
-PSI_statement_info sp_instr_error::psi_info=
-{ 0, "error", 0};
-
-int
-sp_instr_error::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_error::execute");
- my_message(m_errcode, ER_THD(thd, m_errcode), MYF(0));
- WSREP_DEBUG("sp_instr_error: %s %d", ER_THD(thd, m_errcode), thd->is_error());
- *nextp= m_ip+1;
- DBUG_RETURN(-1);
-}
-
-
-void
-sp_instr_error::print(String *str)
-{
- /* error code */
- if (str->reserve(SP_INSTR_UINT_MAXLEN+6))
- return;
- str->qs_append(STRING_WITH_LEN("error "));
- str->qs_append(m_errcode);
-}
-
-
-/**************************************************************************
- sp_instr_set_case_expr class implementation
-**************************************************************************/
-
-PSI_statement_info sp_instr_set_case_expr::psi_info=
-{ 0, "set_case_expr", 0};
-
-int
-sp_instr_set_case_expr::execute(THD *thd, uint *nextp)
-{
- DBUG_ENTER("sp_instr_set_case_expr::execute");
-
- DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
-}
-
-
-int
-sp_instr_set_case_expr::exec_core(THD *thd, uint *nextp)
-{
- int res= thd->spcont->set_case_expr(thd, m_case_expr_id, &m_case_expr);
-
- if (res && !thd->spcont->get_case_expr(m_case_expr_id))
- {
- /*
- Failed to evaluate the value, the case expression is still not
- initialized. Set to NULL so we can continue.
- */
-
- Item *null_item= new (thd->mem_root) Item_null(thd);
-
- if (!null_item ||
- thd->spcont->set_case_expr(thd, m_case_expr_id, &null_item))
- {
- /* If this also failed, we have to abort. */
- my_error(ER_OUT_OF_RESOURCES, MYF(ME_FATAL));
- }
- }
- else
- *nextp= m_ip+1;
-
- return res;
-}
-
-
-void
-sp_instr_set_case_expr::print(String *str)
-{
- /* set_case_expr (cont) id ... */
- str->reserve(2*SP_INSTR_UINT_MAXLEN+18+32); // Add some extra for expr too
- str->qs_append(STRING_WITH_LEN("set_case_expr ("));
- str->qs_append(m_cont_dest);
- str->qs_append(STRING_WITH_LEN(") "));
- str->qs_append(m_case_expr_id);
- str->qs_append(' ');
- m_case_expr->print(str, enum_query_type(QT_ORDINARY |
- QT_ITEM_ORIGINAL_FUNC_NULLIF));
-}
-
-uint
-sp_instr_set_case_expr::opt_mark(sp_head *sp, List<sp_instr> *leads)
-{
- sp_instr *i;
-
- marked= 1;
- if ((i= sp->get_instr(m_cont_dest)))
- {
- m_cont_dest= i->opt_shortcut_jump(sp, this);
- m_cont_optdest= sp->get_instr(m_cont_dest);
- }
- sp->add_mark_lead(m_cont_dest, leads);
- return m_ip+1;
-}
-
-void
-sp_instr_set_case_expr::opt_move(uint dst, List<sp_instr> *bp)
-{
- if (m_cont_dest > m_ip)
- bp->push_back(this); // Forward
- else if (m_cont_optdest)
- m_cont_dest= m_cont_optdest->m_ip; // Backward
- m_ip= dst;
-}
-
-
/* ------------------------------------------------------------------ */
@@ -5320,7 +3741,8 @@ bool
sp_head::set_local_variable(THD *thd, sp_pcontext *spcont,
const Sp_rcontext_handler *rh,
sp_variable *spv, Item *val, LEX *lex,
- bool responsible_to_free_lex)
+ bool responsible_to_free_lex,
+ const LEX_CSTRING &value_query)
{
if (!(val= adjust_assignment_source(thd, val, spv->default_value)))
return true;
@@ -5331,7 +3753,8 @@ sp_head::set_local_variable(THD *thd, sp_pcontext *spcont,
sp_instr_set *sp_set= new (thd->mem_root)
sp_instr_set(instructions(), spcont, rh,
spv->offset, val, lex,
- responsible_to_free_lex);
+ responsible_to_free_lex,
+ value_query);
return sp_set == NULL || add_instr(sp_set);
}
@@ -5345,7 +3768,8 @@ bool
sp_head::set_local_variable_row_field(THD *thd, sp_pcontext *spcont,
const Sp_rcontext_handler *rh,
sp_variable *spv, uint field_idx,
- Item *val, LEX *lex)
+ Item *val, LEX *lex,
+ const LEX_CSTRING &value_query)
{
if (!(val= adjust_assignment_source(thd, val, NULL)))
return true;
@@ -5355,7 +3779,8 @@ sp_head::set_local_variable_row_field(THD *thd, sp_pcontext *spcont,
spcont, rh,
spv->offset,
field_idx, val,
- lex, true);
+ lex, true,
+ value_query);
return sp_set == NULL || add_instr(sp_set);
}
@@ -5365,7 +3790,8 @@ sp_head::set_local_variable_row_field_by_name(THD *thd, sp_pcontext *spcont,
const Sp_rcontext_handler *rh,
sp_variable *spv,
const LEX_CSTRING *field_name,
- Item *val, LEX *lex)
+ Item *val, LEX *lex,
+ const LEX_CSTRING &value_query)
{
if (!(val= adjust_assignment_source(thd, val, NULL)))
return true;
@@ -5376,7 +3802,8 @@ sp_head::set_local_variable_row_field_by_name(THD *thd, sp_pcontext *spcont,
spv->offset,
*field_name,
val,
- lex, true);
+ lex, true,
+ value_query);
return sp_set == NULL || add_instr(sp_set);
}
@@ -5455,7 +3882,8 @@ sp_head::add_set_for_loop_cursor_param_variables(THD *thd,
if (set_local_variable(thd, param_spcont,
&sp_rcontext_handler_local,
spvar, parameters->arguments()[idx],
- param_lex, last))
+ param_lex, last,
+ param_lex->get_expr_str()))
return true;
}
return false;
diff --git a/sql/sp_head.h b/sql/sp_head.h
index b418ef25..d115ae60 100644
--- a/sql/sp_head.h
+++ b/sql/sp_head.h
@@ -272,6 +272,7 @@ private:
*/
uint32 unsafe_flags;
+ bool new_query_arena_is_set;
public:
inline Stored_program_creation_ctx *get_creation_ctx()
{
@@ -339,15 +340,6 @@ public:
*/
Security_context m_security_ctx;
- /**
- List of all items (Item_trigger_field objects) representing fields in
- old/new version of row in trigger. We use this list for checking whenever
- all such fields are valid at trigger creation time and for binding these
- fields to TABLE object at table open (although for latter pointer to table
- being opened is probably enough).
- */
- SQL_I_List<Item_trigger_field> m_trg_table_fields;
-
protected:
sp_head(MEM_ROOT *mem_root, sp_package *parent, const Sp_handler *handler,
enum_sp_aggregate_type agg_type);
@@ -355,14 +347,15 @@ protected:
public:
static void destroy(sp_head *sp);
static sp_head *create(sp_package *parent, const Sp_handler *handler,
- enum_sp_aggregate_type agg_type);
+ enum_sp_aggregate_type agg_type,
+ MEM_ROOT *sp_mem_root);
/// Initialize after we have reset mem_root
void
init(LEX *lex);
/** Copy sp name from parser. */
- void
+ bool
init_sp_name(const sp_name *spname);
/** Set the body-definition start position. */
@@ -415,7 +408,8 @@ public:
}
bool
- add_instr_freturn(THD *thd, sp_pcontext *spcont, Item *item, LEX *lex);
+ add_instr_freturn(THD *thd, sp_pcontext *spcont, Item *item,
+ sp_expr_lex *lex);
bool
add_instr_preturn(THD *thd, sp_pcontext *spcont);
@@ -435,16 +429,19 @@ public:
bool set_local_variable(THD *thd, sp_pcontext *spcont,
const Sp_rcontext_handler *rh,
sp_variable *spv, Item *val, LEX *lex,
- bool responsible_to_free_lex);
+ bool responsible_to_free_lex,
+ const LEX_CSTRING &value_query);
bool set_local_variable_row_field(THD *thd, sp_pcontext *spcont,
const Sp_rcontext_handler *rh,
sp_variable *spv, uint field_idx,
- Item *val, LEX *lex);
+ Item *val, LEX *lex,
+ const LEX_CSTRING &value_query);
bool set_local_variable_row_field_by_name(THD *thd, sp_pcontext *spcont,
const Sp_rcontext_handler *rh,
sp_variable *spv,
const LEX_CSTRING *field_name,
- Item *val, LEX *lex);
+ Item *val, LEX *lex,
+ const LEX_CSTRING &value_query);
bool check_package_routine_end_name(const LEX_CSTRING &end_name) const;
bool check_standalone_routine_end_name(const sp_name *end_name) const;
bool check_group_aggregate_instructions_function() const;
@@ -474,7 +471,8 @@ private:
m_thd->free_list= prm->get_free_list();
if (set_local_variable(thd, param_spcont,
&sp_rcontext_handler_local,
- spvar, prm->get_item(), prm, true))
+ spvar, prm->get_item(), prm, true,
+ prm->get_expr_str()))
return true;
/*
Safety:
@@ -655,6 +653,16 @@ public:
DBUG_RETURN(thd->restore_from_local_lex_to_old_lex(oldlex));
}
+
+ /**
+ Delete all auxiliary LEX objects created on parsing a statement and
+ restore a value of the data member THD::lex to point on the LEX object
+ that was actual before parsing started.
+ */
+
+ void unwind_aux_lexes_and_restore_original_lex();
+
+
/**
Iterate through the LEX stack from the top (the newest) to the bottom
(the oldest) and find the one that contains a non-zero spname.
@@ -815,6 +823,10 @@ public:
m_definer.copy(mem_root, user_name, host_name);
}
+ void set_definition_string(LEX_STRING &defstr)
+ {
+ m_definition_string= defstr;
+ }
void reset_thd_mem_root(THD *thd);
void restore_thd_mem_root(THD *thd);
@@ -965,6 +977,12 @@ protected:
*/
HASH m_sptabs;
+ /**
+ Text of the query CREATE PROCEDURE/FUNCTION/TRIGGER/EVENT ...
+ used for DDL parsing.
+ */
+ LEX_STRING m_definition_string;
+
bool
execute(THD *thd, bool merge_da_on_success);
@@ -985,6 +1003,30 @@ protected:
push_backpatch(THD *thd, sp_instr *, sp_label *, List<bp_t> *list,
backpatch_instr_type itype);
+public:
+ /*
+ List of lists of Item_trigger_field objects representing all fields in
+ old/new version of row in trigger. We use this list of lists for checking
+ whenever all such fields are valid at trigger creation time and for binding
+ these fields to TABLE object at table open (although for latter pointer
+ to table being opened is probably enough).
+ */
+ SQL_I_List<SQL_I_List<Item_trigger_field> > m_trg_table_fields;
+
+ /**
+ The object of the Trigger class corresponding to this sp_head object.
+ This data member is set on table's triggers loading at the function
+ check_n_load and is used at the method sp_lex_instr::parse_expr
+ for accessing to the trigger's table after re-parsing of failed
+ trigger's instruction.
+ */
+ Trigger *m_trg= nullptr;
+
+ /*
+ List of Item_trigger_field objects created on parsing
+ a current instruction of trigger's body
+ */
+ SQL_I_List<Item_trigger_field> m_cur_instr_trig_field_items;
}; // class sp_head : public Sql_alloc
@@ -1044,7 +1086,7 @@ private:
~sp_package();
public:
static sp_package *create(LEX *top_level_lex, const sp_name *name,
- const Sp_handler *sph);
+ const Sp_handler *sph, MEM_ROOT *sp_mem_root);
bool add_routine_declaration(LEX *lex)
{
@@ -1081,1096 +1123,11 @@ public:
};
-class sp_lex_cursor: public sp_lex_local, public Query_arena
-{
-public:
- sp_lex_cursor(THD *thd, const LEX *oldlex, MEM_ROOT *mem_root_arg)
- :sp_lex_local(thd, oldlex),
- Query_arena(mem_root_arg, STMT_INITIALIZED_FOR_SP)
- { }
- sp_lex_cursor(THD *thd, const LEX *oldlex)
- :sp_lex_local(thd, oldlex),
- Query_arena(thd->lex->sphead->get_main_mem_root(), STMT_INITIALIZED_FOR_SP)
- { }
- ~sp_lex_cursor() { free_items(); }
- virtual bool cleanup_stmt(bool /*restore_set_statement_vars*/) override
- { return false; }
- Query_arena *query_arena() override { return this; }
- bool validate()
- {
- DBUG_ASSERT(sql_command == SQLCOM_SELECT);
- if (result)
- {
- my_error(ER_SP_BAD_CURSOR_SELECT, MYF(0));
- return true;
- }
- return false;
- }
- bool stmt_finalize(THD *thd)
- {
- if (validate())
- return true;
- sp_lex_in_use= true;
- free_list= thd->free_list;
- thd->free_list= NULL;
- return false;
- }
-};
-
-
-//
-// "Instructions"...
-//
-
-class sp_instr :public Query_arena, public Sql_alloc
-{
- sp_instr(const sp_instr &); /**< Prevent use of these */
- void operator=(sp_instr &);
-
-public:
-
- uint marked;
- uint m_ip; ///< My index
- sp_pcontext *m_ctx; ///< My parse context
- uint m_lineno;
-
- /// Should give each a name or type code for debugging purposes?
- sp_instr(uint ip, sp_pcontext *ctx)
- :Query_arena(0, STMT_INITIALIZED_FOR_SP), marked(0), m_ip(ip), m_ctx(ctx)
-#ifdef PROTECT_STATEMENT_MEMROOT
- , m_has_been_run(NON_RUN)
-#endif
- {}
-
- virtual ~sp_instr()
- { free_items(); }
-
-
- /**
- Execute this instruction
-
-
- @param thd Thread handle
- @param[out] nextp index of the next instruction to execute. (For most
- instructions this will be the instruction following this
- one). Note that this parameter is undefined in case of
- errors, use get_cont_dest() to find the continuation
- instruction for CONTINUE error handlers.
-
- @retval 0 on success,
- @retval other if some error occurred
- */
-
- virtual int execute(THD *thd, uint *nextp) = 0;
-
- /**
- Execute <code>open_and_lock_tables()</code> for this statement.
- Open and lock the tables used by this statement, as a pre-requisite
- to execute the core logic of this instruction with
- <code>exec_core()</code>.
- @param thd the current thread
- @param tables the list of tables to open and lock
- @return zero on success, non zero on failure.
- */
- int exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables);
-
- /**
- Get the continuation destination of this instruction.
- @return the continuation destination
- */
- virtual uint get_cont_dest() const;
-
- /*
- Execute core function of instruction after all preparations (e.g.
- setting of proper LEX, saving part of the thread context have been
- done).
-
- Should be implemented for instructions using expressions or whole
- statements (thus having to have own LEX). Used in concert with
- sp_lex_keeper class and its descendants (there are none currently).
- */
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str) = 0;
-
- virtual void backpatch(uint dest, sp_pcontext *dst_ctx)
- {}
-
- /**
- Mark this instruction as reachable during optimization and return the
- index to the next instruction. Jump instruction will add their
- destination to the leads list.
- */
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads)
- {
- marked= 1;
- return m_ip+1;
- }
-
- /**
- Short-cut jumps to jumps during optimization. This is used by the
- jump instructions' opt_mark() methods. 'start' is the starting point,
- used to prevent the mark sweep from looping for ever. Return the
- end destination.
- */
- virtual uint opt_shortcut_jump(sp_head *sp, sp_instr *start)
- {
- return m_ip;
- }
-
- /**
- Inform the instruction that it has been moved during optimization.
- Most instructions will simply update its index, but jump instructions
- must also take care of their destination pointers. Forward jumps get
- pushed to the backpatch list 'ibp'.
- */
- virtual void opt_move(uint dst, List<sp_instr> *ibp)
- {
- m_ip= dst;
- }
- virtual PSI_statement_info* get_psi_info() = 0;
-
-#ifdef PROTECT_STATEMENT_MEMROOT
- bool has_been_run() const
- {
- return m_has_been_run == RUN;
- }
-
- void mark_as_qc_used()
- {
- m_has_been_run= QC;
- }
-
- void mark_as_run()
- {
- if (m_has_been_run == QC)
- m_has_been_run= NON_RUN; // answer was from WC => not really executed
- else
- m_has_been_run= RUN;
- }
-
- void mark_as_not_run()
- {
- m_has_been_run= NON_RUN;
- }
-
-private:
- enum {NON_RUN, QC, RUN} m_has_been_run;
-#endif
-}; // class sp_instr : public Sql_alloc
-
-
-/**
- Auxilary class to which instructions delegate responsibility
- for handling LEX and preparations before executing statement
- or calculating complex expression.
-
- Exist mainly to avoid having double hierarchy between instruction
- classes.
-
- @todo
- Add ability to not store LEX and do any preparations if
- expression used is simple.
-*/
-
-class sp_lex_keeper
-{
- /** Prevent use of these */
- sp_lex_keeper(const sp_lex_keeper &);
- void operator=(sp_lex_keeper &);
-public:
-
- sp_lex_keeper(LEX *lex, bool lex_resp)
- : m_lex(lex), m_lex_resp(lex_resp),
- lex_query_tables_own_last(NULL)
- {
- lex->sp_lex_in_use= TRUE;
- }
- virtual ~sp_lex_keeper()
- {
- if (m_lex_resp)
- {
- /* Prevent endless recursion. */
- m_lex->sphead= NULL;
- lex_end(m_lex);
- delete m_lex;
- }
- }
-
- /**
- Prepare execution of instruction using LEX, if requested check whenever
- we have read access to tables used and open/lock them, call instruction's
- exec_core() method, perform cleanup afterwards.
-
- @todo Conflicting comment in sp_head.cc
- */
- int reset_lex_and_exec_core(THD *thd, uint *nextp, bool open_tables,
- sp_instr* instr);
-
- int cursor_reset_lex_and_exec_core(THD *thd, uint *nextp, bool open_tables,
- sp_instr *instr);
-
- inline uint sql_command() const
- {
- return (uint)m_lex->sql_command;
- }
-
- void disable_query_cache()
- {
- m_lex->safe_to_cache_query= 0;
- }
-
-private:
-
- LEX *m_lex;
- /**
- Indicates whenever this sp_lex_keeper instance responsible
- for LEX deletion.
- */
- bool m_lex_resp;
-
- /*
- Support for being able to execute this statement in two modes:
- a) inside prelocked mode set by the calling procedure or its ancestor.
- b) outside of prelocked mode, when this statement enters/leaves
- prelocked mode itself.
- */
-
- /**
- List of additional tables this statement needs to lock when it
- enters/leaves prelocked mode on its own.
- */
- TABLE_LIST *prelocking_tables;
-
- /**
- The value m_lex->query_tables_own_last should be set to this when the
- statement enters/leaves prelocked mode on its own.
- */
- TABLE_LIST **lex_query_tables_own_last;
-};
-
-
-/**
- Call out to some prepared SQL statement.
-*/
-class sp_instr_stmt : public sp_instr
-{
- sp_instr_stmt(const sp_instr_stmt &); /**< Prevent use of these */
- void operator=(sp_instr_stmt &);
-
-public:
-
- LEX_STRING m_query; ///< For thd->query
-
- sp_instr_stmt(uint ip, sp_pcontext *ctx, LEX *lex)
- : sp_instr(ip, ctx), m_lex_keeper(lex, TRUE)
- {
- m_query.str= 0;
- m_query.length= 0;
- }
-
- virtual ~sp_instr_stmt() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-private:
-
- sp_lex_keeper m_lex_keeper;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-
-}; // class sp_instr_stmt : public sp_instr
-
-
-class sp_instr_set : public sp_instr
-{
- sp_instr_set(const sp_instr_set &); /**< Prevent use of these */
- void operator=(sp_instr_set &);
-
-public:
-
- sp_instr_set(uint ip, sp_pcontext *ctx,
- const Sp_rcontext_handler *rh,
- uint offset, Item *val,
- LEX *lex, bool lex_resp)
- : sp_instr(ip, ctx),
- m_rcontext_handler(rh), m_offset(offset), m_value(val),
- m_lex_keeper(lex, lex_resp)
- {}
-
- virtual ~sp_instr_set() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-protected:
- sp_rcontext *get_rcontext(THD *thd) const;
- const Sp_rcontext_handler *m_rcontext_handler;
- uint m_offset; ///< Frame offset
- Item *m_value;
- sp_lex_keeper m_lex_keeper;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_set : public sp_instr
-
-
-/*
- This class handles assignments of a ROW fields:
- DECLARE rec ROW (a INT,b INT);
- SET rec.a= 10;
-*/
-class sp_instr_set_row_field : public sp_instr_set
-{
- sp_instr_set_row_field(const sp_instr_set_row_field &); // Prevent use of this
- void operator=(sp_instr_set_row_field &);
- uint m_field_offset;
-
-public:
-
- sp_instr_set_row_field(uint ip, sp_pcontext *ctx,
- const Sp_rcontext_handler *rh,
- uint offset, uint field_offset,
- Item *val,
- LEX *lex, bool lex_resp)
- : sp_instr_set(ip, ctx, rh, offset, val, lex, lex_resp),
- m_field_offset(field_offset)
- {}
-
- virtual ~sp_instr_set_row_field() = default;
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-}; // class sp_instr_set_field : public sp_instr_set
-
-
-/**
- This class handles assignment instructions like this:
- DECLARE
- CURSOR cur IS SELECT * FROM t1;
- rec cur%ROWTYPE;
- BEGIN
- rec.column1:= 10; -- This instruction
- END;
-
- The idea is that during sp_rcontext::create() we do not know the extact
- structure of "rec". It gets resolved at run time, during the corresponding
- sp_instr_cursor_copy_struct::exec_core().
-
- So sp_instr_set_row_field_by_name searches for ROW fields by name,
- while sp_instr_set_row_field (see above) searches for ROW fields by index.
-*/
-class sp_instr_set_row_field_by_name : public sp_instr_set
-{
- // Prevent use of this
- sp_instr_set_row_field_by_name(const sp_instr_set_row_field &);
- void operator=(sp_instr_set_row_field_by_name &);
- const LEX_CSTRING m_field_name;
-
-public:
-
- sp_instr_set_row_field_by_name(uint ip, sp_pcontext *ctx,
- const Sp_rcontext_handler *rh,
- uint offset, const LEX_CSTRING &field_name,
- Item *val,
- LEX *lex, bool lex_resp)
- : sp_instr_set(ip, ctx, rh, offset, val, lex, lex_resp),
- m_field_name(field_name)
- {}
-
- virtual ~sp_instr_set_row_field_by_name() = default;
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-}; // class sp_instr_set_field_by_name : public sp_instr_set
-
-
-/**
- Set NEW/OLD row field value instruction. Used in triggers.
-*/
-class sp_instr_set_trigger_field : public sp_instr
-{
- sp_instr_set_trigger_field(const sp_instr_set_trigger_field &);
- void operator=(sp_instr_set_trigger_field &);
-
-public:
-
- sp_instr_set_trigger_field(uint ip, sp_pcontext *ctx,
- Item_trigger_field *trg_fld,
- Item *val, LEX *lex)
- : sp_instr(ip, ctx),
- trigger_field(trg_fld),
- value(val), m_lex_keeper(lex, TRUE)
- {}
-
- virtual ~sp_instr_set_trigger_field() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-private:
- Item_trigger_field *trigger_field;
- Item *value;
- sp_lex_keeper m_lex_keeper;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_trigger_field : public sp_instr
-
-
-/**
- An abstract class for all instructions with destinations that
- needs to be updated by the optimizer.
-
- Even if not all subclasses will use both the normal destination and
- the continuation destination, we put them both here for simplicity.
-*/
-class sp_instr_opt_meta : public sp_instr
-{
-public:
-
- uint m_dest; ///< Where we will go
- uint m_cont_dest; ///< Where continue handlers will go
-
- sp_instr_opt_meta(uint ip, sp_pcontext *ctx)
- : sp_instr(ip, ctx),
- m_dest(0), m_cont_dest(0), m_optdest(0), m_cont_optdest(0)
- {}
-
- sp_instr_opt_meta(uint ip, sp_pcontext *ctx, uint dest)
- : sp_instr(ip, ctx),
- m_dest(dest), m_cont_dest(0), m_optdest(0), m_cont_optdest(0)
- {}
-
- virtual ~sp_instr_opt_meta() = default;
-
- virtual void set_destination(uint old_dest, uint new_dest)
- = 0;
-
- virtual uint get_cont_dest() const;
-
-protected:
-
- sp_instr *m_optdest; ///< Used during optimization
- sp_instr *m_cont_optdest; ///< Used during optimization
-
-}; // class sp_instr_opt_meta : public sp_instr
-
-class sp_instr_jump : public sp_instr_opt_meta
-{
- sp_instr_jump(const sp_instr_jump &); /**< Prevent use of these */
- void operator=(sp_instr_jump &);
-
-public:
-
- sp_instr_jump(uint ip, sp_pcontext *ctx)
- : sp_instr_opt_meta(ip, ctx)
- {}
-
- sp_instr_jump(uint ip, sp_pcontext *ctx, uint dest)
- : sp_instr_opt_meta(ip, ctx, dest)
- {}
-
- virtual ~sp_instr_jump() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads);
-
- virtual uint opt_shortcut_jump(sp_head *sp, sp_instr *start);
-
- virtual void opt_move(uint dst, List<sp_instr> *ibp);
-
- virtual void backpatch(uint dest, sp_pcontext *dst_ctx)
- {
- /* Calling backpatch twice is a logic flaw in jump resolution. */
- DBUG_ASSERT(m_dest == 0);
- m_dest= dest;
- }
-
- /**
- Update the destination; used by the optimizer.
- */
- virtual void set_destination(uint old_dest, uint new_dest)
- {
- if (m_dest == old_dest)
- m_dest= new_dest;
- }
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_jump : public sp_instr_opt_meta
-
-
-class sp_instr_jump_if_not : public sp_instr_jump
-{
- sp_instr_jump_if_not(const sp_instr_jump_if_not &); /**< Prevent use of these */
- void operator=(sp_instr_jump_if_not &);
-
-public:
-
- sp_instr_jump_if_not(uint ip, sp_pcontext *ctx, Item *i, LEX *lex)
- : sp_instr_jump(ip, ctx), m_expr(i),
- m_lex_keeper(lex, TRUE)
- {}
-
- sp_instr_jump_if_not(uint ip, sp_pcontext *ctx, Item *i, uint dest, LEX *lex)
- : sp_instr_jump(ip, ctx, dest), m_expr(i),
- m_lex_keeper(lex, TRUE)
- {}
-
- virtual ~sp_instr_jump_if_not() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads);
-
- /** Override sp_instr_jump's shortcut; we stop here */
- virtual uint opt_shortcut_jump(sp_head *sp, sp_instr *start)
- {
- return m_ip;
- }
-
- virtual void opt_move(uint dst, List<sp_instr> *ibp);
-
- virtual void set_destination(uint old_dest, uint new_dest)
- {
- sp_instr_jump::set_destination(old_dest, new_dest);
- if (m_cont_dest == old_dest)
- m_cont_dest= new_dest;
- }
-
-private:
-
- Item *m_expr; ///< The condition
- sp_lex_keeper m_lex_keeper;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_jump_if_not : public sp_instr_jump
-
-
-class sp_instr_preturn : public sp_instr
-{
- sp_instr_preturn(const sp_instr_preturn &); /**< Prevent use of these */
- void operator=(sp_instr_preturn &);
-
-public:
-
- sp_instr_preturn(uint ip, sp_pcontext *ctx)
- : sp_instr(ip, ctx)
- {}
-
- virtual ~sp_instr_preturn() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads)
- {
- marked= 1;
- return UINT_MAX;
- }
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_preturn : public sp_instr
-
-
-class sp_instr_freturn : public sp_instr
-{
- sp_instr_freturn(const sp_instr_freturn &); /**< Prevent use of these */
- void operator=(sp_instr_freturn &);
-
-public:
-
- sp_instr_freturn(uint ip, sp_pcontext *ctx,
- Item *val, const Type_handler *handler, LEX *lex)
- : sp_instr(ip, ctx), m_value(val), m_type_handler(handler),
- m_lex_keeper(lex, TRUE)
- {}
-
- virtual ~sp_instr_freturn() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads)
- {
- marked= 1;
- return UINT_MAX;
- }
-
-protected:
-
- Item *m_value;
- const Type_handler *m_type_handler;
- sp_lex_keeper m_lex_keeper;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_freturn : public sp_instr
-
-
-class sp_instr_hpush_jump : public sp_instr_jump
-{
- sp_instr_hpush_jump(const sp_instr_hpush_jump &); /**< Prevent use of these */
- void operator=(sp_instr_hpush_jump &);
-
-public:
-
- sp_instr_hpush_jump(uint ip,
- sp_pcontext *ctx,
- sp_handler *handler)
- :sp_instr_jump(ip, ctx),
- m_handler(handler),
- m_opt_hpop(0),
- m_frame(ctx->current_var_count())
- {
- DBUG_ASSERT(m_handler->condition_values.elements == 0);
- }
-
- virtual ~sp_instr_hpush_jump()
- {
- m_handler->condition_values.empty();
- m_handler= NULL;
- }
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads);
-
- /** Override sp_instr_jump's shortcut; we stop here. */
- virtual uint opt_shortcut_jump(sp_head *sp, sp_instr *start)
- {
- return m_ip;
- }
-
- virtual void backpatch(uint dest, sp_pcontext *dst_ctx)
- {
- DBUG_ASSERT(!m_dest || !m_opt_hpop);
- if (!m_dest)
- m_dest= dest;
- else
- m_opt_hpop= dest;
- }
-
- void add_condition(sp_condition_value *condition_value)
- { m_handler->condition_values.push_back(condition_value); }
-
- sp_handler *get_handler()
- { return m_handler; }
-
-private:
- /// Handler.
- sp_handler *m_handler;
-
- /// hpop marking end of handler scope.
- uint m_opt_hpop;
-
- // This attribute is needed for SHOW PROCEDURE CODE only (i.e. it's needed in
- // debug version only). It's used in print().
- uint m_frame;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_hpush_jump : public sp_instr_jump
-
-
-class sp_instr_hpop : public sp_instr
-{
- sp_instr_hpop(const sp_instr_hpop &); /**< Prevent use of these */
- void operator=(sp_instr_hpop &);
-
-public:
-
- sp_instr_hpop(uint ip, sp_pcontext *ctx, uint count)
- : sp_instr(ip, ctx), m_count(count)
- {}
-
- virtual ~sp_instr_hpop() = default;
-
- void update_count(uint count)
- {
- m_count= count;
- }
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-private:
-
- uint m_count;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_hpop : public sp_instr
-
-
-class sp_instr_hreturn : public sp_instr_jump
-{
- sp_instr_hreturn(const sp_instr_hreturn &); /**< Prevent use of these */
- void operator=(sp_instr_hreturn &);
-
-public:
-
- sp_instr_hreturn(uint ip, sp_pcontext *ctx)
- :sp_instr_jump(ip, ctx),
- m_frame(ctx->current_var_count())
- {}
-
- virtual ~sp_instr_hreturn() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- /* This instruction will not be short cut optimized. */
- virtual uint opt_shortcut_jump(sp_head *sp, sp_instr *start)
- {
- return m_ip;
- }
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads);
-
-private:
-
- uint m_frame;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_hreturn : public sp_instr_jump
-
-
-/** This is DECLARE CURSOR */
-class sp_instr_cpush : public sp_instr, public sp_cursor
-{
- sp_instr_cpush(const sp_instr_cpush &); /**< Prevent use of these */
- void operator=(sp_instr_cpush &);
-
-public:
-
- sp_instr_cpush(uint ip, sp_pcontext *ctx, LEX *lex, uint offset)
- : sp_instr(ip, ctx), m_lex_keeper(lex, TRUE), m_cursor(offset)
- {}
-
- virtual ~sp_instr_cpush() = default;
-
- int execute(THD *thd, uint *nextp) override;
-
- void print(String *str) override;
-
- /**
- This call is used to cleanup the instruction when a sensitive
- cursor is closed. For now stored procedures always use materialized
- cursors and the call is not used.
- */
- virtual bool cleanup_stmt(bool /*restore_set_statement_vars*/) override
- { return false; }
-private:
-
- sp_lex_keeper m_lex_keeper;
- uint m_cursor; /**< Frame offset (for debugging) */
-
-public:
- PSI_statement_info* get_psi_info() override { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_cpush : public sp_instr
-
-
-class sp_instr_cpop : public sp_instr
-{
- sp_instr_cpop(const sp_instr_cpop &); /**< Prevent use of these */
- void operator=(sp_instr_cpop &);
-
-public:
-
- sp_instr_cpop(uint ip, sp_pcontext *ctx, uint count)
- : sp_instr(ip, ctx), m_count(count)
- {}
-
- virtual ~sp_instr_cpop() = default;
-
- void update_count(uint count)
- {
- m_count= count;
- }
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-private:
-
- uint m_count;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_cpop : public sp_instr
-
-
-class sp_instr_copen : public sp_instr
-{
- sp_instr_copen(const sp_instr_copen &); /**< Prevent use of these */
- void operator=(sp_instr_copen &);
-
-public:
-
- sp_instr_copen(uint ip, sp_pcontext *ctx, uint c)
- : sp_instr(ip, ctx), m_cursor(c)
- {}
-
- virtual ~sp_instr_copen() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-private:
-
- uint m_cursor; ///< Stack index
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_copen : public sp_instr_stmt
-
-
-/**
- Initialize the structure of a cursor%ROWTYPE variable
- from the LEX containing the cursor SELECT statement.
-*/
-class sp_instr_cursor_copy_struct: public sp_instr
-{
- /**< Prevent use of these */
- sp_instr_cursor_copy_struct(const sp_instr_cursor_copy_struct &);
- void operator=(sp_instr_cursor_copy_struct &);
- sp_lex_keeper m_lex_keeper;
- uint m_cursor;
- uint m_var;
-public:
- sp_instr_cursor_copy_struct(uint ip, sp_pcontext *ctx, uint coffs,
- sp_lex_cursor *lex, uint voffs)
- : sp_instr(ip, ctx), m_lex_keeper(lex, FALSE),
- m_cursor(coffs),
- m_var(voffs)
- {}
- virtual ~sp_instr_cursor_copy_struct() = default;
- virtual int execute(THD *thd, uint *nextp);
- virtual int exec_core(THD *thd, uint *nextp);
- virtual void print(String *str);
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-};
-
-
-class sp_instr_cclose : public sp_instr
-{
- sp_instr_cclose(const sp_instr_cclose &); /**< Prevent use of these */
- void operator=(sp_instr_cclose &);
-
-public:
-
- sp_instr_cclose(uint ip, sp_pcontext *ctx, uint c)
- : sp_instr(ip, ctx), m_cursor(c)
- {}
-
- virtual ~sp_instr_cclose() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-private:
-
- uint m_cursor;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_cclose : public sp_instr
-
-
-class sp_instr_cfetch : public sp_instr
-{
- sp_instr_cfetch(const sp_instr_cfetch &); /**< Prevent use of these */
- void operator=(sp_instr_cfetch &);
-
-public:
-
- sp_instr_cfetch(uint ip, sp_pcontext *ctx, uint c, bool error_on_no_data)
- : sp_instr(ip, ctx), m_cursor(c), m_error_on_no_data(error_on_no_data)
- {
- m_varlist.empty();
- }
-
- virtual ~sp_instr_cfetch() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- void add_to_varlist(sp_variable *var)
- {
- m_varlist.push_back(var);
- }
-
-private:
-
- uint m_cursor;
- List<sp_variable> m_varlist;
- bool m_error_on_no_data;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_cfetch : public sp_instr
-
-/*
-This class is created for the special fetch instruction
-FETCH GROUP NEXT ROW, used in the user-defined aggregate
-functions
-*/
-
-class sp_instr_agg_cfetch : public sp_instr
-{
- sp_instr_agg_cfetch(const sp_instr_cfetch &); /**< Prevent use of these */
- void operator=(sp_instr_cfetch &);
-
-public:
-
- sp_instr_agg_cfetch(uint ip, sp_pcontext *ctx)
- : sp_instr(ip, ctx){}
-
- virtual ~sp_instr_agg_cfetch() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_agg_cfetch : public sp_instr
-
-
-
-
-class sp_instr_error : public sp_instr
-{
- sp_instr_error(const sp_instr_error &); /**< Prevent use of these */
- void operator=(sp_instr_error &);
-
-public:
-
- sp_instr_error(uint ip, sp_pcontext *ctx, int errcode)
- : sp_instr(ip, ctx), m_errcode(errcode)
- {}
-
- virtual ~sp_instr_error() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads)
- {
- marked= 1;
- return UINT_MAX;
- }
-
-private:
-
- int m_errcode;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_error : public sp_instr
-
-
-class sp_instr_set_case_expr : public sp_instr_opt_meta
-{
-public:
-
- sp_instr_set_case_expr(uint ip, sp_pcontext *ctx, uint case_expr_id,
- Item *case_expr, LEX *lex)
- : sp_instr_opt_meta(ip, ctx),
- m_case_expr_id(case_expr_id), m_case_expr(case_expr),
- m_lex_keeper(lex, TRUE)
- {}
-
- virtual ~sp_instr_set_case_expr() = default;
-
- virtual int execute(THD *thd, uint *nextp);
-
- virtual int exec_core(THD *thd, uint *nextp);
-
- virtual void print(String *str);
-
- virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads);
-
- virtual void opt_move(uint dst, List<sp_instr> *ibp);
-
- virtual void set_destination(uint old_dest, uint new_dest)
- {
- if (m_cont_dest == old_dest)
- m_cont_dest= new_dest;
- }
-
-private:
-
- uint m_case_expr_id;
- Item *m_case_expr;
- sp_lex_keeper m_lex_keeper;
-
-public:
- virtual PSI_statement_info* get_psi_info() { return & psi_info; }
- static PSI_statement_info psi_info;
-}; // class sp_instr_set_case_expr : public sp_instr_opt_meta
-
bool check_show_routine_access(THD *thd, sp_head *sp, bool *full_access);
+bool check_db_routine_access(THD *thd, privilege_t privilege,
+ const char *db, const char *name,
+ const Sp_handler *sph,
+ bool no_errors);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
bool
diff --git a/sql/sp_instr.cc b/sql/sp_instr.cc
new file mode 100644
index 00000000..b4302ff3
--- /dev/null
+++ b/sql/sp_instr.cc
@@ -0,0 +1,2114 @@
+#include "sp_instr.h"
+
+#include "opt_trace.h" // class Opt_trace_start
+#include "sql_array.h" // class Dynamic_array
+#include "sql_audit.h" // mysql_audit_general
+#include "sql_base.h" // open_and_lock_tables
+#include "sql_derived.h" // mysql_handle_derived
+#include "sp_head.h" // class sp_head
+#include "sql_parse.h" // check_table_access
+#include "sp_rcontext.h" // class sp_rcontext
+#include "sql_prepare.h" // reinit_stmt_before_use
+#include "transaction.h" // trans_commit_stmt, trans_rollback_stmt, ...
+
+/*
+ Sufficient max length of printed destinations.
+*/
+static const int SP_STMT_PRINT_MAXLEN= 40;
+
+static int cmp_rqp_locations(Rewritable_query_parameter * const *a,
+ Rewritable_query_parameter * const *b)
+{
+ return (int)((*a)->pos_in_query - (*b)->pos_in_query);
+}
+
+
+/*
+ StoredRoutinesBinlogging
+ This paragraph applies only to statement-based binlogging. Row-based
+ binlogging does not need anything special like this.
+
+ Top-down overview:
+
+ 1. Statements
+
+ Statements that have is_update_query(stmt) == true are written into the
+ binary log verbatim.
+ Examples:
+ UPDATE tbl SET tbl.x = spfunc_w_side_effects()
+ UPDATE tbl SET tbl.x=1 WHERE spfunc_w_side_effect_that_returns_false(tbl.y)
+
+ Statements that have is_update_query(stmt) == false (e.g. SELECTs) are not
+ written into binary log. Instead we catch function calls the statement
+ makes and write it into binary log separately (see #3).
+
+ 2. PROCEDURE calls
+
+ CALL statements are not written into binary log. Instead
+ * Any FUNCTION invocation (in SET, IF, WHILE, OPEN CURSOR and other SP
+ instructions) is written into binlog separately.
+
+ * Each statement executed in SP is binlogged separately, according to rules
+ in #1, with the exception that we modify query string: we replace uses
+ of SP local variables with NAME_CONST('spvar_name', <spvar-value>) calls.
+ This substitution is done in subst_spvars().
+
+ 3. FUNCTION calls
+
+ In sp_head::execute_function(), we check
+ * If this function invocation is done from a statement that is written
+ into the binary log.
+ * If there were any attempts to write events to the binary log during
+ function execution (grep for start_union_events and stop_union_events)
+
+ If the answers are No and Yes, we write the function call into the binary
+ log as "SELECT spfunc(<param1value>, <param2value>, ...)"
+
+
+ 4. Miscellaneous issues.
+
+ 4.1 User variables.
+
+ When we call mysql_bin_log.write() for an SP statement, thd->user_var_events
+ must hold set<{var_name, value}> pairs for all user variables used during
+ the statement execution.
+ This set is produced by tracking user variable reads during statement
+ execution.
+
+ For SPs, this has the following implications:
+ 1) thd->user_var_events may contain events from several SP statements and
+ needs to be valid after exection of these statements was finished. In
+ order to achieve that, we
+ * Allocate user_var_events array elements on appropriate mem_root (grep
+ for user_var_events_alloc).
+ * Use is_query_in_union() to determine if user_var_event is created.
+
+ 2) We need to empty thd->user_var_events after we have wrote a function
+ call. This is currently done by making
+ reset_dynamic(&thd->user_var_events);
+ calls in several different places. (TODO cosider moving this into
+ mysql_bin_log.write() function)
+
+ 4.2 Auto_increment storage in binlog
+
+ As we may write two statements to binlog from one single logical statement
+ (case of "SELECT func1(),func2()": it is binlogged as "SELECT func1()" and
+ then "SELECT func2()"), we need to reset auto_increment binlog variables
+ after each binlogged SELECT. Otherwise, the auto_increment value of the
+ first SELECT would be used for the second too.
+*/
+
+
+/**
+ Replace thd->query{_length} with a string that one can write to
+ the binlog.
+
+ The binlog-suitable string is produced by replacing references to SP local
+ variables with NAME_CONST('sp_var_name', value) calls.
+
+ @param thd Current thread.
+ @param instr Instruction (we look for Item_splocal instances in
+ instr->free_list)
+ @param query_str Original query string
+
+ @return
+ - false on success.
+ thd->query{_length} either has been appropriately replaced or there
+ is no need for replacements.
+ - true out of memory error.
+*/
+
+static bool
+subst_spvars(THD *thd, sp_instr *instr, LEX_STRING *query_str)
+{
+ DBUG_ENTER("subst_spvars");
+
+ Dynamic_array<Rewritable_query_parameter*> rewritables(PSI_INSTRUMENT_MEM);
+ char *pbuf;
+ StringBuffer<512> qbuf;
+ Copy_query_with_rewrite acc(thd, query_str->str, query_str->length, &qbuf);
+
+ /* Find rewritable Items used in this statement */
+ for (Item *item= instr->free_list; item; item= item->next)
+ {
+ Rewritable_query_parameter *rqp= item->get_rewritable_query_parameter();
+ if (rqp && rqp->pos_in_query)
+ rewritables.append(rqp);
+ }
+ if (!rewritables.elements())
+ DBUG_RETURN(false);
+
+ rewritables.sort(cmp_rqp_locations);
+
+ thd->query_name_consts= (uint)rewritables.elements();
+
+ for (Rewritable_query_parameter **rqp= rewritables.front();
+ rqp <= rewritables.back(); rqp++)
+ {
+ if (acc.append(*rqp))
+ DBUG_RETURN(true);
+ }
+ if (acc.finalize())
+ DBUG_RETURN(true);
+
+ /*
+ Allocate additional space at the end of the new query string for the
+ query_cache_send_result_to_client function.
+
+ The query buffer layout is:
+ buffer :==
+ <statement> The input statement(s)
+ '\0' Terminating null char
+ <length> Length of following current database name 2
+ <db_name> Name of current database
+ <flags> Flags struct
+ */
+ size_t buf_len= (qbuf.length() + 1 + QUERY_CACHE_DB_LENGTH_SIZE +
+ thd->db.length + QUERY_CACHE_FLAGS_SIZE + 1);
+ if ((pbuf= (char *) alloc_root(thd->mem_root, buf_len)))
+ {
+ char *ptr= pbuf + qbuf.length();
+ memcpy(pbuf, qbuf.ptr(), qbuf.length());
+ *ptr= 0;
+ int2store(ptr+1, thd->db.length);
+ }
+ else
+ DBUG_RETURN(true);
+
+ thd->set_query(pbuf, qbuf.length());
+
+ DBUG_RETURN(false);
+}
+
+/**
+ Prepare LEX and thread for execution of instruction, if requested open
+ and lock LEX's tables, execute instruction's core function, perform
+ cleanup afterwards.
+
+ @param thd thread context
+ @param nextp out - next instruction
+ @param open_tables if true then check read access to tables in LEX's table
+ list and open and lock them (used in instructions which
+ need to calculate some expression and don't execute
+ complete statement).
+ @param instr instruction for which we prepare context, and which core
+ function execute by calling its exec_core() method.
+ @param rerun_the_same_instr true in case the instruction is re-run after
+ a SQL statement associated with it has been
+ re-parsed.
+
+ @note
+ We are not saving/restoring some parts of THD which may need this because
+ we do this once for whole routine execution in sp_head::execute().
+
+ @return
+ 0/non-0 - Success/Failure
+*/
+
+int
+sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
+ bool open_tables, sp_instr* instr,
+ bool rerun_the_same_instr)
+{
+ int res= 0;
+ DBUG_ENTER("reset_lex_and_exec_core");
+
+ /*
+ The flag is saved at the entry to the following substatement.
+ It's reset further in the common code part.
+ It's merged with the saved parent's value at the exit of this func.
+ */
+ bool parent_modified_non_trans_table=
+ thd->transaction->stmt.modified_non_trans_table;
+ unsigned int parent_unsafe_rollback_flags=
+ thd->transaction->stmt.m_unsafe_rollback_flags;
+ thd->transaction->stmt.modified_non_trans_table= false;
+ thd->transaction->stmt.m_unsafe_rollback_flags= 0;
+
+ DBUG_ASSERT(!thd->derived_tables);
+ DBUG_ASSERT(thd->Item_change_list::is_empty());
+ /*
+ Use our own lex.
+ We should not save old value since it is saved/restored in
+ sp_head::execute() when we are entering/leaving routine.
+ */
+ thd->lex= m_lex;
+
+ /*
+ If the instruction is re-run by a reason of metadata change, then re-use
+ current query id rather than set a new one. Doing this way we retain
+ warnings generated on running the SP instruction. If a new query id was set
+ it would result in clearing all accumulated warnings in
+ mysql_execute_command
+ on calling
+ thd->get_stmt_da()->opt_clear_warning_info(thd->query_id)
+ since in this case Warning_info::m_warn_id != thd->query_id.
+
+ @sa Warning_info::opt_clear()
+ */
+ if (!rerun_the_same_instr)
+ thd->set_query_id(next_query_id());
+
+ if (thd->locked_tables_mode <= LTM_LOCK_TABLES)
+ {
+ /*
+ This statement will enter/leave prelocked mode on its own.
+ Entering prelocked mode changes table list and related members
+ of LEX, so we'll need to restore them.
+ */
+ if (lex_query_tables_own_last)
+ {
+ /*
+ We've already entered/left prelocked mode with this statement.
+ Attach the list of tables that need to be prelocked and mark m_lex
+ as having such list attached.
+ */
+ *lex_query_tables_own_last= prelocking_tables;
+ m_lex->mark_as_requiring_prelocking(lex_query_tables_own_last);
+ }
+ }
+
+ reinit_stmt_before_use(thd, m_lex);
+
+#ifndef EMBEDDED_LIBRARY
+ /*
+ If there was instruction which changed tracking state,
+ the result of changed tracking state send to client in OK packed.
+ So it changes result sent to client and probably can be different
+ independent on query text. So we can't cache such results.
+ */
+ if ((thd->client_capabilities & CLIENT_SESSION_TRACK) &&
+ (thd->server_status & SERVER_SESSION_STATE_CHANGED))
+ thd->lex->safe_to_cache_query= 0;
+#endif
+
+ Opt_trace_start ots(thd);
+ ots.init(thd, m_lex->query_tables, SQLCOM_SELECT, &m_lex->var_list,
+ nullptr, 0, thd->variables.character_set_client);
+
+ Json_writer_object trace_command(thd);
+ Json_writer_array trace_command_steps(thd, "steps");
+ if (open_tables)
+ res= instr->exec_open_and_lock_tables(thd, m_lex->query_tables);
+
+ if (likely(!res))
+ {
+ res= instr->exec_core(thd, nextp);
+ DBUG_PRINT("info",("exec_core returned: %d", res));
+ }
+
+ /*
+ Call after unit->cleanup() to close open table
+ key read.
+ */
+ if (open_tables)
+ {
+ m_lex->unit.cleanup();
+ /* Here we also commit or rollback the current statement. */
+ if (! thd->in_sub_stmt)
+ {
+ thd->get_stmt_da()->set_overwrite_status(true);
+ thd->is_error() ? trans_rollback_stmt(thd) : trans_commit_stmt(thd);
+ thd->get_stmt_da()->set_overwrite_status(false);
+ }
+ close_thread_tables(thd);
+ thd_proc_info(thd, 0);
+
+ if (! thd->in_sub_stmt)
+ {
+ if (thd->transaction_rollback_request)
+ {
+ trans_rollback_implicit(thd);
+ thd->release_transactional_locks();
+ }
+ else if (! thd->in_multi_stmt_transaction_mode())
+ thd->release_transactional_locks();
+ else
+ thd->mdl_context.release_statement_locks();
+ }
+ }
+ //TODO: why is this here if log_slow_query is in sp_instr_stmt::execute?
+ delete_explain_query(m_lex);
+
+ if (m_lex->query_tables_own_last)
+ {
+ /*
+ We've entered and left prelocking mode when executing statement
+ stored in m_lex.
+ m_lex->query_tables(->next_global)* list now has a 'tail' - a list
+ of tables that are added for prelocking. (If this is the first
+ execution, the 'tail' was added by open_tables(), otherwise we've
+ attached it above in this function).
+ Now we'll save the 'tail', and detach it.
+ */
+ lex_query_tables_own_last= m_lex->query_tables_own_last;
+ prelocking_tables= *lex_query_tables_own_last;
+ *lex_query_tables_own_last= nullptr;
+ m_lex->query_tables_last= m_lex->query_tables_own_last;
+ m_lex->mark_as_requiring_prelocking(nullptr);
+ }
+ thd->rollback_item_tree_changes();
+ /*
+ Update the state of the active arena if no errors on
+ open_tables stage.
+ */
+ if (likely(!res) || likely(!thd->is_error()))
+ thd->stmt_arena->state= Query_arena::STMT_EXECUTED;
+
+ /*
+ Merge here with the saved parent's values
+ what is needed from the substatement gained
+ */
+ thd->transaction->stmt.modified_non_trans_table |= parent_modified_non_trans_table;
+ thd->transaction->stmt.m_unsafe_rollback_flags |= parent_unsafe_rollback_flags;
+
+ TRANSACT_TRACKER(add_trx_state_from_thd(thd));
+
+ /*
+ Unlike for PS we should not call Item's destructors for newly created
+ items after execution of each instruction in stored routine. This is
+ because SP often create Item (like Item_int, Item_string etc...) when
+ they want to store some value in local variable, pass return value and
+ etc... So their life time should be longer than one instruction.
+
+ cleanup_items() is called in sp_head::execute()
+ */
+ thd->lex->restore_set_statement_var();
+ DBUG_RETURN(res || thd->is_error());
+}
+
+
+void sp_lex_keeper::free_lex(THD *thd)
+{
+ /*
+ Currently, m_lex_resp == false for sp_instr_cursor_copy_struct instructions
+ and in some cases for sp_instr_set instructions. For these classes
+ free_lex() returns control flow immediately and doesn't change m_lex.
+ */
+ if (!m_lex_resp || !m_lex) return;
+
+ /* Prevent endless recursion. */
+ m_lex->sphead= nullptr;
+ lex_end(m_lex);
+
+ sp_lex_cursor* cursor_lex= m_lex->get_lex_for_cursor();
+ if (cursor_lex == nullptr)
+ {
+ delete (st_lex_local *)m_lex;
+ /*
+ In case it is not sp_lex_cursor set thd->lex to the null value
+ if it points to a LEX object we just deleted in order to avoid
+ dangling pointers problem.
+ */
+ if (thd->lex == m_lex)
+ thd->lex= nullptr;
+
+ m_lex= nullptr;
+ m_lex_resp= false;
+ }
+ else
+ {
+ /*
+ sp_lex_cursor has references to items allocated on parsing a cursor
+ declaration statement. These items are deleted on re-parsing a failing
+ cursor declaration statement at the method
+ sp_lex_instr::cleanup_before_parsing.
+ Remove the reference to items that will be deleted from sp_lex_cursor
+ in order to avoid dangling pointers problem.
+ */
+ cleanup_items(cursor_lex->free_list);
+ cursor_lex->free_list= nullptr;
+ }
+
+ lex_query_tables_own_last= nullptr;
+}
+
+
+void sp_lex_keeper::set_lex(LEX *lex)
+{
+ m_lex= lex;
+ m_lex_resp= true;
+ m_lex->sp_lex_in_use= true;
+}
+
+
+int sp_lex_keeper::validate_lex_and_exec_core(THD *thd, uint *nextp,
+ bool open_tables,
+ sp_lex_instr* instr)
+{
+ Reprepare_observer reprepare_observer;
+ bool rerun_the_same_instr= false;
+
+ while (true)
+ {
+ if (instr->is_invalid())
+ {
+ thd->clear_error();
+ free_lex(thd);
+ LEX *lex= instr->parse_expr(thd, thd->spcont->m_sp, m_lex);
+
+ if (!lex) return true;
+
+ /*
+ m_lex != nullptr in case it points to sp_lex_cursor.
+ */
+ if (m_lex == nullptr)
+ set_lex(lex);
+
+ m_first_execution= true;
+ rerun_the_same_instr= true;
+ }
+
+ Reprepare_observer *stmt_reprepare_observer= nullptr;
+
+ if (!m_first_execution &&
+ ((sql_command_flags[m_lex->sql_command] & CF_REEXECUTION_FRAGILE) ||
+ m_lex->sql_command == SQLCOM_END))
+ {
+ reprepare_observer.reset_reprepare_observer();
+ stmt_reprepare_observer= &reprepare_observer;
+ }
+
+ Reprepare_observer *save_reprepare_observer= thd->m_reprepare_observer;
+ thd->m_reprepare_observer= stmt_reprepare_observer;
+
+ bool rc= reset_lex_and_exec_core(thd, nextp, open_tables, instr,
+ rerun_the_same_instr);
+
+ thd->m_reprepare_observer= save_reprepare_observer;
+
+ m_first_execution= false;
+
+ if (!rc)
+ break;
+
+ /*
+ Raise the error upper level in case:
+ - we got an error and Reprepare_observer is not set
+ - a fatal error has been got
+ - the current execution thread has been killed
+ - an error different from ER_NEED_REPREPARE has been got.
+ */
+ if (stmt_reprepare_observer == nullptr ||
+ thd->is_fatal_error ||
+ thd->killed ||
+ thd->get_stmt_da()->get_sql_errno() != ER_NEED_REPREPARE)
+ return 1;
+
+ if (!stmt_reprepare_observer->can_retry())
+ {
+ /*
+ Reprepare_observer sets error status in DA but Sql_condition is not
+ added. Please check Reprepare_observer::report_error(). Pushing
+ Sql_condition for ER_NEED_REPREPARE here.
+ */
+ Diagnostics_area *da= thd->get_stmt_da();
+ da->push_warning(thd, da->get_sql_errno(), da->get_sqlstate(),
+ Sql_state_errno_level::WARN_LEVEL_ERROR, da->message());
+ return 1;
+ }
+
+ instr->invalidate();
+ }
+
+ return 0;
+}
+
+
+int sp_lex_keeper::cursor_reset_lex_and_exec_core(THD *thd, uint *nextp,
+ bool open_tables,
+ sp_lex_instr *instr)
+{
+ Query_arena *old_arena= thd->stmt_arena;
+ /*
+ Get the Query_arena from the cursor statement LEX, which contains
+ the free_list of the query, so new items (if any) are stored in
+ the right free_list, and we can cleanup after each cursor operation,
+ e.g. open or cursor_copy_struct (for cursor%ROWTYPE variables).
+ */
+ thd->stmt_arena= m_lex->query_arena();
+ int res= validate_lex_and_exec_core(thd, nextp, open_tables, instr);
+ cleanup_items(thd->stmt_arena->free_list);
+ thd->stmt_arena= old_arena;
+ return res;
+}
+
+/*
+ sp_instr class functions
+*/
+
+int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables)
+{
+ int result;
+
+ /*
+ Check whenever we have access to tables for this statement
+ and open and lock them before executing instructions core function.
+ */
+ if (thd->open_temporary_tables(tables) ||
+ check_table_access(thd, SELECT_ACL, tables, false, UINT_MAX, false)
+ || open_and_lock_tables(thd, tables, true, 0))
+ result= -1;
+ else
+ result= 0;
+ /* Prepare all derived tables/views to catch possible errors. */
+ if (!result)
+ result= mysql_handle_derived(thd->lex, DT_PREPARE) ? -1 : 0;
+
+ return result;
+}
+
+uint sp_instr::get_cont_dest() const
+{
+ return (m_ip+1);
+}
+
+
+int sp_instr::exec_core(THD *thd, uint *nextp)
+{
+ DBUG_ASSERT(0);
+ return 0;
+}
+
+void sp_lex_instr::get_query(String *sql_query) const
+{
+ LEX_CSTRING expr_query= get_expr_query();
+
+ /*
+ the expression string must me initialized in constructor of a derived class
+ */
+ DBUG_ASSERT(expr_query.str != null_clex_str.str &&
+ expr_query.length != null_clex_str.length);
+
+ /*
+ Leave the method in case of empty query string.
+ */
+ if (!expr_query.length)
+ return;
+
+ sql_query->append(C_STRING_WITH_LEN("SELECT "));
+ sql_query->append(expr_query);
+}
+
+
+void sp_lex_instr::cleanup_before_parsing(enum_sp_type sp_type)
+{
+ Item *current= free_list;
+
+ while (current)
+ {
+ Item *next= current->next;
+ current->delete_self();
+ current= next;
+ }
+
+ free_list= nullptr;
+
+ if (sp_type == SP_TYPE_TRIGGER)
+ /*
+ Some of deleted items can be referenced from the list
+ m_cur_trigger_stmt_items. Clean up the list content to avoid
+ dangling references.
+ */
+ m_cur_trigger_stmt_items.empty();
+}
+
+
+/**
+ Set up field object for every NEW/OLD item of the trigger.
+
+ @param thd current thread
+ @param sp sp_head object of the trigger
+*/
+
+bool sp_lex_instr::setup_table_fields_for_trigger(
+ THD *thd, sp_head *sp,
+ SQL_I_List<Item_trigger_field> *next_trig_items_list)
+{
+ bool result= false;
+
+ DBUG_ASSERT(sp->m_trg);
+
+ for (Item_trigger_field *trg_field= sp->m_cur_instr_trig_field_items.first;
+ trg_field;
+ trg_field= trg_field->next_trg_field)
+ {
+ trg_field->setup_field(thd, sp->m_trg->base->get_subject_table(),
+ &sp->m_trg->subject_table_grants);
+ result= trg_field->fix_fields_if_needed(thd, (Item **)0);
+ }
+
+ /*
+ Move the list of Item_trigger_field objects, that have just been
+ filled in on parsing the trigger's statement, into the instruction list
+ owned by SP instruction.
+ */
+ if (sp->m_cur_instr_trig_field_items.elements)
+ {
+ sp->m_cur_instr_trig_field_items.save_and_clear(
+ &m_cur_trigger_stmt_items);
+ m_cur_trigger_stmt_items.first->next_trig_field_list= next_trig_items_list;
+ }
+
+ return result;
+}
+
+LEX* sp_lex_instr::parse_expr(THD *thd, sp_head *sp, LEX *sp_instr_lex)
+{
+ String sql_query;
+
+ get_query(&sql_query);
+
+ if (sql_query.length() == 0)
+ {
+ /**
+ The instruction has returned zero-length query string. That means, the
+ re-preparation of the instruction is not possible. We should not come
+ here in the normal case.
+ */
+ assert(false);
+ my_error(ER_UNKNOWN_ERROR, MYF(0));
+ return nullptr;
+ }
+
+ /*
+ Remember a pointer to the next list of Item_trigger_field objects.
+ The current list of Item_trigger_field objects is cleared up in the
+ method cleanup_before_parsing().
+ */
+ SQL_I_List<Item_trigger_field> *saved_ptr_to_next_trg_items_list= nullptr;
+
+ if (m_cur_trigger_stmt_items.elements)
+ saved_ptr_to_next_trg_items_list=
+ m_cur_trigger_stmt_items.first->next_trig_field_list;
+
+ /*
+ Clean up items owned by this SP instruction.
+ */
+ cleanup_before_parsing(sp->m_handler->type());
+
+ DBUG_ASSERT(mem_root != thd->mem_root);
+ /*
+ Back up the current free_list pointer and reset it to nullptr.
+ Set thd->mem_root pointing to a mem_root of SP instruction being re-parsed.
+ In that way any items created on parsing a statement of the current
+ instruction is allocated on SP instruction's mem_root and placed on its own
+ free_list that later assigned to the current sp_instr. We use the separate
+ free list for every instruction since at least at one place in the source
+ code (the function subst_spvars() to be accurate) we iterate along the
+ list sp_instr->free_list on executing of every SP instruction.
+ */
+ Query_arena backup;
+ /*
+ A statement of SP instruction is going to be re-parsed, so reset
+ SP arena's state to STMT_INITIALIZED_FOR_SP as its initial state.
+ */
+ state= STMT_INITIALIZED_FOR_SP;
+ thd->set_n_backup_active_arena(this, &backup);
+ thd->free_list= nullptr;
+
+ Parser_state parser_state;
+
+ if (parser_state.init(thd, sql_query.c_ptr(), sql_query.length()))
+ return nullptr;
+
+ // Create a new LEX and initialize it.
+
+ LEX *lex_saved= thd->lex;
+ Item **cursor_free_list= nullptr;
+
+ /*
+ sp_instr_lex != nullptr for cursor relating SP instructions (sp_instr_cpush,
+ sp_instr_cursor_copy_struct) and in some cases for sp_instr_set.
+ */
+ if (sp_instr_lex == nullptr)
+ {
+ thd->lex= new (thd->mem_root) st_lex_local;
+ lex_start(thd);
+ if (sp->m_handler->type() == SP_TYPE_TRIGGER)
+ {
+ /*
+ In case the trigger's statement being re-parsed, the correct trigger's
+ context (trigger event type and action time) should be copied from
+ trigger's sp_head to the new lex object.
+ */
+ thd->lex->trg_chistics.action_time=
+ thd->spcont->m_sp->m_trg->action_time;
+ thd->lex->trg_chistics.event= thd->spcont->m_sp->m_trg->event;
+ }
+ }
+ else
+ {
+ sp_lex_cursor* cursor_lex= sp_instr_lex->get_lex_for_cursor();
+ /*
+ In case sp_instr_cursor_copy_struct instruction being re-parsed
+ the items stored in free_list of sp_lex_cursor are not cleaned up
+ since the class sp_instr_cursor_copy_struct don't pass ownership of
+ lex object to sp_lex_keeper. So, clean up items stored in free_list of
+ sp_lex_cursor explicitly. For sp_instr_cpush instruction items stored
+ in free_list of sp_lex_cursor are cleaned up in the method free_lex()
+ since sp_instr_cpush owns a lex object stored in its sp_lex_keeper
+ data member. So, for the sp_instr_cpush instruction by the time we reach
+ this block cursor_lex->free_list is already empty.
+ */
+ cleanup_items(cursor_lex->free_list);
+ cursor_free_list= &cursor_lex->free_list;
+ DBUG_ASSERT(thd->lex == sp_instr_lex);
+ lex_start(thd);
+ }
+
+ thd->lex->sphead= sp;
+ thd->lex->spcont= m_ctx;
+
+ sql_digest_state *parent_digest= thd->m_digest;
+ PSI_statement_locker *parent_locker= thd->m_statement_psi;
+
+ thd->m_digest= nullptr;
+ thd->m_statement_psi= nullptr;
+
+ /*
+ sp_head::m_tmp_query is set by parser on parsing every statement of
+ a stored routine. Since here we re-parse failed statement outside stored
+ routine context, this data member isn't set. In result, the assert
+ DBUG_ASSERT(sphead->m_tmp_query <= start)
+ is fired in the constructor of the class Query_fragment.
+ To fix the assert failure, reset this data member to point to beginning of
+ the current statement being parsed.
+ */
+ const char *m_tmp_query_bak= sp->m_tmp_query;
+ sp->m_tmp_query= sql_query.c_ptr();
+
+ bool parsing_failed= parse_sql(thd, &parser_state, nullptr);
+
+ sp->m_tmp_query= m_tmp_query_bak;
+ thd->m_digest= parent_digest;
+ thd->m_statement_psi= parent_locker;
+
+ if (!parsing_failed)
+ {
+ thd->lex->set_trg_event_type_for_tables();
+ adjust_sql_command(thd->lex);
+ parsing_failed= on_after_expr_parsing(thd);
+
+ if (sp->m_handler->type() == SP_TYPE_TRIGGER)
+ setup_table_fields_for_trigger(thd, sp,
+ saved_ptr_to_next_trg_items_list);
+
+ if (cursor_free_list)
+ /*
+ Update sp_lex_cursor::free_list to point to a list of items
+ just created on re-parsing the cursor's statement.
+ */
+ *cursor_free_list= thd->free_list;
+ else
+ /*
+ Assign the list of items created on re-parsing the statement to
+ the current stored routine's instruction.
+ */
+ free_list= thd->free_list;
+
+ thd->free_list= nullptr;
+ }
+
+ Query_arena old;
+ thd->restore_active_arena(&old, &backup);
+
+ LEX *expr_lex= thd->lex;
+ thd->lex= lex_saved;
+
+ return parsing_failed ? nullptr : expr_lex;
+}
+
+
+/*
+ sp_instr_stmt class functions
+*/
+
+PSI_statement_info sp_instr_stmt::psi_info=
+{ 0, "stmt", 0};
+
+int
+sp_instr_stmt::execute(THD *thd, uint *nextp)
+{
+ int res;
+ bool save_enable_slow_log;
+ const CSET_STRING query_backup= thd->query_string;
+ Sub_statement_state backup_state;
+ DBUG_ENTER("sp_instr_stmt::execute");
+ DBUG_PRINT("info", ("command: %d", m_lex_keeper.sql_command()));
+
+ MYSQL_SET_STATEMENT_TEXT(thd->m_statement_psi, m_query.str, static_cast<uint>(m_query.length));
+
+#if defined(ENABLED_PROFILING)
+ /* This s-p instr is profilable and will be captured. */
+ thd->profiling.set_query_source(m_query.str, m_query.length);
+#endif
+
+ save_enable_slow_log= thd->enable_slow_log;
+ thd->store_slow_query_state(&backup_state);
+
+ if (!(res= alloc_query(thd, m_query.str, m_query.length)) &&
+ !(res=subst_spvars(thd, this, &m_query)))
+ {
+ /*
+ (the order of query cache and subst_spvars calls is irrelevant because
+ queries with SP vars can't be cached)
+ */
+ general_log_write(thd, COM_QUERY, thd->query(), thd->query_length());
+
+ if (query_cache_send_result_to_client(thd, thd->query(),
+ thd->query_length()) <= 0)
+ {
+ thd->reset_slow_query_state(&backup_state);
+ res= m_lex_keeper.validate_lex_and_exec_core(thd, nextp, false, this);
+ bool log_slow= !res && thd->enable_slow_log;
+
+ /* Finalize server status flags after executing a statement. */
+ if (log_slow || thd->get_stmt_da()->is_eof())
+ thd->update_server_status();
+
+ if (thd->get_stmt_da()->is_eof())
+ thd->protocol->end_statement();
+
+ query_cache_end_of_result(thd);
+
+ mysql_audit_general(thd, MYSQL_AUDIT_GENERAL_STATUS,
+ thd->get_stmt_da()->is_error() ?
+ thd->get_stmt_da()->sql_errno() : 0,
+ command_name[COM_QUERY].str);
+
+ if (log_slow)
+ log_slow_statement(thd);
+
+ /*
+ Restore enable_slow_log, that can be changed by a admin or call
+ command
+ */
+ thd->enable_slow_log= save_enable_slow_log;
+
+ /* Add the number of rows to thd for the 'call' statistics */
+ thd->add_slow_query_state(&backup_state);
+ }
+ else
+ {
+ /* change statistics */
+ enum_sql_command save_sql_command= thd->lex->sql_command;
+ thd->lex->sql_command= SQLCOM_SELECT;
+ status_var_increment(thd->status_var.com_stat[SQLCOM_SELECT]);
+ thd->update_stats();
+ thd->lex->sql_command= save_sql_command;
+ *nextp= m_ip+1;
+#ifdef PROTECT_STATEMENT_MEMROOT
+ mark_as_qc_used();
+#endif
+ }
+ thd->set_query(query_backup);
+ thd->query_name_consts= 0;
+
+ if (likely(!thd->is_error()))
+ {
+ res= 0;
+ thd->get_stmt_da()->reset_diagnostics_area();
+ }
+ }
+
+ DBUG_RETURN(res || thd->is_error());
+}
+
+
+void
+sp_instr_stmt::print(String *str)
+{
+ size_t i, len;
+
+ /* stmt CMD "..." */
+ if (str->reserve(SP_STMT_PRINT_MAXLEN+SP_INSTR_UINT_MAXLEN+8))
+ return;
+ str->qs_append(STRING_WITH_LEN("stmt "));
+ str->qs_append((uint)m_lex_keeper.sql_command());
+ str->qs_append(STRING_WITH_LEN(" \""));
+ len= m_query.length;
+ /*
+ Print the query string (but not too much of it), just to indicate which
+ statement it is.
+ */
+ if (len > SP_STMT_PRINT_MAXLEN)
+ len= SP_STMT_PRINT_MAXLEN-3;
+ /* Copy the query string and replace '\n' with ' ' in the process */
+ for (i= 0 ; i < len ; i++)
+ {
+ char c= m_query.str[i];
+ if (c == '\n')
+ c= ' ';
+ str->qs_append(c);
+ }
+ if (m_query.length > SP_STMT_PRINT_MAXLEN)
+ str->qs_append(STRING_WITH_LEN("...")); /* Indicate truncated string */
+ str->qs_append('"');
+}
+
+
+int
+sp_instr_stmt::exec_core(THD *thd, uint *nextp)
+{
+ MYSQL_QUERY_EXEC_START(thd->query(),
+ thd->thread_id,
+ thd->get_db(),
+ &thd->security_ctx->priv_user[0],
+ (char *)thd->security_ctx->host_or_ip,
+ 3);
+ int res= mysql_execute_command(thd);
+ MYSQL_QUERY_EXEC_DONE(res);
+ *nextp= m_ip+1;
+ return res;
+}
+
+
+/*
+ sp_instr_set class functions
+*/
+
+PSI_statement_info sp_instr_set::psi_info=
+{ 0, "set", 0};
+
+int
+sp_instr_set::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_set::execute");
+ DBUG_PRINT("info", ("offset: %u", m_offset));
+
+ DBUG_RETURN(m_lex_keeper.validate_lex_and_exec_core(thd, nextp, true, this));
+}
+
+
+sp_rcontext *sp_instr_set::get_rcontext(THD *thd) const
+{
+ return m_rcontext_handler->get_rcontext(thd->spcont);
+}
+
+
+int
+sp_instr_set::exec_core(THD *thd, uint *nextp)
+{
+ int res= get_rcontext(thd)->set_variable(thd, m_offset, &m_value);
+ *nextp = m_ip+1;
+ return res;
+}
+
+void
+sp_instr_set::print(String *str)
+{
+ /* set name@offset ... */
+ size_t rsrv = SP_INSTR_UINT_MAXLEN+6;
+ sp_variable *var = m_ctx->find_variable(m_offset);
+ const LEX_CSTRING *prefix= m_rcontext_handler->get_name_prefix();
+
+ /* 'var' should always be non-null, but just in case... */
+ if (var)
+ rsrv+= var->name.length + prefix->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("set "));
+ str->qs_append(prefix->str, prefix->length);
+ if (var)
+ {
+ str->qs_append(&var->name);
+ str->qs_append('@');
+ }
+ str->qs_append(m_offset);
+ str->qs_append(' ');
+ m_value->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+
+/*
+ sp_instr_set_field class functions
+*/
+
+int
+sp_instr_set_row_field::exec_core(THD *thd, uint *nextp)
+{
+ int res= get_rcontext(thd)->set_variable_row_field(thd, m_offset,
+ m_field_offset,
+ &m_value);
+ *nextp= m_ip + 1;
+ return res;
+}
+
+
+void
+sp_instr_set_row_field::print(String *str)
+{
+ /* set name@offset[field_offset] ... */
+ size_t rsrv= SP_INSTR_UINT_MAXLEN + 6 + 6 + 3;
+ sp_variable *var= m_ctx->find_variable(m_offset);
+ const LEX_CSTRING *prefix= m_rcontext_handler->get_name_prefix();
+ DBUG_ASSERT(var);
+ DBUG_ASSERT(var->field_def.is_row());
+ const Column_definition *def=
+ var->field_def.row_field_definitions()->elem(m_field_offset);
+ DBUG_ASSERT(def);
+
+ rsrv+= var->name.length + def->field_name.length + prefix->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("set "));
+ str->qs_append(prefix);
+ str->qs_append(&var->name);
+ str->qs_append('.');
+ str->qs_append(&def->field_name);
+ str->qs_append('@');
+ str->qs_append(m_offset);
+ str->qs_append('[');
+ str->qs_append(m_field_offset);
+ str->qs_append(']');
+ str->qs_append(' ');
+ m_value->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+
+/*
+ sp_instr_set_field_by_name class functions
+*/
+
+int
+sp_instr_set_row_field_by_name::exec_core(THD *thd, uint *nextp)
+{
+ int res= get_rcontext(thd)->set_variable_row_field_by_name(thd, m_offset,
+ m_field_name,
+ &m_value);
+ *nextp= m_ip + 1;
+ return res;
+}
+
+
+void
+sp_instr_set_row_field_by_name::print(String *str)
+{
+ /* set name.field@offset["field"] ... */
+ size_t rsrv= SP_INSTR_UINT_MAXLEN + 6 + 6 + 3 + 2;
+ sp_variable *var= m_ctx->find_variable(m_offset);
+ const LEX_CSTRING *prefix= m_rcontext_handler->get_name_prefix();
+ DBUG_ASSERT(var);
+ DBUG_ASSERT(var->field_def.is_table_rowtype_ref() ||
+ var->field_def.is_cursor_rowtype_ref());
+
+ rsrv+= var->name.length + 2 * m_field_name.length + prefix->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("set "));
+ str->qs_append(prefix);
+ str->qs_append(&var->name);
+ str->qs_append('.');
+ str->qs_append(&m_field_name);
+ str->qs_append('@');
+ str->qs_append(m_offset);
+ str->qs_append("[\"",2);
+ str->qs_append(&m_field_name);
+ str->qs_append("\"]",2);
+ str->qs_append(' ');
+ m_value->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+
+/*
+ sp_instr_set_trigger_field class functions
+*/
+
+PSI_statement_info sp_instr_set_trigger_field::psi_info=
+{ 0, "set_trigger_field", 0};
+
+int
+sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_set_trigger_field::execute");
+ thd->count_cuted_fields= CHECK_FIELD_ERROR_FOR_NULL;
+ DBUG_RETURN(m_lex_keeper.validate_lex_and_exec_core(thd, nextp, true, this));
+}
+
+
+int
+sp_instr_set_trigger_field::exec_core(THD *thd, uint *nextp)
+{
+ Abort_on_warning_instant_set aws(thd, thd->is_strict_mode() && !thd->lex->ignore);
+ const int res= (trigger_field->set_value(thd, &value) ? -1 : 0);
+ *nextp = m_ip+1;
+ return res;
+}
+
+void
+sp_instr_set_trigger_field::print(String *str)
+{
+ str->append(STRING_WITH_LEN("set_trigger_field "));
+ trigger_field->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+ str->append(STRING_WITH_LEN(":="));
+ value->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+
+/*
+ sp_instr_jump class functions
+*/
+
+PSI_statement_info sp_instr_jump::psi_info=
+{ 0, "jump", 0};
+
+int
+sp_instr_jump::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_jump::execute");
+ DBUG_PRINT("info", ("destination: %u", m_dest));
+
+ *nextp= m_dest;
+ DBUG_RETURN(0);
+}
+
+void
+sp_instr_jump::print(String *str)
+{
+ /* jump dest */
+ if (str->reserve(SP_INSTR_UINT_MAXLEN+5))
+ return;
+ str->qs_append(STRING_WITH_LEN("jump "));
+ str->qs_append(m_dest);
+}
+
+uint
+sp_instr_jump::opt_mark(sp_head *sp, List<sp_instr> *leads)
+{
+ m_dest= opt_shortcut_jump(sp, this);
+ if (m_dest != m_ip+1) /* Jumping to following instruction? */
+ marked= 1;
+ m_optdest= sp->get_instr(m_dest);
+ return m_dest;
+}
+
+uint
+sp_instr_jump::opt_shortcut_jump(sp_head *sp, sp_instr *start)
+{
+ uint dest= m_dest;
+ sp_instr *i;
+
+ while ((i= sp->get_instr(dest)))
+ {
+ uint ndest;
+
+ if (start == i || this == i)
+ break;
+ ndest= i->opt_shortcut_jump(sp, start);
+ if (ndest == dest)
+ break;
+ dest= ndest;
+ }
+ return dest;
+}
+
+void
+sp_instr_jump::opt_move(uint dst, List<sp_instr_opt_meta> *bp)
+{
+ if (m_dest > m_ip)
+ bp->push_back(this); // Forward
+ else if (m_optdest)
+ m_dest= m_optdest->m_ip; // Backward
+ m_ip= dst;
+}
+
+bool sp_instr_set_trigger_field::on_after_expr_parsing(THD *thd)
+{
+ DBUG_ASSERT(thd->lex->current_select->item_list.elements == 1);
+
+ Item *val= thd->lex->current_select->item_list.head();
+ DBUG_ASSERT(val != nullptr);
+
+ trigger_field = new (thd->mem_root)
+ Item_trigger_field(thd, thd->lex->current_context(),
+ Item_trigger_field::NEW_ROW,
+ m_trigger_field_name, UPDATE_ACL, false);
+
+ if (!val || !trigger_field)
+ return true;
+
+ thd->spcont->m_sp->m_cur_instr_trig_field_items.link_in_list(
+ trigger_field, &trigger_field->next_trg_field);
+
+ value= val;
+
+ return false;
+}
+
+
+/*
+ sp_instr_jump_if_not class functions
+*/
+
+PSI_statement_info sp_instr_jump_if_not::psi_info=
+{ 0, "jump_if_not", 0};
+
+int
+sp_instr_jump_if_not::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_jump_if_not::execute");
+ DBUG_PRINT("info", ("destination: %u", m_dest));
+ DBUG_RETURN(m_lex_keeper.validate_lex_and_exec_core(thd, nextp, true, this));
+}
+
+
+int
+sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp)
+{
+ Item *it;
+ int res;
+
+ it= thd->sp_prepare_func_item(&m_expr, 1);
+ if (! it)
+ {
+ res= -1;
+ }
+ else
+ {
+ res= 0;
+ if (! it->val_bool())
+ *nextp = m_dest;
+ else
+ *nextp = m_ip+1;
+ }
+
+ return res;
+}
+
+
+void
+sp_instr_jump_if_not::print(String *str)
+{
+ /* jump_if_not dest(cont) ... */
+ if (str->reserve(2*SP_INSTR_UINT_MAXLEN+14+32)) // Add some for the expr. too
+ return;
+ str->qs_append(STRING_WITH_LEN("jump_if_not "));
+ str->qs_append(m_dest);
+ str->qs_append('(');
+ str->qs_append(m_cont_dest);
+ str->qs_append(STRING_WITH_LEN(") "));
+ m_expr->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+
+uint
+sp_instr_jump_if_not::opt_mark(sp_head *sp, List<sp_instr> *leads)
+{
+ sp_instr *i;
+
+ marked= 1;
+ if ((i= sp->get_instr(m_dest)))
+ {
+ m_dest= i->opt_shortcut_jump(sp, this);
+ m_optdest= sp->get_instr(m_dest);
+ }
+ sp->add_mark_lead(m_dest, leads);
+ if ((i= sp->get_instr(m_cont_dest)))
+ {
+ m_cont_dest= i->opt_shortcut_jump(sp, this);
+ m_cont_optdest= sp->get_instr(m_cont_dest);
+ }
+ sp->add_mark_lead(m_cont_dest, leads);
+ return m_ip+1;
+}
+
+void
+sp_instr_jump_if_not::opt_move(uint dst, List<sp_instr_opt_meta> *bp)
+{
+ /*
+ cont. destinations may point backwards after shortcutting jumps
+ during the mark phase. If it's still pointing forwards, only
+ push this for backpatching if sp_instr_jump::opt_move() will not
+ do it (i.e. if the m_dest points backwards).
+ */
+ if (m_cont_dest > m_ip)
+ { // Forward
+ if (m_dest < m_ip)
+ bp->push_back(this);
+ }
+ else if (m_cont_optdest)
+ m_cont_dest= m_cont_optdest->m_ip; // Backward
+
+ /*
+ Take care about m_dest and m_ip
+ */
+ if (m_dest > m_ip)
+ bp->push_back(this); // Forward
+ else if (m_optdest)
+ m_dest= m_optdest->m_ip; // Backward
+ m_ip= dst;
+}
+
+
+/*
+ sp_instr_freturn class functions
+*/
+
+PSI_statement_info sp_instr_freturn::psi_info=
+{ 0, "freturn", 0};
+
+int
+sp_instr_freturn::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_freturn::execute");
+ DBUG_RETURN(m_lex_keeper.validate_lex_and_exec_core(thd, nextp, true, this));
+}
+
+
+int
+sp_instr_freturn::exec_core(THD *thd, uint *nextp)
+{
+ /*
+ RETURN is a "procedure statement" (in terms of the SQL standard).
+ That means, Diagnostics Area should be clean before its execution.
+ */
+
+ if (!(thd->variables.sql_mode & MODE_ORACLE))
+ {
+ /*
+ Don't clean warnings in ORACLE mode,
+ as they are needed for SQLCODE and SQLERRM:
+ BEGIN
+ SELECT a INTO a FROM t1;
+ RETURN 'No exception ' || SQLCODE || ' ' || SQLERRM;
+ EXCEPTION WHEN NO_DATA_FOUND THEN
+ RETURN 'Exception ' || SQLCODE || ' ' || SQLERRM;
+ END;
+ */
+ Diagnostics_area *da= thd->get_stmt_da();
+ da->clear_warning_info(da->warning_info_id());
+ }
+
+ /*
+ Change <next instruction pointer>, so that this will be the last
+ instruction in the stored function.
+ */
+
+ *nextp= UINT_MAX;
+
+ /*
+ Evaluate the value of return expression and store it in current runtime
+ context.
+
+ NOTE: It's necessary to evaluate result item right here, because we must
+ do it in scope of execution the current context/block.
+ */
+
+ return thd->spcont->set_return_value(thd, &m_value);
+}
+
+void
+sp_instr_freturn::print(String *str)
+{
+ /* freturn type expr... */
+ if (str->reserve(1024+8+32)) // Add some for the expr. too
+ return;
+ str->qs_append(STRING_WITH_LEN("freturn "));
+ LEX_CSTRING name= m_type_handler->name().lex_cstring();
+ str->qs_append(&name);
+ str->qs_append(' ');
+ m_value->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+/*
+ sp_instr_preturn class functions
+*/
+
+PSI_statement_info sp_instr_preturn::psi_info=
+{ 0, "preturn", 0};
+
+int
+sp_instr_preturn::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_preturn::execute");
+ *nextp= UINT_MAX;
+ DBUG_RETURN(0);
+}
+
+void
+sp_instr_preturn::print(String *str)
+{
+ str->append(STRING_WITH_LEN("preturn"));
+}
+
+/*
+ sp_instr_hpush_jump class functions
+*/
+
+PSI_statement_info sp_instr_hpush_jump::psi_info=
+{ 0, "hpush_jump", 0};
+
+int
+sp_instr_hpush_jump::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_hpush_jump::execute");
+
+ int ret= thd->spcont->push_handler(this);
+
+ *nextp= m_dest;
+
+ DBUG_RETURN(ret);
+}
+
+
+void
+sp_instr_hpush_jump::print(String *str)
+{
+ /* hpush_jump dest fsize type */
+ if (str->reserve(SP_INSTR_UINT_MAXLEN*2 + 21))
+ return;
+
+ str->qs_append(STRING_WITH_LEN("hpush_jump "));
+ str->qs_append(m_dest);
+ str->qs_append(' ');
+ str->qs_append(m_frame);
+
+ switch (m_handler->type) {
+ case sp_handler::EXIT:
+ str->qs_append(STRING_WITH_LEN(" EXIT"));
+ break;
+ case sp_handler::CONTINUE:
+ str->qs_append(STRING_WITH_LEN(" CONTINUE"));
+ break;
+ default:
+ // The handler type must be either CONTINUE or EXIT.
+ DBUG_ASSERT(0);
+ }
+}
+
+
+uint
+sp_instr_hpush_jump::opt_mark(sp_head *sp, List<sp_instr> *leads)
+{
+ sp_instr *i;
+
+ marked= 1;
+ if ((i= sp->get_instr(m_dest)))
+ {
+ m_dest= i->opt_shortcut_jump(sp, this);
+ m_optdest= sp->get_instr(m_dest);
+ }
+ sp->add_mark_lead(m_dest, leads);
+
+ /*
+ For continue handlers, all instructions in the scope of the handler
+ are possible leads. For example, the instruction after freturn might
+ be executed if the freturn triggers the condition handled by the
+ continue handler.
+
+ m_dest marks the start of the handler scope. It's added as a lead
+ above, so we start on m_dest+1 here.
+ m_opt_hpop is the hpop marking the end of the handler scope.
+ */
+ if (m_handler->type == sp_handler::CONTINUE)
+ {
+ for (uint scope_ip= m_dest+1; scope_ip <= m_opt_hpop; scope_ip++)
+ sp->add_mark_lead(scope_ip, leads);
+ }
+
+ return m_ip+1;
+}
+
+
+/*
+ sp_instr_hpop class functions
+*/
+
+PSI_statement_info sp_instr_hpop::psi_info=
+{ 0, "hpop", 0};
+
+int
+sp_instr_hpop::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_hpop::execute");
+ thd->spcont->pop_handlers(m_count);
+ *nextp= m_ip+1;
+ DBUG_RETURN(0);
+}
+
+void
+sp_instr_hpop::print(String *str)
+{
+ /* hpop count */
+ if (str->reserve(SP_INSTR_UINT_MAXLEN+5))
+ return;
+ str->qs_append(STRING_WITH_LEN("hpop "));
+ str->qs_append(m_count);
+}
+
+
+/*
+ sp_instr_hreturn class functions
+*/
+
+PSI_statement_info sp_instr_hreturn::psi_info=
+{ 0, "hreturn", 0};
+
+int
+sp_instr_hreturn::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_hreturn::execute");
+
+ uint continue_ip= thd->spcont->exit_handler(thd->get_stmt_da());
+
+ *nextp= m_dest ? m_dest : continue_ip;
+
+ DBUG_RETURN(0);
+}
+
+
+void
+sp_instr_hreturn::print(String *str)
+{
+ /* hreturn framesize dest */
+ if (str->reserve(SP_INSTR_UINT_MAXLEN*2 + 9))
+ return;
+ str->qs_append(STRING_WITH_LEN("hreturn "));
+ if (m_dest)
+ {
+ // NOTE: this is legacy: hreturn instruction for EXIT handler
+ // should print out 0 as frame index.
+ str->qs_append(STRING_WITH_LEN("0 "));
+ str->qs_append(m_dest);
+ }
+ else
+ {
+ str->qs_append(m_frame);
+ }
+}
+
+
+uint
+sp_instr_hreturn::opt_mark(sp_head *sp, List<sp_instr> *leads)
+{
+ marked= 1;
+
+ if (m_dest)
+ {
+ /*
+ This is an EXIT handler; next instruction step is in m_dest.
+ */
+ return m_dest;
+ }
+
+ /*
+ This is a CONTINUE handler; next instruction step will come from
+ the handler stack and not from opt_mark.
+ */
+ return UINT_MAX;
+}
+
+
+/*
+ sp_instr_cpush class functions
+*/
+
+PSI_statement_info sp_instr_cpush::psi_info=
+{ 0, "cpush", 0};
+
+int
+sp_instr_cpush::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_cpush::execute");
+
+ sp_cursor::reset(thd);
+ m_lex_keeper.disable_query_cache();
+ thd->spcont->push_cursor(this);
+
+ *nextp= m_ip+1;
+
+ DBUG_RETURN(false);
+}
+
+
+int
+sp_instr_cpush::exec_core(THD *thd, uint *nextp)
+{
+ sp_cursor *c = thd->spcont->get_cursor(m_cursor);
+ return c ? c->open(thd) : true;
+}
+
+void
+sp_instr_cpush::print(String *str)
+{
+ const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
+
+ /* cpush name@offset */
+ size_t rsrv= SP_INSTR_UINT_MAXLEN+7;
+
+ if (cursor_name)
+ rsrv+= cursor_name->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("cpush "));
+ if (cursor_name)
+ {
+ str->qs_append(cursor_name->str, cursor_name->length);
+ str->qs_append('@');
+ }
+ str->qs_append(m_cursor);
+}
+
+
+/*
+ sp_instr_cpop class functions
+*/
+
+PSI_statement_info sp_instr_cpop::psi_info=
+{ 0, "cpop", 0};
+
+int
+sp_instr_cpop::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_cpop::execute");
+ thd->spcont->pop_cursors(thd, m_count);
+ *nextp= m_ip+1;
+ DBUG_RETURN(0);
+}
+
+
+void
+sp_instr_cpop::print(String *str)
+{
+ /* cpop count */
+ if (str->reserve(SP_INSTR_UINT_MAXLEN+5))
+ return;
+ str->qs_append(STRING_WITH_LEN("cpop "));
+ str->qs_append(m_count);
+}
+
+
+/*
+ sp_instr_copen class functions
+*/
+
+/**
+ @todo
+ Assert that we either have an error or a cursor
+*/
+
+PSI_statement_info sp_instr_copen::psi_info=
+{ 0, "copen", 0};
+
+int
+sp_instr_copen::execute(THD *thd, uint *nextp)
+{
+ /*
+ We don't store a pointer to the cursor in the instruction to be
+ able to reuse the same instruction among different threads in future.
+ */
+ sp_cursor *c= thd->spcont->get_cursor(m_cursor);
+ int res;
+ DBUG_ENTER("sp_instr_copen::execute");
+
+ if (! c)
+ res= -1;
+ else
+ {
+ sp_lex_keeper *lex_keeper= c->get_lex_keeper();
+ /*
+ The expression
+ sp_cursor *c= thd->spcont->get_cursor(m_cursor);
+ that has run above returns an instance of the class sp_instr_cpush
+ that was added former on handling the statement DECLARE CURSOR.
+ The class sp_instr_cpush implements the pure virtual method
+ sp_cursor::get_lex_keeper()
+ so the following DBUG_ASSERT must be ok. This DBUG_ASSERT is added
+ in order to catch possible future changes in execution flow that could
+ break implicit relationship between sp_instr_copen and sp_instr_cpush.
+ */
+ DBUG_ASSERT(lex_keeper);
+ /*
+ Get a pointer to a SP instruction sp_instr_cpush that was instantiated
+ on handling the statement DECLARE CURSOR. The pointer to sp_instr_cpush
+ is passed to the method cursor_reset_lex_and_exec_core() finishing
+ a process of cursor opening by calling the method
+ sp_instr_cpush::exec_core
+ that does a real work for cursor opening.
+ */
+ sp_instr_cpush *cpush_instr= c->get_push_instr();
+ /*
+ For the same goal as previous DBUG_ASSERT, this DBUG_ASSERT ensure that
+ sp_inst_cpush has been already added to SP, that is the statement
+ DECLARE CURSOR occurred before the statement OPEN cursor_name.
+ */
+ DBUG_ASSERT(cpush_instr);
+ res= lex_keeper->cursor_reset_lex_and_exec_core(thd, nextp, false,
+ cpush_instr);
+
+ *nextp= m_ip + 1;
+ }
+ DBUG_RETURN(res);
+}
+
+
+void
+sp_instr_copen::print(String *str)
+{
+ const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
+
+ /* copen name@offset */
+ size_t rsrv= SP_INSTR_UINT_MAXLEN+7;
+
+ if (cursor_name)
+ rsrv+= cursor_name->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("copen "));
+ if (cursor_name)
+ {
+ str->qs_append(cursor_name->str, cursor_name->length);
+ str->qs_append('@');
+ }
+ str->qs_append(m_cursor);
+}
+
+
+/*
+ sp_instr_cclose class functions
+*/
+
+PSI_statement_info sp_instr_cclose::psi_info=
+{ 0, "cclose", 0};
+
+int
+sp_instr_cclose::execute(THD *thd, uint *nextp)
+{
+ sp_cursor *c= thd->spcont->get_cursor(m_cursor);
+ int res;
+ DBUG_ENTER("sp_instr_cclose::execute");
+
+ if (! c)
+ res= -1;
+ else
+ res= c->close(thd);
+ *nextp= m_ip+1;
+ DBUG_RETURN(res);
+}
+
+
+void
+sp_instr_cclose::print(String *str)
+{
+ const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
+
+ /* cclose name@offset */
+ size_t rsrv= SP_INSTR_UINT_MAXLEN+8;
+
+ if (cursor_name)
+ rsrv+= cursor_name->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("cclose "));
+ if (cursor_name)
+ {
+ str->qs_append(cursor_name->str, cursor_name->length);
+ str->qs_append('@');
+ }
+ str->qs_append(m_cursor);
+}
+
+
+/*
+ sp_instr_cfetch class functions
+*/
+
+PSI_statement_info sp_instr_cfetch::psi_info=
+{ 0, "cfetch", 0};
+
+int
+sp_instr_cfetch::execute(THD *thd, uint *nextp)
+{
+ sp_cursor *c= thd->spcont->get_cursor(m_cursor);
+ int res;
+ Query_arena backup_arena;
+ DBUG_ENTER("sp_instr_cfetch::execute");
+
+ res= c ? c->fetch(thd, &m_varlist, m_error_on_no_data) : -1;
+
+ *nextp= m_ip+1;
+ DBUG_RETURN(res);
+}
+
+
+void
+sp_instr_cfetch::print(String *str)
+{
+ List_iterator_fast<sp_variable> li(m_varlist);
+ sp_variable *pv;
+ const LEX_CSTRING *cursor_name= m_ctx->find_cursor(m_cursor);
+
+ /* cfetch name@offset vars... */
+ size_t rsrv= SP_INSTR_UINT_MAXLEN+8;
+
+ if (cursor_name)
+ rsrv+= cursor_name->length;
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("cfetch "));
+ if (cursor_name)
+ {
+ str->qs_append(cursor_name->str, cursor_name->length);
+ str->qs_append('@');
+ }
+ str->qs_append(m_cursor);
+ while ((pv= li++))
+ {
+ if (str->reserve(pv->name.length+SP_INSTR_UINT_MAXLEN+2))
+ return;
+ str->qs_append(' ');
+ str->qs_append(&pv->name);
+ str->qs_append('@');
+ str->qs_append(pv->offset);
+ }
+}
+
+/*
+ sp_instr_agg_cfetch class functions
+*/
+
+PSI_statement_info sp_instr_agg_cfetch::psi_info=
+{ 0, "agg_cfetch", 0};
+
+int
+sp_instr_agg_cfetch::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_agg_cfetch::execute");
+ int res= 0;
+ if (!thd->spcont->instr_ptr)
+ {
+ *nextp= m_ip+1;
+ thd->spcont->instr_ptr= m_ip + 1;
+ }
+ else if (!thd->spcont->pause_state)
+ thd->spcont->pause_state= true;
+ else
+ {
+ thd->spcont->pause_state= false;
+ if (thd->server_status & SERVER_STATUS_LAST_ROW_SENT)
+ {
+ my_message(ER_SP_FETCH_NO_DATA,
+ ER_THD(thd, ER_SP_FETCH_NO_DATA), MYF(0));
+ res= -1;
+ thd->spcont->quit_func= true;
+ }
+ else
+ *nextp= m_ip + 1;
+ }
+ DBUG_RETURN(res);
+}
+
+void
+sp_instr_agg_cfetch::print(String *str)
+{
+
+ uint rsrv= SP_INSTR_UINT_MAXLEN+11;
+
+ if (str->reserve(rsrv))
+ return;
+ str->qs_append(STRING_WITH_LEN("agg_cfetch"));
+}
+
+/*
+ sp_instr_cursor_copy_struct class functions
+*/
+
+/**
+ This methods processes cursor %ROWTYPE declarations, e.g.:
+ CURSOR cur IS SELECT * FROM t1;
+ rec cur%ROWTYPE;
+ and does the following:
+ - opens the cursor without copying data (materialization).
+ - copies the cursor structure to the associated %ROWTYPE variable.
+*/
+
+PSI_statement_info sp_instr_cursor_copy_struct::psi_info=
+{ 0, "cursor_copy_struct", 0};
+
+int
+sp_instr_cursor_copy_struct::exec_core(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_cursor_copy_struct::exec_core");
+ int ret= 0;
+ Item_field_row *row= (Item_field_row*) thd->spcont->get_variable(m_var);
+ DBUG_ASSERT(row->type_handler() == &type_handler_row);
+
+ /*
+ Copy structure only once. If the cursor%ROWTYPE variable is declared
+ inside a LOOP block, it gets its structure on the first loop iteration
+ and remembers the structure for all consequent loop iterations.
+ It we recreated the structure on every iteration, we would get
+ potential memory leaks, and it would be less efficient.
+ */
+ if (!row->arguments())
+ {
+ sp_cursor tmp(thd, true);
+ // Open the cursor without copying data
+ if (!(ret= tmp.open(thd)))
+ {
+ Row_definition_list defs;
+ /*
+ Create row elements on the caller arena.
+ It's the same arena that was used during sp_rcontext::create().
+ This puts cursor%ROWTYPE elements on the same mem_root
+ where explicit ROW elements and table%ROWTYPE reside:
+ - tmp.export_structure() allocates new Spvar_definition instances
+ and their components (such as TYPELIBs).
+ - row->row_create_items() creates new Item_field instances.
+ They all are created on the same mem_root.
+ */
+ Query_arena current_arena;
+ thd->set_n_backup_active_arena(thd->spcont->callers_arena, &current_arena);
+ if (!(ret= tmp.export_structure(thd, &defs)))
+ row->row_create_items(thd, &defs);
+ thd->restore_active_arena(thd->spcont->callers_arena, &current_arena);
+ tmp.close(thd);
+ }
+ }
+ *nextp= m_ip + 1;
+ DBUG_RETURN(ret);
+}
+
+
+int
+sp_instr_cursor_copy_struct::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_cursor_copy_struct::execute");
+ int ret= m_lex_keeper.cursor_reset_lex_and_exec_core(thd, nextp, false, this);
+ DBUG_RETURN(ret);
+}
+
+
+void
+sp_instr_cursor_copy_struct::print(String *str)
+{
+ sp_variable *var= m_ctx->find_variable(m_var);
+ const LEX_CSTRING *name= m_ctx->find_cursor(m_cursor);
+ str->append(STRING_WITH_LEN("cursor_copy_struct "));
+ str->append(name);
+ str->append(' ');
+ str->append(&var->name);
+ str->append('@');
+ str->append_ulonglong(m_var);
+}
+
+
+/*
+ sp_instr_error class functions
+*/
+
+PSI_statement_info sp_instr_error::psi_info=
+{ 0, "error", 0};
+
+int
+sp_instr_error::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_error::execute");
+ my_message(m_errcode, ER_THD(thd, m_errcode), MYF(0));
+ WSREP_DEBUG("sp_instr_error: %s %d", ER_THD(thd, m_errcode), thd->is_error());
+ *nextp= m_ip+1;
+ DBUG_RETURN(-1);
+}
+
+
+void
+sp_instr_error::print(String *str)
+{
+ /* error code */
+ if (str->reserve(SP_INSTR_UINT_MAXLEN+6))
+ return;
+ str->qs_append(STRING_WITH_LEN("error "));
+ str->qs_append(m_errcode);
+}
+
+
+/**************************************************************************
+ sp_instr_set_case_expr class implementation
+**************************************************************************/
+
+PSI_statement_info sp_instr_set_case_expr::psi_info=
+{ 0, "set_case_expr", 0};
+
+int
+sp_instr_set_case_expr::execute(THD *thd, uint *nextp)
+{
+ DBUG_ENTER("sp_instr_set_case_expr::execute");
+
+ DBUG_RETURN(m_lex_keeper.validate_lex_and_exec_core(thd, nextp, true, this));
+}
+
+
+int
+sp_instr_set_case_expr::exec_core(THD *thd, uint *nextp)
+{
+ int res= thd->spcont->set_case_expr(thd, m_case_expr_id, &m_case_expr);
+
+ if (res && !thd->spcont->get_case_expr(m_case_expr_id))
+ {
+ /*
+ Failed to evaluate the value, the case expression is still not
+ initialized. Set to NULL so we can continue.
+ */
+
+ Item *null_item= new (thd->mem_root) Item_null(thd);
+
+ if (!null_item ||
+ thd->spcont->set_case_expr(thd, m_case_expr_id, &null_item))
+ {
+ /* If this also failed, we have to abort. */
+ my_error(ER_OUT_OF_RESOURCES, MYF(ME_FATAL));
+ }
+ }
+ else
+ *nextp= m_ip+1;
+
+ return res;
+}
+
+
+void
+sp_instr_set_case_expr::print(String *str)
+{
+ /* set_case_expr (cont) id ... */
+ str->reserve(2*SP_INSTR_UINT_MAXLEN+18+32); // Add some extra for expr too
+ str->qs_append(STRING_WITH_LEN("set_case_expr ("));
+ str->qs_append(m_cont_dest);
+ str->qs_append(STRING_WITH_LEN(") "));
+ str->qs_append(m_case_expr_id);
+ str->qs_append(' ');
+ m_case_expr->print(str, enum_query_type(QT_ORDINARY |
+ QT_ITEM_ORIGINAL_FUNC_NULLIF));
+}
+
+uint
+sp_instr_set_case_expr::opt_mark(sp_head *sp, List<sp_instr> *leads)
+{
+ sp_instr *i;
+
+ marked= 1;
+ if ((i= sp->get_instr(m_cont_dest)))
+ {
+ m_cont_dest= i->opt_shortcut_jump(sp, this);
+ m_cont_optdest= sp->get_instr(m_cont_dest);
+ }
+ sp->add_mark_lead(m_cont_dest, leads);
+ return m_ip+1;
+}
+
+void
+sp_instr_set_case_expr::opt_move(uint dst, List<sp_instr_opt_meta> *bp)
+{
+ if (m_cont_dest > m_ip)
+ bp->push_back(this); // Forward
+ else if (m_cont_optdest)
+ m_cont_dest= m_cont_optdest->m_ip; // Backward
+ m_ip= dst;
+}
diff --git a/sql/sp_instr.h b/sql/sp_instr.h
new file mode 100644
index 00000000..cef44c45
--- /dev/null
+++ b/sql/sp_instr.h
@@ -0,0 +1,1626 @@
+#ifndef _SP_INSTR_H_
+#define _SP_INSTR_H_
+
+#include "mariadb.h"
+
+#include "sql_alloc.h" // Sql_alloc
+#include "sql_class.h" // THD, Query_arena
+#include "sql_lex.h" // class sp_lex_local
+#include "sp_pcontext.h" // class sp_pcontext
+#include "sp_head.h" // class sp_head
+
+/*
+ Sufficient max length of frame offsets.
+*/
+static const int SP_INSTR_UINT_MAXLEN= 8;
+
+class sp_lex_cursor: public sp_lex_local, public Query_arena
+{
+public:
+ sp_lex_cursor(THD *thd, const LEX *oldlex, MEM_ROOT *mem_root_arg)
+ : sp_lex_local(thd, oldlex),
+ Query_arena(mem_root_arg, STMT_INITIALIZED_FOR_SP),
+ m_expr_str(empty_clex_str)
+ {}
+
+ sp_lex_cursor(THD *thd, const LEX *oldlex)
+ : sp_lex_local(thd, oldlex),
+ Query_arena(thd->lex->sphead->get_main_mem_root(),
+ STMT_INITIALIZED_FOR_SP),
+ m_expr_str(empty_clex_str)
+ {}
+
+ ~sp_lex_cursor() { free_items(); }
+
+ bool cleanup_stmt(bool /*restore_set_statement_vars*/) override
+ {
+ return false;
+ }
+
+ Query_arena *query_arena() override
+ {
+ return this;
+ }
+
+ bool validate()
+ {
+ DBUG_ASSERT(sql_command == SQLCOM_SELECT);
+ if (result)
+ {
+ my_error(ER_SP_BAD_CURSOR_SELECT, MYF(0));
+ return true;
+ }
+
+ return false;
+ }
+
+ bool stmt_finalize(THD *thd)
+ {
+ if (validate())
+ return true;
+
+ sp_lex_in_use= true;
+ free_list= thd->free_list;
+ thd->free_list= nullptr;
+
+ return false;
+ }
+
+ void set_expr_str(const LEX_CSTRING &expr_str)
+ {
+ m_expr_str= expr_str;
+ }
+
+ const LEX_CSTRING &get_expr_str() const
+ {
+ return m_expr_str;
+ }
+
+ sp_lex_cursor* get_lex_for_cursor() override
+ {
+ return this;
+ }
+
+private:
+ LEX_CSTRING m_expr_str;
+};
+
+
+//
+// "Instructions"...
+//
+
+// Forward declaration for use in the method sp_instr::opt_move().
+class sp_instr_opt_meta;
+
+class sp_instr :public Query_arena, public Sql_alloc
+{
+ sp_instr(const sp_instr &); /**< Prevent use of these */
+ void operator=(sp_instr &);
+
+public:
+ uint marked;
+ uint m_ip; ///< My index
+ sp_pcontext *m_ctx; ///< My parse context
+ uint m_lineno;
+
+ /// Should give each a name or type code for debugging purposes?
+ sp_instr(uint ip, sp_pcontext *ctx)
+ : Query_arena(0, STMT_INITIALIZED_FOR_SP),
+ marked(0),
+ m_ip(ip),
+ m_ctx(ctx),
+ m_lineno(0)
+#ifdef PROTECT_STATEMENT_MEMROOT
+ , m_has_been_run(NON_RUN)
+#endif
+ {}
+
+ virtual ~sp_instr()
+ {
+ free_items();
+ }
+
+
+ /**
+ Execute this instruction
+
+
+ @param thd Thread handle
+ @param[out] nextp index of the next instruction to execute. (For most
+ instructions this will be the instruction following this
+ one). Note that this parameter is undefined in case of
+ errors, use get_cont_dest() to find the continuation
+ instruction for CONTINUE error handlers.
+
+ @retval 0 on success,
+ @retval other if some error occurred
+ */
+ virtual int execute(THD *thd, uint *nextp) = 0;
+
+ /**
+ Execute <code>open_and_lock_tables()</code> for this statement.
+ Open and lock the tables used by this statement, as a pre-requisite
+ to execute the core logic of this instruction with
+ <code>exec_core()</code>.
+ @param thd the current thread
+ @param tables the list of tables to open and lock
+ @return zero on success, non zero on failure.
+ */
+ int exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables);
+
+ /**
+ Get the continuation destination of this instruction.
+ @return the continuation destination
+ */
+ virtual uint get_cont_dest() const;
+
+ /*
+ Execute core function of instruction after all preparations (e.g.
+ setting of proper LEX, saving part of the thread context have been
+ done).
+
+ Should be implemented for instructions using expressions or whole
+ statements (thus having to have own LEX). Used in concert with
+ sp_lex_keeper class and its descendants (there are none currently).
+ */
+ virtual int exec_core(THD *thd, uint *nextp);
+
+ virtual void print(String *str) = 0;
+
+ virtual void backpatch(uint dest, sp_pcontext *dst_ctx)
+ {}
+
+ /**
+ Mark this instruction as reachable during optimization and return the
+ index to the next instruction. Jump instruction will add their
+ destination to the leads list.
+ */
+ virtual uint opt_mark(sp_head *sp, List<sp_instr> *leads)
+ {
+ marked= 1;
+ return m_ip+1;
+ }
+
+ /**
+ Short-cut jumps to jumps during optimization. This is used by the
+ jump instructions' opt_mark() methods. 'start' is the starting point,
+ used to prevent the mark sweep from looping for ever. Return the
+ end destination.
+ */
+ virtual uint opt_shortcut_jump(sp_head *sp, sp_instr *start)
+ {
+ return m_ip;
+ }
+
+ /**
+ Inform the instruction that it has been moved during optimization.
+ Most instructions will simply update its index, but jump instructions
+ must also take care of their destination pointers. Forward jumps get
+ pushed to the backpatch list 'ibp'.
+ */
+ virtual void opt_move(uint dst, List<sp_instr_opt_meta> *ibp)
+ {
+ m_ip= dst;
+ }
+
+ virtual PSI_statement_info* get_psi_info() = 0;
+
+ virtual SQL_I_List<Item_trigger_field>* get_instr_trig_field_list()
+ {
+ return nullptr;
+ }
+
+#ifdef PROTECT_STATEMENT_MEMROOT
+ bool has_been_run() const
+ {
+ return m_has_been_run == RUN;
+ }
+
+ void mark_as_qc_used()
+ {
+ m_has_been_run= QC;
+ }
+
+ void mark_as_run()
+ {
+ if (m_has_been_run == QC)
+ m_has_been_run= NON_RUN; // answer was from WC => not really executed
+ else
+ m_has_been_run= RUN;
+ }
+
+ void mark_as_not_run()
+ {
+ m_has_been_run= NON_RUN;
+ }
+
+private:
+ enum {NON_RUN, QC, RUN} m_has_been_run;
+#endif
+}; // class sp_instr : public Sql_alloc
+
+
+class sp_instr;
+class sp_lex_instr;
+
+/**
+ Auxilary class to which instructions delegate responsibility
+ for handling LEX and preparations before executing statement
+ or calculating complex expression.
+
+ Exist mainly to avoid having double hierarchy between instruction
+ classes.
+
+ @todo
+ Add ability to not store LEX and do any preparations if
+ expression used is simple.
+*/
+
+class sp_lex_keeper final
+{
+ /** Prevent use of these */
+ sp_lex_keeper(const sp_lex_keeper &);
+ void operator=(sp_lex_keeper &);
+
+public:
+ sp_lex_keeper(LEX *lex, bool lex_resp)
+ : m_lex(lex),
+ m_lex_resp(lex_resp),
+ prelocking_tables(nullptr),
+ lex_query_tables_own_last(nullptr),
+ m_first_execution(true)
+ {
+ lex->sp_lex_in_use= true;
+ }
+
+ ~sp_lex_keeper()
+ {
+ if (m_lex_resp)
+ {
+ /* Prevent endless recursion. */
+ m_lex->sphead= nullptr;
+ lex_end(m_lex);
+ delete m_lex;
+ }
+ }
+
+ /**
+ Prepare execution of instruction using LEX, if requested check whenever
+ we have read access to tables used and open/lock them, call instruction's
+ exec_core() method, perform cleanup afterwards.
+
+ @todo Conflicting comment in sp_head.cc
+ */
+ int reset_lex_and_exec_core(THD *thd, uint *nextp, bool open_tables,
+ sp_instr* instr, bool rerun_the_same_instr);
+
+
+ /**
+ Do several attempts to execute an instruction.
+
+ This method installs Reprepare_observer to catch possible metadata changes
+ on depending database objects, then calls reset_lex_and_exec_core()
+ to execute the instruction. If execution of the instruction fails, does
+ re-parsing of the instruction and re-execute it.
+
+ @param thd Thread context.
+ @param[out] nextp Pointer for storing a next instruction to execute
+ @param open_tables Flag to specify if the function should check read
+ access to tables in LEX's table list and open and
+ lock them (used in instructions which need to
+ calculate some expression and don't execute
+ complete statement).
+ @param instr instruction which we prepare context and run.
+
+ @return 0 on success, 1 on error
+ */
+ int validate_lex_and_exec_core(THD *thd, uint *nextp, bool open_tables,
+ sp_lex_instr* instr);
+
+ int cursor_reset_lex_and_exec_core(THD *thd, uint *nextp, bool open_tables,
+ sp_lex_instr *instr);
+
+ /**
+ (Re-)parse the query corresponding to this instruction and return a new
+ LEX-object.
+
+ @param thd Thread context.
+ @param sp The stored program.
+
+ @return new LEX-object or NULL in case of failure.
+ */
+ LEX *parse_expr(THD *thd, const sp_head *sp);
+
+ inline uint sql_command() const
+ {
+ return (uint)m_lex->sql_command;
+ }
+
+ void disable_query_cache()
+ {
+ m_lex->safe_to_cache_query= 0;
+ }
+
+private:
+ /**
+ Clean up and destroy owned LEX object.
+ */
+ void free_lex(THD *thd);
+
+ /**
+ Set LEX object.
+
+ @param lex LEX-object
+ */
+ void set_lex(LEX *lex);
+
+private:
+ LEX *m_lex;
+
+ /**
+ Indicates whenever this sp_lex_keeper instance responsible
+ for LEX deletion.
+ */
+ bool m_lex_resp;
+
+ /*
+ Support for being able to execute this statement in two modes:
+ a) inside prelocked mode set by the calling procedure or its ancestor.
+ b) outside of prelocked mode, when this statement enters/leaves
+ prelocked mode itself.
+ */
+
+ /**
+ List of additional tables this statement needs to lock when it
+ enters/leaves prelocked mode on its own.
+ */
+ TABLE_LIST *prelocking_tables;
+
+ /**
+ The value m_lex->query_tables_own_last should be set to this when the
+ statement enters/leaves prelocked mode on its own.
+ */
+ TABLE_LIST **lex_query_tables_own_last;
+
+ bool m_first_execution;
+};
+
+
+/**
+ The base class for any stored program instruction that need to get access
+ to a LEX object on execution.
+*/
+
+class sp_lex_instr : public sp_instr
+{
+public:
+ sp_lex_instr(uint ip, sp_pcontext *ctx, LEX *lex, bool is_lex_owner)
+ : sp_instr(ip, ctx),
+ m_lex_keeper(lex, is_lex_owner)
+ {}
+
+ virtual bool is_invalid() const = 0;
+
+ virtual void invalidate() = 0;
+
+ /**
+ Return the query string, which can be passed to the parser,
+ that is a valid SQL-statement.
+
+ @param[out] sql_query SQL-statement query string.
+ */
+ virtual void get_query(String *sql_query) const;
+
+
+ /**
+ (Re-)parse the query corresponding to this instruction and return a new
+ LEX-object.
+
+ @param thd Thread context.
+ @param sp The stored program.
+ @param lex SP instruction's lex
+
+ @return new LEX-object or NULL in case of failure.
+ */
+ LEX *parse_expr(THD *thd, sp_head *sp, LEX *lex);
+
+ SQL_I_List<Item_trigger_field>* get_instr_trig_field_list() override
+ {
+ return &m_cur_trigger_stmt_items;
+ }
+
+protected:
+ /**
+ @return the expression query string. This string can't be passed directly
+ to the parser as it is most likely not a valid SQL-statement.
+ */
+ virtual LEX_CSTRING get_expr_query() const = 0;
+
+ /**
+ Some expressions may be re-parsed as SELECT statements.
+ This method is overridden in derived classes for instructions
+ those SQL command should be adjusted.
+ */
+ virtual void adjust_sql_command(LEX *)
+ {}
+
+ /**
+ Callback method which is called after an expression string successfully
+ parsed and the thread context has not been switched to the outer context.
+ The thread context contains new LEX-object corresponding to the parsed
+ expression string.
+
+ @param thd Thread context.
+
+ @return Error flag.
+ */
+ virtual bool on_after_expr_parsing(THD *)
+ {
+ return false;
+ }
+
+ sp_lex_keeper m_lex_keeper;
+
+private:
+ /**
+ List of Item_trigger_field objects created on parsing of a SQL statement
+ corresponding to this SP-instruction.
+ */
+ SQL_I_List<Item_trigger_field> m_cur_trigger_stmt_items;
+
+ /**
+ Clean up items previously created on behalf of the current instruction.
+ */
+ void cleanup_before_parsing(enum_sp_type sp_type);
+
+
+ /**
+ Set up field object for every NEW/OLD item of the trigger and
+ move the list of Item_trigger_field objects, created on parsing the current
+ trigger's instruction, from sp_head to trigger's SP instruction object.
+
+ @param thd current thread
+ @param sp sp_head object of the trigger
+ @param next_trig_items_list pointer to the next list of Item_trigger_field
+ objects that used as a link between lists
+ to support list of lists structure.
+
+ @return false on success, true on failure
+ */
+
+ bool setup_table_fields_for_trigger(
+ THD *thd, sp_head *sp,
+ SQL_I_List<Item_trigger_field> *next_trig_items_list);
+};
+
+
+/**
+ The class sp_instr_stmt represents almost all conventional SQL-statements.
+*/
+
+class sp_instr_stmt : public sp_lex_instr
+{
+ sp_instr_stmt(const sp_instr_stmt &); /**< Prevent use of these */
+ void operator=(sp_instr_stmt &);
+
+ /**
+ Flag to tell whether a metadata this instruction depends on
+ has been changed and a LEX object should be reinitialized.
+ */
+ bool m_valid;
+
+ LEX_STRING m_query; ///< For thd->query
+
+public:
+ sp_instr_stmt(uint ip, sp_pcontext *ctx, LEX *lex, const LEX_STRING& query)
+ : sp_lex_instr(ip, ctx, lex, true),
+ m_valid(true),
+ m_query(query)
+ {}
+
+ virtual ~sp_instr_stmt() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ bool is_invalid() const override
+ {
+ return !m_valid;
+ }
+
+ void invalidate() override
+ {
+ m_valid= false;
+ }
+
+ void get_query(String *sql_query) const override
+ {
+ sql_query->append(get_expr_query());
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ return m_query;
+ }
+
+ bool on_after_expr_parsing(THD *) override
+ {
+ m_valid= true;
+ return false;
+ }
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_stmt : public sp_lex_instr
+
+
+class sp_instr_set : public sp_lex_instr
+{
+ sp_instr_set(const sp_instr_set &); /**< Prevent use of these */
+ void operator=(sp_instr_set &);
+
+public:
+ sp_instr_set(uint ip, sp_pcontext *ctx,
+ const Sp_rcontext_handler *rh,
+ uint offset, Item *val,
+ LEX *lex, bool lex_resp,
+ const LEX_CSTRING &expr_str)
+ : sp_lex_instr(ip, ctx, lex, lex_resp),
+ m_rcontext_handler(rh),
+ m_offset(offset),
+ m_value(val),
+ m_expr_str(expr_str)
+ {}
+
+ virtual ~sp_instr_set() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ bool is_invalid() const override
+ {
+ return m_value == nullptr;
+ }
+
+ void invalidate() override
+ {
+ m_value= nullptr;
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ return m_expr_str;
+ }
+
+ void adjust_sql_command(LEX *lex) override
+ {
+ DBUG_ASSERT(lex->sql_command == SQLCOM_SELECT);
+ lex->sql_command= SQLCOM_SET_OPTION;
+ }
+
+ bool on_after_expr_parsing(THD *thd) override
+ {
+ DBUG_ASSERT(thd->lex->current_select->item_list.elements == 1);
+
+ m_value= thd->lex->current_select->item_list.head();
+ DBUG_ASSERT(m_value != nullptr);
+
+ // Return error in release version if m_value == nullptr
+ return m_value == nullptr;
+ }
+
+ sp_rcontext *get_rcontext(THD *thd) const;
+ const Sp_rcontext_handler *m_rcontext_handler;
+ uint m_offset; ///< Frame offset
+ Item *m_value;
+
+private:
+ LEX_CSTRING m_expr_str;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_set : public sp_lex_instr
+
+
+/*
+ This class handles assignments of a ROW fields:
+ DECLARE rec ROW (a INT,b INT);
+ SET rec.a= 10;
+*/
+
+class sp_instr_set_row_field : public sp_instr_set
+{
+ sp_instr_set_row_field(const sp_instr_set_row_field &); // Prevent use of this
+ void operator=(sp_instr_set_row_field &);
+ uint m_field_offset;
+
+public:
+ sp_instr_set_row_field(uint ip, sp_pcontext *ctx,
+ const Sp_rcontext_handler *rh,
+ uint offset, uint field_offset,
+ Item *val,
+ LEX *lex, bool lex_resp,
+ const LEX_CSTRING &value_query)
+ : sp_instr_set(ip, ctx, rh, offset, val, lex, lex_resp, value_query),
+ m_field_offset(field_offset)
+ {}
+
+ virtual ~sp_instr_set_row_field() = default;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+}; // class sp_instr_set_field : public sp_instr_set
+
+
+/**
+ This class handles assignment instructions like this:
+ DECLARE
+ CURSOR cur IS SELECT * FROM t1;
+ rec cur%ROWTYPE;
+ BEGIN
+ rec.column1:= 10; -- This instruction
+ END;
+
+ The idea is that during sp_rcontext::create() we do not know the extact
+ structure of "rec". It gets resolved at run time, during the corresponding
+ sp_instr_cursor_copy_struct::exec_core().
+
+ So sp_instr_set_row_field_by_name searches for ROW fields by name,
+ while sp_instr_set_row_field (see above) searches for ROW fields by index.
+*/
+
+class sp_instr_set_row_field_by_name : public sp_instr_set
+{
+ // Prevent use of this
+ sp_instr_set_row_field_by_name(const sp_instr_set_row_field &);
+ void operator=(sp_instr_set_row_field_by_name &);
+ const LEX_CSTRING m_field_name;
+
+public:
+
+ sp_instr_set_row_field_by_name(uint ip, sp_pcontext *ctx,
+ const Sp_rcontext_handler *rh,
+ uint offset, const LEX_CSTRING &field_name,
+ Item *val,
+ LEX *lex, bool lex_resp,
+ const LEX_CSTRING &value_query)
+ : sp_instr_set(ip, ctx, rh, offset, val, lex, lex_resp, value_query),
+ m_field_name(field_name)
+ {}
+
+ virtual ~sp_instr_set_row_field_by_name() = default;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+}; // class sp_instr_set_field_by_name : public sp_instr_set
+
+
+/**
+ Set NEW/OLD row field value instruction. Used in triggers.
+*/
+
+class sp_instr_set_trigger_field : public sp_lex_instr
+{
+ sp_instr_set_trigger_field(const sp_instr_set_trigger_field &);
+ void operator=(sp_instr_set_trigger_field &);
+
+public:
+ sp_instr_set_trigger_field(uint ip, sp_pcontext *ctx,
+ Item_trigger_field *trg_fld,
+ Item *val, LEX *lex,
+ const LEX_CSTRING &value_query)
+ : sp_lex_instr(ip, ctx, lex, true),
+ trigger_field(trg_fld),
+ value(val),
+ m_expr_str(value_query)
+ {
+ m_trigger_field_name=
+ LEX_CSTRING{strdup_root(current_thd->mem_root, trg_fld->field_name.str),
+ trg_fld->field_name.length};
+ }
+
+ virtual ~sp_instr_set_trigger_field() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ bool is_invalid() const override
+ {
+ return value == nullptr;
+ }
+
+ void invalidate() override
+ {
+ value= nullptr;
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ return m_expr_str;
+ }
+
+ bool on_after_expr_parsing(THD *thd) override;
+
+private:
+ Item_trigger_field *trigger_field;
+ Item *value;
+ /**
+ SQL clause corresponding to the expression value.
+ */
+ LEX_CSTRING m_expr_str;
+
+ LEX_CSTRING m_trigger_field_name;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_trigger_field : public sp_lex_instr
+
+
+/**
+ An abstract class for all instructions with destinations that
+ needs to be updated by the optimizer.
+
+ Even if not all subclasses will use both the normal destination and
+ the continuation destination, we put them both here for simplicity.
+*/
+
+class sp_instr_opt_meta
+{
+public:
+ uint m_dest; ///< Where we will go
+ uint m_cont_dest; ///< Where continue handlers will go
+
+ explicit sp_instr_opt_meta(uint dest)
+ : m_dest(dest),
+ m_cont_dest(0),
+ m_optdest(0),
+ m_cont_optdest(0)
+ {}
+
+ virtual ~sp_instr_opt_meta() = default;
+
+ virtual void set_destination(uint old_dest, uint new_dest) = 0;
+
+protected:
+ sp_instr *m_optdest; ///< Used during optimization
+ sp_instr *m_cont_optdest; ///< Used during optimization
+}; // class sp_instr_opt_meta
+
+
+class sp_instr_jump : public sp_instr, public sp_instr_opt_meta
+{
+ sp_instr_jump(const sp_instr_jump &); /**< Prevent use of these */
+ void operator=(sp_instr_jump &);
+
+public:
+ sp_instr_jump(uint ip, sp_pcontext *ctx)
+ : sp_instr(ip, ctx),
+ sp_instr_opt_meta(0)
+ {}
+
+ sp_instr_jump(uint ip, sp_pcontext *ctx, uint dest)
+ : sp_instr(ip, ctx),
+ sp_instr_opt_meta(dest)
+ {}
+
+ virtual ~sp_instr_jump() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override;
+
+ uint opt_shortcut_jump(sp_head *sp, sp_instr *start) override;
+
+ void opt_move(uint dst, List<sp_instr_opt_meta> *ibp) override;
+
+ void backpatch(uint dest, sp_pcontext *dst_ctx) override
+ {
+ /* Calling backpatch twice is a logic flaw in jump resolution. */
+ DBUG_ASSERT(m_dest == 0);
+ m_dest= dest;
+ }
+
+ uint get_cont_dest() const override
+ {
+ return m_cont_dest;
+ }
+
+ /**
+ Update the destination; used by the optimizer.
+ */
+ void set_destination(uint old_dest, uint new_dest) override
+ {
+ if (m_dest == old_dest)
+ m_dest= new_dest;
+ }
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_jump : public sp_instr, public sp_instr_opt_meta
+
+
+class sp_instr_jump_if_not : public sp_lex_instr, public sp_instr_opt_meta
+{
+ /**< Prevent use of these */
+ sp_instr_jump_if_not(const sp_instr_jump_if_not &);
+ void operator=(sp_instr_jump_if_not &);
+
+public:
+ sp_instr_jump_if_not(uint ip, sp_pcontext *ctx, Item *i, LEX *lex,
+ const LEX_CSTRING &expr_query)
+ : sp_lex_instr(ip, ctx, lex, true),
+ sp_instr_opt_meta(0),
+ m_expr(i),
+ m_expr_str(expr_query)
+ {}
+
+ sp_instr_jump_if_not(uint ip, sp_pcontext *ctx, Item *i, uint dest, LEX *lex,
+ const LEX_CSTRING &expr_query)
+ : sp_lex_instr(ip, ctx, lex, true),
+ sp_instr_opt_meta(dest),
+ m_expr(i),
+ m_expr_str(expr_query)
+ {}
+
+ virtual ~sp_instr_jump_if_not() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override;
+
+ /** Override sp_instr_jump's shortcut; we stop here */
+ uint opt_shortcut_jump(sp_head *sp, sp_instr *start) override
+ {
+ return m_ip;
+ }
+
+ void opt_move(uint dst, List<sp_instr_opt_meta> *ibp) override;
+
+ uint get_cont_dest() const override
+ {
+ return m_cont_dest;
+ }
+
+ void set_destination(uint old_dest, uint new_dest) override
+ {
+ if (m_dest == old_dest)
+ m_dest= new_dest;
+ if (m_cont_dest == old_dest)
+ m_cont_dest= new_dest;
+ }
+
+ void backpatch(uint dest, sp_pcontext *dst_ctx) override
+ {
+ /* Calling backpatch twice is a logic flaw in jump resolution. */
+ DBUG_ASSERT(m_dest == 0);
+ m_dest= dest;
+ }
+
+ bool is_invalid() const override
+ {
+ return m_expr == nullptr;
+ }
+
+ void invalidate() override
+ {
+ m_expr= nullptr;
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ return m_expr_str;
+ }
+
+ void adjust_sql_command(LEX *lex) override
+ {
+ assert(lex->sql_command == SQLCOM_SELECT);
+ lex->sql_command= SQLCOM_END;
+ }
+
+ bool on_after_expr_parsing(THD *thd) override
+ {
+ DBUG_ASSERT(thd->lex->current_select->item_list.elements == 1);
+
+ m_expr= thd->lex->current_select->item_list.head();
+ DBUG_ASSERT(m_expr != nullptr);
+
+ // Return error in release version if m_expr == nullptr
+ return m_expr == nullptr;
+ }
+
+private:
+ Item *m_expr; ///< The condition
+ LEX_CSTRING m_expr_str;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_jump_if_not
+
+
+class sp_instr_preturn : public sp_instr
+{
+ sp_instr_preturn(const sp_instr_preturn &); /**< Prevent use of these */
+ void operator=(sp_instr_preturn &);
+
+public:
+ sp_instr_preturn(uint ip, sp_pcontext *ctx)
+ : sp_instr(ip, ctx)
+ {}
+
+ virtual ~sp_instr_preturn() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override
+ {
+ marked= 1;
+ return UINT_MAX;
+ }
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_preturn : public sp_instr
+
+
+class sp_instr_freturn : public sp_lex_instr
+{
+ sp_instr_freturn(const sp_instr_freturn &); /**< Prevent use of these */
+ void operator=(sp_instr_freturn &);
+
+public:
+ sp_instr_freturn(uint ip, sp_pcontext *ctx,
+ Item *val, const Type_handler *handler, sp_expr_lex *lex)
+ : sp_lex_instr(ip, ctx, lex, true),
+ m_value(val),
+ m_type_handler(handler),
+ m_expr_str(lex->get_expr_str())
+ {}
+
+ virtual ~sp_instr_freturn() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override
+ {
+ marked= 1;
+ return UINT_MAX;
+ }
+
+ bool is_invalid() const override
+ {
+ return m_value == nullptr;
+ }
+
+ void invalidate() override
+ {
+ m_value= nullptr;
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ return m_expr_str;
+ }
+
+ bool on_after_expr_parsing(THD *thd) override
+ {
+ DBUG_ASSERT(thd->lex->current_select->item_list.elements == 1);
+ m_value= thd->lex->current_select->item_list.head();
+ DBUG_ASSERT(m_value != nullptr);
+
+ // Return error in release version if m_value == nullptr
+ return m_value == nullptr;
+ }
+
+ Item *m_value;
+ const Type_handler *m_type_handler;
+
+private:
+ /**
+ SQL-query corresponding to the RETURN-expression.
+ */
+ LEX_CSTRING m_expr_str;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_freturn : public sp_lex_instr
+
+
+class sp_instr_hpush_jump : public sp_instr_jump
+{
+ sp_instr_hpush_jump(const sp_instr_hpush_jump &); /**< Prevent use of these */
+ void operator=(sp_instr_hpush_jump &);
+
+public:
+ sp_instr_hpush_jump(uint ip,
+ sp_pcontext *ctx,
+ sp_handler *handler)
+ : sp_instr_jump(ip, ctx),
+ m_handler(handler),
+ m_opt_hpop(0),
+ m_frame(ctx->current_var_count())
+ {
+ DBUG_ASSERT(m_handler->condition_values.elements == 0);
+ }
+
+ ~sp_instr_hpush_jump() override
+ {
+ m_handler->condition_values.empty();
+ m_handler= nullptr;
+ }
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override;
+
+ /** Override sp_instr_jump's shortcut; we stop here. */
+ uint opt_shortcut_jump(sp_head *sp, sp_instr *start) override
+ {
+ return m_ip;
+ }
+
+ void backpatch(uint dest, sp_pcontext *dst_ctx) override
+ {
+ DBUG_ASSERT(!m_dest || !m_opt_hpop);
+ if (!m_dest)
+ m_dest= dest;
+ else
+ m_opt_hpop= dest;
+ }
+
+ void add_condition(sp_condition_value *condition_value)
+ {
+ m_handler->condition_values.push_back(condition_value);
+ }
+
+ sp_handler *get_handler()
+ {
+ return m_handler;
+ }
+
+private:
+ /// Handler.
+ sp_handler *m_handler;
+
+ /// hpop marking end of handler scope.
+ uint m_opt_hpop;
+
+ // This attribute is needed for SHOW PROCEDURE CODE only (i.e. it's needed in
+ // debug version only). It's used in print().
+ uint m_frame;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_hpush_jump : public sp_instr_jump
+
+
+class sp_instr_hpop : public sp_instr
+{
+ sp_instr_hpop(const sp_instr_hpop &); /**< Prevent use of these */
+ void operator=(sp_instr_hpop &);
+
+public:
+ sp_instr_hpop(uint ip, sp_pcontext *ctx, uint count)
+ : sp_instr(ip, ctx),
+ m_count(count)
+ {}
+
+ virtual ~sp_instr_hpop() = default;
+
+ void update_count(uint count)
+ {
+ m_count= count;
+ }
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+private:
+ uint m_count;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_hpop : public sp_instr
+
+
+class sp_instr_hreturn : public sp_instr_jump
+{
+ sp_instr_hreturn(const sp_instr_hreturn &); /**< Prevent use of these */
+ void operator=(sp_instr_hreturn &);
+
+public:
+ sp_instr_hreturn(uint ip, sp_pcontext *ctx)
+ : sp_instr_jump(ip, ctx),
+ m_frame(ctx->current_var_count())
+ {}
+
+ virtual ~sp_instr_hreturn() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ /* This instruction will not be short cut optimized. */
+ uint opt_shortcut_jump(sp_head *sp, sp_instr *start) override
+ {
+ return m_ip;
+ }
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override;
+
+private:
+ uint m_frame;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_hreturn : public sp_instr_jump
+
+
+/**
+ This is DECLARE CURSOR
+*/
+
+class sp_instr_cpush : public sp_lex_instr, public sp_cursor
+{
+ sp_instr_cpush(const sp_instr_cpush &); /**< Prevent use of these */
+ void operator=(sp_instr_cpush &);
+
+public:
+ sp_instr_cpush(uint ip, sp_pcontext *ctx, sp_lex_cursor *lex, uint offset)
+ : sp_lex_instr(ip, ctx, lex, true),
+ m_cursor(offset),
+ m_metadata_changed(false),
+ m_cursor_stmt(lex->get_expr_str())
+ {}
+
+ virtual ~sp_instr_cpush() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ /**
+ This call is used to cleanup the instruction when a sensitive
+ cursor is closed. For now stored procedures always use materialized
+ cursors and the call is not used.
+ */
+ bool cleanup_stmt(bool /*restore_set_statement_vars*/) override
+ {
+ return false;
+ }
+
+ bool is_invalid() const override
+ {
+ return m_metadata_changed;
+ }
+
+ void invalidate() override
+ {
+ m_metadata_changed= true;
+ }
+
+ sp_lex_keeper *get_lex_keeper() override
+ {
+ return &m_lex_keeper;
+ }
+
+ void get_query(String *sql_query) const override
+ {
+ sql_query->append(get_expr_query());
+ }
+
+ sp_instr_cpush *get_push_instr() override { return this; }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ /*
+ Lexer on processing the clause CURSOR FOR / CURSOR IS doesn't
+ move a pointer on cpp_buf after the token FOR/IS so skip it explicitly
+ in order to get correct value of cursor's query string.
+ */
+ if (strncasecmp(m_cursor_stmt.str, "FOR ", 4) == 0)
+ return LEX_CSTRING{m_cursor_stmt.str + 4, m_cursor_stmt.length - 4};
+ if (strncasecmp(m_cursor_stmt.str, "IS ", 3) == 0)
+ return LEX_CSTRING{m_cursor_stmt.str + 3, m_cursor_stmt.length - 3};
+ return m_cursor_stmt;
+ }
+
+ bool on_after_expr_parsing(THD *) override
+ {
+ m_metadata_changed= false;
+ return false;
+ }
+
+private:
+ uint m_cursor; /**< Frame offset (for debugging) */
+ /**
+ Flag if a statement's metadata has been changed in result of running DDL
+ on depending database objects used in the statement.
+ */
+ bool m_metadata_changed;
+
+ LEX_CSTRING m_cursor_stmt;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_cpush : public sp_instr
+
+
+class sp_instr_cpop : public sp_instr
+{
+ sp_instr_cpop(const sp_instr_cpop &); /**< Prevent use of these */
+ void operator=(sp_instr_cpop &);
+
+public:
+ sp_instr_cpop(uint ip, sp_pcontext *ctx, uint count)
+ : sp_instr(ip, ctx),
+ m_count(count)
+ {}
+
+ virtual ~sp_instr_cpop() = default;
+
+ void update_count(uint count)
+ {
+ m_count= count;
+ }
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+private:
+ uint m_count;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_cpop : public sp_instr
+
+
+class sp_instr_copen : public sp_instr
+{
+ sp_instr_copen(const sp_instr_copen &); /**< Prevent use of these */
+ void operator=(sp_instr_copen &);
+
+public:
+ sp_instr_copen(uint ip, sp_pcontext *ctx, uint c)
+ : sp_instr(ip, ctx),
+ m_cursor(c)
+ {}
+
+ virtual ~sp_instr_copen() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+private:
+ uint m_cursor; ///< Stack index
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_copen : public sp_instr_stmt
+
+
+/**
+ Initialize the structure of a cursor%ROWTYPE variable
+ from the LEX containing the cursor SELECT statement.
+*/
+
+class sp_instr_cursor_copy_struct: public sp_lex_instr
+{
+ /**< Prevent use of these */
+ sp_instr_cursor_copy_struct(const sp_instr_cursor_copy_struct &);
+ void operator=(sp_instr_cursor_copy_struct &);
+ uint m_cursor;
+ uint m_var;
+ /**
+ Flag to tell whether metadata has been changed and the LEX object should
+ be reinitialized.
+ */
+ bool m_valid;
+ LEX_CSTRING m_cursor_stmt;
+
+public:
+ sp_instr_cursor_copy_struct(uint ip, sp_pcontext *ctx, uint coffs,
+ sp_lex_cursor *lex, uint voffs)
+ : sp_lex_instr(ip, ctx, lex, false),
+ m_cursor(coffs),
+ m_var(voffs),
+ m_valid(true),
+ m_cursor_stmt(lex->get_expr_str())
+ {}
+ virtual ~sp_instr_cursor_copy_struct() = default;
+ int execute(THD *thd, uint *nextp) override;
+ int exec_core(THD *thd, uint *nextp) override;
+ void print(String *str) override;
+ bool is_invalid() const override
+ {
+ return !m_valid;
+ }
+
+ void invalidate() override
+ {
+ m_valid= false;
+ }
+
+ void get_query(String *sql_query) const override
+ {
+ sql_query->append(get_expr_query());
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ /*
+ Lexer on processing the clause CURSOR FOR / CURSOR IS doesn't
+ move a pointer on cpp_buf after the token FOR/IS so skip it explicitly
+ in order to get correct value of cursor's query string.
+ */
+ if (strncasecmp(m_cursor_stmt.str, "FOR ", 4) == 0)
+ return LEX_CSTRING{m_cursor_stmt.str + 4, m_cursor_stmt.length - 4};
+ if (strncasecmp(m_cursor_stmt.str, "IS ", 3) == 0)
+ return LEX_CSTRING{m_cursor_stmt.str + 3, m_cursor_stmt.length - 3};
+ return m_cursor_stmt;
+ }
+
+ bool on_after_expr_parsing(THD *) override
+ {
+ m_valid= true;
+ return false;
+ }
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+};
+
+
+class sp_instr_cclose : public sp_instr
+{
+ sp_instr_cclose(const sp_instr_cclose &); /**< Prevent use of these */
+ void operator=(sp_instr_cclose &);
+
+public:
+ sp_instr_cclose(uint ip, sp_pcontext *ctx, uint c)
+ : sp_instr(ip, ctx),
+ m_cursor(c)
+ {}
+
+ virtual ~sp_instr_cclose() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+private:
+ uint m_cursor;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_cclose : public sp_instr
+
+
+class sp_instr_cfetch : public sp_instr
+{
+ sp_instr_cfetch(const sp_instr_cfetch &); /**< Prevent use of these */
+ void operator=(sp_instr_cfetch &);
+
+public:
+ sp_instr_cfetch(uint ip, sp_pcontext *ctx, uint c, bool error_on_no_data)
+ : sp_instr(ip, ctx),
+ m_cursor(c),
+ m_error_on_no_data(error_on_no_data)
+ {
+ m_varlist.empty();
+ }
+
+ virtual ~sp_instr_cfetch() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ void add_to_varlist(sp_variable *var)
+ {
+ m_varlist.push_back(var);
+ }
+
+private:
+ uint m_cursor;
+ List<sp_variable> m_varlist;
+ bool m_error_on_no_data;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_cfetch : public sp_instr
+
+
+/*
+ This class is created for the special fetch instruction
+ FETCH GROUP NEXT ROW, used in the user-defined aggregate
+ functions
+*/
+
+class sp_instr_agg_cfetch : public sp_instr
+{
+ sp_instr_agg_cfetch(const sp_instr_cfetch &); /**< Prevent use of these */
+ void operator=(sp_instr_cfetch &);
+
+public:
+ sp_instr_agg_cfetch(uint ip, sp_pcontext *ctx)
+ : sp_instr(ip, ctx)
+ {}
+
+ virtual ~sp_instr_agg_cfetch() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_agg_cfetch : public sp_instr
+
+
+class sp_instr_error : public sp_instr
+{
+ sp_instr_error(const sp_instr_error &); /**< Prevent use of these */
+ void operator=(sp_instr_error &);
+
+public:
+ sp_instr_error(uint ip, sp_pcontext *ctx, int errcode)
+ : sp_instr(ip, ctx),
+ m_errcode(errcode)
+ {}
+
+ virtual ~sp_instr_error() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override
+ {
+ marked= 1;
+ return UINT_MAX;
+ }
+
+private:
+ int m_errcode;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_error : public sp_instr
+
+
+class sp_instr_set_case_expr : public sp_lex_instr, public sp_instr_opt_meta
+{
+public:
+ sp_instr_set_case_expr(uint ip, sp_pcontext *ctx, uint case_expr_id,
+ Item *case_expr, LEX *lex,
+ const LEX_CSTRING &case_expr_query)
+ : sp_lex_instr(ip, ctx, lex, true),
+ sp_instr_opt_meta(0),
+ m_case_expr_id(case_expr_id),
+ m_case_expr(case_expr),
+ m_expr_str(case_expr_query)
+ {}
+
+ virtual ~sp_instr_set_case_expr() = default;
+
+ int execute(THD *thd, uint *nextp) override;
+
+ int exec_core(THD *thd, uint *nextp) override;
+
+ void print(String *str) override;
+
+ uint opt_mark(sp_head *sp, List<sp_instr> *leads) override;
+
+ void opt_move(uint dst, List<sp_instr_opt_meta> *ibp) override;
+
+ uint get_cont_dest() const override
+ {
+ return m_cont_dest;
+ }
+
+ void set_destination(uint old_dest, uint new_dest) override
+ {
+ if (m_cont_dest == old_dest)
+ m_cont_dest= new_dest;
+ }
+
+ bool is_invalid() const override
+ {
+ return m_case_expr == nullptr;
+ }
+
+ void invalidate() override
+ {
+ m_case_expr= nullptr;
+ }
+
+protected:
+ LEX_CSTRING get_expr_query() const override
+ {
+ return m_expr_str;
+ }
+
+ void adjust_sql_command(LEX *lex) override
+ {
+ assert(lex->sql_command == SQLCOM_SELECT);
+ lex->sql_command= SQLCOM_END;
+ }
+
+ bool on_after_expr_parsing(THD *thd) override
+ {
+ DBUG_ASSERT(thd->lex->current_select->item_list.elements == 1);
+
+ m_case_expr= thd->lex->current_select->item_list.head();
+ DBUG_ASSERT(m_case_expr != nullptr);
+
+ // Return error in release version if m_case_expr == nullptr
+ return m_case_expr == nullptr;
+ }
+
+private:
+ uint m_case_expr_id;
+ Item *m_case_expr;
+ LEX_CSTRING m_expr_str;
+
+public:
+ PSI_statement_info* get_psi_info() override { return & psi_info; }
+ static PSI_statement_info psi_info;
+}; // class sp_instr_set_case_expr : public sp_lex_instr,
+
+#endif
diff --git a/sql/sp_rcontext.cc b/sql/sp_rcontext.cc
index d2fe53a2..6c8111a1 100644
--- a/sql/sp_rcontext.cc
+++ b/sql/sp_rcontext.cc
@@ -23,6 +23,7 @@
#include "mysql.h"
#include "sp_head.h"
#include "sql_cursor.h"
+#include "sp_instr.h" // class sp_instr, ...
#include "sp_rcontext.h"
#include "sp_pcontext.h"
#include "sql_select.h" // create_virtual_tmp_table
@@ -62,11 +63,11 @@ const LEX_CSTRING *Sp_rcontext_handler_package_body::get_name_prefix() const
///////////////////////////////////////////////////////////////////////////
-sp_rcontext::sp_rcontext(const sp_head *owner,
+sp_rcontext::sp_rcontext(sp_head *owner,
const sp_pcontext *root_parsing_ctx,
Field *return_value_fld,
bool in_sub_stmt)
- :end_partial_result_set(false),
+ :callers_arena(nullptr), end_partial_result_set(false),
pause_state(false), quit_func(false), instr_ptr(0),
m_sp(owner),
m_root_parsing_ctx(root_parsing_ctx),
@@ -90,7 +91,7 @@ sp_rcontext::~sp_rcontext()
sp_rcontext *sp_rcontext::create(THD *thd,
- const sp_head *owner,
+ sp_head *owner,
const sp_pcontext *root_parsing_ctx,
Field *return_value_fld,
Row_definition_list &field_def_lst)
@@ -225,7 +226,8 @@ check_column_grant_for_type_ref(THD *thd, TABLE_LIST *table_list,
/**
This method implementation is very close to fill_schema_table_by_open().
*/
-bool Qualified_column_ident::resolve_type_ref(THD *thd, Column_definition *def)
+bool Qualified_column_ident::resolve_type_ref(THD *thd,
+ Column_definition *def) const
{
Open_tables_backup open_tables_state_backup;
thd->reset_n_backup_open_tables_state(&open_tables_state_backup);
@@ -243,7 +245,7 @@ bool Qualified_column_ident::resolve_type_ref(THD *thd, Column_definition *def)
thd->temporary_tables= open_tables_state_backup.temporary_tables;
if ((table_list=
- lex.first_select_lex()->add_table_to_list(thd, this, NULL, 0,
+ lex.first_select_lex()->add_table_to_list(thd, (Table_ident*)this, NULL, 0,
TL_READ_NO_INSERT,
MDL_SHARED_READ)) &&
!check_table_access(thd, SELECT_ACL, table_list, TRUE, UINT_MAX, FALSE) &&
diff --git a/sql/sp_rcontext.h b/sql/sp_rcontext.h
index ea669b2d..a891ab04 100644
--- a/sql/sp_rcontext.h
+++ b/sql/sp_rcontext.h
@@ -71,7 +71,7 @@ public:
///
/// @return valid sp_rcontext object or NULL in case of OOM-error.
static sp_rcontext *create(THD *thd,
- const sp_head *owner,
+ sp_head *owner,
const sp_pcontext *root_parsing_ctx,
Field *return_value_fld,
Row_definition_list &defs);
@@ -79,7 +79,7 @@ public:
~sp_rcontext();
private:
- sp_rcontext(const sp_head *owner,
+ sp_rcontext(sp_head *owner,
const sp_pcontext *root_parsing_ctx,
Field *return_value_fld,
bool in_sub_stmt);
@@ -169,7 +169,7 @@ public:
/// checking if correct runtime context is used for variable handling,
/// and to access the package run-time context.
/// Also used by slow log.
- const sp_head *m_sp;
+ sp_head *m_sp;
/////////////////////////////////////////////////////////////////////////
// SP-variables.
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 0fbf11ce..8806462b 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -201,15 +201,11 @@ public:
};
-class ACL_USER :public ACL_USER_BASE,
- public ACL_USER_PARAM
+class ACL_USER :public ACL_USER_BASE, public ACL_USER_PARAM
{
public:
-
ACL_USER() = default;
- ACL_USER(THD *thd, const LEX_USER &combo,
- const Account_options &options,
- const privilege_t privileges);
+ ACL_USER(THD *, const LEX_USER &, const Account_options &, const privilege_t);
ACL_USER *copy(MEM_ROOT *root)
{
@@ -1059,7 +1055,7 @@ class User_table_tabular: public User_table
access|= DELETE_HISTORY_ACL;
if (access & SUPER_ACL)
- access|= GLOBAL_SUPER_ADDED_SINCE_USER_TABLE_ACLS;
+ access|= ALLOWED_BY_SUPER_BEFORE_101100 | ALLOWED_BY_SUPER_BEFORE_110000;
/*
The SHOW SLAVE HOSTS statement :
@@ -1075,6 +1071,9 @@ class User_table_tabular: public User_table
if (access & REPL_SLAVE_ACL)
access|= SLAVE_MONITOR_ACL;
+ if ((access & ALL_KNOWN_ACL_100304) == ALL_KNOWN_ACL_100304)
+ access|= SHOW_CREATE_ROUTINE_ACL;
+
return access & GLOBAL_ACLS;
}
@@ -1546,12 +1545,21 @@ class User_table_json: public User_table
{
privilege_t mask= ALL_KNOWN_ACL_100304;
ulonglong orig_access= access;
+ if (version_id < 110000)
+ {
+ if (access & SUPER_ACL)
+ access|= ALLOWED_BY_SUPER_BEFORE_110000;
+ }
if (version_id < 101100)
{
if (access & SUPER_ACL)
- access|= READ_ONLY_ADMIN_ACL;
+ access|= ALLOWED_BY_SUPER_BEFORE_101100;
}
- if (version_id >= 100509)
+ if (version_id >= 110300)
+ {
+ mask= ALL_KNOWN_ACL_110300;
+ }
+ else if (version_id >= 100509)
{
mask= ALL_KNOWN_ACL_100509;
}
@@ -1567,26 +1575,6 @@ class User_table_json: public User_table
else // 100501 or earlier
{
/*
- Address changes in SUPER and REPLICATION SLAVE made in 10.5.2.
- This also covers a special case: if the user had ALL PRIVILEGES before
- the upgrade, it gets ALL PRIVILEGES after the upgrade.
- */
- if (access & SUPER_ACL)
- {
- if (access & REPL_SLAVE_ACL)
- {
- /*
- The user could do both before the upgrade:
- - set global variables (because of SUPER_ACL)
- - execute "SHOW SLAVE HOSTS" (because of REPL_SLAVE_ACL)
- Grant all new privileges that were splitted from SUPER (in 10.5.2),
- and REPLICATION MASTER ADMIN, so it still can do "SHOW SLAVE HOSTS".
- */
- access|= REPL_MASTER_ADMIN_ACL;
- }
- access|= GLOBAL_SUPER_ADDED_SINCE_USER_TABLE_ACLS;
- }
- /*
REPLICATION_CLIENT(BINLOG_MONITOR_ACL) should allow SHOW SLAVE STATUS
REPLICATION SLAVE should allow SHOW RELAYLOG EVENTS
*/
@@ -1599,6 +1587,11 @@ class User_table_json: public User_table
print_warning_bad_access(version_id, mask, orig_access);
return NO_ACL;
}
+
+ // ALL PRIVILEGES always means ALL PRIVILEGES
+ if ((orig_access & mask) == mask)
+ access= ALL_KNOWN_ACL;
+
return access & ALL_KNOWN_ACL;
}
@@ -2542,6 +2535,8 @@ bool acl_init(bool dont_read_acl_tables)
DBUG_RETURN(1); /* purecov: inspected */
thd->thread_stack= (char*) &thd;
thd->store_globals();
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:acl_init"),
+ default_charset_info);
/*
It is safe to call acl_reload() since acl_* arrays and hashes which
will be freed there are global static objects and thus are initialized
@@ -2798,6 +2793,9 @@ static bool acl_load(THD *thd, const Grant_tables& tables)
db.access|=REFERENCES_ACL | INDEX_ACL | ALTER_ACL;
}
#endif
+ if (db_table.num_fields() <= 23)
+ if ((db.access | SHOW_CREATE_ROUTINE_ACL | GRANT_ACL) == DB_ACLS)
+ db.access|= SHOW_CREATE_ROUTINE_ACL;
acl_dbs.push(db);
}
end_read_record(&read_record_info);
@@ -5053,6 +5051,9 @@ static int replace_db_table(TABLE *table, const char *db,
}
rights=get_access(table,3);
rights=fix_rights_for_db(rights);
+ if (table->s->fields <= 23)
+ if ((rights | SHOW_CREATE_ROUTINE_ACL | GRANT_ACL) == DB_ACLS)
+ rights|= SHOW_CREATE_ROUTINE_ACL;
if (old_row_exists)
{
@@ -7894,31 +7895,30 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
}
-bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
+static
+bool mysql_grant(THD *thd, LEX_CSTRING db, List <LEX_USER> &list,
privilege_t rights, bool revoke_grant, bool is_proxy)
{
List_iterator <LEX_USER> str_list (list);
LEX_USER *Str, *tmp_Str, *proxied_user= NULL;
- char tmp_db[SAFE_NAME_LEN+1];
+ IdentBuffer<SAFE_NAME_LEN + MY_CS_MBMAXLEN> tmp_db;
bool create_new_users=0;
int result;
DBUG_ENTER("mysql_grant");
- if (lower_case_table_names && db)
+ if (lower_case_table_names && db.str)
{
- char *end= strnmov(tmp_db,db, sizeof(tmp_db));
- if (end >= tmp_db + sizeof(tmp_db))
+ if (tmp_db.copy_casedn(db).length() > SAFE_NAME_LEN)
{
- my_error(ER_WRONG_DB_NAME ,MYF(0), db);
+ my_error(ER_WRONG_DB_NAME ,MYF(0), db.str);
DBUG_RETURN(TRUE);
}
- my_casedn_str(files_charset_info, tmp_db);
- db=tmp_db;
+ db= tmp_db.to_lex_cstring();
}
if (is_proxy)
{
- DBUG_ASSERT(!db);
+ DBUG_ASSERT(!db.str);
proxied_user= str_list++;
}
@@ -7954,20 +7954,20 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
if (copy_and_check_auth(Str, tmp_Str, thd) ||
replace_user_table(thd, tables.user_table(), Str,
- (!db ? rights : NO_ACL),
+ (!db.str ? rights : NO_ACL),
revoke_grant, create_new_users,
MY_TEST(!is_public(Str) &&
(thd->variables.sql_mode &
MODE_NO_AUTO_CREATE_USER))))
result= true;
- else if (db)
+ else if (db.str)
{
privilege_t db_rights(rights & DB_ACLS);
if (db_rights == rights)
{
- if (replace_db_table(tables.db_table().table(), db, *Str, db_rights,
- revoke_grant))
- result= true;
+ if (replace_db_table(tables.db_table().table(), db.str,
+ *Str, db_rights, revoke_grant))
+ result= true;
}
else
{
@@ -7983,8 +7983,9 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
}
if (Str->is_role())
propagate_role_grants(find_acl_role(Str->user.str, true),
- db ? PRIVS_TO_MERGE::DB : PRIVS_TO_MERGE::GLOBAL,
- db);
+ db.str ? PRIVS_TO_MERGE::DB :
+ PRIVS_TO_MERGE::GLOBAL,
+ db.str);
}
mysql_mutex_unlock(&acl_cache->lock);
@@ -8036,6 +8037,9 @@ bool grant_init()
DBUG_RETURN(1); /* purecov: deadcode */
thd->thread_stack= (char*) &thd;
thd->store_globals();
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:grant_init"),
+ default_charset_info);
+
return_val= grant_reload(thd);
delete thd;
DBUG_RETURN(return_val);
@@ -9021,7 +9025,8 @@ err:
1 error
*/
-bool check_routine_level_acl(THD *thd, const char *db, const char *name,
+bool check_routine_level_acl(THD *thd, privilege_t acl,
+ const char *db, const char *name,
const Sp_handler *sph)
{
bool no_routine_acl= 1;
@@ -9032,7 +9037,7 @@ bool check_routine_level_acl(THD *thd, const char *db, const char *name,
sctx->ip, db,
sctx->priv_user,
name, sph, 0)))
- no_routine_acl= !(grant_proc->privs & SHOW_PROC_ACLS);
+ no_routine_acl= !(grant_proc->privs & acl);
if (no_routine_acl && sctx->priv_role[0]) /* current set role check */
{
@@ -9040,7 +9045,7 @@ bool check_routine_level_acl(THD *thd, const char *db, const char *name,
NULL, db,
sctx->priv_role,
name, sph, 0)))
- no_routine_acl= !(grant_proc->privs & SHOW_PROC_ACLS);
+ no_routine_acl= !(grant_proc->privs & SHOW_PROC_WITHOUT_DEFINITION_ACLS);
}
mysql_rwlock_unlock(&LOCK_grant);
return no_routine_acl;
@@ -9274,7 +9279,7 @@ static const char *command_array[]=
"CREATE USER", "EVENT", "TRIGGER", "CREATE TABLESPACE", "DELETE HISTORY",
"SET USER", "FEDERATED ADMIN", "CONNECTION ADMIN", "READ_ONLY ADMIN",
"REPLICATION SLAVE ADMIN", "REPLICATION MASTER ADMIN", "BINLOG ADMIN",
- "BINLOG REPLAY", "SLAVE MONITOR"
+ "BINLOG REPLAY", "SLAVE MONITOR", "SHOW CREATE ROUTINE"
};
static uint command_lengths[]=
@@ -9287,7 +9292,7 @@ static uint command_lengths[]=
11, 5, 7, 17, 14,
8, 15, 16, 15,
23, 24, 12,
- 13, 13
+ 13, 13, 19
};
@@ -12210,6 +12215,9 @@ bool check_grant(THD *, privilege_t, TABLE_LIST *, bool, uint, bool)
{ return 0; }
inline privilege_t public_access()
{ return NO_ACL; }
+privilege_t get_column_grant(THD *, GRANT_INFO *,
+ const char *, const char *, const char *)
+{ return ALL_KNOWN_ACL; }
#endif /*NO_EMBEDDED_ACCESS_CHECKS */
@@ -12306,7 +12314,7 @@ bool Sql_cmd_grant_proxy::execute(THD *thd)
WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
/* Conditionally writes to binlog */
- if (mysql_grant(thd, NULL/*db*/, lex->users_list, m_grant_option,
+ if (mysql_grant(thd, null_clex_str/*db*/, lex->users_list, m_grant_option,
is_revoke(), true/*proxy*/))
return true;
@@ -12407,7 +12415,7 @@ bool Sql_cmd_grant_table::execute_table_mask(THD *thd)
WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL);
/* Conditionally writes to binlog */
- if (mysql_grant(thd, m_db.str, lex->users_list, m_object_privilege,
+ if (mysql_grant(thd, m_db, lex->users_list, m_object_privilege,
is_revoke(), false/*not proxy*/))
return true;
@@ -13003,7 +13011,8 @@ void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
Dummy wrappers when we don't have any access checks
****************************************************************************/
-bool check_routine_level_acl(THD *thd, const char *db, const char *name,
+bool check_routine_level_acl(THD *thd, privilege_t acl,
+ const char *db, const char *name,
const Sp_handler *sph)
{
return FALSE;
@@ -13335,12 +13344,7 @@ static bool send_server_handshake_packet(MPVIO_EXT *mpvio,
data_len= SCRAMBLE_LENGTH;
}
- /* When server version is specified in config file, don't include
- the replication hack prefix. */
- if (using_custom_server_version)
- end= strnmov(end, server_version, SERVER_VERSION_LENGTH) + 1;
- else
- end= strxnmov(end, SERVER_VERSION_LENGTH, RPL_VERSION_HACK, server_version, NullS) + 1;
+ end= strnmov(end, server_version, SERVER_VERSION_LENGTH) + 1;
int4store((uchar*) end, mpvio->auth_info.thd->thread_id);
end+= 4;
@@ -13821,6 +13825,34 @@ static bool parse_com_change_user_packet(MPVIO_EXT *mpvio, uint packet_length)
}
+#ifndef EMBEDDED_LIBRARY
+/**
+ Check that a client uses secure connection type in case the option
+ require_secure_transport is on.
+
+ @param thd thread handle
+
+ @return true in case the option require_secure_transport is on and the client
+ uses euther named pipe or unix socket or ssl, else return false
+*/
+
+static bool check_require_secured_transport(THD *thd)
+{
+ Vio *vio= thd->net.vio;
+ if (opt_require_secure_transport)
+ {
+ enum enum_vio_type type= vio_type(vio);
+
+ return
+ (type != VIO_TYPE_SSL) &&
+ (type != VIO_TYPE_NAMEDPIPE) &&
+ (type != VIO_TYPE_SOCKET);
+ }
+ return 0;
+}
+#endif
+
+
/* the packet format is described in send_client_reply_packet() */
static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
uchar **buff, ulong pkt_len)
@@ -13890,6 +13922,22 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
return packet_error;
}
}
+ /*
+ Check whether the option require_secure_transport is on and in case
+ it is true that the secured connection type is used, that is either
+ unix socket or named pipe or ssl is in use.
+ */
+ else if (check_require_secured_transport(thd))
+ {
+ Host_errors errors;
+
+ errors.m_ssl= 1;
+ inc_host_errors(mpvio->auth_info.thd->security_ctx->ip, &errors);
+ status_var_increment(thd->status_var.access_denied_errors);
+ my_error(ER_SECURE_TRANSPORT_REQUIRED, MYF(0));
+
+ return packet_error;
+ }
if (client_capabilities & CLIENT_PROTOCOL_41)
{
@@ -14263,8 +14311,8 @@ static void server_mpvio_info(MYSQL_PLUGIN_VIO *vio,
static bool acl_check_ssl(THD *thd, const ACL_USER *acl_user)
{
- Vio *vio= thd->net.vio;
#ifdef HAVE_OPENSSL
+ Vio *vio= thd->net.vio;
SSL *ssl= (SSL *) vio->ssl_arg;
X509 *cert;
#endif
@@ -14276,26 +14324,8 @@ static bool acl_check_ssl(THD *thd, const ACL_USER *acl_user)
if X509 certificate attributes are OK
*/
switch (acl_user->ssl_type) {
- case SSL_TYPE_NOT_SPECIFIED: // Impossible
- case SSL_TYPE_NONE: // SSL is not required
- if (opt_require_secure_transport)
- {
- enum enum_vio_type type= vio_type(vio);
-#ifdef HAVE_OPENSSL
- return type != VIO_TYPE_SSL &&
-#ifndef _WIN32
- type != VIO_TYPE_SOCKET;
-#else
- type != VIO_TYPE_NAMEDPIPE;
-#endif
-#else
-#ifndef _WIN32
- return type != VIO_TYPE_SOCKET;
-#else
- return type != VIO_TYPE_NAMEDPIPE;
-#endif
-#endif
- }
+ case SSL_TYPE_NOT_SPECIFIED: // Impossible
+ case SSL_TYPE_NONE: // SSL is not required FOR THIS SPECIFIC USER
return 0;
#ifdef HAVE_OPENSSL
case SSL_TYPE_ANY: // Any kind of SSL is ok
@@ -14388,6 +14418,29 @@ static bool acl_check_ssl(THD *thd, const ACL_USER *acl_user)
return 1;
}
+static void make_ssl_info(THD *thd, LEX_CSTRING salt, char *info)
+{
+#ifdef HAVE_OPENSSL
+ uchar digest[256/8];
+ if (!salt.length)
+ return;
+
+ /*
+ mark that it's after-auth mysql->info version 1.
+ meaning, it contains sha2(salt, scramble, sha2_cert_fingerprint)
+ encoded in 64 lowercase letters 'a'..'p', one letter per 4 bits (0..15)
+ */
+ *info++= 1; // Version 1
+
+ DBUG_ASSERT(thd->scramble[SCRAMBLE_LENGTH] == 0);
+
+ LEX_CUSTRING fp= ssl_acceptor_fingerprint();
+ my_sha256_multi(digest, salt.str, salt.length, thd->scramble,
+ (size_t)SCRAMBLE_LENGTH, fp.str, fp.length, NULL);
+ octet2hex(info, digest, sizeof(digest));
+
+#endif
+}
static int do_auth_once(THD *thd, const LEX_CSTRING *auth_plugin_name,
MPVIO_EXT *mpvio)
@@ -14505,6 +14558,7 @@ bool acl_authenticate(THD *thd, uint com_change_user_pkt_len)
{
int res= CR_OK;
MPVIO_EXT mpvio;
+ char ssl_info[256/4 + 2]= {0}; // '\1', SHA256 (1 char per 4 bits), '\0'
enum enum_server_command command= com_change_user_pkt_len ? COM_CHANGE_USER
: COM_CONNECT;
DBUG_ENTER("acl_authenticate");
@@ -14842,10 +14896,10 @@ bool acl_authenticate(THD *thd, uint com_change_user_pkt_len)
sctx->external_user= my_strdup(key_memory_MPVIO_EXT_auth_info,
mpvio.auth_info.external_user, MYF(0));
- if (res == CR_OK_HANDSHAKE_COMPLETE)
- thd->get_stmt_da()->disable_status();
- else
- my_ok(thd);
+ if (initialized && !com_change_user_pkt_len)
+ make_ssl_info(thd, acl_user->auth[mpvio.curr_auth-1].salt, ssl_info);
+
+ my_ok(thd, 0, 0, ssl_info[0] == '\1' ? ssl_info : NULL);
PSI_CALL_set_thread_account
(thd->main_security_ctx.user, static_cast<uint>(strlen(thd->main_security_ctx.user)),
diff --git a/sql/sql_acl.h b/sql/sql_acl.h
index fb8dd2c3..f99190a6 100644
--- a/sql/sql_acl.h
+++ b/sql/sql_acl.h
@@ -88,8 +88,6 @@ bool check_change_password(THD *thd, LEX_USER *user);
bool change_password(THD *thd, LEX_USER *user);
bool mysql_grant_role(THD *thd, List<LEX_USER> &user_list, bool revoke);
-bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &user_list,
- privilege_t rights, bool revoke, bool is_proxy);
int mysql_table_grant(THD *thd, TABLE_LIST *table, List <LEX_USER> &user_list,
List <LEX_COLUMN> &column_list, privilege_t rights,
bool revoke);
@@ -142,7 +140,8 @@ bool sp_revoke_privileges(THD *thd, const char *sp_db, const char *sp_name,
const Sp_handler *sph);
bool sp_grant_privileges(THD *thd, const char *sp_db, const char *sp_name,
const Sp_handler *sph);
-bool check_routine_level_acl(THD *thd, const char *db, const char *name,
+bool check_routine_level_acl(THD *thd, privilege_t acl,
+ const char *db, const char *name,
const Sp_handler *sph);
bool is_acl_user(const char *host, const char *user);
int fill_schema_user_privileges(THD *thd, TABLE_LIST *tables, COND *cond);
diff --git a/sql/sql_alter.cc b/sql/sql_alter.cc
index ff7b0be7..288327cd 100644
--- a/sql/sql_alter.cc
+++ b/sql/sql_alter.cc
@@ -179,8 +179,8 @@ bool Alter_info::supports_algorithm(THD *thd,
}
-bool Alter_info::supports_lock(THD *thd,
- const Alter_inplace_info *ha_alter_info)
+bool Alter_info::supports_lock(THD *thd, bool online,
+ Alter_inplace_info *ha_alter_info)
{
switch (ha_alter_info->inplace_supported) {
case HA_ALTER_INPLACE_EXCLUSIVE_LOCK:
@@ -209,8 +209,13 @@ bool Alter_info::supports_lock(THD *thd,
case HA_ALTER_INPLACE_SHARED_LOCK:
if (requested_lock == Alter_info::ALTER_TABLE_LOCK_NONE)
{
- ha_alter_info->report_unsupported_error("LOCK=NONE", "LOCK=SHARED");
- return true;
+ if (online)
+ ha_alter_info->inplace_supported= HA_ALTER_INPLACE_NOT_SUPPORTED;
+ else
+ {
+ ha_alter_info->report_unsupported_error("LOCK=NONE", "LOCK=SHARED");
+ return true;
+ }
}
return false;
case HA_ALTER_ERROR:
@@ -257,6 +262,14 @@ Alter_info::algorithm(const THD *thd) const
return requested_algorithm;
}
+bool Alter_info::algorithm_is_nocopy(const THD *thd) const
+{
+ auto alg= algorithm(thd);
+ return alg == ALTER_TABLE_ALGORITHM_INPLACE
+ || alg == ALTER_TABLE_ALGORITHM_INSTANT
+ || alg == ALTER_TABLE_ALGORITHM_NOCOPY;
+}
+
uint Alter_info::check_vcol_field(Item_field *item) const
{
diff --git a/sql/sql_alter.h b/sql/sql_alter.h
index 1d1ad5b2..c5e4e812 100644
--- a/sql/sql_alter.h
+++ b/sql/sql_alter.h
@@ -310,13 +310,14 @@ public:
@retval false Supported lock type
@retval true Not supported value
*/
- bool supports_lock(THD *thd, const Alter_inplace_info *ha_alter_info);
+ bool supports_lock(THD *thd, bool, Alter_inplace_info *ha_alter_info);
/**
Return user requested algorithm. If user does not specify
algorithm then return alter_algorithm variable value.
*/
enum_alter_table_algorithm algorithm(const THD *thd) const;
+ bool algorithm_is_nocopy(const THD *thd) const;
uint check_vcol_field(Item_field *f) const;
diff --git a/sql/sql_analyze_stmt.h b/sql/sql_analyze_stmt.h
index d1faa58a..5f75960c 100644
--- a/sql/sql_analyze_stmt.h
+++ b/sql/sql_analyze_stmt.h
@@ -463,7 +463,8 @@ public:
n_positive_checks++;
}
- inline void increment_container_elements_count() { container_elements++; }
+ inline void set_container_elements_count(uint elements)
+ { container_elements= elements; }
uint get_container_elements() const { return container_elements; }
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index c593035f..240ccf6f 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -47,6 +47,8 @@
#include "sql_prepare.h"
#include "sql_statistics.h"
#include "sql_cte.h"
+#include "sql_update.h" // class Sql_cmd_update
+#include "sql_delete.h" // class Sql_cmd_delete
#include <m_ctype.h>
#include <my_dir.h>
#include <hash.h>
@@ -1139,7 +1141,11 @@ TABLE_LIST* find_dup_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list,
(table->table equal to 0) and right names is in current TABLE_LIST
object.
*/
- if (table->table)
+ if (table->table &&
+ thd->lex->sql_command != SQLCOM_UPDATE &&
+ thd->lex->sql_command != SQLCOM_UPDATE_MULTI &&
+ thd->lex->sql_command != SQLCOM_DELETE &&
+ thd->lex->sql_command != SQLCOM_DELETE_MULTI)
{
/* All MyISAMMRG children are plain MyISAM tables. */
DBUG_ASSERT(table->table->file->ht->db_type != DB_TYPE_MRG_MYISAM);
@@ -1223,16 +1229,42 @@ retry:
We come here for queries of type:
INSERT INTO t1 (SELECT tmp.a FROM (select * FROM t1) as tmp);
- Try to fix by materializing the derived table
+ Try to fix by materializing the derived table if one can't do without it.
*/
TABLE_LIST *derived= res->belong_to_derived;
if (derived->is_merged_derived() && !derived->derived->is_excluded())
{
- DBUG_PRINT("info",
+ bool materialize= true;
+ if (thd->lex->sql_command == SQLCOM_UPDATE)
+ {
+ Sql_cmd_update *cmd= (Sql_cmd_update *) (thd->lex->m_sql_cmd);
+ if (cmd->is_multitable() || derived->derived->outer_select())
+ materialize= false;
+ else if (!cmd->processing_as_multitable_update_prohibited(thd))
+ {
+ cmd->set_as_multitable();
+ materialize= false;
+ }
+ }
+ else if (thd->lex->sql_command == SQLCOM_DELETE)
+ {
+ Sql_cmd_delete *cmd= (Sql_cmd_delete *) (thd->lex->m_sql_cmd);
+ if (cmd->is_multitable() || derived->derived->outer_select())
+ materialize= false;
+ else if (!cmd->processing_as_multitable_delete_prohibited(thd))
+ {
+ cmd->set_as_multitable();
+ materialize= false;
+ }
+ }
+ if (materialize)
+ {
+ DBUG_PRINT("info",
("convert merged to materialization to resolve the conflict"));
- derived->change_refs_to_fields();
- derived->set_materialized_derived();
- goto retry;
+ derived->change_refs_to_fields();
+ derived->set_materialized_derived();
+ goto retry;
+ }
}
}
DBUG_RETURN(res);
@@ -4338,9 +4370,7 @@ lock_table_names(THD *thd, const DDL_options_st &options,
table->mdl_request.type == MDL_SHARED_READ_ONLY ||
table->open_type == OT_TEMPORARY_ONLY ||
(table->open_type == OT_TEMPORARY_OR_BASE && is_temporary_table(table)))
- {
continue;
- }
/* Write lock on normal tables is not allowed in a read only transaction. */
if (thd->tx_read_only)
@@ -4765,14 +4795,13 @@ restart:
{
TABLE *tbl= tables->table;
+ /* Schema tables may not have a TABLE object here. */
if (!tbl)
continue;
- /* Schema tables may not have a TABLE object here. */
if (tbl->file->ha_table_flags() & HA_CAN_MULTISTEP_MERGE)
{
/* MERGE tables need to access parent and child TABLE_LISTs. */
- DBUG_ASSERT(tbl->pos_in_table_list == tables);
if (tbl->file->extra(HA_EXTRA_ATTACH_CHILDREN))
{
error= TRUE;
@@ -4796,6 +4825,7 @@ restart:
tbl->reginfo.lock_type= tables->lock_type;
tbl->reginfo.skip_locked= tables->skip_locked;
}
+
#ifdef WITH_WSREP
/*
At this point we have SE associated with table so we can check wsrep_mode
@@ -5736,6 +5766,28 @@ bool open_tables_only_view_structure(THD *thd, TABLE_LIST *table_list,
}
+bool open_tables_for_query(THD *thd, TABLE_LIST *tables,
+ uint *table_count, uint flags,
+ DML_prelocking_strategy *prelocking_strategy)
+{
+ MDL_savepoint mdl_savepoint = thd->mdl_context.mdl_savepoint();
+
+ DBUG_ASSERT(tables == thd->lex->query_tables);
+
+ if (open_tables(thd, &tables, table_count,
+ thd->stmt_arena->is_stmt_prepare() ? MYSQL_OPEN_FORCE_SHARED_MDL : 0,
+ prelocking_strategy))
+ {
+ close_thread_tables(thd);
+ /* Don't keep locks for a failed statement. */
+ thd->mdl_context.rollback_to_savepoint(mdl_savepoint);
+ return true;
+ }
+
+ return false;
+}
+
+
/*
Mark all real tables in the list as free for reuse.
@@ -6690,11 +6742,11 @@ find_field_in_tables(THD *thd, Item_ident *item,
bool check_privileges, bool register_tree_change)
{
Field *found=0;
- const char *db= item->db_name.str;
+ LEX_CSTRING db= item->db_name;
const char *table_name= item->table_name.str;
const char *name= item->field_name.str;
size_t length= item->field_name.length;
- char name_buff[SAFE_NAME_LEN+1];
+ IdentBuffer<SAFE_NAME_LEN> db_name_buff;
TABLE_LIST *cur_table= first_table;
TABLE_LIST *actual_table;
bool allow_rowid;
@@ -6702,7 +6754,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
if (!table_name || !table_name[0])
{
table_name= 0; // For easier test
- db= 0;
+ db= Lex_cstring();
}
allow_rowid= table_name || (cur_table && !cur_table->next_local);
@@ -6792,16 +6844,14 @@ find_field_in_tables(THD *thd, Item_ident *item,
else
item->can_be_depended= TRUE;
- if (db && lower_case_table_names)
+ if (db.str && lower_case_table_names)
{
/*
convert database to lower case for comparison.
We can't do this in Item_field as this would change the
'name' of the item which may be used in the select list
*/
- strmake_buf(name_buff, db);
- my_casedn_str(files_charset_info, name_buff);
- db= name_buff;
+ db= db_name_buff.copy_casedn(db).to_lex_cstring();
}
if (last_table)
@@ -6822,7 +6872,8 @@ find_field_in_tables(THD *thd, Item_ident *item,
continue;
Field *cur_field= find_field_in_table_ref(thd, cur_table, name, length,
- item->name.str, db, table_name,
+ item->name.str,
+ db.str, table_name,
ignored_tables, ref,
(thd->lex->sql_command ==
SQLCOM_SHOW_FIELDS)
@@ -6840,7 +6891,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
thd->clear_error();
cur_field= find_field_in_table_ref(thd, cur_table, name, length,
- item->name.str, db, table_name,
+ item->name.str, db.str, table_name,
ignored_tables, ref, false,
allow_rowid,
current_cache,
@@ -6879,7 +6930,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
If we found a fully qualified field we return it directly as it can't
have duplicates.
*/
- if (db)
+ if (db.str)
return cur_field;
if (unlikely(found))
@@ -6910,9 +6961,9 @@ find_field_in_tables(THD *thd, Item_ident *item,
report_error == REPORT_EXCEPT_NON_UNIQUE))
{
char buff[SAFE_NAME_LEN*2 + 2];
- if (db && db[0])
+ if (db.str && db.str[0])
{
- strxnmov(buff,sizeof(buff)-1,db,".",table_name,NullS);
+ strxnmov(buff, sizeof(buff) - 1, db.str, ".", table_name, NullS);
table_name=buff;
}
my_error(ER_UNKNOWN_TABLE, MYF(0), table_name, thd->where);
@@ -7912,6 +7963,9 @@ int setup_wild(THD *thd, TABLE_LIST *tables, List<Item> &fields,
if (!(*with_wild))
DBUG_RETURN(0);
+ if (!fields.elements)
+ DBUG_RETURN(0);
+
/*
Don't use arena if we are not in prepared statements or stored procedures
For PS/SP we have to use arena to remember the changes
@@ -7940,8 +7994,8 @@ int setup_wild(THD *thd, TABLE_LIST *tables, List<Item> &fields,
MY_INT64_NUM_DECIMAL_DIGITS));
}
else if (insert_fields(thd, ((Item_field*) item)->context,
- ((Item_field*) item)->db_name.str,
- ((Item_field*) item)->table_name.str, &it,
+ ((Item_field*) item)->db_name,
+ ((Item_field*) item)->table_name, &it,
any_privileges, &select_lex->hidden_bit_fields, returning_field))
{
if (arena)
@@ -8182,7 +8236,7 @@ bool setup_table_attributes(THD *thd, TABLE_LIST *table_list,
uint &tablenr)
{
TABLE *table= table_list->table;
- if (table)
+ if (table && !table->pos_in_table_list)
table->pos_in_table_list= table_list;
if (first_select_table && table_list->top_table() == first_select_table)
{
@@ -8197,7 +8251,6 @@ bool setup_table_attributes(THD *thd, TABLE_LIST *table_list,
}
else if (table)
{
- table->pos_in_table_list= table_list;
setup_table_map(table, table_list, tablenr);
if (table_list->process_index_hints(table))
@@ -8496,26 +8549,27 @@ bool get_key_map_from_key_list(key_map *map, TABLE *table,
*/
bool
-insert_fields(THD *thd, Name_resolution_context *context, const char *db_name,
- const char *table_name, List_iterator<Item> *it,
- bool any_privileges, uint *hidden_bit_fields, bool returning_field)
+insert_fields(THD *thd, Name_resolution_context *context,
+ const LEX_CSTRING &db_name_arg, const LEX_CSTRING &table_name,
+ List_iterator<Item> *it,
+ bool any_privileges, uint *hidden_bit_fields,
+ bool returning_field)
{
Field_iterator_table_ref field_iterator;
bool found;
- char name_buff[SAFE_NAME_LEN+1];
+ LEX_CSTRING db_name= db_name_arg;
+ IdentBuffer<SAFE_NAME_LEN> db_name_buff;
DBUG_ENTER("insert_fields");
DBUG_PRINT("arena", ("stmt arena: %p",thd->stmt_arena));
- if (db_name && lower_case_table_names)
+ if (db_name.str && lower_case_table_names)
{
/*
convert database to lower case for comparison
We can't do this in Item_field as this would change the
'name' of the item which may be used in the select list
*/
- strmake_buf(name_buff, db_name);
- my_casedn_str(files_charset_info, name_buff);
- db_name= name_buff;
+ db_name= db_name_buff.copy_casedn(db_name).to_lex_cstring();
}
found= FALSE;
@@ -8527,7 +8581,7 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name,
*/
TABLE_LIST *first= context->first_name_resolution_table;
TABLE_LIST *TABLE_LIST::* next= &TABLE_LIST::next_name_resolution_table;
- if (table_name && !returning_field)
+ if (table_name.str && !returning_field)
{
first= context->table_list;
next= &TABLE_LIST::next_local;
@@ -8539,9 +8593,9 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name,
DBUG_ASSERT(tables->is_leaf_for_name_resolution());
- if ((table_name && my_strcasecmp(table_alias_charset, table_name,
- tables->alias.str)) ||
- (db_name && strcmp(tables->db.str, db_name)))
+ if ((table_name.str && my_strcasecmp(table_alias_charset, table_name.str,
+ tables->alias.str)) ||
+ (db_name.str && strcmp(tables->db.str, db_name.str)))
continue;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
@@ -8700,15 +8754,15 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name,
qualified '*', and all columns were coalesced, we have to give a more
meaningful message than ER_BAD_TABLE_ERROR.
*/
- if (!table_name)
+ if (!table_name.str)
my_error(ER_NO_TABLES_USED, MYF(0));
- else if (!db_name && !thd->db.str)
+ else if (!db_name.str && !thd->db.str)
my_error(ER_NO_DB_ERROR, MYF(0));
else
{
char name[FN_REFLEN];
my_snprintf(name, sizeof(name), "%s.%s",
- db_name ? db_name : thd->get_db(), table_name);
+ db_name.str ? db_name.str : thd->get_db(), table_name.str);
my_error(ER_BAD_TABLE_ERROR, MYF(0), name);
}
diff --git a/sql/sql_base.h b/sql/sql_base.h
index 81413d00..505fd618 100644
--- a/sql/sql_base.h
+++ b/sql/sql_base.h
@@ -28,6 +28,7 @@ struct Name_resolution_context;
class Open_table_context;
class Open_tables_state;
class Prelocking_strategy;
+class DML_prelocking_strategy;
struct TABLE_LIST;
class THD;
struct handlerton;
@@ -178,7 +179,7 @@ bool fill_record_n_invoke_before_triggers(THD *thd, TABLE *table,
bool ignore_errors,
enum trg_event_type event);
bool insert_fields(THD *thd, Name_resolution_context *context,
- const char *db_name, const char *table_name,
+ const LEX_CSTRING &db_name, const LEX_CSTRING &table_name,
List_iterator<Item> *it, bool any_privileges,
uint *hidden_bit_fields, bool returning_field);
void make_leaves_list(THD *thd, List<TABLE_LIST> &list, TABLE_LIST *tables,
@@ -292,6 +293,9 @@ bool open_normal_and_derived_tables(THD *thd, TABLE_LIST *tables, uint flags,
bool open_tables_only_view_structure(THD *thd, TABLE_LIST *tables,
bool can_deadlock);
bool open_and_lock_internal_tables(TABLE *table, bool lock);
+bool open_tables_for_query(THD *thd, TABLE_LIST *tables,
+ uint *table_count, uint flags,
+ DML_prelocking_strategy *prelocking_strategy);
bool lock_tables(THD *thd, TABLE_LIST *tables, uint counter, uint flags);
int decide_logging_format(THD *thd, TABLE_LIST *tables);
void close_thread_table(THD *thd, TABLE **table_ptr);
@@ -361,7 +365,7 @@ inline void setup_table_map(TABLE *table, TABLE_LIST *table_list, uint tablenr)
}
table->tablenr= tablenr;
table->map= (table_map) 1 << tablenr;
- table->force_index= table_list->force_index;
+ table->force_index= table->force_index_join= 0;
table->force_index_order= table->force_index_group= 0;
table->covering_keys= table->s->keys_for_keyread;
}
@@ -434,6 +438,17 @@ public:
};
+
+class Multiupdate_prelocking_strategy : public DML_prelocking_strategy
+{
+ bool done;
+ bool has_prelocking_list;
+public:
+ void reset(THD *thd);
+ bool handle_end(THD *thd);
+};
+
+
/**
A strategy for prelocking algorithm to be used for LOCK TABLES
statement.
diff --git a/sql/sql_bitmap.h b/sql/sql_bitmap.h
index 353601eb..05b201a5 100644
--- a/sql/sql_bitmap.h
+++ b/sql/sql_bitmap.h
@@ -270,13 +270,21 @@ public:
{
return buffer[0];
}
- uint bits_set()
+ uint bits_set() const
{
uint res= 0;
for (size_t i= 0; i < ARRAY_ELEMENTS; i++)
- res += my_count_bits(buffer[i]);
+ if (buffer[i])
+ res+= my_count_bits(buffer[i]);
return res;
}
+ uint find_first_bit() const
+ {
+ for (size_t i= 0; i < ARRAY_ELEMENTS; i++)
+ if (buffer[i])
+ return (uint)i*BITS_PER_ELEMENT + my_find_first_bit(buffer[i]);
+ return width;
+ }
class Iterator
{
const Bitmap& map;
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 34d063fc..d3fbd034 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -2351,13 +2351,13 @@ void Query_cache::invalidate(THD *thd, const char *key, size_t key_length,
Remove all cached queries that uses the given database.
*/
-void Query_cache::invalidate(THD *thd, const char *db)
+void Query_cache::invalidate(THD *thd, const LEX_CSTRING &db)
{
DBUG_ENTER("Query_cache::invalidate (db)");
if (is_disabled())
DBUG_VOID_RETURN;
- DBUG_SLOW_ASSERT(ok_for_lower_case_names(db));
+ DBUG_SLOW_ASSERT(Lex_ident_fs(db).ok_for_lower_case_names());
bool restart= FALSE;
/*
@@ -2377,7 +2377,7 @@ void Query_cache::invalidate(THD *thd, const char *db)
{
Query_cache_block *next= table_block->next;
Query_cache_table *table = table_block->table();
- if (strcmp(table->db(),db) == 0)
+ if (strcmp(table->db(), db.str) == 0)
{
Query_cache_block_table *list_root= table_block->table(0);
invalidate_query_block_list(list_root);
diff --git a/sql/sql_cache.h b/sql/sql_cache.h
index a0203476..1bdff55d 100644
--- a/sql/sql_cache.h
+++ b/sql/sql_cache.h
@@ -485,7 +485,7 @@ protected:
my_bool using_transactions);
/* Remove all queries that uses any of the tables in following database */
- void invalidate(THD *thd, const char *db);
+ void invalidate(THD *thd, const LEX_CSTRING &db);
/* Remove all queries that uses any of the listed following table */
void invalidate_by_MyISAM_filename(const char *filename);
@@ -584,6 +584,8 @@ struct Query_cache_query_flags
query_cache.send_result_to_client(A, B, C)
#define query_cache_invalidate_by_MyISAM_filename_ref \
&query_cache_invalidate_by_MyISAM_filename
+#define query_cache_invalidate_locked_for_write(A, B) \
+ query_cache.invalidate_locked_for_write(A, B)
/* note the "maybe": it's a read without mutex */
#define query_cache_maybe_disabled(T) \
(T->variables.query_cache_type == 0 || query_cache.query_cache_size == 0)
@@ -601,6 +603,7 @@ struct Query_cache_query_flags
#define query_cache_invalidate1(A,B) do { } while(0)
#define query_cache_send_result_to_client(A, B, C) 0
#define query_cache_invalidate_by_MyISAM_filename_ref NULL
+#define query_cache_invalidate_locked_for_write(A, B) do { } while(0)
#define query_cache_abort(A,B) do { } while(0)
#define query_cache_end_of_result(A) do { } while(0)
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 711ffb1b..b1aab545 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -48,7 +48,6 @@
#include "sql_audit.h"
#include <m_ctype.h>
#include <sys/stat.h>
-#include <thr_alarm.h>
#include <mysys_err.h>
#include <limits.h>
@@ -637,11 +636,14 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
protocol_text(this), protocol_binary(this), initial_status_var(0),
m_current_stage_key(0), m_psi(0),
in_sub_stmt(0), log_all_errors(0),
- binlog_unsafe_warning_flags(0), used(0),
+ binlog_unsafe_warning_flags(0),
current_stmt_binlog_format(BINLOG_FORMAT_MIXED),
bulk_param(0),
table_map_for_update(0),
+ m_sent_row_count(0),
+ sent_row_count_for_statement(0),
m_examined_row_count(0),
+ examined_row_count_for_statement(0),
accessed_rows_and_keys(0),
m_digest(NULL),
m_statement_psi(NULL),
@@ -776,7 +778,6 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
my_hash_clear(&ull_hash);
tmp_table=0;
cuted_fields= 0L;
- m_sent_row_count= 0L;
limit_found_rows= 0;
m_row_count_func= -1;
statement_id_counter= 0UL;
@@ -1133,31 +1134,31 @@ ret:
}
extern "C"
-void *thd_alloc(MYSQL_THD thd, size_t size)
+void *thd_alloc(const MYSQL_THD thd, size_t size)
{
return thd->alloc(size);
}
extern "C"
-void *thd_calloc(MYSQL_THD thd, size_t size)
+void *thd_calloc(const MYSQL_THD thd, size_t size)
{
return thd->calloc(size);
}
extern "C"
-char *thd_strdup(MYSQL_THD thd, const char *str)
+char *thd_strdup(const MYSQL_THD thd, const char *str)
{
return thd->strdup(str);
}
extern "C"
-char *thd_strmake(MYSQL_THD thd, const char *str, size_t size)
+char *thd_strmake(const MYSQL_THD thd, const char *str, size_t size)
{
return thd->strmake(str, size);
}
extern "C"
-LEX_CSTRING *thd_make_lex_string(THD *thd, LEX_CSTRING *lex_str,
+LEX_CSTRING *thd_make_lex_string(const THD *thd, LEX_CSTRING *lex_str,
const char *str, size_t size,
int allocate_lex_string)
{
@@ -1166,7 +1167,7 @@ LEX_CSTRING *thd_make_lex_string(THD *thd, LEX_CSTRING *lex_str,
}
extern "C"
-void *thd_memdup(MYSQL_THD thd, const void* str, size_t size)
+void *thd_memdup(const MYSQL_THD thd, const void* str, size_t size)
{
return thd->memdup(str, size);
}
@@ -1196,6 +1197,63 @@ void thd_gmt_sec_to_TIME(MYSQL_THD thd, MYSQL_TIME *ltime, my_time_t t)
}
+/*
+ @brief
+ Convert a non-zero DATETIME to its safe timeval based representation,
+ which guarantees a safe roundtrip DATETIME->timeval->DATETIME,
+ e.g. to optimize:
+
+ WHERE timestamp_arg0 = datetime_arg1
+
+ in the way that we replace "datetime_arg1" to its TIMESTAMP equivalent
+ "timestamp_arg1" and switch from DATETIME comparison to TIMESTAMP comparison:
+
+ WHERE timestamp_arg0 = timestamp_arg1
+
+ This helps to avoid slow TIMESTAMP->DATETIME data type conversion
+ for timestamp_arg0 per row.
+
+ @detail
+ Round trip is possible if the input "YYYY-MM-DD hh:mm:ss" value
+ satisfies the following conditions:
+
+ 1. TIME_to_gmt_sec() returns no errors or warnings,
+ which means the input value
+ a. has no zeros in YYYYMMDD
+ b. fits into the TIMESTAMP range
+ c. does not fall into the spring forward gap
+ (because values inside gaps get adjusted to the beginning of the gap)
+
+ 2. The my_time_t value returned by TIME_to_gmt_sec() must not be
+ near a DST change or near a leap second, to avoid anomalies:
+ - "YYYY-MM-DD hh:mm:ss" has more than one matching my_time_t values
+ - "YYYY-MM-DD hh:mm:ss" has no matching my_time_t values
+ (e.g. fall into the spring forward gap)
+
+ @param dt The DATETIME value to convert.
+ Must not be zero '0000-00-00 00:00:00.000000'.
+ (The zero value must be handled by the caller).
+
+ @return The conversion result
+ @retval If succeeded, non-NULL Timeval value.
+ @retval Timeval_null value representing SQL NULL if the argument
+ does not have a safe replacement.
+*/
+Timeval_null
+THD::safe_timeval_replacement_for_nonzero_datetime(const Datetime &dt)
+{
+ used|= THD::TIME_ZONE_USED;
+ DBUG_ASSERT(non_zero_date(dt.get_mysql_time()));
+ uint error= 0;
+ const MYSQL_TIME *ltime= dt.get_mysql_time();
+ my_time_t sec= variables.time_zone->TIME_to_gmt_sec(ltime, &error);
+ if (error /* (1) */ ||
+ !variables.time_zone->is_monotone_continuous_around(sec) /* (2) */)
+ return Timeval_null();
+ return Timeval_null(sec, ltime->second_part);
+}
+
+
#ifdef _WIN32
extern "C" my_thread_id next_thread_id_noinline()
{
@@ -1230,10 +1288,6 @@ void THD::init()
*/
variables.pseudo_thread_id= thread_id;
- variables.default_master_connection.str= default_master_connection_buff;
- ::strmake(default_master_connection_buff,
- global_system_variables.default_master_connection.str,
- variables.default_master_connection.length);
mysql_mutex_unlock(&LOCK_global_system_variables);
user_time.val= start_time= start_time_sec_part= 0;
@@ -1346,7 +1400,7 @@ void THD::update_stats(void)
/* A SQL query. */
if (lex->sql_command == SQLCOM_SELECT)
select_commands++;
- else if (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND)
+ else if (sql_command_flags() & CF_STATUS_COMMAND)
{
/* Ignore 'SHOW ' commands */
}
@@ -1546,6 +1600,8 @@ void THD::cleanup(void)
else
trans_rollback(this);
+ DEBUG_SYNC(this, "THD_cleanup_after_trans_cleanup");
+
DBUG_ASSERT(open_tables == NULL);
DBUG_ASSERT(m_transaction_psi == NULL);
@@ -1901,9 +1957,6 @@ void THD::awake_no_mutex(killed_state state_to_set)
}
#endif
- /* Mark the target thread's alarm request expired, and signal alarm. */
- thr_alarm_kill(thread_id);
-
/* Send an event to the scheduler that a thread should be killed. */
if (!slave_thread)
MYSQL_CALLBACK(scheduler, post_kill_notification, (this));
@@ -2352,7 +2405,7 @@ void THD::cleanup_after_query()
bool THD::convert_string(LEX_STRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length,
- CHARSET_INFO *from_cs)
+ CHARSET_INFO *from_cs) const
{
DBUG_ENTER("THD::convert_string");
size_t new_length= to_cs->mbmaxlen * from_length;
@@ -2389,7 +2442,7 @@ bool THD::convert_string(LEX_STRING *to, CHARSET_INFO *to_cs,
*/
bool THD::reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *cs,
- const char *str, size_t length)
+ const char *str, size_t length) const
{
/*
When reinterpreting from binary to tricky character sets like
@@ -2431,7 +2484,7 @@ bool THD::reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *cs,
*/
bool THD::convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length,
- String_copier *status)
+ String_copier *status) const
{
DBUG_ENTER("THD::convert_fix");
size_t dst_length= dstcs->mbmaxlen * src_length;
@@ -2449,7 +2502,7 @@ bool THD::convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
*/
bool THD::copy_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length,
- String_copier *status)
+ String_copier *status) const
{
DBUG_ENTER("THD::copy_fix");
size_t dst_length= dstcs->mbmaxlen * src_length;
@@ -2481,7 +2534,7 @@ public:
bool THD::convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs,
- const char *src, size_t src_length)
+ const char *src, size_t src_length) const
{
String_copier_with_error status;
return convert_fix(dstcs, dst, srccs, src, src_length, &status) ||
@@ -2491,7 +2544,7 @@ bool THD::convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
bool THD::copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs,
- const char *src, size_t src_length)
+ const char *src, size_t src_length) const
{
String_copier_with_error status;
return copy_fix(dstcs, dst, srccs, src, src_length, &status) ||
@@ -2514,7 +2567,8 @@ bool THD::copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
!0 out of memory
*/
-bool THD::convert_string(String *s, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs)
+bool THD::convert_string(String *s, CHARSET_INFO *from_cs,
+ CHARSET_INFO *to_cs)
{
uint dummy_errors;
if (unlikely(convert_buffer.copy(s->ptr(), s->length(), from_cs, to_cs,
@@ -2546,7 +2600,8 @@ bool THD::check_string_for_wellformedness(const char *str,
}
-bool THD::to_ident_sys_alloc(Lex_ident_sys_st *to, const Lex_ident_cli_st *ident)
+bool THD::to_ident_sys_alloc(Lex_ident_sys_st *to,
+ const Lex_ident_cli_st *ident) const
{
if (ident->is_quoted())
{
@@ -3395,6 +3450,9 @@ int select_export::send_data(List<Item> &items)
uint used_length=0,items_left=items.elements;
List_iterator_fast<Item> li(items);
+ DBUG_EXECUTE_IF("select_export_kill", {
+ thd->killed= KILL_QUERY;
+ });
if (my_b_write(&cache,(uchar*) exchange->line_start->ptr(),
exchange->line_start->length()))
goto err;
@@ -3980,6 +4038,49 @@ Query_arena::Type Statement::type() const
}
+/*
+ Return an internal database name:
+ - validated with Lex_ident_db::check_db_name()
+ - optionally converted to lower-case when lower_case_table_names==1
+
+ The lower-cased copy is made on mem_root when needed.
+ An error is raised in case of EOM or a bad database name.
+
+ @param src - the database name
+ @returns - {NULL,0} on EOM or a bad database name,
+ or a good database name otherwise
+*/
+
+Lex_ident_db
+Query_arena::to_ident_db_internal_with_error(const LEX_CSTRING &src)
+{
+ DBUG_ASSERT(src.str);
+ if (src.str == any_db.str) // e.g. JSON table
+ return any_db; // preserve any_db - it has a special meaning
+
+ bool casedn= lower_case_table_names == 1;
+ const LEX_CSTRING tmp= casedn ? make_ident_casedn(src) : src;
+ if (!tmp.str /*EOM*/ ||
+ Lex_ident_fs(tmp).check_db_name_with_error())
+ return Lex_ident_db();
+
+ return Lex_ident_db(tmp.str, tmp.length);
+}
+
+
+Lex_ident_db
+Table_ident::to_ident_db_internal_with_error(Query_arena *arena) const
+{
+ if (is_derived_table())
+ {
+ DBUG_ASSERT(db.str == empty_c_string && db.length == 0);
+ return Lex_ident_db(empty_c_string, 0);
+ }
+ // Normal table or JSON table
+ return arena->to_ident_db_internal_with_error(db);
+}
+
+
void Statement::set_statement(Statement *stmt)
{
id= stmt->id;
@@ -5833,7 +5934,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup,
cuted_fields= 0;
transaction->savepoints= 0;
first_successful_insert_id_in_cur_stmt= 0;
- reset_slow_query_state();
+ reset_slow_query_state(backup);
}
void THD::restore_sub_statement_state(Sub_statement_state *backup)
@@ -5875,11 +5976,14 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup)
first_successful_insert_id_in_cur_stmt=
backup->first_successful_insert_id_in_cur_stmt;
limit_found_rows= backup->limit_found_rows;
- set_sent_row_count(backup->sent_row_count);
client_capabilities= backup->client_capabilities;
/* Restore statistic needed for slow log */
add_slow_query_state(backup);
+ if (backup->sent_row_count)
+ MYSQL_SET_STATEMENT_ROWS_SENT(m_statement_psi, m_sent_row_count);
+ if (backup->examined_row_count)
+ MYSQL_SET_STATEMENT_ROWS_EXAMINED(m_statement_psi, m_examined_row_count);
/*
If we've left sub-statement mode, reset the fatal error flag.
@@ -5913,18 +6017,20 @@ void THD::store_slow_query_state(Sub_statement_state *backup)
backup->affected_rows= affected_rows;
backup->bytes_sent_old= bytes_sent_old;
backup->examined_row_count= m_examined_row_count;
+ backup->examined_row_count_for_statement= examined_row_count_for_statement;
backup->query_plan_flags= query_plan_flags;
backup->query_plan_fsort_passes= query_plan_fsort_passes;
backup->sent_row_count= m_sent_row_count;
+ backup->sent_row_count_for_statement= sent_row_count_for_statement;
backup->tmp_tables_disk_used= tmp_tables_disk_used;
backup->tmp_tables_size= tmp_tables_size;
backup->tmp_tables_used= tmp_tables_used;
- backup->handler_stats= handler_stats;
+ backup->handler_stats= handler_stats;
}
/* Reset variables related to slow query log */
-void THD::reset_slow_query_state()
+void THD::reset_slow_query_state(Sub_statement_state *backup)
{
affected_rows= 0;
bytes_sent_old= status_var.bytes_sent;
@@ -5935,6 +6041,17 @@ void THD::reset_slow_query_state()
tmp_tables_disk_used= 0;
tmp_tables_size= 0;
tmp_tables_used= 0;
+ if (backup && (backup->in_stored_procedure= in_stored_procedure()))
+ {
+ /*
+ For stored procedures, we want to see stats in show processlist
+ for the current statement, not for the call to stored procedure.
+ This is because 'show processlist' shows the stored procedure
+ query string, not the CALL query.
+ */
+ examined_row_count_for_statement= 0;
+ sent_row_count_for_statement= 0;
+ }
if ((variables.log_slow_verbosity & LOG_SLOW_VERBOSITY_ENGINE))
handler_stats.reset();
}
@@ -5955,6 +6072,17 @@ void THD::add_slow_query_state(Sub_statement_state *backup)
tmp_tables_disk_used+= backup->tmp_tables_disk_used;
tmp_tables_size+= backup->tmp_tables_size;
tmp_tables_used+= backup->tmp_tables_used;
+ if (backup->in_stored_procedure)
+ {
+ /*
+ For stored procedures, we want to see stats in show processlist
+ for the current statement, not for the call to stored procedure.
+ This is because 'show processlist' shows the stored procedure
+ query string, not the CALL query.
+ */
+ examined_row_count_for_statement+= backup->examined_row_count_for_statement;
+ sent_row_count_for_statement+= backup->sent_row_count_for_statement;
+ }
if ((variables.log_slow_verbosity & LOG_SLOW_VERBOSITY_ENGINE))
handler_stats.add(&backup->handler_stats);
}
@@ -5967,28 +6095,21 @@ void THD::set_statement(Statement *stmt)
mysql_mutex_unlock(&LOCK_thd_data);
}
+/*
+ This functions is only called when we send the result from the query
+ cache or in case of select_export().
+*/
void THD::set_sent_row_count(ha_rows count)
{
m_sent_row_count= count;
+ sent_row_count_for_statement+= count;
MYSQL_SET_STATEMENT_ROWS_SENT(m_statement_psi, m_sent_row_count);
}
-void THD::set_examined_row_count(ha_rows count)
-{
- m_examined_row_count= count;
- MYSQL_SET_STATEMENT_ROWS_EXAMINED(m_statement_psi, m_examined_row_count);
-}
-
-void THD::inc_sent_row_count(ha_rows count)
-{
- m_sent_row_count+= count;
- MYSQL_SET_STATEMENT_ROWS_SENT(m_statement_psi, m_sent_row_count);
-}
-
-void THD::inc_examined_row_count(ha_rows count)
+void THD::ps_report_examined_row_count()
{
- m_examined_row_count+= count;
- MYSQL_SET_STATEMENT_ROWS_EXAMINED(m_statement_psi, m_examined_row_count);
+ if (m_examined_row_count)
+ MYSQL_SET_STATEMENT_ROWS_EXAMINED(m_statement_psi, m_examined_row_count);
}
void THD::inc_status_created_tmp_disk_tables()
@@ -6169,6 +6290,26 @@ void THD::get_definer(LEX_USER *definer, bool role)
}
+bool THD::check_slave_ignored_db_with_error(const Lex_ident_db &db) const
+{
+#ifdef HAVE_REPLICATION
+ if (slave_thread)
+ {
+ Rpl_filter *rpl_filter;
+ rpl_filter= system_thread_info.rpl_sql_info->rpl_filter;
+ if (!rpl_filter->db_ok(db.str) ||
+ !rpl_filter->db_ok_with_wild_table(db.str))
+ {
+ my_message(ER_SLAVE_IGNORED_TABLE,
+ ER_THD(this, ER_SLAVE_IGNORED_TABLE), MYF(0));
+ return true;
+ }
+ }
+#endif
+ return false;
+}
+
+
/**
Mark transaction to rollback and mark error as fatal to a sub-statement.
@@ -6611,8 +6752,8 @@ int THD::decide_logging_format(TABLE_LIST *tables)
blackhole_table_found= 1;
if (share->non_determinstic_insert &&
- (sql_command_flags[lex->sql_command] & CF_CAN_GENERATE_ROW_EVENTS
- && !(sql_command_flags[lex->sql_command] & CF_SCHEMA_CHANGE)))
+ (sql_command_flags() & CF_CAN_GENERATE_ROW_EVENTS
+ && !(sql_command_flags() & CF_SCHEMA_CHANGE)))
has_write_tables_with_unsafe_statements= true;
trans= table->file->has_transactions();
@@ -6861,8 +7002,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
if (blackhole_table_found &&
variables.binlog_format == BINLOG_FORMAT_ROW &&
- (sql_command_flags[lex->sql_command] &
- (CF_UPDATES_DATA | CF_DELETES_DATA)))
+ (sql_command_flags() & (CF_UPDATES_DATA | CF_DELETES_DATA)))
{
String table_names;
/*
@@ -6882,8 +7022,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
}
if (!table_names.is_empty())
{
- bool is_update= MY_TEST(sql_command_flags[lex->sql_command] &
- CF_UPDATES_DATA);
+ bool is_update= MY_TEST(sql_command_flags() & CF_UPDATES_DATA);
/*
Replace the last ',' with '.' for table_names
*/
@@ -7016,98 +7155,6 @@ bool THD::binlog_table_should_be_logged(const LEX_CSTRING *db)
binlog_filter->db_ok(db->str)));
}
-/*
- Template member function for ensuring that there is an rows log
- event of the apropriate type before proceeding.
-
- PRE CONDITION:
- - Events of type 'RowEventT' have the type code 'type_code'.
-
- POST CONDITION:
- If a non-NULL pointer is returned, the pending event for thread 'thd' will
- be an event of type 'RowEventT' (which have the type code 'type_code')
- will either empty or have enough space to hold 'needed' bytes. In
- addition, the columns bitmap will be correct for the row, meaning that
- the pending event will be flushed if the columns in the event differ from
- the columns suppled to the function.
-
- RETURNS
- If no error, a non-NULL pending event (either one which already existed or
- the newly created one).
- If error, NULL.
- */
-
-template <class RowsEventT> Rows_log_event*
-THD::binlog_prepare_pending_rows_event(TABLE* table, uint32 serv_id,
- size_t needed,
- bool is_transactional,
- RowsEventT *hint __attribute__((unused)))
-{
- DBUG_ENTER("binlog_prepare_pending_rows_event");
- /* Pre-conditions */
- DBUG_ASSERT((table->s->table_map_id & MAX_TABLE_MAP_ID) != UINT32_MAX &&
- (table->s->table_map_id & MAX_TABLE_MAP_ID) != 0);
-
- /* Fetch the type code for the RowsEventT template parameter */
- int const general_type_code= RowsEventT::TYPE_CODE;
-
- /* Ensure that all events in a GTID group are in the same cache */
- if (variables.option_bits & OPTION_GTID_BEGIN)
- is_transactional= 1;
-
- /*
- There is no good place to set up the transactional data, so we
- have to do it here.
- */
- if (binlog_setup_trx_data() == NULL)
- DBUG_RETURN(NULL);
-
- Rows_log_event* pending= binlog_get_pending_rows_event(is_transactional);
-
- if (unlikely(pending && !pending->is_valid()))
- DBUG_RETURN(NULL);
-
- /*
- Check if the current event is non-NULL and a write-rows
- event. Also check if the table provided is mapped: if it is not,
- then we have switched to writing to a new table.
- If there is no pending event, we need to create one. If there is a pending
- event, but it's not about the same table id, or not of the same type
- (between Write, Update and Delete), or not the same affected columns, or
- going to be too big, flush this event to disk and create a new pending
- event.
- */
- if (!pending ||
- pending->server_id != serv_id ||
- pending->get_table_id() != table->s->table_map_id ||
- pending->get_general_type_code() != general_type_code ||
- pending->get_data_size() + needed > opt_binlog_rows_event_max_size ||
- pending->read_write_bitmaps_cmp(table) == FALSE)
- {
- /* Create a new RowsEventT... */
- Rows_log_event* const
- ev= new RowsEventT(this, table, table->s->table_map_id,
- is_transactional);
- if (unlikely(!ev))
- DBUG_RETURN(NULL);
- ev->server_id= serv_id; // I don't like this, it's too easy to forget.
- /*
- flush the pending event and replace it with the newly created
- event...
- */
- if (unlikely(
- mysql_bin_log.flush_and_set_pending_rows_event(this, ev,
- is_transactional)))
- {
- delete ev;
- DBUG_RETURN(NULL);
- }
-
- DBUG_RETURN(ev); /* This is the new pending event */
- }
- DBUG_RETURN(pending); /* This is the current pending event */
-}
-
/* Declare in unnamed namespace. */
CPP_UNNAMED_NS_START
/**
@@ -7232,13 +7279,10 @@ CPP_UNNAMED_NS_START
CPP_UNNAMED_NS_END
-int THD::binlog_write_row(TABLE* table, bool is_trans,
+int THD::binlog_write_row(TABLE* table, Event_log *bin_log,
+ binlog_cache_data *cache_data, bool is_trans,
uchar const *record)
{
-
- DBUG_ASSERT(is_current_stmt_binlog_format_row());
- DBUG_ASSERT((WSREP_NNULL(this) && wsrep_emulate_bin_log) ||
- mysql_bin_log.is_open());
/*
Pack records into format for transfer. We are allocating more
memory than needed, but that doesn't matter.
@@ -7252,21 +7296,13 @@ int THD::binlog_write_row(TABLE* table, bool is_trans,
size_t const len= pack_row(table, table->rpl_write_set, row_data, record);
- /* Ensure that all events in a GTID group are in the same cache */
- if (variables.option_bits & OPTION_GTID_BEGIN)
- is_trans= 1;
+ auto creator= binlog_should_compress(len) ?
+ Rows_event_factory::get<Write_rows_compressed_log_event>() :
+ Rows_event_factory::get<Write_rows_log_event>();
- Rows_log_event* ev;
- if (binlog_should_compress(len))
- ev =
- binlog_prepare_pending_rows_event(table, variables.server_id,
- len, is_trans,
- static_cast<Write_rows_compressed_log_event*>(0));
- else
- ev =
- binlog_prepare_pending_rows_event(table, variables.server_id,
- len, is_trans,
- static_cast<Write_rows_log_event*>(0));
+ auto *ev= bin_log->prepare_pending_rows_event(this, table, cache_data,
+ variables.server_id,
+ len, is_trans, creator);
if (unlikely(ev == 0))
return HA_ERR_OUT_OF_MEM;
@@ -7274,14 +7310,12 @@ int THD::binlog_write_row(TABLE* table, bool is_trans,
return ev->add_row_data(row_data, len);
}
-int THD::binlog_update_row(TABLE* table, bool is_trans,
+int THD::binlog_update_row(TABLE* table, Event_log *bin_log,
+ binlog_cache_data *cache_data, bool is_trans,
+ enum_binlog_row_image row_image,
const uchar *before_record,
const uchar *after_record)
{
- DBUG_ASSERT(is_current_stmt_binlog_format_row());
- DBUG_ASSERT((WSREP_NNULL(this) && wsrep_emulate_bin_log) ||
- mysql_bin_log.is_open());
-
/**
Save a reference to the original read bitmaps
We will need this to restore the bitmaps at the end as
@@ -7293,10 +7327,9 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
/**
This will remove spurious fields required during execution but
- not needed for binlogging. This is done according to the:
- binlog-row-image option.
+ not needed for binlogging, according to the row_image argument.
*/
- binlog_prepare_row_images(table);
+ binlog_prepare_row_images(table, row_image);
size_t const before_maxlen= max_row_length(table, table->read_set,
before_record);
@@ -7314,11 +7347,6 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
before_record);
size_t const after_size= pack_row(table, table->rpl_write_set, after_row,
after_record);
-
- /* Ensure that all events in a GTID group are in the same cache */
- if (variables.option_bits & OPTION_GTID_BEGIN)
- is_trans= 1;
-
/*
Don't print debug messages when running valgrind since they can
trigger false warnings.
@@ -7330,17 +7358,13 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
DBUG_DUMP("after_row", after_row, after_size);
#endif
- Rows_log_event* ev;
- if(binlog_should_compress(before_size + after_size))
- ev =
- binlog_prepare_pending_rows_event(table, variables.server_id,
- before_size + after_size, is_trans,
- static_cast<Update_rows_compressed_log_event*>(0));
- else
- ev =
- binlog_prepare_pending_rows_event(table, variables.server_id,
- before_size + after_size, is_trans,
- static_cast<Update_rows_log_event*>(0));
+ auto creator= binlog_should_compress(before_size + after_size) ?
+ Rows_event_factory::get<Update_rows_compressed_log_event>() :
+ Rows_event_factory::get<Update_rows_log_event>();
+ auto *ev= bin_log->prepare_pending_rows_event(this, table, cache_data,
+ variables.server_id,
+ before_size + after_size,
+ is_trans, creator);
if (unlikely(ev == 0))
return HA_ERR_OUT_OF_MEM;
@@ -7355,12 +7379,11 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
}
-int THD::binlog_delete_row(TABLE* table, bool is_trans,
+int THD::binlog_delete_row(TABLE* table, Event_log *bin_log,
+ binlog_cache_data *cache_data, bool is_trans,
+ enum_binlog_row_image row_image,
uchar const *record)
{
- DBUG_ASSERT(is_current_stmt_binlog_format_row());
- DBUG_ASSERT((WSREP_NNULL(this) && wsrep_emulate_bin_log) ||
- mysql_bin_log.is_open());
/**
Save a reference to the original read bitmaps
We will need this to restore the bitmaps at the end as
@@ -7375,7 +7398,7 @@ int THD::binlog_delete_row(TABLE* table, bool is_trans,
not needed for binlogging. This is done according to the:
binlog-row-image option.
*/
- binlog_prepare_row_images(table);
+ binlog_prepare_row_images(table, row_image);
/*
Pack records into format for transfer. We are allocating more
@@ -7391,21 +7414,12 @@ int THD::binlog_delete_row(TABLE* table, bool is_trans,
DBUG_DUMP("table->read_set", (uchar*) table->read_set->bitmap, (table->s->fields + 7) / 8);
size_t const len= pack_row(table, table->read_set, row_data, record);
- /* Ensure that all events in a GTID group are in the same cache */
- if (variables.option_bits & OPTION_GTID_BEGIN)
- is_trans= 1;
-
- Rows_log_event* ev;
- if(binlog_should_compress(len))
- ev =
- binlog_prepare_pending_rows_event(table, variables.server_id,
- len, is_trans,
- static_cast<Delete_rows_compressed_log_event*>(0));
- else
- ev =
- binlog_prepare_pending_rows_event(table, variables.server_id,
- len, is_trans,
- static_cast<Delete_rows_log_event*>(0));
+ auto creator= binlog_should_compress(len) ?
+ Rows_event_factory::get<Delete_rows_compressed_log_event>() :
+ Rows_event_factory::get<Delete_rows_log_event>();
+ auto *ev= bin_log->prepare_pending_rows_event(this, table, cache_data,
+ variables.server_id,
+ len, is_trans, creator);
if (unlikely(ev == 0))
return HA_ERR_OUT_OF_MEM;
@@ -7425,14 +7439,12 @@ int THD::binlog_delete_row(TABLE* table, bool is_trans,
Remove from read_set spurious columns. The write_set has been
handled before in table->mark_columns_needed_for_update.
*/
-
-void THD::binlog_prepare_row_images(TABLE *table)
+void binlog_prepare_row_images(TABLE *table, enum_binlog_row_image row_image)
{
DBUG_ENTER("THD::binlog_prepare_row_images");
DBUG_PRINT_BITSET("debug", "table->read_set (before preparing): %s",
table->read_set);
- THD *thd= table->in_use;
/**
if there is a primary key in the table (ie, user declared PK or a
@@ -7440,7 +7452,7 @@ void THD::binlog_prepare_row_images(TABLE *table)
and the handler involved supports this.
*/
if (table->s->primary_key < MAX_KEY &&
- (thd->variables.binlog_row_image < BINLOG_ROW_IMAGE_FULL) &&
+ row_image < BINLOG_ROW_IMAGE_FULL &&
!ha_check_storage_engine_flag(table->s->db_type(),
HTON_NO_BINLOG_ROW_OPT))
{
@@ -7450,7 +7462,7 @@ void THD::binlog_prepare_row_images(TABLE *table)
*/
DBUG_ASSERT(table->read_set != &table->tmp_set);
- switch (thd->variables.binlog_row_image)
+ switch (row_image)
{
case BINLOG_ROW_IMAGE_MINIMAL:
/* MINIMAL: Mark only PK */
@@ -7485,28 +7497,6 @@ void THD::binlog_prepare_row_images(TABLE *table)
DBUG_VOID_RETURN;
}
-
-
-int THD::binlog_remove_pending_rows_event(bool reset_stmt,
- bool is_transactional)
-{
- DBUG_ENTER("THD::binlog_remove_pending_rows_event");
-
- if(!WSREP_EMULATE_BINLOG_NNULL(this) && !mysql_bin_log.is_open())
- DBUG_RETURN(0);
-
- /* Ensure that all events in a GTID group are in the same cache */
- if (variables.option_bits & OPTION_GTID_BEGIN)
- is_transactional= 1;
-
- mysql_bin_log.remove_pending_rows_event(this, is_transactional);
-
- if (reset_stmt)
- reset_binlog_for_next_statement();
- DBUG_RETURN(0);
-}
-
-
int THD::binlog_flush_pending_rows_event(bool stmt_end, bool is_transactional)
{
DBUG_ENTER("THD::binlog_flush_pending_rows_event");
@@ -7522,22 +7512,15 @@ int THD::binlog_flush_pending_rows_event(bool stmt_end, bool is_transactional)
if (variables.option_bits & OPTION_GTID_BEGIN)
is_transactional= 1;
- /*
- Mark the event as the last event of a statement if the stmt_end
- flag is set.
- */
- int error= 0;
- if (Rows_log_event *pending= binlog_get_pending_rows_event(is_transactional))
- {
- if (stmt_end)
- {
- pending->set_flags(Rows_log_event::STMT_END_F);
- reset_binlog_for_next_statement();
- }
- error= mysql_bin_log.flush_and_set_pending_rows_event(this, 0,
- is_transactional);
- }
+ auto *cache_mngr= binlog_get_cache_mngr();
+ if (!cache_mngr)
+ DBUG_RETURN(0);
+ auto *cache= binlog_get_cache_data(cache_mngr,
+ use_trans_cache(this, is_transactional));
+ int error=
+ ::binlog_flush_pending_rows_event(this, stmt_end, is_transactional,
+ mysql_bin_log.as_event_log(), cache);
DBUG_RETURN(error);
}
@@ -8458,14 +8441,18 @@ void AUTHID::parse(const char *str, size_t length)
}
-void Database_qualified_name::copy(MEM_ROOT *mem_root,
- const LEX_CSTRING &db,
- const LEX_CSTRING &name)
+bool Database_qualified_name::copy_sp_name_internal(MEM_ROOT *mem_root,
+ const LEX_CSTRING &db,
+ const LEX_CSTRING &name)
{
- m_db.length= db.length;
- m_db.str= strmake_root(mem_root, db.str, db.length);
- m_name.length= name.length;
- m_name.str= strmake_root(mem_root, name.str, name.length);
+ DBUG_ASSERT(db.str);
+ DBUG_ASSERT(name.str);
+ m_db= lower_case_table_names == 1 ?
+ lex_string_casedn_root(mem_root, &my_charset_utf8mb3_general_ci,
+ db.str, db.length) :
+ lex_string_strmake_root(mem_root, db.str, db.length);
+ m_name= lex_string_strmake_root(mem_root, name.str, name.length);
+ return m_db.str == NULL || m_name.str == NULL; // check if EOM
}
@@ -8579,3 +8566,11 @@ void Charset_loader_server::raise_not_applicable_error(const char *cs,
{
my_error(ER_COLLATION_CHARSET_MISMATCH, MYF(0), cl, cs);
}
+
+
+LEX_CSTRING make_string(THD *thd, const char *start_ptr,
+ const char *end_ptr)
+{
+ size_t length= end_ptr - start_ptr;
+ return {strmake_root(thd->mem_root, start_ptr, length), length};
+}
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 9cca3c17..c832cf77 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -23,6 +23,8 @@
#include "dur_prop.h"
#include <waiting_threads.h>
#include "sql_const.h"
+#include "lex_ident.h"
+#include "sql_used.h"
#include <mysql/plugin_audit.h>
#include "log.h"
#include "rpl_tblmap.h"
@@ -70,6 +72,7 @@ void set_thd_stage_info(void *thd,
#include "wsrep_on.h"
#ifdef WITH_WSREP
#include <inttypes.h>
+#include <ilist.h>
/* wsrep-lib */
#include "wsrep_client_service.h"
#include "wsrep_client_state.h"
@@ -90,7 +93,6 @@ struct rpl_group_info;
struct rpl_parallel_thread;
class Rpl_filter;
class Query_log_event;
-class Load_log_event;
class Log_event_writer;
class sp_rcontext;
class sp_cache;
@@ -146,7 +148,9 @@ enum enum_binlog_row_image {
/** Whenever possible, before and after image contain all columns except blobs. */
BINLOG_ROW_IMAGE_NOBLOB= 1,
/** All columns in both before and after image. */
- BINLOG_ROW_IMAGE_FULL= 2
+ BINLOG_ROW_IMAGE_FULL= 2,
+ /** All columns in before image, but only updated columns in after image */
+ BINLOG_ROW_IMAGE_FULL_NODUP= 3
};
@@ -194,13 +198,18 @@ enum enum_binlog_row_image {
/* Bits for different old style modes */
-#define OLD_MODE_NO_DUP_KEY_WARNINGS_WITH_IGNORE (1 << 0)
-#define OLD_MODE_NO_PROGRESS_INFO (1 << 1)
+#define OLD_MODE_NO_DUP_KEY_WARNINGS_WITH_IGNORE (1 << 0)
+#define OLD_MODE_NO_PROGRESS_INFO (1 << 1)
#define OLD_MODE_ZERO_DATE_TIME_CAST (1 << 2)
#define OLD_MODE_UTF8_IS_UTF8MB3 (1 << 3)
#define OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN (1 << 4)
#define OLD_MODE_COMPAT_5_1_CHECKSUM (1 << 5)
#define OLD_MODE_NO_NULL_COLLATION_IDS (1 << 6)
+#define OLD_MODE_LOCK_ALTER_TABLE_COPY (1 << 7)
+
+#define OLD_MODE_DEFAULT_VALUE OLD_MODE_UTF8_IS_UTF8MB3
+
+void old_mode_deprecated_warnings(THD *thd, ulonglong v);
extern char internal_table_name[2];
extern char empty_c_string[1];
@@ -694,7 +703,7 @@ typedef struct system_variables
char* dynamic_variables_ptr;
uint dynamic_variables_head; /* largest valid variable offset */
uint dynamic_variables_size; /* how many bytes are in use */
-
+
ulonglong max_heap_table_size;
ulonglong tmp_memory_table_size;
ulonglong tmp_disk_table_size;
@@ -716,11 +725,7 @@ typedef struct system_variables
ulonglong sortbuff_size;
ulonglong default_regex_flags;
ulonglong max_mem_used;
- /*
- A bitmap of OPTIMIZER_ADJ_* flags (defined in sql_priv.h).
- See sys_vars.cc:adjust_secondary_key_cost for symbolic names.
- */
- ulonglong optimizer_adjust_secondary_key_costs;
+ ulonglong max_rowid_filter_size;
/**
Place holders to store Multi-source variables in sys_var.cc during
@@ -729,10 +734,14 @@ typedef struct system_variables
ulonglong slave_skip_counter;
ulonglong max_relay_log_size;
+ double optimizer_where_cost, optimizer_scan_setup_cost;
+ double long_query_time_double, max_statement_time_double;
+ double sample_percentage;
+
ha_rows select_limit;
ha_rows max_join_size;
ha_rows expensive_subquery_limit;
- ulong auto_increment_increment, auto_increment_offset;
+
#ifdef WITH_WSREP
/*
Stored values of the auto_increment_increment and auto_increment_offset
@@ -741,11 +750,12 @@ typedef struct system_variables
original values (which are set by the user) by calculated ones (which
are based on the cluster size):
*/
+ ulonglong wsrep_gtid_seq_no;
ulong saved_auto_increment_increment, saved_auto_increment_offset;
ulong saved_lock_wait_timeout;
- ulonglong wsrep_gtid_seq_no;
#endif /* WITH_WSREP */
- uint eq_range_index_dive_limit;
+
+ ulong auto_increment_increment, auto_increment_offset;
ulong column_compression_zlib_strategy;
ulong lock_wait_timeout;
ulong join_cache_level;
@@ -754,7 +764,6 @@ typedef struct system_variables
ulong max_length_for_sort_data;
ulong max_recursive_iterations;
ulong max_sort_length;
- ulong max_tmp_tables;
ulong max_insert_delayed_threads;
ulong min_examined_row_limit;
ulong net_buffer_length;
@@ -771,8 +780,8 @@ typedef struct system_variables
ulong optimizer_max_sel_arg_weight;
ulong optimizer_max_sel_args;
ulong optimizer_trace_max_mem_size;
+ ulong optimizer_adjust_secondary_key_costs;
ulong use_stat_tables;
- double sample_percentage;
ulong histogram_size;
ulong histogram_type;
ulong preload_buff_size;
@@ -792,6 +801,7 @@ typedef struct system_variables
ulong trans_alloc_block_size;
ulong trans_prealloc_size;
ulong log_warnings;
+ ulong block_encryption_mode;
ulong log_slow_max_warnings;
/* Flags for slow log filtering */
ulong log_slow_rate_limit;
@@ -803,8 +813,15 @@ typedef struct system_variables
ulong tx_isolation;
ulong updatable_views_with_limit;
ulong alter_algorithm;
- int max_user_connections;
ulong server_id;
+ ulong session_track_transaction_info;
+ ulong threadpool_priority;
+ ulong vers_alter_history;
+
+ /* deadlock detection */
+ ulong wt_timeout_short, wt_deadlock_search_depth_short;
+ ulong wt_timeout_long, wt_deadlock_search_depth_long;
+
/**
In slave thread we need to know in behalf of which
thread the query is being run to replicate temp tables properly
@@ -814,10 +831,18 @@ typedef struct system_variables
When replicating an event group with GTID, keep these values around so
slave binlog can receive the same GTID as the original.
*/
- uint32 gtid_domain_id;
uint64 gtid_seq_no;
+ uint32 gtid_domain_id;
uint group_concat_max_len;
+ uint eq_range_index_dive_limit;
+ uint idle_transaction_timeout;
+ uint idle_readonly_transaction_timeout;
+ uint idle_write_transaction_timeout;
+ uint column_compression_threshold;
+ uint column_compression_zlib_level;
+ uint in_subquery_conversion_threshold;
+ int max_user_connections;
/**
Default transaction access mode. READ ONLY (true) or READ WRITE (false).
@@ -837,7 +862,16 @@ typedef struct system_variables
my_bool binlog_annotate_row_events;
my_bool binlog_direct_non_trans_update;
my_bool column_compression_zlib_wrap;
-
+ my_bool sysdate_is_now;
+ my_bool wsrep_on;
+ my_bool wsrep_dirty_reads;
+ my_bool pseudo_slave_mode;
+ my_bool session_track_schema;
+ my_bool session_track_state_change;
+#ifdef USER_VAR_TRACKING
+ my_bool session_track_user_variables;
+#endif // USER_VAR_TRACKING
+ my_bool tcp_nodelay;
plugin_ref table_plugin;
plugin_ref tmp_table_plugin;
plugin_ref enforced_table_plugin;
@@ -863,48 +897,20 @@ typedef struct system_variables
MY_LOCALE *lc_time_names;
Time_zone *time_zone;
+ char *session_track_system_variables;
+ char *redirect_url;
- my_bool sysdate_is_now;
-
- /* deadlock detection */
- ulong wt_timeout_short, wt_deadlock_search_depth_short;
- ulong wt_timeout_long, wt_deadlock_search_depth_long;
-
- my_bool wsrep_on;
- my_bool wsrep_causal_reads;
- uint wsrep_sync_wait;
- ulong wsrep_retry_autocommit;
+ /* Some wsrep variables */
ulonglong wsrep_trx_fragment_size;
+ ulong wsrep_retry_autocommit;
ulong wsrep_trx_fragment_unit;
ulong wsrep_OSU_method;
- my_bool wsrep_dirty_reads;
- double long_query_time_double, max_statement_time_double;
-
- my_bool pseudo_slave_mode;
-
- char *session_track_system_variables;
- ulong session_track_transaction_info;
- my_bool session_track_schema;
- my_bool session_track_state_change;
-#ifdef USER_VAR_TRACKING
- my_bool session_track_user_variables;
-#endif // USER_VAR_TRACKING
- my_bool tcp_nodelay;
-
- ulong threadpool_priority;
-
- uint idle_transaction_timeout;
- uint idle_readonly_transaction_timeout;
- uint idle_write_transaction_timeout;
- uint column_compression_threshold;
- uint column_compression_zlib_level;
- uint in_subquery_conversion_threshold;
-
- ulonglong max_rowid_filter_size;
+ uint wsrep_sync_wait;
vers_asof_timestamp_t vers_asof_timestamp;
- ulong vers_alter_history;
my_bool binlog_alter_two_phase;
+
+ Charset_collation_map_st character_set_collations;
} SV;
/**
@@ -994,19 +1000,21 @@ typedef struct system_status_var
functions are used */
ulong feature_dynamic_columns; /* +1 when creating a dynamic column */
ulong feature_fulltext; /* +1 when MATCH is used */
- ulong feature_gis; /* +1 opening a table with GIS features */
- ulong feature_invisible_columns; /* +1 opening a table with invisible column */
- ulong feature_json; /* +1 when JSON function appears in the statement */
+ ulong feature_gis; /* +1 opening table with GIS features */
+ ulong feature_invisible_columns; /* +1 opening table with invisible column */
+ ulong feature_json; /* +1 when JSON function is used */
ulong feature_locale; /* +1 when LOCALE is set */
ulong feature_subquery; /* +1 when subqueries are used */
- ulong feature_system_versioning; /* +1 opening a table WITH SYSTEM VERSIONING */
+ ulong feature_system_versioning; /* +1 opening table WITH SYSTEM VERSIONING */
ulong feature_application_time_periods;
/* +1 opening a table with application-time period */
- ulong feature_insert_returning; /* +1 when INSERT...RETURNING is used */
+ ulong feature_insert_returning; /* +1 when INSERT...RETURNING is used */
ulong feature_timezone; /* +1 when XPATH is used */
ulong feature_trigger; /* +1 opening a table with triggers */
ulong feature_xml; /* +1 when XPATH is used */
ulong feature_window_functions; /* +1 when window functions are used */
+ ulong feature_into_outfile; /* +1 when INTO OUTFILE is used */
+ ulong feature_into_variable; /* +1 when INTO VARIABLE is used */
/* From MASTER_GTID_WAIT usage */
ulong master_gtid_wait_timeouts; /* Number of timeouts */
@@ -1242,21 +1250,31 @@ public:
inline bool is_conventional() const
{ return state == STMT_CONVENTIONAL_EXECUTION; }
- inline void* alloc(size_t size) { return alloc_root(mem_root,size); }
- inline void* calloc(size_t size)
+ inline void* alloc(size_t size) const { return alloc_root(mem_root,size); }
+ inline void* calloc(size_t size) const
{
void *ptr;
if (likely((ptr=alloc_root(mem_root,size))))
bzero(ptr, size);
return ptr;
}
- inline char *strdup(const char *str)
+ inline char *strdup(const char *str) const
{ return strdup_root(mem_root,str); }
- inline char *strmake(const char *str, size_t size)
+ inline char *strmake(const char *str, size_t size) const
{ return strmake_root(mem_root,str,size); }
- inline void *memdup(const void *str, size_t size)
+ inline LEX_CSTRING strcat(const LEX_CSTRING &a, const LEX_CSTRING &b) const
+ {
+ char *buf= (char*)alloc(a.length + b.length + 1);
+ if (unlikely(!buf))
+ return null_clex_str;
+ memcpy(buf, a.str, a.length);
+ memcpy(buf + a.length, b.str, b.length);
+ buf[a.length + b.length] = 0;
+ return {buf, a.length + b.length};
+ }
+ inline void *memdup(const void *str, size_t size) const
{ return memdup_root(mem_root,str,size); }
- inline void *memdup_w_gap(const void *str, size_t size, size_t gap)
+ inline void *memdup_w_gap(const void *str, size_t size, size_t gap) const
{
void *ptr;
if (likely((ptr= alloc_root(mem_root,size+gap))))
@@ -1264,6 +1282,151 @@ public:
return ptr;
}
+ /*
+ Methods to copy a string to the memory root
+ and return the value as a LEX_CSTRING.
+ */
+ LEX_CSTRING strmake_lex_cstring(const char *str, size_t length) const
+ {
+ const char *tmp= strmake_root(mem_root, str, length);
+ if (!tmp)
+ return {0,0};
+ return {tmp, length};
+ }
+ LEX_CSTRING strmake_lex_cstring(const LEX_CSTRING &from) const
+ {
+ return strmake_lex_cstring(from.str, from.length);
+ }
+ LEX_CSTRING strmake_lex_cstring_trim_whitespace(const LEX_CSTRING &from,
+ CHARSET_INFO *cs)
+ {
+ return strmake_lex_cstring(Lex_cstring(from).trim_whitespace(cs));
+ }
+
+ /*
+ Methods to copy a string to memory root,
+ write the result to the out parameter,
+ and return as a LEX_STRING/LEX_CSTRING pointer.
+ */
+ LEX_STRING *make_lex_string(LEX_STRING *lex_str, const char* str,
+ size_t length) const
+ {
+ if (!(lex_str->str= strmake_root(mem_root, str, length)))
+ {
+ lex_str->length= 0;
+ return 0;
+ }
+ lex_str->length= length;
+ return lex_str;
+ }
+ LEX_CSTRING *make_lex_string(LEX_CSTRING *lex_str, const char* str,
+ size_t length) const
+ {
+ if (!(lex_str->str= strmake_root(mem_root, str, length)))
+ {
+ lex_str->length= 0;
+ return 0;
+ }
+ lex_str->length= length;
+ return lex_str;
+ }
+
+ /*
+ Methods to copy a string value on memory root,
+ but also allocate on memory root LEX_CSTRING itself
+ and return a pointer to it.
+ */
+ LEX_CSTRING *make_clex_string(const char* str, size_t length) const
+ {
+ LEX_CSTRING *lex_str;
+ char *tmp;
+ if (unlikely(!(lex_str= (LEX_CSTRING *)alloc_root(mem_root,
+ sizeof(LEX_CSTRING) +
+ length+1))))
+ return 0;
+ tmp= (char*) (lex_str+1);
+ lex_str->str= tmp;
+ memcpy(tmp, str, length);
+ tmp[length]= 0;
+ lex_str->length= length;
+ return lex_str;
+ }
+ LEX_CSTRING *make_clex_string(const LEX_CSTRING from) const
+ {
+ return make_clex_string(from.str, from.length);
+ }
+
+ // Allocate LEX_STRING for character set conversion
+ bool alloc_lex_string(LEX_STRING *dst, size_t length) const
+ {
+ if (likely((dst->str= (char*) alloc(length))))
+ return false;
+ dst->length= 0; // Safety
+ return true; // EOM
+ }
+
+ // Remove double quotes: aaa""bbb -> aaa"bbb
+ bool quote_unescape(LEX_CSTRING *dst, const LEX_CSTRING *src,
+ char quote) const
+ {
+ const char *tmp= src->str;
+ const char *tmpend= src->str + src->length;
+ char *to;
+ if (!(dst->str= to= (char *) alloc(src->length + 1)))
+ {
+ dst->length= 0; // Safety
+ return true;
+ }
+ for ( ; tmp < tmpend; )
+ {
+ if ((*to++= *tmp++) == quote)
+ tmp++; // Skip double quotes
+ }
+ *to= 0; // End null for safety
+ dst->length= to - dst->str;
+ return false;
+ }
+
+ /*
+ Make a lower-cased copy of an identifier on mem_root.
+
+ @param src - The original identifier (usually coming from the parser)
+ @return - {NULL,0} in case of EOM, or a non-NULL LEX_STRING
+ with the lower-cased identifier copy.
+ */
+ LEX_STRING make_ident_casedn(const LEX_CSTRING &src)
+ {
+ return lex_string_casedn_root(mem_root, &my_charset_utf8mb3_general_ci,
+ src.str, src.length);
+ }
+
+ /*
+ Make an exact copy or a lower-cased copy of an identifier on mem_root.
+
+ @param src - The original identifier (usually coming from the parser)
+ @param casedn - If the name should be converted to lower case
+ @return - {NULL,0} in case of EOM,
+ or a non-NULL LEX_STRING with the identifier copy.
+ */
+ LEX_STRING make_ident_opt_casedn(const LEX_CSTRING &src, bool casedn)
+ {
+ return casedn ? make_ident_casedn(src) :
+ lex_string_strmake_root(mem_root, src.str, src.length);
+ }
+
+ /*
+ Convert a LEX_CSTRING to a valid internal database name:
+ - validated with Lex_ident_fs::check_db_name()
+ - optionally lower-cased when lower_case_table_names==1
+ The lower-cased copy is created on Query_arena::mem_root, when needed.
+
+ @param name - The name to normalize. Must not be {NULL,0}.
+ @return - {NULL,0} on EOM or a bad database name
+ (with an errror is raised,
+ or a good database name otherwise.
+ */
+ Lex_ident_db to_ident_db_internal_with_error(const LEX_CSTRING &name);
+
void set_query_arena(Query_arena *set);
void free_items();
@@ -1334,6 +1497,8 @@ struct send_column_info_state
}
};
+extern uint sql_command_flags[];
+
/**
@class Statement
@@ -1414,6 +1579,10 @@ public:
{
set_query_inner(CSET_STRING());
}
+ ulong sql_command_flags() const
+ {
+ return ::sql_command_flags[lex->sql_command];
+ }
/**
Name of the current (default) database.
@@ -1883,6 +2052,7 @@ public:
ulonglong tmp_tables_size;
ulonglong client_capabilities;
ulonglong cuted_fields, sent_row_count, examined_row_count;
+ ulonglong sent_row_count_for_statement, examined_row_count_for_statement;
ulonglong affected_rows;
ulonglong bytes_sent_old;
ha_handler_stats handler_stats;
@@ -1893,6 +2063,7 @@ public:
uint in_sub_stmt; /* 0, SUB_STMT_TRIGGER or SUB_STMT_FUNCTION */
bool enable_slow_log;
bool last_insert_id_used;
+ bool in_stored_procedure;
enum enum_check_fields count_cuted_fields;
};
@@ -2659,6 +2830,7 @@ struct thd_async_state
*/
class THD: public THD_count, /* this must be first */
+ public Sql_used,
public Statement,
/*
This is to track items changed during execution of a prepared
@@ -2743,7 +2915,7 @@ public:
Protocol_binary protocol_binary; // Binary protocol
HASH user_vars; // hash for user variables
String packet; // dynamic buffer for network I/O
- String convert_buffer; // buffer for charset conversions
+ String convert_buffer; // buffer for charset conversions
struct my_rnd_struct rand; // used for authentication
struct system_variables variables; // Changeable local variables
struct system_status_var status_var; // Per thread statistic vars
@@ -2751,6 +2923,7 @@ public:
struct system_status_var *initial_status_var; /* used by show status */
ha_handler_stats handler_stats; // Handler statistics
THR_LOCK_INFO lock_info; // Locking info of this thread
+
/**
Protects THD data accessed from other threads:
- thd->query and thd->query_length (used by SHOW ENGINE
@@ -2987,12 +3160,6 @@ public:
*/
uint32 binlog_unsafe_warning_flags;
- typedef uint used_t;
- enum { RAND_USED=1, TIME_ZONE_USED=2, QUERY_START_SEC_PART_USED=4,
- THREAD_SPECIFIC_USED=8 };
-
- used_t used;
-
#ifndef MYSQL_CLIENT
binlog_cache_mngr * binlog_setup_trx_data();
/*
@@ -3006,43 +3173,44 @@ public:
*/
void binlog_start_trans_and_stmt();
void binlog_set_stmt_begin();
- int binlog_write_row(TABLE* table, bool is_transactional,
+ int binlog_write_row(TABLE* table, Event_log *bin_log,
+ binlog_cache_data *cache_data, bool is_transactional,
const uchar *buf);
- int binlog_delete_row(TABLE* table, bool is_transactional,
- const uchar *buf);
- int binlog_update_row(TABLE* table, bool is_transactional,
+ int binlog_delete_row(TABLE* table, Event_log *bin_log,
+ binlog_cache_data *cache_data, bool is_transactional,
+ enum_binlog_row_image row_image, const uchar *buf);
+ int binlog_update_row(TABLE* table, Event_log *bin_log,
+ binlog_cache_data *cache_data, bool is_transactional,
+ enum_binlog_row_image row_image,
const uchar *old_data, const uchar *new_data);
bool prepare_handlers_for_update(uint flag);
bool binlog_write_annotated_row(Log_event_writer *writer);
void binlog_prepare_for_row_logging();
bool binlog_write_table_maps();
- bool binlog_write_table_map(TABLE *table, bool with_annotate);
- static void binlog_prepare_row_images(TABLE* table);
void set_server_id(uint32 sid) { variables.server_id = sid; }
/*
Member functions to handle pending event for row-level logging.
*/
- template <class RowsEventT> Rows_log_event*
- binlog_prepare_pending_rows_event(TABLE* table, uint32 serv_id,
- size_t needed,
- bool is_transactional,
- RowsEventT* hint);
- Rows_log_event* binlog_get_pending_rows_event(bool is_transactional) const;
- void binlog_set_pending_rows_event(Rows_log_event* ev, bool is_transactional);
+ binlog_cache_mngr *binlog_get_cache_mngr() const;
inline int binlog_flush_pending_rows_event(bool stmt_end)
{
return (binlog_flush_pending_rows_event(stmt_end, FALSE) ||
binlog_flush_pending_rows_event(stmt_end, TRUE));
}
int binlog_flush_pending_rows_event(bool stmt_end, bool is_transactional);
- int binlog_remove_pending_rows_event(bool clear_maps, bool is_transactional);
bool binlog_need_stmt_format(bool is_transactional) const
{
- return log_current_statement() &&
- !binlog_get_pending_rows_event(is_transactional);
+ if (!log_current_statement())
+ return false;
+ auto *cache_mngr= binlog_get_cache_mngr();
+ if (!cache_mngr)
+ return true;
+ return !binlog_get_pending_rows_event(cache_mngr,
+ use_trans_cache(this,
+ is_transactional));
}
bool binlog_for_noop_dml(bool transactional_table);
@@ -3448,12 +3616,13 @@ public:
ha_rows cuted_fields;
-private:
/*
number of rows we actually sent to the client, including "synthetic"
rows in ROLLUP etc.
*/
ha_rows m_sent_row_count;
+ /* Number of rows for the total statement */
+ ha_rows sent_row_count_for_statement;
/**
Number of rows read and/or evaluated for a statement. Used for
@@ -3466,8 +3635,9 @@ private:
filesort() before reading it for e.g. update.
*/
ha_rows m_examined_row_count;
+ /* Number of rows for the top level query */
+ ha_rows examined_row_count_for_statement;
-public:
ha_rows get_sent_row_count() const
{ return m_sent_row_count; }
@@ -3482,10 +3652,25 @@ public:
{ return affected_rows; }
void set_sent_row_count(ha_rows count);
- void set_examined_row_count(ha_rows count);
- void inc_sent_row_count(ha_rows count);
- void inc_examined_row_count(ha_rows count);
+ inline void inc_sent_row_count(ha_rows count)
+ {
+ m_sent_row_count+= count;
+ sent_row_count_for_statement+= count;
+ MYSQL_SET_STATEMENT_ROWS_SENT(m_statement_psi, m_sent_row_count);
+ }
+ inline void inc_examined_row_count_fast(ha_rows count= 1)
+ {
+ m_examined_row_count+= count;
+ examined_row_count_for_statement+= count;
+ }
+ inline void inc_examined_row_count(ha_rows count= 1)
+ {
+ inc_examined_row_count_fast();
+ MYSQL_SET_STATEMENT_ROWS_EXAMINED(m_statement_psi, m_examined_row_count);
+ }
+
+ void ps_report_examined_row_count();
void inc_status_created_tmp_disk_tables();
void inc_status_created_tmp_files();
@@ -3512,7 +3697,7 @@ public:
Check if the number of rows accessed by a statement exceeded
LIMIT ROWS EXAMINED. If so, signal the query engine to stop execution.
*/
- void check_limit_rows_examined()
+ inline void check_limit_rows_examined()
{
if (++accessed_rows_and_keys > lex->limit_rows_examined_cnt)
set_killed(ABORT_QUERY);
@@ -3592,15 +3777,15 @@ public:
/*
Current or next transaction isolation level.
When a connection is established, the value is taken from
- @@session.tx_isolation (default transaction isolation for
- the session), which is in turn taken from @@global.tx_isolation
- (the global value).
+ @@session.transaction_isolation (default transaction isolation
+ for the session), which is in turn taken from
+ @@global.transaction_isolation (the global value).
If there is no transaction started, this variable
holds the value of the next transaction's isolation level.
When a transaction starts, the value stored in this variable
becomes "actual".
At transaction commit or rollback, we assign this variable
- again from @@session.tx_isolation.
+ again from @@session.transaction_isolation.
The only statement that can otherwise change the value
of this variable is SET TRANSACTION ISOLATION LEVEL.
Its purpose is to effect the isolation level of the next
@@ -3610,13 +3795,13 @@ public:
transaction, this assignment (naturally) only affects the
upcoming transaction.
At the end of the current active transaction the value is
- be reset again from @@session.tx_isolation, as described
+ be reset again from @@session.transaction_isolation, as described
above.
*/
enum_tx_isolation tx_isolation;
/*
Current or next transaction access mode.
- See comment above regarding tx_isolation.
+ See comment above regarding transaction_isolation.
*/
bool tx_read_only;
enum_check_fields count_cuted_fields;
@@ -3670,7 +3855,6 @@ public:
This is used for taging error messages in the log files.
*/
LEX_CSTRING connection_name;
- char default_master_connection_buff[MAX_CONNECTION_NAME+1];
uint8 password; /* 0, 1 or 2 */
uint8 failed_com_change_user;
bool slave_thread;
@@ -4133,6 +4317,8 @@ public:
utime_after_query= current_utime();
}
+ Timeval_null safe_timeval_replacement_for_nonzero_datetime(const Datetime &);
+
/**
Update server status after execution of a top level statement.
Currently only checks if a query was slow, and assigns
@@ -4236,104 +4422,23 @@ public:
{
return !stmt_arena->is_stmt_prepare();
}
- inline void* trans_alloc(size_t size)
+ inline void* trans_alloc(size_t size) const
{
return alloc_root(&transaction->mem_root,size);
}
-
- LEX_CSTRING strmake_lex_cstring(const char *str, size_t length)
- {
- const char *tmp= strmake_root(mem_root, str, length);
- if (!tmp)
- return {0,0};
- return {tmp, length};
- }
- LEX_CSTRING strmake_lex_cstring(const LEX_CSTRING &from)
- {
- return strmake_lex_cstring(from.str, from.length);
- }
LEX_CSTRING strmake_lex_cstring_trim_whitespace(const LEX_CSTRING &from)
{
- return strmake_lex_cstring(Lex_cstring(from).trim_whitespace(charset()));
- }
-
- LEX_STRING *make_lex_string(LEX_STRING *lex_str, const char* str, size_t length)
- {
- if (!(lex_str->str= strmake_root(mem_root, str, length)))
- {
- lex_str->length= 0;
- return 0;
- }
- lex_str->length= length;
- return lex_str;
- }
- LEX_CSTRING *make_lex_string(LEX_CSTRING *lex_str, const char* str, size_t length)
- {
- if (!(lex_str->str= strmake_root(mem_root, str, length)))
- {
- lex_str->length= 0;
- return 0;
- }
- lex_str->length= length;
- return lex_str;
- }
- // Remove double quotes: aaa""bbb -> aaa"bbb
- bool quote_unescape(LEX_CSTRING *dst, const LEX_CSTRING *src, char quote)
- {
- const char *tmp= src->str;
- const char *tmpend= src->str + src->length;
- char *to;
- if (!(dst->str= to= (char *) alloc(src->length + 1)))
- {
- dst->length= 0; // Safety
- return true;
- }
- for ( ; tmp < tmpend; )
- {
- if ((*to++= *tmp++) == quote)
- tmp++; // Skip double quotes
- }
- *to= 0; // End null for safety
- dst->length= to - dst->str;
- return false;
- }
-
- LEX_CSTRING *make_clex_string(const char* str, size_t length)
- {
- LEX_CSTRING *lex_str;
- char *tmp;
- if (unlikely(!(lex_str= (LEX_CSTRING *)alloc_root(mem_root,
- sizeof(LEX_CSTRING) +
- length+1))))
- return 0;
- tmp= (char*) (lex_str+1);
- lex_str->str= tmp;
- memcpy(tmp, str, length);
- tmp[length]= 0;
- lex_str->length= length;
- return lex_str;
- }
- LEX_CSTRING *make_clex_string(const LEX_CSTRING from)
- {
- return make_clex_string(from.str, from.length);
- }
-
- // Allocate LEX_STRING for character set conversion
- bool alloc_lex_string(LEX_STRING *dst, size_t length)
- {
- if (likely((dst->str= (char*) alloc(length))))
- return false;
- dst->length= 0; // Safety
- return true; // EOM
+ return Query_arena::strmake_lex_cstring_trim_whitespace(from, charset());
}
bool convert_string(LEX_STRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length,
- CHARSET_INFO *from_cs);
+ CHARSET_INFO *from_cs) const;
bool reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *to_cs,
- const char *from, size_t from_length);
+ const char *from, size_t from_length)
+ const;
bool convert_string(LEX_CSTRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length,
- CHARSET_INFO *from_cs)
+ CHARSET_INFO *from_cs) const
{
LEX_STRING tmp;
bool rc= convert_string(&tmp, to_cs, from, from_length, from_cs);
@@ -4343,7 +4448,7 @@ public:
}
bool convert_string(LEX_CSTRING *to, CHARSET_INFO *tocs,
const LEX_CSTRING *from, CHARSET_INFO *fromcs,
- bool simple_copy_is_possible)
+ bool simple_copy_is_possible) const
{
if (!simple_copy_is_possible)
return unlikely(convert_string(to, tocs, from->str, from->length, fromcs));
@@ -4359,7 +4464,7 @@ public:
*/
bool convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length,
- String_copier *status);
+ String_copier *status) const;
/*
Same as above, but additionally sends ER_INVALID_CHARACTER_STRING
@@ -4367,7 +4472,7 @@ public:
*/
bool convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs,
- const char *src, size_t src_length);
+ const char *src, size_t src_length) const;
/*
If either "dstcs" or "srccs" is &my_charset_bin,
then performs native copying using copy_fix().
@@ -4375,16 +4480,18 @@ public:
*/
bool copy_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length,
- String_copier *status);
+ String_copier *status) const;
/*
Same as above, but additionally sends ER_INVALID_CHARACTER_STRING
in case of bad byte sequences or Unicode conversion problems.
*/
bool copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
- CHARSET_INFO *srccs, const char *src, size_t src_length);
+ CHARSET_INFO *srccs, const char *src, size_t src_length)
+ const;
- bool convert_string(String *s, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs);
+ bool convert_string(String *s, CHARSET_INFO *from_cs,
+ CHARSET_INFO *to_cs);
/*
Check if the string is wellformed, raise an error if not wellformed.
@@ -4395,7 +4502,8 @@ public:
size_t length,
CHARSET_INFO *cs) const;
- bool to_ident_sys_alloc(Lex_ident_sys_st *to, const Lex_ident_cli_st *from);
+ bool to_ident_sys_alloc(Lex_ident_sys_st *to,
+ const Lex_ident_cli_st *from) const;
/*
Create a string literal with optional client->connection conversion.
@@ -4405,7 +4513,8 @@ public:
*/
Item_basic_constant *make_string_literal(const char *str, size_t length,
my_repertoire_t repertoire);
- Item_basic_constant *make_string_literal(const Lex_string_with_metadata_st &str)
+ Item_basic_constant *
+ make_string_literal(const Lex_string_with_metadata_st &str)
{
my_repertoire_t repertoire= str.repertoire(variables.character_set_client);
return make_string_literal(str.str, str.length, repertoire);
@@ -4691,7 +4800,7 @@ public:
void reset_sub_statement_state(Sub_statement_state *backup, uint new_state);
void restore_sub_statement_state(Sub_statement_state *backup);
void store_slow_query_state(Sub_statement_state *backup);
- void reset_slow_query_state();
+ void reset_slow_query_state(Sub_statement_state *backup);
void add_slow_query_state(Sub_statement_state *backup);
void set_n_backup_active_arena(Query_arena *set, Query_arena *backup);
void restore_active_arena(Query_arena *set, Query_arena *backup);
@@ -5461,6 +5570,8 @@ public:
bool is_binlog_dump_thread();
#endif
+ bool check_slave_ignored_db_with_error(const Lex_ident_db &db) const;
+
inline ulong wsrep_binlog_format(ulong binlog_format) const
{
#ifdef WITH_WSREP
@@ -5783,6 +5894,15 @@ public:
return false;
return !is_set_timestamp_forbidden(this);
}
+ /*
+ Return true if we are in stored procedure, not in a function or
+ trigger.
+ */
+ bool in_stored_procedure()
+ {
+ return (lex->sphead != 0 &&
+ !(in_sub_stmt & (SUB_STMT_FUNCTION | SUB_STMT_TRIGGER)));
+ }
};
@@ -6139,6 +6259,8 @@ public:
};
+class sp_instr_cpush;
+
/* A mediator between stored procedures and server side cursors */
class sp_lex_keeper;
class sp_cursor: public sp_cursor_statistics
@@ -6175,19 +6297,17 @@ private:
public:
sp_cursor()
:result(NULL, false),
- m_lex_keeper(NULL),
server_side_cursor(NULL)
{ }
- sp_cursor(THD *thd_arg, sp_lex_keeper *lex_keeper, bool view_structure_only)
+ sp_cursor(THD *thd_arg, bool view_structure_only)
:result(thd_arg, view_structure_only),
- m_lex_keeper(lex_keeper),
server_side_cursor(NULL)
{}
virtual ~sp_cursor()
{ destroy(); }
- sp_lex_keeper *get_lex_keeper() { return m_lex_keeper; }
+ virtual sp_lex_keeper *get_lex_keeper() { return nullptr; }
int open(THD *thd);
@@ -6200,17 +6320,16 @@ public:
bool export_structure(THD *thd, Row_definition_list *list);
- void reset(THD *thd_arg, sp_lex_keeper *lex_keeper)
+ void reset(THD *thd_arg)
{
sp_cursor_statistics::reset();
result.reset(thd_arg);
- m_lex_keeper= lex_keeper;
server_side_cursor= NULL;
}
+ virtual sp_instr_cpush *get_push_instr() { return nullptr; }
private:
Select_fetch_into_spvars result;
- sp_lex_keeper *m_lex_keeper;
Server_side_cursor *server_side_cursor;
void destroy();
};
@@ -6436,6 +6555,7 @@ public:
Item **items_to_copy; /* Fields in tmp table */
TMP_ENGINE_COLUMNDEF *recinfo, *start_recinfo;
KEY *keyinfo;
+ ulong *rec_per_key;
ha_rows end_write_records;
/**
Number of normal fields in the query, including those referred to
@@ -7011,13 +7131,13 @@ public:
/*
Cost to materialize - execute the sub-join and write rows into temp.table
*/
- Cost_estimate materialization_cost;
+ double materialization_cost;
/* Cost to make one lookup in the temptable */
- Cost_estimate lookup_cost;
+ double lookup_cost;
/* Cost of scanning the materialized table */
- Cost_estimate scan_cost;
+ double scan_cost;
/* --- Execution structures ---------- */
@@ -7162,6 +7282,16 @@ public:
}
bool resolve_table_rowtype_ref(THD *thd, Row_definition_list &defs);
bool append_to(THD *thd, String *to) const;
+ /*
+ Convert Table_ident::m_db to a valid internal database name:
+ - validated with Lex_ident_fs::check_db_name()
+ - optionally lower-cased when lower_case_table_names==1
+
+ @param arena - the arena to allocate the lower-cased copy on, when needed.
+ @return {NULL,0} in case of EOM or invalid database name,
+ or a good identifier otherwise.
+ */
+ Lex_ident_db to_ident_db_internal_with_error(Query_arena *arena) const;
};
@@ -7185,7 +7315,7 @@ public:
:Table_ident(thd, db, table, false),
m_column(*column)
{ }
- bool resolve_type_ref(THD *thd, Column_definition *def);
+ bool resolve_type_ref(THD *thd, Column_definition *def) const;
bool append_to(THD *thd, String *to) const;
};
@@ -7294,6 +7424,7 @@ public:
enum_duplicates handle_duplicates, bool ignore);
~multi_update();
bool init(THD *thd);
+ bool init_for_single_table(THD *thd);
int prepare(List<Item> &list, SELECT_LEX_UNIT *u);
int send_data(List<Item> &items);
bool initialize_tables (JOIN *join);
@@ -7302,6 +7433,8 @@ public:
bool send_eof();
inline ha_rows num_found() const { return found; }
inline ha_rows num_updated() const { return updated; }
+ inline void set_found (ha_rows n) { found= n; }
+ inline void set_updated (ha_rows n) { updated= n; }
virtual void abort_result_set();
void update_used_tables();
void prepare_to_read_rows();
@@ -7604,11 +7737,38 @@ inline void handler::increment_statistics(ulong SSV::*offset) const
table->in_use->check_limit_rows_examined();
}
+inline void handler::fast_increment_statistics(ulong SSV::*offset) const
+{
+ status_var_increment(table->in_use->status_var.*offset);
+}
+
inline void handler::decrement_statistics(ulong SSV::*offset) const
{
status_var_decrement(table->in_use->status_var.*offset);
}
+/* Update references in the handler to the table */
+
+inline void handler::set_table(TABLE* table_arg)
+{
+ table= table_arg;
+ costs= &table_arg->s->optimizer_costs;
+}
+
+inline bool handler::pk_is_clustering_key(uint index) const
+{
+ /*
+ We have to check for MAX_INDEX as table->s->primary_key can be
+ MAX_KEY in the case where there is no primary key.
+ */
+ return index != MAX_KEY && is_clustering_key(index);
+}
+
+inline bool handler::is_clustering_key(uint index) const
+{
+ DBUG_ASSERT(index != MAX_KEY);
+ return table->is_clustering_key(index);
+}
inline int handler::ha_ft_read(uchar *buf)
{
@@ -7679,6 +7839,22 @@ inline bool handler::has_long_unique()
return table->s->long_unique_table;
}
+/**
+ Return whether the handler is root.
+ @return false if table is maintained by different handlerton, true otherwise.
+ @note The implementation supposes that the same handler can't be found as both
+ root and non-root.
+
+ There are two known cases when it's non-root:
+ 1. under partition's ha_write_row() (also true for copy_partitions())
+ 2. under ha_mroonga::wrapper_write_row();
+ same applies for ha_delete_row/ha_update_row.
+*/
+inline bool handler::is_root_handler() const
+{
+ return ht == table->file->ht;
+}
+
extern pthread_attr_t *get_connection_attrib(void);
/**
@@ -7732,6 +7908,8 @@ inline bool binlog_should_compress(size_t len)
len >= opt_bin_log_compress_min_len;
}
+void binlog_prepare_row_images(TABLE* table,
+ enum_binlog_row_image row_image);
/**
Save thd sql_mode on instantiation.
@@ -7977,8 +8155,13 @@ public:
!cs->strnncoll(m_name.str, m_name.length,
other->m_name.str, other->m_name.length);
}
- void copy(MEM_ROOT *mem_root, const LEX_CSTRING &db,
- const LEX_CSTRING &name);
+ /*
+ Make copies of "db" and "name" on the memory root in internal format:
+ - Lower-case "db" if lower-case-table-names==1.
+ - Preserve "name" as is.
+ */
+ bool copy_sp_name_internal(MEM_ROOT *mem_root, const LEX_CSTRING &db,
+ const LEX_CSTRING &name);
// Export db and name as a qualified name string: 'db.name'
size_t make_qname(char *dst, size_t dstlen, bool casedn_name) const
@@ -7988,7 +8171,6 @@ public:
// Export db and name as a qualified name string, allocate on mem_root.
LEX_CSTRING make_qname(MEM_ROOT *mem_root, bool casedn_name) const
{
- DBUG_SLOW_ASSERT(ok_for_lower_case_names(m_db.str));
return Identifier_chain2(m_db, m_name).make_qname(mem_root, casedn_name);
}
@@ -8249,5 +8431,23 @@ public:
}
};
+
+/**
+ Make a new string allocated on THD's mem-root.
+
+ @param thd thread handler.
+ @param start_ptr start of the new string.
+ @param end_ptr end of the new string.
+
+ @return LEX_CSTRING object, containing a pointer to a newly
+ constructed/allocated string, and its length. The data member
+ LEX_CSTRING::str has the value nullptr in case of out-of-memory error.
+*/
+
+LEX_CSTRING make_string(THD *thd, const char *start_ptr,
+ const char *end_ptr);
+
+#include "deprecation.h"
+
#endif /* MYSQL_SERVER */
#endif /* SQL_CLASS_INCLUDED */
diff --git a/sql/sql_cmd.h b/sql/sql_cmd.h
index 2623b370..bedd7e11 100644
--- a/sql/sql_cmd.h
+++ b/sql/sql_cmd.h
@@ -118,6 +118,7 @@ enum enum_sql_command {
SQLCOM_END
};
+struct TABLE_LIST;
class Storage_engine_name
{
@@ -132,11 +133,6 @@ public:
Storage_engine_name(const LEX_CSTRING &name)
:m_storage_engine_name(name)
{ }
- Storage_engine_name(const LEX_STRING &name)
- {
- m_storage_engine_name.str= name.str;
- m_storage_engine_name.length= name.length;
- }
bool resolve_storage_engine_with_error(THD *thd,
handlerton **ha,
bool tmp_table);
@@ -144,6 +140,8 @@ public:
};
+class Prepared_statement;
+
/**
@class Sql_cmd - Representation of an SQL command.
@@ -180,10 +178,28 @@ public:
virtual enum_sql_command sql_command_code() const = 0;
/**
- Execute this SQL statement.
- @param thd the current thread.
- @retval false on success.
- @retval true on error
+ @brief Check whether the statement has been prepared
+ @returns true if this statement is prepared, false otherwise
+ */
+ bool is_prepared() const { return m_prepared; }
+
+ /**
+ @brief Prepare this SQL statement
+ @param thd global context the processed statement
+ @returns false if success, true if error
+ */
+ virtual bool prepare(THD *thd)
+ {
+ /* Default behavior for a statement is to have no preparation code. */
+ DBUG_ASSERT(!is_prepared());
+ set_prepared();
+ return false;
+ }
+
+ /**
+ @brief Execute this SQL statement
+ @param thd global context the processed statement
+ @returns false if success, true if error
*/
virtual bool execute(THD *thd) = 0;
@@ -192,8 +208,40 @@ public:
return NULL;
}
+ /**
+ @brief Set the owning prepared statement
+ */
+ void set_owner(Prepared_statement *stmt) { m_owner = stmt; }
+
+ /**
+ @breaf Get the owning prepared statement
+ */
+ Prepared_statement *get_owner() { return m_owner; }
+
+ /**
+ @brief Check whether this command is a DML statement
+ @return true if SQL command is a DML statement, false otherwise
+ */
+ virtual bool is_dml() const { return false; }
+
+ /**
+ @brief Unprepare prepared statement for the command
+ @param thd global context of the processed statement
+
+ @notes
+ Temporary function used to "unprepare" a prepared statement after
+ preparation, so that a subsequent execute statement will reprepare it.
+ This is done because UNIT::cleanup() will un-resolve all resolved QBs.
+ */
+ virtual void unprepare(THD *thd)
+ {
+ DBUG_ASSERT(is_prepared());
+ m_prepared = false;
+ }
+
protected:
- Sql_cmd() = default;
+ Sql_cmd() : m_prepared(false), m_owner(nullptr)
+ {}
virtual ~Sql_cmd()
{
@@ -203,10 +251,152 @@ protected:
simply destroyed instead.
Do not rely on the destructor for any cleanup.
*/
- DBUG_ASSERT(FALSE);
+ DBUG_ASSERT(false);
}
+
+ /**
+ @brief Set this statement as prepared
+ */
+ void set_prepared() { m_prepared = true; }
+
+ private:
+ /* True when statement has been prepared */
+ bool m_prepared;
+ /* Owning prepared statement, nullptr if not prepared */
+ Prepared_statement *m_owner;
+
};
+struct LEX;
+class select_result;
+class Prelocking_strategy;
+class DML_prelocking_strategy;
+class Protocol;
+
+/**
+ @class Sql_cmd_dml - derivative abstract class used for DML statements
+
+ This class is a class derived from Sql_cmd used when processing such
+ data manipulation commands as SELECT, INSERT, UPDATE, DELETE and others
+ that operate over some tables.
+ After the parser phase all these commands are supposed to be processed
+ by the same schema:
+ - precheck of the access rights is performed for the used tables
+ - the used tables are opened
+ - context analysis phase is performed for the statement
+ - the used tables are locked
+ - the statement is optimized and executed
+ - clean-up is performed for the statement.
+ This schema is reflected in the function Sql_cmd_dml::execute() that
+ uses Sql_cmd_dml::prepare is the statement has not been prepared yet.
+ Precheck of the access right, context analysis are specific for statements
+ of a certain type. That's why the methods implementing this operations are
+ declared as abstract in this class.
+
+ @note
+ Currently this class is used only for UPDATE and DELETE commands.
+*/
+class Sql_cmd_dml : public Sql_cmd
+{
+public:
+
+ /**
+ @brief Check whether the statement changes the contents of used tables
+ @return true if this is data change statement, false otherwise
+ */
+ virtual bool is_data_change_stmt() const { return true; }
+
+ /**
+ @brief Perform context analysis of the statement
+ @param thd global context the processed statement
+ @returns false on success, true on error
+ */
+ virtual bool prepare(THD *thd);
+
+ /**
+ Execute the processed statement once
+ @param thd global context the processed statement
+ @returns false on success, true on error
+ */
+ virtual bool execute(THD *thd);
+
+ virtual bool is_dml() const { return true; }
+
+ select_result *get_result() { return result; }
+
+protected:
+ Sql_cmd_dml()
+ : Sql_cmd(), lex(nullptr), result(nullptr),
+ m_empty_query(false)
+ {}
+
+ /**
+ @brief Check whether query is guaranteed to return no data
+ @return true if query is guaranteed to return no data, false otherwise
+
+ @todo Also check this for the following cases:
+ - Empty source for multi-table UPDATE and DELETE.
+ - Check empty query expression for INSERT
+ */
+ bool is_empty_query() const
+ {
+ DBUG_ASSERT(is_prepared());
+ return m_empty_query;
+ }
+
+ /**
+ @brief Set statement as returning no data
+ */
+ void set_empty_query() { m_empty_query = true; }
+
+ /**
+ @brief Perform precheck of table privileges for the specific command
+ @param thd global context the processed statement
+ @returns false if success, true if false
+
+ @details
+ Check that user has some relevant privileges for all tables involved in
+ the statement, e.g. SELECT privileges for tables selected from, INSERT
+ privileges for tables inserted into, etc. This function will also populate
+ TABLE_LIST::grant with all privileges the user has for each table, which
+ is later used during checking of column privileges.
+ Note that at preparation time, views are not expanded yet. Privilege
+ checking is thus rudimentary and must be complemented with later calls to
+ SELECT_LEX::check_view_privileges().
+ The reason to call this function at such an early stage is to be able to
+ quickly reject statements for which the user obviously has insufficient
+ privileges.
+ */
+ virtual bool precheck(THD *thd) = 0;
+
+ /**
+ @brief Perform the command-specific actions of the context analysis
+ @param thd global context the processed statement
+ @returns false if success, true if error
+
+ @note
+ This function is called from prepare()
+ */
+ virtual bool prepare_inner(THD *thd) = 0;
+
+ /**
+ @brief Perform the command-specific actions of optimization and excution
+ @param thd global context the processed statement
+ @returns false on success, true on error
+ */
+ virtual bool execute_inner(THD *thd);
+
+ virtual DML_prelocking_strategy *get_dml_prelocking_strategy() = 0;
+
+ uint table_count;
+
+ protected:
+ LEX *lex; /**< Pointer to LEX for this statement */
+ select_result *result; /**< Pointer to object for handling of the result */
+ bool m_empty_query; /**< True if query will produce no rows */
+};
+
+
class Sql_cmd_show_slave_status: public Sql_cmd
{
protected:
diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc
index 6149cc49..f06a58a4 100644
--- a/sql/sql_connect.cc
+++ b/sql/sql_connect.cc
@@ -779,6 +779,10 @@ void update_global_user_stats(THD *thd, bool create_user, time_t now)
bool thd_init_client_charset(THD *thd, uint cs_number)
{
CHARSET_INFO *cs;
+
+ // Test a non-default collation ID. See also comments in this function below.
+ DBUG_EXECUTE_IF("thd_init_client_charset_utf8mb3_bin", cs_number= 83;);
+
/*
Use server character set and collation if
- opt_character_set_client_handshake is not set
@@ -801,6 +805,25 @@ bool thd_init_client_charset(THD *thd, uint cs_number)
cs->cs_name.str);
return true;
}
+ /*
+ Some connectors (e.g. JDBC, Node.js) can send non-default collation IDs
+ in the handshake packet, to set @@collation_connection right during
+ handshake. Although this is a non-documenting feature,
+ for better backward compatibility with such connectors let's:
+ a. resolve only default collations according to @@character_set_collations
+ b. preserve non-default collations as is
+
+ Perhaps eventually we should change (b) also to resolve non-default
+ collations accoding to @@character_set_collations. Clients that used to
+ send a non-default collation ID in the handshake packet will have to set
+ @@character_set_collations instead.
+ */
+ if (cs->state & MY_CS_PRIMARY)
+ {
+ Sql_used used;
+ cs= global_system_variables.character_set_collations.
+ get_collation_for_charset(&used, cs);
+ }
thd->org_charset= cs;
thd->update_charset(cs,cs,cs);
}
@@ -1077,7 +1100,6 @@ static int check_connection(THD *thd)
statistic_increment(aborted_connects_preauth, &LOCK_status);
return 1; /* The error is set by alloc(). */
}
-
auth_rc= acl_authenticate(thd, 0);
if (auth_rc == 0 && connect_errors != 0)
{
@@ -1132,7 +1154,7 @@ void setup_connection_thread_globals(THD *thd)
1 error
*/
-bool login_connection(THD *thd)
+static bool login_connection(THD *thd)
{
NET *net= &thd->net;
int error= 0;
diff --git a/sql/sql_connect.h b/sql/sql_connect.h
index 8be6c1ae..60841217 100644
--- a/sql/sql_connect.h
+++ b/sql/sql_connect.h
@@ -102,7 +102,6 @@ int thd_set_peer_addr(THD *thd, sockaddr_storage *addr,
bool check_proxy_networks,
uint *host_errors);
-bool login_connection(THD *thd);
void prepare_new_connection_state(THD* thd);
void end_connection(THD *thd);
void update_global_user_stats(THD* thd, bool create_user, time_t now);
diff --git a/sql/sql_const.h b/sql/sql_const.h
index 490b870d..1e5fef4a 100644
--- a/sql/sql_const.h
+++ b/sql/sql_const.h
@@ -119,8 +119,13 @@
#define CREATE_MODE 0 /* Default mode on new files */
#define NAMES_SEP_CHAR 255 /* Char to sep. names */
-#define READ_RECORD_BUFFER (uint) (IO_SIZE*8) /* Pointer_buffer_size */
-#define DISK_BUFFER_SIZE (uint) (IO_SIZE*16) /* Size of diskbuffer */
+/*
+ This is used when reading large blocks, sequential read.
+ We assume that reading this much will be roughly the same cost as 1
+ seek / fetching one row from the storage engine.
+ Cost of one read of DISK_CHUNK_SIZE is DISK_SEEK_BASE_COST (ms).
+*/
+#define DISK_CHUNK_SIZE (uint) (65536) /* Size of diskbuffer for tmpfiles */
#define FRM_VER_TRUE_VARCHAR (FRM_VER+4) /* 10 */
#define FRM_VER_EXPRESSSIONS (FRM_VER+5) /* 11 */
@@ -199,63 +204,19 @@
#define MIN_ROWS_TO_USE_TABLE_CACHE 100
#define MIN_ROWS_TO_USE_BULK_INSERT 100
-/**
- The following is used to decide if MySQL should use table scanning
- instead of reading with keys. The number says how many evaluation of the
- WHERE clause is comparable to reading one extra row from a table.
-*/
-#define TIME_FOR_COMPARE 5.0 // 5 WHERE compares == one read
-#define TIME_FOR_COMPARE_IDX 20.0
-
-#define IDX_BLOCK_COPY_COST ((double) 1 / TIME_FOR_COMPARE)
-#define IDX_LOOKUP_COST ((double) 1 / 8)
-#define MULTI_RANGE_READ_SETUP_COST (IDX_BLOCK_COPY_COST/10)
-
-/**
- Number of comparisons of table rowids equivalent to reading one row from a
- table.
-*/
-#define TIME_FOR_COMPARE_ROWID (TIME_FOR_COMPARE*100)
-
-/* cost1 is better that cost2 only if cost1 + COST_EPS < cost2 */
-#define COST_EPS 0.001
-
/*
- For sequential disk seeks the cost formula is:
- DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST * #blocks_to_skip
-
- The cost of average seek
- DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST*BLOCKS_IN_AVG_SEEK =1.0.
+ The lower bound of accepted rows when using filter.
+ This is used to ensure that filters are not too agressive.
*/
-#define DISK_SEEK_BASE_COST ((double)0.9)
-
-#define BLOCKS_IN_AVG_SEEK 128
-
-#define DISK_SEEK_PROP_COST ((double)0.1/BLOCKS_IN_AVG_SEEK)
-
+#define MIN_ROWS_AFTER_FILTERING 1.0
/**
- Number of rows in a reference table when refereed through a not unique key.
+ Number of rows in a reference table when refered through a not unique key.
This value is only used when we don't know anything about the key
distribution.
*/
#define MATCHING_ROWS_IN_OTHER_TABLE 10
-/*
- Subquery materialization-related constants
-*/
-#define HEAP_TEMPTABLE_LOOKUP_COST 0.05
-#define DISK_TEMPTABLE_LOOKUP_COST 1.0
-#define SORT_INDEX_CMP_COST 0.02
-
-
-#define COST_MAX (DBL_MAX * (1.0 - DBL_EPSILON))
-
-#define COST_ADD(c,d) (COST_MAX - (d) > (c) ? (c) + (d) : COST_MAX)
-
-#define COST_MULT(c,f) (COST_MAX / (f) > (c) ? (c) * (f) : COST_MAX)
-
-
#define MY_CHARSET_BIN_MB_MAXLEN 1
/** Don't pack string keys shorter than this (if PACK_KEYS=1 isn't used). */
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index 2d582eb8..08441d9f 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -55,7 +55,8 @@ const char *del_exts[]= {".BAK", ".opt", NullS};
static TYPELIB deletable_extensions=
{array_elements(del_exts)-1,"del_exts", del_exts, NULL};
-static bool find_db_tables_and_rm_known_files(THD *, MY_DIR *, const char *,
+static bool find_db_tables_and_rm_known_files(THD *, MY_DIR *,
+ const Lex_ident_db_normalized &db,
const char *, TABLE_LIST **);
long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path);
@@ -64,7 +65,7 @@ static void mysql_change_db_impl(THD *thd,
LEX_CSTRING *new_db_name,
privilege_t new_db_access,
CHARSET_INFO *new_db_charset);
-static bool mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db,
+static bool mysql_rm_db_internal(THD *thd, const Lex_ident_db &db,
bool if_exists, bool silent);
@@ -727,7 +728,7 @@ CHARSET_INFO *get_default_db_collation(THD *thd, const char *db_name)
*/
static int
-mysql_create_db_internal(THD *thd, const LEX_CSTRING *db,
+mysql_create_db_internal(THD *thd, const Lex_ident_db &db,
const DDL_options_st &options,
Schema_specification_st *create_info,
bool silent)
@@ -738,20 +739,20 @@ mysql_create_db_internal(THD *thd, const LEX_CSTRING *db,
DBUG_ENTER("mysql_create_db");
/* do not create 'information_schema' db */
- if (is_infoschema_db(db))
+ if (is_infoschema_db(&db))
{
- my_error(ER_DB_CREATE_EXISTS, MYF(0), db->str);
+ my_error(ER_DB_CREATE_EXISTS, MYF(0), db.str);
DBUG_RETURN(-1);
}
- char db_tmp[SAFE_NAME_LEN+1];
- const char *dbnorm= normalize_db_name(db->str, db_tmp, sizeof(db_tmp));
+ const DBNameBuffer dbnorm_buffer(db, lower_case_table_names);
+ Lex_ident_db_normalized dbnorm(dbnorm_buffer.to_lex_cstring());
if (lock_schema_name(thd, dbnorm))
DBUG_RETURN(-1);
/* Check directory */
- path_len= build_table_filename(path, sizeof(path) - 1, db->str, "", "", 0);
+ path_len= build_table_filename(path, sizeof(path) - 1, db.str, "", "", 0);
path[path_len-1]= 0; // Remove last '/' from path
long affected_rows= 1;
@@ -779,19 +780,19 @@ mysql_create_db_internal(THD *thd, const LEX_CSTRING *db,
{
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
ER_DB_CREATE_EXISTS, ER_THD(thd, ER_DB_CREATE_EXISTS),
- db->str);
+ db.str);
affected_rows= 0;
goto not_silent;
}
else
{
- my_error(ER_DB_CREATE_EXISTS, MYF(0), db->str);
+ my_error(ER_DB_CREATE_EXISTS, MYF(0), db.str);
DBUG_RETURN(-1);
}
if (my_mkdir(path, 0777, MYF(0)) < 0)
{
- my_error(ER_CANT_CREATE_DB, MYF(0), db->str, my_errno);
+ my_error(ER_CANT_CREATE_DB, MYF(0), db.str, my_errno);
DBUG_RETURN(-1);
}
@@ -819,7 +820,7 @@ mysql_create_db_internal(THD *thd, const LEX_CSTRING *db,
bzero(&ddl_log, sizeof(ddl_log));
ddl_log.query= { C_STRING_WITH_LEN("CREATE") };
ddl_log.org_storage_engine_name= { C_STRING_WITH_LEN("DATABASE") };
- ddl_log.org_database= *db;
+ ddl_log.org_database= db;
backup_log_ddl(&ddl_log);
not_silent:
@@ -855,8 +856,8 @@ not_silent:
USE sisyfos; # Will give error on slave since
# database does not exist.
*/
- qinfo.db = db->str;
- qinfo.db_len = (uint32)db->length;
+ qinfo.db = db.str;
+ qinfo.db_len = (uint32)db.length;
/*
These DDL methods and logging are protected with the exclusive
@@ -875,7 +876,7 @@ not_silent:
/* db-name is already validated when we come here */
static bool
-mysql_alter_db_internal(THD *thd, const LEX_CSTRING *db,
+mysql_alter_db_internal(THD *thd, const Lex_ident_db &db,
Schema_specification_st *create_info)
{
char path[FN_REFLEN+16];
@@ -883,9 +884,9 @@ mysql_alter_db_internal(THD *thd, const LEX_CSTRING *db,
int error= 0;
DBUG_ENTER("mysql_alter_db");
- char dbnorm_buffer[SAFE_NAME_LEN + 1];
- const char *dbnorm= normalize_db_name(db->str, dbnorm_buffer,
- sizeof(dbnorm_buffer));
+ const DBNameBuffer dbnorm_buffer(db, lower_case_table_names);
+ Lex_ident_db_normalized dbnorm(dbnorm_buffer.to_lex_cstring());
+
if (lock_schema_name(thd, dbnorm))
DBUG_RETURN(TRUE);
@@ -894,13 +895,13 @@ mysql_alter_db_internal(THD *thd, const LEX_CSTRING *db,
We pass MY_DB_OPT_FILE as "extension" to avoid
"table name to file name" encoding.
*/
- build_table_filename(path, sizeof(path) - 1, db->str, "", MY_DB_OPT_FILE, 0);
+ build_table_filename(path, sizeof(path) - 1, db.str, "", MY_DB_OPT_FILE, 0);
if (unlikely((error=write_db_opt(thd, path, create_info))))
goto exit;
/* Change options if current database is being altered. */
- if (thd->db.str && !cmp(&thd->db, db))
+ if (thd->db.str && !cmp(&thd->db, &db))
{
thd->db_charset= create_info->default_table_charset ?
create_info->default_table_charset :
@@ -913,7 +914,7 @@ mysql_alter_db_internal(THD *thd, const LEX_CSTRING *db,
bzero(&ddl_log, sizeof(ddl_log));
ddl_log.query= { C_STRING_WITH_LEN("ALTER") };
ddl_log.org_storage_engine_name= { C_STRING_WITH_LEN("DATABASE") };
- ddl_log.org_database= *db;
+ ddl_log.org_database= db;
backup_log_ddl(&ddl_log);
if (mysql_bin_log.is_open())
@@ -926,8 +927,8 @@ mysql_alter_db_internal(THD *thd, const LEX_CSTRING *db,
database" and not the threads current database, which is the
default.
*/
- qinfo.db= db->str;
- qinfo.db_len= (uint)db->length;
+ qinfo.db= db.str;
+ qinfo.db_len= (uint) db.length;
/*
These DDL methods and logging are protected with the exclusive
@@ -943,7 +944,7 @@ exit:
}
-int mysql_create_db(THD *thd, const LEX_CSTRING *db, DDL_options_st options,
+int mysql_create_db(THD *thd, const Lex_ident_db &db, DDL_options_st options,
const Schema_specification_st *create_info)
{
DBUG_ASSERT(create_info->default_table_charset);
@@ -959,7 +960,7 @@ int mysql_create_db(THD *thd, const LEX_CSTRING *db, DDL_options_st options,
}
-bool mysql_alter_db(THD *thd, const LEX_CSTRING *db,
+bool mysql_alter_db(THD *thd, const Lex_ident_db &db,
const Schema_specification_st *create_info)
{
DBUG_ASSERT(create_info->default_table_charset);
@@ -1007,14 +1008,14 @@ void drop_database_objects(THD *thd, const LEX_CSTRING *path,
debug_crash_here("ddl_log_drop_before_drop_db_routines");
- query_cache_invalidate1(thd, db->str);
+ query_cache_invalidate1(thd, *db);
if (!rm_mysql_schema)
{
tmp_disable_binlog(thd);
- (void) sp_drop_db_routines(thd, db->str); /* @todo Do not ignore errors */
+ (void) sp_drop_db_routines(thd, *db); /* @todo Do not ignore errors */
#ifdef HAVE_EVENT_SCHEDULER
- Events::drop_schema_events(thd, db->str);
+ Events::drop_schema_events(thd, *db);
#endif
reenable_binlog(thd);
}
@@ -1038,7 +1039,7 @@ void drop_database_objects(THD *thd, const LEX_CSTRING *path,
*/
static bool
-mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists,
+mysql_rm_db_internal(THD *thd, const Lex_ident_db &db, bool if_exists,
bool silent)
{
ulong deleted_tables= 0;
@@ -1050,33 +1051,30 @@ mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists,
TABLE_LIST *table;
DDL_LOG_STATE ddl_log_state;
Drop_table_error_handler err_handler;
- LEX_CSTRING rm_db;
- char db_tmp[SAFE_NAME_LEN+1];
- const char *dbnorm;
DBUG_ENTER("mysql_rm_db");
- dbnorm= normalize_db_name(db->str, db_tmp, sizeof(db_tmp));
- lex_string_set(&rm_db, dbnorm);
+ const DBNameBuffer dbnorm_buffer(db, lower_case_table_names);
+ Lex_ident_db_normalized dbnorm(dbnorm_buffer.to_lex_cstring());
bzero(&ddl_log_state, sizeof(ddl_log_state));
if (lock_schema_name(thd, dbnorm))
DBUG_RETURN(true);
- path_length= build_table_filename(path, sizeof(path) - 1, db->str, "", "", 0);
+ path_length= build_table_filename(path, sizeof(path) - 1, db.str, "", "", 0);
/* See if the directory exists */
if (!(dirp= my_dir(path,MYF(MY_DONT_SORT))))
{
if (!if_exists)
{
- my_error(ER_DB_DROP_EXISTS, MYF(0), db->str);
+ my_error(ER_DB_DROP_EXISTS, MYF(0), db.str);
DBUG_RETURN(true);
}
else
{
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
ER_DB_DROP_EXISTS, ER_THD(thd, ER_DB_DROP_EXISTS),
- db->str);
+ db.str);
error= false;
goto update_binlog;
}
@@ -1090,7 +1088,7 @@ mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists,
This check is only needed if we are dropping the "mysql" database.
*/
if ((rm_mysql_schema=
- (my_strcasecmp(system_charset_info, MYSQL_SCHEMA_NAME.str, db->str) == 0)))
+ (my_strcasecmp(system_charset_info, MYSQL_SCHEMA_NAME.str, db.str) == 0)))
{
for (table= tables; table; table= table->next_local)
if (check_if_log_table(table, TRUE, "DROP"))
@@ -1126,15 +1124,15 @@ mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists,
thd->push_internal_handler(&err_handler);
if (!thd->killed &&
!(tables &&
- mysql_rm_table_no_locks(thd, tables, &rm_db, &ddl_log_state, true, false,
+ mysql_rm_table_no_locks(thd, tables, &dbnorm, &ddl_log_state, true, false,
true, false, true, false)))
{
debug_crash_here("ddl_log_drop_after_drop_tables");
LEX_CSTRING cpath{ path, path_length};
- ddl_log_drop_db(&ddl_log_state, &rm_db, &cpath);
+ ddl_log_drop_db(&ddl_log_state, &dbnorm, &cpath);
- drop_database_objects(thd, &cpath, &rm_db, rm_mysql_schema);
+ drop_database_objects(thd, &cpath, &dbnorm, rm_mysql_schema);
/*
Now remove the db.opt file.
@@ -1175,7 +1173,7 @@ update_binlog:
bzero(&ddl_log, sizeof(ddl_log));
ddl_log.query= { C_STRING_WITH_LEN("DROP") };
ddl_log.org_storage_engine_name= { C_STRING_WITH_LEN("DATABASE") };
- ddl_log.org_database= *db;
+ ddl_log.org_database= db;
backup_log_ddl(&ddl_log);
}
@@ -1199,8 +1197,8 @@ update_binlog:
database" and not the threads current database, which is the
default.
*/
- qinfo.db = db->str;
- qinfo.db_len = (uint32)db->length;
+ qinfo.db = db.str;
+ qinfo.db_len = (uint32) db.length;
/*
These DDL methods and logging are protected with the exclusive
@@ -1251,7 +1249,7 @@ update_binlog:
These DDL methods and logging are protected with the exclusive
metadata lock on the schema.
*/
- if (write_to_binlog(thd, query, (uint)(query_pos -1 - query), db->str, db->length))
+ if (write_to_binlog(thd, query, (uint)(query_pos -1 - query), db.str, db.length))
{
error= true;
goto exit;
@@ -1273,8 +1271,8 @@ update_binlog:
debug_crash_here("ddl_log_drop_before_binlog");
thd->binlog_xid= thd->query_id;
ddl_log_update_xid(&ddl_log_state, thd->binlog_xid);
- res= write_to_binlog(thd, query, (uint)(query_pos -1 - query), db->str,
- db->length);
+ res= write_to_binlog(thd, query, (uint)(query_pos -1 - query), db.str,
+ db.length);
thd->binlog_xid= 0;
debug_crash_here("ddl_log_drop_after_binlog");
if (res)
@@ -1293,7 +1291,7 @@ exit:
SELECT DATABASE() in the future). For this we free() thd->db and set
it to 0.
*/
- if (unlikely(thd->db.str && cmp_db_names(&thd->db, db) && !error))
+ if (unlikely(thd->db.str && cmp_db_names(&thd->db, &db) && !error))
{
mysql_change_db_impl(thd, NULL, NO_ACL, thd->variables.collation_server);
thd->session_tracker.current_schema.mark_as_changed(thd);
@@ -1304,7 +1302,7 @@ end:
}
-bool mysql_rm_db(THD *thd, const LEX_CSTRING *db, bool if_exists)
+bool mysql_rm_db(THD *thd, const Lex_ident_db &db, bool if_exists)
{
if (thd->slave_thread &&
slave_ddl_exec_mode_options == SLAVE_EXEC_MODE_IDEMPOTENT)
@@ -1314,12 +1312,11 @@ bool mysql_rm_db(THD *thd, const LEX_CSTRING *db, bool if_exists)
static bool find_db_tables_and_rm_known_files(THD *thd, MY_DIR *dirp,
- const char *dbname,
+ const Lex_ident_db_normalized &db,
const char *path,
TABLE_LIST **tables)
{
char filePath[FN_REFLEN];
- LEX_CSTRING db= { dbname, strlen(dbname) };
TABLE_LIST *tot_list=0, **tot_list_next_local, **tot_list_next_global;
DBUG_ENTER("find_db_tables_and_rm_known_files");
DBUG_PRINT("enter",("path: %s", path));
@@ -1700,6 +1697,7 @@ static void backup_current_db_name(THD *thd,
uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
bool force_switch)
{
+ DBNameBuffer new_db_buff;
LEX_CSTRING new_db_file_name;
Security_context *sctx= thd->security_ctx;
@@ -1742,19 +1740,10 @@ uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
goto done;
}
- /*
- Now we need to make a copy because check_db_name requires a
- non-constant argument. Actually, it takes database file name.
-
- TODO: fix check_db_name().
- */
-
- new_db_file_name.str= my_strndup(key_memory_THD_db, new_db_name->str,
- new_db_name->length, MYF(MY_WME));
- new_db_file_name.length= new_db_name->length;
-
- if (new_db_file_name.str == NULL)
- DBUG_RETURN(ER_OUT_OF_RESOURCES); /* the error is set */
+ new_db_file_name= lower_case_table_names == 1 ?
+ new_db_buff.copy_casedn(&my_charset_utf8mb3_general_ci,
+ *new_db_name).to_lex_cstring() :
+ *new_db_name;
/*
NOTE: if check_db_name() fails, we should throw an error in any case,
@@ -1766,11 +1755,8 @@ uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
The cast below ok here as new_db_file_name was just allocated
*/
- if (check_db_name((LEX_STRING*) &new_db_file_name))
+ if (Lex_ident_fs(new_db_file_name).check_db_name_with_error())
{
- my_error(ER_WRONG_DB_NAME, MYF(0), new_db_file_name.str);
- my_free(const_cast<char*>(new_db_file_name.str));
-
if (force_switch)
mysql_change_db_impl(thd, NULL, NO_ACL, thd->variables.collation_server);
@@ -1800,7 +1786,6 @@ uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
new_db_file_name.str);
general_log_print(thd, COM_INIT_DB, ER_THD(thd, ER_DBACCESS_DENIED_ERROR),
sctx->priv_user, sctx->priv_host, new_db_file_name.str);
- my_free(const_cast<char*>(new_db_file_name.str));
DBUG_RETURN(ER_DBACCESS_DENIED_ERROR);
}
#endif
@@ -1817,8 +1802,6 @@ uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
ER_BAD_DB_ERROR, ER_THD(thd, ER_BAD_DB_ERROR),
new_db_file_name.str);
- my_free(const_cast<char*>(new_db_file_name.str));
-
/* Change db to NULL. */
mysql_change_db_impl(thd, NULL, NO_ACL, thd->variables.collation_server);
@@ -1831,7 +1814,6 @@ uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
/* Report an error and free new_db_file_name. */
my_error(ER_BAD_DB_ERROR, MYF(0), new_db_file_name.str);
- my_free(const_cast<char*>(new_db_file_name.str));
/* The operation failed. */
@@ -1839,14 +1821,23 @@ uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
}
}
+ db_default_cl= get_default_db_collation(thd, new_db_file_name.str);
+
/*
+ new_db_file_name allocated memory on the stack.
+ mysql_change_db_impl() expects a my_alloc-ed memory.
NOTE: in mysql_change_db_impl() new_db_file_name is assigned to THD
attributes and will be freed in THD::~THD().
*/
-
- db_default_cl= get_default_db_collation(thd, new_db_file_name.str);
-
- mysql_change_db_impl(thd, &new_db_file_name, db_access, db_default_cl);
+ if (const char *tmp= my_strndup(key_memory_THD_db,
+ new_db_file_name.str,
+ new_db_file_name.length, MYF(MY_WME)))
+ {
+ LEX_CSTRING new_db_malloced({tmp, new_db_file_name.length});
+ mysql_change_db_impl(thd, &new_db_malloced, db_access, db_default_cl);
+ }
+ else
+ DBUG_RETURN(ER_OUT_OF_RESOURCES); /* the error is set */
done:
thd->session_tracker.current_schema.mark_as_changed(thd);
@@ -1907,7 +1898,7 @@ bool mysql_opt_change_db(THD *thd,
@return 0 on success, 1 on error
*/
-bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db)
+bool mysql_upgrade_db(THD *thd, const Lex_ident_db &old_db)
{
bool error= 0, change_to_newdb= 0;
char path[FN_REFLEN+16];
@@ -1916,11 +1907,11 @@ bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db)
MY_DIR *dirp;
TABLE_LIST *table_list;
SELECT_LEX *sl= thd->lex->current_select;
- LEX_CSTRING new_db;
+ Lex_ident_db new_db;
DBUG_ENTER("mysql_upgrade_db");
- if ((old_db->length <= MYSQL50_TABLE_NAME_PREFIX_LENGTH) ||
- (strncmp(old_db->str,
+ if ((old_db.length <= MYSQL50_TABLE_NAME_PREFIX_LENGTH) ||
+ (strncmp(old_db.str,
MYSQL50_TABLE_NAME_PREFIX,
MYSQL50_TABLE_NAME_PREFIX_LENGTH) != 0))
{
@@ -1931,12 +1922,11 @@ bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db)
}
/* `#mysql50#<name>` converted to encoded `<name>` */
- new_db.str= old_db->str + MYSQL50_TABLE_NAME_PREFIX_LENGTH;
- new_db.length= old_db->length - MYSQL50_TABLE_NAME_PREFIX_LENGTH;
+ new_db= Lex_ident_db(old_db.str + MYSQL50_TABLE_NAME_PREFIX_LENGTH,
+ old_db.length - MYSQL50_TABLE_NAME_PREFIX_LENGTH);
- char dbnorm_buffer_old[SAFE_NAME_LEN + 1];
- const char *old_dbnorm= normalize_db_name(old_db->str, dbnorm_buffer_old,
- sizeof(dbnorm_buffer_old));
+ const DBNameBuffer dbnorm_buffer_old(old_db, lower_case_table_names);
+ Lex_ident_db_normalized old_dbnorm(dbnorm_buffer_old.to_lex_cstring());
/* Lock the old name, the new name will be locked by mysql_create_db().*/
if (lock_schema_name(thd, old_dbnorm))
@@ -1946,25 +1936,25 @@ bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db)
Let's remember if we should do "USE newdb" afterwards.
thd->db will be cleared in mysql_rename_db()
*/
- if (thd->db.str && !cmp(&thd->db, old_db))
+ if (thd->db.str && !cmp(&thd->db, &old_db))
change_to_newdb= 1;
build_table_filename(path, sizeof(path)-1,
- old_db->str, "", MY_DB_OPT_FILE, 0);
+ old_db.str, "", MY_DB_OPT_FILE, 0);
if ((load_db_opt(thd, path, &create_info)))
create_info.default_table_charset= thd->variables.collation_server;
- length= build_table_filename(path, sizeof(path)-1, old_db->str, "", "", 0);
+ length= build_table_filename(path, sizeof(path)-1, old_db.str, "", "", 0);
if (length && path[length-1] == FN_LIBCHAR)
path[length-1]=0; // remove ending '\'
if (unlikely((error= my_access(path,F_OK))))
{
- my_error(ER_BAD_DB_ERROR, MYF(0), old_db->str);
+ my_error(ER_BAD_DB_ERROR, MYF(0), old_db.str);
goto exit;
}
/* Step1: Create the new database */
- if (unlikely((error= mysql_create_db_internal(thd, &new_db,
+ if (unlikely((error= mysql_create_db_internal(thd, new_db,
DDL_options(), &create_info,
1))))
goto exit;
@@ -1990,7 +1980,7 @@ bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db)
table_str.length= filename_to_tablename(file->name,
tname, sizeof(tname)-1);
table_str.str= (char*) thd->memdup(tname, table_str.length + 1);
- Table_ident *old_ident= new Table_ident(thd, old_db, &table_str, 0);
+ Table_ident *old_ident= new Table_ident(thd, &old_db, &table_str, 0);
Table_ident *new_ident= new Table_ident(thd, &new_db, &table_str, 0);
if (!old_ident || !new_ident ||
!sl->add_table_to_list(thd, old_ident, NULL,
@@ -2075,7 +2065,7 @@ bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db)
/* pass empty file name, and file->name as extension to avoid encoding */
build_table_filename(oldname, sizeof(oldname)-1,
- old_db->str, "", file->name, 0);
+ old_db.str, "", file->name, 0);
build_table_filename(newname, sizeof(newname)-1,
new_db.str, "", file->name, 0);
mysql_file_rename(key_file_misc, oldname, newname, MYF(MY_WME));
@@ -2152,14 +2142,3 @@ bool check_db_dir_existence(const char *db_name)
mysql_rwlock_unlock(&rmdir_lock);
return ret;
}
-
-
-const char *normalize_db_name(const char *db, char *buffer, size_t buffer_size)
-{
- DBUG_ASSERT(buffer_size > 1);
- if (!lower_case_table_names)
- return db;
- strmake(buffer, db, buffer_size - 1);
- my_casedn_str(system_charset_info, buffer);
- return buffer;
-}
diff --git a/sql/sql_db.h b/sql/sql_db.h
index 3c037d66..5b97e845 100644
--- a/sql/sql_db.h
+++ b/sql/sql_db.h
@@ -20,12 +20,12 @@
class THD;
-int mysql_create_db(THD *thd, const LEX_CSTRING *db, DDL_options_st options,
+int mysql_create_db(THD *thd, const Lex_ident_db &db, DDL_options_st options,
const Schema_specification_st *create);
-bool mysql_alter_db(THD *thd, const LEX_CSTRING *db,
+bool mysql_alter_db(THD *thd, const Lex_ident_db &db,
const Schema_specification_st *create);
-bool mysql_rm_db(THD *thd, const LEX_CSTRING *db, bool if_exists);
-bool mysql_upgrade_db(THD *thd, const LEX_CSTRING *old_db);
+bool mysql_rm_db(THD *thd, const Lex_ident_db &db, bool if_exists);
+bool mysql_upgrade_db(THD *thd, const Lex_ident_db &old_db);
uint mysql_change_db(THD *thd, const LEX_CSTRING *new_db_name,
bool force_switch);
@@ -44,9 +44,6 @@ CHARSET_INFO *get_default_db_collation(THD *thd, const char *db_name);
bool my_dbopt_init(void);
void my_dbopt_cleanup(void);
-const char *normalize_db_name(const char *db, char *buffer,
- size_t buffer_size);
-
void drop_database_objects(THD *thd, const LEX_CSTRING *path,
const LEX_CSTRING *db,
bool rm_mysql_schema);
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index c55b8789..1e115915 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -44,6 +44,9 @@
// end_read_record
#include "sql_insert.h" // fix_rownum_pointers
#include "sql_partition.h" // make_used_partitions_str
+#ifdef WITH_WSREP
+#include "wsrep_mysqld.h"
+#endif
#define MEM_STRIP_BUF_SIZE ((size_t) thd->variables.sortbuff_size)
@@ -104,7 +107,7 @@ bool Update_plan::save_explain_data_intern(THD *thd,
bool is_analyze)
{
explain->select_type= "SIMPLE";
- explain->table_name.append(&table->pos_in_table_list->alias);
+ explain->table_name.append(table->alias);
explain->impossible_where= false;
explain->no_partitions= false;
@@ -223,7 +226,7 @@ static bool record_should_be_deleted(THD *thd, TABLE *table, SQL_SELECT *sel,
Explain_delete *explain, bool truncate_history)
{
explain->tracker.on_record_read();
- thd->inc_examined_row_count(1);
+ thd->inc_examined_row_count();
if (table->vfield)
(void) table->update_virtual_fields(table->file, VCOL_UPDATE_FOR_DELETE);
if (!sel || sel->skip_record(thd) > 0)
@@ -306,123 +309,85 @@ int TABLE::delete_row()
/**
- Implement DELETE SQL word.
+ @brief Special handling of single-table deletes after prepare phase
- @note Like implementations of other DDL/DML in MySQL, this function
- relies on the caller to close the thread tables. This is done in the
- end of dispatch_command().
+ @param thd global context the processed statement
+ @returns false on success, true on error
*/
-bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
- SQL_I_List<ORDER> *order_list, ha_rows limit,
- ulonglong options, select_result *result)
+bool Sql_cmd_delete::delete_from_single_table(THD *thd)
{
- bool will_batch= FALSE;
- int error, loc_error;
- TABLE *table;
- SQL_SELECT *select=0;
- SORT_INFO *file_sort= 0;
- READ_RECORD info;
- bool using_limit=limit != HA_POS_ERROR;
- bool transactional_table, safe_update, const_cond;
- bool const_cond_result;
- bool return_error= 0;
- ha_rows deleted= 0;
- bool reverse= FALSE;
- bool has_triggers= false;
- ORDER *order= (ORDER *) ((order_list && order_list->elements) ?
- order_list->first : NULL);
- SELECT_LEX *select_lex= thd->lex->first_select_lex();
- SELECT_LEX *returning= thd->lex->has_returning() ? thd->lex->returning() : 0;
+ int error;
+ int loc_error;
+ bool transactional_table;
+ bool const_cond;
+ bool safe_update;
+ bool const_cond_result;
+ bool return_error= 0;
+ TABLE *table;
+ SQL_SELECT *select= 0;
+ SORT_INFO *file_sort= 0;
+ READ_RECORD info;
+ ha_rows deleted= 0;
+ bool reverse= FALSE;
+ bool binlog_is_row;
killed_state killed_status= NOT_KILLED;
THD::enum_binlog_query_type query_type= THD::ROW_QUERY_TYPE;
- bool binlog_is_row;
- Explain_delete *explain;
+ bool will_batch= FALSE;
+
+ bool has_triggers= false;
+ SELECT_LEX_UNIT *unit = &lex->unit;
+ SELECT_LEX *select_lex= unit->first_select();
+ SELECT_LEX *returning= thd->lex->has_returning() ? thd->lex->returning() : 0;
+ TABLE_LIST *const table_list = select_lex->get_table_list();
+ ulonglong options= select_lex->options;
+ ORDER *order= select_lex->order_list.first;
+ COND *conds= select_lex->join->conds;
+ ha_rows limit= unit->lim.get_select_limit();
+ bool using_limit= limit != HA_POS_ERROR;
+
Delete_plan query_plan(thd->mem_root);
+ Explain_delete *explain;
Unique * deltempfile= NULL;
bool delete_record= false;
- bool delete_while_scanning;
+ bool delete_while_scanning= table_list->delete_while_scanning;
bool portion_of_time_through_update;
- DBUG_ENTER("mysql_delete");
+
+ DBUG_ENTER("Sql_cmd_delete::delete_single_table");
query_plan.index= MAX_KEY;
query_plan.using_filesort= FALSE;
- create_explain_query(thd->lex, thd->mem_root);
- if (open_and_lock_tables(thd, table_list, TRUE, 0))
- DBUG_RETURN(TRUE);
-
THD_STAGE_INFO(thd, stage_init_update);
const bool delete_history= table_list->vers_conditions.delete_history;
DBUG_ASSERT(!(delete_history && table_list->period_conditions.is_set()));
- if (thd->lex->handle_list_of_derived(table_list, DT_MERGE_FOR_INSERT))
- DBUG_RETURN(TRUE);
- if (thd->lex->handle_list_of_derived(table_list, DT_PREPARE))
- DBUG_RETURN(TRUE);
+ if (table_list->handle_derived(thd->lex, DT_MERGE_FOR_INSERT))
+ DBUG_RETURN(1);
+ if (table_list->handle_derived(thd->lex, DT_PREPARE))
+ DBUG_RETURN(1);
+
+ table= table_list->table;
if (!table_list->single_table_updatable())
{
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias.str, "DELETE");
DBUG_RETURN(TRUE);
}
- if (!(table= table_list->table) || !table->is_created())
+
+ if (!table || !table->is_created())
{
my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0),
table_list->view_db.str, table_list->view_name.str);
DBUG_RETURN(TRUE);
}
- table->map=1;
+
query_plan.select_lex= thd->lex->first_select_lex();
query_plan.table= table;
thd->lex->promote_select_describe_flag_if_needed();
- if (mysql_prepare_delete(thd, table_list, &conds, &delete_while_scanning))
- DBUG_RETURN(TRUE);
-
- if (table_list->has_period())
- {
- if (!table_list->period_conditions.start.item->const_item()
- || !table_list->period_conditions.end.item->const_item())
- {
- my_error(ER_NOT_CONSTANT_EXPRESSION, MYF(0), "FOR PORTION OF");
- DBUG_RETURN(true);
- }
- }
-
- if (delete_history)
- table->vers_write= false;
-
- if (returning)
- (void) result->prepare(returning->item_list, NULL);
-
- if (thd->lex->current_select->first_cond_optimization)
- {
- thd->lex->current_select->save_leaf_tables(thd);
- thd->lex->current_select->first_cond_optimization= 0;
- }
- /* check ORDER BY even if it can be ignored */
- if (order)
- {
- TABLE_LIST tables;
- List<Item> fields;
- List<Item> all_fields;
-
- bzero((char*) &tables,sizeof(tables));
- tables.table = table;
- tables.alias = table_list->alias;
-
- if (select_lex->setup_ref_array(thd, order_list->elements) ||
- setup_order(thd, select_lex->ref_pointer_array, &tables,
- fields, all_fields, order))
- {
- free_underlaid_joins(thd, thd->lex->first_select_lex());
- DBUG_RETURN(TRUE);
- }
- }
-
/* Apply the IN=>EXISTS transformation to all subqueries and optimize them. */
if (select_lex->optimize_unflattened_subqueries(false))
DBUG_RETURN(TRUE);
@@ -510,6 +475,18 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
goto produce_explain_and_leave;
}
}
+ if (conds && thd->lex->are_date_funcs_used())
+ {
+ /* Rewrite datetime comparison conditions into sargable */
+ conds= conds->top_level_transform(thd, &Item::date_conds_transformer,
+ (uchar *) 0);
+ }
+
+ if (conds && optimizer_flag(thd, OPTIMIZER_SWITCH_SARGABLE_CASEFOLD))
+ {
+ conds= conds->top_level_transform(thd, &Item::varchar_upper_cmp_transformer,
+ (uchar *) 0);
+ }
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (prune_partitions(thd, table, conds))
@@ -538,7 +515,8 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
if (unlikely(error))
DBUG_RETURN(TRUE);
if ((select && select->check_quick(thd, safe_update, limit,
- Item_func::BITMAP_ALL)) || !limit)
+ Item_func::BITMAP_ALL)) || !limit ||
+ table->stat_records() == 0)
{
query_plan.set_impossible_where();
if (thd->lex->describe || thd->lex->analyze_stmt)
@@ -687,7 +665,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
if (!(file_sort= filesort(thd, table, &fsort, fs_tracker)))
goto got_error;
- thd->inc_examined_row_count(file_sort->examined_rows);
+ thd->ps_report_examined_row_count();
/*
Filesort has already found and selected the rows we want to delete,
so we don't need the where clause
@@ -1027,93 +1005,6 @@ got_error:
}
-/*
- Prepare items in DELETE statement
-
- SYNOPSIS
- mysql_prepare_delete()
- thd - thread handler
- table_list - global/local table list
- conds - conditions
-
- RETURN VALUE
- FALSE OK
- TRUE error
-*/
-int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds,
- bool *delete_while_scanning)
-{
- Item *fake_conds= 0;
- SELECT_LEX *select_lex= thd->lex->first_select_lex();
- DBUG_ENTER("mysql_prepare_delete");
- List<Item> all_fields;
-
- *delete_while_scanning= true;
- thd->lex->allow_sum_func.clear_all();
- if (setup_tables_and_check_access(thd, &select_lex->context,
- &select_lex->top_join_list, table_list,
- select_lex->leaf_tables, FALSE,
- DELETE_ACL, SELECT_ACL, TRUE))
- DBUG_RETURN(TRUE);
-
- if (table_list->vers_conditions.is_set() && table_list->is_view_or_derived())
- {
- my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
- DBUG_RETURN(true);
- }
-
- if (table_list->has_period())
- {
- if (table_list->is_view_or_derived())
- {
- my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
- DBUG_RETURN(true);
- }
-
- if (select_lex->period_setup_conds(thd, table_list))
- DBUG_RETURN(true);
- }
-
- DBUG_ASSERT(table_list->table);
- // conds could be cached from previous SP call
- DBUG_ASSERT(!table_list->vers_conditions.need_setup() ||
- !*conds || thd->stmt_arena->is_stmt_execute());
- if (select_lex->vers_setup_conds(thd, table_list))
- DBUG_RETURN(TRUE);
-
- *conds= select_lex->where;
-
- if (setup_returning_fields(thd, table_list) ||
- setup_conds(thd, table_list, select_lex->leaf_tables, conds) ||
- setup_ftfuncs(select_lex))
- DBUG_RETURN(TRUE);
- if (!table_list->single_table_updatable() ||
- check_key_in_view(thd, table_list))
- {
- my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias.str, "DELETE");
- DBUG_RETURN(TRUE);
- }
-
- /*
- Application-time periods: if FOR PORTION OF ... syntax used, DELETE
- statement could issue delete_row's mixed with write_row's. This causes
- problems for myisam and corrupts table, if deleting while scanning.
- */
- if (table_list->has_period()
- || unique_table(thd, table_list, table_list->next_global, 0))
- *delete_while_scanning= false;
-
- if (select_lex->inner_refs_list.elements &&
- fix_inner_refs(thd, all_fields, select_lex, select_lex->ref_pointer_array))
- DBUG_RETURN(TRUE);
-
- select_lex->fix_prepare_information(thd, conds, &fake_conds);
- if (!thd->lex->upd_del_where)
- thd->lex->upd_del_where= *conds;
- DBUG_RETURN(FALSE);
-}
-
-
/***************************************************************************
Delete multiple tables from join
***************************************************************************/
@@ -1125,106 +1016,6 @@ extern "C" int refpos_order_cmp(void* arg, const void *a,const void *b)
return file->cmp_ref((const uchar*)a, (const uchar*)b);
}
-/*
- make delete specific preparation and checks after opening tables
-
- SYNOPSIS
- mysql_multi_delete_prepare()
- thd thread handler
-
- RETURN
- FALSE OK
- TRUE Error
-*/
-
-int mysql_multi_delete_prepare(THD *thd)
-{
- LEX *lex= thd->lex;
- TABLE_LIST *aux_tables= lex->auxiliary_table_list.first;
- TABLE_LIST *target_tbl;
- DBUG_ENTER("mysql_multi_delete_prepare");
-
- if (mysql_handle_derived(lex, DT_INIT))
- DBUG_RETURN(TRUE);
- if (mysql_handle_derived(lex, DT_MERGE_FOR_INSERT))
- DBUG_RETURN(TRUE);
- if (mysql_handle_derived(lex, DT_PREPARE))
- DBUG_RETURN(TRUE);
- /*
- setup_tables() need for VIEWs. JOIN::prepare() will not do it second
- time.
-
- lex->query_tables also point on local list of DELETE SELECT_LEX
- */
- if (setup_tables_and_check_access(thd,
- &thd->lex->first_select_lex()->context,
- &thd->lex->first_select_lex()->
- top_join_list,
- lex->query_tables,
- lex->first_select_lex()->leaf_tables,
- FALSE, DELETE_ACL, SELECT_ACL, FALSE))
- DBUG_RETURN(TRUE);
-
- /*
- Multi-delete can't be constructed over-union => we always have
- single SELECT on top and have to check underlying SELECTs of it
- */
- lex->first_select_lex()->set_unique_exclude();
- /* Fix tables-to-be-deleted-from list to point at opened tables */
- for (target_tbl= (TABLE_LIST*) aux_tables;
- target_tbl;
- target_tbl= target_tbl->next_local)
- {
-
- target_tbl->table= target_tbl->correspondent_table->table;
- if (target_tbl->correspondent_table->is_multitable())
- {
- my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0),
- target_tbl->correspondent_table->view_db.str,
- target_tbl->correspondent_table->view_name.str);
- DBUG_RETURN(TRUE);
- }
-
- if (!target_tbl->correspondent_table->single_table_updatable() ||
- check_key_in_view(thd, target_tbl->correspondent_table))
- {
- my_error(ER_NON_UPDATABLE_TABLE, MYF(0),
- target_tbl->table_name.str, "DELETE");
- DBUG_RETURN(TRUE);
- }
- }
-
- for (target_tbl= (TABLE_LIST*) aux_tables;
- target_tbl;
- target_tbl= target_tbl->next_local)
- {
- /*
- Check that table from which we delete is not used somewhere
- inside subqueries/view.
- */
- {
- TABLE_LIST *duplicate;
- if ((duplicate= unique_table(thd, target_tbl->correspondent_table,
- lex->query_tables, 0)))
- {
- update_non_unique_table_error(target_tbl->correspondent_table,
- "DELETE", duplicate);
- DBUG_RETURN(TRUE);
- }
- }
- }
- /*
- Reset the exclude flag to false so it doesn't interfare
- with further calls to unique_table
- */
- lex->first_select_lex()->exclude_from_table_unique_test= FALSE;
-
- if (lex->save_prep_leaf_tables())
- DBUG_RETURN(TRUE);
-
- DBUG_RETURN(FALSE);
-}
-
multi_delete::multi_delete(THD *thd_arg, TABLE_LIST *dt, uint num_of_tables_arg):
select_result_interceptor(thd_arg), delete_tables(dt), deleted(0), found(0),
@@ -1357,6 +1148,8 @@ multi_delete::~multi_delete()
table_being_deleted= table_being_deleted->next_local)
{
TABLE *table= table_being_deleted->table;
+ if (!table)
+ continue;
table->no_keyread=0;
table->no_cache= 0;
}
@@ -1686,3 +1479,368 @@ bool multi_delete::send_eof()
}
return 0;
}
+
+
+/**
+ @brief Remove ORDER BY from DELETE if it's used without limit clause
+*/
+
+void Sql_cmd_delete::remove_order_by_without_limit(THD *thd)
+{
+ SELECT_LEX *const select_lex = thd->lex->first_select_lex();
+ if (select_lex->order_list.elements &&
+ !select_lex->limit_params.select_limit)
+ select_lex->order_list.empty();
+}
+
+
+/**
+ @brief Check whether processing to multi-table delete is prohibited
+
+ @param thd global context the processed statement
+ @returns true if processing as multitable is prohibited, false otherwise
+
+ @todo
+ Introduce handler level flag for storage engines that would prohibit
+ such conversion for any single-table delete.
+*/
+
+bool Sql_cmd_delete::processing_as_multitable_delete_prohibited(THD *thd)
+{
+ SELECT_LEX *const select_lex = thd->lex->first_select_lex();
+ return
+ ((select_lex->order_list.elements &&
+ select_lex->limit_params.select_limit) ||
+ thd->lex->has_returning());
+}
+
+
+/**
+ @brief Perform precheck of table privileges for delete statements
+
+ @param thd global context the processed statement
+ @returns false on success, true on error
+*/
+
+bool Sql_cmd_delete::precheck(THD *thd)
+{
+ if (!multitable)
+ {
+ if (delete_precheck(thd, lex->query_tables))
+ return true;
+ }
+ else
+ {
+ if (multi_delete_precheck(thd, lex->query_tables))
+ return true;
+ }
+
+#ifdef WITH_WSREP
+ WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
+#endif
+
+ return false;
+
+#ifdef WITH_WSREP
+wsrep_error_label:
+#endif
+ return true;
+}
+
+
+/**
+ @brief Perform context analysis for delete statements
+
+ @param thd global context the processed statement
+ @returns false on success, true on error
+
+ @note
+ The main bulk of the context analysis actions for a delete statement
+ is performed by a call of JOIN::prepare().
+*/
+
+bool Sql_cmd_delete::prepare_inner(THD *thd)
+{
+ int err= 0;
+ TABLE_LIST *target_tbl;
+ JOIN *join;
+ SELECT_LEX *const select_lex = thd->lex->first_select_lex();
+ TABLE_LIST *const table_list = select_lex->get_table_list();
+ TABLE_LIST *aux_tables= thd->lex->auxiliary_table_list.first;
+ ulonglong select_options= select_lex->options;
+ bool free_join= 1;
+ SELECT_LEX *returning= thd->lex->has_returning() ? thd->lex->returning() : 0;
+ const bool delete_history= table_list->vers_conditions.delete_history;
+ DBUG_ASSERT(!(delete_history && table_list->period_conditions.is_set()));
+
+ DBUG_ENTER("Sql_cmd_delete::prepare_inner");
+
+ (void) read_statistics_for_tables_if_needed(thd, table_list);
+
+ THD_STAGE_INFO(thd, stage_init_update);
+
+ {
+ if (mysql_handle_derived(lex, DT_INIT))
+ DBUG_RETURN(TRUE);
+ if (mysql_handle_derived(lex, DT_MERGE_FOR_INSERT))
+ DBUG_RETURN(TRUE);
+ if (mysql_handle_derived(lex, DT_PREPARE))
+ DBUG_RETURN(TRUE);
+ }
+
+ if (!(result= new (thd->mem_root) multi_delete(thd, aux_tables,
+ lex->table_count_update)))
+ {
+ DBUG_RETURN(TRUE);
+ }
+
+ table_list->delete_while_scanning= true;
+
+ if (!multitable && !table_list->single_table_updatable())
+ {
+ my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias.str, "DELETE");
+ DBUG_RETURN(TRUE);
+ }
+
+ if (!multitable && (!table_list->table || !table_list->table->is_created()))
+ {
+ my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0),
+ table_list->view_db.str, table_list->view_name.str);
+ DBUG_RETURN(TRUE);
+ }
+
+ if (setup_tables_and_check_access(thd, &select_lex->context,
+ &select_lex->top_join_list,
+ table_list, select_lex->leaf_tables,
+ false, DELETE_ACL, SELECT_ACL, true))
+ DBUG_RETURN(TRUE);
+
+ if (setup_tables(thd, &select_lex->context, &select_lex->top_join_list,
+ table_list, select_lex->leaf_tables, false, false))
+ DBUG_RETURN(TRUE);
+
+ if (!multitable)
+ {
+ if (table_list->vers_conditions.is_set() && table_list->is_view_or_derived())
+ {
+ my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
+ DBUG_RETURN(true);
+ }
+
+ if (!multitable)
+ {
+ TABLE_LIST *update_source_table= 0;
+ if (((update_source_table=unique_table(thd, table_list,
+ table_list->next_global, 0)) ||
+ table_list->is_multitable()))
+ {
+ DBUG_ASSERT(update_source_table || table_list->view != 0);
+ if (!table_list->is_multitable() &&
+ !processing_as_multitable_delete_prohibited(thd))
+ {
+ multitable= true;
+ remove_order_by_without_limit(thd);
+ }
+ }
+ }
+
+ if (table_list->has_period())
+ {
+ if (table_list->is_view_or_derived())
+ {
+ my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
+ DBUG_RETURN(true);
+ }
+
+ if (select_lex->period_setup_conds(thd, table_list))
+ DBUG_RETURN(true);
+ }
+
+ if (select_lex->vers_setup_conds(thd, table_list))
+ DBUG_RETURN(TRUE);
+ /*
+ Application-time periods: if FOR PORTION OF ... syntax used, DELETE
+ statement could issue delete_row's mixed with write_row's. This causes
+ problems for myisam and corrupts table, if deleting while scanning.
+ */
+ if (table_list->has_period()
+ || unique_table(thd, table_list, table_list->next_global, 0))
+ table_list->delete_while_scanning= false;
+ }
+
+ {
+ if (thd->lex->describe)
+ select_options|= SELECT_DESCRIBE;
+
+ /*
+ When in EXPLAIN, delay deleting the joins so that they are still
+ available when we're producing EXPLAIN EXTENDED warning text.
+ */
+ if (select_options & SELECT_DESCRIBE)
+ free_join= 0;
+ select_options|=
+ SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK | OPTION_SETUP_TABLES_DONE;
+
+ if (!(join= new (thd->mem_root) JOIN(thd, empty_list,
+ select_options, result)))
+ DBUG_RETURN(TRUE);
+ THD_STAGE_INFO(thd, stage_init);
+ select_lex->join= join;
+ thd->lex->used_tables=0;
+ if ((err= join->prepare(table_list, select_lex->where,
+ select_lex->order_list.elements,
+ select_lex->order_list.first,
+ false, NULL, NULL, NULL,
+ select_lex, &lex->unit)))
+
+ {
+ goto err;
+ }
+
+ if (!multitable &&
+ select_lex->sj_subselects.elements)
+ multitable= true;
+ }
+
+ if (multitable)
+ {
+ /*
+ Multi-delete can't be constructed over-union => we always have
+ single SELECT on top and have to check underlying SELECTs of it
+ */
+ lex->first_select_lex()->set_unique_exclude();
+ /* Fix tables-to-be-deleted-from list to point at opened tables */
+ for (target_tbl= (TABLE_LIST*) aux_tables;
+ target_tbl;
+ target_tbl= target_tbl->next_local)
+ {
+ target_tbl->table= target_tbl->correspondent_table->table;
+ if (target_tbl->correspondent_table->is_multitable())
+ {
+ my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0),
+ target_tbl->correspondent_table->view_db.str,
+ target_tbl->correspondent_table->view_name.str);
+ DBUG_RETURN(TRUE);
+ }
+
+ if (!target_tbl->correspondent_table->single_table_updatable() ||
+ check_key_in_view(thd, target_tbl->correspondent_table))
+ {
+ my_error(ER_NON_UPDATABLE_TABLE, MYF(0),
+ target_tbl->table_name.str, "DELETE");
+ DBUG_RETURN(TRUE);
+ }
+ }
+
+ /*
+ Reset the exclude flag to false so it doesn't interfare
+ with further calls to unique_table
+ */
+ lex->first_select_lex()->exclude_from_table_unique_test= FALSE;
+ }
+
+ if (!multitable && table_list->has_period())
+ {
+ if (!table_list->period_conditions.start.item->const_item()
+ || !table_list->period_conditions.end.item->const_item())
+ {
+ my_error(ER_NOT_CONSTANT_EXPRESSION, MYF(0), "FOR PORTION OF");
+ DBUG_RETURN(true);
+ }
+ }
+
+ if (delete_history)
+ table_list->table->vers_write= false;
+
+ if (setup_returning_fields(thd, table_list) ||
+ setup_ftfuncs(select_lex))
+ goto err;
+
+ free_join= false;
+
+ if (returning)
+ (void) result->prepare(returning->item_list, NULL);
+
+err:
+
+ if (free_join)
+ {
+ THD_STAGE_INFO(thd, stage_end);
+ err|= (int)(select_lex->cleanup());
+ DBUG_RETURN(err || thd->is_error());
+ }
+ DBUG_RETURN(err);
+
+}
+
+
+/**
+ @brief Perform optimization and execution actions needed for deletes
+
+ @param thd global context the processed statement
+ @returns false on success, true on error
+*/
+
+bool Sql_cmd_delete::execute_inner(THD *thd)
+{
+ if (!multitable)
+ {
+ if (lex->has_returning())
+ {
+ select_result *sel_result= NULL;
+ delete result;
+ /* This is DELETE ... RETURNING. It will return output to the client */
+ if (thd->lex->analyze_stmt)
+ {
+ /*
+ Actually, it is ANALYZE .. DELETE .. RETURNING. We need to produce
+ output and then discard it.
+ */
+ sel_result= new (thd->mem_root) select_send_analyze(thd);
+ save_protocol= thd->protocol;
+ thd->protocol= new Protocol_discard(thd);
+ }
+ else
+ {
+ if (!lex->result && !(sel_result= new (thd->mem_root) select_send(thd)))
+ return true;
+ }
+ result= lex->result ? lex->result : sel_result;
+ }
+ }
+
+ bool res= multitable ? Sql_cmd_dml::execute_inner(thd)
+ : delete_from_single_table(thd);
+
+ res|= thd->is_error();
+
+ if (save_protocol)
+ {
+ delete thd->protocol;
+ thd->protocol= save_protocol;
+ }
+ {
+ if (unlikely(res))
+ {
+ if (multitable)
+ result->abort_result_set();
+ }
+ else
+ {
+ if (thd->lex->describe || thd->lex->analyze_stmt)
+ {
+ bool extended= thd->lex->describe & DESCRIBE_EXTENDED;
+ res= thd->lex->explain->send_explain(thd, extended);
+ }
+ }
+ }
+
+ if (result)
+ {
+ res= false;
+ delete result;
+ }
+
+ status_var_add(thd->status_var.rows_sent, thd->get_sent_row_count());
+ return res;
+}
diff --git a/sql/sql_delete.h b/sql/sql_delete.h
index 520524c7..1842c5c0 100644
--- a/sql/sql_delete.h
+++ b/sql/sql_delete.h
@@ -17,6 +17,9 @@
#define SQL_DELETE_INCLUDED
#include "my_base.h" /* ha_rows */
+#include "sql_class.h" /* enum_duplicates */
+#include "sql_cmd.h" // Sql_cmd_dml
+#include "sql_base.h"
class THD;
struct TABLE_LIST;
@@ -26,10 +29,79 @@ class select_result;
typedef class Item COND;
template <typename T> class SQL_I_List;
-int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds,
- bool *delete_while_scanning);
-bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
- SQL_I_List<ORDER> *order, ha_rows rows,
- ulonglong options, select_result *result);
+/**
+ @class Sql_cmd_delete - class used for any DELETE statements
+ This class is derived from Sql_cmd_dml and contains implementations
+ for abstract virtual function of the latter such as precheck() and
+ prepare_inner(). It also overrides the implementation of execute_inner()
+ providing a special handling for single-table delete statements that
+ are not converted to multi-table delete.
+ The class provides an object of the DML_prelocking_strategy class
+ for the virtual function get_dml_prelocking_strategy().
+*/
+class Sql_cmd_delete final : public Sql_cmd_dml
+{
+public:
+ Sql_cmd_delete(bool multitable_arg)
+ : orig_multitable(multitable_arg), multitable(multitable_arg),
+ save_protocol(NULL)
+ {}
+
+ enum_sql_command sql_command_code() const override
+ {
+ return orig_multitable ? SQLCOM_DELETE_MULTI : SQLCOM_DELETE;
+ }
+
+ DML_prelocking_strategy *get_dml_prelocking_strategy() override
+ {
+ return &dml_prelocking_strategy;
+ }
+
+ bool processing_as_multitable_delete_prohibited(THD *thd);
+
+ bool is_multitable() const { return multitable; }
+
+ void set_as_multitable() { multitable= true; }
+
+ void remove_order_by_without_limit(THD *thd);
+
+protected:
+ /**
+ @brief Perform precheck of table privileges for delete statements
+ */
+ bool precheck(THD *thd) override;
+
+ /**
+ @brief Perform context analysis for delete statements
+ */
+ bool prepare_inner(THD *thd) override;
+
+ /**
+ @brief Perform optimization and execution actions needed for deletes
+ */
+ bool execute_inner(THD *thd) override;
+
+ private:
+ /**
+ @biefSpecial handling of single-table deletes after prepare phase
+ */
+ bool delete_from_single_table(THD *thd);
+
+ /* Original value of the 'multitable' flag set by constructor */
+ const bool orig_multitable;
+
+ /*
+ True if the statement is a multitable delete or converted to such.
+ For a single-table delete this flag is set to true if the statement
+ is supposed to be converted to multi-table delete.
+ */
+ bool multitable;
+
+ /* The prelocking strategy used when opening the used tables */
+ DML_prelocking_strategy dml_prelocking_strategy;
+
+ List<Item> empty_list; /**< auxiliary empty list used by prepare_inner() */
+ Protocol *save_protocol; /**< needed for ANALYZE .. DELETE .. RETURNING */
+};
#endif /* SQL_DELETE_INCLUDED */
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index de5a1f63..848907ab 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -656,7 +656,7 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
{
SELECT_LEX_UNIT *unit= derived->get_unit();
SELECT_LEX *first_select;
- bool res= FALSE, keep_row_order;
+ bool res= FALSE, keep_row_order, distinct;
DBUG_ENTER("mysql_derived_prepare");
DBUG_PRINT("enter", ("unit: %p table_list: %p alias: '%s'",
unit, derived, derived->alias.str));
@@ -855,18 +855,26 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
goto exit;
/*
- Temp table is created so that it hounours if UNION without ALL is to be
+ Temp table is created so that it honors if UNION without ALL is to be
processed
- As 'distinct' parameter we always pass FALSE (0), because underlying
- query will control distinct condition by itself. Correct test of
- distinct underlying query will be is_unit_op &&
- !unit->union_distinct->next_select() (i.e. it is union and last distinct
- SELECT is last SELECT of UNION).
+ We pass as 'distinct' parameter in any of the above cases
+
+ 1) It is an UNION and the last part of an union is distinct (as
+ thus the final temporary table should not contain duplicates).
+ 2) It is not an UNION and the unit->distinct flag is set. This is the
+ case for WHERE A IN (...).
+
+ Note that the underlying query will also control distinct condition.
*/
thd->create_tmp_table_for_derived= TRUE;
+ distinct= (unit->first_select()->next_select() ?
+ unit->union_distinct && !unit->union_distinct->next_select() :
+ unit->distinct);
+
if (!(derived->table) &&
- derived->derived_result->create_result_table(thd, &unit->types, FALSE,
+ derived->derived_result->create_result_table(thd, &unit->types,
+ distinct,
(first_select->options |
thd->variables.option_bits |
TMP_TABLE_ALL_COLUMNS),
@@ -886,22 +894,6 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
first_select->mark_as_belong_to_derived(derived);
derived->dt_handler= derived->find_derived_handler(thd);
- if (derived->dt_handler)
- {
- char query_buff[4096];
- String derived_query(query_buff, sizeof(query_buff), thd->charset());
- derived_query.length(0);
- derived->derived->print(&derived_query,
- enum_query_type(QT_VIEW_INTERNAL |
- QT_ITEM_ORIGINAL_FUNC_NULLIF |
- QT_PARSABLE));
- if (!thd->make_lex_string(&derived->derived_spec,
- derived_query.ptr(), derived_query.length()))
- {
- delete derived->dt_handler;
- derived->dt_handler= NULL;
- }
- }
exit:
/* Hide "Unknown column" or "Unknown function" error */
diff --git a/sql/sql_error.h b/sql/sql_error.h
index b5afdf9b..21161cb2 100644
--- a/sql/sql_error.h
+++ b/sql/sql_error.h
@@ -875,6 +875,14 @@ public:
len= err_conv(err_buffer, (uint) sizeof(err_buffer), str, (uint) len, cs);
return {err_buffer, len};
}
+ LEX_CSTRING set_strq(const char *str, size_t len, CHARSET_INFO *cs) const
+ {
+ DBUG_ASSERT(len < UINT_MAX32);
+ len= err_conv(err_buffer+1, (uint) sizeof(err_buffer)-2, str, (uint) len, cs);
+ err_buffer[0]= err_buffer[len+1]= '\'';
+ err_buffer[len+2]= 0;
+ return {err_buffer, len+2};
+ }
LEX_CSTRING set_mysql_time(const MYSQL_TIME *ltime) const
{
int length= my_TIME_to_str(ltime, err_buffer, AUTO_SEC_PART_DIGITS);
@@ -898,6 +906,7 @@ public:
class ErrConvString : public ErrConv
{
+protected:
const char *str;
size_t len;
CHARSET_INFO *cs;
@@ -914,6 +923,16 @@ public:
}
};
+class ErrConvStringQ : public ErrConvString
+{
+public:
+ using ErrConvString::ErrConvString;
+ LEX_CSTRING lex_cstring() const override
+ {
+ return set_strq(str, len, cs);
+ }
+};
+
class ErrConvInteger : public ErrConv, public Longlong_hybrid
{
public:
diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc
index 210f229a..b8c9c87c 100644
--- a/sql/sql_explain.cc
+++ b/sql/sql_explain.cc
@@ -36,6 +36,11 @@ const char *unit_operation_text[4]=
"UNIT RESULT","UNION RESULT","INTERSECT RESULT","EXCEPT RESULT"
};
+const char *pushed_unit_operation_text[4]=
+{
+ "PUSHED UNIT", "PUSHED UNION", "PUSHED INTERSECT", "PUSHED EXCEPT"
+};
+
const char *pushed_derived_text= "PUSHED DERIVED";
const char *pushed_select_text= "PUSHED SELECT";
@@ -575,7 +580,22 @@ uint Explain_union::make_union_table_name(char *buf)
}
-int Explain_union::print_explain(Explain_query *query,
+int Explain_union::print_explain(Explain_query *query,
+ select_result_sink *output,
+ uint8 explain_flags, bool is_analyze)
+{
+ if (is_pushed_down_to_engine)
+ return print_explain_pushed_down(output, explain_flags, is_analyze);
+ else
+ return print_explain_regular(query, output, explain_flags, is_analyze);
+}
+
+/*
+ Prints EXPLAIN plan for a regular UNIT (UNION/EXCEPT/INTERSECT),
+ i.e. UNIT that has not been pushed down to a storage engine
+*/
+
+int Explain_union::print_explain_regular(Explain_query *query,
select_result_sink *output,
uint8 explain_flags,
bool is_analyze)
@@ -592,7 +612,15 @@ int Explain_union::print_explain(Explain_query *query,
}
if (!using_tmp)
+ {
+ /*
+ The union operation may not employ a temporary table, for example,
+ for UNION ALL, in that case the results of the query are sent directly
+ to the output. So there is no actual UNION operation and we don't need
+ to print the line in the EXPLAIN output.
+ */
return 0;
+ }
/* Print a line with "UNIT RESULT" */
List<Item> item_list;
@@ -609,7 +637,7 @@ int Explain_union::print_explain(Explain_query *query,
item_list.push_back(new (mem_root)
Item_string_sys(thd, table_name_buffer, len),
mem_root);
-
+
/* `partitions` column */
if (explain_flags & DESCRIBE_PARTITIONS)
item_list.push_back(item_null, mem_root);
@@ -665,7 +693,6 @@ int Explain_union::print_explain(Explain_query *query,
extra_buf.length()),
mem_root);
- //output->unit.offset_limit_cnt= 0;
if (output->send_data(item_list))
return 1;
@@ -677,9 +704,89 @@ int Explain_union::print_explain(Explain_query *query,
}
-void Explain_union::print_explain_json(Explain_query *query,
+/*
+ Prints EXPLAIN plan for a UNIT (UNION/EXCEPT/INTERSECT) that
+ has been pushed down to a storage engine
+*/
+
+int Explain_union::print_explain_pushed_down(select_result_sink *output,
+ uint8 explain_flags,
+ bool is_analyze)
+{
+ THD *thd= output->thd;
+ MEM_ROOT *mem_root= thd->mem_root;
+ List<Item> item_list;
+ Item *item_null= new (mem_root) Item_null(thd);
+
+ /* `id` column */
+ item_list.push_back(item_null, mem_root);
+
+ /* `select_type` column */
+ push_str(thd, &item_list, fake_select_type);
+
+ /* `table` column */
+ item_list.push_back(item_null, mem_root);
+
+ /* `partitions` column */
+ if (explain_flags & DESCRIBE_PARTITIONS)
+ item_list.push_back(item_null, mem_root);
+
+ /* `type` column */
+ item_list.push_back(item_null, mem_root);
+
+ /* `possible_keys` column */
+ item_list.push_back(item_null, mem_root);
+
+ /* `key` */
+ item_list.push_back(item_null, mem_root);
+
+ /* `key_len` */
+ item_list.push_back(item_null, mem_root);
+
+ /* `ref` */
+ item_list.push_back(item_null, mem_root);
+
+ /* `rows` */
+ item_list.push_back(item_null, mem_root);
+
+ /* `r_rows` */
+ if (is_analyze)
+ item_list.push_back(item_null, mem_root);
+
+ /* `filtered` */
+ if (explain_flags & DESCRIBE_EXTENDED || is_analyze)
+ item_list.push_back(item_null, mem_root);
+
+ /* `r_filtered` */
+ if (is_analyze)
+ item_list.push_back(item_null, mem_root);
+
+ /* `Extra` */
+ item_list.push_back(item_null, mem_root);
+
+ if (output->send_data(item_list))
+ return 1;
+ return 0;
+}
+
+
+void Explain_union::print_explain_json(Explain_query *query,
Json_writer *writer, bool is_analyze)
{
+ if (is_pushed_down_to_engine)
+ print_explain_json_pushed_down(query, writer, is_analyze);
+ else
+ print_explain_json_regular(query, writer, is_analyze);
+}
+
+/*
+ Prints EXPLAIN plan in JSON format for a regular UNIT (UNION/EXCEPT/INTERSECT),
+ i.e. UNIT that has not been pushed down to a storage engine
+*/
+
+void Explain_union::print_explain_json_regular(
+ Explain_query *query, Json_writer *writer, bool is_analyze)
+{
Json_writer_nesting_guard guard(writer);
char table_name_buffer[SAFE_NAME_LEN];
@@ -737,6 +844,30 @@ void Explain_union::print_explain_json(Explain_query *query,
writer->end_object();
}
+/*
+ Prints EXPLAIN plan in JSON format for a UNIT (UNION/EXCEPT/INTERSECT) that
+ has been pushed down to a storage engine
+*/
+
+void Explain_union::print_explain_json_pushed_down(Explain_query *query,
+ Json_writer *writer,
+ bool is_analyze)
+{
+ Json_writer_nesting_guard guard(writer);
+
+ writer->add_member("query_block").start_object();
+
+ if (is_recursive_cte)
+ writer->add_member("recursive_union").start_object();
+ else
+ writer->add_member("union_result").start_object();
+
+ writer->add_member("message").add_str(fake_select_type);
+
+ writer->end_object(); // union_result
+ writer->end_object(); // query_block
+}
+
/*
Print EXPLAINs for all children nodes (i.e. for subqueries)
@@ -1028,6 +1159,9 @@ void Explain_select::print_explain_json(Explain_query *query,
writer->add_member("select_id").add_ll(select_id);
add_linkage(writer);
+ if (cost != 0.0)
+ writer->add_member("cost").add_double(cost);
+
if (is_analyze && time_tracker.get_loops())
{
writer->add_member("r_loops").add_ll(time_tracker.get_loops());
@@ -1371,10 +1505,12 @@ double Explain_table_access::get_r_filtered()
}
-int Explain_table_access::print_explain(select_result_sink *output, uint8 explain_flags,
+int Explain_table_access::print_explain(select_result_sink *output,
+ uint8 explain_flags,
bool is_analyze,
uint select_id, const char *select_type,
- bool using_temporary, bool using_filesort)
+ bool using_temporary,
+ bool using_filesort)
{
THD *thd= output->thd; // note: for SHOW EXPLAIN, this is target thd.
MEM_ROOT *mem_root= thd->mem_root;
@@ -1921,10 +2057,21 @@ void Explain_table_access::print_explain_json(Explain_query *query,
rowid_filter->print_explain_json(query, writer, is_analyze);
}
+ if (loops != 0.0)
+ writer->add_member("loops").add_double(loops);
+
/* r_loops (not present in tabular output) */
if (is_analyze)
{
- writer->add_member("r_loops").add_ll(tracker.get_loops());
+ ha_rows loops= tracker.get_loops();
+ writer->add_member("r_loops").add_ll(loops);
+
+ if (type == JT_EQ_REF) // max one row
+ {
+ ha_rows table_loops= op_tracker.get_loops();
+ if (table_loops != loops)
+ writer->add_member("r_table_loops").add_ll(table_loops);
+ }
}
/* `rows` */
@@ -1950,7 +2097,13 @@ void Explain_table_access::print_explain_json(Explain_query *query,
else
writer->add_null();
}
+ }
+
+ if (cost != 0.0)
+ writer->add_member("cost").add_double(cost);
+ if (is_analyze)
+ {
if (op_tracker.get_loops())
{
double total_time= op_tracker.get_time_ms();
@@ -2050,6 +2203,7 @@ void Explain_table_access::print_explain_json(Explain_query *query,
}
else
writer->add_null();
+
}
}
diff --git a/sql/sql_explain.h b/sql/sql_explain.h
index c71ba3a6..e7fe9b65 100644
--- a/sql/sql_explain.h
+++ b/sql/sql_explain.h
@@ -215,6 +215,7 @@ public:
message(NULL),
having(NULL), having_value(Item::COND_UNDEF),
using_temporary(false), using_filesort(false),
+ cost(0.0),
time_tracker(is_analyze),
aggr_tree(NULL)
{}
@@ -248,9 +249,10 @@ public:
bool using_temporary;
bool using_filesort;
+ double cost;
/* ANALYZE members */
Time_and_counter_tracker time_tracker;
-
+
/*
Part of query plan describing sorting, temp.table usage, and duplicate
removal
@@ -331,6 +333,7 @@ public:
/////////////////////////////////////////////////////////////////////////////
extern const char *unit_operation_text[4];
+extern const char *pushed_unit_operation_text[4];
extern const char *pushed_derived_text;
extern const char *pushed_select_text;
@@ -345,7 +348,7 @@ class Explain_union : public Explain_node
public:
Explain_union(MEM_ROOT *root, bool is_analyze) :
Explain_node(root), union_members(PSI_INSTRUMENT_MEM),
- is_recursive_cte(false),
+ is_recursive_cte(false), is_pushed_down_to_engine(false),
fake_select_lex_explain(root, is_analyze)
{}
@@ -376,13 +379,18 @@ public:
}
int print_explain(Explain_query *query, select_result_sink *output,
uint8 explain_flags, bool is_analyze);
- void print_explain_json(Explain_query *query, Json_writer *writer,
+ void print_explain_json(Explain_query *query, Json_writer *writer,
bool is_analyze);
+ void print_explain_json_regular(Explain_query *query, Json_writer *writer,
+ bool is_analyze);
+ void print_explain_json_pushed_down(Explain_query *query,
+ Json_writer *writer, bool is_analyze);
const char *fake_select_type;
bool using_filesort;
bool using_tmp;
bool is_recursive_cte;
+ bool is_pushed_down_to_engine;
/*
Explain data structure for "fake_select_lex" (i.e. for the degenerate
@@ -401,6 +409,10 @@ public:
}
private:
uint make_union_table_name(char *buf);
+ int print_explain_regular(Explain_query *query, select_result_sink *output,
+ uint8 explain_flags, bool is_analyze);
+ int print_explain_pushed_down(select_result_sink *output,
+ uint8 explain_flags, bool is_analyze);
Table_access_tracker fake_select_lex_tracker;
/* This one is for reading after ORDER BY */
@@ -752,6 +764,8 @@ public:
Explain_table_access(MEM_ROOT *root, bool timed) :
derived_select_number(0),
non_merged_sjm_number(0),
+ cost(0.0),
+ loops(0.0),
extra_tags(root),
range_checked_fer(NULL),
full_scan_on_null_key(false),
@@ -821,6 +835,10 @@ public:
ha_rows rows;
double filtered;
+ /* Total cost incurred during one execution of this select */
+ double cost;
+
+ double loops;
/*
Contents of the 'Extra' column. Some are converted into strings, some have
parameters, values for which are stored below.
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc
index 7235dc64..406f67ff 100644
--- a/sql/sql_handler.cc
+++ b/sql/sql_handler.cc
@@ -674,7 +674,7 @@ mysql_ha_fix_cond_and_key(SQL_HANDLER *handler,
if ((c_key->flags & HA_SPATIAL) ||
c_key->algorithm == HA_KEY_ALG_FULLTEXT ||
(ha_rkey_mode != HA_READ_KEY_EXACT &&
- (table->file->index_flags(handler->keyno, 0, TRUE) &
+ (table->key_info[handler->keyno].index_flags &
(HA_READ_NEXT | HA_READ_PREV | HA_READ_RANGE)) == 0))
{
my_error(ER_KEY_DOESNT_SUPPORT, MYF(0),
@@ -690,8 +690,7 @@ mysql_ha_fix_cond_and_key(SQL_HANDLER *handler,
}
if (key_expr->elements < keyinfo->user_defined_key_parts &&
- (table->file->index_flags(handler->keyno, 0, TRUE) &
- HA_ONLY_WHOLE_INDEX))
+ (table->key_info[handler->keyno].index_flags & HA_ONLY_WHOLE_INDEX))
{
my_error(ER_KEY_DOESNT_SUPPORT, MYF(0),
table->file->index_type(handler->keyno), keyinfo->name.str);
@@ -989,6 +988,7 @@ retry:
}
goto ok;
}
+ thd->inc_examined_row_count();
if (cond && !cond->val_int())
{
if (thd->is_error())
@@ -1003,6 +1003,7 @@ retry:
goto err;
protocol->write();
+ thd->inc_sent_row_count(1);
}
num_rows++;
}
diff --git a/sql/sql_help.cc b/sql/sql_help.cc
index 34e77e37..3876516b 100644
--- a/sql/sql_help.cc
+++ b/sql/sql_help.cc
@@ -70,6 +70,29 @@ enum enum_used_fields
/*
+ Allocate string field in MEM_ROOT and return it as String
+
+ SYNOPSIS
+ get_field()
+ mem MEM_ROOT for allocating
+ field Field for retrieving of string
+ res result String
+*/
+
+static void get_field(MEM_ROOT *mem, Field *field, String *res)
+{
+ THD *thd= field->get_thd();
+ Sql_mode_instant_remove sms(thd, MODE_PAD_CHAR_TO_FULL_LENGTH);
+ LEX_STRING ls= field->val_lex_string_strmake(mem);
+ DBUG_ASSERT((!ls.str && !ls.length) || ls.str[ls.length] == '\0');
+ if (!ls.str)
+ res->length(0); // EOM
+ else
+ res->set((const char *) ls.str, ls.length, field->charset());
+}
+
+
+/*
Fill st_find_field structure with pointers to fields
SYNOPSIS
@@ -664,17 +687,19 @@ SQL_SELECT *prepare_simple_select(THD *thd, Item *cond,
/* Assume that no indexes cover all required fields */
table->covering_keys.clear_all();
+ table->file->info(HA_STATUS_VARIABLE);
+ table->used_stat_records= table->file->stats.records;
SQL_SELECT *res= make_select(table, 0, 0, cond, 0, 0, error);
- if (unlikely(*error) ||
- (likely(res) && unlikely(res->check_quick(thd, 0, HA_POS_ERROR,
- Item_func::BITMAP_ALL))) ||
- (likely(res) && res->quick && unlikely(res->quick->reset())))
- {
- delete res;
- res=0;
- }
- return res;
+ if (unlikely(!res) || unlikely(*error))
+ goto error;
+ (void) res->check_quick(thd, 0, HA_POS_ERROR, Item_func::BITMAP_ALL);
+ if (!res->quick || res->quick->reset() == 0)
+ return res;
+
+error:
+ delete res;
+ return 0;
}
/*
@@ -1077,7 +1102,9 @@ error:
new_trans.restore_old_transaction();
error2:
- DBUG_RETURN(TRUE);
+ if (!thd->is_error())
+ my_eof(thd);
+ DBUG_RETURN(thd->is_error());
}
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index e16ac1c1..fe461dfd 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -1133,11 +1133,7 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list,
}
}
- if ((res= table_list->view_check_option(thd,
- (values_list.elements == 1 ?
- 0 :
- ignore))) ==
- VIEW_CHECK_SKIP)
+ if ((res= table_list->view_check_option(thd, ignore)) == VIEW_CHECK_SKIP)
continue;
else if (res == VIEW_CHECK_ERROR)
{
@@ -1416,6 +1412,7 @@ abort:
thd->abort_on_warning= 0;
if (readbuff)
my_free(readbuff);
+ status_var_add(thd->status_var.rows_sent, thd->get_sent_row_count());
DBUG_RETURN(retval);
}
diff --git a/sql/sql_join_cache.cc b/sql/sql_join_cache.cc
index 2ee63171..b80f3861 100644
--- a/sql/sql_join_cache.cc
+++ b/sql/sql_join_cache.cc
@@ -919,7 +919,12 @@ int JOIN_CACHE::alloc_buffer()
buff= NULL;
buff_size= get_max_join_buffer_size(optimize_buff_size, min_buff_size);
- for (tab= start_tab; tab!= join_tab;
+ /*
+ Compute the total buffer usage for all join buffers up to
+ and including the current one.
+ */
+ for (tab= first_linear_tab(join, WITHOUT_BUSH_ROOTS, WITHOUT_CONST_TABLES);
+ tab != join_tab;
tab= next_linear_tab(join, tab, WITHOUT_BUSH_ROOTS))
{
cache= tab->cache;
@@ -2171,12 +2176,12 @@ enum_nested_loop_state JOIN_CACHE::join_records(bool skip_last)
if (!join_tab->first_unmatched)
{
- bool pfs_batch_update= join_tab->pfs_batch_update(join);
- if (pfs_batch_update)
+ DBUG_ASSERT(join_tab->cached_pfs_batch_update == join_tab->pfs_batch_update());
+ if (join_tab->cached_pfs_batch_update)
join_tab->table->file->start_psi_batch_mode();
/* Find all records from join_tab that match records from join buffer */
rc= join_matching_records(skip_last);
- if (pfs_batch_update)
+ if (join_tab->cached_pfs_batch_update)
join_tab->table->file->end_psi_batch_mode();
if (rc != NESTED_LOOP_OK && rc != NESTED_LOOP_NO_MORE_ROWS)
goto finish;
@@ -2346,7 +2351,8 @@ enum_nested_loop_state JOIN_CACHE::join_matching_records(bool skip_last)
if ((rc= join_tab_execution_startup(join_tab)) < 0)
goto finish2;
- if (join_tab->build_range_rowid_filter_if_needed())
+ if (join_tab->need_to_build_rowid_filter &&
+ join_tab->build_range_rowid_filter())
{
rc= NESTED_LOOP_ERROR;
goto finish2;
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 38232622..03509846 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -28,6 +28,7 @@
#include <hash.h>
#include "sp_head.h"
#include "sp.h"
+#include "sp_instr.h" // class sp_instr, ...
#include "sql_select.h"
#include "sql_cte.h"
#include "sql_signal.h"
@@ -76,7 +77,7 @@ int sp_expr_lex::case_stmt_action_expr()
i= new (thd->mem_root)
sp_instr_set_case_expr(sphead->instructions(), spcont, case_expr_id,
- get_item(), this);
+ get_item(), this, m_expr_str);
sphead->add_cont_backpatch(i);
return sphead->add_instr(i);
@@ -110,10 +111,12 @@ int sp_expr_lex::case_stmt_action_when(bool simple)
#endif
expr= new (thd->mem_root) Item_func_eq(thd, var, get_item());
- i= new (thd->mem_root) sp_instr_jump_if_not(ip, spcont, expr, this);
+ i= new (thd->mem_root) sp_instr_jump_if_not(ip, spcont, expr, this,
+ m_expr_str);
}
else
- i= new (thd->mem_root) sp_instr_jump_if_not(ip, spcont, get_item(), this);
+ i= new (thd->mem_root) sp_instr_jump_if_not(ip, spcont, get_item(), this,
+ m_expr_str);
/*
BACKPATCH: Registering forward jump from
@@ -206,7 +209,8 @@ LEX::set_system_variable(enum enum_var_type var_type,
@return TRUE if error, FALSE otherwise.
*/
-bool LEX::set_trigger_new_row(const LEX_CSTRING *name, Item *val)
+bool LEX::set_trigger_new_row(const LEX_CSTRING *name, Item *val,
+ const LEX_CSTRING &expr_str)
{
Item_trigger_field *trg_fld;
sp_instr_set_trigger_field *sp_fld;
@@ -229,7 +233,7 @@ bool LEX::set_trigger_new_row(const LEX_CSTRING *name, Item *val)
sp_fld= new (thd->mem_root)
sp_instr_set_trigger_field(sphead->instructions(),
- spcont, trg_fld, val, this);
+ spcont, trg_fld, val, this, expr_str);
if (unlikely(sp_fld == NULL))
return TRUE;
@@ -238,7 +242,8 @@ bool LEX::set_trigger_new_row(const LEX_CSTRING *name, Item *val)
Let us add this item to list of all Item_trigger_field
objects in trigger.
*/
- trg_table_fields.link_in_list(trg_fld, &trg_fld->next_trg_field);
+ sphead->m_cur_instr_trig_field_items.link_in_list(trg_fld,
+ &trg_fld->next_trg_field);
return sphead->add_instr(sp_fld);
}
@@ -398,6 +403,15 @@ bool sp_create_assignment_lex(THD *thd, const char *pos)
{
if (thd->lex->sphead)
{
+ if (thd->lex->sphead->is_invoked())
+ /*
+ sphead->is_invoked() is true in case the assignment statement
+ is re-parsed. In this case, a new lex for re-parsing the statement
+ has been already created by sp_lex_instr::parse_expr and it should
+ be used for parsing the assignment SP instruction.
+ */
+ return false;
+
sp_lex_local *new_lex;
if (!(new_lex= new (thd->mem_root) sp_lex_set_var(thd, thd->lex)) ||
new_lex->main_select_push())
@@ -419,6 +433,7 @@ bool sp_create_assignment_lex(THD *thd, const char *pos)
@param thd - Thread context
@param no_lookahead - True if the parser has no lookahead
+ @param rhs_value_str - a string value for right hand side of assignment
@param need_set_keyword - if a SET statement "SET a=10",
or a direct assignment overwise "a:=10"
@return false if success, true otherwise.
@@ -431,6 +446,16 @@ bool sp_create_assignment_instr(THD *thd, bool no_lookahead,
if (lex->sphead)
{
+ if (lex->sphead->is_invoked())
+ /*
+ Don't create a new SP assignment instruction in case the current
+ one is re-parsed by reasoning of metadata changes. Since in that case
+ a new lex is also not instantiated (@sa sp_create_assignment_lex)
+ it is safe to just return without restoring old lex that was active
+ before calling SP instruction.
+ */
+ return false;
+
if (!lex->var_list.is_empty())
{
/*
@@ -441,7 +466,7 @@ bool sp_create_assignment_instr(THD *thd, bool no_lookahead,
- This query:
SET TRANSACTION READ ONLY, ISOLATION LEVEL SERIALIZABLE;
in translated to:
- SET tx_read_only=1, tx_isolation=ISO_SERIALIZABLE;
+ SET transaction_read_only=1, transaction_isolation=ISO_SERIALIZABLE;
but produces a single sp_create_assignment_instr() call
which includes the query fragment covering both options.
*/
@@ -1276,6 +1301,7 @@ void LEX::start(THD *thd_arg)
default_used= 0;
with_rownum= FALSE;
is_lex_started= 1;
+ without_validation= 0;
create_info.lex_start();
name= null_clex_str;
@@ -1309,6 +1335,9 @@ void LEX::start(THD *thd_arg)
wild= 0;
exchange= 0;
+ table_count_update= 0;
+
+ memset(&trg_chistics, 0, sizeof(trg_chistics));
DBUG_VOID_RETURN;
}
@@ -2952,7 +2981,7 @@ void st_select_lex_node::init_query_common()
{
options= 0;
set_linkage(UNSPECIFIED_TYPE);
- distinct= TRUE;
+ distinct= FALSE;
no_table_names_allowed= 0;
uncacheable= 0;
}
@@ -3117,6 +3146,7 @@ void st_select_lex::init_select()
is_tvc_wrapper= false;
nest_flags= 0;
orig_names_of_item_list_elems= 0;
+ item_list_usage= MARK_COLUMNS_READ;
}
/*
@@ -3374,34 +3404,6 @@ void st_select_lex_unit::exclude_level()
}
-#if 0
-/*
- Exclude subtree of current unit from tree of SELECTs
-
- SYNOPSYS
- st_select_lex_unit::exclude_tree()
-*/
-void st_select_lex_unit::exclude_tree()
-{
- for (SELECT_LEX *sl= first_select(); sl; sl= sl->next_select())
- {
- // unlink current level from global SELECTs list
- if (sl->link_prev && (*sl->link_prev= sl->link_next))
- sl->link_next->link_prev= sl->link_prev;
-
- // unlink underlay levels
- for (SELECT_LEX_UNIT *u= sl->first_inner_unit(); u; u= u->next_unit())
- {
- u->exclude_level();
- }
- }
- // exclude currect unit from list of nodes
- (*prev)= next;
- if (next)
- next->prev= prev;
-}
-#endif
-
/*
st_select_lex_node::mark_as_dependent mark all st_select_lex struct from
@@ -3622,7 +3624,7 @@ uint st_select_lex::get_cardinality_of_ref_ptrs_slice(uint order_group_num_arg)
select_n_where_fields +
order_group_num * 2 +
hidden_bit_fields +
- fields_in_window_functions;
+ fields_in_window_functions + 1;
return n;
}
@@ -3891,14 +3893,20 @@ void st_select_lex::print_limit(THD *thd,
void LEX::cleanup_lex_after_parse_error(THD *thd)
{
/*
- Delete sphead for the side effect of restoring of the original
- LEX state, thd->lex, thd->mem_root and thd->free_list if they
- were replaced when parsing stored procedure statements. We
- will never use sphead object after a parse error, so it's okay
- to delete it only for the sake of the side effect.
- TODO: make this functionality explicit in sp_head class.
- Sic: we must nullify the member of the main lex, not the
- current one that will be thrown away
+ Don't delete an instance of the class sp_head pointed by the data member
+ thd->lex->sphead since sp_head's destructor deletes every instruction
+ created during parsing the stored routine. One of deleted instruction
+ is used later in the method sp_head::execute by the following
+ construction
+ ctx->handle_sql_condition(thd, &ip, i)
+ Here the variable 'i' references to the instruction that could be deleted
+ by sp_head's destructor and it would result in server abnormal termination.
+ This use case can theoretically happen in case the current stored routine's
+ instruction causes re-compilation of a SP intruction's statement and
+ internal parse error happens during this process.
+
+ Rather, just restore the original LEX object used before parser has been
+ run.
*/
if (thd->lex->sphead)
{
@@ -3920,12 +3928,20 @@ void LEX::cleanup_lex_after_parse_error(THD *thd)
thd->lex->sphead= NULL;
}
else
- {
- sp_head::destroy(thd->lex->sphead);
- thd->lex->sphead= NULL;
- }
+ thd->lex->sphead->unwind_aux_lexes_and_restore_original_lex();
+ }
+ else if (thd->lex->sp_mem_root_ptr)
+ {
+ /*
+ A memory root pointed by the data member thd->lex->sp_mem_root_ptr
+ is allocated on compilation of a stored routine. In case the stored
+ routine name is incorrect an instance of the class sp_head hasn't been
+ assigned yet at the moment the error is reported. So, we free here
+ a memory root that allocated for the stored routine having incorrect name.
+ */
+ free_root(thd->lex->sp_mem_root_ptr, MYF(0));
+ thd->lex->sp_mem_root_ptr= nullptr;
}
-
/*
json_table must be NULL before the query.
Didn't want to overload LEX::start, it's enough to put it here.
@@ -4020,8 +4036,9 @@ LEX::LEX()
: explain(NULL), result(0), part_info(NULL), arena_for_set_stmt(0),
mem_root_for_set_stmt(0), json_table(NULL), analyze_stmt(0),
default_used(0),
- with_rownum(0), is_lex_started(0), option_type(OPT_DEFAULT),
- context_analysis_only(0), sphead(0), limit_rows_examined_cnt(ULONGLONG_MAX)
+ with_rownum(0), is_lex_started(0), without_validation(0), option_type(OPT_DEFAULT),
+ context_analysis_only(0), sphead(0), sp_mem_root_ptr(nullptr),
+ limit_rows_examined_cnt(ULONGLONG_MAX)
{
init_dynamic_array2(PSI_INSTRUMENT_ME, &plugins, sizeof(plugin_ref),
@@ -4131,10 +4148,6 @@ bool LEX::can_use_merged()
SYNOPSIS
LEX::can_not_use_merged()
- @param no_update_or_delete Set to 1 if we can't use merge with multiple-table
- updates, like when used from
- TALE_LIST::init_derived()
-
DESCRIPTION
Temporary table algorithm will be used on all SELECT levels for queries
listed here (see also LEX::can_use_merged()).
@@ -5569,12 +5582,18 @@ void st_select_lex::set_explain_type(bool on_the_fly)
using_materialization= TRUE;
}
+ if (!on_the_fly)
+ options|= SELECT_DESCRIBE;
+
+ if (pushdown_select)
+ {
+ type= pushed_select_text;
+ return;
+ }
+
if (master_unit()->thd->lex->first_select_lex() == this)
{
- if (pushdown_select)
- type= pushed_select_text;
- else
- type= is_primary ? "PRIMARY" : "SIMPLE";
+ type= is_primary ? "PRIMARY" : "SIMPLE";
}
else
{
@@ -5584,7 +5603,7 @@ void st_select_lex::set_explain_type(bool on_the_fly)
if (linkage == DERIVED_TABLE_TYPE)
{
bool is_pushed_master_unit= master_unit()->derived &&
- master_unit()->derived->pushdown_derived;
+ master_unit()->derived->pushdown_derived;
if (is_pushed_master_unit)
type= pushed_derived_text;
else if (is_uncacheable & UNCACHEABLE_DEPENDENT)
@@ -5596,13 +5615,10 @@ void st_select_lex::set_explain_type(bool on_the_fly)
type= "MATERIALIZED";
else
{
- if (is_uncacheable & UNCACHEABLE_DEPENDENT)
- type= "DEPENDENT SUBQUERY";
- else
- {
- type= is_uncacheable? "UNCACHEABLE SUBQUERY" :
- "SUBQUERY";
- }
+ if (is_uncacheable & UNCACHEABLE_DEPENDENT)
+ type= "DEPENDENT SUBQUERY";
+ else
+ type= is_uncacheable ? "UNCACHEABLE SUBQUERY" : "SUBQUERY";
}
}
else
@@ -5625,7 +5641,10 @@ void st_select_lex::set_explain_type(bool on_the_fly)
{
type= is_uncacheable ? "UNCACHEABLE UNION": "UNION";
if (this == master_unit()->fake_select_lex)
- type= unit_operation_text[master_unit()->common_op()];
+ type=
+ master_unit()->pushdown_unit
+ ? pushed_unit_operation_text[master_unit()->common_op()]
+ : unit_operation_text[master_unit()->common_op()];
/*
join below may be =NULL when this functions is called at an early
stage. It will be later called again and we will set the correct
@@ -5643,7 +5662,7 @@ void st_select_lex::set_explain_type(bool on_the_fly)
pos_in_table_list=NULL for e.g. post-join aggregation JOIN_TABs.
*/
if (!(tab->table && tab->table->pos_in_table_list))
- continue;
+ continue;
TABLE_LIST *tbl= tab->table->pos_in_table_list;
if (tbl->with && tbl->with->is_recursive &&
tbl->is_with_table_recursive_reference())
@@ -5660,9 +5679,6 @@ void st_select_lex::set_explain_type(bool on_the_fly)
}
}
}
-
- if (!on_the_fly)
- options|= SELECT_DESCRIBE;
}
@@ -6037,7 +6053,7 @@ unit_common_op st_select_lex_unit::common_op()
else
{
if (operation != op)
- operation= OP_MIX;
+ return OP_MIX;
}
}
}
@@ -6047,12 +6063,13 @@ unit_common_op st_select_lex_unit::common_op()
Save explain structures of a UNION. The only variable member is whether the
union has "Using filesort".
- There is also save_union_explain_part2() function, which is called before we read
- UNION's output.
+ There is also save_union_explain_part2() function, which is called before we
+ read UNION's output.
The reason for it is examples like this:
- SELECT col1 FROM t1 UNION SELECT col2 FROM t2 ORDER BY (select ... from t3 ...)
+ SELECT col1 FROM t1 UNION SELECT col2 FROM t2
+ ORDER BY (select ... from t3 ...)
Here, the (select ... from t3 ...) subquery must be a child of UNION's
st_select_lex. However, it is not connected as child until a very late
@@ -6084,7 +6101,10 @@ int st_select_lex_unit::save_union_explain(Explain_query *output)
for (SELECT_LEX *sl= first; sl; sl= sl->next_select())
eu->add_select(sl->select_number);
- eu->fake_select_type= unit_operation_text[eu->operation= common_op()];
+ eu->is_pushed_down_to_engine= (pushdown_unit != nullptr);
+ eu->fake_select_type= pushdown_unit ?
+ pushed_unit_operation_text[eu->operation= common_op()] :
+ unit_operation_text[eu->operation= common_op()];
eu->using_filesort= MY_TEST(global_parameters()->order_list.first);
eu->using_tmp= union_needs_tmp_table();
@@ -6563,7 +6583,8 @@ void LEX::sp_variable_declarations_init(THD *thd, int nvars)
bool LEX::sp_variable_declarations_set_default(THD *thd, int nvars,
- Item *dflt_value_item)
+ Item *dflt_value_item,
+ const LEX_CSTRING &expr_str)
{
bool has_default_clause= dflt_value_item != NULL;
if (!has_default_clause &&
@@ -6599,7 +6620,7 @@ bool LEX::sp_variable_declarations_set_default(THD *thd, int nvars,
sp_instr_set(sphead->instructions(),
spcont, &sp_rcontext_handler_local,
spvar->offset, dflt_value_item,
- this, last);
+ this, last, expr_str);
if (unlikely(is == NULL || sphead->add_instr(is)))
return true;
}
@@ -6611,7 +6632,8 @@ bool
LEX::sp_variable_declarations_copy_type_finalize(THD *thd, int nvars,
const Column_definition &ref,
Row_definition_list *fields,
- Item *default_value)
+ Item *default_value,
+ const LEX_CSTRING &expr_str)
{
for (uint i= 0 ; i < (uint) nvars; i++)
{
@@ -6625,7 +6647,7 @@ LEX::sp_variable_declarations_copy_type_finalize(THD *thd, int nvars,
spvar->field_def.field_name= spvar->name;
}
if (unlikely(sp_variable_declarations_set_default(thd, nvars,
- default_value)))
+ default_value, expr_str)))
return true;
spcont->declare_var_boundary(0);
return sphead->restore_lex(thd);
@@ -6634,20 +6656,22 @@ LEX::sp_variable_declarations_copy_type_finalize(THD *thd, int nvars,
bool LEX::sp_variable_declarations_finalize(THD *thd, int nvars,
const Column_definition *cdef,
- Item *dflt_value_item)
+ Item *dflt_value_item,
+ const LEX_CSTRING &expr_str)
{
DBUG_ASSERT(cdef);
Column_definition tmp(*cdef);
if (sphead->fill_spvar_definition(thd, &tmp))
return true;
return sp_variable_declarations_copy_type_finalize(thd, nvars, tmp, NULL,
- dflt_value_item);
+ dflt_value_item, expr_str);
}
bool LEX::sp_variable_declarations_row_finalize(THD *thd, int nvars,
Row_definition_list *row,
- Item *dflt_value_item)
+ Item *dflt_value_item,
+ const LEX_CSTRING &expr_str)
{
DBUG_ASSERT(row);
/*
@@ -6673,7 +6697,8 @@ bool LEX::sp_variable_declarations_row_finalize(THD *thd, int nvars,
return true;
}
- if (sp_variable_declarations_set_default(thd, nvars, dflt_value_item))
+ if (sp_variable_declarations_set_default(thd, nvars, dflt_value_item,
+ expr_str))
return true;
spcont->declare_var_boundary(0);
return sphead->restore_lex(thd);
@@ -6692,7 +6717,8 @@ bool LEX::sp_variable_declarations_row_finalize(THD *thd, int nvars,
bool
LEX::sp_variable_declarations_rowtype_finalize(THD *thd, int nvars,
Qualified_column_ident *ref,
- Item *def)
+ Item *def,
+ const LEX_CSTRING &expr_str)
{
uint coffp;
const sp_pcursor *pcursor= ref->table.str && ref->db.str ? NULL :
@@ -6700,7 +6726,8 @@ LEX::sp_variable_declarations_rowtype_finalize(THD *thd, int nvars,
false);
if (pcursor)
return sp_variable_declarations_cursor_rowtype_finalize(thd, nvars,
- coffp, def);
+ coffp, def,
+ expr_str);
/*
When parsing a qualified identifier chain, the parser does not know yet
if it's going to be a qualified column name (for %TYPE),
@@ -6715,7 +6742,7 @@ LEX::sp_variable_declarations_rowtype_finalize(THD *thd, int nvars,
return sp_variable_declarations_table_rowtype_finalize(thd, nvars,
ref->table,
ref->m_column,
- def);
+ def, expr_str);
}
@@ -6723,7 +6750,8 @@ bool
LEX::sp_variable_declarations_table_rowtype_finalize(THD *thd, int nvars,
const LEX_CSTRING &db,
const LEX_CSTRING &table,
- Item *def)
+ Item *def,
+ const LEX_CSTRING &expr_str)
{
Table_ident *table_ref;
if (unlikely(!(table_ref=
@@ -6736,7 +6764,7 @@ LEX::sp_variable_declarations_table_rowtype_finalize(THD *thd, int nvars,
spvar->field_def.set_table_rowtype_ref(table_ref);
sphead->fill_spvar_definition(thd, &spvar->field_def, &spvar->name);
}
- if (sp_variable_declarations_set_default(thd, nvars, def))
+ if (sp_variable_declarations_set_default(thd, nvars, def, expr_str))
return true;
// Make sure sp_rcontext is created using the invoker security context:
sphead->m_flags|= sp_head::HAS_COLUMN_TYPE_REFS;
@@ -6748,7 +6776,8 @@ LEX::sp_variable_declarations_table_rowtype_finalize(THD *thd, int nvars,
bool
LEX::sp_variable_declarations_cursor_rowtype_finalize(THD *thd, int nvars,
uint offset,
- Item *def)
+ Item *def,
+ const LEX_CSTRING &expr_str)
{
const sp_pcursor *pcursor= spcont->find_cursor(offset);
@@ -6768,7 +6797,8 @@ LEX::sp_variable_declarations_cursor_rowtype_finalize(THD *thd, int nvars,
sphead->fill_spvar_definition(thd, &spvar->field_def, &spvar->name);
}
- if (unlikely(sp_variable_declarations_set_default(thd, nvars, def)))
+ if (unlikely(sp_variable_declarations_set_default(thd, nvars, def,
+ expr_str)))
return true;
// Make sure sp_rcontext is created using the invoker security context:
sphead->m_flags|= sp_head::HAS_COLUMN_TYPE_REFS;
@@ -6786,18 +6816,22 @@ LEX::sp_variable_declarations_cursor_rowtype_finalize(THD *thd, int nvars,
bool
LEX::sp_variable_declarations_with_ref_finalize(THD *thd, int nvars,
Qualified_column_ident *ref,
- Item *def)
+ Item *def,
+ const LEX_CSTRING &expr_str)
{
return ref->db.length == 0 && ref->table.length == 0 ?
- sp_variable_declarations_vartype_finalize(thd, nvars, ref->m_column, def) :
- sp_variable_declarations_column_type_finalize(thd, nvars, ref, def);
+ sp_variable_declarations_vartype_finalize(thd, nvars, ref->m_column, def,
+ expr_str) :
+ sp_variable_declarations_column_type_finalize(thd, nvars, ref, def,
+ expr_str);
}
bool
LEX::sp_variable_declarations_column_type_finalize(THD *thd, int nvars,
- Qualified_column_ident *ref,
- Item *def)
+ const Qualified_column_ident *ref,
+ Item *def,
+ const LEX_CSTRING &expr_str)
{
for (uint i= 0 ; i < (uint) nvars; i++)
{
@@ -6806,7 +6840,7 @@ LEX::sp_variable_declarations_column_type_finalize(THD *thd, int nvars,
spvar->field_def.field_name= spvar->name;
}
sphead->m_flags|= sp_head::HAS_COLUMN_TYPE_REFS;
- if (sp_variable_declarations_set_default(thd, nvars, def))
+ if (sp_variable_declarations_set_default(thd, nvars, def, expr_str))
return true;
spcont->declare_var_boundary(0);
return sphead->restore_lex(thd);
@@ -6816,7 +6850,8 @@ LEX::sp_variable_declarations_column_type_finalize(THD *thd, int nvars,
bool
LEX::sp_variable_declarations_vartype_finalize(THD *thd, int nvars,
const LEX_CSTRING &ref,
- Item *default_value)
+ Item *default_value,
+ const LEX_CSTRING &expr_str)
{
sp_variable *t;
if (!spcont || !(t= spcont->find_variable(&ref, false)))
@@ -6830,14 +6865,16 @@ LEX::sp_variable_declarations_vartype_finalize(THD *thd, int nvars,
uint offset= t->field_def.cursor_rowtype_offset();
return sp_variable_declarations_cursor_rowtype_finalize(thd, nvars,
offset,
- default_value);
+ default_value,
+ expr_str);
}
if (t->field_def.is_column_type_ref())
{
- Qualified_column_ident *tmp= t->field_def.column_type_ref();
+ const Qualified_column_ident *tmp= t->field_def.column_type_ref();
return sp_variable_declarations_column_type_finalize(thd, nvars, tmp,
- default_value);
+ default_value,
+ expr_str);
}
if (t->field_def.is_table_rowtype_ref())
@@ -6846,7 +6883,8 @@ LEX::sp_variable_declarations_vartype_finalize(THD *thd, int nvars,
return sp_variable_declarations_table_rowtype_finalize(thd, nvars,
tmp->db,
tmp->table,
- default_value);
+ default_value,
+ expr_str);
}
// A reference to a scalar or a row variable with an explicit data type
@@ -6854,7 +6892,8 @@ LEX::sp_variable_declarations_vartype_finalize(THD *thd, int nvars,
t->field_def,
t->field_def.
row_field_definitions(),
- default_value);
+ default_value,
+ expr_str);
}
@@ -6883,7 +6922,8 @@ LEX::sp_variable_declarations_vartype_finalize(THD *thd, int nvars,
sp_variable *LEX::sp_add_for_loop_variable(THD *thd, const LEX_CSTRING *name,
- Item *value)
+ Item *value,
+ const LEX_CSTRING &expr_str)
{
sp_variable *spvar= spcont->add_variable(thd, name);
spcont->declare_var_boundary(1);
@@ -6899,7 +6939,7 @@ sp_variable *LEX::sp_add_for_loop_variable(THD *thd, const LEX_CSTRING *name,
sp_instr_set(sphead->instructions(),
spcont, &sp_rcontext_handler_local,
spvar->offset, value,
- this, true);
+ this, true, expr_str);
if (unlikely(is == NULL || sphead->add_instr(is)))
return NULL;
spcont->declare_var_boundary(0);
@@ -6997,7 +7037,8 @@ bool LEX::sp_for_loop_condition(THD *thd, const Lex_for_loop_st &loop)
Item *expr= loop.m_direction > 0 ?
(Item *) new (thd->mem_root) Item_func_le(thd, args[0], args[1]) :
(Item *) new (thd->mem_root) Item_func_ge(thd, args[0], args[1]);
- return unlikely(!expr) || unlikely(sp_while_loop_expression(thd, expr));
+ return unlikely(!expr) || unlikely(sp_while_loop_expression(thd, expr,
+ empty_clex_str));
}
@@ -7029,7 +7070,7 @@ bool LEX::sp_for_loop_cursor_condition_test(THD *thd,
Item_func_cursor_found(thd, cursor_name,
loop.m_cursor_offset))))
return true;
- if (thd->lex->sp_while_loop_expression(thd, expr))
+ if (thd->lex->sp_while_loop_expression(thd, expr, empty_clex_str))
return true;
return thd->lex->sphead->restore_lex(thd);
}
@@ -7054,13 +7095,18 @@ bool LEX::sp_for_loop_intrange_declarations(THD *thd, Lex_for_loop_st *loop,
}
if (!(loop->m_index=
bounds.m_index->sp_add_for_loop_variable(thd, index,
- bounds.m_index->get_item())))
+ bounds.m_index->get_item(),
+ bounds.m_index->get_expr_str())
+ ))
return true;
if (unlikely(!(loop->m_target_bound=
bounds.m_target_bound->
sp_add_for_loop_target_bound(thd,
bounds.
- m_target_bound->get_item()))))
+ m_target_bound->get_item(),
+ bounds.
+ m_target_bound->get_expr_str()
+ ))))
return true;
loop->m_direction= bounds.m_direction;
loop->m_implicit_cursor= 0;
@@ -7153,7 +7199,8 @@ bool LEX::sp_for_loop_increment(THD *thd, const Lex_for_loop_st &loop)
if (unlikely(!expr) ||
unlikely(sphead->set_local_variable(thd, spcont,
&sp_rcontext_handler_local,
- loop.m_index, expr, this, true)))
+ loop.m_index, expr, this, true,
+ empty_clex_str)))
return true;
return false;
}
@@ -7210,6 +7257,7 @@ bool LEX::sp_for_loop_outer_block_finalize(THD *thd,
bool LEX::sp_declare_cursor(THD *thd, const LEX_CSTRING *name,
sp_lex_cursor *cursor_stmt,
sp_pcontext *param_ctx, bool add_cpush_instr)
+
{
uint offp;
sp_instr_cpush *i;
@@ -7381,13 +7429,13 @@ bool LEX::sp_block_finalize(THD *thd, const Lex_spblock_st spblock,
}
-sp_name *LEX::make_sp_name(THD *thd, const LEX_CSTRING *name)
+sp_name *LEX::make_sp_name(THD *thd, const Lex_ident_sys_st &name)
{
sp_name *res;
LEX_CSTRING db;
- if (unlikely(check_routine_name(name)) ||
+ if (unlikely(check_routine_name(&name)) ||
unlikely(copy_db_to(&db)) ||
- unlikely((!(res= new (thd->mem_root) sp_name(&db, name, false)))))
+ unlikely((!(res= new (thd->mem_root) sp_name(&db, &name, false)))))
return NULL;
return res;
}
@@ -7406,7 +7454,8 @@ sp_name *LEX::make_sp_name(THD *thd, const LEX_CSTRING *name)
b. package 'p1' + routine 'p1.p1'
m_name='p1.p1.p1' will always mean (a).
*/
-sp_name *LEX::make_sp_name_package_routine(THD *thd, const LEX_CSTRING *name)
+sp_name *LEX::make_sp_name_package_routine(THD *thd,
+ const Lex_ident_sys_st &name)
{
sp_name *res= make_sp_name(thd, name);
if (likely(res) && unlikely(strchr(res->m_name.str, '.')))
@@ -7418,26 +7467,49 @@ sp_name *LEX::make_sp_name_package_routine(THD *thd, const LEX_CSTRING *name)
}
-sp_name *LEX::make_sp_name(THD *thd, const LEX_CSTRING *name1,
- const LEX_CSTRING *name2)
+sp_name *LEX::make_sp_name(THD *thd, const Lex_ident_sys_st &name1,
+ const Lex_ident_sys_st &name2)
{
+ DBUG_ASSERT(name1.str);
sp_name *res;
- LEX_CSTRING norm_name1;
- if (unlikely(!name1->str) ||
- unlikely(!thd->make_lex_string(&norm_name1, name1->str,
- name1->length)) ||
- unlikely(check_db_name((LEX_STRING *) &norm_name1)))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), name1->str);
- return NULL;
- }
- if (unlikely(check_routine_name(name2)) ||
- unlikely(!(res= new (thd->mem_root) sp_name(&norm_name1, name2, true))))
+ const Lex_ident_db norm_name1= thd->to_ident_db_internal_with_error(name1);
+ if (unlikely(!norm_name1.str) ||
+ unlikely(check_routine_name(&name2)) ||
+ unlikely(!(res= new (thd->mem_root) sp_name(&norm_name1, &name2, true))))
return NULL;
return res;
}
+sp_lex_local *LEX::package_routine_start(THD *thd,
+ const Sp_handler *sph,
+ const Lex_ident_sys_st &name)
+{
+ DBUG_ASSERT(sphead);
+ DBUG_ASSERT(sphead->get_package());
+ thd->m_parser_state->m_yacc.reset_before_substatement();
+
+ sp_lex_local *sublex= new (thd->mem_root) sp_lex_local(thd, this);
+ if (!unlikely(sublex))
+ return NULL;
+
+ sublex->sql_command= sph->sqlcom_create();
+ sp_name *spname= make_sp_name_package_routine(thd, name);
+ if (unlikely(!spname))
+ return NULL;
+
+ if (sublex->sql_command == SQLCOM_CREATE_FUNCTION)
+ (void) is_native_function_with_warn(thd, &name);
+
+ enum_sp_aggregate_type atype= sublex->sql_command == SQLCOM_CREATE_FUNCTION ?
+ NOT_AGGREGATE : DEFAULT_AGGREGATE;
+ if (unlikely(!sublex->make_sp_head_no_recursive(thd, spname, sph, atype)))
+ return NULL;
+ sphead->get_package()->m_current_routine= sublex;
+ return sublex;
+}
+
+
sp_head *LEX::make_sp_head(THD *thd, const sp_name *name,
const Sp_handler *sph,
enum_sp_aggregate_type agg_type)
@@ -7446,7 +7518,7 @@ sp_head *LEX::make_sp_head(THD *thd, const sp_name *name,
sp_head *sp;
/* Order is important here: new - reset - init */
- if (likely((sp= sp_head::create(package, sph, agg_type))))
+ if (likely((sp= sp_head::create(package, sph, agg_type, sp_mem_root_ptr))))
{
sp->reset_thd_mem_root(thd);
sp->init(this);
@@ -7660,7 +7732,7 @@ bool LEX::sp_leave_statement(THD *thd, const LEX_CSTRING *label_name)
my_error(ER_SP_LILABEL_MISMATCH, MYF(0), "LEAVE", label_name->str);
return true;
}
- return sp_exit_block(thd, lab, NULL);
+ return sp_exit_block(thd, lab, NULL, empty_clex_str);
}
bool LEX::sp_goto_statement(THD *thd, const LEX_CSTRING *label_name)
@@ -7728,7 +7800,8 @@ bool LEX::sp_exit_block(THD *thd, sp_label *lab)
}
-bool LEX::sp_exit_block(THD *thd, sp_label *lab, Item *when)
+bool LEX::sp_exit_block(THD *thd, sp_label *lab, Item *when,
+ const LEX_CSTRING &expr_str)
{
if (!when)
return sp_exit_block(thd, lab);
@@ -7738,7 +7811,7 @@ bool LEX::sp_exit_block(THD *thd, sp_label *lab, Item *when)
sp_instr_jump_if_not *i= new (thd->mem_root)
sp_instr_jump_if_not(sphead->instructions(),
spcont,
- when, this);
+ when, this, expr_str);
if (unlikely(i == NULL) ||
unlikely(sphead->add_instr(i)) ||
unlikely(sp_exit_block(thd, lab)))
@@ -7748,7 +7821,7 @@ bool LEX::sp_exit_block(THD *thd, sp_label *lab, Item *when)
}
-bool LEX::sp_exit_statement(THD *thd, Item *item)
+bool LEX::sp_exit_statement(THD *thd, Item *item, const LEX_CSTRING &expr_str)
{
sp_label *lab= spcont->find_label_current_loop_start();
if (unlikely(!lab))
@@ -7757,11 +7830,12 @@ bool LEX::sp_exit_statement(THD *thd, Item *item)
return true;
}
DBUG_ASSERT(lab->type == sp_label::ITERATION);
- return sp_exit_block(thd, lab, item);
+ return sp_exit_block(thd, lab, item, expr_str);
}
-bool LEX::sp_exit_statement(THD *thd, const LEX_CSTRING *label_name, Item *item)
+bool LEX::sp_exit_statement(THD *thd, const LEX_CSTRING *label_name,
+ Item *item, const LEX_CSTRING &expr_str)
{
sp_label *lab= spcont->find_label(label_name);
if (unlikely(!lab || lab->type != sp_label::ITERATION))
@@ -7769,7 +7843,7 @@ bool LEX::sp_exit_statement(THD *thd, const LEX_CSTRING *label_name, Item *item)
my_error(ER_SP_LILABEL_MISMATCH, MYF(0), "EXIT", label_name->str);
return true;
}
- return sp_exit_block(thd, lab, item);
+ return sp_exit_block(thd, lab, item, expr_str);
}
@@ -7835,7 +7909,8 @@ bool LEX::sp_continue_statement(THD *thd, const LEX_CSTRING *label_name)
}
-bool LEX::sp_continue_loop(THD *thd, sp_label *lab, Item *when)
+bool LEX::sp_continue_loop(THD *thd, sp_label *lab, Item *when,
+ const LEX_CSTRING &expr_str)
{
DBUG_ASSERT(when);
DBUG_ASSERT(sphead == thd->lex->sphead);
@@ -7843,7 +7918,7 @@ bool LEX::sp_continue_loop(THD *thd, sp_label *lab, Item *when)
sp_instr_jump_if_not *i= new (thd->mem_root)
sp_instr_jump_if_not(sphead->instructions(),
spcont,
- when, this);
+ when, this, expr_str);
if (unlikely(i == NULL) ||
unlikely(sphead->add_instr(i)) ||
unlikely(sp_continue_loop(thd, lab)))
@@ -7862,7 +7937,7 @@ bool sp_expr_lex::sp_continue_when_statement(THD *thd)
return true;
}
DBUG_ASSERT(lab->type == sp_label::ITERATION);
- return sp_continue_loop(thd, lab, get_item());
+ return sp_continue_loop(thd, lab, get_item(), m_expr_str);
}
@@ -7875,7 +7950,7 @@ bool sp_expr_lex::sp_continue_when_statement(THD *thd,
my_error(ER_SP_LILABEL_MISMATCH, MYF(0), "CONTINUE", label_name->str);
return true;
}
- return sp_continue_loop(thd, lab, get_item());
+ return sp_continue_loop(thd, lab, get_item(), m_expr_str);
}
@@ -7940,10 +8015,11 @@ void LEX::sp_pop_loop_empty_label(THD *thd)
}
-bool LEX::sp_while_loop_expression(THD *thd, Item *item)
+bool LEX::sp_while_loop_expression(THD *thd, Item *item,
+ const LEX_CSTRING &expr_str)
{
sp_instr_jump_if_not *i= new (thd->mem_root)
- sp_instr_jump_if_not(sphead->instructions(), spcont, item, this);
+ sp_instr_jump_if_not(sphead->instructions(), spcont, item, this, expr_str);
return (unlikely(i == NULL) ||
/* Jumping forward */
unlikely(sphead->push_backpatch(thd, i, spcont->last_label())) ||
@@ -8000,7 +8076,8 @@ Item *LEX::create_and_link_Item_trigger_field(THD *thd,
in trigger.
*/
if (likely(trg_fld))
- trg_table_fields.link_in_list(trg_fld, &trg_fld->next_trg_field);
+ sphead->m_cur_instr_trig_field_items.link_in_list(trg_fld,
+ &trg_fld->next_trg_field);
return trg_fld;
}
@@ -8568,12 +8645,14 @@ Item *LEX::create_item_ident_sp(THD *thd, Lex_ident_sys_st *name,
-bool LEX::set_variable(const Lex_ident_sys_st *name, Item *item)
+bool LEX::set_variable(const Lex_ident_sys_st *name, Item *item,
+ const LEX_CSTRING &expr_str)
{
sp_pcontext *ctx;
const Sp_rcontext_handler *rh;
sp_variable *spv= find_variable(name, &ctx, &rh);
- return spv ? sphead->set_local_variable(thd, ctx, rh, spv, item, this, true) :
+ return spv ? sphead->set_local_variable(thd, ctx, rh, spv, item, this, true,
+ expr_str) :
set_system_variable(option_type, name, item);
}
@@ -8584,7 +8663,7 @@ bool LEX::set_variable(const Lex_ident_sys_st *name, Item *item)
*/
bool LEX::set_variable(const Lex_ident_sys_st *name1,
const Lex_ident_sys_st *name2,
- Item *item)
+ Item *item, const LEX_CSTRING &expr_str)
{
const Sp_rcontext_handler *rh;
sp_pcontext *ctx;
@@ -8596,17 +8675,18 @@ bool LEX::set_variable(const Lex_ident_sys_st *name1,
return sphead->set_local_variable_row_field_by_name(thd, ctx,
rh,
spv, name2,
- item, this);
+ item, this,
+ expr_str);
// A field of a ROW variable
uint row_field_offset;
return !spv->find_row_field(name1, name2, &row_field_offset) ||
sphead->set_local_variable_row_field(thd, ctx, rh,
spv, row_field_offset,
- item, this);
+ item, this, expr_str);
}
if (is_trigger_new_or_old_reference(name1))
- return set_trigger_field(name1, name2, item);
+ return set_trigger_field(name1, name2, item, expr_str);
return set_system_variable(thd, option_type, name1, name2, item);
}
@@ -8663,7 +8743,7 @@ bool LEX::set_system_variable(THD *thd, enum_var_type var_type,
bool LEX::set_trigger_field(const LEX_CSTRING *name1, const LEX_CSTRING *name2,
- Item *val)
+ Item *val, const LEX_CSTRING &expr_str)
{
DBUG_ASSERT(is_trigger_new_or_old_reference(name1));
if (unlikely(name1->str[0]=='O' || name1->str[0]=='o'))
@@ -8681,7 +8761,7 @@ bool LEX::set_trigger_field(const LEX_CSTRING *name1, const LEX_CSTRING *name2,
my_error(ER_TRG_CANT_CHANGE_ROW, MYF(0), "NEW", "after ");
return true;
}
- return set_trigger_new_row(name2, val);
+ return set_trigger_new_row(name2, val, expr_str);
}
@@ -9328,7 +9408,7 @@ bool LEX::call_statement_start(THD *thd, sp_name *name)
bool LEX::call_statement_start(THD *thd, const Lex_ident_sys_st *name)
{
- sp_name *spname= make_sp_name(thd, name);
+ sp_name *spname= make_sp_name(thd, *name);
return unlikely(!spname) || call_statement_start(thd, spname);
}
@@ -9336,7 +9416,7 @@ bool LEX::call_statement_start(THD *thd, const Lex_ident_sys_st *name)
bool LEX::call_statement_start(THD *thd, const Lex_ident_sys_st *name1,
const Lex_ident_sys_st *name2)
{
- sp_name *spname= make_sp_name(thd, name1, name2);
+ sp_name *spname= make_sp_name(thd, *name1, *name2);
return unlikely(!spname) || call_statement_start(thd, spname);
}
@@ -9346,20 +9426,16 @@ bool LEX::call_statement_start(THD *thd,
const Lex_ident_sys_st *pkg,
const Lex_ident_sys_st *proc)
{
+ DBUG_ASSERT(db->str);
Database_qualified_name q_db_pkg(db, pkg);
Identifier_chain2 q_pkg_proc(*pkg, *proc);
sp_name *spname;
sql_command= SQLCOM_CALL;
- if (check_db_name(reinterpret_cast<LEX_STRING*>
- (const_cast<LEX_CSTRING*>
- (static_cast<const LEX_CSTRING*>(db)))))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db->str);
- return true;
- }
- if (check_routine_name(pkg) ||
+ const Lex_ident_db db_int= thd->to_ident_db_internal_with_error(*db);
+ if (!db_int.str ||
+ check_routine_name(pkg) ||
check_routine_name(proc))
return true;
@@ -9367,7 +9443,7 @@ bool LEX::call_statement_start(THD *thd,
LEX_CSTRING pkg_dot_proc;
if (!(pkg_dot_proc= q_pkg_proc.make_qname(thd->mem_root, false)).str ||
check_ident_length(&pkg_dot_proc) ||
- !(spname= new (thd->mem_root) sp_name(db, &pkg_dot_proc, true)))
+ !(spname= new (thd->mem_root) sp_name(&db_int, &pkg_dot_proc, true)))
return true;
sp_handler_package_function.add_used_routine(thd->lex, thd, spname);
@@ -9385,10 +9461,10 @@ sp_package *LEX::get_sp_package() const
sp_package *LEX::create_package_start(THD *thd,
- enum_sql_command command,
const Sp_handler *sph,
const sp_name *name_arg,
- DDL_options_st options)
+ DDL_options_st options,
+ const st_sp_chistics &chistics)
{
sp_package *pkg;
@@ -9397,7 +9473,7 @@ sp_package *LEX::create_package_start(THD *thd,
my_error(ER_SP_NO_RECURSIVE_CREATE, MYF(0), sph->type_str());
return NULL;
}
- if (unlikely(set_command_with_check(command, options)))
+ if (unlikely(set_command_with_check(sph->sqlcom_create(), options)))
return NULL;
if (sph->type() == SP_TYPE_PACKAGE_BODY)
{
@@ -9427,12 +9503,14 @@ sp_package *LEX::create_package_start(THD *thd,
return 0;
}
}
- if (unlikely(!(pkg= sp_package::create(this, name_arg, sph))))
+ if (unlikely(!(pkg= sp_package::create(this, name_arg, sph,
+ sp_mem_root_ptr))))
return NULL;
pkg->reset_thd_mem_root(thd);
pkg->init(this);
if (!(pkg->m_qname= pkg->make_qname(pkg->get_main_mem_root(), true)).str)
return NULL;
+ pkg->set_c_chistics(chistics);
sphead= pkg;
return pkg;
}
@@ -9725,15 +9803,11 @@ Item *LEX::make_item_func_call_generic(THD *thd,
version() (a vendor can specify any schema).
*/
- if (!name.str || check_db_name((LEX_STRING*) static_cast<LEX_CSTRING*>(&db)))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db.str);
- return NULL;
- }
- if (check_routine_name(&name))
+ const Lex_ident_db db_int= thd->to_ident_db_internal_with_error(db);
+ if (!db_int.str || check_routine_name(&name))
return NULL;
- return make_item_func_call_generic(thd, db, name, args);
+ return make_item_func_call_generic(thd, Lex_ident_sys(db_int.str, db_int.length), name, args);
}
@@ -9772,12 +9846,9 @@ Item *LEX::make_item_func_call_generic(THD *thd,
if (db.is_null() || pkg.is_null() || func.is_null())
return NULL; // EOM
- if (check_db_name((LEX_STRING*) static_cast<LEX_CSTRING*>(&db)))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db.str);
- return NULL;
- }
- if (check_routine_name(&pkg) ||
+ const Lex_ident_db db_int= thd->to_ident_db_internal_with_error(db);
+ if (!db_int.str ||
+ check_routine_name(&pkg) ||
check_routine_name(&func))
return NULL;
@@ -9785,7 +9856,7 @@ Item *LEX::make_item_func_call_generic(THD *thd,
LEX_CSTRING pkg_dot_func;
if (!(pkg_dot_func= q_pkg_func.make_qname(thd->mem_root, false)).str ||
check_ident_length(&pkg_dot_func) ||
- !(qname= new (thd->mem_root) sp_name(&db, &pkg_dot_func, true)))
+ !(qname= new (thd->mem_root) sp_name(&db_int, &pkg_dot_func, true)))
return NULL;
sp_handler_package_function.add_used_routine(thd->lex, thd, qname);
@@ -9846,18 +9917,18 @@ Item *LEX::create_item_qualified_asterisk(THD *thd,
}
-bool Lex_ident_sys_st::copy_ident_cli(THD *thd, const Lex_ident_cli_st *str)
+bool Lex_ident_sys_st::copy_ident_cli(const THD *thd, const Lex_ident_cli_st *str)
{
return thd->to_ident_sys_alloc(this, str);
}
-bool Lex_ident_sys_st::copy_keyword(THD *thd, const Lex_ident_cli_st *str)
+bool Lex_ident_sys_st::copy_keyword(const THD *thd, const Lex_ident_cli_st *str)
{
return thd->make_lex_string(static_cast<LEX_CSTRING*>(this),
str->str, str->length) == NULL;
}
-bool Lex_ident_sys_st::copy_or_convert(THD *thd,
+bool Lex_ident_sys_st::copy_or_convert(const THD *thd,
const Lex_ident_cli_st *src,
CHARSET_INFO *cs)
{
@@ -9867,7 +9938,7 @@ bool Lex_ident_sys_st::copy_or_convert(THD *thd,
}
-bool Lex_ident_sys_st::copy_sys(THD *thd, const LEX_CSTRING *src)
+bool Lex_ident_sys_st::copy_sys(const THD *thd, const LEX_CSTRING *src)
{
if (thd->check_string_for_wellformedness(src->str, src->length,
system_charset_info))
@@ -9876,7 +9947,7 @@ bool Lex_ident_sys_st::copy_sys(THD *thd, const LEX_CSTRING *src)
}
-bool Lex_ident_sys_st::convert(THD *thd,
+bool Lex_ident_sys_st::convert(const THD *thd,
const LEX_CSTRING *src, CHARSET_INFO *cs)
{
LEX_STRING tmp;
@@ -10342,6 +10413,7 @@ SELECT_LEX_UNIT *LEX::parsed_select_expr_start(SELECT_LEX *s1, SELECT_LEX *s2,
if (res == NULL)
return NULL;
res->pre_last_parse= sel1;
+ res->distinct= distinct;
push_select(res->fake_select_lex);
return res;
}
@@ -10388,7 +10460,7 @@ SELECT_LEX_UNIT *LEX::parsed_select_expr_cont(SELECT_LEX_UNIT *unit,
/**
Add primary expression as the next term in a given query expression body
- pruducing a new query expression body
+ producing a new query expression body
*/
SELECT_LEX_UNIT *
@@ -10588,7 +10660,6 @@ bool LEX::parsed_TVC_start()
insert_list= 0;
if (!(sel= alloc_select(TRUE)) || push_select(sel))
return true;
- sel->init_select();
sel->braces= FALSE; // just initialisation
return false;
}
@@ -10740,7 +10811,14 @@ bool SELECT_LEX::make_unique_derived_name(THD *thd, LEX_CSTRING *alias)
/*
Make a new sp_instr_stmt and set its m_query to a concatenation
of two strings.
+
+ @param thd Thread context
+ @param prefix the first part of a concatenated string value
+ @param suffix the second part of a concatenated string value
+
+ @return false on success, else return true
*/
+
bool LEX::new_sp_instr_stmt(THD *thd,
const LEX_CSTRING &prefix,
const LEX_CSTRING &suffix)
@@ -10748,17 +10826,35 @@ bool LEX::new_sp_instr_stmt(THD *thd,
LEX_STRING qbuff;
sp_instr_stmt *i;
- if (!(i= new (thd->mem_root) sp_instr_stmt(sphead->instructions(),
- spcont, this)))
- return true;
-
qbuff.length= prefix.length + suffix.length;
if (!(qbuff.str= (char*) alloc_root(thd->mem_root, qbuff.length + 1)))
return true;
if (prefix.length)
memcpy(qbuff.str, prefix.str, prefix.length);
strmake(qbuff.str + prefix.length, suffix.str, suffix.length);
- i->m_query= qbuff;
+
+ /*
+ Force null-termination for every SQL statement inside multi-statements
+ block in order to make the assert
+
+ DBUG_ASSERT(ls->length < UINT_MAX32 &&
+ ((ls->length == 0 && !ls->str) ||
+ ls->length == strlen(ls->str)));
+
+ inside the method
+ bool String::append(const LEX_CSTRING *ls)
+ be happy.
+
+ This method is invoked by implementations of the virtual method
+ sp_lex_instr::get_query
+ and overridden implementations of this method in derived classes.
+ */
+ qbuff.str[prefix.length + suffix.length]= 0;
+
+ if (!(i= new (thd->mem_root) sp_instr_stmt(sphead->instructions(),
+ spcont, this, qbuff)))
+ return true;
+
return sphead->add_instr(i);
}
@@ -11640,13 +11736,18 @@ bool LEX::stmt_alter_table_exchange_partition(Table_ident *table)
bool LEX::stmt_alter_table(Table_ident *table)
{
DBUG_ASSERT(sql_command == SQLCOM_ALTER_TABLE);
- first_select_lex()->db= table->db;
- if (first_select_lex()->db.str == NULL &&
- copy_db_to(&first_select_lex()->db))
+
+ if (table->db.str)
+ {
+ const Lex_ident_db db_int= thd->to_ident_db_internal_with_error(table->db);
+ if (!db_int.str)
+ return true;
+ first_select_lex()->db= db_int;
+ }
+ else if (copy_db_to(&first_select_lex()->db))
return true;
if (unlikely(check_table_name(table->table.str, table->table.length,
- false)) ||
- (table->db.str && unlikely(check_db_name((LEX_STRING*) &table->db))))
+ false)))
{
my_error(ER_WRONG_TABLE_NAME, MYF(0), table->table.str);
return true;
@@ -11711,53 +11812,68 @@ bool LEX::stmt_create_stored_function_start(const DDL_options_st &options,
}
-bool LEX::stmt_drop_function(const DDL_options_st &options,
- const Lex_ident_sys_st &db,
- const Lex_ident_sys_st &name)
-{
- if (unlikely(db.str && check_db_name((LEX_STRING*) &db)))
+/*
+ Process a drop routine statement:
+ DROP {FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY}
+ [IF NOT EXISTS ] [db.]name;
+
+ @param sph - The stored routine
+ @param options - The IF EXISTS clause
+ @param db - The database name.
+ It can be {NULL,0}, which means the routine name
+ is not qualified with the database name.
+ @param name - The routine name
+ @returns - false ok success, true on error.
+*/
+bool LEX::stmt_drop_routine(const Sp_handler *sph,
+ const DDL_options_st &options,
+ const Lex_ident_sys_st &db,
+ const Lex_ident_sys_st &name)
+{
+ DBUG_ASSERT(name.str);
+ if (unlikely(sphead))
{
- my_error(ER_WRONG_DB_NAME, MYF(0), db.str);
+ my_error(ER_SP_NO_DROP_SP, MYF(0), sph->type_lex_cstring().str);
return true;
}
- if (unlikely(sphead))
- {
- my_error(ER_SP_NO_DROP_SP, MYF(0), "FUNCTION");
+ if (check_routine_name(&name))
return true;
+ enum_sql_command sqlcom= sph->sqlcom_drop();
+ LEX_CSTRING db_int= {0, 0};
+ if (db.str)
+ {
+ // An explicit database name is given
+ if (!(db_int= thd->to_ident_db_internal_with_error(db)).str)
+ return true;
}
- set_command(SQLCOM_DROP_FUNCTION, options);
- spname= new (thd->mem_root) sp_name(&db, &name, true);
- return spname == NULL;
-}
-
-
-bool LEX::stmt_drop_function(const DDL_options_st &options,
- const Lex_ident_sys_st &name)
-{
- LEX_CSTRING db= {0, 0};
- if (unlikely(sphead))
+ else if (thd->db.str || sqlcom != SQLCOM_DROP_FUNCTION)
{
- my_error(ER_SP_NO_DROP_SP, MYF(0), "FUNCTION");
- return true;
+ /*
+ There is no an explicit database name in the DROP statement.
+ Two cases are possible:
+ a. The current database is not NULL.
+ copy_db_to() copies the current database to db_int.
+ b. The current database is NULL and the command is either of these:
+ - DROP PACKAGE
+ - DROP PACKAGE BODY
+ - DROP PROCEDURE
+ copy_db_to() raises ER_NO_DB_ERROR.
+ */
+ if (copy_db_to(&db_int))
+ return true;
}
- if (thd->db.str && unlikely(copy_db_to(&db)))
- return true;
- set_command(SQLCOM_DROP_FUNCTION, options);
- spname= new (thd->mem_root) sp_name(&db, &name, false);
- return spname == NULL;
-}
-
-
-bool LEX::stmt_drop_procedure(const DDL_options_st &options,
- sp_name *name)
-{
- if (unlikely(sphead))
+ else
{
- my_error(ER_SP_NO_DROP_SP, MYF(0), "PROCEDURE");
- return true;
+ /*
+ This is a "DROP FUNCTION name" statement.
+ There is no an explicit database name given.
+ The current database is not set.
+ It can still be a valid DROP FUNCTION - for an UDF.
+ Keep db_int=={NULL,0}.
+ */
}
- set_command(SQLCOM_DROP_PROCEDURE, options);
- spname= name;
+ set_command(sqlcom, options);
+ spname= new (thd->mem_root) sp_name(&db_int, &name, db.str != NULL);
return false;
}
@@ -11894,7 +12010,7 @@ bool sp_expr_lex::sp_repeat_loop_finalize(THD *thd)
uint ip= sphead->instructions();
sp_label *lab= spcont->last_label(); /* Jumping back */
sp_instr_jump_if_not *i= new (thd->mem_root)
- sp_instr_jump_if_not(ip, spcont, get_item(), lab->ip, this);
+ sp_instr_jump_if_not(ip, spcont, get_item(), lab->ip, this, m_expr_str);
if (unlikely(i == NULL) ||
unlikely(sphead->add_instr(i)))
return true;
@@ -11908,7 +12024,8 @@ bool sp_expr_lex::sp_if_expr(THD *thd)
{
uint ip= sphead->instructions();
sp_instr_jump_if_not *i= new (thd->mem_root)
- sp_instr_jump_if_not(ip, spcont, get_item(), this);
+ sp_instr_jump_if_not(ip, spcont, get_item(), this,
+ m_expr_str);
return
(unlikely(i == NULL) ||
unlikely(sphead->push_backpatch(thd, i,
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index f785d286..1740dbfa 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -37,6 +37,8 @@
#include "json_table.h" // Json_table_column
#include "sql_schema.h"
#include "table.h"
+#include "sql_class.h" // enum enum_column_usage
+#include "select_handler.h"
/* Used for flags of nesting constructs */
#define SELECT_NESTING_MAP_SIZE 64
@@ -143,19 +145,15 @@ public:
};
-struct Lex_ident_sys_st: public LEX_CSTRING
+struct Lex_ident_sys_st: public LEX_CSTRING, Sql_alloc
{
public:
- static void *operator new(size_t size, MEM_ROOT *mem_root) throw ()
- { return alloc_root(mem_root, size); }
- static void operator delete(void *ptr,size_t size) { TRASH_FREE(ptr, size); }
- static void operator delete(void *ptr, MEM_ROOT *mem_root) {}
-
- bool copy_ident_cli(THD *thd, const Lex_ident_cli_st *str);
- bool copy_keyword(THD *thd, const Lex_ident_cli_st *str);
- bool copy_sys(THD *thd, const LEX_CSTRING *str);
- bool convert(THD *thd, const LEX_CSTRING *str, CHARSET_INFO *cs);
- bool copy_or_convert(THD *thd, const Lex_ident_cli_st *str, CHARSET_INFO *cs);
+ bool copy_ident_cli(const THD *thd, const Lex_ident_cli_st *str);
+ bool copy_keyword(const THD *thd, const Lex_ident_cli_st *str);
+ bool copy_sys(const THD *thd, const LEX_CSTRING *str);
+ bool convert(const THD *thd, const LEX_CSTRING *str, CHARSET_INFO *cs);
+ bool copy_or_convert(const THD *thd, const Lex_ident_cli_st *str,
+ CHARSET_INFO *cs);
bool is_null() const { return str == NULL; }
bool to_size_number(ulonglong *to) const;
void set_valid_utf8(const LEX_CSTRING *name)
@@ -170,7 +168,7 @@ public:
class Lex_ident_sys: public Lex_ident_sys_st
{
public:
- Lex_ident_sys(THD *thd, const Lex_ident_cli_st *str)
+ Lex_ident_sys(const THD *thd, const Lex_ident_cli_st *str)
{
if (copy_ident_cli(thd, str))
((LEX_CSTRING &) *this)= null_clex_str;
@@ -184,7 +182,7 @@ public:
LEX_CSTRING tmp= {name, length};
set_valid_utf8(&tmp);
}
- Lex_ident_sys(THD *thd, const LEX_CSTRING *str)
+ Lex_ident_sys(const THD *thd, const LEX_CSTRING *str)
{
set_valid_utf8(str);
}
@@ -410,15 +408,6 @@ enum enum_sp_data_access
SP_MODIFIES_SQL_DATA
};
-const LEX_CSTRING sp_data_access_name[]=
-{
- { STRING_WITH_LEN("") },
- { STRING_WITH_LEN("CONTAINS SQL") },
- { STRING_WITH_LEN("NO SQL") },
- { STRING_WITH_LEN("READS SQL DATA") },
- { STRING_WITH_LEN("MODIFIES SQL DATA") }
-};
-
#define DERIVED_SUBQUERY 1
#define DERIVED_VIEW 2
#define DERIVED_WITH 4
@@ -509,6 +498,7 @@ struct LEX_MASTER_INFO
float heartbeat_period;
int sql_delay;
bool is_demotion_opt;
+ bool is_until_before_gtids;
/*
Enum is used for making it possible to detect if the user
changed variable or if it should be left at old value
@@ -552,6 +542,7 @@ struct LEX_MASTER_INFO
use_gtid_opt= LEX_GTID_UNCHANGED;
sql_delay= -1;
is_demotion_opt= 0;
+ is_until_before_gtids= false;
}
};
@@ -880,10 +871,12 @@ public:
st_select_lex_unit()
: union_result(NULL), table(NULL), result(NULL), fake_select_lex(NULL),
last_procedure(NULL),cleaned(false), bag_set_op_optimized(false),
- have_except_all_or_intersect_all(false)
+ have_except_all_or_intersect_all(false), pushdown_unit(NULL)
{
}
+ void set_query_result(select_result *res) { result= res; }
+
TABLE *table; /* temporary table using for appending UNION results */
select_result *result;
st_select_lex *pre_last_parse;
@@ -943,6 +936,10 @@ public:
bool bag_set_op_optimized:1;
bool optimize_started:1;
bool have_except_all_or_intersect_all:1;
+
+ /* The object used to organize execution of the UNIT by a foreign engine */
+ select_handler *pushdown_unit;
+
/**
TRUE if the unit contained TVC at the top level that has been wrapped
into SELECT:
@@ -1016,6 +1013,7 @@ public:
bool add_fake_select_lex(THD *thd);
void init_prepare_fake_select_lex(THD *thd, bool first_execution);
+ void set_prepared() { prepared = true; }
inline bool is_prepared() { return prepared; }
bool change_result(select_result_interceptor *result,
select_result_interceptor *old_result);
@@ -1054,7 +1052,11 @@ public:
friend class st_select_lex;
private:
+ bool exec_inner();
bool is_derived_eliminated() const;
+ bool set_direct_union_result(select_result *sel_result);
+ bool prepare_pushdown(bool use_direct_union_result,
+ select_result *sel_result);
};
typedef class st_select_lex_unit SELECT_LEX_UNIT;
@@ -1123,6 +1125,7 @@ public:
Item *prep_having;/* saved HAVING clause for prepared statement processing */
Item *cond_pushed_into_where; /* condition pushed into WHERE */
Item *cond_pushed_into_having; /* condition pushed into HAVING */
+ Item *where_cond_after_prepare;
/*
nest_levels are local to the query or VIEW,
@@ -1149,8 +1152,6 @@ public:
TABLE_LIST *embedding; /* table embedding to the above list */
table_value_constr *tvc;
- /* The interface employed to execute the select query by a foreign engine */
- select_handler *select_h;
/* The object used to organize execution of the query by a foreign engine */
select_handler *pushdown_select;
List<TABLE_LIST> *join_list; /* list for the currently parsed join */
@@ -1238,6 +1239,7 @@ public:
List<List_item> save_many_values;
List<Item> *save_insert_list;
+ enum_column_usage item_list_usage;
bool is_item_list_lookup:1;
/*
Needed to correctly generate 'PRIMARY' or 'SIMPLE' for select_type column
@@ -1436,7 +1438,7 @@ public:
bool add_order_to_list(THD *thd, Item *item, bool asc);
bool add_gorder_to_list(THD *thd, Item *item, bool asc);
TABLE_LIST* add_table_to_list(THD *thd, Table_ident *table,
- LEX_CSTRING *alias,
+ const LEX_CSTRING *alias,
ulong table_options,
thr_lock_type flags= TL_UNLOCK,
enum_mdl_type mdl_type= MDL_SHARED_READ,
@@ -1632,8 +1634,6 @@ public:
uchar *arg);
Item *pushdown_from_having_into_where(THD *thd, Item *having);
- select_handler *find_select_handler(THD *thd);
-
bool is_set_op()
{
return linkage == UNION_TYPE ||
@@ -1677,6 +1677,7 @@ public:
void lex_start(LEX *plex);
bool is_unit_nest() { return (nest_flags & UNIT_NEST_FL); }
void mark_as_unit_nest() { nest_flags= UNIT_NEST_FL; }
+ bool is_sj_conversion_prohibited(THD *thd);
};
typedef class st_select_lex SELECT_LEX;
@@ -1785,12 +1786,31 @@ public:
Sroutine_hash_entry **sroutines_list_own_last;
uint sroutines_list_own_elements;
+ /**
+ Locking state of tables in this particular statement.
+
+ If we under LOCK TABLES or in prelocked mode we consider tables
+ for the statement to be "locked" if there was a call to lock_tables()
+ (which called handler::start_stmt()) for tables of this statement
+ and there was no matching close_thread_tables() call.
+
+ As result this state may differ significantly from one represented
+ by Open_tables_state::lock/locked_tables_mode more, which are always
+ "on" under LOCK TABLES or in prelocked mode.
+ */
+ enum enum_lock_tables_state { LTS_NOT_LOCKED = 0, LTS_LOCKED };
+ enum_lock_tables_state lock_tables_state;
+ bool is_query_tables_locked() const
+ {
+ return (lock_tables_state == LTS_LOCKED);
+ }
+
/*
These constructor and destructor serve for creation/destruction
of Query_tables_list instances which are used as backup storage.
*/
- Query_tables_list() = default;
- ~Query_tables_list() = default;
+ Query_tables_list() : lock_tables_state(LTS_NOT_LOCKED) {}
+ ~Query_tables_list() {}
/* Initializes (or resets) Query_tables_list object for "real" use. */
void reset_query_tables_list(bool init);
@@ -2353,6 +2373,20 @@ public:
bool uses_stored_routines() const
{ return sroutines_list.elements != 0; }
+ void set_date_funcs_used_flag()
+ {
+ date_funcs_used_flag= true;
+ }
+
+ /*
+ Returns TRUE if date functions such as YEAR(), MONTH() or DATE()
+ are used in this LEX
+ */
+ bool are_date_funcs_used() const
+ {
+ return date_funcs_used_flag;
+ }
+
private:
/**
@@ -2393,6 +2427,12 @@ private:
be accessed while executing a statement.
*/
uint32 stmt_accessed_table_flag;
+
+ /*
+ Flag indicating that date functions such as YEAR(), MONTH() or DATE() are
+ used in this LEX
+ */
+ bool date_funcs_used_flag= false;
};
@@ -3187,6 +3227,9 @@ public:
};
+class sp_lex_local;
+class sp_lex_cursor;
+
struct LEX: public Query_tables_list
{
SELECT_LEX_UNIT unit; /* most upper unit */
@@ -3292,7 +3335,8 @@ private:
class sp_label **splabel);
bool sp_change_context(THD *thd, const sp_pcontext *ctx, bool exclusive);
bool sp_exit_block(THD *thd, sp_label *lab);
- bool sp_exit_block(THD *thd, sp_label *lab, Item *when);
+ bool sp_exit_block(THD *thd, sp_label *lab, Item *when,
+ const LEX_CSTRING &expr_str);
bool sp_continue_loop(THD *thd, sp_label *lab);
@@ -3307,7 +3351,8 @@ private:
bool check_expr_allows_fields_or_error(THD *thd, const char *name) const;
protected:
- bool sp_continue_loop(THD *thd, sp_label *lab, Item *when);
+ bool sp_continue_loop(THD *thd, sp_label *lab, Item *when,
+ const LEX_CSTRING &expr_str);
public:
void parse_error(uint err_number= ER_SYNTAX_ERROR);
@@ -3422,6 +3467,8 @@ public:
bool default_used:1; /* using default() function */
bool with_rownum:1; /* Using rownum() function */
bool is_lex_started:1; /* If lex_start() did run. For debugging. */
+ bool without_validation:1; /* exchange or convert partition WITHOUT VALIDATION */
+
/*
This variable is used in post-parse stage to declare that sum-functions,
or functions which have sense only if GROUP BY is present, are allowed.
@@ -3500,6 +3547,8 @@ public:
TABLE_LIST *create_last_non_select_table;
sp_head *sphead;
sp_name *spname;
+ MEM_ROOT sp_mem_root, *sp_mem_root_ptr;
+
sp_pcontext *spcont;
st_sp_chistics sp_chistics;
@@ -3508,14 +3557,6 @@ public:
/* Characterstics of trigger being created */
st_trg_chistics trg_chistics;
- /*
- List of all items (Item_trigger_field objects) representing fields in
- old/new version of row in trigger. We use this list for checking whenever
- all such fields are valid at trigger creation time and for binding these
- fields to TABLE object at table open (altough for latter pointer to table
- being opened is probably enough).
- */
- SQL_I_List<Item_trigger_field> trg_table_fields;
/*
stmt_definition_begin is intended to point to the next word after
@@ -3868,9 +3909,10 @@ public:
bool set_names(const char *pos,
const Lex_exact_charset_opt_extended_collate &cs,
bool no_lookahead);
- bool set_trigger_new_row(const LEX_CSTRING *name, Item *val);
+ bool set_trigger_new_row(const LEX_CSTRING *name, Item *val,
+ const LEX_CSTRING &expr_str);
bool set_trigger_field(const LEX_CSTRING *name1, const LEX_CSTRING *name2,
- Item *val);
+ Item *val, const LEX_CSTRING &expr_str);
bool set_system_variable(enum_var_type var_type, sys_var *var,
const Lex_ident_sys_st *base_name, Item *val);
bool set_system_variable(enum_var_type var_type,
@@ -3884,10 +3926,14 @@ public:
Item *val);
bool set_user_variable(THD *thd, const LEX_CSTRING *name, Item *val);
void set_stmt_init();
- sp_name *make_sp_name(THD *thd, const LEX_CSTRING *name);
- sp_name *make_sp_name(THD *thd, const LEX_CSTRING *name1,
- const LEX_CSTRING *name2);
- sp_name *make_sp_name_package_routine(THD *thd, const LEX_CSTRING *name);
+ sp_name *make_sp_name(THD *thd, const Lex_ident_sys_st &name);
+ sp_name *make_sp_name(THD *thd, const Lex_ident_sys_st &name1,
+ const Lex_ident_sys_st &name2);
+ sp_name *make_sp_name_package_routine(THD *thd,
+ const Lex_ident_sys_st &name);
+ sp_lex_local *package_routine_start(THD *thd,
+ const Sp_handler *sph,
+ const Lex_ident_sys_st &name);
sp_head *make_sp_head(THD *thd, const sp_name *name, const Sp_handler *sph,
enum_sp_aggregate_type agg_type);
sp_head *make_sp_head_no_recursive(THD *thd, const sp_name *name,
@@ -3900,10 +3946,10 @@ public:
bool sp_body_finalize_procedure(THD *);
bool sp_body_finalize_procedure_standalone(THD *, const sp_name *end_name);
sp_package *create_package_start(THD *thd,
- enum_sql_command command,
const Sp_handler *sph,
const sp_name *name,
- DDL_options_st options);
+ DDL_options_st options,
+ const st_sp_chistics &chistics);
bool create_package_finalize(THD *thd,
const sp_name *name,
const sp_name *name2,
@@ -3925,40 +3971,52 @@ public:
sp_pcontext *not_used_ctx;
return find_variable(name, &not_used_ctx, rh);
}
- bool set_variable(const Lex_ident_sys_st *name, Item *item);
+ bool set_variable(const Lex_ident_sys_st *name, Item *item,
+ const LEX_CSTRING &expr_str);
bool set_variable(const Lex_ident_sys_st *name1,
- const Lex_ident_sys_st *name2, Item *item);
+ const Lex_ident_sys_st *name2, Item *item,
+ const LEX_CSTRING &expr_str);
void sp_variable_declarations_init(THD *thd, int nvars);
bool sp_variable_declarations_finalize(THD *thd, int nvars,
const Column_definition *cdef,
- Item *def);
- bool sp_variable_declarations_set_default(THD *thd, int nvars, Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
+ bool sp_variable_declarations_set_default(THD *thd, int nvars, Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_row_finalize(THD *thd, int nvars,
Row_definition_list *row,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_with_ref_finalize(THD *thd, int nvars,
Qualified_column_ident *col,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_rowtype_finalize(THD *thd, int nvars,
Qualified_column_ident *,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_cursor_rowtype_finalize(THD *thd, int nvars,
uint offset,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_table_rowtype_finalize(THD *thd, int nvars,
const LEX_CSTRING &db,
const LEX_CSTRING &table,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_column_type_finalize(THD *thd, int nvars,
- Qualified_column_ident *ref,
- Item *def);
+ const Qualified_column_ident *ref,
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_vartype_finalize(THD *thd, int nvars,
const LEX_CSTRING &name,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
bool sp_variable_declarations_copy_type_finalize(THD *thd, int nvars,
const Column_definition &ref,
Row_definition_list *fields,
- Item *def);
+ Item *def,
+ const LEX_CSTRING &expr_str);
LEX_USER *current_user_for_set_password(THD *thd);
bool sp_create_set_password_instr(THD *thd,
@@ -4280,8 +4338,9 @@ public:
uint executable_section_ip,
uint exception_count);
bool sp_block_with_exceptions_add_empty(THD *thd);
- bool sp_exit_statement(THD *thd, Item *when);
- bool sp_exit_statement(THD *thd, const LEX_CSTRING *label_name, Item *item);
+ bool sp_exit_statement(THD *thd, Item *when, const LEX_CSTRING &expr_str);
+ bool sp_exit_statement(THD *thd, const LEX_CSTRING *label_name, Item *item,
+ const LEX_CSTRING &expr_str);
bool sp_leave_statement(THD *thd, const LEX_CSTRING *label_name);
bool sp_goto_statement(THD *thd, const LEX_CSTRING *label_name);
@@ -4294,7 +4353,8 @@ public:
bool sp_push_loop_empty_label(THD *thd);
bool sp_pop_loop_label(THD *thd, const LEX_CSTRING *label_name);
void sp_pop_loop_empty_label(THD *thd);
- bool sp_while_loop_expression(THD *thd, Item *expr);
+ bool sp_while_loop_expression(THD *thd, Item *expr,
+ const LEX_CSTRING &expr_str);
bool sp_while_loop_finalize(THD *thd);
bool sp_if_after_statements(THD *thd);
bool sp_push_goto_label(THD *thd, const LEX_CSTRING *label_name);
@@ -4304,11 +4364,13 @@ public:
/* Integer range FOR LOOP methods */
sp_variable *sp_add_for_loop_variable(THD *thd, const LEX_CSTRING *name,
- Item *value);
- sp_variable *sp_add_for_loop_target_bound(THD *thd, Item *value)
+ Item *value,
+ const LEX_CSTRING &expr_str);
+ sp_variable *sp_add_for_loop_target_bound(THD *thd, Item *value,
+ const LEX_CSTRING &expr_str)
{
LEX_CSTRING name= { STRING_WITH_LEN("[target_bound]") };
- return sp_add_for_loop_variable(thd, &name, value);
+ return sp_add_for_loop_variable(thd, &name, value, expr_str);
}
bool sp_for_loop_intrange_declarations(THD *thd, Lex_for_loop_st *loop,
const LEX_CSTRING *index,
@@ -4473,19 +4535,23 @@ public:
bool add_alter_list(LEX_CSTRING par_name, Virtual_column_info *expr,
bool par_exists);
bool add_alter_list(LEX_CSTRING name, LEX_CSTRING new_name, bool exists);
- bool add_alter_list_item_convert_to_charset(CHARSET_INFO *cs)
+ bool add_alter_list_item_convert_to_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ CHARSET_INFO *cs)
{
- if (create_info.add_table_option_convert_charset(cs))
+ if (create_info.add_table_option_convert_charset(used, map, cs))
return true;
alter_info.flags|= ALTER_CONVERT_TO;
return false;
}
bool
- add_alter_list_item_convert_to_charset(CHARSET_INFO *cs,
+ add_alter_list_item_convert_to_charset(Sql_used *used,
+ const Charset_collation_map_st &map,
+ CHARSET_INFO *cs,
const Lex_extended_collation_st &cl)
{
- if (create_info.add_table_option_convert_charset(cs) ||
- create_info.add_table_option_convert_collation(cl))
+ if (create_info.add_table_option_convert_charset(used, map, cs) ||
+ create_info.add_table_option_convert_collation(used, map, cl))
return true;
alter_info.flags|= ALTER_CONVERT_TO;
return false;
@@ -4843,15 +4909,10 @@ public:
Item_result return_type,
const LEX_CSTRING &soname);
- bool stmt_drop_function(const DDL_options_st &options,
- const Lex_ident_sys_st &db,
- const Lex_ident_sys_st &name);
-
- bool stmt_drop_function(const DDL_options_st &options,
- const Lex_ident_sys_st &name);
-
- bool stmt_drop_procedure(const DDL_options_st &options,
- sp_name *name);
+ bool stmt_drop_routine(const Sp_handler *sph,
+ const DDL_options_st &options,
+ const Lex_ident_sys_st &db,
+ const Lex_ident_sys_st &name);
bool stmt_alter_function_start(sp_name *name);
bool stmt_alter_procedure_start(sp_name *name);
@@ -4907,6 +4968,20 @@ public:
builtin_select.options |= SELECT_DESCRIBE;
}
+
+ /**
+ Check if the current statement uses meta-data (uses a table or a stored
+ routine).
+ */
+ bool is_metadata_used() const
+ {
+ return query_tables != nullptr || sroutines.records > 0;
+ }
+
+ virtual sp_lex_cursor* get_lex_for_cursor()
+ {
+ return nullptr;
+ }
};
@@ -5107,7 +5182,6 @@ public:
spcont= oldlex->spcont;
/* Keep the parent trigger stuff too */
trg_chistics= oldlex->trg_chistics;
- trg_table_fields.empty();
sp_lex_in_use= false;
}
};
@@ -5132,10 +5206,12 @@ public:
class sp_expr_lex: public sp_lex_local
{
Item *m_item; // The expression
+ LEX_CSTRING m_expr_str;
public:
sp_expr_lex(THD *thd, LEX *oldlex)
:sp_lex_local(thd, oldlex),
- m_item(NULL)
+ m_item(nullptr),
+ m_expr_str(empty_clex_str)
{ }
void set_item(Item *item)
{
@@ -5151,10 +5227,18 @@ public:
int case_stmt_action_when(bool simple);
bool sp_while_loop_expression(THD *thd)
{
- return LEX::sp_while_loop_expression(thd, get_item());
+ return LEX::sp_while_loop_expression(thd, get_item(), m_expr_str);
}
bool sp_repeat_loop_finalize(THD *thd);
bool sp_if_expr(THD *thd);
+ void set_expr_str(const LEX_CSTRING &expr_str)
+ {
+ m_expr_str= expr_str;
+ }
+ const LEX_CSTRING &get_expr_str() const
+ {
+ return m_expr_str;
+ }
};
@@ -5185,11 +5269,13 @@ class sp_assignment_lex: public sp_lex_local
{
Item *m_item; // The expression
Item *m_free_list; // The associated free_list (sub-expressions)
+ LEX_CSTRING m_expr_str;
public:
sp_assignment_lex(THD *thd, LEX *oldlex)
:sp_lex_local(thd, oldlex),
m_item(NULL),
- m_free_list(NULL)
+ m_free_list(nullptr),
+ m_expr_str(empty_clex_str)
{ }
void set_item_and_free_list(Item *item, Item *free_list)
{
@@ -5204,6 +5290,14 @@ public:
{
return m_free_list;
}
+ void set_expr_str(const LEX_CSTRING &expr_str)
+ {
+ m_expr_str= expr_str;
+ }
+ const LEX_CSTRING &get_expr_str() const
+ {
+ return m_expr_str;
+ }
};
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 7a82e0ce..84b253ba 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -862,8 +862,6 @@ err:
#ifndef EMBEDDED_LIBRARY
-
-/* Not a very useful function; just to avoid duplication of code */
static bool write_execute_load_query_log_event(THD *thd, const sql_exchange* ex,
const char* db_arg, /* table's database */
const char* table_name_arg,
@@ -874,27 +872,34 @@ static bool write_execute_load_query_log_event(THD *thd, const sql_exchange* ex,
int errcode)
{
char *load_data_query;
- my_off_t fname_start,
- fname_end;
- List<Item> fv;
+ my_off_t fname_start, fname_end;
Item *item, *val;
int n;
- const char *tdb= (thd->db.str != NULL ? thd->db.str : db_arg);
- const char *qualify_db= NULL;
- char command_buffer[1024];
- String query_str(command_buffer, sizeof(command_buffer),
- system_charset_info);
+ StringBuffer<1024> query_str(system_charset_info);
- Load_log_event lle(thd, ex, tdb, table_name_arg, fv, is_concurrent,
- duplicates, ignore, transactional_table);
+ query_str.append(STRING_WITH_LEN("LOAD DATA "));
+
+ if (is_concurrent)
+ query_str.append(STRING_WITH_LEN("CONCURRENT "));
+
+ fname_start= query_str.length();
- /*
- force in a LOCAL if there was one in the original.
- */
if (thd->lex->local_file)
- lle.set_fname_outside_temp_buf(ex->file_name, strlen(ex->file_name));
+ query_str.append(STRING_WITH_LEN("LOCAL "));
+ query_str.append(STRING_WITH_LEN("INFILE '"));
+ query_str.append_for_single_quote(ex->file_name, strlen(ex->file_name));
+ query_str.append(STRING_WITH_LEN("' "));
- query_str.length(0);
+ if (duplicates == DUP_REPLACE)
+ query_str.append(STRING_WITH_LEN("REPLACE "));
+ else if (ignore)
+ query_str.append(STRING_WITH_LEN("IGNORE "));
+
+ query_str.append(STRING_WITH_LEN("INTO"));
+
+ fname_end= query_str.length();
+
+ query_str.append(STRING_WITH_LEN(" TABLE "));
if (!thd->db.str || strcmp(db_arg, thd->db.str))
{
/*
@@ -902,10 +907,47 @@ static bool write_execute_load_query_log_event(THD *thd, const sql_exchange* ex,
prefix table name with database name so that it
becomes a FQ name.
*/
- qualify_db= db_arg;
+ append_identifier(thd, &query_str, db_arg, strlen(db_arg));
+ query_str.append(STRING_WITH_LEN("."));
+ }
+ append_identifier(thd, &query_str, table_name_arg, strlen(table_name_arg));
+
+ if (ex->cs)
+ {
+ query_str.append(STRING_WITH_LEN(" CHARACTER SET "));
+ query_str.append(ex->cs->cs_name);
+ }
+
+ /* We have to create all optional fields as the default is not empty */
+ query_str.append(STRING_WITH_LEN(" FIELDS TERMINATED BY '"));
+ query_str.append_for_single_quote(ex->field_term);
+ query_str.append(STRING_WITH_LEN("'"));
+ if (ex->opt_enclosed)
+ query_str.append(STRING_WITH_LEN(" OPTIONALLY"));
+ query_str.append(STRING_WITH_LEN(" ENCLOSED BY '"));
+ query_str.append_for_single_quote(ex->enclosed);
+ query_str.append(STRING_WITH_LEN("'"));
+
+ query_str.append(STRING_WITH_LEN(" ESCAPED BY '"));
+ query_str.append_for_single_quote(ex->escaped);
+ query_str.append(STRING_WITH_LEN("'"));
+
+ query_str.append(STRING_WITH_LEN(" LINES TERMINATED BY '"));
+ query_str.append_for_single_quote(ex->line_term);
+ query_str.append(STRING_WITH_LEN("'"));
+ if (ex->line_start->length())
+ {
+ query_str.append(STRING_WITH_LEN(" STARTING BY '"));
+ query_str.append_for_single_quote(ex->line_start);
+ query_str.append(STRING_WITH_LEN("'"));
+ }
+
+ if (ex->skip_lines)
+ {
+ query_str.append(STRING_WITH_LEN(" IGNORE "));
+ query_str.append_ulonglong(ex->skip_lines);
+ query_str.append(STRING_WITH_LEN(" LINES "));
}
- lle.print_query(thd, FALSE, (const char*) ex->cs ? ex->cs->cs_name.str : NULL,
- &query_str, &fname_start, &fname_end, qualify_db);
/*
prepare fields-list and SET if needed; print_query won't do that for us.
diff --git a/sql/sql_locale.cc b/sql/sql_locale.cc
index 713ee1fe..bf32e998 100644
--- a/sql/sql_locale.cc
+++ b/sql/sql_locale.cc
@@ -31,7 +31,7 @@ enum err_msgs_index
{
en_US= 0, zh_CN, cs_CZ, da_DK, nl_NL, et_EE, fr_FR, de_DE, el_GR, hu_HU, it_IT,
ja_JP, ko_KR, no_NO, nn_NO, pl_PL, pt_PT, ro_RO, ru_RU, sr_RS, sk_SK,
- es_ES, sv_SE, uk_UA, hi_IN, ka_GE
+ es_ES, sv_SE, uk_UA, hi_IN, ka_GE, sw_KE
} ERR_MSGS_INDEX;
@@ -63,6 +63,7 @@ MY_LOCALE_ERRMSGS global_errmsgs[]=
{"ukrainian", NULL},
{"hindi", NULL},
{"georgian", NULL},
+ {"swahili", NULL},
{NULL, NULL}
};
@@ -1740,23 +1741,6 @@ static TYPELIB my_locale_typelib_day_names_sr_RS =
{ array_elements(my_locale_day_names_sr_RS)-1, "", my_locale_day_names_sr_RS, NULL };
static TYPELIB my_locale_typelib_ab_day_names_sr_RS =
{ array_elements(my_locale_ab_day_names_sr_RS)-1, "", my_locale_ab_day_names_sr_RS, NULL };
-MY_LOCALE my_locale_sr_YU /* Deprecated, use sr_RS instead */
-(
- 48,
- "sr_YU",
- "Serbian - Yugoslavia",
- FALSE,
- &my_locale_typelib_month_names_sr_RS,
- &my_locale_typelib_ab_month_names_sr_RS,
- &my_locale_typelib_day_names_sr_RS,
- &my_locale_typelib_ab_day_names_sr_RS,
- 9,
- 10,
- '.', /* decimal point sr_RS */
- '\0', /* thousands_sep sr_RS */
- "\x80", /* grouping sr_RS */
- &global_errmsgs[sr_RS]
-);
MY_LOCALE my_locale_sr_RS
(
@@ -3377,6 +3361,42 @@ MY_LOCALE my_locale_ka_GE
);
/***** LOCALE END ka_GE *****/
+/***** LOCALE BEGIN sw_KE: Swahili - Kenya *****/
+static const char *my_locale_month_names_sw_KE[13] =
+ {"Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba", NullS };
+static const char *my_locale_ab_month_names_sw_KE[13] =
+ {"Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des", NullS };
+static const char *my_locale_day_names_sw_KE[8] =
+ {"Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili", NullS };
+static const char *my_locale_ab_day_names_sw_KE[8] =
+ {"Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili", NullS };
+static TYPELIB my_locale_typelib_month_names_sw_KE =
+ { array_elements(my_locale_month_names_sw_KE)-1, "", my_locale_month_names_sw_KE, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_sw_KE =
+ { array_elements(my_locale_ab_month_names_sw_KE)-1, "", my_locale_ab_month_names_sw_KE, NULL };
+static TYPELIB my_locale_typelib_day_names_sw_KE =
+ { array_elements(my_locale_day_names_sw_KE)-1, "", my_locale_day_names_sw_KE, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_sw_KE =
+ { array_elements(my_locale_ab_day_names_sw_KE)-1, "", my_locale_ab_day_names_sw_KE, NULL };
+MY_LOCALE my_locale_sw_KE
+(
+ 112,
+ "sw_KE",
+ "Swahili - Kenya",
+ TRUE,
+ &my_locale_typelib_month_names_sw_KE,
+ &my_locale_typelib_ab_month_names_sw_KE,
+ &my_locale_typelib_day_names_sw_KE,
+ &my_locale_typelib_ab_day_names_sw_KE,
+ 8,
+ 8,
+ '.', /* decimal point sw_KE */
+ ',', /* thousands_sep sw_KE */
+ "\x03\x03", /* grouping sw_KE */
+ &global_errmsgs[sw_KE]
+);
+/***** LOCALE END sw_KE *****/
+
/*
The list of all locales.
@@ -3498,17 +3518,11 @@ MY_LOCALE *my_locales[]=
&my_locale_el_GR,
&my_locale_rm_CH,
&my_locale_ka_GE,
+ &my_locale_sw_KE,
NULL
};
-MY_LOCALE *my_locales_deprecated[]=
-{
- &my_locale_sr_YU,
- NULL
-};
-
-
MY_LOCALE *my_locale_by_number(uint number)
{
MY_LOCALE *locale;
@@ -3544,30 +3558,6 @@ MY_LOCALE *my_locale_by_name(const char *name)
DBUG_ASSERT(locale == my_locales[locale->number]);
return locale;
}
- else if ((locale= my_locale_by_name(my_locales_deprecated, name)))
- {
- THD *thd= current_thd;
- /*
- Replace the deprecated locale to the corresponding
- 'fresh' locale with the same ID.
- */
- locale= my_locales[locale->number];
- if (thd)
- {
- // Send a warning to the client
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- name, locale->name);
- }
- else
- {
- // Send a warning to mysqld error log
- sql_print_warning("The syntax '%s' is deprecated and will be removed. "
- "Please use %s instead.",
- name, locale->name);
- }
- }
return locale;
}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 339fea26..38cc723c 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -34,9 +34,7 @@
#include "sql_locale.h" // my_locale_en_US
#include "log.h" // flush_error_log
#include "sql_view.h" // mysql_create_view, mysql_drop_view
-#include "sql_delete.h" // mysql_delete
#include "sql_insert.h" // mysql_insert
-#include "sql_update.h" // mysql_update, mysql_multi_update
#include "sql_partition.h" // struct partition_info
#include "sql_db.h" // mysql_change_db, mysql_create_db,
// mysql_rm_db, mysql_upgrade_db,
@@ -128,7 +126,7 @@ static int show_create_db(THD *thd, LEX *lex);
static bool alter_routine(THD *thd, LEX *lex);
static bool drop_routine(THD *thd, LEX *lex);
-const LEX_CSTRING any_db= {STRING_WITH_LEN("*any*")};
+const Lex_ident_db any_db(STRING_WITH_LEN("*any*"));
const LEX_CSTRING command_name[257]={
{ STRING_WITH_LEN("Sleep") }, //0
@@ -789,6 +787,7 @@ void init_update_queries(void)
Note that SQLCOM_RENAME_TABLE should not be in this list!
*/
sql_command_flags[SQLCOM_CREATE_TABLE]|= CF_PREOPEN_TMP_TABLES;
+ sql_command_flags[SQLCOM_CREATE_SEQUENCE]|= CF_PREOPEN_TMP_TABLES;
sql_command_flags[SQLCOM_CREATE_INDEX]|= CF_PREOPEN_TMP_TABLES;
sql_command_flags[SQLCOM_ALTER_TABLE]|= CF_PREOPEN_TMP_TABLES;
sql_command_flags[SQLCOM_TRUNCATE]|= CF_PREOPEN_TMP_TABLES;
@@ -2457,7 +2456,8 @@ resume:
/* Performance Schema Interface instrumentation, end */
MYSQL_END_STATEMENT(thd->m_statement_psi, thd->get_stmt_da());
- thd->set_examined_row_count(0); // For processlist
+ /* Reset values shown in processlist */
+ thd->examined_row_count_for_statement= thd->sent_row_count_for_statement= 0;
thd->mark_connection_idle();
thd->m_statement_psi= NULL;
@@ -2652,18 +2652,11 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident,
schema_select_lex= new (thd->mem_root) SELECT_LEX();
schema_select_lex->table_list.first= NULL;
if (lower_case_table_names == 1)
- lex->first_select_lex()->db.str=
- thd->strdup(lex->first_select_lex()->db.str);
+ lex->first_select_lex()->db=
+ thd->make_ident_casedn(lex->first_select_lex()->db);
schema_select_lex->db= lex->first_select_lex()->db;
- /*
- check_db_name() may change db.str if lower_case_table_names == 1,
- but that's ok as the db is allocted above in this case.
- */
- if (check_db_name((LEX_STRING*) &lex->first_select_lex()->db))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), lex->first_select_lex()->db.str);
+ if (Lex_ident_fs(lex->first_select_lex()->db).check_db_name_with_error())
DBUG_RETURN(1);
- }
break;
}
#endif
@@ -3084,15 +3077,11 @@ mysql_create_routine(THD *thd, LEX *lex)
{
DBUG_ASSERT(lex->sphead != 0);
DBUG_ASSERT(lex->sphead->m_db.str); /* Must be initialized in the parser */
- /*
- Verify that the database name is allowed, optionally
- lowercase it.
- */
- if (check_db_name((LEX_STRING*) &lex->sphead->m_db))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), lex->sphead->m_db.str);
+ DBUG_ASSERT(lower_case_table_names != 1 ||
+ Lex_ident_fs(lex->sphead->m_db).is_in_lower_case());
+
+ if (Lex_ident_fs(lex->sphead->m_db).check_db_name_with_error())
return true;
- }
if (check_access(thd, CREATE_PROC_ACL, lex->sphead->m_db.str,
NULL, NULL, 0, 0))
@@ -3217,13 +3206,8 @@ wsrep_error_label:
This can be done by testing thd->is_error().
*/
static bool prepare_db_action(THD *thd, privilege_t want_access,
- LEX_CSTRING *dbname)
+ const Lex_ident_db &dbname)
{
- if (check_db_name((LEX_STRING*)dbname))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), dbname->str);
- return true;
- }
/*
If in a slave thread :
- CREATE DATABASE DB was certainly not preceded by USE DB.
@@ -3233,21 +3217,8 @@ static bool prepare_db_action(THD *thd, privilege_t want_access,
do_db/ignore_db. And as this query involves no tables, tables_ok()
was not called. So we have to check rules again here.
*/
-#ifdef HAVE_REPLICATION
- if (thd->slave_thread)
- {
- Rpl_filter *rpl_filter;
- rpl_filter= thd->system_thread_info.rpl_sql_info->rpl_filter;
- if (!rpl_filter->db_ok(dbname->str) ||
- !rpl_filter->db_ok_with_wild_table(dbname->str))
- {
- my_message(ER_SLAVE_IGNORED_TABLE,
- ER_THD(thd, ER_SLAVE_IGNORED_TABLE), MYF(0));
- return true;
- }
- }
-#endif
- return check_access(thd, want_access, dbname->str, NULL, NULL, 1, 0);
+ return thd->check_slave_ignored_db_with_error(dbname) ||
+ check_access(thd, want_access, dbname.str, NULL, NULL, 1, 0);
}
@@ -3483,7 +3454,6 @@ int
mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
{
int res= 0;
- int up_result= 0;
LEX *lex= thd->lex;
/* first SELECT_LEX (have special meaning for many of non-SELECTcommands) */
SELECT_LEX *select_lex= lex->first_select_lex();
@@ -3493,12 +3463,6 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
TABLE_LIST *all_tables;
/* most outer SELECT_LEX_UNIT of query */
SELECT_LEX_UNIT *unit= &lex->unit;
-#ifdef HAVE_REPLICATION
- /* have table map for update for multi-update statement (BUG#37051) */
- bool have_table_map_for_update= FALSE;
- /* */
- Rpl_filter *rpl_filter;
-#endif
DBUG_ENTER("mysql_execute_command");
// check that we correctly marked first table for data insertion
@@ -3617,7 +3581,6 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
if (lex->sql_command == SQLCOM_UPDATE_MULTI &&
thd->table_map_for_update)
{
- have_table_map_for_update= TRUE;
table_map table_map_for_update= thd->table_map_for_update;
uint nr= 0;
TABLE_LIST *table;
@@ -4426,130 +4389,15 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
break;
}
case SQLCOM_UPDATE:
- {
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
- ha_rows found= 0, updated= 0;
- DBUG_ASSERT(first_table == all_tables && first_table != 0);
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
-
- if (update_precheck(thd, all_tables))
- break;
-
- /*
- UPDATE IGNORE can be unsafe. We therefore use row based
- logging if mixed or row based logging is available.
- TODO: Check if the order of the output of the select statement is
- deterministic. Waiting for BUG#42415
- */
- if (lex->ignore)
- lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_UPDATE_IGNORE);
-
- DBUG_ASSERT(select_lex->limit_params.offset_limit == 0);
- unit->set_limit(select_lex);
- MYSQL_UPDATE_START(thd->query());
- res= up_result= mysql_update(thd, all_tables,
- select_lex->item_list,
- lex->value_list,
- select_lex->where,
- select_lex->order_list.elements,
- select_lex->order_list.first,
- unit->lim.get_select_limit(),
- lex->ignore, &found, &updated);
- MYSQL_UPDATE_DONE(res, found, updated);
- /* mysql_update return 2 if we need to switch to multi-update */
- if (up_result != 2)
- break;
- if (thd->lex->period_conditions.is_set())
- {
- DBUG_ASSERT(0); // Should never happen
- goto error;
- }
- }
- /* fall through */
case SQLCOM_UPDATE_MULTI:
+ case SQLCOM_DELETE:
+ case SQLCOM_DELETE_MULTI:
{
DBUG_ASSERT(first_table == all_tables && first_table != 0);
- /* if we switched from normal update, rights are checked */
- if (up_result != 2)
- {
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
- if ((res= multi_update_precheck(thd, all_tables)))
- break;
- }
- else
- res= 0;
-
- unit->set_limit(select_lex);
- /*
- We can not use mysql_explain_union() because of parameters of
- mysql_select in mysql_multi_update so just set the option if needed
- */
- if (thd->lex->describe)
- {
- select_lex->set_explain_type(FALSE);
- select_lex->options|= SELECT_DESCRIBE;
- }
-
- res= mysql_multi_update_prepare(thd);
+ DBUG_ASSERT(lex->m_sql_cmd != NULL);
-#ifdef HAVE_REPLICATION
- /* Check slave filtering rules */
- if (unlikely(thd->slave_thread && !have_table_map_for_update))
- {
- if (all_tables_not_ok(thd, all_tables))
- {
- if (res!= 0)
- {
- res= 0; /* don't care of prev failure */
- thd->clear_error(); /* filters are of highest prior */
- }
- /* we warn the slave SQL thread */
- my_error(ER_SLAVE_IGNORED_TABLE, MYF(0));
- break;
- }
- if (res)
- break;
- }
- else
- {
-#endif /* HAVE_REPLICATION */
- if (res)
- break;
- if (opt_readonly &&
- !(thd->security_ctx->master_access & PRIV_IGNORE_READ_ONLY) &&
- some_non_temp_table_to_be_updated(thd, all_tables))
- {
- my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--read-only");
- break;
- }
-#ifdef HAVE_REPLICATION
- } /* unlikely */
-#endif
- {
- multi_update *result_obj;
- MYSQL_MULTI_UPDATE_START(thd->query());
- res= mysql_multi_update(thd, all_tables,
- &select_lex->item_list,
- &lex->value_list,
- select_lex->where,
- select_lex->options,
- lex->duplicates,
- lex->ignore,
- unit,
- select_lex,
- &result_obj);
- if (result_obj)
- {
- MYSQL_MULTI_UPDATE_DONE(res, result_obj->num_found(),
- result_obj->num_updated());
- res= FALSE; /* Ignore errors here */
- delete result_obj;
- }
- else
- {
- MYSQL_MULTI_UPDATE_DONE(1, 0, 0);
- }
- }
+ res = lex->m_sql_cmd->execute(thd);
+ thd->abort_on_warning= 0;
break;
}
case SQLCOM_REPLACE:
@@ -4607,6 +4455,7 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
res= mysql_insert(thd, all_tables, lex->field_list, lex->many_values,
lex->update_list, lex->value_list,
lex->duplicates, lex->ignore, sel_result);
+ status_var_add(thd->status_var.rows_sent, thd->get_sent_row_count());
if (save_protocol)
{
delete thd->protocol;
@@ -4830,6 +4679,8 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
/* revert changes for SP */
MYSQL_INSERT_SELECT_DONE(res, (ulong) thd->get_row_count_func());
select_lex->table_list.first= first_table;
+
+ status_var_add(thd->status_var.rows_sent, thd->get_sent_row_count());
}
/*
If we have inserted into a VIEW, and the base table has
@@ -4843,135 +4694,6 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
break;
}
- case SQLCOM_DELETE:
- {
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
- select_result *sel_result= NULL;
- DBUG_ASSERT(first_table == all_tables && first_table != 0);
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
-
- if ((res= delete_precheck(thd, all_tables)))
- break;
- DBUG_ASSERT(select_lex->limit_params.offset_limit == 0);
- unit->set_limit(select_lex);
-
- MYSQL_DELETE_START(thd->query());
- Protocol *save_protocol= NULL;
-
- if (lex->has_returning())
- {
- /* This is DELETE ... RETURNING. It will return output to the client */
- if (thd->lex->analyze_stmt)
- {
- /*
- Actually, it is ANALYZE .. DELETE .. RETURNING. We need to produce
- output and then discard it.
- */
- sel_result= new (thd->mem_root) select_send_analyze(thd);
- save_protocol= thd->protocol;
- thd->protocol= new Protocol_discard(thd);
- }
- else
- {
- if (!lex->result && !(sel_result= new (thd->mem_root) select_send(thd)))
- goto error;
- }
- }
-
- res = mysql_delete(thd, all_tables,
- select_lex->where, &select_lex->order_list,
- unit->lim.get_select_limit(), select_lex->options,
- lex->result ? lex->result : sel_result);
-
- if (save_protocol)
- {
- delete thd->protocol;
- thd->protocol= save_protocol;
- }
-
- if (thd->lex->analyze_stmt || thd->lex->describe)
- {
- if (!res)
- {
- bool extended= thd->lex->describe & DESCRIBE_EXTENDED;
- res= thd->lex->explain->send_explain(thd, extended);
- }
- }
-
- delete sel_result;
- MYSQL_DELETE_DONE(res, (ulong) thd->get_row_count_func());
- break;
- }
- case SQLCOM_DELETE_MULTI:
- {
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
- DBUG_ASSERT(first_table == all_tables && first_table != 0);
- TABLE_LIST *aux_tables= thd->lex->auxiliary_table_list.first;
- multi_delete *result;
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
-
- if ((res= multi_delete_precheck(thd, all_tables)))
- break;
-
- /* condition will be TRUE on SP re-excuting */
- if (select_lex->item_list.elements != 0)
- select_lex->item_list.empty();
- if (add_item_to_list(thd, new (thd->mem_root) Item_null(thd)))
- goto error;
-
- THD_STAGE_INFO(thd, stage_init);
- if ((res= open_and_lock_tables(thd, all_tables, TRUE, 0)))
- break;
-
- MYSQL_MULTI_DELETE_START(thd->query());
- if (unlikely(res= mysql_multi_delete_prepare(thd)))
- {
- MYSQL_MULTI_DELETE_DONE(1, 0);
- goto error;
- }
-
- if (likely(!thd->is_fatal_error))
- {
- result= new (thd->mem_root) multi_delete(thd, aux_tables,
- lex->table_count_update);
- if (likely(result))
- {
- if (unlikely(select_lex->vers_setup_conds(thd, aux_tables)))
- goto multi_delete_error;
- res= mysql_select(thd,
- select_lex->get_table_list(),
- select_lex->item_list,
- select_lex->where,
- 0, (ORDER *)NULL, (ORDER *)NULL, (Item *)NULL,
- (ORDER *)NULL,
- (select_lex->options | thd->variables.option_bits |
- SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK |
- OPTION_SETUP_TABLES_DONE) & ~OPTION_BUFFER_RESULT,
- result, unit, select_lex);
- res|= (int)(thd->is_error());
-
- MYSQL_MULTI_DELETE_DONE(res, result->num_deleted());
- if (res)
- result->abort_result_set(); /* for both DELETE and EXPLAIN DELETE */
- else
- {
- if (lex->describe || lex->analyze_stmt)
- {
- bool extended= thd->lex->describe & DESCRIBE_EXTENDED;
- res= thd->lex->explain->send_explain(thd, extended);
- }
- }
- multi_delete_error:
- delete result;
- }
- }
- else
- {
- res= TRUE; // Error
- MYSQL_MULTI_DELETE_DONE(1, 0);
- }
- break;
- }
case SQLCOM_DROP_SEQUENCE:
case SQLCOM_DROP_TABLE:
{
@@ -5211,10 +4933,8 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
}
else
{
-#ifdef HAVE_QUERY_CACHE
if (thd->variables.query_cache_wlock_invalidate)
- query_cache.invalidate_locked_for_write(thd, first_table);
-#endif /*HAVE_QUERY_CACHE*/
+ query_cache_invalidate_locked_for_write(thd, first_table);
my_ok(thd);
}
break;
@@ -5283,19 +5003,20 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
break;
case SQLCOM_CREATE_DB:
{
- if (prepare_db_action(thd, lex->create_info.or_replace() ?
- (CREATE_ACL | DROP_ACL) : CREATE_ACL,
- &lex->name))
- break;
+ const DBNameBuffer dbbuf(lex->name, lower_case_table_names == 1);
+ const Lex_ident_db db= dbbuf.to_lex_ident_db_with_error();
- if ((res= lex->create_info.resolve_to_charset_collation_context(thd,
+ if (!db.str ||
+ prepare_db_action(thd, lex->create_info.or_replace() ?
+ (CREATE_ACL | DROP_ACL) : CREATE_ACL,
+ db) ||
+ (res= lex->create_info.resolve_to_charset_collation_context(thd,
thd->charset_collation_context_create_db())))
break;
- WSREP_TO_ISOLATION_BEGIN(lex->name.str, NULL, NULL);
+ WSREP_TO_ISOLATION_BEGIN(db.str, NULL, NULL);
- res= mysql_create_db(thd, &lex->name,
- lex->create_info, &lex->create_info);
+ res= mysql_create_db(thd, db, lex->create_info, &lex->create_info);
break;
}
case SQLCOM_DROP_DB:
@@ -5303,44 +5024,33 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
if (thd->variables.option_bits & OPTION_IF_EXISTS)
lex->create_info.set(DDL_options_st::OPT_IF_EXISTS);
- if (prepare_db_action(thd, DROP_ACL, &lex->name))
+ const DBNameBuffer dbbuf(lex->name, lower_case_table_names == 1);
+ const Lex_ident_db db= dbbuf.to_lex_ident_db_with_error();
+
+ if (!db.str || prepare_db_action(thd, DROP_ACL, db))
break;
- WSREP_TO_ISOLATION_BEGIN(lex->name.str, NULL, NULL);
+ WSREP_TO_ISOLATION_BEGIN(db.str, NULL, NULL);
- res= mysql_rm_db(thd, &lex->name, lex->if_exists());
+ res= mysql_rm_db(thd, db, lex->if_exists());
break;
}
case SQLCOM_ALTER_DB_UPGRADE:
{
- LEX_CSTRING *db= &lex->name;
-#ifdef HAVE_REPLICATION
- if (thd->slave_thread)
- {
- rpl_filter= thd->system_thread_info.rpl_sql_info->rpl_filter;
- if (!rpl_filter->db_ok(db->str) ||
- !rpl_filter->db_ok_with_wild_table(db->str))
- {
- res= 1;
- my_message(ER_SLAVE_IGNORED_TABLE, ER_THD(thd, ER_SLAVE_IGNORED_TABLE), MYF(0));
- break;
- }
- }
-#endif
- if (check_db_name((LEX_STRING*) db))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db->str);
- break;
- }
- if (check_access(thd, ALTER_ACL, db->str, NULL, NULL, 1, 0) ||
- check_access(thd, DROP_ACL, db->str, NULL, NULL, 1, 0) ||
- check_access(thd, CREATE_ACL, db->str, NULL, NULL, 1, 0))
+ const DBNameBuffer dbbuf(lex->name, lower_case_table_names == 1);
+ const Lex_ident_db db= dbbuf.to_lex_ident_db_with_error();
+
+ if (!db.str ||
+ thd->check_slave_ignored_db_with_error(db) ||
+ check_access(thd, ALTER_ACL, db.str, NULL, NULL, 1, 0) ||
+ check_access(thd, DROP_ACL, db.str, NULL, NULL, 1, 0) ||
+ check_access(thd, CREATE_ACL, db.str, NULL, NULL, 1, 0))
{
res= 1;
break;
}
- WSREP_TO_ISOLATION_BEGIN(db->str, NULL, NULL);
+ WSREP_TO_ISOLATION_BEGIN(db.str, NULL, NULL);
res= mysql_upgrade_db(thd, db);
if (!res)
@@ -5349,15 +5059,16 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
}
case SQLCOM_ALTER_DB:
{
- LEX_CSTRING *db= &lex->name;
- if (prepare_db_action(thd, ALTER_ACL, db))
- break;
+ const DBNameBuffer dbbuf(lex->name, lower_case_table_names == 1);
+ const Lex_ident_db db= dbbuf.to_lex_ident_db_with_error();
- if ((res= lex->create_info.resolve_to_charset_collation_context(thd,
- thd->charset_collation_context_alter_db(lex->name.str))))
+ if (!db.str ||
+ prepare_db_action(thd, ALTER_ACL, db) ||
+ (res= lex->create_info.resolve_to_charset_collation_context(thd,
+ thd->charset_collation_context_alter_db(db.str))))
break;
- WSREP_TO_ISOLATION_BEGIN(db->str, NULL, NULL);
+ WSREP_TO_ISOLATION_BEGIN(db.str, NULL, NULL);
res= mysql_alter_db(thd, db, &lex->create_info);
break;
@@ -6171,6 +5882,32 @@ finish:
}
thd->reset_kill_query();
}
+
+ /*
+ Binary logging is now done. Unset the "used" flags to avoid
+ flags leaking to the next event (and to the COMMIT statement
+ in the end of the current event).
+
+ Example:
+
+ Suppose a non-default collation (in @@character_set_collations)
+ was used during the statement, the mysqlbinlog output for
+ the current statement will contain a sequence like this:
+
+ SET character_set_collations='utf8mb3=utf8mb3_bin';
+ INSERT INTO t1 VALUES (_utf8mb3'test');
+ COMMIT;
+
+ The statment (INSERT in this example) is already in binlog at this point, and the
+ and the "SET character_set_collations" is written inside a
+ Q_CHARACTER_SET_COLLATIONS chunk in its log entry header.
+ The flag CHARACTER_SET_COLLATIONS_USED is not needed any more.
+ The COMMIT can be printed without "SET character_set_collations".
+
+ The same logic applies to the other _USED flags.
+ */
+ thd->used= 0;
+
if (unlikely(thd->is_error()) ||
(thd->variables.option_bits & OPTION_MASTER_SQL_ERROR))
{
@@ -6285,6 +6022,26 @@ finish:
thd->wsrep_PA_safe= true;
#endif /* WITH_WSREP */
+ /*
+ Reset the connection_name to contain a null string, if the
+ pointer points to the same space as that of the system variable
+ default_master_connection.
+
+ We do this because the system variable may be updated which could
+ free the pointer and create a new one, causing use-after-free for
+ re-execution of prepared statements and stored procedures where
+ the LEX may be reused.
+
+ This allows connection_name to be set again be to the system
+ variable pointer in the next call of this function (see earlier in
+ this function), after any possible updates to the system variable.
+ */
+ if (thd->lex->mi.connection_name.str ==
+ thd->variables.default_master_connection.str)
+ thd->lex->mi.connection_name= null_clex_str;
+
+ if (lex->sql_command != SQLCOM_SET_OPTION)
+ DEBUG_SYNC(thd, "end_of_statement");
DBUG_RETURN(res || thd->is_error());
}
@@ -6591,21 +6348,14 @@ static bool generate_incident_event(THD *thd)
static int __attribute__ ((noinline))
show_create_db(THD *thd, LEX *lex)
{
- char db_name_buff[NAME_LEN+1];
- LEX_CSTRING db_name;
DBUG_EXECUTE_IF("4x_server_emul",
my_error(ER_UNKNOWN_ERROR, MYF(0)); return 1;);
- db_name.str= db_name_buff;
- db_name.length= lex->name.length;
- strmov(db_name_buff, lex->name.str);
-
- if (check_db_name((LEX_STRING*) &db_name))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db_name.str);
+ const DBNameBuffer dbbuf(lex->name, lower_case_table_names == 1);
+ if (Lex_ident_fs(dbbuf.to_lex_cstring()).check_db_name_with_error())
return 1;
- }
- return mysqld_show_create_db(thd, &db_name, &lex->name, lex->create_info);
+ LEX_CSTRING db= dbbuf.to_lex_cstring();
+ return mysqld_show_create_db(thd, &db, &lex->name, lex->create_info);
}
@@ -7322,14 +7072,16 @@ bool check_some_routine_access(THD *thd, const char *db, const char *name,
that are implemented for the INFORMATION_SCHEMA and PERFORMANCE_SCHEMA,
which are located in check_access().
Since the I_S and P_S do not contain routines, this bypass is ok,
- as it only opens SHOW_PROC_ACLS.
+ as it only opens SHOW_PROC_WITHOUT_DEFINITION_ACLS.
*/
- if (thd->security_ctx->master_access & SHOW_PROC_ACLS)
+ if (thd->security_ctx->master_access & SHOW_PROC_WITHOUT_DEFINITION_ACLS)
return FALSE;
- if (!check_access(thd, SHOW_PROC_ACLS, db, &save_priv, NULL, 0, 1) ||
- (save_priv & SHOW_PROC_ACLS))
+ if (!check_access(thd, SHOW_PROC_WITHOUT_DEFINITION_ACLS,
+ db, &save_priv, NULL, 0, 1) ||
+ (save_priv & SHOW_PROC_WITHOUT_DEFINITION_ACLS))
return FALSE;
- return check_routine_level_acl(thd, db, name, sph);
+ return check_routine_level_acl(thd, SHOW_PROC_WITHOUT_DEFINITION_ACLS,
+ db, name, sph);
}
@@ -7422,7 +7174,7 @@ bool check_global_access(THD *thd, privilege_t want_access, bool no_errors)
bool check_fk_parent_table_access(THD *thd,
HA_CREATE_INFO *create_info,
Alter_info *alter_info,
- const char* create_db)
+ const LEX_CSTRING &create_db)
{
Key *key;
List_iterator<Key> key_iterator(alter_info->key_list);
@@ -7445,54 +7197,37 @@ bool check_fk_parent_table_access(THD *thd,
my_error(ER_WRONG_TABLE_NAME, MYF(0), table_name.str);
return true;
}
+ // if lower_case_table_names is set then convert tablename to lower case.
+ if (lower_case_table_names &&
+ !(table_name= thd->make_ident_casedn(fk_key->ref_table)).str)
+ return true;
if (fk_key->ref_db.str)
{
- if (!(db_name.str= (char *) thd->memdup(fk_key->ref_db.str,
- fk_key->ref_db.length+1)))
+ if (Lex_ident_fs(fk_key->ref_db).check_db_name_with_error() ||
+ !(db_name= thd->make_ident_opt_casedn(fk_key->ref_db,
+ lower_case_table_names)).str)
return true;
- db_name.length= fk_key->ref_db.length;
-
- // Check if database name is valid or not.
- if (check_db_name((LEX_STRING*) &db_name))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db_name.str);
- return true;
- }
}
else
{
if (!thd->db.str)
{
- DBUG_ASSERT(create_db);
- db_name.length= strlen(create_db);
- if (!(db_name.str= (char *) thd->memdup(create_db,
- db_name.length+1)))
+ DBUG_ASSERT(create_db.str);
+ if (Lex_ident_fs(create_db).check_db_name_with_error() ||
+ !(db_name= thd->make_ident_opt_casedn(create_db,
+ lower_case_table_names)).str)
return true;
-
- if (check_db_name((LEX_STRING*) &db_name))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), db_name.str);
- return true;
- }
}
else
{
- if (thd->lex->copy_db_to(&db_name))
+ if (thd->lex->copy_db_to(&db_name) ||
+ (lower_case_table_names &&
+ !(db_name= thd->make_ident_casedn(db_name)).str))
return true;
}
}
- // if lower_case_table_names is set then convert tablename to lower case.
- if (lower_case_table_names)
- {
- char *name;
- table_name.str= name= (char *) thd->memdup(fk_key->ref_table.str,
- fk_key->ref_table.length+1);
- table_name.length= my_casedn_str(files_charset_info, name);
- db_name.length= my_casedn_str(files_charset_info, (char*) db_name.str);
- }
-
parent_table.init_one_table(&db_name, &table_name, 0, TL_IGNORE);
/*
@@ -7704,25 +7439,22 @@ void THD::reset_for_next_command(bool do_clear_error)
DBUG_ASSERT(user_var_events_alloc == &main_mem_root);
enable_slow_log= true;
get_stmt_da()->reset_for_next_command();
- m_sent_row_count= m_examined_row_count= 0;
+ sent_row_count_for_statement= examined_row_count_for_statement= 0;
accessed_rows_and_keys= 0;
- reset_slow_query_state();
+ reset_slow_query_state(0);
reset_current_stmt_binlog_format_row();
binlog_unsafe_warning_flags= 0;
save_prep_leaf_list= false;
-#ifdef WITH_WSREP
-#if !defined(DBUG_OFF)
+#if defined(WITH_WSREP) && !defined(DBUG_OFF)
if (mysql_bin_log.is_open())
-#endif
-#endif
- DBUG_PRINT("debug",
+ DBUG_PRINT("info",
("is_current_stmt_binlog_format_row(): %d",
is_current_stmt_binlog_format_row()));
-
+#endif
DBUG_VOID_RETURN;
}
@@ -7859,12 +7591,16 @@ void create_select_for_variable(THD *thd, LEX_CSTRING *var_name)
}
-void mysql_init_multi_delete(LEX *lex)
+void mysql_init_delete(LEX *lex)
{
- lex->sql_command= SQLCOM_DELETE_MULTI;
lex->init_select();
lex->first_select_lex()->limit_params.clear();
lex->unit.lim.clear();
+}
+
+void mysql_init_multi_delete(LEX *lex)
+{
+ lex->sql_command= SQLCOM_DELETE_MULTI;
lex->first_select_lex()->table_list.
save_and_clear(&lex->auxiliary_table_list);
lex->query_tables= 0;
@@ -8258,11 +7994,30 @@ bool add_to_list(THD *thd, SQL_I_List<ORDER> &list, Item *item,bool asc)
0 Error
@retval
\# Pointer to TABLE_LIST element added to the total table list
+
+
+ This method can be called in contexts when the "table" argument has a longer
+ life cycle than TABLE_LIST and belongs to a different MEM_ROOT than
+ the current THD::mem_root.
+
+ For example, it's called from Table_ident::resolve_table_rowtype_ref()
+ during sp_head::rcontext_create() during a CALL statement.
+ "table" in this case belongs to sp_pcontext, which must stay valid
+ (inside its SP cache sp_head entry) after the end of the current statement.
+
+ Let's allocate normalized copies of table.db and table.table on the current
+ THD::mem_root and store them in the TABLE_LIST.
+
+ We should not touch "table" and replace table.db and table.table to their
+ normalized copies allocated on the current THD::mem_root, because it'll be
+ freed at the end of the current statement, while table.db and table.table
+ should stay valid. Let's keep them in the original state.
+
*/
TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
Table_ident *table,
- LEX_CSTRING *alias,
+ const LEX_CSTRING *alias,
ulong table_options,
thr_lock_type lock_type,
enum_mdl_type mdl_type,
@@ -8288,11 +8043,8 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
if (unlikely(table->is_derived_table() == FALSE && table->db.str &&
!(table_options & TL_OPTION_TABLE_FUNCTION) &&
- check_db_name((LEX_STRING*) &table->db)))
- {
- my_error(ER_WRONG_DB_NAME, MYF(0), table->db.str);
+ Lex_ident_fs(table->db).check_db_name_with_error()))
DBUG_RETURN(0);
- }
LEX_CSTRING db{0, 0};
bool fqtn= false;
@@ -8359,8 +8111,8 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
!cmp(&ptr->db, &tables->db)) &&
!tables->sequence))
{
- my_error(ER_NONUNIQ_TABLE, MYF(0), alias_str.str); /* purecov: tested */
- DBUG_RETURN(0); /* purecov: tested */
+ my_error(ER_NONUNIQ_TABLE, MYF(0), alias_str.str); /* purecov: tested */
+ DBUG_RETURN(0); /* purecov: tested */
}
}
}
@@ -10012,7 +9764,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
}
if (check_fk_parent_table_access(thd, &lex->create_info, &lex->alter_info,
- create_table->db.str))
+ create_table->db))
goto err;
error= FALSE;
diff --git a/sql/sql_parse.h b/sql/sql_parse.h
index eeb7f832..94dc1909 100644
--- a/sql/sql_parse.h
+++ b/sql/sql_parse.h
@@ -50,7 +50,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
bool check_fk_parent_table_access(THD *thd,
HA_CREATE_INFO *create_info,
Alter_info *alter_info,
- const char* create_db);
+ const LEX_CSTRING &create_db);
bool parse_sql(THD *thd, Parser_state *parser_state,
Object_creation_ctx *creation_ctx, bool do_pfs_digest=false);
@@ -92,6 +92,7 @@ void mysql_parse(THD *thd, char *rawbuf, uint length,
bool mysql_new_select(LEX *lex, bool move_down, SELECT_LEX *sel);
void create_select_for_variable(THD *thd, LEX_CSTRING *var_name);
void create_table_set_open_action_and_adjust_tables(LEX *lex);
+void mysql_init_delete(LEX *lex);
void mysql_init_multi_delete(LEX *lex);
bool multi_delete_set_locks_and_link_aux_tables(LEX *lex);
void create_table_set_open_action_and_adjust_tables(LEX *lex);
@@ -128,7 +129,7 @@ bool check_stack_overrun(THD *thd, long margin, uchar *dummy);
/* Variables */
-extern const LEX_CSTRING any_db;
+extern const Lex_ident_db any_db;
extern uint sql_command_flags[];
extern uint server_command_flags[];
extern const LEX_CSTRING command_name[];
@@ -188,4 +189,20 @@ check_table_access(THD *thd, privilege_t requirements,TABLE_LIST *tables,
{ return false; }
#endif /*NO_EMBEDDED_ACCESS_CHECKS*/
+
+/*
+ Allocating memory and *also* using it (reading and
+ writing from it) because some build instructions cause
+ compiler to optimize out stack_used_up. Since alloca()
+ here depends on stack_used_up, it doesnt get executed
+ correctly and causes json_debug_nonembedded to fail
+ ( --error ER_STACK_OVERRUN_NEED_MORE does not occur).
+*/
+#define ALLOCATE_MEM_ON_STACK(A) do \
+ { \
+ uchar *array= (uchar*)alloca(A); \
+ bzero(array, A); \
+ my_checksum(0, array, A); \
+ } while(0)
+
#endif /* SQL_PARSE_INCLUDED */
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index 590c2a50..5d3c7b35 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -4105,8 +4105,19 @@ bool verify_data_with_partition(TABLE *table, TABLE *part_table,
uchar *old_rec;
partition_info *part_info;
DBUG_ENTER("verify_data_with_partition");
- DBUG_ASSERT(table && table->file && part_table && part_table->part_info &&
- part_table->file);
+ DBUG_ASSERT(table);
+ DBUG_ASSERT(table->file);
+ DBUG_ASSERT(part_table);
+ DBUG_ASSERT(part_table->file);
+ DBUG_ASSERT(part_table->part_info);
+
+ if (table->in_use->lex->without_validation)
+ {
+ sql_print_warning("Table %`s.%`s was altered WITHOUT VALIDATION: "
+ "the table might be corrupted",
+ part_table->s->db.str, part_table->s->table_name.str);
+ DBUG_RETURN(false);
+ }
/*
Verify all table rows.
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index f4ce4a4d..7f4cf2a8 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -1875,6 +1875,7 @@ static bool register_builtin(struct st_maria_plugin *plugin,
/*
called only by plugin_init()
*/
+
static void plugin_load(MEM_ROOT *tmp_root)
{
TABLE_LIST tables;
@@ -1892,6 +1893,8 @@ static void plugin_load(MEM_ROOT *tmp_root)
new_thd->thread_stack= (char*) &tables;
new_thd->store_globals();
+ new_thd->set_query_inner((char*) STRING_WITH_LEN("intern:plugin_load"),
+ default_charset_info);
new_thd->db= MYSQL_SCHEMA_NAME;
bzero((char*) &new_thd->net, sizeof(new_thd->net));
tables.init_one_table(&MYSQL_SCHEMA_NAME, &MYSQL_PLUGIN_NAME, 0, TL_READ);
@@ -1925,12 +1928,11 @@ static void plugin_load(MEM_ROOT *tmp_root)
while (!(error= read_record_info.read_record()))
{
DBUG_PRINT("info", ("init plugin record"));
- String str_name, str_dl;
- get_field(tmp_root, table->field[0], &str_name);
- get_field(tmp_root, table->field[1], &str_dl);
-
- LEX_CSTRING name= {str_name.ptr(), str_name.length()};
- LEX_CSTRING dl= {str_dl.ptr(), str_dl.length()};
+ DBUG_ASSERT(new_thd == table->field[0]->get_thd());
+ DBUG_ASSERT(new_thd == table->field[1]->get_thd());
+ DBUG_ASSERT(!(new_thd->variables.sql_mode & MODE_PAD_CHAR_TO_FULL_LENGTH));
+ LEX_CSTRING name= table->field[0]->val_lex_string_strmake(tmp_root);
+ LEX_CSTRING dl= table->field[1]->val_lex_string_strmake(tmp_root);
if (!name.length || !dl.length)
continue;
@@ -3276,7 +3278,12 @@ void plugin_thdvar_init(THD *thd)
/* This and all other variable cleanups are here for COM_CHANGE_USER :( */
#ifndef EMBEDDED_LIBRARY
thd->session_tracker.sysvars.deinit(thd);
+ my_free(thd->variables.redirect_url);
+ thd->variables.redirect_url= 0;
#endif
+ my_free((char*) thd->variables.default_master_connection.str);
+ thd->variables.default_master_connection.str= 0;
+ thd->variables.default_master_connection.length= 0;
thd->variables= global_system_variables;
@@ -3299,9 +3306,19 @@ void plugin_thdvar_init(THD *thd)
intern_plugin_unlock(NULL, old_enforced_table_plugin);
mysql_mutex_unlock(&LOCK_plugin);
+ thd->variables.default_master_connection.str=
+ my_strndup(key_memory_Sys_var_charptr_value,
+ global_system_variables.default_master_connection.str,
+ global_system_variables.default_master_connection.length,
+ MYF(MY_WME | MY_THREAD_SPECIFIC));
#ifndef EMBEDDED_LIBRARY
thd->session_tracker.sysvars.init(thd);
+ thd->variables.redirect_url=
+ my_strdup(key_memory_Sys_var_charptr_value,
+ global_system_variables.redirect_url,
+ MYF(MY_WME | MY_THREAD_SPECIFIC));
#endif
+
DBUG_VOID_RETURN;
}
@@ -3369,7 +3386,12 @@ void plugin_thdvar_cleanup(THD *thd)
#ifndef EMBEDDED_LIBRARY
thd->session_tracker.sysvars.deinit(thd);
+ my_free(thd->variables.redirect_url);
+ thd->variables.redirect_url= 0;
#endif
+ my_free((char*) thd->variables.default_master_connection.str);
+ thd->variables.default_master_connection.str= 0;
+ thd->variables.default_master_connection.length= 0;
mysql_mutex_lock(&LOCK_plugin);
diff --git a/sql/sql_plugin_services.inl b/sql/sql_plugin_services.inl
index b291bf5c..2114f356 100644
--- a/sql/sql_plugin_services.inl
+++ b/sql/sql_plugin_services.inl
@@ -254,6 +254,9 @@ struct sql_service_st sql_service_handler=
mysql_set_character_set,
mysql_num_fields,
mysql_select_db,
+ mysql_use_result,
+ mysql_fetch_fields,
+ mysql_real_escape_string,
mysql_ssl_set
};
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index df200a69..364a125c 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -95,10 +95,8 @@ When one supplies long data for a placeholder:
#include "sql_base.h" // open_normal_and_derived_tables
#include "sql_cache.h" // query_cache_*
#include "sql_view.h" // create_view_precheck
-#include "sql_delete.h" // mysql_prepare_delete
#include "sql_select.h" // for JOIN
#include "sql_insert.h" // upgrade_lock_type_for_insert, mysql_prepare_insert
-#include "sql_update.h" // mysql_prepare_update
#include "sql_db.h" // mysql_opt_change_db, mysql_change_db
#include "sql_derived.h" // mysql_derived_prepare,
// mysql_handle_derived
@@ -239,6 +237,20 @@ private:
*/
MEM_ROOT main_mem_root;
sql_mode_t m_sql_mode;
+ THD::used_t m_prepare_time_thd_used_flags;
+ uint m_prepare_time_charset_collation_map_version;
+ bool check_charset_collation_map_version(THD *thd,
+ Reprepare_observer *observer)
+ {
+ if ((m_prepare_time_thd_used_flags & THD::CHARACTER_SET_COLLATIONS_USED) &&
+ m_prepare_time_charset_collation_map_version !=
+ thd->variables.character_set_collations.version())
+ {
+ observer->report_error(thd);
+ return true;
+ }
+ return false;
+ }
private:
bool set_db(const LEX_CSTRING *db);
bool set_parameters(String *expanded_query,
@@ -1412,162 +1424,6 @@ static bool mysql_test_insert(Prepared_statement *stmt,
/**
- Validate UPDATE statement.
-
- @param stmt prepared statement
- @param tables list of tables used in this query
-
- @todo
- - here we should send types of placeholders to the client.
-
- @retval
- 0 success
- @retval
- 1 error, error message is set in THD
- @retval
- 2 convert to multi_update
-*/
-
-static int mysql_test_update(Prepared_statement *stmt,
- TABLE_LIST *table_list)
-{
- int res;
- THD *thd= stmt->thd;
- uint table_count= 0;
- TABLE_LIST *update_source_table;
- SELECT_LEX *select= stmt->lex->first_select_lex();
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- privilege_t want_privilege(NO_ACL);
-#endif
- DBUG_ENTER("mysql_test_update");
-
- if (update_precheck(thd, table_list) ||
- open_tables(thd, &table_list, &table_count, MYSQL_OPEN_FORCE_SHARED_MDL))
- goto error;
-
- if (mysql_handle_derived(thd->lex, DT_INIT))
- goto error;
-
- if (((update_source_table= unique_table(thd, table_list,
- table_list->next_global, 0)) ||
- table_list->is_multitable()))
- {
- DBUG_ASSERT(update_source_table || table_list->view != 0);
- DBUG_PRINT("info", ("Switch to multi-update"));
- /* pass counter value */
- thd->lex->table_count_update= table_count;
- /* convert to multiupdate */
- DBUG_RETURN(2);
- }
-
- /*
- thd->fill_derived_tables() is false here for sure (because it is
- preparation of PS, so we even do not check it).
- */
- if (table_list->handle_derived(thd->lex, DT_MERGE_FOR_INSERT))
- goto error;
- if (table_list->handle_derived(thd->lex, DT_PREPARE))
- goto error;
-
- if (!table_list->single_table_updatable())
- {
- my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias.str, "UPDATE");
- goto error;
- }
-
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- /* Force privilege re-checking for views after they have been opened. */
- want_privilege= (table_list->view ? UPDATE_ACL :
- table_list->grant.want_privilege);
-#endif
-
- if (mysql_prepare_update(thd, table_list, &select->where,
- select->order_list.elements,
- select->order_list.first))
- goto error;
-
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- table_list->grant.want_privilege= want_privilege;
- table_list->table->grant.want_privilege= want_privilege;
- table_list->register_want_access(want_privilege);
-#endif
- thd->lex->first_select_lex()->no_wrap_view_item= TRUE;
- res= setup_fields(thd, Ref_ptr_array(),
- select->item_list, MARK_COLUMNS_READ, 0, NULL, 0);
- thd->lex->first_select_lex()->no_wrap_view_item= FALSE;
- if (res)
- goto error;
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- /* Check values */
- table_list->grant.want_privilege=
- table_list->table->grant.want_privilege=
- (SELECT_ACL & ~table_list->table->grant.privilege);
- table_list->register_want_access(SELECT_ACL);
-#endif
- if (setup_fields(thd, Ref_ptr_array(),
- stmt->lex->value_list, COLUMNS_READ, 0, NULL, 0) ||
- check_unique_table(thd, table_list))
- goto error;
- /* TODO: here we should send types of placeholders to the client. */
- DBUG_RETURN(0);
-error:
- DBUG_RETURN(1);
-}
-
-
-/**
- Validate DELETE statement.
-
- @param stmt prepared statement
- @param tables list of tables used in this query
-
- @retval
- FALSE success
- @retval
- TRUE error, error message is set in THD
-*/
-
-static bool mysql_test_delete(Prepared_statement *stmt,
- TABLE_LIST *table_list)
-{
- uint table_count= 0;
- THD *thd= stmt->thd;
- LEX *lex= stmt->lex;
- bool delete_while_scanning;
- DBUG_ENTER("mysql_test_delete");
-
- if (delete_precheck(thd, table_list) ||
- open_tables(thd, &table_list, &table_count, MYSQL_OPEN_FORCE_SHARED_MDL))
- goto error;
-
- if (mysql_handle_derived(thd->lex, DT_INIT))
- goto error;
- if (mysql_handle_derived(thd->lex, DT_MERGE_FOR_INSERT))
- goto error;
- if (mysql_handle_derived(thd->lex, DT_PREPARE))
- goto error;
-
- if (!table_list->single_table_updatable())
- {
- my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias.str, "DELETE");
- goto error;
- }
- if (!table_list->table || !table_list->table->is_created())
- {
- my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0),
- table_list->view_db.str, table_list->view_name.str);
- goto error;
- }
-
- DBUG_RETURN(mysql_prepare_delete(thd, table_list,
- &lex->first_select_lex()->where,
- &delete_while_scanning));
-error:
- DBUG_RETURN(TRUE);
-}
-
-
-/**
Validate SELECT statement.
In case of success, if this query is not EXPLAIN, send column list info
@@ -2147,74 +2003,6 @@ err:
}
-/*
- Validate and prepare for execution a multi update statement.
-
- @param stmt prepared statement
- @param tables list of tables used in this query
- @param converted converted to multi-update from usual update
-
- @retval
- FALSE success
- @retval
- TRUE error, error message is set in THD
-*/
-
-static bool mysql_test_multiupdate(Prepared_statement *stmt,
- TABLE_LIST *tables,
- bool converted)
-{
- /* if we switched from normal update, rights are checked */
- if (!converted && multi_update_precheck(stmt->thd, tables))
- return TRUE;
-
- return select_like_stmt_test(stmt, &mysql_multi_update_prepare,
- OPTION_SETUP_TABLES_DONE);
-}
-
-
-/**
- Validate and prepare for execution a multi delete statement.
-
- @param stmt prepared statement
- @param tables list of tables used in this query
-
- @retval
- FALSE success
- @retval
- TRUE error, error message in THD is set.
-*/
-
-static bool mysql_test_multidelete(Prepared_statement *stmt,
- TABLE_LIST *tables)
-{
- THD *thd= stmt->thd;
-
- thd->lex->current_select= thd->lex->first_select_lex();
- if (add_item_to_list(thd, new (thd->mem_root)
- Item_null(thd)))
- {
- my_error(ER_OUTOFMEMORY, MYF(ME_FATAL), 0);
- goto error;
- }
-
- if (multi_delete_precheck(thd, tables) ||
- select_like_stmt_test_with_open(stmt, tables,
- &mysql_multi_delete_prepare,
- OPTION_SETUP_TABLES_DONE))
- goto error;
- if (!tables->table)
- {
- my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0),
- tables->view_db.str, tables->view_name.str);
- goto error;
- }
- return FALSE;
-error:
- return TRUE;
-}
-
-
/**
Wrapper for mysql_insert_select_prepare, to make change of local tables
after open_normal_and_derived_tables() call.
@@ -2496,18 +2284,14 @@ static bool check_prepared_statement(Prepared_statement *stmt)
break;
case SQLCOM_UPDATE:
- res= mysql_test_update(stmt, tables);
- /* mysql_test_update returns 2 if we need to switch to multi-update */
- if (res != 2)
- break;
- /* fall through */
case SQLCOM_UPDATE_MULTI:
- res= mysql_test_multiupdate(stmt, tables, res == 2);
- break;
-
case SQLCOM_DELETE:
- res= mysql_test_delete(stmt, tables);
+ case SQLCOM_DELETE_MULTI:
+ res = lex->m_sql_cmd->prepare(thd);
+ if (!res)
+ lex->m_sql_cmd->unprepare(thd);
break;
+
/* The following allow WHERE clause, so they must be tested like SELECT */
case SQLCOM_SHOW_DATABASES:
case SQLCOM_SHOW_TABLES:
@@ -2644,10 +2428,6 @@ static bool check_prepared_statement(Prepared_statement *stmt)
res= mysql_test_set_fields(stmt, tables, &lex->var_list);
break;
- case SQLCOM_DELETE_MULTI:
- res= mysql_test_multidelete(stmt, tables);
- break;
-
case SQLCOM_INSERT_SELECT:
case SQLCOM_REPLACE_SELECT:
res= mysql_test_insert_select(stmt, tables);
@@ -4036,6 +3816,7 @@ Reprepare_observer::report_error(THD *thd)
*/
thd->get_stmt_da()->set_error_status(ER_NEED_REPREPARE);
m_invalidated= TRUE;
+ m_attempt++;
return TRUE;
}
@@ -4144,7 +3925,9 @@ Prepared_statement::Prepared_statement(THD *thd_arg)
iterations(0),
start_param(0),
read_types(0),
- m_sql_mode(thd->variables.sql_mode)
+ m_sql_mode(thd->variables.sql_mode),
+ m_prepare_time_thd_used_flags(0),
+ m_prepare_time_charset_collation_map_version(0)
{
init_sql_alloc(key_memory_prepared_statement_main_mem_root,
&main_mem_root, thd_arg->variables.query_alloc_block_size,
@@ -4397,6 +4180,9 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
thd->is_error() ||
init_param_array(this));
+ if (lex->m_sql_cmd)
+ lex->m_sql_cmd->set_owner(this);
+
if (thd->security_ctx->password_expired &&
lex->sql_command != SQLCOM_SET_OPTION &&
lex->sql_command != SQLCOM_PREPARE &&
@@ -4533,6 +4319,9 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
}
// The same format as for triggers to compare
hr_prepare_time= my_hrtime();
+ m_prepare_time_thd_used_flags= thd->used;
+ m_prepare_time_charset_collation_map_version=
+ thd->variables.character_set_collations.version();
DBUG_RETURN(error);
}
@@ -4617,7 +4406,6 @@ Prepared_statement::set_parameters(String *expanded_query,
@retval FALSE successfully executed the statement, perhaps
after having reprepared it a few times.
*/
-const static int MAX_REPREPARE_ATTEMPTS= 3;
bool
Prepared_statement::execute_loop(String *expanded_query,
@@ -4626,7 +4414,6 @@ Prepared_statement::execute_loop(String *expanded_query,
uchar *packet_end)
{
Reprepare_observer reprepare_observer;
- int reprepare_attempt= 0;
bool error;
iterations= FALSE;
@@ -4664,7 +4451,7 @@ reexecute:
the error stack.
*/
- if (sql_command_flags[lex->sql_command] & CF_REEXECUTION_FRAGILE)
+ if (sql_command_flags() & CF_REEXECUTION_FRAGILE)
{
reprepare_observer.reset_reprepare_observer();
DBUG_ASSERT(thd->m_reprepare_observer == NULL);
@@ -4676,10 +4463,10 @@ reexecute:
thd->m_reprepare_observer= NULL;
if (unlikely(error) &&
- (sql_command_flags[lex->sql_command] & CF_REEXECUTION_FRAGILE) &&
+ (sql_command_flags() & CF_REEXECUTION_FRAGILE) &&
!thd->is_fatal_error && !thd->killed &&
reprepare_observer.is_invalidated() &&
- reprepare_attempt++ < MAX_REPREPARE_ATTEMPTS)
+ reprepare_observer.can_retry())
{
DBUG_ASSERT(thd->get_stmt_da()->sql_errno() == ER_NEED_REPREPARE);
thd->clear_error();
@@ -4791,7 +4578,7 @@ Prepared_statement::execute_bulk_loop(String *expanded_query,
goto err;
}
- if (!(sql_command_flags[lex->sql_command] & CF_PS_ARRAY_BINDING_SAFE))
+ if (!(sql_command_flags() & CF_PS_ARRAY_BINDING_SAFE))
{
DBUG_PRINT("error", ("Command is not supported in bulk execution."));
my_error(ER_UNSUPPORTED_PS, MYF(0));
@@ -4801,7 +4588,7 @@ Prepared_statement::execute_bulk_loop(String *expanded_query,
Here second buffer for not optimized commands,
optimized commands do it inside thier internal loop.
*/
- if (!(sql_command_flags[lex->sql_command] & CF_PS_ARRAY_BINDING_OPTIMIZED) &&
+ if (!(sql_command_flags() & CF_PS_ARRAY_BINDING_OPTIMIZED) &&
this->lex->has_returning())
{
// Above check can be true for SELECT in future
@@ -4830,13 +4617,11 @@ Prepared_statement::execute_bulk_loop(String *expanded_query,
// iterations changed by set_bulk_parameters
while ((iterations || start_param) && !error && !thd->is_error())
{
- int reprepare_attempt= 0;
-
/*
Here we set parameters for not optimized commands,
optimized commands do it inside thier internal loop.
*/
- if (!(sql_command_flags[lex->sql_command] & CF_PS_ARRAY_BINDING_OPTIMIZED))
+ if (!(sql_command_flags() & CF_PS_ARRAY_BINDING_OPTIMIZED))
{
if (set_bulk_parameters(TRUE))
{
@@ -4859,7 +4644,7 @@ reexecute:
the error stack.
*/
- if (sql_command_flags[lex->sql_command] & CF_REEXECUTION_FRAGILE)
+ if (sql_command_flags() & CF_REEXECUTION_FRAGILE)
{
reprepare_observer.reset_reprepare_observer();
DBUG_ASSERT(thd->m_reprepare_observer == NULL);
@@ -4871,8 +4656,7 @@ reexecute:
thd->m_reprepare_observer= NULL;
#ifdef WITH_WSREP
- if (!(sql_command_flags[lex->sql_command] & CF_PS_ARRAY_BINDING_OPTIMIZED) &&
- WSREP(thd))
+ if (!(sql_command_flags() & CF_PS_ARRAY_BINDING_OPTIMIZED) && WSREP(thd))
{
if (wsrep_after_statement(thd))
{
@@ -4888,10 +4672,10 @@ reexecute:
else
#endif /* WITH_WSREP */
if (unlikely(error) &&
- (sql_command_flags[lex->sql_command] & CF_REEXECUTION_FRAGILE) &&
+ (sql_command_flags() & CF_REEXECUTION_FRAGILE) &&
!thd->is_fatal_error && !thd->killed &&
reprepare_observer.is_invalidated() &&
- reprepare_attempt++ < MAX_REPREPARE_ATTEMPTS)
+ reprepare_observer.can_retry())
{
DBUG_ASSERT(thd->get_stmt_da()->sql_errno() == ER_NEED_REPREPARE);
thd->clear_error();
@@ -5110,6 +4894,13 @@ Prepared_statement::swap_prepared_statement(Prepared_statement *copy)
/* Ditto */
swap_variables(LEX_CSTRING, db, copy->db);
+ swap_variables(uint,
+ m_prepare_time_charset_collation_map_version,
+ copy->m_prepare_time_charset_collation_map_version);
+ swap_variables(THD::used_t,
+ m_prepare_time_thd_used_flags,
+ copy->m_prepare_time_thd_used_flags);
+
DBUG_ASSERT(param_count == copy->param_count);
DBUG_ASSERT(thd == copy->thd);
last_error[0]= '\0';
@@ -5153,6 +4944,9 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
LEX_CSTRING stmt_db_name= db;
+ if (check_charset_collation_map_version(thd, thd->m_reprepare_observer))
+ return true;
+
status_var_increment(thd->status_var.com_stmt_execute);
if (flags & (uint) IS_IN_USE)
@@ -5270,6 +5064,15 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
MYSQL_QUERY_EXEC_START(thd->query(), thd->thread_id, thd->get_db(),
&thd->security_ctx->priv_user[0],
(char *) thd->security_ctx->host_or_ip, 1);
+ /*
+ Some thd->used flags are set only during PREPARE.
+ For example CHARACTER_SET_COLLATIONS_USED is in most cases
+ set during parsing only.
+ Mix PREPARE time thd->used flags to EXECUTE time thd->used flags,
+ e.g. to have the log event header write an optional chunk with
+ the @@character_set_collations map.
+ */
+ thd->used|= m_prepare_time_thd_used_flags;
error= mysql_execute_command(thd, true);
MYSQL_QUERY_EXEC_DONE(error);
thd->update_server_status();
diff --git a/sql/sql_prepare.h b/sql/sql_prepare.h
index ff6e986e..840aeee6 100644
--- a/sql/sql_prepare.h
+++ b/sql/sql_prepare.h
@@ -65,8 +65,19 @@ public:
bool report_error(THD *thd);
bool is_invalidated() const { return m_invalidated; }
void reset_reprepare_observer() { m_invalidated= FALSE; }
+
+ bool can_retry() const
+ {
+ // The method must be called only for a statement that is invalidated
+ assert(is_invalidated());
+ return m_attempt <= MAX_REPREPARE_ATTEMPTS;
+ }
+
private:
- bool m_invalidated;
+ bool m_invalidated{false};
+ int m_attempt{0};
+
+ static const int MAX_REPREPARE_ATTEMPTS= 3;
};
diff --git a/sql/sql_priv.h b/sql/sql_priv.h
index adddca3d..b4bf9d60 100644
--- a/sql/sql_priv.h
+++ b/sql/sql_priv.h
@@ -27,71 +27,6 @@
#ifndef SQL_PRIV_INCLUDED
#define SQL_PRIV_INCLUDED
-#ifndef MYSQL_CLIENT
-
-/*
- Generates a warning that a feature is deprecated. After a specified
- version asserts that the feature is removed.
-
- Using it as
-
- WARN_DEPRECATED(thd, 6,2, "BAD", "'GOOD'");
-
- Will result in a warning
-
- "The syntax 'BAD' is deprecated and will be removed in MySQL 6.2. Please
- use 'GOOD' instead"
-
- Note that in macro arguments BAD is not quoted, while 'GOOD' is.
- Note that the version is TWO numbers, separated with a comma
- (two macro arguments, that is)
-*/
-#define WARN_DEPRECATED(Thd,VerHi,VerLo,Old,New) \
- do { \
- compile_time_assert(MYSQL_VERSION_ID < VerHi * 10000 + VerLo * 100); \
- if (((THD *) Thd) != NULL) \
- push_warning_printf(((THD *) Thd), Sql_condition::WARN_LEVEL_WARN, \
- ER_WARN_DEPRECATED_SYNTAX, \
- ER_THD(((THD *) Thd), ER_WARN_DEPRECATED_SYNTAX), \
- (Old), (New)); \
- else \
- sql_print_warning("The syntax '%s' is deprecated and will be removed " \
- "in a future release. Please use %s instead.", \
- (Old), (New)); \
- } while(0)
-
-
-/*
- Generates a warning that a feature is deprecated and there is no replacement.
-
- Using it as
-
- WARN_DEPRECATED_NO_REPLACEMENT(thd, "BAD");
-
- Will result in a warning
-
- "'BAD' is deprecated and will be removed in a future release."
-
- Note that in macro arguments BAD is not quoted.
-*/
-
-#define WARN_DEPRECATED_NO_REPLACEMENT(Thd,Old) \
- do { \
- THD *thd_= ((THD*) Thd); \
- if (thd_ != NULL) \
- push_warning_printf(thd_, Sql_condition::WARN_LEVEL_WARN, \
- ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT, \
- ER_THD(thd_, ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT), \
- (Old)); \
- else \
- sql_print_warning("'%s' is deprecated and will be removed " \
- "in a future release.", (Old)); \
- } while(0)
-
-/*************************************************************************/
-
-#endif
-
/*
This is included in the server and in the client.
Options for select set by the yacc parser (stored in lex->options).
@@ -200,85 +135,79 @@
#define OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION (1ULL << 2)
#define OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT (1ULL << 3)
#define OPTIMIZER_SWITCH_INDEX_MERGE_SORT_INTERSECT (1ULL << 4)
-#define deprecated_ENGINE_CONDITION_PUSHDOWN (1ULL << 5)
-#define OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN (1ULL << 6)
-#define OPTIMIZER_SWITCH_DERIVED_MERGE (1ULL << 7)
-#define OPTIMIZER_SWITCH_DERIVED_WITH_KEYS (1ULL << 8)
-#define OPTIMIZER_SWITCH_FIRSTMATCH (1ULL << 9)
-#define OPTIMIZER_SWITCH_LOOSE_SCAN (1ULL << 10)
-#define OPTIMIZER_SWITCH_MATERIALIZATION (1ULL << 11)
-#define OPTIMIZER_SWITCH_IN_TO_EXISTS (1ULL << 12)
-#define OPTIMIZER_SWITCH_SEMIJOIN (1ULL << 13)
-#define OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE (1ULL << 14)
-#define OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN (1ULL << 15)
-#define OPTIMIZER_SWITCH_SUBQUERY_CACHE (1ULL << 16)
+#define OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN (1ULL << 5)
+#define OPTIMIZER_SWITCH_DERIVED_MERGE (1ULL << 6)
+#define OPTIMIZER_SWITCH_DERIVED_WITH_KEYS (1ULL << 7)
+#define OPTIMIZER_SWITCH_FIRSTMATCH (1ULL << 8)
+#define OPTIMIZER_SWITCH_LOOSE_SCAN (1ULL << 9)
+#define OPTIMIZER_SWITCH_MATERIALIZATION (1ULL << 10)
+#define OPTIMIZER_SWITCH_IN_TO_EXISTS (1ULL << 11)
+#define OPTIMIZER_SWITCH_SEMIJOIN (1ULL << 12)
+#define OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE (1ULL << 13)
+#define OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN (1ULL << 14)
+#define OPTIMIZER_SWITCH_SUBQUERY_CACHE (1ULL << 15)
/** If this is off, MRR is never used. */
-#define OPTIMIZER_SWITCH_MRR (1ULL << 17)
+#define OPTIMIZER_SWITCH_MRR (1ULL << 16)
/**
If OPTIMIZER_SWITCH_MRR is on and this is on, MRR is used depending on a
cost-based choice ("automatic"). If OPTIMIZER_SWITCH_MRR is on and this is
off, MRR is "forced" (i.e. used as long as the storage engine is capable of
doing it).
*/
-#define OPTIMIZER_SWITCH_MRR_COST_BASED (1ULL << 18)
-#define OPTIMIZER_SWITCH_MRR_SORT_KEYS (1ULL << 19)
-#define OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE (1ULL << 20)
-#define OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE (1ULL << 21)
-#define OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL (1ULL << 22)
-#define OPTIMIZER_SWITCH_JOIN_CACHE_HASHED (1ULL << 23)
-#define OPTIMIZER_SWITCH_JOIN_CACHE_BKA (1ULL << 24)
-#define OPTIMIZER_SWITCH_OPTIMIZE_JOIN_BUFFER_SIZE (1ULL << 25)
-#define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1ULL << 26)
-#define OPTIMIZER_SWITCH_EXTENDED_KEYS (1ULL << 27)
-#define OPTIMIZER_SWITCH_EXISTS_TO_IN (1ULL << 28)
-#define OPTIMIZER_SWITCH_ORDERBY_EQ_PROP (1ULL << 29)
-#define OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_DERIVED (1ULL << 30)
-#define OPTIMIZER_SWITCH_SPLIT_MATERIALIZED (1ULL << 31)
-#define OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_SUBQUERY (1ULL << 32)
-#define OPTIMIZER_SWITCH_USE_ROWID_FILTER (1ULL << 33)
-#define OPTIMIZER_SWITCH_COND_PUSHDOWN_FROM_HAVING (1ULL << 34)
-#define OPTIMIZER_SWITCH_NOT_NULL_RANGE_SCAN (1ULL << 35)
-#define OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY (1ULL << 36)
-#define OPTIMIZER_SWITCH_CSET_NARROWING (1ULL << 37)
-
-#define OPTIMIZER_SWITCH_DEFAULT (OPTIMIZER_SWITCH_INDEX_MERGE | \
- OPTIMIZER_SWITCH_INDEX_MERGE_UNION | \
- OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION | \
- OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT | \
- OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN | \
- OPTIMIZER_SWITCH_DERIVED_MERGE | \
- OPTIMIZER_SWITCH_DERIVED_WITH_KEYS | \
- OPTIMIZER_SWITCH_TABLE_ELIMINATION | \
- OPTIMIZER_SWITCH_EXTENDED_KEYS | \
- OPTIMIZER_SWITCH_IN_TO_EXISTS | \
- OPTIMIZER_SWITCH_MATERIALIZATION | \
- OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE|\
- OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN|\
- OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE | \
- OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE | \
- OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL | \
- OPTIMIZER_SWITCH_JOIN_CACHE_HASHED | \
- OPTIMIZER_SWITCH_JOIN_CACHE_BKA | \
- OPTIMIZER_SWITCH_SUBQUERY_CACHE | \
- OPTIMIZER_SWITCH_SEMIJOIN | \
- OPTIMIZER_SWITCH_FIRSTMATCH | \
- OPTIMIZER_SWITCH_LOOSE_SCAN | \
- OPTIMIZER_SWITCH_EXISTS_TO_IN | \
- OPTIMIZER_SWITCH_ORDERBY_EQ_PROP | \
- OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_DERIVED | \
- OPTIMIZER_SWITCH_SPLIT_MATERIALIZED | \
- OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_SUBQUERY | \
- OPTIMIZER_SWITCH_USE_ROWID_FILTER | \
- OPTIMIZER_SWITCH_COND_PUSHDOWN_FROM_HAVING | \
- OPTIMIZER_SWITCH_OPTIMIZE_JOIN_BUFFER_SIZE)
-
-/*
- See adjust_secondary_key_cost in sys_vars.cc for symbolic names.
-*/
-#define OPTIMIZER_ADJ_SEC_KEY_COST (1)
-#define OPTIMIZER_ADJ_DISABLE_MAX_SEEKS (2)
-#define OPTIMIZER_ADJ_DISABLE_FORCE_INDEX_GROUP_BY (4)
-
+#define OPTIMIZER_SWITCH_MRR_COST_BASED (1ULL << 17)
+#define OPTIMIZER_SWITCH_MRR_SORT_KEYS (1ULL << 18)
+#define OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE (1ULL << 19)
+#define OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE (1ULL << 20)
+#define OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL (1ULL << 21)
+#define OPTIMIZER_SWITCH_JOIN_CACHE_HASHED (1ULL << 22)
+#define OPTIMIZER_SWITCH_JOIN_CACHE_BKA (1ULL << 23)
+#define OPTIMIZER_SWITCH_OPTIMIZE_JOIN_BUFFER_SIZE (1ULL << 24)
+#define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1ULL << 25)
+#define OPTIMIZER_SWITCH_EXTENDED_KEYS (1ULL << 26)
+#define OPTIMIZER_SWITCH_EXISTS_TO_IN (1ULL << 27)
+#define OPTIMIZER_SWITCH_ORDERBY_EQ_PROP (1ULL << 28)
+#define OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_DERIVED (1ULL << 29)
+#define OPTIMIZER_SWITCH_SPLIT_MATERIALIZED (1ULL << 30)
+#define OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_SUBQUERY (1ULL << 31)
+#define OPTIMIZER_SWITCH_USE_ROWID_FILTER (1ULL << 32)
+#define OPTIMIZER_SWITCH_COND_PUSHDOWN_FROM_HAVING (1ULL << 33)
+#define OPTIMIZER_SWITCH_NOT_NULL_RANGE_SCAN (1ULL << 34)
+#define OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY (1ULL << 35)
+#define OPTIMIZER_SWITCH_CSET_NARROWING (1ULL << 36)
+#define OPTIMIZER_SWITCH_SARGABLE_CASEFOLD (1ULL << 37)
+
+#define OPTIMIZER_SWITCH_DEFAULT (OPTIMIZER_SWITCH_INDEX_MERGE | \
+ OPTIMIZER_SWITCH_INDEX_MERGE_UNION | \
+ OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION | \
+ OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT | \
+ OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN | \
+ OPTIMIZER_SWITCH_DERIVED_MERGE | \
+ OPTIMIZER_SWITCH_DERIVED_WITH_KEYS | \
+ OPTIMIZER_SWITCH_TABLE_ELIMINATION | \
+ OPTIMIZER_SWITCH_EXTENDED_KEYS | \
+ OPTIMIZER_SWITCH_IN_TO_EXISTS | \
+ OPTIMIZER_SWITCH_MATERIALIZATION | \
+ OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE|\
+ OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN|\
+ OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE | \
+ OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE | \
+ OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL | \
+ OPTIMIZER_SWITCH_JOIN_CACHE_HASHED | \
+ OPTIMIZER_SWITCH_JOIN_CACHE_BKA | \
+ OPTIMIZER_SWITCH_SUBQUERY_CACHE | \
+ OPTIMIZER_SWITCH_SEMIJOIN | \
+ OPTIMIZER_SWITCH_FIRSTMATCH | \
+ OPTIMIZER_SWITCH_LOOSE_SCAN | \
+ OPTIMIZER_SWITCH_EXISTS_TO_IN | \
+ OPTIMIZER_SWITCH_ORDERBY_EQ_PROP | \
+ OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_DERIVED | \
+ OPTIMIZER_SWITCH_SPLIT_MATERIALIZED | \
+ OPTIMIZER_SWITCH_COND_PUSHDOWN_FOR_SUBQUERY |\
+ OPTIMIZER_SWITCH_USE_ROWID_FILTER | \
+ OPTIMIZER_SWITCH_COND_PUSHDOWN_FROM_HAVING | \
+ OPTIMIZER_SWITCH_OPTIMIZE_JOIN_BUFFER_SIZE |\
+ OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY |\
+ OPTIMIZER_SWITCH_SARGABLE_CASEFOLD)
/*
Replication uses 8 bytes to store SQL_MODE in the binary log. The day you
use strictly more than 64 bits by adding one more define above, you should
diff --git a/sql/sql_reload.cc b/sql/sql_reload.cc
index f6f5cf20..0c0b863e 100644
--- a/sql/sql_reload.cc
+++ b/sql/sql_reload.cc
@@ -92,6 +92,8 @@ bool reload_acl_and_cache(THD *thd, unsigned long long options,
{
thd->thread_stack= (char*) &tmp_thd;
thd->store_globals();
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:reload_acl"),
+ default_charset_info);
}
if (likely(thd))
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index 114c36a5..8ca252c3 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -31,6 +31,7 @@
#include "semisync_master.h"
#include "semisync_slave.h"
#include "mysys_err.h"
+#include "gtid_index.h"
enum enum_gtid_until_state {
@@ -52,7 +53,7 @@ extern TYPELIB binlog_checksum_typelib;
static int
fake_event_header(String* packet, Log_event_type event_type, ulong extra_len,
my_bool *do_checksum, ha_checksum *crc, const char** errmsg,
- enum enum_binlog_checksum_alg checksum_alg_arg, uint32 end_pos)
+ enum_binlog_checksum_alg checksum_alg_arg, uint32 end_pos)
{
char header[LOG_EVENT_HEADER_LEN];
ulong event_len;
@@ -133,7 +134,7 @@ struct binlog_send_info {
enum_gtid_skip_type gtid_skip_group;
enum_gtid_until_state gtid_until_group;
ushort flags;
- enum enum_binlog_checksum_alg current_checksum_alg;
+ enum_binlog_checksum_alg current_checksum_alg;
bool slave_gtid_strict_mode;
bool send_fake_gtid_list;
bool slave_gtid_ignore_duplicates;
@@ -162,6 +163,7 @@ struct binlog_send_info {
bool clear_initial_log_pos;
bool should_stop;
size_t dirlen;
+ bool is_until_before_gtids;
binlog_send_info(THD *thd_arg, String *packet_arg, ushort flags_arg,
char *lfn)
@@ -180,7 +182,7 @@ struct binlog_send_info {
hb_info_counter(0),
#endif
clear_initial_log_pos(false),
- should_stop(false)
+ should_stop(false), is_until_before_gtids(false)
{
error_text[0] = 0;
bzero(&error_gtid, sizeof(error_gtid));
@@ -211,7 +213,7 @@ static int reset_transmit_packet(struct binlog_send_info *info, ushort flags,
*/
static int fake_rotate_event(binlog_send_info *info, ulonglong position,
- const char** errmsg, enum enum_binlog_checksum_alg checksum_alg_arg)
+ const char** errmsg, enum_binlog_checksum_alg checksum_alg_arg)
{
DBUG_ENTER("fake_rotate_event");
ulong ev_offset;
@@ -495,12 +497,12 @@ static bool is_slave_checksum_aware(THD * thd)
@param[in] thd THD to access a user variable
@return value of @@binlog_checksum alg according to
- @c enum enum_binlog_checksum_alg
+ @c enum_binlog_checksum_alg
*/
-static enum enum_binlog_checksum_alg get_binlog_checksum_value_at_connect(THD * thd)
+static enum_binlog_checksum_alg get_binlog_checksum_value_at_connect(THD * thd)
{
- enum enum_binlog_checksum_alg ret;
+ enum_binlog_checksum_alg ret;
DBUG_ENTER("get_binlog_checksum_value_at_connect");
user_var_entry *entry= get_binlog_checksum_uservar(thd);
@@ -585,22 +587,42 @@ void adjust_linfo_offsets(my_off_t purge_offset)
}
-static my_bool log_in_use_callback(THD *thd, const char *log_name)
+struct st_log_in_use
+{
+ const char *log_name;
+ uint connected_slaves;
+};
+
+static my_bool log_in_use_callback(THD *thd, st_log_in_use *arg)
{
my_bool result= 0;
- mysql_mutex_lock(&thd->LOCK_thd_data);
- if (auto linfo= thd->current_linfo)
- result= !strcmp(log_name, linfo->log_file_name);
- mysql_mutex_unlock(&thd->LOCK_thd_data);
+ const char *log_name= arg->log_name;
+ if (thd->current_linfo)
+ {
+ mysql_mutex_lock(&thd->LOCK_thd_data);
+ if (LOG_INFO *linfo= thd->current_linfo)
+ {
+ result= !strcmp(log_name, linfo->log_file_name);
+ if (linfo->log_file_name[0]) // If slave is active
+ arg->connected_slaves++;
+ }
+ mysql_mutex_unlock(&thd->LOCK_thd_data);
+ }
return result;
}
-bool log_in_use(const char* log_name)
+bool log_in_use(const char* log_name, uint min_connected)
{
- return server_threads.iterate(log_in_use_callback, log_name);
+ st_log_in_use arg;
+ arg.log_name= log_name;
+ arg.connected_slaves= 0;
+
+ return ((server_threads.iterate(log_in_use_callback, &arg) ||
+ arg.connected_slaves < min_connected));
}
+
bool purge_error_message(THD* thd, int res)
{
uint errcode;
@@ -808,6 +830,18 @@ get_slave_until_gtid(THD *thd, String *out_str)
return entry && entry->val_str(&null_value, out_str, 0) && !null_value;
}
+static bool
+get_slave_gtid_until_before_gtids(THD *thd)
+{
+ bool null_value;
+
+ const LEX_CSTRING name= { STRING_WITH_LEN("slave_gtid_until_before_gtids") };
+ user_var_entry *entry=
+ (user_var_entry*) my_hash_search(&thd->user_vars, (uchar*) name.str,
+ name.length);
+ return entry && entry->val_int(&null_value) && !null_value;
+}
+
/*
Function prepares and sends repliation heartbeat event.
@@ -826,7 +860,7 @@ get_slave_until_gtid(THD *thd, String *out_str)
static int send_heartbeat_event(binlog_send_info *info,
NET* net, String* packet,
const struct event_coordinates *coord,
- enum enum_binlog_checksum_alg checksum_alg_arg)
+ enum_binlog_checksum_alg checksum_alg_arg)
{
DBUG_ENTER("send_heartbeat_event");
@@ -1273,6 +1307,100 @@ end:
return err;
}
+
+/*
+ Helper function for gtid_find_binlog_pos() below.
+ Check a binlog file against a slave position. Use a GTID index if present.
+ Returns:
+ 0 This is the binlog file that contains the position. If *out_start_seek
+ is non-zero, it is the offset found in the GTID index at which to start
+ scanning the binlog file for events to send to the slave.
+ 1 This binlog file is too new to contain the given slave position.
+ -1 Error, *out_errormsg contains error string.
+
+ The *out_glev event must be deleted by the caller if set non-null.
+ */
+static int
+gtid_check_binlog_file(slave_connection_state *state,
+ Gtid_index_reader_hot *reader,
+ const binlog_file_entry *list,
+ bool *found_in_index, uint32 *out_start_seek,
+ uint32 *found_count,
+ char *out_name, Gtid_list_log_event **out_glev,
+ const char **out_errormsg)
+{
+ Gtid_list_log_event *glev= nullptr;
+ char buf[FN_REFLEN];
+ File file;
+ IO_CACHE cache;
+ int res= -1;
+
+ *found_in_index= false;
+ *out_glev= nullptr;
+ *out_errormsg= nullptr;
+ /*
+ Try to lookup the GTID position in the gtid index.
+ If that doesn't work, read the Gtid_list_log_event at the start of the
+ binlog file to get the binlog state.
+ */
+ if (normalize_binlog_name(buf, list->name.str, false))
+ {
+ *out_errormsg= "Failed to determine binlog file name while looking for "
+ "GTID position in binlog";
+ goto end;
+ }
+
+ if (likely(reader && !reader->open_index_file(buf)))
+ {
+ int lookup= reader->search_gtid_pos(state, out_start_seek, found_count);
+ reader->close_index_file();
+ if (lookup >= 0)
+ {
+ statistic_increment(binlog_gtid_index_hit, &LOCK_status);
+ if (lookup == 0)
+ res= 1;
+ else
+ {
+ strmake(out_name, buf, FN_REFLEN);
+ *found_in_index= true;
+ res= 0;
+ }
+ goto end;
+ }
+ /*
+ Error in the index lookup; fall back to reading the GTID_LIST event from
+ the binlog file and scan it from the beginning.
+ */
+ }
+ statistic_increment(binlog_gtid_index_miss, &LOCK_status);
+
+ bzero((char*) &cache, sizeof(cache));
+ if (unlikely((file= open_binlog(&cache, buf, out_errormsg)) == (File)-1))
+ goto end;
+ *out_errormsg= get_gtid_list_event(&cache, &glev);
+ end_io_cache(&cache);
+ mysql_file_close(file, MYF(MY_WME));
+ if (unlikely(*out_errormsg))
+ goto end;
+
+ if (!glev || contains_all_slave_gtid(state, glev))
+ {
+ strmake(out_name, buf, FN_REFLEN);
+ *out_glev= glev;
+ *out_errormsg= nullptr;
+ res= 0;
+ }
+ else
+ {
+ delete glev;
+ res= 1;
+ }
+
+end:
+ return res;
+}
+
+
/*
Find the name of the binlog file to start reading for a slave that connects
using GTID state.
@@ -1301,14 +1429,17 @@ end:
the requested GTID that was already purged.
*/
static const char *
-gtid_find_binlog_file(slave_connection_state *state, char *out_name,
- slave_connection_state *until_gtid_state)
+gtid_find_binlog_pos(slave_connection_state *state, char *out_name,
+ slave_connection_state *until_gtid_state,
+ rpl_binlog_state *until_binlog_state,
+ bool *found_in_index, uint32 *out_start_seek)
{
MEM_ROOT memroot;
binlog_file_entry *list;
Gtid_list_log_event *glev= NULL;
const char *errormsg= NULL;
- char buf[FN_REFLEN];
+ Gtid_index_reader_hot *reader= NULL;
+ *found_in_index= false;
init_alloc_root(PSI_INSTRUMENT_ME, &memroot,
10*(FN_REFLEN+sizeof(binlog_file_entry)), 0,
@@ -1319,48 +1450,41 @@ gtid_find_binlog_file(slave_connection_state *state, char *out_name,
goto end;
}
+ if (opt_binlog_gtid_index)
+ reader= new Gtid_index_reader_hot();
+
while (list)
{
- File file;
- IO_CACHE cache;
-
- if (!list->next)
- {
- /*
- It should be safe to read the currently used binlog, as we will only
- read the header part that is already written.
-
- But if that does not work on windows, then we will need to cache the
- event somewhere in memory I suppose - that could work too.
- */
- }
- /*
- Read the Gtid_list_log_event at the start of the binlog file to
- get the binlog state.
- */
- if (normalize_binlog_name(buf, list->name.str, false))
- {
- errormsg= "Failed to determine binlog file name while looking for "
- "GTID position in binlog";
- goto end;
- }
- bzero((char*) &cache, sizeof(cache));
- if (unlikely((file= open_binlog(&cache, buf, &errormsg)) == (File)-1))
- goto end;
- errormsg= get_gtid_list_event(&cache, &glev);
- end_io_cache(&cache);
- mysql_file_close(file, MYF(MY_WME));
- if (unlikely(errormsg))
+ uint32 found_count;
+ int res= gtid_check_binlog_file(state, reader, list, found_in_index,
+ out_start_seek, &found_count,
+ out_name, &glev, &errormsg);
+ if (res < 0)
goto end;
-
- if (!glev || contains_all_slave_gtid(state, glev))
+ if (res == 0)
{
- strmake(out_name, buf, FN_REFLEN);
-
- if (glev)
+ if (*found_in_index || glev)
{
uint32 i;
+ uint32 count;
+ rpl_gtid *gtids;
+ if (*found_in_index)
+ {
+ count= found_count;
+ gtids= reader->search_gtid_list();
+ /*
+ Load the initial GTID state corresponding to the position found in
+ the GTID index, as we will not have a GTID_LIST event to load it
+ from.
+ */
+ until_binlog_state->load(gtids, count);
+ }
+ else
+ {
+ count= glev->count;
+ gtids= glev->list;
+ }
/*
As a special case, we allow to start from binlog file N if the
requested GTID is the last event (in the corresponding domain) in
@@ -1372,9 +1496,9 @@ gtid_find_binlog_file(slave_connection_state *state, char *out_name,
from the UNTIL hash, to mark that such domains have already reached
their UNTIL condition.
*/
- for (i= 0; i < glev->count; ++i)
+ for (i= 0; i < count; ++i)
{
- const rpl_gtid *gtid= state->find(glev->list[i].domain_id);
+ const rpl_gtid *gtid= state->find(gtids[i].domain_id);
if (!gtid)
{
/*
@@ -1387,8 +1511,8 @@ gtid_find_binlog_file(slave_connection_state *state, char *out_name,
further GTIDs in the Gtid_list.
*/
DBUG_ASSERT(0);
- } else if (gtid->server_id == glev->list[i].server_id &&
- gtid->seq_no == glev->list[i].seq_no)
+ } else if (gtid->server_id == gtids[i].server_id &&
+ gtid->seq_no == gtids[i].seq_no)
{
/*
The slave requested to start from the very beginning of this
@@ -1399,9 +1523,9 @@ gtid_find_binlog_file(slave_connection_state *state, char *out_name,
}
if (until_gtid_state &&
- (gtid= until_gtid_state->find(glev->list[i].domain_id)) &&
- gtid->server_id == glev->list[i].server_id &&
- gtid->seq_no <= glev->list[i].seq_no)
+ (gtid= until_gtid_state->find(gtids[i].domain_id)) &&
+ gtid->server_id == gtids[i].server_id &&
+ gtid->seq_no <= gtids[i].seq_no)
{
/*
We've already reached the stop position in UNTIL for this domain,
@@ -1414,8 +1538,6 @@ gtid_find_binlog_file(slave_connection_state *state, char *out_name,
goto end;
}
- delete glev;
- glev= NULL;
list= list->next;
}
@@ -1428,11 +1550,56 @@ end:
if (glev)
delete glev;
+ if (reader)
+ delete reader;
+
free_root(&memroot, MYF(0));
return errormsg;
}
+static bool
+gtid_index_lookup_pos(const char *name, uint32 offset, uint32 *out_start_seek,
+ slave_connection_state *out_gtid_state)
+{
+ Gtid_index_reader_hot *reader= nullptr;
+ bool opened= false;
+ bool found= false;
+ uint32 found_offset, found_gtid_count;
+ rpl_gtid *found_gtids;
+ int res;
+
+ if (!(reader= new Gtid_index_reader_hot()) ||
+ reader->open_index_file(name))
+ {
+ statistic_increment(binlog_gtid_index_miss, &LOCK_status);
+ goto err;
+ }
+ opened= true;
+ res= reader->search_offset(offset, &found_offset, &found_gtid_count);
+ if (res <= 0)
+ {
+ statistic_increment(binlog_gtid_index_miss, &LOCK_status);
+ goto err;
+ }
+ statistic_increment(binlog_gtid_index_hit, &LOCK_status);
+
+ /* We found the position, initialize the state from the index. */
+ found_gtids= reader->search_gtid_list();
+ if (out_gtid_state->load(found_gtids, found_gtid_count))
+ goto err;
+ *out_start_seek= found_offset;
+ found= true;
+
+err:
+ if (opened)
+ reader->close_index_file();
+ if (reader)
+ delete reader;
+ return found;
+}
+
+
/*
Given an old-style binlog position with file name and file offset, find the
corresponding gtid position. If the offset is not at an event boundary, give
@@ -1452,12 +1619,26 @@ gtid_state_from_pos(const char *name, uint32 offset,
bool found_gtid_list_event= false;
bool found_format_description_event= false;
bool valid_pos= false;
- enum enum_binlog_checksum_alg current_checksum_alg= BINLOG_CHECKSUM_ALG_UNDEF;
+ enum_binlog_checksum_alg current_checksum_alg= BINLOG_CHECKSUM_ALG_UNDEF;
int err;
String packet;
Format_description_log_event *fdev= NULL;
+ bool found_in_index;
+ uint32 UNINIT_VAR(start_seek);
+ bool seek_done= false;
- if (unlikely(gtid_state->load((const rpl_gtid *)NULL, 0)))
+ /*
+ Try to lookup the position in the binlog gtid index. If found (as it will
+ usually be unless the index is corrupted somehow), we can seek directly to
+ a point at or just before the desired location, saving an expensive scan
+ of the binlog file from the start.
+ */
+ found_in_index= opt_binlog_gtid_index ?
+ gtid_index_lookup_pos(name, offset, &start_seek, gtid_state) :
+ false;
+ if (found_in_index)
+ found_gtid_list_event= true;
+ else if (unlikely(gtid_state->load((const rpl_gtid *)NULL, 0)))
{
errormsg= "Internal error (out of memory?) initializing slave state "
"while scanning binlog to find start position";
@@ -1467,7 +1648,7 @@ gtid_state_from_pos(const char *name, uint32 offset,
if (unlikely((file= open_binlog(&cache, name, &errormsg)) == (File)-1))
return errormsg;
- if (!(fdev= new Format_description_log_event(3)))
+ if (!(fdev= new Format_description_log_event(4)))
{
errormsg= "Out of memory initializing format_description event "
"while scanning binlog to find start position";
@@ -1546,6 +1727,25 @@ gtid_state_from_pos(const char *name, uint32 offset,
errormsg= "Could not start decryption of binlog.";
goto end;
}
+ if (found_in_index && !seek_done)
+ {
+ /*
+ Just to avoid a redundant event read before hitting the next branch.
+ ToDo: share this code with the below somehow.
+ */
+ my_b_seek(&cache, start_seek);
+ seek_done= true;
+ }
+ }
+ else if (found_in_index && !seek_done)
+ {
+ /*
+ After reading the format_description event and possibly
+ start_encryption, we can seek forward to avoid most or all of the scan
+ (depending on the sparseness of the index).
+ */
+ my_b_seek(&cache, start_seek);
+ seek_done= true;
}
else if (unlikely(typ != FORMAT_DESCRIPTION_EVENT &&
!found_format_description_event))
@@ -1557,7 +1757,7 @@ gtid_state_from_pos(const char *name, uint32 offset,
else if (typ == ROTATE_EVENT || typ == STOP_EVENT ||
typ == BINLOG_CHECKPOINT_EVENT)
continue; /* Continue looking */
- else if (typ == GTID_LIST_EVENT)
+ else if (typ == GTID_LIST_EVENT && !found_in_index)
{
rpl_gtid *gtid_list;
bool status;
@@ -1722,7 +1922,7 @@ send_event_to_slave(binlog_send_info *info, Log_event_type event_type,
String* const packet= info->packet;
size_t len= packet->length();
int mariadb_slave_capability= info->mariadb_slave_capability;
- enum enum_binlog_checksum_alg current_checksum_alg= info->current_checksum_alg;
+ enum_binlog_checksum_alg current_checksum_alg= info->current_checksum_alg;
slave_connection_state *gtid_state= &info->gtid_state;
slave_connection_state *until_gtid_state= info->until_gtid_state;
bool need_sync= false;
@@ -1785,7 +1985,7 @@ send_event_to_slave(binlog_send_info *info, Log_event_type event_type,
}
});
- if (info->until_binlog_state.update_nolock(&event_gtid, false))
+ if (info->until_binlog_state.update_nolock(&event_gtid))
{
info->error= ER_MASTER_FATAL_ERROR_READING_BINLOG;
return "Failed in internal GTID book-keeping: Out of memory";
@@ -1867,8 +2067,9 @@ send_event_to_slave(binlog_send_info *info, Log_event_type event_type,
This domain already reached the START SLAVE UNTIL stop condition,
so skip this event group.
*/
- info->gtid_skip_group = (flags2 & Gtid_log_event::FL_STANDALONE ?
- GTID_SKIP_STANDALONE : GTID_SKIP_TRANSACTION);
+ info->gtid_skip_group= (flags2 & Gtid_log_event::FL_STANDALONE
+ ? GTID_SKIP_STANDALONE
+ : GTID_SKIP_TRANSACTION);
}
else if (event_gtid.server_id == gtid->server_id &&
event_gtid.seq_no >= gtid->seq_no)
@@ -1885,14 +2086,19 @@ send_event_to_slave(binlog_send_info *info, Log_event_type event_type,
info->gtid_until_group= (flags2 & Gtid_log_event::FL_STANDALONE ?
GTID_UNTIL_STOP_AFTER_STANDALONE :
GTID_UNTIL_STOP_AFTER_TRANSACTION);
- if (event_gtid.seq_no > until_seq_no)
+ if (event_gtid.seq_no > until_seq_no ||
+ info->is_until_before_gtids)
{
/*
+ Stop processing events now and skip the current event group
+ because either:
+
The GTID in START SLAVE UNTIL condition is missing in our binlog.
This should normally not happen (user error), but since we can be
sure that we are now beyond the position that the UNTIL condition
- should be in, we can just stop now. And we also need to skip this
- event group (as it is beyond the UNTIL condition).
+ should be in, we can just stop now.
+
+ Or the until condition is specified as SQL_BEFORE_GTIDS
*/
info->gtid_skip_group = (flags2 & Gtid_log_event::FL_STANDALONE ?
GTID_SKIP_STANDALONE : GTID_SKIP_TRANSACTION);
@@ -2139,7 +2345,10 @@ static int init_binlog_sender(binlog_send_info *info,
info->slave_gtid_strict_mode= get_slave_gtid_strict_mode(thd);
info->slave_gtid_ignore_duplicates= get_slave_gtid_ignore_duplicates(thd);
if (get_slave_until_gtid(thd, &slave_until_gtid_str))
+ {
info->until_gtid_state= &info->until_gtid_state_obj;
+ info->is_until_before_gtids= get_slave_gtid_until_before_gtids(thd);
+ }
}
DBUG_EXECUTE_IF("binlog_force_reconnect_after_22_events",
@@ -2176,6 +2385,8 @@ static int init_binlog_sender(binlog_send_info *info,
char search_file_name[FN_REFLEN];
const char *name=search_file_name;
+ bool found_in_index= false;
+ uint32 start_seek= 0;
if (info->using_gtid_state)
{
if (info->gtid_state.load(connect_gtid_state.ptr(),
@@ -2201,16 +2412,26 @@ static int init_binlog_sender(binlog_send_info *info,
info->error= error;
return 1;
}
- if ((info->errmsg= gtid_find_binlog_file(&info->gtid_state,
- search_file_name,
- info->until_gtid_state)))
+ if ((info->errmsg= gtid_find_binlog_pos(&info->gtid_state,
+ search_file_name,
+ info->until_gtid_state,
+ &info->until_binlog_state,
+ &found_in_index, &start_seek)))
{
info->error= ER_MASTER_FATAL_ERROR_READING_BINLOG;
return 1;
}
- /* start from beginning of binlog file */
- *pos = 4;
+ if (found_in_index)
+ {
+ /* Start from a position looked up in the binlog gtid index. */
+ *pos = start_seek;
+ }
+ else
+ {
+ /* start from beginning of binlog file */
+ *pos = 4;
+ }
}
else
{
@@ -2273,7 +2494,7 @@ static int send_format_descriptor_event(binlog_send_info *info, IO_CACHE *log,
if (info->fdev != NULL)
delete info->fdev;
- if (!(info->fdev= new Format_description_log_event(3)))
+ if (!(info->fdev= new Format_description_log_event(4)))
{
info->errmsg= "Out of memory initializing format_description event";
info->error= ER_MASTER_FATAL_ERROR_READING_BINLOG;
@@ -2796,6 +3017,7 @@ static int send_events(binlog_send_info *info, IO_CACHE* log, LOG_INFO* linfo,
* return 0 - OK
* 1 - NOK
*/
+
static int send_one_binlog_file(binlog_send_info *info,
IO_CACHE* log,
LOG_INFO* linfo,
@@ -2810,6 +3032,8 @@ static int send_one_binlog_file(binlog_send_info *info,
linfo->pos= start_pos;
}
+ /* Counter used by can_purge_log() */
+ sending_new_binlog_file++;
while (!should_stop(info))
{
/**
@@ -2837,6 +3061,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos,
ushort flags)
{
LOG_INFO linfo;
+ ulong ev_offset;
IO_CACHE log;
File file = -1;
@@ -2962,6 +3187,34 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos,
if (info->until_gtid_state && info->until_gtid_state->count() == 0)
info->gtid_until_group= GTID_UNTIL_STOP_AFTER_STANDALONE;
+ if (info->using_gtid_state && pos > BIN_LOG_HEADER_SIZE &&
+ ( info->gtid_state.is_pos_reached() ||
+ info->gtid_until_group == GTID_UNTIL_STOP_AFTER_STANDALONE ) )
+ {
+ /*
+ We are starting a GTID connect from a point not at the start of the
+ binlog file (from a GTID index lookup). Send a fake GTID_LIST event
+ in place of the real GTID_LIST that would normally be sent from the
+ start of the binlog file.
+
+ If we already reached the gtid UNTIL position, then set the
+ FLAG_UNTIL_REACHED in the GTID_LIST event and stop immediately.
+ */
+ uint32 flag= 0;
+ if (info->gtid_until_group == GTID_UNTIL_STOP_AFTER_STANDALONE)
+ {
+ flag= Gtid_list_log_event::FLAG_UNTIL_REACHED;
+ info->should_stop= true;
+ }
+ Gtid_list_log_event glev(&info->until_binlog_state, flag);
+ if (reset_transmit_packet(info, info->flags, &ev_offset, &info->errmsg) ||
+ fake_gtid_list_event(info, &glev, &info->errmsg, (int32)pos))
+ {
+ info->error= ER_MASTER_FATAL_ERROR_READING_BINLOG;
+ goto err;
+ }
+ }
+
THD_STAGE_INFO(thd, stage_sending_binlog_event_to_slave);
if (send_one_binlog_file(info, &log, &linfo, pos))
break;
@@ -3227,6 +3480,7 @@ int start_slave(THD* thd , Master_info* mi, bool net_report)
goto err;
}
mi->rli.until_condition= Relay_log_info::UNTIL_GTID;
+ mi->rli.is_until_before_gtids= thd->lex->mi.is_until_before_gtids;
}
else
mi->rli.clear_until_condition();
@@ -4169,7 +4423,7 @@ bool mysql_show_binlog_events(THD* thd)
Master_info *mi= 0;
LOG_INFO linfo;
LEX_MASTER_INFO *lex_mi= &thd->lex->mi;
- enum enum_binlog_checksum_alg checksum_alg;
+ enum_binlog_checksum_alg checksum_alg;
my_off_t binlog_size;
MY_STAT s;
@@ -4201,7 +4455,7 @@ bool mysql_show_binlog_events(THD* thd)
}
Format_description_log_event *description_event= new
- Format_description_log_event(3); /* MySQL 4.0 by default */
+ Format_description_log_event(4);
if (binary_log->is_open())
{
@@ -4305,7 +4559,7 @@ bool mysql_show_binlog_events(THD* thd)
if (lex_mi->pos > BIN_LOG_HEADER_SIZE)
{
- checksum_alg= description_event->checksum_alg;
+ checksum_alg= description_event->used_checksum_alg;
/* Validate user given position using checksum */
if (checksum_alg != BINLOG_CHECKSUM_ALG_OFF &&
checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
diff --git a/sql/sql_repl.h b/sql/sql_repl.h
index 3be1e18c..51b6a599 100644
--- a/sql/sql_repl.h
+++ b/sql/sql_repl.h
@@ -38,7 +38,7 @@ int reset_master(THD* thd, rpl_gtid *init_state, uint32 init_state_len,
ulong next_log_number);
bool purge_master_logs(THD* thd, const char* to_log);
bool purge_master_logs_before_date(THD* thd, time_t purge_time);
-bool log_in_use(const char* log_name);
+bool log_in_use(const char* log_name, uint min_connections);
void adjust_linfo_offsets(my_off_t purge_offset);
void show_binlogs_get_fields(THD *thd, List<Item> *field_list);
bool show_binlogs(THD* thd);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 593ee900..45cd5a30 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -47,6 +47,7 @@
// print_sjm, print_plan, TEST_join
#include "records.h" // init_read_record, end_read_record
#include "filesort.h" // filesort_free_buffers
+#include "filesort_utils.h" // get_qsort_sort_cost
#include "sql_union.h" // mysql_union
#include "opt_subselect.h"
#include "sql_derived.h"
@@ -69,6 +70,8 @@
#include "opt_trace.h"
#include "derived_handler.h"
#include "create_tmp_table.h"
+#include "optimizer_defaults.h"
+#include "derived_handler.h"
/*
A key part number that means we're using a fulltext scan.
@@ -83,6 +86,39 @@
*/
#define FT_KEYPART (MAX_FIELDS+10)
+/*
+ We assume that when we do hash join, only 10 % rows in the hash will
+ match the current found row.
+*/
+#define HASH_FANOUT 0.1
+
+/*
+ The following is used to check that A <= B, but with some margin as the
+ calculation is done slightly differently (mathematically correct, but
+ double calculations are not exact).
+ This is only used when comparing read rows and output rows, which
+ means that we can assume that both values are >= 0 and B cannot be notable
+ smaller than A.
+*/
+
+#define crash_if_first_double_is_bigger(A,B) DBUG_ASSERT(((A) == 0.0 && (B) == 0.0) || (A)/(B) < 1.0000001)
+
+#define double_to_rows(A) ((A) >= ((double)HA_ROWS_MAX) ? HA_ROWS_MAX : (ha_rows) (A))
+
+#define double_to_ulonglong(A) ((A) >= ((double)ULONGLONG_MAX) ? ULONGLONG_MAX : (ulonglong) (A))
+
+/* Used to ensure that costs are calculate the same way */
+inline bool compare_cost(double a, double b)
+{
+ DBUG_ASSERT(a >= 0.0 && b >= 0.0);
+ return (a >= b - b/10000000.0 && a <= b+b/10000000.0);
+}
+
+inline double safe_filtered(double a, double b)
+{
+ return b != 0 ? a/b*100.0 : 0.0;
+}
+
const char *join_type_str[]={ "UNKNOWN","system","const","eq_ref","ref",
"MAYBE_REF","ALL","range","index","fulltext",
"ref_or_null","unique_subquery","index_subquery",
@@ -233,7 +269,6 @@ static COND *make_cond_for_table_from_pred(THD *thd, Item *root_cond,
bool is_top_and_level);
static Item* part_of_refkey(TABLE *form,Field *field);
-uint find_shortest_key(TABLE *table, const key_map *usable_keys);
static bool test_if_cheaper_ordering(const JOIN_TAB *tab,
ORDER *order, TABLE *table,
key_map usable_keys, int key,
@@ -307,8 +342,9 @@ static JOIN_TAB *next_breadth_first_tab(JOIN_TAB *first_top_tab,
static bool find_order_in_list(THD *, Ref_ptr_array, TABLE_LIST *, ORDER *,
List<Item> &, List<Item> &, bool, bool, bool);
-static double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
- table_map rem_tables);
+static double table_after_join_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
+ table_map rem_tables,
+ double *records_out);
void set_postjoin_aggr_write_func(JOIN_TAB *tab);
static Item **get_sargable_cond(JOIN *join, TABLE *table);
@@ -328,6 +364,9 @@ static void fix_items_after_optimize(THD *thd, SELECT_LEX *select_lex);
static void optimize_rownum(THD *thd, SELECT_LEX_UNIT *unit, Item *cond);
static bool process_direct_rownum_comparison(THD *thd, SELECT_LEX_UNIT *unit,
Item *cond);
+static double prev_record_reads(const POSITION *positions, uint idx,
+ table_map found_ref, double record_count,
+ double *same_keys);
#ifndef DBUG_OFF
@@ -358,8 +397,8 @@ void dbug_serve_apcs(THD *thd, int n_calls)
Intended usage:
DBUG_EXECUTE_IF("show_explain_probe_2",
- if (dbug_user_var_equals_int(thd, "select_id", select_id))
- dbug_serve_apcs(thd, 1);
+ if (dbug_user_var_equals_int(thd, "select_id", select_id))
+ dbug_serve_apcs(thd, 1);
);
*/
@@ -413,10 +452,12 @@ bool dbug_user_var_equals_str(THD *thd, const char *name, const char* value)
POSITION::POSITION()
{
table= 0;
- records_read= cond_selectivity= read_time= 0.0;
+ records_read= cond_selectivity= read_time= records_out= records_init= 0.0;
prefix_record_count= 0.0;
key= 0;
+ forced_index= 0;
use_join_buffer= 0;
+ firstmatch_with_join_buf= false;
sj_strategy= SJ_OPT_NONE;
n_sj_tables= 0;
spl_plan= 0;
@@ -512,7 +553,6 @@ void JOIN::init(THD *thd_arg, List<Item> &fields_arg,
no_const_tables= FALSE;
first_select= sub_select;
- set_group_rpa= false;
group_sent= 0;
outer_ref_cond= pseudo_bits_cond= NULL;
@@ -523,6 +563,7 @@ void JOIN::init(THD *thd_arg, List<Item> &fields_arg,
sjm_scan_tables= 0;
is_orig_degenerated= false;
with_ties_order_count= 0;
+ prepared= false;
};
@@ -537,9 +578,10 @@ static void trace_table_dependencies(THD *thd,
{
TABLE_LIST *table_ref= join_tabs[i].tab_list;
Json_writer_object trace_one_table(thd);
- trace_one_table.add_table_name(&join_tabs[i]);
- trace_one_table.add("row_may_be_null",
- (bool)table_ref->table->maybe_null);
+ trace_one_table.
+ add_table_name(&join_tabs[i]).
+ add("row_may_be_null",
+ (bool)table_ref->table->maybe_null);
const table_map map= table_ref->get_map();
DBUG_ASSERT(map < (1ULL << table_count));
for (uint j= 0; j < table_count; j++)
@@ -726,7 +768,7 @@ fix_inner_refs(THD *thd, List<Item> &all_fields, SELECT_LEX *select,
else
{
for (sum_func= ref->in_sum_func; sum_func &&
- sum_func->aggr_level >= select->nest_level;
+ sum_func->aggr_level >= select->nest_level;
sum_func= sum_func->in_sum_func)
{
if (sum_func->aggr_level == select->nest_level)
@@ -1522,7 +1564,7 @@ JOIN::prepare(TABLE_LIST *tables_init, COND *conds_init, uint og_num,
}
}
- if (setup_fields(thd, ref_ptrs, fields_list, MARK_COLUMNS_READ,
+ if (setup_fields(thd, ref_ptrs, fields_list, select_lex->item_list_usage,
&all_fields, &select_lex->pre_fix, 1))
DBUG_RETURN(-1);
thd->lex->current_select->context_analysis_place= save_place;
@@ -1801,7 +1843,7 @@ JOIN::prepare(TABLE_LIST *tables_init, COND *conds_init, uint og_num,
}
}
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
{
Json_writer_object trace_wrapper(thd);
opt_trace_print_expanded_query(thd, select_lex, &trace_wrapper);
@@ -1810,9 +1852,12 @@ JOIN::prepare(TABLE_LIST *tables_init, COND *conds_init, uint og_num,
if (!procedure && result && result->prepare(fields_list, unit_arg))
goto err; /* purecov: inspected */
+ select_lex->where_cond_after_prepare= conds;
+
unit= unit_arg;
if (prepare_stage2())
goto err;
+ prepared= true;
DBUG_RETURN(0); // All OK
@@ -1914,6 +1959,10 @@ int JOIN::optimize()
join_optimization_state init_state= optimization_state;
if (select_lex->pushdown_select)
{
+ if (optimization_state == JOIN::OPTIMIZATION_DONE)
+ return 0;
+ DBUG_ASSERT(optimization_state == JOIN::NOT_OPTIMIZED);
+
// Do same as JOIN::optimize_inner does:
fields= &select_lex->item_list;
@@ -1941,6 +1990,13 @@ int JOIN::optimize()
res= build_explain();
optimization_state= JOIN::OPTIMIZATION_DONE;
}
+
+ /*
+ Store the cost of this query into a user variable
+ TODO: calculate a correct cost for a query with subqueries and UNIONs.
+ */
+ if (select_lex->select_number == 1)
+ thd->status_var.last_query_cost= best_read;
return res;
}
@@ -1983,9 +2039,9 @@ bool JOIN::make_range_rowid_filters()
continue;
DBUG_ASSERT(!(tab->ref.key >= 0 &&
- tab->ref.key == (int) tab->range_rowid_filter_info->key_no));
+ tab->ref.key == (int) tab->range_rowid_filter_info->get_key_no()));
DBUG_ASSERT(!(tab->ref.key == -1 && tab->quick &&
- tab->quick->index == tab->range_rowid_filter_info->key_no));
+ tab->quick->index == tab->range_rowid_filter_info->get_key_no()));
int err;
SQL_SELECT *sel= NULL;
@@ -1998,10 +2054,8 @@ bool JOIN::make_range_rowid_filters()
key_map filter_map;
filter_map.clear_all();
- filter_map.set_bit(tab->range_rowid_filter_info->key_no);
+ filter_map.set_bit(tab->range_rowid_filter_info->get_key_no());
filter_map.merge(tab->table->with_impossible_ranges);
- bool force_index_save= tab->table->force_index;
- tab->table->force_index= true;
quick_select_return rc;
/*
EQ_FUNC and EQUAL_FUNC already sent unusable key notes (if any)
@@ -2011,7 +2065,6 @@ bool JOIN::make_range_rowid_filters()
rc= sel->test_quick_select(thd, filter_map, (table_map) 0,
(ha_rows) HA_POS_ERROR, true, false, true,
true, Item_func::BITMAP_EXCEPT_ANY_EQUALITY);
- tab->table->force_index= force_index_save;
if (rc == SQL_SELECT::ERROR || thd->is_error())
{
DBUG_RETURN(true); /* Fatal error */
@@ -2036,7 +2089,10 @@ bool JOIN::make_range_rowid_filters()
tab->range_rowid_filter_info,
filter_container, sel);
if (tab->rowid_filter)
+ {
+ tab->need_to_build_rowid_filter= true;
continue;
+ }
}
no_filter:
if (sel->quick)
@@ -2064,24 +2120,23 @@ bool JOIN::make_range_rowid_filters()
bool
JOIN::init_range_rowid_filters()
{
- DBUG_ENTER("init_range_rowid_filters");
-
JOIN_TAB *tab;
+ DBUG_ENTER("init_range_rowid_filters");
for (tab= first_linear_tab(this, WITH_BUSH_ROOTS, WITHOUT_CONST_TABLES);
tab;
tab= next_linear_tab(this, tab, WITH_BUSH_ROOTS))
{
+ tab->need_to_build_rowid_filter= false; // Safety
if (!tab->rowid_filter)
continue;
if (tab->rowid_filter->get_container()->alloc())
{
- delete tab->rowid_filter;
- tab->rowid_filter= 0;
+ tab->clear_range_rowid_filter();
continue;
}
tab->table->file->rowid_filter_push(tab->rowid_filter);
- tab->is_rowid_filter_built= false;
+ tab->need_to_build_rowid_filter= true;
}
DBUG_RETURN(0);
}
@@ -2103,6 +2158,7 @@ JOIN::optimize_inner()
{
DBUG_ENTER("JOIN::optimize_inner");
subq_exit_fl= false;
+ best_read= 0.0;
DEBUG_SYNC(thd, "before_join_optimize");
THD_STAGE_INFO(thd, stage_optimizing);
@@ -2322,7 +2378,8 @@ JOIN::optimize_inner()
(see build_equal_items() below) because it can be not rebuilt
at second invocation.
*/
- if (!thd->stmt_arena->is_conventional() && thd->mem_root != thd->stmt_arena->mem_root)
+ if (!thd->stmt_arena->is_conventional() &&
+ thd->mem_root != thd->stmt_arena->mem_root)
for (TABLE_LIST *tbl= tables_list; tbl; tbl= tbl->next_local)
if (tbl->table && tbl->on_expr && tbl->table->versioned())
{
@@ -2331,6 +2388,14 @@ JOIN::optimize_inner()
}
transform_in_predicates_into_equalities(thd);
+ if (thd->lex->are_date_funcs_used())
+ transform_date_conds_into_sargable();
+
+ if (optimizer_flag(thd, OPTIMIZER_SWITCH_SARGABLE_CASEFOLD))
+ {
+ transform_all_conds_and_on_exprs(
+ thd, &Item::varchar_upper_cmp_transformer);
+ }
conds= optimize_cond(this, conds, join_list, ignore_on_expr,
&cond_value, &cond_equal, OPT_LINK_EQUAL_FIELDS);
@@ -2667,8 +2732,12 @@ int JOIN::optimize_stage2()
if (select_lex->handle_derived(thd->lex, DT_OPTIMIZE))
DBUG_RETURN(1);
- if (optimizer_flag(thd, OPTIMIZER_SWITCH_DERIVED_WITH_KEYS))
- drop_unused_derived_keys();
+ /*
+ We have to call drop_unused_derived_keys() even if we don't have any
+ generated keys (enabled with OPTIMIZER_SWITCH_DERIVED_WITH_KEYS)
+ as we may still have unique constraints we have to get rid of.
+ */
+ drop_unused_derived_keys();
if (rollup.state != ROLLUP::STATE_NONE)
{
@@ -2701,7 +2770,7 @@ int JOIN::optimize_stage2()
goto setup_subq_exit;
}
if (!(thd->variables.option_bits & OPTION_BIG_SELECTS) &&
- best_read > (double) thd->variables.max_join_size &&
+ join_record_count > (double) thd->variables.max_join_size &&
!(select_options & SELECT_DESCRIBE))
{ /* purecov: inspected */
my_message(ER_TOO_BIG_SELECT, ER_THD(thd, ER_TOO_BIG_SELECT), MYF(0));
@@ -3279,6 +3348,8 @@ int JOIN::optimize_stage2()
*/
if ((order || group_list) &&
tab->type != JT_ALL &&
+ tab->type != JT_RANGE &&
+ tab->type != JT_NEXT &&
tab->type != JT_FT &&
tab->type != JT_REF_OR_NULL &&
((order && simple_order) || (group_list && simple_group)))
@@ -3674,7 +3745,7 @@ bool JOIN::make_aggr_tables_info()
TABLE* table= create_tmp_table(thd, curr_tab->tmp_table_param,
all_fields,
NULL, distinct,
- TRUE, select_options, HA_POS_ERROR,
+ TRUE, select_options, HA_ROWS_MAX,
&empty_clex_str, !need_tmp,
keep_row_order);
if (!table)
@@ -4163,7 +4234,14 @@ bool JOIN::make_aggr_tables_info()
*/
if (unit->lim.is_with_ties())
{
- if (alloc_order_fields(this, order, with_ties_order_count))
+ /*
+ When ORDER BY is eliminated, we make use of the GROUP BY list.
+ We've already counted how many elements from ORDER BY
+ must be evaluated as part of WITH TIES so we use that.
+ */
+ ORDER *order_src = order ? order : group_list;
+ if (alloc_order_fields(this, order_src,
+ with_ties_order_count))
DBUG_RETURN(true);
}
@@ -4330,14 +4408,13 @@ bool
JOIN::add_sorting_to_table(JOIN_TAB *tab, ORDER *order)
{
tab->filesort=
- new (thd->mem_root) Filesort(order, HA_POS_ERROR, tab->keep_current_rowid,
+ new (thd->mem_root) Filesort(order, HA_ROWS_MAX, tab->keep_current_rowid,
tab->select);
if (!tab->filesort)
return true;
TABLE *table= tab->table;
if ((tab == join_tab + const_tables) &&
- table->pos_in_table_list &&
table->pos_in_table_list->is_sjm_scan_table())
{
tab->filesort->set_all_read_bits= TRUE;
@@ -4512,6 +4589,15 @@ bool JOIN::shrink_join_buffers(JOIN_TAB *jt,
}
buff_size= cache->get_join_buffer_size();
curr_space-= buff_size;
+ if (needed_space < buff_size)
+ {
+ /*
+ Safety: fail if we've exhausted available buffer space with
+ reduced join buffers.
+ */
+ DBUG_ASSERT(0);
+ return TRUE;
+ }
needed_space-= buff_size;
}
}
@@ -4553,7 +4639,6 @@ JOIN::reinit()
if (current_ref_ptrs != items0)
{
set_items_ref_array(items0);
- set_group_rpa= false;
}
/* need to reset ref access state (see join_read_key) */
@@ -4698,8 +4783,9 @@ bool JOIN::save_explain_data(Explain_query *output, bool can_overwrite,
}
-void JOIN::exec()
+int JOIN::exec()
{
+ int res;
DBUG_EXECUTE_IF("show_explain_probe_join_exec_start",
if (dbug_user_var_equals_int(thd,
"show_explain_probe_select_id",
@@ -4707,7 +4793,7 @@ void JOIN::exec()
dbug_serve_apcs(thd, 1);
);
ANALYZE_START_TRACKING(thd, &explain->time_tracker);
- exec_inner();
+ res= exec_inner();
ANALYZE_STOP_TRACKING(thd, &explain->time_tracker);
DBUG_EXECUTE_IF("show_explain_probe_join_exec_end",
@@ -4716,10 +4802,11 @@ void JOIN::exec()
select_lex->select_number))
dbug_serve_apcs(thd, 1);
);
+ return res;
}
-void JOIN::exec_inner()
+int JOIN::exec_inner()
{
List<Item> *columns_list= &fields_list;
DBUG_ENTER("JOIN::exec_inner");
@@ -4753,14 +4840,13 @@ void JOIN::exec_inner()
if (procedure->change_columns(thd, procedure_fields_list) ||
result->prepare(procedure_fields_list, unit))
{
- thd->set_examined_row_count(0);
thd->limit_found_rows= 0;
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
}
columns_list= &procedure_fields_list;
}
if (result->prepare2(this))
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
if (!tables_list && (table_count || !select_lex->with_sum_func) &&
!select_lex->have_window_funcs())
@@ -4774,7 +4860,7 @@ void JOIN::exec_inner()
Protocol::SEND_NUM_ROWS |
Protocol::SEND_EOF))
{
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
/*
@@ -4811,8 +4897,7 @@ void JOIN::exec_inner()
}
/* Single select (without union) always returns 0 or 1 row */
thd->limit_found_rows= send_records;
- thd->set_examined_row_count(0);
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
/*
@@ -4832,7 +4917,7 @@ void JOIN::exec_inner()
if (unlikely(thd->is_error()))
{
error= thd->is_error();
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
if (zero_result_cause)
@@ -4856,7 +4941,7 @@ void JOIN::exec_inner()
select_options,
zero_result_cause,
having ? having : tmp_having, &all_fields);
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
}
}
@@ -4880,14 +4965,14 @@ void JOIN::exec_inner()
if (unlikely(thd->is_error()))
{
error= thd->is_error();
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
}
}
if ((this->select_lex->options & OPTION_SCHEMA_TABLE) &&
get_schema_tables_result(this, PROCESSED_BY_JOIN_EXEC))
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
if (select_options & SELECT_DESCRIBE)
{
@@ -4895,13 +4980,13 @@ void JOIN::exec_inner()
order != 0 && !skip_sort_order,
select_distinct,
!table_count ? "No tables used" : NullS);
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
}
else if (select_lex->pushdown_select)
{
/* Execute the query pushed into a foreign engine */
error= select_lex->pushdown_select->execute();
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
else
{
@@ -4909,18 +4994,11 @@ void JOIN::exec_inner()
select_lex->mark_const_derived(zero_result_cause);
}
- /*
- Initialize examined rows here because the values from all join parts
- must be accumulated in examined_row_count. Hence every join
- iteration must count from zero.
- */
- join_examined_rows= 0;
-
/* XXX: When can we have here thd->is_error() not zero? */
if (unlikely(thd->is_error()))
{
error= thd->is_error();
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
THD_STAGE_INFO(thd, stage_sending_data);
@@ -4931,11 +5009,12 @@ void JOIN::exec_inner()
error= result->view_structure_only() ? false : do_select(this, procedure);
/* Accumulate the counts from all join iterations of all join parts. */
- thd->inc_examined_row_count(join_examined_rows);
+ thd->ps_report_examined_row_count();
+
DBUG_PRINT("counts", ("thd->examined_row_count: %lu",
(ulong) thd->get_examined_row_count()));
- DBUG_VOID_RETURN;
+ DBUG_RETURN(error);
}
@@ -5007,9 +5086,20 @@ void JOIN::cleanup_item_list(List<Item> &items) const
/**
@brief
- Look for provision of the select_handler interface by a foreign engine
-
- @param thd The thread handler
+ Look for provision of the select_handler interface by a foreign engine.
+ Must not be called directly, use find_single_select_handler() or
+ find_partial_select_handler() instead.
+
+ @param
+ thd The thread handler
+ select_lex SELECT_LEX object, must be passed in the cases of:
+ - single select pushdown
+ - partial pushdown (part of a UNION/EXCEPT/INTERSECT)
+ Must be NULL in case of entire unit pushdown
+ select_lex_unit SELECT_LEX_UNIT object, must be passed in the cases of:
+ - entire unit pushdown
+ - partial pushdown (part of a UNION/EXCEPT/INTERSECT)
+ Must be NULL in case of single select pushdown
@details
The function checks that this is an upper level select and if so looks
@@ -5017,20 +5107,30 @@ void JOIN::cleanup_item_list(List<Item> &items) const
create_select call-back function. If the call of this function returns
a select_handler interface object then the server will push the select
query into this engine.
- This is a responsibility of the create_select call-back function to
- check whether the engine can execute the query.
+ This function does not check if the select has tables from
+ different engines. Such a check must be done inside each engine's
+ create_select function.
+ Also the engine's create_select function must perform other checks
+ to make sure the engine can execute the query.
@retval the found select_handler if the search is successful
0 otherwise
*/
-select_handler *find_select_handler(THD *thd,
- SELECT_LEX* select_lex)
+static
+select_handler *find_select_handler_inner(THD *thd,
+ SELECT_LEX *select_lex,
+ SELECT_LEX_UNIT *select_lex_unit)
{
- if (select_lex->next_select())
- return 0;
- if (select_lex->master_unit()->outer_select())
+ if (select_lex->master_unit()->outer_select() ||
+ (select_lex_unit && select_lex->master_unit()->with_clause))
+ {
+ /*
+ Pushdown is not supported neither for non-top-level SELECTs nor for parts
+ of SELECT_LEX_UNITs that have CTEs (SELECT_LEX_UNIT::with_clause)
+ */
return 0;
+ }
TABLE_LIST *tbl= nullptr;
// For SQLCOM_INSERT_SELECT the server takes TABLE_LIST
@@ -5055,14 +5155,48 @@ select_handler *find_select_handler(THD *thd,
handlerton *ht= tbl->table->file->partition_ht();
if (!ht->create_select)
continue;
- select_handler *sh= ht->create_select(thd, select_lex);
- return sh;
+ select_handler *sh= ht->create_select(thd, select_lex, select_lex_unit);
+ if (sh)
+ return sh;
}
return 0;
}
/**
+ Wrapper for find_select_handler_inner() for the case of single select
+ pushdown. See more comments at the description of
+ find_select_handler_inner()
+
+*/
+select_handler *find_single_select_handler(THD *thd, SELECT_LEX *select_lex)
+{
+ return find_select_handler_inner(thd, select_lex, nullptr);
+}
+
+
+/**
+ Wrapper for find_select_handler_inner() for the case of partial select
+ pushdown. Partial pushdown means that a unit (i.e. multiple selects combined
+ with UNION/EXCEPT/INTERSECT operators) cannot be pushed down to
+ the storage engine as a whole but some particular selects of this unit can.
+ For example,
+ SELECT a FROM federated.t1 -- can be pushed down to Federated
+ UNION
+ SELECT b FROM local.t2 -- cannot be pushed down, executed locally
+
+ See more comments at the description of find_select_handler_inner()
+
+*/
+select_handler *
+find_partial_select_handler(THD *thd, SELECT_LEX *select_lex,
+ SELECT_LEX_UNIT *select_lex_unit)
+{
+ return find_select_handler_inner(thd, select_lex, select_lex_unit);
+}
+
+
+/**
An entry point to single-unit select (a select without UNION).
@param thd thread handler
@@ -5108,7 +5242,7 @@ mysql_select(THD *thd, TABLE_LIST *tables, List<Item> &fields, COND *conds,
SELECT_LEX_UNIT *unit, SELECT_LEX *select_lex)
{
int err= 0;
- bool free_join= 1;
+ bool free_join= 1, exec_error= 0;
DBUG_ENTER("mysql_select");
if (!fields.is_empty())
@@ -5136,7 +5270,8 @@ mysql_select(THD *thd, TABLE_LIST *tables, List<Item> &fields, COND *conds,
}
else
{
- if ((err= join->prepare(tables, conds, og_num, order, false, group,
+ if (!join->prepared &&
+ (err= join->prepare(tables, conds, og_num, order, false, group,
having, proc_param, select_lex, unit)))
{
goto err;
@@ -5162,7 +5297,8 @@ mysql_select(THD *thd, TABLE_LIST *tables, List<Item> &fields, COND *conds,
DBUG_RETURN(TRUE);
THD_STAGE_INFO(thd, stage_init);
thd->lex->used_tables=0;
- if ((err= join->prepare(tables, conds, og_num, order, false, group, having,
+ if (!join->prepared &&
+ (err= join->prepare(tables, conds, og_num, order, false, group, having,
proc_param, select_lex, unit)))
{
goto err;
@@ -5171,7 +5307,7 @@ mysql_select(THD *thd, TABLE_LIST *tables, List<Item> &fields, COND *conds,
thd->get_stmt_da()->reset_current_row_for_warning(1);
/* Look for a table owned by an engine with the select_handler interface */
- select_lex->pushdown_select= find_select_handler(thd, select_lex);
+ select_lex->pushdown_select= find_single_select_handler(thd, select_lex);
if ((err= join->optimize()))
{
@@ -5187,7 +5323,7 @@ mysql_select(THD *thd, TABLE_LIST *tables, List<Item> &fields, COND *conds,
if (unlikely(thd->is_error()))
goto err;
- join->exec();
+ exec_error= join->exec();
if (thd->lex->describe & DESCRIBE_EXTENDED)
{
@@ -5207,9 +5343,9 @@ err:
{
THD_STAGE_INFO(thd, stage_end);
err|= (int)(select_lex->cleanup());
- DBUG_RETURN(err || thd->is_error());
+ DBUG_RETURN(exec_error || err || thd->is_error());
}
- DBUG_RETURN(join->error ? join->error: err);
+ DBUG_RETURN(exec_error || err);
}
@@ -5229,7 +5365,6 @@ err:
@retval true Error
*/
-
static bool get_quick_record_count(THD *thd, SQL_SELECT *select,
TABLE *table,
const key_map *keys,ha_rows limit,
@@ -5255,9 +5390,20 @@ static bool get_quick_record_count(THD *thd, SQL_SELECT *select,
FALSE,
Item_func::BITMAP_EXCEPT_ANY_EQUALITY);
- if (error == SQL_SELECT::OK && select->quick)
+ if (error == SQL_SELECT::OK)
{
- *quick_count= select->quick->records;
+ if (select->quick)
+ {
+ /*
+ opt_range_condition_rows was updated in test_quick_select to be
+ the smallest number of rows in any range.
+ select->quick->records is the number of rows in range with
+ smallest cost.
+ */
+ DBUG_ASSERT(select->quick->records >=
+ table->opt_range_condition_rows);
+ *quick_count= select->quick->records;
+ }
DBUG_RETURN(false);
}
if (error == SQL_SELECT::IMPOSSIBLE_RANGE)
@@ -5388,7 +5534,6 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
DYNAMIC_ARRAY *keyuse_array)
{
int error= 0;
- TABLE *UNINIT_VAR(table); /* inited in all loops */
uint i,table_count,const_count,key;
uint sort_space;
table_map found_const_table_map, all_table_map;
@@ -5450,11 +5595,13 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
for (s= stat, i= 0; (tables= ti++); s++, i++)
{
TABLE_LIST *embedding= tables->embedding;
+ TABLE *table= tables->table;
stat_vector[i]=s;
- table_vector[i]=s->table=table=tables->table;
+ table_vector[i]= s->table= table;
s->tab_list= tables;
table->pos_in_table_list= tables;
error= tables->fetch_number_of_rows();
+ /* Calculate table->use_stat_records */
set_statistics_for_table(join->thd, table);
bitmap_clear_all(&table->cond_set);
@@ -5482,7 +5629,14 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
s->dependent= tables->dep_tables;
if (tables->schema_table)
- table->file->stats.records= table->used_stat_records= 2;
+ {
+ /*
+ Information schema is slow and we don't know how many rows we will
+ find. Be setting a moderate ammount of rows we are more likely
+ to have it materialized if needed.
+ */
+ table->file->stats.records= table->used_stat_records= 100;
+ }
table->opt_range_condition_rows= table->stat_records();
s->on_expr_ref= &tables->on_expr;
@@ -5550,6 +5704,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
{
set_position(join,const_count++,s,(KEYUSE*) 0);
no_rows_const_tables |= table->map;
+ table->file->stats.records= 0;
}
}
@@ -5583,7 +5738,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
for (s= stat ; s < stat_end ; s++)
{
- table= s->table;
+ TABLE *table= s->table;
for (JOIN_TAB *t= stat ; t < stat_end ; t++)
{
if (t->dependent & table->map)
@@ -5617,7 +5772,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
}
}
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
trace_table_dependencies(thd, stat, join->table_count);
if (join->conds || outer_join)
@@ -5638,7 +5793,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
skip_unprefixed_keyparts))
goto error;
DBUG_EXECUTE("opt", print_keyuse_array(keyuse_array););
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
print_keyuse_array_for_trace(thd, keyuse_array);
}
@@ -5687,7 +5842,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
for (JOIN_TAB **pos=stat_vector+const_count ; (s= *pos) ; pos++)
{
- table=s->table;
+ TABLE *table= s->table;
if (table->is_filled_at_execution())
continue;
@@ -5740,10 +5895,11 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
(*s->on_expr_ref)->is_expensive()))
{ // system table
int tmp= 0;
- s->type=JT_SYSTEM;
+ s->type= JT_SYSTEM;
join->const_table_map|=table->map;
set_position(join,const_count++,s,(KEYUSE*) 0);
- if ((tmp= join_read_const_table(join->thd, s, join->positions+const_count-1)))
+ if ((tmp= join_read_const_table(join->thd, s,
+ join->positions+const_count-1)))
{
if (tmp > 0)
goto error; // Fatal error
@@ -5807,7 +5963,14 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
base_const_ref.intersect(base_part);
base_eq_part= eq_part;
base_eq_part.intersect(base_part);
- if (table->actual_key_flags(keyinfo) & HA_NOSAME)
+
+ /*
+ We can read the const record if we are using a full unique key and
+ if the table is not an unopened to be materialized table/view.
+ */
+ if ((table->actual_key_flags(keyinfo) & HA_NOSAME) &&
+ (!s->table->pos_in_table_list->is_materialized_derived() ||
+ s->table->pos_in_table_list->fill_me))
{
if (base_const_ref == base_eq_part &&
@@ -5935,57 +6098,43 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
s->startup_cost= 0;
if (s->type == JT_SYSTEM || s->type == JT_CONST)
{
-
Json_writer_object table_records(thd);
- /* Only one matching row */
- s->found_records= s->records= 1;
+ ha_rows records= 1;
+ if (s->type == JT_SYSTEM || s->table->file->stats.records == 0)
+ records= s->table->file->stats.records;
+ /* zero or one matching row */
+ s->records= s->found_records= records;
+ s->records_init= s->records_out= rows2double(records);
s->read_time=1.0;
- s->worst_seeks=1.0;
- table_records.add_table_name(s)
- .add("rows", s->found_records)
- .add("cost", s->read_time)
- .add("table_type", s->type == JT_CONST ?
- "const" :
- "system");
+ table_records.add_table_name(s).
+ add("rows", s->found_records).
+ add("cost", s->read_time).
+ add("table_type", s->type == JT_CONST ?
+ "const" : "system");
continue;
}
- /* Approximate found rows and time to read them */
- if (s->table->is_filled_at_execution())
- {
- get_delayed_table_estimates(s->table, &s->records, &s->read_time,
- &s->startup_cost);
- s->found_records= s->records;
- s->table->opt_range_condition_rows=s->records;
- }
- else
- s->scan_time();
+ /*
+ Approximate found rows and time to read them
+ Update found_records, records, read_time and other scan related
+ variables
+ */
+ s->estimate_scan_time();
if (s->table->is_splittable())
s->add_keyuses_for_splitting();
/*
- Set a max range of how many seeks we can expect when using keys
- This is can't be to high as otherwise we are likely to use
- table scan.
- */
- /* Largest integer that can be stored in double (no compiler warning) */
- s->worst_seeks= (double) (1ULL << 53);
- if ((thd->variables.optimizer_adjust_secondary_key_costs &
- OPTIMIZER_ADJ_DISABLE_MAX_SEEKS) == 0)
- {
- s->worst_seeks= MY_MIN((double) s->found_records / 10,
- (double) s->read_time*3);
- if (s->worst_seeks < 2.0) // Fix for small tables
- s->worst_seeks=2.0;
- }
- /*
Add to stat->const_keys those indexes for which all group fields or
all select distinct fields participate in one index.
*/
add_group_and_distinct_keys(join, s);
- s->table->cond_selectivity= 1.0;
-
+ /* This will be updated in calculate_cond_selectivity_for_table() */
+ s->table->set_cond_selectivity(1.0);
+ DBUG_ASSERT(s->table->used_stat_records == 0 ||
+ s->table->cond_selectivity <=
+ s->table->opt_range_condition_rows /
+ s->table->used_stat_records);
/*
Perform range analysis if there are keys it could use (1).
Don't do range analysis for materialized subqueries (2).
@@ -5998,7 +6147,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
s->table->pos_in_table_list->is_materialized_derived())) // (3)
{
bool impossible_range= FALSE;
- ha_rows records= HA_POS_ERROR;
+ ha_rows records= HA_ROWS_MAX;
SQL_SELECT *select= 0;
Item **sargable_cond= NULL;
if (!s->const_keys.is_clear_all())
@@ -6035,8 +6184,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
select->quick=0;
s->needed_reg=select->needed_reg;
impossible_range= records == 0 && s->table->reginfo.impossible_range;
- if (join->thd->lex->sql_command == SQLCOM_SELECT &&
- optimizer_flag(join->thd, OPTIMIZER_SWITCH_USE_ROWID_FILTER))
+ if (optimizer_flag(join->thd, OPTIMIZER_SWITCH_USE_ROWID_FILTER))
s->table->init_cost_info_for_usable_range_rowid_filters(join->thd);
}
if (!impossible_range)
@@ -6069,6 +6217,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
}
else
{
+ double records= 1;
join->const_table_map|= s->table->map;
set_position(join,const_count++,s,(KEYUSE*) 0);
s->type= JT_CONST;
@@ -6079,7 +6228,10 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
s->info= ET_IMPOSSIBLE_ON_CONDITION;
found_const_table_map|= s->table->map;
mark_as_null_row(s->table); // All fields are NULL
+ records= 0;
}
+ s->records_init= s->records_out= records;
+ s->found_records= s->records= (ha_rows)records;
}
}
if (records != HA_POS_ERROR)
@@ -6091,13 +6243,13 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
delete select;
else
{
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
add_table_scan_values_to_trace(thd, s);
}
}
else
{
- if (thd->trace_started())
+ if (unlikely(thd->trace_started()))
add_table_scan_values_to_trace(thd, s);
}
}
@@ -6133,13 +6285,12 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
DBUG_RETURN(TRUE); /* purecov: inspected */
{
- double records= 1;
SELECT_LEX_UNIT *unit= join->select_lex->master_unit();
/* Find an optimal join order of the non-constant tables. */
if (join->const_tables != join->table_count)
{
- if (choose_plan(join, all_table_map & ~join->const_table_map))
+ if (choose_plan(join, all_table_map & ~join->const_table_map, 0))
goto error;
#ifdef HAVE_valgrind
@@ -6154,7 +6305,8 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
memcpy((uchar*) join->best_positions,(uchar*) join->positions,
sizeof(POSITION)*join->const_tables);
join->join_record_count= 1.0;
- join->best_read=1.0;
+ /* Const tables are part of optimizer setup and not counted in cost */
+ join->best_read=0.0;
}
if (!(join->select_options & SELECT_DESCRIBE) &&
@@ -6164,10 +6316,12 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
Calculate estimated number of rows for materialized derived
table/view.
*/
+ double records= 1.0;
+ ha_rows rows;
for (i= 0; i < join->table_count ; i++)
if (double rr= join->best_positions[i].records_read)
records= COST_MULT(records, rr);
- ha_rows rows= records > (double) HA_ROWS_MAX ? HA_ROWS_MAX : (ha_rows) records;
+ rows= double_to_rows(records);
set_if_smaller(rows, unit->lim.get_select_limit());
join->select_lex->increase_derived_records(rows);
}
@@ -6515,8 +6669,8 @@ add_key_field(JOIN *join,
Field op formula
Field IS NULL
Field IS NOT NULL
- Field BETWEEN ...
- Field IN ...
+ Field BETWEEN ...
+ Field IN ...
*/
if (field->flags & PART_KEY_FLAG)
{
@@ -6604,10 +6758,10 @@ add_key_field(JOIN *join,
@param field_item Field item used for comparison
@param eq_func True if we used =, <=> or IS NULL
@param value Value used for comparison with field_item
- @param num_values Number of values[] that we are comparing against
+ @param num_values Number of values[] that we are comparing against
@param usable_tables Tables which can be used for key optimization
@param sargables IN/OUT Array of found sargable candidates
- @param row_col_no if = n that > 0 then field is compared only
+ @param row_col_no if = n that > 0 then field is compared only
against the n-th component of row values
@note
@@ -7495,6 +7649,10 @@ static void remember_if_eq_ref_key(JOIN *join, KEYUSE *use)
Special treatment for ft-keys.
Update join->eq_ref_tables with a bitmap of all tables that can possible
have a EQ_REF key.
+
+ Note that the keys are generated to be used by best_access_path() during
+ the optimization stage. Unused keys will later be deleted by
+ JOIN::drop_unused_derived_keys().
*/
bool sort_and_filter_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse,
@@ -7544,7 +7702,9 @@ bool sort_and_filter_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse,
}
else
{
- /* Key changed, check if previous key was a primary/unique key lookup */
+ /*
+ Key changed, check if previous key was a primary/unique key lookup
+ */
if (prev != &key_end && !found_unprefixed_key_part)
remember_if_eq_ref_key(join, prev);
found_unprefixed_key_part= 0;
@@ -7825,7 +7985,9 @@ void set_position(JOIN *join,uint idx,JOIN_TAB *table,KEYUSE *key)
{
join->positions[idx].table= table;
join->positions[idx].key=key;
- join->positions[idx].records_read=1.0; /* This is a const table */
+ join->positions[idx].records_read=1.0; /* This is a const table */
+ join->positions[idx].records_out=1.0; /* This is a const table */
+ join->positions[idx].records_init=1.0; /* This is a const table */
join->positions[idx].cond_selectivity= 1.0;
join->positions[idx].ref_depend_map= 0;
join->positions[idx].partial_join_cardinality= 1;
@@ -7852,32 +8014,29 @@ void set_position(JOIN *join,uint idx,JOIN_TAB *table,KEYUSE *key)
/*
Estimate how many records we will get if we read just this table and apply
- a part of WHERE that can be checked for it.
+ a part of WHERE that can be checked using only the current table and
+ const tables.
@param s Current JOIN_TAB
@param use_cond_selectivity Value of optimizer_use_condition_selectivity.
If > 1 then use table->cond_selecitivity.
- @param force_estiamte Set to 1 if we should not call
- use_found_constraint. To be deleted in 11.0
@return 0.0 No matching rows
@return >= 1.0 Number of expected matching rows
- @detail
Estimate how many records we will get if we
- read the given table with its "independent" access method (either quick
select or full table/index scan),
- - apply the part of WHERE that refers only to this table.
+ - apply the part of WHERE that refers only to this table and const tables.
+ - The result cannot be bigger than table records
@see also
- table_cond_selectivity() produces selectivity of condition that is checked
- after joining rows from this table to rows from preceding tables.
+ table_after_join_selectivity() produces selectivity of condition that is
+ checked after joining rows from this table to rows from preceding tables.
*/
static double apply_selectivity_for_table(JOIN_TAB *s,
- uint use_cond_selectivity,
- bool *force_estimate)
+ uint use_cond_selectivity)
{
- ha_rows records;
double dbl_records;
if (use_cond_selectivity > 1)
@@ -7885,27 +8044,47 @@ static double apply_selectivity_for_table(JOIN_TAB *s,
TABLE *table= s->table;
double sel= table->cond_selectivity;
double table_records= rows2double(s->records);
+ DBUG_ASSERT(sel >= 0 && sel <= 1.0);
+ /*
+ table->cond_selectivity will include data from opt_range.
+ Here we check that this is indeeded the case.
+ Note that if table_records == 0, then 'sel' is probably 1
+ */
+ DBUG_ASSERT(table_records == 0 ||
+ sel <= s->table->opt_range_condition_rows /
+ table_records);
dbl_records= table_records * sel;
- *force_estimate= 1; // Don't call use_found_constraint()
- return dbl_records;
}
-
- records = s->found_records;
-
- /*
- If applicable, get a more accurate estimate.
- */
- DBUG_ASSERT(s->table->opt_range_condition_rows <= s->found_records);
- if (s->table->opt_range_condition_rows != s->found_records)
+ else
{
- *force_estimate= 1; // Don't call use_found_constraint()
- records= s->table->opt_range_condition_rows;
+ /*
+ This is only taking into considering constant key parts used with
+ this table!
+ If no such conditions existed the following should normally hold:
+ s->table->opt_range_condition_rows == s->found_rows ==
+ s->records.
+ The case when this does not hold is when using 'best splitting'
+ in which case s->records may be less than s->found_rows;
+ */
+ DBUG_ASSERT(s->table->opt_range_condition_rows <= s->found_records);
+ dbl_records= rows2double(MY_MIN(s->table->opt_range_condition_rows,
+ s->records));
}
- dbl_records= (double)records;
- return dbl_records;
+ DBUG_ASSERT(dbl_records <= s->records);
+ /*
+ Ensure we return at least one row if there is any possibility to have
+ a matching row. Having rows >= 1.0 helps ensure that when we calculate
+ total rows of joins, the number of resulting rows will not be less
+ after the join. In other words, we assume there is at least one matching
+ row when joining a row with the next table.
+ 0.0 is returned only if it is guaranteed there are no matching rows
+ (for example if the table is empty).
+ */
+ return dbl_records ? MY_MAX(dbl_records, MIN_ROWS_AFTER_FILTERING) : 0.0;
}
+
/*
Take into account that the table's WHERE clause has conditions on earlier
tables that can reduce the number of accepted rows.
@@ -7920,95 +8099,211 @@ static double apply_selectivity_for_table(JOIN_TAB *s,
This heuristic is supposed to force tables used in exprZ to be before
this table in join order.
*/
-
inline double use_found_constraint(double records)
{
records-= records/4;
- return records;
+ return records ? MY_MAX(records, MIN_ROWS_AFTER_FILTERING) : 0.0;
}
/*
Calculate the cost of reading a set of rows trough an index
+ @param eq_ref True if there is only one matching key (EQ_REF)
+
Logically this is identical to the code in multi_range_read_info_const()
excepts the function also takes into account io_blocks and multiple
ranges.
One main difference between the functions is that
multi_range_read_info_const() adds a very small cost per range
- (IDX_LOOKUP_COST) and also MULTI_RANGE_READ_SETUP_COST, to ensure that
- 'ref' is preferred slightly over ranges.
+ MULTI_RANGE_READ_SETUP_COST, to ensure that 'ref' is preferred
+ over ranges.
+
+ Note that this function assumes that index_only_cost is only to be
+ used with filtering (as cost.read_cost takes into account both
+ clustering and covered keys). index_only_cost does not include
+ KEY_COPY_COST as for filtering there is no copying of not accepted
+ keys.
+
+ If eq_ref is not set, it means that we have to do one extra 'read_next'
+ on the index to verify that there is not more keys with the same value.
+
+ WHERE_COST cost is not added to any result.
*/
-double cost_for_index_read(const THD *thd, const TABLE *table, uint key,
- ha_rows records, ha_rows worst_seeks)
+static ALL_READ_COST cost_for_index_read(const THD *thd, const TABLE *table,
+ uint key, ha_rows records,
+ bool eq_ref)
{
- DBUG_ENTER("cost_for_index_read");
- double cost;
+ ALL_READ_COST cost;
handler *file= table->file;
+ ha_rows max_seeks;
+ ha_rows extra_reads= eq_ref ? 0 : 1;
+ DBUG_ENTER("cost_for_index_read");
+
+ max_seeks= (ha_rows) thd->variables.max_seeks_for_key;
+ set_if_bigger(records, 1);
- set_if_smaller(records, (ha_rows) thd->variables.max_seeks_for_key);
if (file->is_clustering_key(key))
- cost= file->read_time(key, 1, records);
- else
- if (table->covering_keys.is_set(key))
- cost= file->keyread_time(key, 1, records);
+ {
+ cost.index_cost=
+ file->ha_keyread_clustered_time(key, 1, records+extra_reads, 0);
+ cost.copy_cost= rows2double(records) * file->ROW_COPY_COST;
+ /* There is no 'index_only_read' with a clustered index */
+ cost.row_cost= {0,0};
+ /* Caping of index_blocks will happen in handler::cost() */
+ cost.max_index_blocks= MY_MIN(file->row_blocks(), max_seeks);
+ cost.max_row_blocks= 0;
+ }
+ else if (table->covering_keys.is_set(key) && !table->no_keyread)
+ {
+ cost.index_cost= file->ha_keyread_time(key, 1, records + extra_reads, 0);
+ cost.row_cost= {0,0};
+ cost.copy_cost= rows2double(records) * file->KEY_COPY_COST;
+ cost.max_index_blocks= MY_MIN(file->index_blocks(key), max_seeks);
+ cost.max_row_blocks= 0;
+ }
else
{
- cost= ((file->keyread_time(key, 0, records) +
- file->read_time(key, 1, MY_MIN(records, worst_seeks))));
- if ((thd->variables.optimizer_adjust_secondary_key_costs &
- OPTIMIZER_ADJ_SEC_KEY_COST) &&
- file->is_clustering_key(0))
- {
- /*
- According to benchmarks done in 11.0 to calculate the new cost
- model secondary key ranges are about 7x slower than primary
- key ranges for big tables. Here we are a bit conservative and
- only calculate with 5x. The reason for having it only 5x and
- not for example 7x is is that choosing plans with more rows
- that are read (ignored by the WHERE clause) causes the 10.x
- optimizer to believe that there are more rows in the result
- set, which can cause problems in finding the best join order.
- Note: A clustering primary key is always key 0.
- */
- double clustering_key_cost= file->read_time(0, 1, records);
- cost= MY_MAX(cost, clustering_key_cost * 5);
- }
+ cost.index_cost= file->ha_keyread_time(key, 1, records + extra_reads, 0);
+ /* ha_rnd_pos_time() includes time for copying the row */
+ cost.row_cost= file->ha_rnd_pos_time(records);
+ cost.max_index_blocks= MY_MIN(file->index_blocks(key), max_seeks);
+ cost.max_row_blocks= MY_MIN(file->row_blocks(), max_seeks);
+ cost.copy_cost= 0;
}
-
- DBUG_PRINT("statistics", ("cost: %.3f", cost));
+ DBUG_PRINT("statistics", ("index_cost: %.3f row_cost: %.3f",
+ file->cost(cost.index_cost),
+ file->cost(cost.row_cost)));
DBUG_RETURN(cost);
}
-/*
- Adjust cost from table->quick_costs calculated by
- multi_range_read_info_const() to be comparable with cost_for_index_read()
+/**
+ Apply filter if the filter is better than the current cost
+
+ @param thd Thread handler
+ @param table Table
+ @param cost Pointer to cost for current cost, which does not
+ include WHERE_COST cost. Will be updated to
+ new cost if filter is chosen.
+ Will be updated to new cost if filter is used.
+ @param records_arg Pointer to number of records for the current key.
+ Will be updated to records after filter, if filter is
+ used.
+ @param startup_cost Startup cost. Will be updated if filter is used.
+ @param fetch_cost Cost of finding the row, without where compare cost
+ @param index_only_cost Cost if fetching '*records_arg' key values
+ @param prev_records Number of record combinations in previous tables
+
+ @return 'this' Filter is used (and variables are updated)
+ @return 0 Filter is worse than old plan
+*/
+
+Range_rowid_filter_cost_info* Range_rowid_filter_cost_info::
+apply_filter(THD *thd, TABLE *table, ALL_READ_COST *cost,
+ double *records_arg,
+ double *startup_cost,
+ uint ranges, double prev_records)
+{
+ handler *file= table->file;
+ bool use_filter;
+ double new_cost, org_cost, records= *records_arg, new_records;
+ double filter_startup_cost= get_setup_cost();
+ double filter_lookup_cost= records * lookup_cost();
+ double tmp;
+ ALL_READ_COST adjusted_cost;
- This functions is needed because best_access_path() doesn't add
- TIME_FOR_COMPARE to it's costs until very late.
- Preferably we should fix so that all costs are comparably.
- (All compared costs should include TIME_FOR_COMPARE for all found
- rows).
-*/
+ /*
+ Calculate number of resulting rows after filtering
+ Here we trust selectivity and do not adjust rows up even if
+ the end result is low. This means that new_records is allowed to be
+ be < 1.0
+ */
+ new_records= records * selectivity;
-double adjust_quick_cost(double quick_cost, ha_rows records)
-{
- double cost= (quick_cost - MULTI_RANGE_READ_SETUP_COST -
- rows2double(records)/TIME_FOR_COMPARE);
- DBUG_ASSERT(cost > 0.0);
- return cost;
+ /*
+ Calculate the cost of the filter based on that we had originally
+ 'records' rows and after the filter only 'new_records' accepted
+ rows.
+ Note that the rejected rows, we have only done a key read. We only
+ fetch the row and compare the where if the filter accepts the
+ row id.
+ In case of index only read, fetch_cost == index_only_cost. Even in this
+ the filter can give a better plan as we have to do less comparisons
+ with the WHERE clause.
+
+ The io_cost is used to take into account that we have to do 1 key
+ lookup to find the first matching key in each range.
+ */
+
+ adjusted_cost= *cost;
+ /* We are going to read 'selectivity' fewer rows */
+ adjusted_cost.row_cost.io*= selectivity;
+ adjusted_cost.row_cost.cpu*= selectivity;
+ adjusted_cost.copy_cost*= selectivity; // Cost of copying row or key
+ adjusted_cost.index_cost.cpu+= filter_lookup_cost;
+
+ tmp= prev_records * WHERE_COST_THD(thd);
+ org_cost= (file->cost_for_reading_multiple_times(prev_records,
+ cost) +
+ records * tmp);
+
+ new_cost= (file->cost_for_reading_multiple_times(prev_records,
+ &adjusted_cost) +
+ new_records * tmp + filter_startup_cost);
+
+ DBUG_ASSERT(new_cost >= 0 && new_records >= 0);
+ use_filter= new_cost < org_cost;
+
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object trace_filter(thd, "filter");
+ trace_filter.add("rowid_filter_index",
+ table->key_info[get_key_no()].name).
+ add("index_only_cost", file->cost(cost->index_cost)).
+ add("filter_startup_cost", filter_startup_cost).
+ add("find_key_and_filter_lookup_cost", filter_lookup_cost).
+ add("filter_selectivity", selectivity).
+ add("original_rows", records).
+ add("new_rows", new_records).
+ add("original_access_cost", file->cost(cost)).
+ add("with_filter_access_cost", file->cost(&adjusted_cost)).
+ add("original_found_rows_cost", file->cost(cost->row_cost)).
+ add("with_filter_found_rows_cost", file->cost(adjusted_cost.row_cost)).
+ add("org_cost", org_cost).
+ add("filter_cost", new_cost).
+ add("filter_used", use_filter);
+ }
+ if (use_filter)
+ {
+ cost->row_cost= adjusted_cost.row_cost;
+ cost->index_cost= adjusted_cost.index_cost;
+ cost->copy_cost= adjusted_cost.copy_cost;
+ *records_arg= new_records;
+ (*startup_cost)+= filter_startup_cost;
+ return this;
+ }
+ return 0;
}
/*
@brief
Compute the fanout of hash join operation using EITS data
+
+ @param join JOIN structure
+ @param tab JOIN_TAB for the current table
+ @param remaining_tables Map of tables not yet accessable
+ @param rnd_records Number of accepted rows in the table, after taking
+ selectivity into account.
+ @param hj_start_key Pointer to hash key
+ @param stats_found Is set to 1 if we found any usable hash key part
+ with statistics from analyze.
*/
-double hash_join_fanout(JOIN *join, JOIN_TAB *s, table_map remaining_tables,
+double hash_join_fanout(JOIN *join, JOIN_TAB *tab, table_map remaining_tables,
double rnd_records, KEYUSE *hj_start_key,
bool *stats_found)
{
@@ -8036,9 +8331,14 @@ double hash_join_fanout(JOIN *join, JOIN_TAB *s, table_map remaining_tables,
assume we'll get rnd_records rows with the same value, and return
rnd_records as the fanout estimate.
*/
- double min_freq= rnd_records;
+ double min_freq= (double) tab->table->stat_records();
+ bool found_not_usable_field= 0;
+ bool found_usable_field __attribute__((unused))= 0;
+ DBUG_ENTER("hash_join_cardinality");
+ DBUG_ASSERT(rnd_records > 0 && min_freq > 0);
Json_writer_object trace_obj(thd, "hash_join_cardinality");
+
/*
There can be multiple KEYUSE referring to same or different columns
@@ -8061,15 +8361,16 @@ double hash_join_fanout(JOIN *join, JOIN_TAB *s, table_map remaining_tables,
*/
Json_writer_array trace_arr(thd, "hash_join_columns");
for (KEYUSE *keyuse= hj_start_key;
- keyuse->table == s->table && is_hash_join_key_no(keyuse->key);
+ keyuse->table == tab->table && is_hash_join_key_no(keyuse->key);
keyuse++)
{
if (!(remaining_tables & keyuse->used_tables) &&
(!keyuse->validity_ref || *keyuse->validity_ref) &&
- s->access_from_tables_is_allowed(keyuse->used_tables,
+ tab->access_from_tables_is_allowed(keyuse->used_tables,
join->sjm_lookup_tables))
{
- Field *field= s->table->field[keyuse->keypart];
+ Field *field= tab->table->field[keyuse->keypart];
+ found_usable_field= 1;
if (is_eits_usable(field))
{
double freq= field->read_stats->get_avg_frequency();
@@ -8080,12 +8381,61 @@ double hash_join_fanout(JOIN *join, JOIN_TAB *s, table_map remaining_tables,
if (freq < min_freq)
min_freq= freq;
*stats_found= 1;
+ continue;
}
}
+ if (!keyuse->validity_ref || *keyuse->validity_ref)
+ found_not_usable_field= 1;
}
+ /* Ensure that some part of hash_key is usable */
+ DBUG_ASSERT(found_usable_field);
+
trace_arr.end();
+ if (found_not_usable_field)
+ {
+ /*
+ We did not't have data for all key fields. Assume that the hash
+ will at least limit the number of matched rows to HASH_FANOUT.
+ This makes the cost same as when 'hash_join_cardinality=off'
+ in the case when no analyze of the tables have been made.
+
+ However, it may cause problems when min_freq is higher than
+ HASH_FANOUT as the optimizer will then assume it is better to
+ put the table earlier in the plan when all key parts are not
+ usable.
+ Note that min_freq can become less than 1.0. This is intentional
+ as it matches what happens if OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY
+ is not used.
+ */
+ double max_expected_records= rnd_records * HASH_FANOUT;
+ set_if_smaller(min_freq, max_expected_records);
+ trace_obj.add("using_default_hash_fanout", HASH_FANOUT);
+ }
+ else
+ {
+ /*
+ Before joining the table with the contents of join buffer, we will
+ use the quick select and/or apply the table condition.
+
+ This will reduce the number of rows joined to rnd_records.
+ How will this affect n_distinct?
+ Depending on which rows are removed, this can either leave n_distinct as
+ is (for some value X, some rows are removed but some are left, leaving the
+ number of distinct values the same), or reduce n_distinct in proportion
+ with the fraction of rows removed (for some values of X, either all or
+ none of the rows with that value are removed).
+
+ We assume the latter: n_distinct is reduced in proportion the condition
+ and quick select's selectivity.
+ This is in effect same as applying apply_selectivity_for_table() on
+ min_freq as we have already done on rnd_records
+ */
+ min_freq*= rnd_records / tab->table->stat_records();
+ set_if_bigger(min_freq, HASH_FANOUT);
+ }
+
trace_obj.add("rows", min_freq);
- return min_freq;
+ DBUG_RETURN(min_freq);
}
@@ -8095,7 +8445,7 @@ double hash_join_fanout(JOIN *join, JOIN_TAB *s, table_map remaining_tables,
The function finds the best access path to table 's' from the passed
partial plan where an access path is the general term for any means to
- access the data in 's'. An access path may use either an index or a scan,
+ cacess the data in 's'. An access path may use either an index or a scan,
whichever is cheaper. The input partial plan is passed via the array
'join->positions' of length 'idx'. The chosen access method for 's' and its
cost are stored in 'join->positions[idx]'.
@@ -8117,6 +8467,28 @@ double hash_join_fanout(JOIN *join, JOIN_TAB *s, table_map remaining_tables,
None
*/
+struct best_plan
+{
+ double cost; // Smallest cost found
+ double records; // Old 'Records'
+ double records_read; // Records accessed
+ double records_after_filter; // Records_read + filter
+ double records_out; // Smallest record count seen
+ double prev_record_reads; // Save value from prev_record_reads
+ double identical_keys; // Save value from prev_record_reads
+ Range_rowid_filter_cost_info *filter; // Best filter
+ KEYUSE *key; // Best key
+ SplM_plan_info *spl_plan;
+ table_map ref_depends_map;
+ ulonglong refills; // Join cache refills
+ enum join_type type;
+ uint forced_index;
+ uint max_key_part;
+ table_map found_ref;
+ bool use_join_buffer;
+};
+
+
void
best_access_path(JOIN *join,
JOIN_TAB *s,
@@ -8129,15 +8501,11 @@ best_access_path(JOIN *join,
POSITION *loose_scan_pos)
{
THD *thd= join->thd;
- uint use_cond_selectivity= thd->variables.optimizer_use_condition_selectivity;
- KEYUSE *best_key= 0;
- uint best_max_key_part= 0;
+ uint use_cond_selectivity=
+ thd->variables.optimizer_use_condition_selectivity;
+ TABLE *table= s->table;
+ handler *file= table->file;
my_bool found_constraint= 0;
- double best= DBL_MAX;
- double best_time= DBL_MAX;
- double records= DBL_MAX;
- ha_rows records_for_key= 0;
- table_map best_ref_depends_map= 0;
/*
key_dependent is 0 if all key parts could be used or if there was an
EQ_REF table found (which uses all key parts). In other words, we cannot
@@ -8145,34 +8513,45 @@ best_access_path(JOIN *join,
Otherwise it's a bitmap of tables that could improve key usage.
*/
table_map key_dependent= 0;
- Range_rowid_filter_cost_info *best_filter= 0;
- double tmp;
- double keyread_tmp= 0;
+ ALL_READ_COST tmp;
ha_rows rec;
- bool best_uses_jbuf= FALSE;
- /*
- if optimizer_use_condition_selectivity adjust filter cost to be slightly
- higher to ensure that ref|filter is not less than range over same
- number of rows
- */
- double filter_setup_cost= ((thd->variables.
- optimizer_adjust_secondary_key_costs &
- OPTIMIZER_ADJ_DISABLE_MAX_SEEKS) ?
- 1.0 : 0.0);
MY_BITMAP *eq_join_set= &s->table->eq_join_set;
KEYUSE *hj_start_key= 0;
- SplM_plan_info *spl_plan= 0;
table_map spl_pd_boundary= 0;
- Range_rowid_filter_cost_info *filter= 0;
- const char* cause= NULL;
- enum join_type best_type= JT_UNKNOWN, type= JT_UNKNOWN;
-
- disable_jbuf= disable_jbuf || idx == join->const_tables;
-
Loose_scan_opt loose_scan_opt;
+ struct best_plan best;
+ Json_writer_object trace_wrapper(thd, "best_access_path");
DBUG_ENTER("best_access_path");
- Json_writer_object trace_wrapper(thd, "best_access_path");
+ /*
+ Assume that there is at least one accepted row from previous table
+ combinations.
+ This fixes a problem when the selectivity for the preceding table
+ combinations becomes so high that record_count becomes << 1.0,
+ which makes the cost for the current table so low that it does not
+ matter when calculating the best plans.
+ */
+ set_if_bigger(record_count, 1.0);
+
+ best.cost= DBL_MAX;
+ best.records= DBL_MAX;
+ best.records_read= DBL_MAX;
+ best.records_after_filter= DBL_MAX;
+ best.records_out= MY_MIN(table->stat_records() * table->cond_selectivity,
+ table->opt_range_condition_rows);
+ best.prev_record_reads= best.identical_keys= 0;
+ best.filter= 0;
+ best.key= 0;
+ best.max_key_part= 0;
+ best.type= JT_UNKNOWN;
+ best.forced_index= MAX_KEY;
+ best.found_ref= 0;
+ best.ref_depends_map= 0;
+ best.refills= 0;
+ best.use_join_buffer= FALSE;
+ best.spl_plan= 0;
+
+ disable_jbuf= disable_jbuf || idx == join->const_tables;
trace_wrapper.add_table_name(s);
@@ -8180,39 +8559,51 @@ best_access_path(JOIN *join,
loose_scan_opt.init(join, s, remaining_tables);
- if (s->table->is_splittable())
- spl_plan= s->choose_best_splitting(idx,
- remaining_tables,
- join_positions,
- &spl_pd_boundary);
+ if (table->is_splittable())
+ best.spl_plan= s->choose_best_splitting(idx,
+ remaining_tables,
+ join_positions,
+ &spl_pd_boundary);
+
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object info(thd, "plan_details");
+ info.add("record_count", record_count);
+ }
Json_writer_array trace_paths(thd, "considered_access_paths");
if (s->keyuse)
{ /* Use key if possible */
- KEYUSE *keyuse;
- KEYUSE *start_key=0;
- TABLE *table= s->table;
- double best_records= DBL_MAX;
+ KEYUSE *keyuse, *start_key= 0;
uint max_key_part=0;
+ enum join_type type= JT_UNKNOWN;
+ double cur_cost, copy_cost, cached_prev_record_reads= 0.0;
+ table_map cached_prev_ref= ~(table_map) 0;
/* Test how we can use keys */
rec= s->records/MATCHING_ROWS_IN_OTHER_TABLE; // Assumed records/key
for (keyuse=s->keyuse ; keyuse->table == table ;)
{
KEY *keyinfo;
+ const char *cause= NULL;
ulong key_flags;
uint key_parts;
key_part_map found_part= 0;
- key_part_map notnull_part=0; // key parts which won't have NULL in lookup tuple.
+ /* key parts which won't have NULL in lookup tuple */
+ key_part_map notnull_part=0;
table_map found_ref= 0;
uint key= keyuse->key;
- filter= 0;
bool ft_key= (keyuse->keypart == FT_KEYPART);
/* Bitmap of keyparts where the ref access is over 'keypart=const': */
key_part_map const_part= 0;
/* The or-null keypart in ref-or-null access: */
key_part_map ref_or_null_part= 0;
key_part_map all_parts= 0;
+ double startup_cost= s->startup_cost;
+ double records_after_filter, records_best_filter, records;
+ Range_rowid_filter_cost_info *filter= 0;
+ double prev_record_count= record_count;
+ double identical_keys= 0;
if (is_hash_join_key_no(key))
{
@@ -8251,9 +8642,10 @@ best_access_path(JOIN *join,
do /* For each way to access the keypart */
{
/*
- if 1. expression doesn't refer to forward tables
+ If 1. expression does not refer to forward tables
2. we won't get two ref-or-null's
*/
+ double ignore;
all_parts|= keyuse->keypart_map;
if (!(remaining_tables & keyuse->used_tables) &&
(!keyuse->validity_ref || *keyuse->validity_ref) &&
@@ -8270,12 +8662,19 @@ best_access_path(JOIN *join,
if (!keyuse->val->maybe_null() || keyuse->null_rejecting)
notnull_part|=keyuse->keypart_map;
- double tmp2= prev_record_reads(join_positions, idx,
- (found_ref | keyuse->used_tables));
- if (tmp2 < best_prev_record_reads)
+ if ((found_ref | keyuse->used_tables) != cached_prev_ref)
+ {
+ cached_prev_ref= (found_ref | keyuse->used_tables);
+ cached_prev_record_reads=
+ prev_record_reads(join_positions, idx,
+ cached_prev_ref, record_count,
+ &ignore);
+ }
+ if (cached_prev_record_reads < best_prev_record_reads)
{
- best_part_found_ref= keyuse->used_tables & ~join->const_table_map;
- best_prev_record_reads= tmp2;
+ best_prev_record_reads= cached_prev_record_reads;
+ best_part_found_ref= (keyuse->used_tables &
+ ~join->const_table_map);
}
if (rec > keyuse->ref_table_rows)
rec= keyuse->ref_table_rows;
@@ -8285,6 +8684,16 @@ best_access_path(JOIN *join,
*/
if (keyuse->optimize & KEY_OPTIMIZE_REF_OR_NULL)
ref_or_null_part |= keyuse->keypart_map;
+
+ /*
+ Remember if there is a WHERE condition that contains
+ 'key_part=expression_with_only_accessible_tables'
+ We ignore const tables as these are handled by selectivity
+ code (const table fields are treated as constants).
+ */
+ found_constraint|= (keyuse->used_tables &
+ ~(remaining_tables |
+ join->const_table_map));
}
else if (!(found_part & keyuse->keypart_map))
key_parts_dependent|= keyuse->used_tables;
@@ -8297,6 +8706,7 @@ best_access_path(JOIN *join,
if (all_parts & 1)
key_dependent|= key_parts_dependent;
found_ref|= best_part_found_ref;
+ /* Remember if the key expression used previous non const tables */
} while (keyuse->table == table && keyuse->key == key);
/*
@@ -8315,18 +8725,36 @@ best_access_path(JOIN *join,
if (ft_key)
{
/*
- Really, there should be records=0.0 (yes!)
- but 1.0 would be probably safer
+ Fulltext indexes are preformed the following way:
+ - In the prepare step it performs the search, collects all positions
+ in an array, sorts it.
+ - If optimizer decides to use the ft index access method it simply'
+ returns positions from the array one by one
+ - If optimizer decides to use something else (another index, table
+ scan), then it'll use binary search in the array to find the
+ position.
+
+ The following code puts the cost down to very small as the prep
+ step will always be done and the cost to fetch the row from memory
+ is very small.
+ Alternatively we could use the cost of an EQ_REF here.
+ */
+ tmp.reset();
+ tmp.row_cost.cpu= file->ROW_COPY_COST;
+ /*
+ We don't know how many records will match. However, we want to have
+ the fulltext search done early, so we put the number of records
+ to be very low.
*/
- tmp= prev_record_reads(join_positions, idx, found_ref);
records= 1.0;
type= JT_FT;
- trace_access_idx.add("access_type", join_type_str[type])
- .add("full-text index", keyinfo->name);
+ if (unlikely(trace_access_idx.trace_started()))
+ trace_access_idx.
+ add("access_type", join_type_str[type]).
+ add("full-text index", keyinfo->name);
}
else
{
- found_constraint= MY_TEST(found_part);
loose_scan_opt.check_ref_access_part1(s, key, start_key, found_part);
/* Check if we found full key */
@@ -8340,30 +8768,42 @@ best_access_path(JOIN *join,
- equalities we are using reject NULLs (3)
then the estimate is rows=1.
*/
- if ((key_flags & (HA_NOSAME | HA_EXT_NOSAME)) && // (1)
+ if ((key_flags & (HA_NOSAME | HA_EXT_NOSAME)) && // (1)
(!(key_flags & HA_NULL_PART_KEY) || // (2)
all_key_parts == notnull_part)) // (3)
{
/* Check that eq_ref_tables are correctly updated */
DBUG_ASSERT(join->eq_ref_tables & table->map);
- /* TODO: Adjust cost for covering and clustering key */
type= JT_EQ_REF;
- trace_access_idx.add("access_type", join_type_str[type])
- .add("index", keyinfo->name);
-
+ if (unlikely(trace_access_idx.trace_started()))
+ trace_access_idx.
+ add("access_type", join_type_str[type]).
+ add("index", keyinfo->name);
if (!found_ref && table->opt_range_keys.is_set(key))
- tmp= adjust_quick_cost(table->opt_range[key].cost, 1);
+ {
+ /* Ensure that the cost is identical to the range cost */
+ table->opt_range[key].get_costs(&tmp);
+ }
else
- tmp= table->file->avg_io_cost();
- tmp*= prev_record_reads(join_positions, idx,
- found_ref);
- records=1.0;
+ {
+ tmp= cost_for_index_read(thd, table, key, 1, 1);
+ }
+ /*
+ Calculate how many record read calls will be made taking
+ into account that we will cache the last read row.
+ */
+ prev_record_count= prev_record_reads(join_positions, idx,
+ found_ref, record_count,
+ &identical_keys);
+ records= 1.0;
}
else
{
type= JT_REF;
- trace_access_idx.add("access_type", join_type_str[type])
- .add("index", keyinfo->name);
+ if (unlikely(trace_access_idx.trace_started()))
+ trace_access_idx.
+ add("access_type", join_type_str[type]).
+ add("index", keyinfo->name);
if (!found_ref)
{ /* We found a const key */
/*
@@ -8385,22 +8825,19 @@ best_access_path(JOIN *join,
*/
if (table->opt_range_keys.is_set(key))
{
+ /* Ensure that the cost is identical to the range cost */
records= (double) table->opt_range[key].rows;
trace_access_idx.add("used_range_estimates", true);
- tmp= adjust_quick_cost(table->opt_range[key].cost,
- table->opt_range[key].rows);
- keyread_tmp= table->file->keyread_time(key, 1,
- table->opt_range[key].
- rows);
- goto got_cost;
- }
- else
- {
- /* quick_range couldn't use key! */
- records= (double) s->records/rec;
- trace_access_idx.add("used_range_estimates", false)
- .add("reason", "not available");
+
+ table->opt_range[key].get_costs(&tmp);
+ goto got_cost2;
}
+ /* quick_range couldn't use key! */
+ records= (double) s->records/rec;
+ if (unlikely(trace_access_idx.trace_started()))
+ trace_access_idx.
+ add("used_range_estimates", false).
+ add("reason", "not available");
}
else
{
@@ -8412,9 +8849,11 @@ best_access_path(JOIN *join,
(1.0 +
((double) (table->s->max_key_length-keyinfo->key_length) /
(double) table->s->max_key_length)));
- if (records < 2.0)
- records=2.0; /* Can't be as good as a unique */
+ set_if_smaller(records, (double)s->records);
+ if (records < 1.0)
+ records= 1.0; /* Can't be as good as a unique */
}
+
/*
ReuseRangeEstimateForRef-2: We get here if we could not reuse
E(#rows) from range optimizer. Make another try:
@@ -8435,44 +8874,46 @@ best_access_path(JOIN *join,
records= (double) table->opt_range[key].rows;
trace_access_idx.add("used_range_estimates", "clipped down");
}
- else
+ else if (unlikely(trace_access_idx.trace_started()))
{
- trace_access_idx.add("used_range_estimates", false);
if (table->opt_range_keys.is_set(key))
{
- trace_access_idx.add("reason", "not better than ref estimates");
+ trace_access_idx.
+ add("used_range_estimates",false).
+ add("reason", "not better than ref estimates");
}
else
{
- trace_access_idx.add("reason", "not available");
+ trace_access_idx.
+ add("used_range_estimates", false).
+ add("reason", "not available");
}
}
}
- /* Limit the number of matched rows */
- tmp= cost_for_index_read(thd, table, key, (ha_rows) records,
- (ha_rows) s->worst_seeks);
- records_for_key= (ha_rows) records;
- set_if_smaller(records_for_key, thd->variables.max_seeks_for_key);
- keyread_tmp= table->file->keyread_time(key, 1, records_for_key);
- got_cost:
- tmp= COST_MULT(tmp, record_count);
- keyread_tmp= COST_MULT(keyread_tmp, record_count);
+ /* Calculate the cost of the index access */
+ tmp= cost_for_index_read(thd, table, key,
+ (ha_rows) records, 0);
}
}
else
{
type = ref_or_null_part ? JT_REF_OR_NULL : JT_REF;
- trace_access_idx.add("access_type", join_type_str[type])
- .add("index", keyinfo->name);
+ if (unlikely(trace_access_idx.trace_started()))
+ trace_access_idx.
+ add("access_type", join_type_str[type]).
+ add("index", keyinfo->name);
/*
Use as much key-parts as possible and a uniq key is better
than a not unique key
- Set tmp to (previous record count) * (records / combination)
+ Set tmp to the cost of the accessing the expected number of
+ records.
*/
if ((found_part & 1) &&
- (!(table->file->index_flags(key, 0, 0) & HA_ONLY_WHOLE_INDEX) ||
+ (!(table->key_info[key].index_flags & HA_ONLY_WHOLE_INDEX) ||
found_part == PREV_BITS(uint,keyinfo->user_defined_key_parts)))
{
+ double extra_cost= 0;
+
max_key_part= max_part_bit(found_part);
/*
ReuseRangeEstimateForRef-3:
@@ -8498,7 +8939,7 @@ best_access_path(JOIN *join,
We also have a property that "range optimizer produces equal or
tighter set of scan intervals than ref(const) optimizer". Each
of the intervals in (**) are "tightest possible" intervals when
- one limits itself to using keyparts 1..K (which we do in #2).
+ one limits itself to using keyparts 1..K (which we do in #2).
From here it follows that range access used either one, or
both of the (I1) and (I2) intervals:
@@ -8515,11 +8956,15 @@ best_access_path(JOIN *join,
*/
if (table->opt_range_keys.is_set(key) && !found_ref && //(C1)
table->opt_range[key].key_parts == max_key_part && //(C2)
- table->opt_range[key].ranges == 1 + MY_TEST(ref_or_null_part)) //(C3)
+ (table->opt_range[key].ranges ==
+ 1 + MY_TEST(ref_or_null_part))) //(C3)
{
records= (double) table->opt_range[key].rows;
- tmp= adjust_quick_cost(table->opt_range[key].cost,
- table->opt_range[key].rows);
+ table->opt_range[key].get_costs(&tmp);
+ /*
+ TODO: Disable opt_range testing below for this range as we can
+ always use this ref instead.
+ */
trace_access_idx.add("used_range_estimates", true);
goto got_cost2;
}
@@ -8546,16 +8991,34 @@ best_access_path(JOIN *join,
*/
if (table->opt_range_keys.is_set(key))
{
+ double rows;
if (table->opt_range[key].key_parts >= max_key_part) // (2)
{
- double rows= (double) table->opt_range[key].rows;
- if (!found_ref && // (1)
- records < rows) // (3)
+ /*
+ Choose range over REF in the case range will always be
+ as good or better than REF.
+ This is the case when we have only one const range
+ and it consist of more parts than what we used for REF.
+ */
+ if (!found_ref &&
+ table->opt_range[key].key_parts > max_key_part &&
+ table->opt_range[key].ranges <=
+ (uint) (1 + MY_TEST(ref_or_null_part)))
{
- trace_access_idx.add("used_range_estimates", "clipped up");
- records= rows;
+ trace_access_idx.
+ add("chosen", false).
+ add("cause", "range is simple and more selective");
+ continue; // continue with next key
}
}
+ rows= (double) table->opt_range[key].rows;
+ if (!found_ref && // (1)
+ records < rows) // (3)
+ {
+ trace_access_idx.add("used_range_estimates",
+ "clipped up");
+ records= rows;
+ }
}
}
else
@@ -8592,8 +9055,8 @@ best_access_path(JOIN *join,
a*keyinfo->user_defined_key_parts - rec_per_key)/
(keyinfo->user_defined_key_parts-1);
else
- records= a;
- set_if_bigger(records, 1.0);
+ records= rows2double(s->records);
+ set_if_bigger(records, MIN_ROWS_AFTER_FILTERING);
}
}
@@ -8601,6 +9064,7 @@ best_access_path(JOIN *join,
{
/* We need to do two key searches to find row */
records *= 2.0;
+ extra_cost= s->table->file->KEY_LOOKUP_COST;
}
/*
@@ -8629,35 +9093,39 @@ best_access_path(JOIN *join,
}
}
- /* Limit the number of matched rows */
- tmp= cost_for_index_read(thd, table, key, (ha_rows) records,
- (ha_rows) s->worst_seeks);
- records_for_key= (ha_rows) records;
- set_if_smaller(records_for_key, thd->variables.max_seeks_for_key);
- keyread_tmp= table->file->keyread_time(key, 1, records_for_key);
- got_cost2:
- tmp= COST_MULT(tmp, record_count);
- keyread_tmp= COST_MULT(keyread_tmp, record_count);
+ set_if_smaller(records, (double) s->records);
+ tmp= cost_for_index_read(thd, table, key, (ha_rows)records, 0);
+ tmp.copy_cost+= extra_cost;
}
else
{
if (!(found_part & 1))
cause= "no predicate for first keypart";
- tmp= best_time; // Do nothing
+ else
+ cause= "No full key found";
+ trace_access_idx.add("chosen", false).add("cause", cause);
+ continue;
}
}
- tmp= COST_ADD(tmp, s->startup_cost);
- loose_scan_opt.check_ref_access_part2(key, start_key, records, tmp,
+ got_cost2:
+ loose_scan_opt.check_ref_access_part2(key, start_key, records,
+ file->cost(&tmp) + startup_cost,
found_ref);
} /* not ft_key */
- if (records < DBL_MAX &&
- (found_part & 1) && // start_key->key can be used for index access
- (table->file->index_flags(start_key->key,0,1) &
- HA_DO_RANGE_FILTER_PUSHDOWN))
+ if (records == DBL_MAX) // Key not usable
+ continue;
+
+ records_best_filter= records_after_filter= records;
+
+ /*
+ Check if we can use a filter.
+ Records can be 0 in case of empty tables.
+ */
+ if ((found_part & 1) && records &&
+ table->can_use_rowid_filter(start_key->key))
{
- double rows= record_count * records;
/*
If we use filter F with selectivity s the the cost of fetching data
by key using this filter will be
@@ -8678,7 +9146,6 @@ best_access_path(JOIN *join,
Here we have:
cost_of_fetching_1_row = tmp/rows
cost_of_fetching_1_key_tuple = keyread_tmp/rows
-
Here's a more detailed explanation that uses the formulas behind
the function the call filter->get_adjusted_gain(). The function
takes as a parameter the number of probes/look-ups into the filter
@@ -8707,62 +9174,91 @@ best_access_path(JOIN *join,
For safety we clip cost_of_fetching_N_key_entries by the value
of cost_of_fetching_N_row though formally it's not necessary.
- */
- /*
- For eq_ref access we assume that the cost of fetching N key entries
- is equal to the half of fetching N rows
- */
- double key_access_cost=
- type == JT_EQ_REF ? 0.5 * tmp : MY_MIN(tmp, keyread_tmp);
- double access_cost_factor= MY_MIN((tmp - key_access_cost) / rows, 1.0);
+ We cannot use filter with JT_EQ_REF as in this case 'tmp' is
+ number of rows from prev_record_read() and keyread_tmp is 0. These
+ numbers are not usable with rowid filter code.
+ */
+ filter= table->best_range_rowid_filter(start_key->key,
+ records,
+ file->cost(&tmp),
+ file->cost(tmp.index_cost),
+ prev_record_count,
+ &records_best_filter);
+ set_if_smaller(best.records_out, records_best_filter);
- if (!(records < s->worst_seeks &&
- records <= thd->variables.max_seeks_for_key))
- {
- // Don't use rowid filter
- trace_access_idx.add("rowid_filter_skipped", "worst/max seeks clipping");
- filter= NULL;
- }
- else
- {
- filter=
- table->best_range_rowid_filter_for_partial_join(start_key->key,
- rows,
- access_cost_factor);
- }
if (filter)
- {
- tmp-= (filter->get_adjusted_gain(rows) -
- filter->get_cmp_gain(rows) -
- filter_setup_cost);
- DBUG_ASSERT(tmp >= 0);
- trace_access_idx.add("rowid_filter_key",
- table->key_info[filter->key_no].name);
- }
+ filter= filter->apply_filter(thd, table, &tmp,
+ &records_after_filter,
+ &startup_cost,
+ 1, prev_record_count);
}
- trace_access_idx.add("rows", records).add("cost", tmp);
- if (tmp + 0.0001 < best_time - records/TIME_FOR_COMPARE)
+ /*
+ Take into account WHERE and setup cost.
+ We have to check the WHERE for all previous row combinations
+ (record_count).
+ 'prev_record_count' is either 'record_count', or in case of
+ EQ_REF the estimated number of index_read() calls to the
+ engine when taking the one row read cache into account.
+ */
+ copy_cost= (record_count * records_after_filter * WHERE_COST_THD(thd) +
+ startup_cost);
+
+ cur_cost= (file->cost_for_reading_multiple_times(prev_record_count,
+ &tmp) +
+ copy_cost);
+
+ if (unlikely(trace_access_idx.trace_started()))
{
- trace_access_idx.add("chosen", true);
- best_time= COST_ADD(tmp, records/TIME_FOR_COMPARE);
- best= tmp;
- best_records= records;
- best_key= start_key;
- best_max_key_part= max_key_part;
- best_ref_depends_map= found_ref;
- best_filter= filter;
- best_type= type;
+ if (prev_record_count != record_count)
+ trace_access_idx.add("prev_record_count", prev_record_count);
+ trace_access_idx.
+ add("rows", records_after_filter).
+ add("cost", cur_cost);
}
- else
+
+ /*
+ The COST_EPS is here to ensure we use the first key if there are
+ two 'identical keys' that could be used.
+ */
+ if (cur_cost + COST_EPS < best.cost)
{
- trace_access_idx.add("chosen", false)
- .add("cause", cause ? cause : "cost");
- }
- cause= nullptr;
+ trace_access_idx.add("chosen", true);
+ best.cost= cur_cost;
+ /*
+ We use 'records' instead of 'records_after_filter' here as we want
+ to have EXPLAIN print the number of rows found by the key access.
+ */
+ best.records= records; // Records before filter!
+ best.records_read= records;
+ /*
+ If we are using 'use_cond_selectivity > 1' then
+ table_after_join_selectivity() may take into account other
+ filters that what is currently used so we have to use
+ records_after_filter. If 'use_cond_selectivity <= 1 then we
+ can use information from the best filter.
+ */
+ best.records_after_filter= ((use_cond_selectivity > 1) ?
+ records_after_filter :
+ records_best_filter);
+ best.prev_record_reads= prev_record_count;
+ best.identical_keys= identical_keys;
+ best.key= start_key;
+ best.found_ref= found_ref;
+ best.max_key_part= max_key_part;
+ best.ref_depends_map= found_ref;
+ best.filter= filter;
+ best.type= type;
+ }
+ else if (unlikely(thd->trace_started()))
+ {
+ trace_access_idx.
+ add("chosen", false).
+ add("cause", cause ? cause : "cost");
+ }
+ set_if_smaller(best.records_out, records);
} /* for each key */
- records= best_records;
}
else
{
@@ -8781,15 +9277,19 @@ best_access_path(JOIN *join,
*/
if (s->key_start_dependent)
key_dependent= s->key_dependent;
- /* Add dependencey for sub queries */
+
+ /* Add dependency for sub queries */
key_dependent|= s->embedded_dependent;
- }
+
+ } /* if (s->keyuse) */
+
+
/* Check that s->key_dependent contains all used_tables found in s->keyuse */
key_dependent&= ~PSEUDO_TABLE_BITS;
DBUG_ASSERT((key_dependent & (s->key_dependent | s->embedded_dependent)) ==
key_dependent);
- /*
+ /*
If there is no key to access the table, but there is an equi-join
predicate connecting the table with the privious tables then we
consider the possibility of using hash join.
@@ -8797,27 +9297,31 @@ best_access_path(JOIN *join,
(1) s is inner table of semi-join -> join cache is allowed for semijoins
(2) s is inner table of outer join -> join cache is allowed for outer joins
*/
- if (idx > join->const_tables && best_key == 0 &&
+ if (idx > join->const_tables && best.key == 0 &&
(join->allowed_join_cache_types & JOIN_CACHE_HASHED_BIT) &&
join->max_allowed_join_cache_level > 2 &&
!bitmap_is_clear_all(eq_join_set) && !disable_jbuf &&
(!s->emb_sj_nest ||
join->allowed_semijoin_with_cache) && // (1)
- (!(s->table->map & join->outer_join) ||
+ (!(table->map & join->outer_join) ||
join->allowed_outer_join_with_cache)) // (2)
{
- double fanout;
- double join_sel;
- bool stats_found= 0, force_estimate= 0;
Json_writer_object trace_access_hash(thd);
+ double refills, row_copy_cost, copy_cost, cur_cost, where_cost;
+ double matching_combinations, fanout= 0.0, join_sel;
trace_access_hash.add("type", "hash");
trace_access_hash.add("index", "hj-key");
- /* Estimate the cost of the hash join access to the table */
- double rnd_records= apply_selectivity_for_table(s, use_cond_selectivity,
- &force_estimate);
+ /* Estimate the cost of the hash join access to the table */
+ double rnd_records;
+ bool stats_found= 0;
+ rnd_records= apply_selectivity_for_table(s, use_cond_selectivity);
+ DBUG_ASSERT(rnd_records <= rows2double(s->found_records) + 0.5);
DBUG_ASSERT(hj_start_key);
- if (optimizer_flag(thd, OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY))
+
+ fanout= rnd_records;
+ if (optimizer_flag(thd, OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY) &&
+ rnd_records > 0)
{
/*
Starting from this point, rnd_records should not be used anymore.
@@ -8825,70 +9329,83 @@ best_access_path(JOIN *join,
*/
fanout= hash_join_fanout(join, s, remaining_tables, rnd_records,
hj_start_key, &stats_found);
- join_sel= 1.0; // Don't do the "10% heuristic"
- if (stats_found)
- goto fanout_computed;
+ set_if_smaller(best.records_out, fanout);
+ join_sel= 1.0;
+ }
+ if (!stats_found)
+ {
+ /*
+ No OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY or no field statistics
+ found.
+
+ Take into account if there is non constant constraints used with
+ earlier tables in the where expression.
+ If yes, this will set fanout to rnd_records/4.
+ We estimate that there will be HASH_FANOUT (10%)
+ hash matches / row.
+ */
+ fanout= ((found_constraint) ?
+ use_found_constraint(rnd_records) :
+ rnd_records);
+ set_if_smaller(best.records_out, fanout * HASH_FANOUT);
+ join_sel= HASH_FANOUT;
}
/*
- No OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY or no field statistics
- found.
-
- Take into account if there is non constant constraints used with
- earlier tables in the where expression.
- If yes, this will set fanout to rnd_records/4.
- We estimate that there will be HASH_FANOUT (10%)
- hash matches / row.
+ The following cost calculation is identical to the cost calculation for
+ the join cache later on, except for the HASH_FANOUT
*/
- if (found_constraint && !force_estimate)
- rnd_records= use_found_constraint(rnd_records);
- fanout= rnd_records;
- join_sel= 0.1;
-
- fanout_computed:
- tmp= s->quick ? s->quick->read_time : s->scan_time();
- double cmp_time= (s->records - rnd_records)/TIME_FOR_COMPARE;
- tmp= COST_ADD(tmp, cmp_time);
+ if (s->quick)
+ {
+ /*
+ Cost of reading rows through opt_range including comparing the rows
+ with the attached WHERE clause.
+ */
+ cur_cost= s->quick->read_time;
+ }
+ else
+ cur_cost= s->cached_scan_and_compare_time;
/* We read the table as many times as join buffer becomes full. */
+ refills= (1.0 + floor((double) cache_record_length(join,idx) *
+ record_count /
+ (double) thd->variables.join_buff_size));
+ cur_cost= COST_MULT(cur_cost, refills);
+
- double refills= (1.0 + floor((double) cache_record_length(join,idx) *
- record_count /
- (double) thd->variables.join_buff_size));
- tmp= COST_MULT(tmp, refills);
-
- // Add cost of reading/writing the join buffer
- if (optimizer_flag(thd, OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY))
- {
- /* Set it to be 1/10th of TIME_FOR_COMPARE */
- double row_copy_cost= 1.0 / (10*TIME_FOR_COMPARE);
- double join_buffer_operations=
- COST_ADD(
- COST_MULT(record_count, row_copy_cost),
- COST_MULT(record_count, fanout * (idx - join->const_tables))
- );
- double jbuf_use_cost= row_copy_cost * join_buffer_operations;
- trace_access_hash.add("jbuf_use_cost", jbuf_use_cost);
- tmp= COST_ADD(tmp, jbuf_use_cost);
- }
-
- double where_cost= COST_MULT((fanout*join_sel) / TIME_FOR_COMPARE,
- record_count);
- trace_access_hash.add("extra_cond_check_cost", where_cost);
-
- best_time= COST_ADD(tmp, where_cost);
-
- best= tmp;
- records= fanout;
- best_key= hj_start_key;
- best_ref_depends_map= 0;
- best_uses_jbuf= TRUE;
- best_filter= 0;
- best_type= JT_HASH;
- trace_access_hash.add("rnd_records", rnd_records);
- trace_access_hash.add("records", records);
- trace_access_hash.add("cost", best);
- trace_access_hash.add("chosen", true);
+ /*
+ Cost of doing the hash lookup and check all matching rows with the
+ WHERE clause.
+ We assume here that, thanks to the hash, we don't have to compare all
+ row combinations, only a fanout or HASH_FANOUT (10%) rows in the cache.
+ */
+ row_copy_cost= (ROW_COPY_COST_THD(thd) *
+ JOIN_CACHE_ROW_COPY_COST_FACTOR(thd));
+ matching_combinations= fanout * join_sel * record_count;
+ copy_cost= (record_count * row_copy_cost +
+ matching_combinations *
+ ((idx - join->const_tables) * row_copy_cost));
+ where_cost= matching_combinations * WHERE_COST_THD(thd);
+ cur_cost= COST_ADD(cur_cost, copy_cost + where_cost);
+
+ best.cost= cur_cost;
+ best.records_read= best.records_after_filter= rows2double(s->records);
+ best.records= rnd_records; // Records after where (Legacy value)
+ best.key= hj_start_key;
+ best.ref_depends_map= 0;
+ best.use_join_buffer= TRUE;
+ best.filter= 0;
+ best.type= JT_HASH;
+ best.refills= double_to_ulonglong(ceil(refills));
+ if (unlikely(trace_access_hash.trace_started()))
+ trace_access_hash.
+ add("rows", rnd_records).
+ add("rows_after_hash", fanout * join_sel).
+ add("refills", refills).
+ add("jbuf_use_cost", copy_cost).
+ add("extra_cond_check_cost", where_cost).
+ add("total_cost", best.cost).
+ add("chosen", true);
}
/*
@@ -8927,194 +9444,386 @@ best_access_path(JOIN *join,
be used for cases with small datasets, which is annoying.
*/
Json_writer_object trace_access_scan(thd);
- if ((records >= s->found_records || best > s->read_time) && // (1)
- !(best_key && best_key->key == MAX_KEY) && // (2)
+ if ((best.records_read >= s->found_records ||
+ best.cost > s->read_time) && // (1)
+ !(best.key && best.key->key == MAX_KEY) && // (2)
!(s->quick &&
s->quick->get_type() != QUICK_SELECT_I::QS_TYPE_GROUP_MIN_MAX && // (2)
- best_key && s->quick->index == best_key->key && // (2)
- s->table->opt_range_keys.is_set(best_key->key) && // (2)
- best_max_key_part >= s->table->opt_range[best_key->key].key_parts) &&// (2)
- !((s->table->file->ha_table_flags() & HA_TABLE_SCAN_ON_INDEX) && // (3)
- ! s->table->covering_keys.is_clear_all() && best_key && !s->quick) &&// (3)
- !(s->table->force_index && best_key && !s->quick) && // (4)
- !(best_key && s->table->pos_in_table_list->jtbm_subselect)) // (5)
+ best.key && s->quick->index == best.key->key && // (2)
+ table->opt_range_keys.is_set(best.key->key) && // (2)
+ best.max_key_part >= table->opt_range[best.key->key].key_parts) &&// (2)
+ !((file->ha_table_flags() & HA_TABLE_SCAN_ON_INDEX) && // (3)
+ !table->covering_keys.is_clear_all() && best.key && !s->quick) &&// (3)
+ !(table->force_index_join && best.key && !s->quick) && // (4)
+ !(best.key && table->pos_in_table_list->jtbm_subselect)) // (5)
{ // Check full join
- bool force_estimate= 0;
- double rnd_records= apply_selectivity_for_table(s,
- use_cond_selectivity,
- &force_estimate);
- rnd_records= ((found_constraint && !force_estimate) ?
- use_found_constraint(rnd_records) :
- rnd_records);
+ double records_after_filter, org_records;
+ double records_best_filter, cur_cost;
+ Range_rowid_filter_cost_info *filter= 0;
+ double startup_cost= s->startup_cost;
+ const char *scan_type= "";
+ enum join_type type;
+ uint forced_index= MAX_KEY;
+ bool force_plan= 0, use_join_buffer= 0;
+ ulonglong refills= 1;
+ ALL_READ_COST cost;
+
/*
Range optimizer never proposes a RANGE if it isn't better
than FULL: so if RANGE is present, it's always preferred to FULL.
Here we estimate its cost.
*/
- filter= 0;
if (s->quick)
{
/*
For each record we:
- read record range through 'quick'
- skip rows which does not satisfy WHERE constraints
- TODO:
- We take into account possible use of join cache for ALL/index
- access (see first else-branch below), but we don't take it into
- account here for range/index_merge access. Find out why this is so.
*/
- double cmp_time= (s->found_records - rnd_records) / TIME_FOR_COMPARE;
- tmp= COST_MULT(record_count,
- COST_ADD(s->quick->read_time, cmp_time));
- if ( s->quick->get_type() == QUICK_SELECT_I::QS_TYPE_RANGE)
+ /*
+ Use record count from range optimizer.
+ This is done to make records found comparable to what we get with
+ 'ref' access.
+ */
+ org_records= records_after_filter= rows2double(s->found_records);
+ records_best_filter= org_records;
+ set_if_smaller(best.records_out, records_best_filter);
+
+ if (s->quick->get_type() == QUICK_SELECT_I::QS_TYPE_RANGE)
{
- double rows= record_count * s->found_records;
uint key_no= s->quick->index;
+ TABLE::OPT_RANGE *range= &table->opt_range[key_no];
- /* See the comment concerning using rowid filter for with ref access */
- double row_access_cost= s->quick->read_time * record_count;
- double key_access_cost=
- MY_MIN(row_access_cost,
- s->table->opt_range[key_no].index_only_cost * record_count);
- double access_cost_factor= MY_MIN((row_access_cost - key_access_cost) /
- rows, 1.0);
- filter=
- s->table->best_range_rowid_filter_for_partial_join(key_no, rows,
- access_cost_factor);
- if (filter)
+ /*
+ Ensure that 'range' and 's' are coming from the same source
+ The complex 'double' comparison is there because floating point
+ registers complications when costs are calculated.
+ */
+ DBUG_ASSERT(range->rows >= s->found_records);
+ DBUG_ASSERT((range->cost.total_cost() == 0.0 &&
+ s->quick->read_time == 0.0) ||
+ compare_cost(range->cost.total_cost(),
+ s->quick->read_time));
+ DBUG_ASSERT(compare_cost(range->cost.comp_cost,
+ range->rows * file->WHERE_COST));
+
+ /* Get range cost. This does not include cost of the WHERE */
+ range->get_costs(&cost);
+ /* Ensure that cost from opt_range are correct */
+ DBUG_ASSERT(compare_cost(file->cost_no_capping(&cost) +
+ range->cost.comp_cost +
+ range->cost.setup_cost,
+ s->quick->read_time));
+
+ if (table->can_use_rowid_filter(key_no))
+ {
+ filter= table->best_range_rowid_filter(key_no,
+ rows2double(range->rows),
+ file->cost(&cost),
+ file->cost(cost.index_cost),
+ record_count,
+ &records_best_filter);
+ set_if_smaller(best.records_out, records_best_filter);
+ if (filter)
+ {
+ filter= filter->apply_filter(thd, table, &cost,
+ &records_after_filter,
+ &startup_cost,
+ range->ranges,
+ record_count);
+ if (filter)
+ {
+ set_if_smaller(best.records_out, records_after_filter);
+ table->opt_range[key_no].selectivity= filter->selectivity;
+ }
+ }
+ }
+ if (best.key && key_no == best.key->key &&
+ !best.found_ref &&
+ best.max_key_part < table->opt_range[best.key->key].key_parts &&
+ table->opt_range[best.key->key].ranges == 1)
{
- tmp-= filter->get_adjusted_gain(rows) - filter_setup_cost;
- DBUG_ASSERT(tmp >= 0);
+ /*
+ Force to use range as it is using the 'best key' and using more
+ key parts (and thus will read less rows)
+ */
+ force_plan= 1;
}
-
type= JT_RANGE;
+ /*
+ We cannot use range->cost.cmp_cost here as records_after_filter
+ is be different if filter is used.
+ */
+ cost.copy_cost+= (records_after_filter * file->WHERE_COST +
+ range->cost.setup_cost);
}
else
{
type= JT_INDEX_MERGE;
- best_filter= 0;
+ /*
+ We don't know exactly from where the costs comes from.
+ Let's store it in copy_cost.
+ Note that s->quick->read_time includes the cost of comparing
+ the row with the where clause (WHERE_COST)
+ */
+ cost.reset();
+ cost.copy_cost= s->quick->read_time;
}
loose_scan_opt.check_range_access(join, idx, s->quick);
}
else
{
- /* Estimate cost of reading table. */
- if (s->table->force_index && !best_key) // index scan
- {
- type= JT_NEXT;
- tmp= s->table->file->read_time(s->ref.key, 1, s->records);
- }
- else // table scan
- {
- tmp= s->scan_time();
- type= JT_ALL;
- }
+ double records_table_filter;
+
+ /* We will now calculate cost of scan, with or without join buffer */
+ records_best_filter= records_after_filter=
+ apply_selectivity_for_table(s, use_cond_selectivity);
+ records_table_filter= ((found_constraint) ?
+ use_found_constraint(records_after_filter) :
+ records_after_filter);
+
+ DBUG_ASSERT(records_after_filter <= s->records);
+ DBUG_ASSERT(records_after_filter <= s->found_records);
- if ((s->table->map & join->outer_join) || disable_jbuf) // Can't use join cache
+ set_if_smaller(best.records_out, records_table_filter);
+
+ org_records= rows2double(s->records);
+
+ /* Estimate cost of reading table. */
+ if (s->cached_forced_index_type)
{
- /*
- For each record we have to:
- - read the whole table record
- - skip rows which does not satisfy join condition
- */
- double cmp_time= (s->records - rnd_records)/TIME_FOR_COMPARE;
- tmp= COST_MULT(record_count, COST_ADD(tmp,cmp_time));
+ type= s->cached_forced_index_type;
+ cost= s->cached_forced_index_cost;
+ forced_index= s->cached_forced_index;
}
else
{
- double refills= (1.0 + floor((double) cache_record_length(join,idx) *
- (record_count /
- (double) thd->variables.join_buff_size)));
- tmp= COST_MULT(tmp, refills);
- /*
- We don't make full cartesian product between rows in the scanned
- table and existing records because we skip all rows from the
- scanned table, which does not satisfy join condition when
- we read the table (see flush_cached_records for details). Here we
- take into account cost to read and skip these records.
- */
- double cmp_time= (s->records - rnd_records)/TIME_FOR_COMPARE;
- tmp= COST_ADD(tmp, cmp_time);
+ if (table->force_index_join && !best.key)
+ {
+ /*
+ The query is using 'forced_index' and we did not find a usable key.
+ Calculate cost of a table scan with the forced index.
+ */
+ type= JT_NEXT;
+ if (s->cached_covering_key != MAX_KEY)
+ {
+ /* Use value from estimate_scan_time */
+ forced_index= s->cached_covering_key;
+ cost= s->cached_scan_and_compare_cost;
+ }
+ else
+ {
+#ifdef FORCE_INDEX_SHOULD_FORCE_INDEX_SCAN
+ /* No cached key, use shortest allowed key */
+ key_map keys= *file->keys_to_use_for_scanning();
+ keys.intersect(table->keys_in_use_for_query);
+ if ((forced_index= find_shortest_key(table, &keys)) < MAX_KEY)
+ {
+ cost= cost_for_index_read(thd, table,
+ forced_index,
+ s->records, 0);
+ /* Calculate cost of checking the attached WHERE */
+ cost.copy_cost+= s->records * file->WHERE_COST;
+ }
+ else
+#endif
+ {
+ /* No usable key, use table scan */
+ cost= s->cached_scan_and_compare_cost;
+ type= JT_ALL;
+ }
+ }
+ }
+ else // table scan
+ {
+ cost= s->cached_scan_and_compare_cost;
+ type= JT_ALL;
+ }
+ /* Cache result for other calls */
+ s->cached_forced_index_type= type;
+ s->cached_forced_index_cost= cost;
+ s->cached_forced_index= forced_index;
}
}
- trace_access_scan.add("access_type", type == JT_ALL ?
- "scan" :
- join_type_str[type]);
- /* Splitting technique cannot be used with join cache */
- if (s->table->is_splittable())
- tmp+= s->table->get_materialization_cost();
+ /*
+ Note: the condition checked here is very out of date and incorrect.
+ Below, we use a more accurate check when assigning the value of
+ best.use_join_buffer.
+ */
+ if ((s->table->map & join->outer_join) || disable_jbuf)
+ {
+ /*
+ Simple scan
+ We estimate we have to read org_records rows.
+ records_after_filter rows will survive the where check of constants.
+ 'best.records_out' rows will survive after the check against columns
+ from previous tables.
+ */
+ scan_type= "scan";
+
+ /*
+ We have to compare each row set against all previous row combinations
+ */
+ cur_cost= file->cost_for_reading_multiple_times(record_count,
+ &cost);
+ }
else
- tmp+= s->startup_cost;
+ {
+ /* Scan trough join cache */
+ double cmp_time, row_copy_cost, tmp_refills;
- /*
- We estimate the cost of evaluating WHERE clause for found records
- as record_count * rnd_records / TIME_FOR_COMPARE. This cost plus
- tmp give us total cost of using TABLE SCAN
- */
+ /*
+ Note that the cost of checking all rows against the table specific
+ WHERE is already included in cur_cost.
+ */
+ scan_type= "scan_with_join_cache";
+
+ /* Calculate cost of refills */
+ tmp_refills= (1.0 + floor((double) cache_record_length(join,idx) *
+ (record_count /
+ (double) thd->variables.join_buff_size)));
+ cur_cost= file->cost_for_reading_multiple_times(tmp_refills,
+ &cost);
+ refills= double_to_ulonglong(ceil(tmp_refills));
+
+ /* We come here only if there are already rows in the join cache */
+ DBUG_ASSERT(idx != join->const_tables);
+ /*
+ records_after_filter is the number of rows that have survived
+ the table specific WHERE check that only involves constants.
- const double best_filter_cmp_gain= best_filter
- ? best_filter->get_cmp_gain(record_count * records)
- : 0;
- trace_access_scan.add("resulting_rows", rnd_records);
- trace_access_scan.add("cost", tmp);
+ Calculate cost of:
+ - Copying all previous record combinations to the join cache
+ - Copying the tables from the join cache to table records
+ - Checking the WHERE against the final row combination
+ */
+ row_copy_cost= (ROW_COPY_COST_THD(thd) *
+ JOIN_CACHE_ROW_COPY_COST_FACTOR(thd));
+ cmp_time= (record_count * row_copy_cost +
+ records_after_filter * record_count *
+ ((idx - join->const_tables) * row_copy_cost +
+ WHERE_COST_THD(thd)));
+ cur_cost= COST_ADD(cur_cost, cmp_time);
+ use_join_buffer= 1;
+ }
- if (best == DBL_MAX ||
- COST_ADD(tmp, record_count/TIME_FOR_COMPARE*rnd_records) <
- (best_key->is_for_hash_join() ? best_time :
- COST_ADD(best - best_filter_cmp_gain,
- record_count/TIME_FOR_COMPARE*records)))
+ /* Splitting technique cannot be used with join cache */
+ if (table->is_splittable())
+ startup_cost+= table->get_materialization_cost();
+ cur_cost+= startup_cost;
+
+ if (unlikely(trace_access_scan.trace_started()))
+ {
+ trace_access_scan.
+ add("access_type",
+ type == JT_ALL ? scan_type : join_type_str[type]);
+ if (type == JT_RANGE)
+ trace_access_scan.
+ add("range_index", table->key_info[s->quick->index].name);
+ trace_access_scan.
+ add("rows", org_records).
+ add("rows_after_filter", records_after_filter).
+ add("rows_out", best.records_out).
+ add("cost", cur_cost);
+ if (use_join_buffer)
+ trace_access_scan.
+ add("cost_without_join_buffer",
+ file->cost_for_reading_multiple_times(record_count, &cost));
+ if (type == JT_ALL)
+ {
+ trace_access_scan.add("index_only",
+ (s->cached_covering_key != MAX_KEY));
+ }
+ }
+
+ if (cur_cost + COST_EPS < best.cost || force_plan)
{
/*
If the table has a range (s->quick is set) make_join_select()
will ensure that this will be used
*/
- best= tmp;
- records= rnd_records;
- best_key= 0;
- best_filter= 0;
- if (s->quick && s->quick->get_type() == QUICK_SELECT_I::QS_TYPE_RANGE)
- best_filter= filter;
+ best.cost= cur_cost;
+ best.records_read= org_records; // Records accessed
+ best.records= records_after_filter; // Records to be checked against
+ // previous row combinations
+
+ /*
+ If we are using 'use_cond_selectivity > 1' then
+ table_after_join_selectivity may take into account other
+ filters that what is currently used so we have to use
+ records_after_filter. If 'use_cond_selectivity <= 1 then we
+ can use information from the best filter.
+ */
+ best.records_after_filter= ((use_cond_selectivity > 1) ?
+ records_after_filter :
+ records_best_filter);
+ best.key= 0;
+ best.forced_index= forced_index;
+ /*
+ filter is only set if
+ s->quick->get_type() == QUICK_SELECT_I::QS_TYPE_RANGE
+ */
+ best.filter= filter;
/* range/index_merge/ALL/index access method are "independent", so: */
- best_ref_depends_map= 0;
- best_uses_jbuf= MY_TEST(!disable_jbuf &&
- (join->allowed_outer_join_with_cache ||
- !(s->table->map & join->outer_join)));
- spl_plan= 0;
- best_type= type;
+ best.ref_depends_map= 0;
+ best.use_join_buffer= use_join_buffer ||
+ MY_TEST(!disable_jbuf &&
+ (join->allowed_outer_join_with_cache ||
+ !(s->table->map & join->outer_join)));
+ best.refills= refills;
+ best.spl_plan= 0;
+ best.type= type;
+ trace_access_scan.add("chosen", true);
}
- trace_access_scan.add("chosen", best_key == NULL);
+ else
+ trace_access_scan.add("chosen", false);
}
else
{
- trace_access_scan.add("type", "scan");
- trace_access_scan.add("chosen", false);
- trace_access_scan.add("cause", "cost");
+ if (unlikely(trace_access_scan.trace_started()))
+ trace_access_scan.
+ add("type", "scan").
+ add("chosen", false).
+ add("cause", "cost");
}
+ crash_if_first_double_is_bigger(best.records_out, best.records);
+ crash_if_first_double_is_bigger(best.records_out, best.records_read);
+
/* Update the cost information for the current partial plan */
- pos->records_read= records;
- pos->read_time= best;
- pos->key= best_key;
- pos->type= best_type;
+ pos->loops= record_count;
+ pos->records_init= best.records_read;
+ pos->records_after_filter= best.records_after_filter;
+ pos->records_read= best.records;
+ pos->records_out= best.records_out;
+ pos->prev_record_reads= best.prev_record_reads;
+ pos->identical_keys= best.identical_keys;
+ pos->read_time= best.cost;
+ pos->key= best.key;
+ pos->forced_index= best.forced_index;
+ pos->type= best.type;
pos->table= s;
- pos->ref_depend_map= best_ref_depends_map;
+ pos->ref_depend_map= best.ref_depends_map;
pos->loosescan_picker.loosescan_key= MAX_KEY;
- pos->use_join_buffer= best_uses_jbuf;
- pos->spl_plan= spl_plan;
- pos->spl_pd_boundary= !spl_plan ? 0 : spl_pd_boundary;
- pos->range_rowid_filter_info= best_filter;
- pos->key_dependent= (best_type == JT_EQ_REF ? (table_map) 0 :
+ pos->use_join_buffer= best.use_join_buffer;
+ pos->firstmatch_with_join_buf= 0;
+ pos->spl_plan= best.spl_plan;
+ pos->spl_pd_boundary= best.spl_plan ? spl_pd_boundary: 0;
+ pos->range_rowid_filter_info= best.filter;
+ pos->key_dependent= (best.type == JT_EQ_REF ? (table_map) 0 :
key_dependent & remaining_tables);
+ pos->refills= best.refills;
- loose_scan_opt.save_to_position(s, loose_scan_pos);
+ loose_scan_opt.save_to_position(s, record_count, pos->records_out,
+ loose_scan_pos);
- if (!best_key &&
- idx == join->const_tables &&
- s->table == join->sort_by_table &&
- join->unit->lim.get_select_limit() >= records)
+ if (!best.key &&
+ idx == join->const_tables && // First table
+ table == join->sort_by_table &&
+ join->unit->lim.get_select_limit() >= best.records) // QQQ Why?
{
trace_access_scan.add("use_tmp_table", true);
join->sort_by_table= (TABLE*) 1; // Must use temporary table
@@ -9123,7 +9832,7 @@ best_access_path(JOIN *join,
trace_paths.end();
if (unlikely(thd->trace_started()))
- print_best_access_for_table(thd, pos, best_type);
+ print_best_access_for_table(thd, pos);
DBUG_VOID_RETURN;
}
@@ -9171,6 +9880,7 @@ static void choose_initial_table_order(JOIN *join)
JOIN_TAB **tab= join->best_ref + join->const_tables;
JOIN_TAB **tabs_end= tab + join->table_count - join->const_tables;
DBUG_ENTER("choose_initial_table_order");
+
/* Find where the top-level JOIN_TABs end and subquery JOIN_TABs start */
for (; tab != tabs_end; tab++)
{
@@ -9251,6 +9961,7 @@ static void choose_initial_table_order(JOIN *join)
@param join pointer to the structure providing all context info for
the query
@param join_tables set of the tables in the query
+ @param emb_sjm_nest List of tables in case of materialized semi-join nest
@retval
FALSE ok
@@ -9259,13 +9970,14 @@ static void choose_initial_table_order(JOIN *join)
*/
bool
-choose_plan(JOIN *join, table_map join_tables)
+choose_plan(JOIN *join, table_map join_tables, TABLE_LIST *emb_sjm_nest)
{
uint search_depth= join->thd->variables.optimizer_search_depth;
uint use_cond_selectivity=
join->thd->variables.optimizer_use_condition_selectivity;
bool straight_join= MY_TEST(join->select_options & SELECT_STRAIGHT_JOIN);
THD *thd= join->thd;
+ qsort2_cmp jtab_sort_func;
DBUG_ENTER("choose_plan");
join->cur_embedding_map= 0;
@@ -9273,26 +9985,33 @@ choose_plan(JOIN *join, table_map join_tables)
join->prune_level= join->thd->variables.optimizer_prune_level;
reset_nj_counters(join, join->join_list);
- qsort2_cmp jtab_sort_func;
- if (join->emb_sjm_nest)
+ if ((join->emb_sjm_nest= emb_sjm_nest))
{
/* We're optimizing semi-join materialization nest, so put the
tables from this semi-join as first
*/
jtab_sort_func= join_tab_cmp_embedded_first;
+ /*
+ If we are searching for the execution plan of a materialized semi-join
+ nest then allowed_tables contains bits only for the tables from this
+ nest.
+ */
+ join->allowed_tables= (emb_sjm_nest->sj_inner_tables &
+ ~join->const_table_map);
}
else
{
/*
if (SELECT_STRAIGHT_JOIN option is set)
reorder tables so dependent tables come after tables they depend
- on, otherwise keep tables in the order they were specified in the query
+ on, otherwise keep tables in the order they were specified in the query
else
- Apply heuristic: pre-sort all access plans with respect to the number of
- records accessed.
+ Apply heuristic: pre-sort all access plans with respect to the number
+ of records accessed.
*/
jtab_sort_func= straight_join ? join_tab_cmp_straight : join_tab_cmp;
+ join->allowed_tables= ~join->const_table_map;
}
/*
@@ -9303,19 +10022,19 @@ choose_plan(JOIN *join, table_map join_tables)
*/
my_qsort2(join->best_ref + join->const_tables,
join->table_count - join->const_tables, sizeof(JOIN_TAB*),
- jtab_sort_func, (void*)join->emb_sjm_nest);
+ jtab_sort_func, (void*) emb_sjm_nest);
Json_writer_object wrapper(thd);
Json_writer_array trace_plan(thd,"considered_execution_plans");
- if (!join->emb_sjm_nest)
- {
+ if (!emb_sjm_nest)
choose_initial_table_order(join);
- }
+
/*
Note: constant tables are already in the join prefix. We don't
put them into the cur_sj_inner_tables, though.
*/
+
join->cur_sj_inner_tables= 0;
if (straight_join)
@@ -9339,14 +10058,7 @@ choose_plan(JOIN *join, table_map join_tables)
DBUG_RETURN(TRUE);
}
- /*
- Store the cost of this query into a user variable
- Don't update last_query_cost for statements that are not "flat joins" :
- i.e. they have subqueries, unions or call stored procedures.
- TODO: calculate a correct cost for a query with subqueries and UNIONs.
- */
- if (join->thd->lex->is_single_level_stmt())
- join->thd->status_var.last_query_cost= join->best_read;
+ join->emb_sjm_nest= 0;
DBUG_RETURN(FALSE);
}
@@ -9612,45 +10324,98 @@ optimize_straight_join(JOIN *join, table_map remaining_tables)
{
POSITION *position= join->positions + idx;
Json_writer_object trace_one_table(thd);
+ double original_record_count, current_record_count;
+
if (unlikely(thd->trace_started()))
- trace_plan_prefix(join, idx, remaining_tables);
+ trace_plan_prefix(&trace_one_table, join, idx, remaining_tables);
/* Find the best access method from 's' to the current partial plan */
best_access_path(join, s, remaining_tables, join->positions, idx,
disable_jbuf, record_count,
position, &loose_scan_pos);
/* Compute the cost of the new plan extended with 's' */
- record_count= COST_MULT(record_count, position->records_read);
- const double filter_cmp_gain= position->range_rowid_filter_info
- ? position->range_rowid_filter_info->get_cmp_gain(record_count)
- : 0;
- read_time= COST_ADD(read_time,
- COST_ADD(position->read_time -
- filter_cmp_gain,
- record_count /
- TIME_FOR_COMPARE));
- optimize_semi_joins(join, remaining_tables, idx, &record_count, &read_time,
- &loose_scan_pos);
+ current_record_count= COST_MULT(record_count, position->records_out);
+ read_time= COST_ADD(read_time, position->read_time);
+ original_record_count= current_record_count;
+ optimize_semi_joins(join, remaining_tables, idx, &current_record_count,
+ &read_time, &loose_scan_pos);
+ if (position->sj_strategy != SJ_OPT_NONE && original_record_count)
+ {
+ /* Adjust records_out to contain the final number of rows */
+ double ratio= current_record_count / original_record_count;
+ if (ratio < 1)
+ {
+ position->records_out*= ratio;
+ }
+ if (unlikely(trace_one_table.trace_started()))
+ {
+ trace_one_table.
+ add("sj_rows_out", position->records_out).
+ add("sj_rows_for_plan", current_record_count).
+ add("sj_filtered", safe_filtered(position->records_out,
+ position->records_init));
+ }
+ }
remaining_tables&= ~(s->table->map);
- double pushdown_cond_selectivity= 1.0;
- if (use_cond_selectivity > 1)
- pushdown_cond_selectivity= table_cond_selectivity(join, idx, s,
- remaining_tables);
- position->cond_selectivity= pushdown_cond_selectivity;
- double partial_join_cardinality= record_count *
- pushdown_cond_selectivity;
- join->positions[idx].partial_join_cardinality= partial_join_cardinality;
+ if (use_cond_selectivity > 1 && position->sj_strategy == SJ_OPT_NONE)
+ {
+ double pushdown_cond_selectivity, records_out;
+ pushdown_cond_selectivity= table_after_join_selectivity(join, idx, s,
+ remaining_tables,
+ &records_out);
+ if (unlikely(thd->trace_started()) &&
+ pushdown_cond_selectivity != 1.0)
+ {
+ trace_one_table.
+ add("rows_out", records_out).
+ add("pushdown_cond_selectivity", pushdown_cond_selectivity).
+ add("filtered", safe_filtered(position->records_out,
+ position->records_init));
+ }
+ position->cond_selectivity= pushdown_cond_selectivity;
+ position->records_out= records_out;
+ current_record_count= COST_MULT(record_count, records_out);
+ }
+ else
+ position->cond_selectivity= 1.0;
+
+ position->partial_join_cardinality= current_record_count;
++idx;
+ record_count= current_record_count;
}
if (join->sort_by_table &&
join->sort_by_table != join->positions[join->const_tables].table->table)
- read_time+= record_count; // We have to make a temp table
+ {
+ /*
+ We may have to make a temp table, note that this is only a
+ heuristic since we cannot know for sure at this point if we
+ we are going to use addon fields or to have flush sorting to
+ disk. We also don't know the temporary table will be in memory
+ or disk.
+ The following calculation takes a middle ground where assume
+ we can sort the keys in memory but have to use a disk based
+ temporary table to retrive the rows.
+ This cost is probably much bigger than it has to be...
+ */
+ double sort_cost;
+ sort_cost= (get_qsort_sort_cost((ha_rows)record_count, 0) +
+ record_count *
+ DISK_TEMPTABLE_LOOKUP_COST(thd));
+ {
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object trace_one_table(thd);
+ trace_one_table.add("estimated_cost_for_sorting", sort_cost);
+ }
+ }
+ read_time= COST_ADD(read_time, sort_cost);
+ }
memcpy((uchar*) join->best_positions, (uchar*) join->positions,
sizeof(POSITION)*idx);
join->join_record_count= record_count;
- join->best_read= read_time - COST_EPS;
+ join->best_read= read_time;
}
@@ -9752,6 +10517,7 @@ greedy_search(JOIN *join,
// ==join->tables or # tables in the sj-mat nest we're optimizing
uint n_tables __attribute__((unused));
DBUG_ENTER("greedy_search");
+ DBUG_ASSERT(!(remaining_tables & join->const_table_map));
/* number of tables that remain to be optimized */
usable_tables= (join->emb_sjm_nest ?
@@ -9840,9 +10606,7 @@ greedy_search(JOIN *join,
/* compute the cost of the new plan extended with 'best_table' */
record_count= COST_MULT(record_count, join->positions[idx].records_read);
- read_time= COST_ADD(read_time,
- COST_ADD(join->positions[idx].read_time,
- record_count / TIME_FOR_COMPARE));
+ read_time= COST_ADD(read_time, join->positions[idx].read_time);
remaining_tables&= ~(best_table->table->map);
--size_remain;
@@ -9950,9 +10714,7 @@ void JOIN::get_partial_cost_and_fanout(int end_tab_idx,
if (tab->records_read && (cur_table_map & filter_map))
{
record_count= COST_MULT(record_count, tab->records_read);
- read_time= COST_ADD(read_time,
- COST_ADD(tab->read_time,
- record_count / TIME_FOR_COMPARE));
+ read_time= COST_ADD(read_time, tab->read_time);
if (tab->emb_sj_nest)
sj_inner_fanout= COST_MULT(sj_inner_fanout, tab->records_read);
}
@@ -9967,7 +10729,7 @@ void JOIN::get_partial_cost_and_fanout(int end_tab_idx,
if (tab == end_tab)
break;
}
- *read_time_arg= read_time;// + record_count / TIME_FOR_COMPARE;
+ *read_time_arg= read_time;
*record_count_arg= record_count;
}
@@ -9996,9 +10758,8 @@ void JOIN::get_prefix_cost_and_fanout(uint n_tables,
record_count= COST_MULT(record_count, best_positions[i].records_read);
read_time= COST_ADD(read_time, best_positions[i].read_time);
}
- /* TODO: Take into account condition selectivities here */
}
- *read_time_arg= read_time;// + record_count / TIME_FOR_COMPARE;
+ *read_time_arg= read_time;
*record_count_arg= record_count;
}
@@ -10029,8 +10790,7 @@ double JOIN::get_examined_rows()
COST_MULT((double) (tab->get_examined_rows()), prev_fanout));
prev_tab= tab;
}
- examined_rows= (double)
- (records > (double) HA_ROWS_MAX ? HA_ROWS_MAX : (ha_rows) records);
+ examined_rows= records;
return examined_rows;
}
@@ -10161,9 +10921,10 @@ double table_multi_eq_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
@brief
Get the selectivity of conditions when joining a table
- @param join The optimized join
- @param s The table to be joined for evaluation
- @param rem_tables The bitmap of tables to be joined later
+ @param join The optimized join
+ @param s The table to be joined for evaluation
+ @param rem_tables The bitmap of tables to be joined later
+ @param new_records_out OUT Set to number of rows accepted
@detail
Get selectivity of conditions that can be applied when joining this table
@@ -10177,12 +10938,14 @@ double table_multi_eq_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
condition, "COND(this_table) AND COND(this_table, previous_tables)".
@retval
- selectivity of the conditions imposed on the rows of s
+ selectivity of the conditions imposed on the rows of s related to
+ the rows that we are expected to read (position->records_init).
*/
static
-double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
- table_map rem_tables)
+double table_after_join_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
+ table_map rem_tables,
+ double *new_records_out)
{
uint16 ref_keyuse_steps_buf[MAX_REF_PARTS];
uint ref_keyuse_size= MAX_REF_PARTS;
@@ -10190,13 +10953,14 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
Field *field;
TABLE *table= s->table;
MY_BITMAP *read_set= table->read_set;
- double sel= s->table->cond_selectivity;
POSITION *pos= &join->positions[idx];
+ double sel, records_out= pos->records_out;
uint keyparts= 0;
uint found_part_ref_or_null= 0;
if (pos->key != 0)
{
+ sel= table->cond_selectivity;
/*
A ref access or hash join is used for this table. ref access is created
from
@@ -10245,13 +11009,15 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
{
key_part_map quick_key_map= (key_part_map(1) <<
table->opt_range[key].key_parts) - 1;
- if (table->opt_range[key].rows &&
- !(quick_key_map & ~table->const_key_parts[key]))
+ if (s->type == JT_RANGE ||
+ (table->opt_range[key].rows && (table->const_key_parts[key] & 1)))
{
- /*
- Ok, there is an equality for each of the key parts used by the
- quick select. This means, quick select's estimate can be reused to
- discount the selectivity of a prefix of a ref access.
+ /*
+ We are either using a range or we are using a REF which the
+ same key as an active range and the first key part is a constant.
+
+ In both cases we have to discount the selectivity for the range
+ as otherwise we are using the selectivity twice.
*/
for (; quick_key_map & 1 ; quick_key_map>>= 1)
{
@@ -10272,7 +11038,11 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
However if sel becomes greater than 2 then with high probability
something went wrong.
*/
- sel /= (double)table->opt_range[key].rows / (double) table->stat_records();
+ DBUG_ASSERT(sel <= 1.0);
+ DBUG_ASSERT(table->opt_range[key].rows <=
+ (double) table->stat_records());
+ sel /= ((double) table->opt_range[key].rows /
+ (double) table->stat_records());
set_if_smaller(sel, 1.0);
used_range_selectivity= true;
}
@@ -10366,38 +11136,26 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
}
keyuse++;
}
- }
- else
- {
/*
- The table is accessed with full table scan, or quick select.
- Selectivity of COND(table) is already accounted for in
- apply_selectivity_for_table().
- */
- sel= 1;
- }
+ If the field f from the table is equal to a field from one the
+ earlier joined tables then the selectivity of the range conditions
+ over the field f must be discounted.
- /*
- If the field f from the table is equal to a field from one the
- earlier joined tables then the selectivity of the range conditions
- over the field f must be discounted.
-
- We need to discount selectivity only if we're using ref-based
- access method (and have sel!=1).
- If we use ALL/range/index_merge, then sel==1, and no need to discount.
- */
- if (pos->key != NULL)
- {
+ We need to discount selectivity only if we're using ref-based
+ access method (and have sel!=1).
+ If we use ALL/range/index_merge, then sel==1, and no need to discount.
+ */
for (Field **f_ptr=table->field ; (field= *f_ptr) ; f_ptr++)
{
if (!bitmap_is_set(read_set, field->field_index) ||
!field->next_equal_field)
- continue;
- for (Field *next_field= field->next_equal_field;
- next_field != field;
+ continue;
+ for (Field *next_field= field->next_equal_field;
+ next_field != field;
next_field= next_field->next_equal_field)
{
- if (!(next_field->table->map & rem_tables) && next_field->table != table)
+ if (!(next_field->table->map & rem_tables) &&
+ next_field->table != table)
{
if (field->cond_selectivity > 0)
{
@@ -10408,11 +11166,37 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
}
}
}
+ /*
+ We have now calculated a more exact 'records_out' taking more index
+ costs into account.
+ pos->records_out previously contained the smallest record count for
+ all range or ref access, which should not be smaller than what we
+ calculated above.
+ */
+ records_out= pos->records_init * sel;
+ set_if_smaller(records_out, pos->records_out);
}
- sel*= table_multi_eq_cond_selectivity(join, idx, s, rem_tables,
+ sel= table_multi_eq_cond_selectivity(join, idx, s, rem_tables,
keyparts, ref_keyuse_steps);
+ records_out*= sel;
+
+ /*
+ Update sel to be relative pos->records_read as that is what some old
+ code expects. Newer code should just use 'position->records_out' instead.
+ */
+ if (pos->records_read == 0)
+ sel= 1.0;
+ else
+ {
+ sel= records_out / pos->records_read;
+ DBUG_ASSERT(sel >= 0.0 && sel <= 1.00001);
+ if (sel > 1.0)
+ sel= 1.0;
+ }
+
exit:
+ *new_records_out= records_out;
if (ref_keyuse_steps != ref_keyuse_steps_buf)
my_free(ref_keyuse_steps);
return sel;
@@ -10433,7 +11217,7 @@ check_if_edge_table(POSITION *pos,
if ((pos->type == JT_EQ_REF ||
(pos->type == JT_REF &&
- pos->records_read == 1 &&
+ pos->records_init == 1 &&
!pos->range_rowid_filter_info)) &&
pushdown_cond_selectivity >= 0.999)
return SEARCH_FOUND_EDGE;
@@ -10626,7 +11410,7 @@ get_costs_for_tables(JOIN *join, table_map remaining_tables, uint idx,
// pplan_cost already too great, stop search
continue;
- pplan= expand pplan by best_access_method;
+ pplan= expand plan by best_access_method;
remaining_tables= remaining_tables - table T;
if (remaining_tables is not an empty set
and
@@ -10697,8 +11481,8 @@ best_extension_by_limited_search(JOIN *join,
{
THD *thd= join->thd;
/*
- 'join' is a partial plan with lower cost than the best plan so far,
- so continue expanding it further with the tables in 'remaining_tables'.
+ 'join' is a partial plan with lower cost than the best plan so far,
+ so continue expanding it further with the tables in 'remaining_tables'.
*/
JOIN_TAB *s;
double best_record_count= DBL_MAX;
@@ -10711,19 +11495,18 @@ best_extension_by_limited_search(JOIN *join,
SORT_POSITION *sort= (SORT_POSITION*) alloca(sizeof(SORT_POSITION)*tables_left);
SORT_POSITION *sort_end;
DBUG_ENTER("best_extension_by_limited_search");
-
DBUG_EXECUTE_IF("show_explain_probe_best_ext_lim_search",
- if (dbug_user_var_equals_int(thd,
+ if (dbug_user_var_equals_int(thd,
"show_explain_probe_select_id",
join->select_lex->select_number))
- dbug_serve_apcs(thd, 1);
- );
+ dbug_serve_apcs(thd, 1);
+ );
if (unlikely(thd->check_killed())) // Abort
DBUG_RETURN(SEARCH_ABORT);
DBUG_EXECUTE("opt", print_plan(join, idx, record_count, read_time, read_time,
- "part_plan"););
+ "part_plan"););
status_var_increment(thd->status_var.optimizer_join_prefixes_check_calls);
if (join->emb_sjm_nest)
@@ -10740,7 +11523,6 @@ best_extension_by_limited_search(JOIN *join,
/*
allowed_tables is used to check if there are tables left that can improve
a key search and to see if there are more tables to add in next iteration.
-
allowed_current_tables tells us which tables we can add to the current
plan at this stage.
*/
@@ -10754,7 +11536,7 @@ best_extension_by_limited_search(JOIN *join,
Json_writer_object trace_one_table(thd);
JOIN_TAB **best_ref= join->best_ref + idx;
if (unlikely(thd->trace_started()))
- trace_plan_prefix(join, idx, remaining_tables);
+ trace_plan_prefix(&trace_one_table, join, idx, remaining_tables);
Json_writer_array arr(thd, "get_costs_for_tables");
@@ -10813,14 +11595,15 @@ best_extension_by_limited_search(JOIN *join,
!check_interleaving_with_nj(s))
{
table_map real_table_bit= s->table->map;
- double current_record_count, current_read_time;
+ double current_record_count, current_read_time, original_record_count;
double partial_join_cardinality;
POSITION *position= join->positions + idx, *loose_scan_pos;
+ double pushdown_cond_selectivity;
Json_writer_object trace_one_table(thd);
if (unlikely(thd->trace_started()))
{
- trace_plan_prefix(join, idx, remaining_tables);
+ trace_plan_prefix(&trace_one_table, join, idx, remaining_tables);
trace_one_table.add_table_name(s);
}
@@ -10829,26 +11612,35 @@ best_extension_by_limited_search(JOIN *join,
loose_scan_pos= pos->position+1;
/* Compute the cost of the new plan extended with 's' */
- current_record_count= COST_MULT(record_count, position->records_read);
- const double filter_cmp_gain= position->range_rowid_filter_info
- ? position->range_rowid_filter_info->get_cmp_gain(current_record_count)
- : 0;
- current_read_time= COST_ADD(read_time,
- COST_ADD(position->read_time -
- filter_cmp_gain,
- current_record_count /
- TIME_FOR_COMPARE));
+ current_record_count= COST_MULT(record_count, position->records_out);
+ current_read_time= COST_ADD(read_time, position->read_time);
- if (unlikely(thd->trace_started()))
+ if (unlikely(trace_one_table.trace_started()))
{
- trace_one_table.add("rows_for_plan", current_record_count);
- trace_one_table.add("cost_for_plan", current_read_time);
+ trace_one_table.
+ add("rows_for_plan", current_record_count).
+ add("cost_for_plan", current_read_time);
}
+ original_record_count= current_record_count;
optimize_semi_joins(join, remaining_tables, idx, &current_record_count,
&current_read_time, loose_scan_pos);
-
+ if (position->sj_strategy != SJ_OPT_NONE)
+ {
+ /* Adjust records_out and current_record_count after semi join */
+ double ratio= current_record_count / original_record_count;
+ if (ratio < 1.0)
+ position->records_out*= ratio;
+ if (unlikely(trace_one_table.trace_started()))
+ {
+ trace_one_table.
+ add("sj_rows_out", position->records_out).
+ add("sj_rows_for_plan", current_record_count).
+ add("sj_filtered", safe_filtered(position->records_out,
+ position->records_init));
+ }
+ }
/* Expand only partial plans with lower cost than the best QEP so far */
- if (current_read_time >= join->best_read)
+ if (current_read_time + COST_EPS >= join->best_read)
{
DBUG_EXECUTE("opt", print_plan(join, idx+1,
current_record_count,
@@ -10858,7 +11650,7 @@ best_extension_by_limited_search(JOIN *join,
trace_one_table
.add("pruned_by_cost", true)
.add("current_cost", current_read_time)
- .add("best_cost", join->best_read + COST_EPS);
+ .add("best_cost", join->best_read);
restore_prev_nj_state(s);
restore_prev_sj_state(remaining_tables, s, idx);
@@ -10897,19 +11689,19 @@ best_extension_by_limited_search(JOIN *join,
if (best_record_count > current_record_count ||
best_read_time > current_read_time ||
(idx == join->const_tables && // 's' is the first table in the QEP
- s->table == join->sort_by_table))
+ s->table == join->sort_by_table))
{
/*
Store the current record count and cost as the best
possible cost at this level if the following holds:
- It's the lowest record number and cost so far
- - There is no remaing table that could improve index usage
- or we found an EQ_REF or REF key with less than 2
- matching records (good enough).
+ - There is no remaing table that could improve index usage
+ or we found an EQ_REF or REF key with less than 2
+ matching records (good enough).
*/
if (best_record_count >= current_record_count &&
best_read_time >= current_read_time &&
- (!(position->key_dependent & allowed_tables) ||
+ (!(position->key_dependent & join->allowed_tables) ||
position->records_read < 2.0))
{
best_record_count= current_record_count;
@@ -10956,28 +11748,40 @@ best_extension_by_limited_search(JOIN *join,
}
}
- double pushdown_cond_selectivity= 1.0;
- if (use_cond_selectivity > 1)
- pushdown_cond_selectivity= table_cond_selectivity(join, idx, s,
- remaining_tables &
- ~real_table_bit);
- join->positions[idx].cond_selectivity= pushdown_cond_selectivity;
-
- partial_join_cardinality= (current_record_count *
- pushdown_cond_selectivity);
-
- if (unlikely(thd->trace_started()))
+ pushdown_cond_selectivity= 1.0;
+ /*
+ TODO: When a semi-join strategy is applied (sj_strategy!=SJ_OPT_NONE),
+ we should account for selectivity from table_after_join_selectivity().
+ (Condition filtering is performed before the semi-join removes some
+ fanout so this might require moving the code around)
+ */
+ if (use_cond_selectivity > 1 && position->sj_strategy == SJ_OPT_NONE)
{
- if (pushdown_cond_selectivity < 1.0)
- {
- trace_one_table.add("selectivity", pushdown_cond_selectivity);
- trace_one_table.add("estimated_join_cardinality",
- partial_join_cardinality);
- }
+ pushdown_cond_selectivity=
+ table_after_join_selectivity(join, idx, s,
+ remaining_tables & ~real_table_bit,
+ &position->records_out);
+
+ if (unlikely(trace_one_table.trace_started()) &&
+ pushdown_cond_selectivity != 1.0)
+ trace_one_table.
+ add("pushdown_cond_selectivity", pushdown_cond_selectivity).
+ add("filtered", safe_filtered(position->records_out,
+ position->records_init)).
+ add("rows_out", position->records_out);
}
+ join->positions[idx].cond_selectivity= pushdown_cond_selectivity;
+ partial_join_cardinality= record_count * position->records_out;
join->positions[idx].partial_join_cardinality= partial_join_cardinality;
+ if (unlikely(thd->trace_started()) && pushdown_cond_selectivity < 1.0 &&
+ partial_join_cardinality < current_record_count)
+ trace_one_table
+ .add("selectivity", pushdown_cond_selectivity)
+ .add("estimated_join_cardinality", partial_join_cardinality);
+
+
if ((search_depth > 1) && (remaining_tables & ~real_table_bit) &
allowed_tables)
{
@@ -11017,18 +11821,28 @@ best_extension_by_limited_search(JOIN *join,
{
/*
We may have to make a temp table, note that this is only a
- heuristic since we cannot know for sure at this point.
- Hence it may be wrong.
+ heuristic since we cannot know for sure at this point if we
+ we are going to use addon fields or to have flush sorting to
+ disk. We also don't know the temporary table will be in memory
+ or disk.
+ The following calculation takes a middle ground where assume
+ we can sort the keys in memory but have to use a disk based
+ temporary table to retrive the rows.
+ This cost is probably much bigger than it has to be...
*/
- trace_one_table.add("cost_for_sorting", current_record_count);
- current_read_time= COST_ADD(current_read_time, current_record_count);
+ double sort_cost;
+ sort_cost= (get_qsort_sort_cost((ha_rows)current_record_count,0) +
+ current_record_count *
+ DISK_TEMPTABLE_LOOKUP_COST(thd));
+ trace_one_table.add("cost_for_sorting", sort_cost);
+ current_read_time= COST_ADD(current_read_time, sort_cost);
}
if (current_read_time < join->best_read)
{
memcpy((uchar*) join->best_positions, (uchar*) join->positions,
sizeof(POSITION) * (idx + 1));
join->join_record_count= partial_join_cardinality;
- join->best_read= current_read_time - COST_EPS;
+ join->best_read= current_read_time;
}
DBUG_EXECUTE("opt", print_plan(join, idx+1,
current_record_count,
@@ -11283,92 +12097,241 @@ cache_record_length(JOIN *join,uint idx)
return length;
}
-
/*
- Get the number of different row combinations for subset of partial join
+ Estimate the number of engine ha_index_read_calls for EQ_REF tables
+ when taking into account the one-row-cache in join_read_always_key()
SYNOPSIS
- prev_record_reads()
- join The join structure
- idx Number of tables in the partial join order (i.e. the
- partial join order is in join->positions[0..idx-1])
- found_ref Bitmap of tables for which we need to find # of distinct
- row combinations.
+ @param position All previous tables best_access_path() information.
+ @param idx Number of (previous) tables in positions.
+ @param record_count Number of incoming record combinations
+ @param found_ref Bitmap of tables that is used to construct the key
+ used with the index read.
- DESCRIPTION
- Given a partial join order (in join->positions[0..idx-1]) and a subset of
- tables within that join order (specified in found_ref), find out how many
- distinct row combinations of subset tables will be in the result of the
- partial join order.
-
- This is used as follows: Suppose we have a table accessed with a ref-based
- method. The ref access depends on current rows of tables in found_ref.
- We want to count # of different ref accesses. We assume two ref accesses
- will be different if at least one of access parameters is different.
- Example: consider a query
-
- SELECT * FROM t1, t2, t3 WHERE t1.key=c1 AND t2.key=c2 AND t3.key=t1.field
-
- and a join order:
- t1, ref access on t1.key=c1
- t2, ref access on t2.key=c2
- t3, ref access on t3.key=t1.field
-
- For t1: n_ref_scans = 1, n_distinct_ref_scans = 1
- For t2: n_ref_scans = records_read(t1), n_distinct_ref_scans=1
- For t3: n_ref_scans = records_read(t1)*records_read(t2)
- n_distinct_ref_scans = #records_read(t1)
-
- The reason for having this function (at least the latest version of it)
- is that we need to account for buffering in join execution.
-
- An edge-case example: if we have a non-first table in join accessed via
- ref(const) or ref(param) where there is a small number of different
- values of param, then the access will likely hit the disk cache and will
- not require any disk seeks.
-
- The proper solution would be to assume an LRU disk cache of some size,
- calculate probability of cache hits, etc. For now we just count
- identical ref accesses as one.
+ @return # The number of estimated calls that cannot be cached by the
+ the one-row-cache. In other words, number of expected
+ calls to engine ha_read_read_map().
+ Between 1 and record_count or 0 if record_count == 0
- RETURN
- Expected number of row combinations
-*/
+ DESCRIPTION
+ The one-row-cache gives a great benefit when there are multiple consecutive
+ calls to ha_index_read() with the same key. In this case we can skip
+ calling the engine (and in the future also skip to check the key
+ condition), which can notably increase the performance.
+
+ Assuming most of the rows are cached, there is no notable saving to be
+ made trying to calculate the total number of distinct key values that will
+ be used. The performance of a ha_index_read_call() is about the same even
+ if we repeatedly read the same set of rows.
+
+ This code works by calculating the number of identical key sequences
+ found in the record stream.
+ The number of expected distinct calls can then be calculated as
+ records_count / sequences.
+
+ Some things to note:
+ - record_count == PRODUCT(records_out) over all tables[0...idx-1]
+ - position->prev_record_reads contains the number of identical
+ sequences found for previous EQ_REF tables.
+
+ Assume a join prefix of t1,t2,t3,t4 and t4 is an EQ_REF table.
+ We have the following combinations that we have to consider:
+
+======
+1) No JOIN_CACHE usage, tables depend only on one previous table
+
+ Row combinations are generated as:
+ - for all rows in t1
+ - for all rows in t2
+ - for all rows in t3
+ or
+ t1.1,t2.1,t3.1, t1.1,t2.1,t3.2, t1.1,t2.1,t3.3... # Only t3 row changes
+ (until no more rows in t3., ie t3.records_out times)
+ t1.1,t2.2,t3.1, t1.1,t2.2,t3.2, t1.1,t2.2,t3.3... # t2.2 read
+ (above repeated until no more rows in t2 and t3)
+ t1.2,t2.1,t3.1, t1.2,t2.1,t3.2, t1.2,t2.1,t3.3... # t1.2 read
+
+ If t4 is an EQ_REF table that is depending of one of the
+ previous tables, the number of identical keys can be calculated
+ as the multiplication of records_out of the tables in between
+ the t4 and its first dependency.
+
+ Let's consider cases where t4 depends on different previous tables:
+ WHERE t4.a=t3.a
+ no caching as t3 can change for each row
+ engine_calls: record_count
+
+ WHERE t4.a=t2.a
+ t4 is not depending on t3. The number of repeated rows are:
+ t1.1,t2.1,t3.1 to t1.1,t2.1,t3.last # t3.records_out rows
+ t1.1,t2.2,t3.1 to t1.1,t2.2,t3.last # t3.records_out rows
+ ...
+ t1.2,t2.1,t3.1 to t1.2,t2.1,t3.last
+ ...
+ t1.last,t2.last.t3.1 to t1.last,t2.last.1,t3.last
+
+ For each combination of t1 and t2 there are t3.records_out repeated
+ rows with equal key value
+ engine_calls: record_count / t3.records_out calls =
+ t1.records_out * t2.records_out
+
+ WHERE t4.a=t1.a
+ The repeated sequences:
+ t1.1,t2.1,t3.1 to t1.1,t2.last,t3.last
+ t1.2,t2.1,t3.1 to t2.1,t2.last,t3.last
+ repeated rows: t2.records_out * t3.records_out
+ engine_calls: record_count/repeated_rows = t1.records_out
+
+ If t4 depends on a table that uses EQ_REF access, we can multipy that
+ table's repeated_rows with current table's repeated_rows to take that
+ into account.
+
+=====
+2) Keys depending on multiple tables
+
+ In this case we have to stop searching after we find the first
+ table we depend upon.
+ We have to also disregard the number of repeated rows for the
+ found table. This can be seen from (assuming tables t1...t6):
+
+ WHERE t6.a=t4.a and t6.a=t3.a and t4.a= t2.a
+ - Here t4 is not depending on t3 (and thus there is a
+ t3.records_out identical keys for t4). However t6 key will
+ change for each t3 row and t6 cannot thus use
+ t3.identical_keys
+
+ WHERE t4.key_part1=t1.a and t4.key_part2= t3.a
+ As t4.key_part2 will change for every row, one-row-cache will not
+ be hit
+
+ WHERE t4.key_part1=t1.a and t4.key_part2= t2.a
+ t4.key will change when t1 or t2 changes
+ This is the same case as above for WHERE t4.a = t2.a
+ engine_calls: record_count / t3.records_out calls
+
+=====
+3) JOIN_CACHE is used
+
+ If any table is using join_cache as this changes the row
+ combinations seen by following tables. Using join cache for a
+ table T# will have T# rows repeated for the next table as many
+ times there are combinations in the cache. The the cache will
+ re-read and the operations repeats 'refill-1' number of times.
+
+ Table rows from table just before T# will come in 'random order',
+ from the point of the next tables.
+
+ Assuming t3 is using a cache, t4 will see the rows coming in the
+ following order:
+ t1.1,t2.1,t3.1, t1.1,t2.2,t3.1, t1.1,t2.3,t3.1...
+ (t3.1 repeated 't2.records_out' times)
+ t1.2,t2.1,t3.1, t1.2,t2.2,t3.1, t1.2,t2.3,t3.1...
+ (Next row in t1 used)
+ t1.1,t2.1,t3.2, t1.1,t2.2,t3.2, t1.1,t2.3,t3.2...
+ (Restarting all t1 & t2 combinations for t3.2)
+
+ WHERE t4.a=t3.a
+ - There is a repeated sequence of t3.records_out rows for
+ each t1,t2 row combination.
+ engine_calls= record_count / t3.records_out
+
+ WHERE t4.a=t2.a
+ t2 changes for each row
+ engine_calls= record_count
+
+ WHERE t4.a=t1.a
+ repeated rows= t2.records_out
+ engine_calls= record_count / t2.records_out
+
+ A refill of the join cache will restart the row sequences
+ (we have 'refill' more sequences), so we will have to do 'refill' times
+ more engine read calls.
+
+=====
+ Expectations of the accuracy of the return value
+
+ - The value is always between 1 and record_count
+ - The returned value should almost always larger than the true number of
+ engine calls.
+
+ - Assuming that every row has different values for all other columns for
+ echo unique key value and record_count is accurate:
+ - If a table is depending on multiple tables, the return value may be
+ notable larger than real value.
+ - If there is no join cache the value should be exact.
+ - If there is a join cache, but no refills calculated or done then
+ the value should be exact.
+ - If there was more join_cache refills than was calculated, the value
+ may be slightly to low.
+ - If the number of refills is equal or less than was calculated the value
+ should be larger than the expected engine read calls. The more refills,
+ the less exact the number will be.
+*/
+
+static double
+prev_record_reads(const POSITION *position, uint idx, table_map found_ref,
+ double record_count, double *identical_keys)
+{
+ double found= 1.0;
+ const POSITION *pos_end= position - 1;
+ const POSITION *cur_pos= position + idx;
+
+ /* Safety against const tables */
+ if (unlikely(!found_ref))
+ goto end;
-double
-prev_record_reads(const POSITION *positions, uint idx, table_map found_ref)
-{
- double found=1.0;
- const POSITION *pos_end= positions - 1;
- for (const POSITION *pos= positions + idx - 1; pos != pos_end; pos--)
+ for (const POSITION *pos= cur_pos-1; pos != pos_end; pos--)
{
- if (pos->table->table->map & found_ref)
+ if (found_ref & pos->table->table->map)
{
- found_ref|= pos->ref_depend_map;
- /*
- For the case of "t1 LEFT JOIN t2 ON ..." where t2 is a const table
- with no matching row we will get position[t2].records_read==0.
- Actually the size of output is one null-complemented row, therefore
- we will use value of 1 whenever we get records_read==0.
-
- Note
- - the above case can't occur if inner part of outer join has more
- than one table: table with no matches will not be marked as const.
-
- - Ideally we should add 1 to records_read for every possible null-
- complemented row. We're not doing it because: 1. it will require
- non-trivial code and add overhead. 2. The value of records_read
- is an inprecise estimate and adding 1 (or, in the worst case,
- #max_nested_outer_joins=64-1) will not make it any more precise.
- */
- if (pos->records_read)
+ /* Found a table we depend on */
+ found_ref= ~pos->table->table->map;
+ if (!found_ref)
{
- found= COST_MULT(found, pos->records_read);
- found*= pos->cond_selectivity;
+ /*
+ No more dependencies. We can use the cached values to improve things
+ a bit
+ */
+ if (pos->type == JT_EQ_REF)
+ found= COST_MULT(found, pos->identical_keys);
+ else if (pos->use_join_buffer)
+ found= COST_MULT(found, pos->loops / pos->refills);
}
- }
+ break;
+ }
+ if (unlikely(pos->use_join_buffer))
+ {
+ /* Each refill can change the cached key */
+ found/= pos->refills;
+ }
+ else
+ {
+ /*
+ We are not depending on the current table.
+ There are 'records_out' rows with identical rows
+ value for our depending tables.
+ */
+ found= COST_MULT(found, pos->records_out);
+ }
}
- return found;
+
+ /*
+ In most case found should <= record_count.
+
+ However if there was a reduction of rows (records_out < 1) before
+ the referencing table then found could be >= record_count.
+ To get resonable numbers, we limit prev_record_read to be between
+ 1.0 and record_count as we have to always do at least one read
+ anyway.
+ */
+
+end:
+ if (unlikely(found > record_count))
+ found= record_count;
+ if (unlikely(found <= 1.0))
+ found= 1.0;
+ *identical_keys= found;
+ return record_count / found;
}
@@ -11785,16 +12748,20 @@ bool JOIN::get_best_combination()
j->table= NULL; //temporary way to tell SJM tables from others.
j->ref.key = -1;
j->on_expr_ref= (Item**) &null_ptr;
- j->keys= key_map(1); /* The unique index is always in 'possible keys' in EXPLAIN */
+ /* The unique index is always in 'possible keys' in EXPLAIN */
+ j->keys= key_map(1);
/*
2. Proceed with processing SJM nest's join tabs, putting them into the
sub-order
*/
SJ_MATERIALIZATION_INFO *sjm= cur_pos->table->emb_sj_nest->sj_mat_info;
- j->records_read= (sjm->is_sj_scan? sjm->rows : 1);
+ j->records_read= (sjm->is_sj_scan? sjm->rows : 1.0);
+ j->records_init= j->records_out= j->records_read;
j->records= (ha_rows) j->records_read;
j->cond_selectivity= 1.0;
+ j->join_read_time= 0.0; /* Not saved currently */
+ j->join_loops= 0.0;
JOIN_TAB *jt;
JOIN_TAB_RANGE *jt_range;
if (!(jt= (JOIN_TAB*) thd->alloc(sizeof(JOIN_TAB)*sjm->tables)) ||
@@ -11810,7 +12777,7 @@ bool JOIN::get_best_combination()
j= jt;
}
- *j= *best_positions[tablenr].table;
+ *j= *cur_pos->table;
j->bush_root_tab= sjm_nest_root;
@@ -11818,43 +12785,55 @@ bool JOIN::get_best_combination()
form->reginfo.join_tab=j;
DBUG_PRINT("info",("type: %d", j->type));
if (j->type == JT_CONST)
- goto loop_end; // Handled in make_join_stat..
+ goto loop_end; // Handled in make_join_stat..
- j->loosescan_match_tab= NULL; //non-nulls will be set later
+ j->loosescan_match_tab= NULL; //non-nulls will be set later
j->inside_loosescan_range= FALSE;
j->ref.key = -1;
j->ref.key_parts=0;
if (j->type == JT_SYSTEM)
goto loop_end;
- if ( !(keyuse= best_positions[tablenr].key))
+
+ if (!(keyuse= cur_pos->key))
{
- j->type=JT_ALL;
- if (best_positions[tablenr].use_join_buffer &&
+ if (cur_pos->type == JT_NEXT) // Forced index
+ {
+ j->type= JT_NEXT;
+ j->index= cur_pos->forced_index;
+ }
+ else
+ j->type= JT_ALL;
+ if (cur_pos->use_join_buffer &&
tablenr != const_tables)
full_join= 1;
}
-
- /*if (best_positions[tablenr].sj_strategy == SJ_OPT_LOOSE_SCAN)
- {
- DBUG_ASSERT(!keyuse || keyuse->key ==
- best_positions[tablenr].loosescan_picker.loosescan_key);
- j->index= best_positions[tablenr].loosescan_picker.loosescan_key;
- }*/
-
if ((j->type == JT_REF || j->type == JT_EQ_REF) &&
is_hash_join_key_no(j->ref.key))
hash_join= TRUE;
- j->range_rowid_filter_info= best_positions[tablenr].range_rowid_filter_info;
+ j->range_rowid_filter_info=
+ cur_pos->range_rowid_filter_info;
- loop_end:
- /*
+ /*
Save records_read in JOIN_TAB so that select_describe()/etc don't have
to access join->best_positions[].
*/
- j->records_read= best_positions[tablenr].records_read;
- j->cond_selectivity= best_positions[tablenr].cond_selectivity;
+ j->records_init= cur_pos->records_init;
+ j->records_read= cur_pos->records_read;
+ j->records_out= cur_pos->records_out;
+ j->join_read_time= cur_pos->read_time;
+ j->join_loops= cur_pos->loops;
+
+ loop_end:
+ j->cond_selectivity= cur_pos->cond_selectivity;
+ DBUG_ASSERT(j->cond_selectivity <= 1.0);
+ crash_if_first_double_is_bigger(j->records_out,
+ j->records_init *
+ (j->range_rowid_filter_info ?
+ j->range_rowid_filter_info->selectivity :
+ 1.0));
+
map2table[j->table->tablenr]= j;
/* If we've reached the end of sjm nest, switch back to main sequence */
@@ -12123,7 +13102,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j,
if (!keyparts && allow_full_scan)
{
/* It's a LooseIndexScan strategy scanning whole index */
- j->type= JT_ALL;
+ j->type= JT_ALL; // TODO: Check if this should be JT_NEXT
j->index= key;
DBUG_RETURN(FALSE);
}
@@ -12252,16 +13231,14 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j,
j->table->const_table= 1;
else if (!((keyparts == keyinfo->user_defined_key_parts &&
(
- (key_flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME ||
- /* Unique key and all keyparts are NULL rejecting */
- ((key_flags & HA_NOSAME) && keyparts == not_null_keyparts)
- )) ||
- /* true only for extended keys */
- (keyparts > keyinfo->user_defined_key_parts &&
- MY_TEST(key_flags & HA_EXT_NOSAME) &&
- keyparts == keyinfo->ext_key_parts)
- ) ||
- null_ref_key)
+ (key_flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME ||
+ /* Unique key and all keyparts are NULL rejecting */
+ ((key_flags & HA_NOSAME) && keyparts == not_null_keyparts)
+ )) ||
+ /* true only for extended keys */
+ (MY_TEST(key_flags & HA_EXT_NOSAME) &&
+ keyparts == keyinfo->ext_key_parts) ) ||
+ null_ref_key)
{
/* Must read with repeat */
j->type= null_ref_key ? JT_REF_OR_NULL : JT_REF;
@@ -12618,7 +13595,10 @@ make_outerjoin_info(JOIN *join)
{
if (embedding->is_active_sjm())
{
- /* We're trying to walk out of an SJ-Materialization nest. Don't do this. */
+ /*
+ We're trying to walk out of an SJ-Materialization nest.
+ Don't do this.
+ */
break;
}
/* Ignore sj-nests: */
@@ -12727,6 +13707,10 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
DBUG_ENTER("make_join_select");
if (select)
{
+ Json_writer_object trace_wrapper(thd);
+ Json_writer_object trace_conditions(thd, "attaching_conditions_to_tables");
+ Json_writer_array trace_attached_comp(thd,
+ "attached_conditions_computation");
add_not_null_conds(join);
table_map used_tables;
/*
@@ -12769,8 +13753,10 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
trace_const_cond.add("condition_on_constant_tables", const_cond);
if (const_cond->is_expensive())
{
- trace_const_cond.add("evaluated", "false")
- .add("cause", "expensive cond");
+ if (unlikely(trace_const_cond.trace_started()))
+ trace_const_cond.
+ add("evalualted", "false").
+ add("cause", "expensive cond");
}
else
{
@@ -12782,8 +13768,10 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
if (!const_cond_result)
{
DBUG_PRINT("info",("Found impossible WHERE condition"));
- trace_const_cond.add("evaluated", "true")
- .add("found", "impossible where");
+ if (unlikely(trace_const_cond.trace_started()))
+ trace_const_cond.
+ add("evalualted", "true").
+ add("found", "impossible where");
join->exec_const_cond= NULL;
DBUG_RETURN(1);
}
@@ -12802,6 +13790,9 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
{
add_cond_and_fix(thd, &outer_ref_cond, join->outer_ref_cond);
join->outer_ref_cond= outer_ref_cond;
+
+ Json_writer_object trace(thd);
+ trace.add("outer_ref_cond", outer_ref_cond);
}
else if (thd->is_error())
DBUG_RETURN(1);
@@ -12819,6 +13810,9 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
add_cond_and_fix(thd, &pseudo_bits_cond,
join->pseudo_bits_cond);
join->pseudo_bits_cond= pseudo_bits_cond;
+
+ Json_writer_object trace(thd);
+ trace.add("pseudo_bits_cond", pseudo_bits_cond);
}
else if (thd->is_error())
DBUG_RETURN(1);
@@ -12829,10 +13823,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
/*
Step #2: Extract WHERE/ON parts
*/
- Json_writer_object trace_wrapper(thd);
- Json_writer_object trace_conditions(thd, "attaching_conditions_to_tables");
- Json_writer_array trace_attached_comp(thd,
- "attached_conditions_computation");
+
uint i;
for (i= join->top_join_tab_count - 1; i >= join->const_tables; i--)
{
@@ -12857,15 +13848,13 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
SELECT * FROM t1 LEFT OUTER JOIN (t2 JOIN t3) ON X
*/
JOIN_TAB *first_inner_tab= tab->first_inner;
+ COND *tmp;
if (!tab->bush_children)
current_map= tab->table->map;
else
current_map= tab->bush_children->start->emb_sj_nest->sj_inner_tables;
- bool use_quick_range=0;
- COND *tmp;
-
/*
Tables that are within SJ-Materialization nests cannot have their
conditions referring to preceding non-const tables.
@@ -12883,23 +13872,27 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
used_tables|=current_map;
- if (tab->type == JT_REF && tab->quick &&
+ if ((tab->type == JT_REF || tab->type == JT_RANGE) && tab->quick &&
(((uint) tab->ref.key == tab->quick->index &&
tab->ref.key_length < tab->quick->max_used_key_length) ||
(!is_hash_join_key_no(tab->ref.key) &&
tab->table->intersect_keys.is_set(tab->ref.key))))
{
/* Range uses longer key; Use this instead of ref on key */
- Json_writer_object ref_to_range(thd);
- ref_to_range.add("ref_to_range", true);
- ref_to_range.add("cause", "range uses longer key");
- tab->type=JT_ALL;
- use_quick_range=1;
+ if (unlikely(thd->trace_started()))
+ {
+ Json_writer_object ref_to_range(thd);
+ ref_to_range.
+ add("ref_to_range", true).
+ add("cause", "range uses longer key");
+ }
+ tab->type= JT_RANGE;
tab->use_quick=1;
tab->ref.key= -1;
tab->ref.key_parts=0; // Don't use ref key.
join->best_positions[i].records_read= rows2double(tab->quick->records);
- /*
+
+ /*
We will use join cache here : prevent sorting of the first
table only and sort at the end.
*/
@@ -12963,7 +13956,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
if (cond && !tmp && tab->quick)
{ // Outer join
- if (tab->type != JT_ALL && !is_hj)
+ if ((tab->type != JT_ALL && tab->type != JT_RANGE) && !is_hj)
{
/*
Don't use the quick method
@@ -12989,7 +13982,8 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
tab->type == JT_EQ_REF || first_inner_tab)
{
DBUG_EXECUTE("where",print_where(tmp,
- tab->table? tab->table->alias.c_ptr() :"sjm-nest",
+ tab->table ?
+ tab->table->alias.c_ptr() :"sjm-nest",
QT_ORDINARY););
SQL_SELECT *sel= tab->select= ((SQL_SELECT*)
thd->memdup((uchar*) select,
@@ -13068,10 +14062,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
sel->quick_keys.clear_all();
sel->needed_reg.clear_all();
if (is_hj && tab->rowid_filter)
- {
- delete tab->rowid_filter;
- tab->rowid_filter= 0;
- }
+ tab->clear_range_rowid_filter();
}
else
{
@@ -13079,20 +14070,22 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
}
tab->quick=0;
}
- uint ref_key= sel->head? (uint) sel->head->reginfo.join_tab->ref.key+1 : 0;
+ uint ref_key= (sel->head ?
+ (uint) sel->head->reginfo.join_tab->ref.key+1 :
+ 0);
if (i == join->const_tables && ref_key)
{
if (!tab->const_keys.is_clear_all() &&
tab->table->reginfo.impossible_range)
DBUG_RETURN(1);
}
- else if (tab->type == JT_ALL && ! use_quick_range)
+ else if ((tab->type == JT_ALL || tab->type == JT_NEXT))
{
if (!tab->const_keys.is_clear_all() &&
tab->table->reginfo.impossible_range)
DBUG_RETURN(1); // Impossible range
/*
- We plan to scan all rows.
+ We plan to scan all rows either with table or index scan
Check again if we should use an index.
There are two cases:
@@ -13112,7 +14105,8 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
if (!tab->table->is_filled_at_execution() &&
!tab->loosescan_match_tab && // (1)
- ((cond && (!tab->keys.is_subset(tab->const_keys) && i > 0)) ||
+ ((cond && (!tab->keys.is_subset(tab->const_keys) &&
+ i > join->const_tables)) ||
(!tab->const_keys.is_clear_all() && i == join->const_tables &&
join->unit->lim.get_select_limit() <
join->best_positions[i].records_read &&
@@ -13172,7 +14166,24 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
/* Fix for EXPLAIN */
if (sel->quick)
- join->best_positions[i].records_read= (double)sel->quick->records;
+ {
+ join->best_positions[i].records_read=
+ (double) sel->quick->records;
+ set_if_smaller(join->best_positions[i].records_out,
+ rows2double(sel->head->opt_range_condition_rows));
+ }
+ else
+ {
+ /*
+ sel->head->opt_range_condition_rows may have been
+ updated to a smaller number than before by a call to
+ test_quick_select. This can happen even if the range
+ optimizer decided to not use the range (sel->quick was
+ not set).
+ */
+ set_if_smaller(join->best_positions[i].records_out,
+ rows2double(sel->head->opt_range_condition_rows));
+ }
}
else
{
@@ -13182,6 +14193,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
if (!sel->quick_keys.is_subset(tab->checked_keys) ||
!sel->needed_reg.is_subset(tab->checked_keys))
{
+ handler *file= tab->table->file;
/*
"Range checked for each record" is a "last resort" access method
that should only be used when the other option is a cross-product
@@ -13197,9 +14209,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
(sel->quick_keys.is_clear_all() ||
(sel->quick &&
sel->quick->read_time >
- tab->table->file->scan_time() +
- tab->table->file->stats.records/TIME_FOR_COMPARE
- ))) ?
+ file->cost(file->ha_scan_and_compare_time(tab->table->file-> stats.records))))) ?
2 : 1;
sel->read_tables= used_tables & ~current_map;
sel->quick_keys.clear_all();
@@ -13429,7 +14439,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
Item *const cond = tab->select_cond;
Json_writer_object trace_one_table(thd);
trace_one_table.add_table_name(tab);
- trace_one_table.add("attached", cond);
+ trace_one_table.add("attached_condition", cond);
}
}
}
@@ -13521,7 +14531,7 @@ bool generate_derived_keys_for_table(KEYUSE *keyuse, uint count, uint keys)
(uchar *) &first_keyuse,
FALSE))
return TRUE;
- table->reginfo.join_tab->keys.set_bit(table->s->keys);
+ table->reginfo.join_tab->keys.set_bit(table->s->keys - 1);
tab= table->reginfo.join_tab;
for (uint i=0; i < parts; i++)
tab->key_dependent|= save_first_keyuse[i].used_tables;
@@ -13548,36 +14558,45 @@ bool generate_derived_keys_for_table(KEYUSE *keyuse, uint count, uint keys)
static
bool generate_derived_keys(DYNAMIC_ARRAY *keyuse_array)
{
- KEYUSE *keyuse= dynamic_element(keyuse_array, 0, KEYUSE*);
+ KEYUSE *keyuse, *end_keyuse;
size_t elements= keyuse_array->elements;
TABLE *prev_table= 0;
- for (size_t i= 0; i < elements; i++, keyuse++)
+
+ DBUG_ASSERT(elements > 0);
+ /* The last element is an end marker */
+ DBUG_ASSERT(dynamic_element(keyuse_array, elements-1,
+ KEYUSE*)[0].table == 0);
+
+ for (keyuse= dynamic_element(keyuse_array, 0, KEYUSE*),
+ end_keyuse= keyuse + elements - 1;
+ keyuse < end_keyuse;
+ keyuse++)
{
- if (!keyuse->table)
- break;
+ DBUG_ASSERT(keyuse->table);
+
KEYUSE *first_table_keyuse= NULL;
table_map last_used_tables= 0;
uint count= 0;
uint keys= 0;
TABLE_LIST *derived= NULL;
+
if (keyuse->table != prev_table)
derived= keyuse->table->pos_in_table_list;
- while (derived && derived->is_materialized_derived())
+
+ if (!derived->is_materialized_derived())
+ continue;
+
+ for (;;)
{
if (keyuse->table != prev_table)
{
prev_table= keyuse->table;
while (keyuse->table == prev_table && keyuse->key != MAX_KEY)
- {
keyuse++;
- i++;
- }
if (keyuse->table != prev_table)
{
keyuse--;
- i--;
- derived= NULL;
- continue;
+ break;
}
first_table_keyuse= keyuse;
last_used_tables= keyuse->used_tables;
@@ -13591,14 +14610,12 @@ bool generate_derived_keys(DYNAMIC_ARRAY *keyuse_array)
}
count++;
keyuse++;
- i++;
if (keyuse->table != prev_table)
{
if (generate_derived_keys_for_table(first_table_keyuse, count, ++keys))
return TRUE;
keyuse--;
- i--;
- derived= NULL;
+ break;
}
}
}
@@ -13626,20 +14643,42 @@ void JOIN::drop_unused_derived_keys()
{
TABLE *tmp_tbl= tab->table;
- if (!tmp_tbl)
+ /*
+ Skip placeholders and already created tables (we cannot change keys
+ for created tables)
+ */
+ if (!tmp_tbl || tmp_tbl->is_created())
continue;
if (!tmp_tbl->pos_in_table_list->is_materialized_derived())
continue;
- if (tmp_tbl->max_keys > 1 && !tab->is_ref_for_hash_join())
- tmp_tbl->use_index(tab->ref.key);
- if (tmp_tbl->s->keys)
+
+ /*
+ tmp_tbl->max_keys is the number of keys pre-allocated in
+ TABLE::alloc_keys(). Can be 0 if alloc_keys() was not called.
+
+ tmp_tbl->s->keys is number of keys defined for the table.
+ Normally 0 or 1 (= unique key)
+ */
+
+ if (likely(tmp_tbl->s->keys) && tab->ref.key >= 0 &&
+ !tab->is_ref_for_hash_join())
{
- if (tab->ref.key >= 0 && tab->ref.key < MAX_KEY)
- tab->ref.key= 0;
- else
- tmp_tbl->s->keys= 0;
+ if (tmp_tbl->s->keys > 1)
+ {
+ /* remove all keys except the chosen one and unique keys */
+ tmp_tbl->use_index(tab->ref.key, &tab->keys);
+ }
+ /*
+ We dropped all keys except the chosen one and unique keys.
+ The choosen one is stored as the first key (number 0).
+ */
+ tab->ref.key= 0;
+ }
+ else if (tmp_tbl->s->keys)
+ {
+ /* The query cannot use keys, remove all non unique keys */
+ tmp_tbl->use_index(-1, &tab->keys);
}
- tab->keys= (key_map) (tmp_tbl->s->keys ? 1 : 0);
}
}
@@ -13749,6 +14788,7 @@ void set_join_cache_denial(JOIN_TAB *join_tab)
don't do join buffering for the first table in sjm nest.
*/
join_tab[-1].next_select= sub_select;
+ join_tab[-1].cached_pfs_batch_update= join_tab[-1].pfs_batch_update();
if (join_tab->type == JT_REF && join_tab->is_ref_for_hash_join())
{
join_tab->type= JT_ALL;
@@ -14070,7 +15110,6 @@ uint check_join_cache_usage(JOIN_TAB *tab,
uint table_index,
JOIN_TAB *prev_tab)
{
- Cost_estimate cost;
uint flags= 0;
ha_rows rows= 0;
uint bufsz= 4096;
@@ -14208,7 +15247,9 @@ uint check_join_cache_usage(JOIN_TAB *tab,
prev_cache= prev_tab->cache;
switch (tab->type) {
+ case JT_NEXT:
case JT_ALL:
+ case JT_RANGE:
if (cache_level == 1)
prev_cache= 0;
if ((tab->cache= new (root) JOIN_CACHE_BNL(join, tab, prev_cache)))
@@ -14231,6 +15272,8 @@ uint check_join_cache_usage(JOIN_TAB *tab,
if (!tab->is_ref_for_hash_join() && !no_bka_cache)
{
+ Cost_estimate cost;
+ cost.reset();
flags= HA_MRR_NO_NULL_ENDPOINTS | HA_MRR_SINGLE_POINT;
if (tab->table->covering_keys.is_set(tab->ref.key))
flags|= HA_MRR_INDEX_ONLY;
@@ -14289,7 +15332,7 @@ uint check_join_cache_usage(JOIN_TAB *tab,
}
no_join_cache:
- if (tab->type != JT_ALL && tab->is_ref_for_hash_join())
+ if (tab->type != JT_ALL && tab->type != JT_RANGE && tab->is_ref_for_hash_join())
{
tab->type= JT_ALL;
tab->ref.key_parts= 0;
@@ -14369,7 +15412,9 @@ restart:
case JT_EQ_REF:
case JT_REF:
case JT_REF_OR_NULL:
+ case JT_NEXT:
case JT_ALL:
+ case JT_RANGE:
tab->used_join_cache_level= check_join_cache_usage(tab, options,
no_jbuf_after,
idx,
@@ -14505,6 +15550,9 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
uint i;
DBUG_ENTER("make_join_readinfo");
+ Json_writer_object trace_wrapper(join->thd);
+ Json_writer_array trace_arr(join->thd, "make_join_readinfo");
+
bool statistics= MY_TEST(!(join->select_options & SELECT_DESCRIBE));
bool sorted= 1;
@@ -14534,18 +15582,21 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
if (tab->bush_root_tab && tab->bush_root_tab->bush_children->start == tab)
prev_tab= NULL;
- DBUG_ASSERT(tab->bush_children || tab->table == join->best_positions[i].table->table);
+ DBUG_ASSERT(tab->bush_children ||
+ tab->table == join->best_positions[i].table->table);
tab->partial_join_cardinality= join->best_positions[i].records_read *
- (prev_tab? prev_tab->partial_join_cardinality : 1);
+ (prev_tab ?
+ prev_tab->partial_join_cardinality : 1);
if (!tab->bush_children)
i++;
}
check_join_cache_usage_for_tables(join, options, no_jbuf_after);
-
+
JOIN_TAB *first_tab;
- for (tab= first_tab= first_linear_tab(join, WITH_BUSH_ROOTS, WITHOUT_CONST_TABLES);
+ for (tab= first_tab= first_linear_tab(join,
+ WITH_BUSH_ROOTS, WITHOUT_CONST_TABLES);
tab;
tab= next_linear_tab(join, tab, WITH_BUSH_ROOTS))
{
@@ -14571,10 +15622,7 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
*/
if (!(tab->bush_root_tab &&
tab->bush_root_tab->bush_children->end == tab + 1))
- {
- tab->next_select=sub_select; /* normal select */
- }
-
+ tab->next_select= sub_select; /* normal select */
if (tab->loosescan_match_tab)
{
@@ -14623,13 +15671,44 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
(!jcl || jcl > 4) && !tab->ref.is_access_triggered())
push_index_cond(tab, tab->ref.key);
break;
+ case JT_NEXT: // Index scan
+ DBUG_ASSERT(!tab->quick);
+ if (tab->select)
+ {
+ /*
+ select->quick may be set if there was a possible range and
+ it had a higher cost than a table scan.
+ */
+ delete tab->select->quick;
+ tab->select->quick=0;
+ }
+ if (tab->use_quick == 2)
+ {
+ join->thd->set_status_no_good_index_used();
+ tab->read_first_record= join_init_quick_read_record;
+ if (statistics)
+ join->thd->inc_status_select_range_check();
+ }
+ else
+ {
+ tab->read_first_record= join_read_first;
+ if (statistics)
+ {
+ join->thd->inc_status_select_scan();
+ join->thd->query_plan_flags|= QPLAN_FULL_SCAN;
+ }
+ }
+ break;
case JT_ALL:
+ case JT_RANGE:
case JT_HASH:
+ {
+ bool have_quick_select= tab->select && tab->select->quick;
/*
If previous table use cache
If the incoming data set is already sorted don't use cache.
Also don't use cache if this is the first table in semi-join
- materialization nest.
+ materialization nest.
*/
/* These init changes read_record */
if (tab->use_quick == 2)
@@ -14662,7 +15741,7 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
}
else
{
- if (tab->select && tab->select->quick)
+ if (have_quick_select)
{
if (statistics)
join->thd->inc_status_select_full_range_join();
@@ -14679,41 +15758,27 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
}
if (!table->no_keyread)
{
- if (!(tab->select && tab->select->quick &&
- tab->select->quick->index != MAX_KEY && //not index_merge
- table->covering_keys.is_set(tab->select->quick->index)) &&
- (!table->covering_keys.is_clear_all() &&
- !(tab->select && tab->select->quick)))
+ if (!(have_quick_select &&
+ tab->select->quick->index != MAX_KEY && //not index_merge
+ table->covering_keys.is_set(tab->select->quick->index)) &&
+ (!table->covering_keys.is_clear_all() && ! have_quick_select))
{ // Only read index tree
if (tab->loosescan_match_tab)
tab->index= tab->loosescan_key;
else
- {
-#ifdef BAD_OPTIMIZATION
- /*
- It has turned out that the below change, while speeding things
- up for disk-bound loads, slows them down for cases when the data
- is in disk cache (see BUG#35850):
- See bug #26447: "Using the clustered index for a table scan
- is always faster than using a secondary index".
- */
- if (table->file->pk_is_clustering_key(table->s->primary_key))
- tab->index= table->s->primary_key;
- else
-#endif
- tab->index=find_shortest_key(table, & table->covering_keys);
- }
+ tab->index= tab->cached_covering_key;
tab->read_first_record= join_read_first;
/* Read with index_first / index_next */
- tab->type= tab->type == JT_ALL ? JT_NEXT : JT_HASH_NEXT;
+ tab->type= tab->type == JT_ALL ? JT_NEXT : JT_HASH_NEXT;
}
}
- if (tab->select && tab->select->quick &&
+ if (have_quick_select &&
tab->select->quick->index != MAX_KEY &&
!tab->table->covering_keys.is_set(tab->select->quick->index))
push_index_cond(tab, tab->select->quick->index);
}
break;
+ }
case JT_FT:
break;
/* purecov: begin deadcode */
@@ -14725,6 +15790,7 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
abort();
/* purecov: end */
}
+ tab->cached_pfs_batch_update= tab->pfs_batch_update();
DBUG_EXECUTE("where",
char buff[256];
@@ -14815,7 +15881,7 @@ bool error_if_full_join(JOIN *join)
for (JOIN_TAB *tab=first_top_level_tab(join, WITH_CONST_TABLES); tab;
tab= next_top_level_tab(join, tab))
{
- if (tab->type == JT_ALL && (!tab->select || !tab->select->quick))
+ if ((tab->type == JT_ALL || tab->type == JT_NEXT))
{
my_message(ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE,
ER_THD(join->thd,
@@ -14828,47 +15894,64 @@ bool error_if_full_join(JOIN *join)
/**
- Build rowid filter.
+ build_range_rowid_filter()
+
+ Build range rowid filter. This function should only be called if
+ need_to_build_rowid_filter is true
@retval
0 ok
@retval
- 1 Error, transaction should be rolled back
+ 1 Error, transaction should be rolled back
*/
-bool JOIN_TAB::build_range_rowid_filter_if_needed()
+bool JOIN_TAB::build_range_rowid_filter()
{
- bool result= false;
- if (rowid_filter && !is_rowid_filter_built)
- {
- /**
- The same handler object (table->file) is used to build a filter
- and to perfom a primary table access (by the main query).
- To estimate the time for filter building tracker should be changed
- and after building of the filter has been finished it should be
- switched back to the previos tracker.
- */
- Exec_time_tracker *table_tracker= table->file->get_time_tracker();
- Rowid_filter_tracker *rowid_tracker= rowid_filter->get_tracker();
- table->file->set_time_tracker(rowid_tracker->get_time_tracker());
- rowid_tracker->start_tracking(join->thd);
- Rowid_filter::build_return_code build_rc= rowid_filter->build();
- if (build_rc == Rowid_filter::SUCCESS)
- is_rowid_filter_built= true;
- else
- {
- delete rowid_filter;
- rowid_filter= 0;
- }
- rowid_tracker->stop_tracking(join->thd);
- table->file->set_time_tracker(table_tracker);
- result= (build_rc == Rowid_filter::FATAL_ERROR);
+ DBUG_ASSERT(need_to_build_rowid_filter && rowid_filter);
+
+ /**
+ The same handler object (table->file) is used to build a filter
+ and to perfom a primary table access (by the main query).
+
+ To estimate the time for filter building tracker should be changed
+ and after building of the filter has been finished it should be
+ switched back to the previos tracker.
+ */
+
+ Exec_time_tracker *table_tracker= table->file->get_time_tracker();
+ Rowid_filter_tracker *rowid_tracker= rowid_filter->get_tracker();
+ table->file->set_time_tracker(rowid_tracker->get_time_tracker());
+ rowid_tracker->start_tracking(join->thd);
+ Rowid_filter::build_return_code build_rc= rowid_filter->build();
+ if (build_rc != Rowid_filter::SUCCESS)
+ {
+ /* Failed building rowid filter */
+ clear_range_rowid_filter();
}
- return result;
+ need_to_build_rowid_filter= false;
+ rowid_tracker->stop_tracking(join->thd);
+ table->file->set_time_tracker(table_tracker);
+ return (build_rc == Rowid_filter::FATAL_ERROR);
}
+
+/*
+ Clear used rowid filter
+
+ Note that rowid_filter is allocated on mem_root and not really freed!
+ Only the rowid data is freed.
+*/
+
+void JOIN_TAB::clear_range_rowid_filter()
+{
+ delete rowid_filter;
+ rowid_filter= 0;
+ need_to_build_rowid_filter= false;
+ range_rowid_filter_info= 0;
+}
+
/**
cleanup JOIN_TAB.
@@ -14889,10 +15972,7 @@ void JOIN_TAB::cleanup()
delete quick;
quick= 0;
if (rowid_filter)
- {
- delete rowid_filter;
- rowid_filter= 0;
- }
+ clear_range_rowid_filter();
if (cache)
{
cache->free();
@@ -14937,7 +16017,7 @@ void JOIN_TAB::cleanup()
end_read_record(&read_record);
tmp->jtbm_subselect->cleanup();
/*
- The above call freed the materializedd temptable. Set it to NULL so
+ The above call freed the materialized temptable. Set it to NULL so
that we don't attempt to touch it if JOIN_TAB::cleanup() is invoked
multiple times (it may be)
*/
@@ -14946,6 +16026,11 @@ void JOIN_TAB::cleanup()
table= NULL;
DBUG_VOID_RETURN;
}
+ /*if (table->pos_in_table_list && table->pos_in_table_list->derived)
+ {
+ delete table->pos_in_table_list->derived->derived->dt_handler;
+ }*/
+
/*
We need to reset this for next select
(Tested in part_of_refkey)
@@ -14960,56 +16045,111 @@ void JOIN_TAB::cleanup()
/**
Estimate the time to get rows of the joined table
+
+ Updates found_records, records, cached_covering_key, read_time and
+ cache_scan_and_compare_time
*/
-double JOIN_TAB::scan_time()
+void JOIN_TAB::estimate_scan_time()
{
- double res;
+ THD *thd= join->thd;
+ handler *file= table->file;
+ double row_copy_cost, copy_cost;
+ ALL_READ_COST * const cost= &cached_scan_and_compare_cost;
+ cost->reset();
+
+ cached_covering_key= MAX_KEY;
if (table->is_created())
{
if (table->is_filled_at_execution())
{
get_delayed_table_estimates(table, &records, &read_time,
- &startup_cost);
- found_records= records;
+ &startup_cost);
table->opt_range_condition_rows= records;
+ table->used_stat_records= records;
+ cost->row_cost.cpu= read_time;
+ row_copy_cost= file->ROW_COPY_COST;
}
else
{
- found_records= records= table->stat_records();
- read_time= table->file->scan_time();
+ records= table->stat_records();
/*
table->opt_range_condition_rows has already been set to
table->file->stats.records
*/
+ DBUG_ASSERT(table->opt_range_condition_rows == records);
+
+ if (!table->covering_keys.is_clear_all() && ! table->no_keyread)
+ {
+ cached_covering_key= find_shortest_key(table, &table->covering_keys);
+ cost->index_cost= file->ha_key_scan_time(cached_covering_key, records);
+ read_time= file->cost(cost->index_cost);
+ row_copy_cost= 0; // Included in ha_key_scan_time
+ }
+ else
+ {
+ cost->row_cost= file->ha_scan_time(records);
+ read_time= file->cost(cost->row_cost);
+ row_copy_cost= 0; // Included in ha_scan_time
+ }
}
- res= read_time;
}
else
{
- found_records= records=table->stat_records();
- read_time= found_records ? (double)found_records: 10.0;// TODO:fix this stub
- res= read_time;
+ /*
+ The following is same as calling
+ TABLE_SHARE::update_optimizer_costs, but without locks
+ */
+ if (table->s->db_type() == heap_hton)
+ memcpy(&table->s->optimizer_costs, &heap_optimizer_costs,
+ sizeof(heap_optimizer_costs));
+ else
+ memcpy(&table->s->optimizer_costs, &tmp_table_optimizer_costs,
+ sizeof(tmp_table_optimizer_costs));
+ file->set_optimizer_costs(thd);
+ table->s->optimizer_costs_inited=1;
+
+ records= table->stat_records();
+ DBUG_ASSERT(table->opt_range_condition_rows == records);
+ cost->row_cost= table->file->ha_scan_time(MY_MAX(records, 1000));
+ read_time= file->cost(cost->row_cost);
+ row_copy_cost= table->s->optimizer_costs.row_copy_cost;
}
- return res;
+
+ found_records= records;
+ copy_cost= (records * (row_copy_cost + WHERE_COST_THD(thd)));
+ cached_scan_and_compare_time= read_time + copy_cost;
+ cost->copy_cost+= copy_cost;
+
+ /*
+ Assume we only need to do physical IO once even if we scan the file
+ multiple times.
+ */
+ cost->max_index_blocks= (longlong) ceil(cost->index_cost.io);
+ cost->max_row_blocks= (longlong) ceil(cost->row_cost.io);
+ DBUG_ASSERT(compare_cost(cached_scan_and_compare_time,
+ file->cost(cost)));
}
/**
- Estimate the number of rows that a an access method will read from a table.
+ Estimate the number of rows that an access method will read from a table.
- @todo: why not use JOIN_TAB::found_records
+ @todo: why not use JOIN_TAB::found_records or JOIN_TAB::records_read
*/
-ha_rows JOIN_TAB::get_examined_rows()
+double JOIN_TAB::get_examined_rows()
{
double examined_rows;
const SQL_SELECT *sel= get_sql_select();
if (sel && sel->quick && use_quick != 2)
- examined_rows= (double)sel->quick->records;
- else if (type == JT_NEXT || type == JT_ALL ||
- type == JT_HASH || type ==JT_HASH_NEXT)
+ {
+ examined_rows= (double) sel->quick->records;
+ DBUG_ASSERT(examined_rows == sel->quick->records);
+ }
+ else if (type == JT_NEXT || type == JT_ALL || type == JT_RANGE ||
+ type == JT_HASH || type == JT_HASH_NEXT)
{
if (limit)
{
@@ -15034,11 +16174,11 @@ ha_rows JOIN_TAB::get_examined_rows()
}
}
else
- examined_rows= records_read;
+ examined_rows= records_init;
if (examined_rows >= (double) HA_ROWS_MAX)
- return HA_ROWS_MAX;
- return (ha_rows) examined_rows;
+ return (double) HA_ROWS_MAX;
+ return examined_rows;
}
@@ -15048,6 +16188,7 @@ ha_rows JOIN_TAB::get_examined_rows()
TODO: consider moving this together with join_tab_execution_startup
*/
+
bool JOIN_TAB::preread_init()
{
TABLE_LIST *derived= table->pos_in_table_list;
@@ -15090,7 +16231,31 @@ bool JOIN_TAB::preread_init()
}
-bool JOIN_TAB::pfs_batch_update(JOIN *join)
+/**
+ pfs_batch_update()
+
+ Check if the used table will do a lot of read calls in a row without
+ any intervening read calls to any other tables.
+
+ @return 0 No
+ @return 1 Yes
+
+ If yes, then the handler will be informed about this with the
+ start_psi_batch_mode() / end_psi_batch_mode() calls
+
+ This is currently used only to speed up performance schema code for
+ multiple reads.
+
+ In the future we may also inform the engine about this. The engine
+ could use this information to cache the used pages, keep blocks
+ locked in the page cache and similar things to speed up repeated
+ reads.
+
+ The return value of this function is cached in
+ JOIN_TAB::cached_pfs_batch_update
+*/
+
+bool JOIN_TAB::pfs_batch_update()
{
/*
Use PFS batch mode if
@@ -15425,7 +16590,6 @@ void JOIN::cleanup(bool full)
if (current_ref_ptrs != items0)
{
set_items_ref_array(items0);
- set_group_rpa= false;
}
DBUG_VOID_RETURN;
}
@@ -15938,7 +17102,6 @@ return_zero_rows(JOIN *join, select_result *result, List<TABLE_LIST> *tables,
/* Update results for FOUND_ROWS */
if (!join->send_row_on_empty_set())
{
- join->thd->set_examined_row_count(0);
join->thd->limit_found_rows= 0;
}
@@ -16946,7 +18109,7 @@ static COND *build_equal_items(JOIN *join, COND *cond,
table->on_expr= build_equal_items(join, table->on_expr, inherited,
nested_join_list, ignore_on_conds,
&table->cond_equal);
- if (unlikely(join->thd->trace_started()))
+ if (unlikely(thd->trace_started()))
{
const char *table_name;
if (table->nested_join)
@@ -18341,25 +19504,28 @@ static bool check_interleaving_with_nj(JOIN_TAB *next_tab)
Do update counters for "pairs of brackets" that we've left (marked as
X,Y,Z in the above picture)
*/
- for (;next_emb && next_emb != join->emb_sjm_nest; next_emb= next_emb->embedding)
+ for (;next_emb && next_emb != join->emb_sjm_nest;
+ next_emb= next_emb->embedding)
{
if (!next_emb->sj_on_expr)
{
next_emb->nested_join->counter++;
if (next_emb->nested_join->counter == 1)
{
- /*
+ /*
next_emb is the first table inside a nested join we've "entered". In
- the picture above, we're looking at the 'X' bracket. Don't exit yet as
- X bracket might have Y pair bracket.
+ the picture above, we're looking at the 'X' bracket. Don't exit yet
+ as X bracket might have Y pair bracket.
*/
join->cur_embedding_map |= next_emb->nested_join->nj_map;
}
+ DBUG_ASSERT(next_emb->nested_join->n_tables >=
+ next_emb->nested_join->counter);
+
if (next_emb->nested_join->n_tables !=
next_emb->nested_join->counter)
break;
-
/*
We're currently at Y or Z-bracket as depicted in the above picture.
Mark that we've left it and continue walking up the brackets hierarchy.
@@ -18573,7 +19739,7 @@ table_map JOIN::get_allowed_nj_tables(uint idx)
first_alt TRUE <=> Use the LooseScan plan for the first_tab
no_jbuf_before Don't allow to use join buffering before this
table
- reopt_rec_count OUT New output record count
+ outer_rec_count OUT New output record count
reopt_cost OUT New join prefix cost
DESCRIPTION
@@ -18628,6 +19794,8 @@ void optimize_wo_join_buffering(JOIN *join, uint first_tab, uint last_tab,
table_map save_cur_sj_inner_tables= join->cur_sj_inner_tables;
join->cur_sj_inner_tables= 0;
+ double inner_fanout= 1.0;
+
for (i= first_tab; i <= last_tab; i++)
{
JOIN_TAB *rs= join->positions[i].table;
@@ -18640,37 +19808,58 @@ void optimize_wo_join_buffering(JOIN *join, uint first_tab, uint last_tab,
join->positions, i,
TRUE, rec_count,
&pos, &loose_scan_pos);
+ if ((i == first_tab && first_alt))
+ pos= loose_scan_pos;
}
else
pos= join->positions[i];
- if ((i == first_tab && first_alt))
- pos= loose_scan_pos;
-
reopt_remaining_tables &= ~rs->table->map;
- rec_count= COST_MULT(rec_count, pos.records_read);
cost= COST_ADD(cost, pos.read_time);
- cost= COST_ADD(cost, rec_count / TIME_FOR_COMPARE);
- //TODO: take into account join condition selectivity here
- double pushdown_cond_selectivity= 1.0;
- table_map real_table_bit= rs->table->map;
- if (join->thd->variables.optimizer_use_condition_selectivity > 1)
+
+ double records_out= pos.records_out;
+ /*
+ The (i != last_tab) is here to mimic what
+ best_extension_by_limited_search() does: do not call
+ table_after_join_selectivity() for the join_tab where the semi-join
+ strategy is applied
+ */
+ if (i != last_tab &&
+ join->thd->variables.optimizer_use_condition_selectivity > 1)
{
- pushdown_cond_selectivity= table_cond_selectivity(join, i, rs,
- reopt_remaining_tables &
- ~real_table_bit);
+ table_map real_table_bit= rs->table->map;
+ double __attribute__((unused)) pushdown_cond_selectivity;
+ pushdown_cond_selectivity=
+ table_after_join_selectivity(join, i, rs,
+ reopt_remaining_tables &
+ ~real_table_bit, &records_out);
+ join->positions[i].partial_join_cardinality= rec_count * pushdown_cond_selectivity;
}
- double partial_join_cardinality= rec_count *
- pushdown_cond_selectivity;
- join->positions[i].partial_join_cardinality= partial_join_cardinality;
- (*outer_rec_count) *= pushdown_cond_selectivity;
- if (!rs->emb_sj_nest)
- *outer_rec_count= COST_MULT(*outer_rec_count, pos.records_read);
+ else
+ join->positions[i].partial_join_cardinality= COST_MULT(rec_count, records_out);
+ rec_count= COST_MULT(rec_count, records_out);
+ *outer_rec_count= COST_MULT(*outer_rec_count, records_out);
+
+ if (rs->emb_sj_nest)
+ inner_fanout= COST_MULT(inner_fanout, records_out);
}
+
+ /* Discount the fanout produced by the subquery */
+ if (inner_fanout > 1.0)
+ *outer_rec_count /= inner_fanout;
+
join->cur_sj_inner_tables= save_cur_sj_inner_tables;
*reopt_cost= cost;
+ if (rec_count < *outer_rec_count)
+ {
+ /*
+ The tables inside the subquery produce smaller fanout than outer tables.
+ This can happen in edge cases.
+ */
+ *outer_rec_count= rec_count;
+ }
}
@@ -18703,8 +19892,11 @@ optimize_cond(JOIN *join, COND *conds,
Json_writer_object trace_wrapper(thd);
Json_writer_object trace_cond(thd, "condition_processing");
- trace_cond.add("condition", join->conds == conds ? "WHERE" : "HAVING")
- .add("original_condition", conds);
+
+ if (unlikely(trace_cond.trace_started()))
+ trace_cond.
+ add("condition", join->conds == conds ? "WHERE" : "HAVING").
+ add("original_condition", conds);
Json_writer_array trace_steps(thd, "steps");
DBUG_EXECUTE("where", print_where(conds, "original", QT_ORDINARY););
@@ -18712,10 +19904,13 @@ optimize_cond(JOIN *join, COND *conds,
ignore_on_conds, cond_equal,
MY_TEST(flags & OPT_LINK_EQUAL_FIELDS));
DBUG_EXECUTE("where",print_where(conds,"after equal_items", QT_ORDINARY););
+
+ if (unlikely(thd->trace_started()))
{
Json_writer_object equal_prop_wrapper(thd);
- equal_prop_wrapper.add("transformation", "equality_propagation")
- .add("resulting_condition", conds);
+ equal_prop_wrapper.
+ add("transformation", "equality_propagation").
+ add("resulting_condition", conds);
}
/* change field = field to field = const for each found field = const */
@@ -18725,20 +19920,24 @@ optimize_cond(JOIN *join, COND *conds,
Remove all and-levels where CONST item != CONST item
*/
DBUG_EXECUTE("where",print_where(conds,"after const change", QT_ORDINARY););
+ if (unlikely(thd->trace_started()))
{
Json_writer_object const_prop_wrapper(thd);
- const_prop_wrapper.add("transformation", "constant_propagation")
- .add("resulting_condition", conds);
+ const_prop_wrapper.
+ add("transformation", "constant_propagation").
+ add("resulting_condition", conds);
}
conds= conds->remove_eq_conds(thd, cond_value, true);
if (conds && conds->type() == Item::COND_ITEM &&
((Item_cond*) conds)->functype() == Item_func::COND_AND_FUNC)
*cond_equal= &((Item_cond_and*) conds)->m_cond_equal;
+ if (unlikely(thd->trace_started()))
{
Json_writer_object cond_removal_wrapper(thd);
- cond_removal_wrapper.add("transformation", "trivial_condition_removal")
- .add("resulting_condition", conds);
+ cond_removal_wrapper.
+ add("transformation", "trivial_condition_removal").
+ add("resulting_condition", conds);
}
DBUG_EXECUTE("info",print_where(conds,"after remove", QT_ORDINARY););
}
@@ -18955,7 +20154,7 @@ bool cond_is_datetime_is_null(Item *cond)
=> SELECT * FROM t1 WHERE ((FALSE AND (a = 5)) OR
((b = 5) AND (a = 5))) AND
(b = 5) AND (a = 5)
- After this an additional call of remove_eq_conds() converts it to
+ After this an additional call of remove_eq_conds() converts it to
=> SELECT * FROM t1 WHERE (b = 5) AND (a = 5)
*/
@@ -19074,7 +20273,7 @@ Item_cond::remove_eq_conds(THD *thd, Item::cond_result *cond_value,
else
{
if (new_item->type() == Item::COND_ITEM &&
- ((Item_cond*) new_item)->functype() == functype())
+ ((Item_cond*) new_item)->functype() == functype())
{
List<Item> *new_item_arg_list=
((Item_cond *) new_item)->argument_list();
@@ -20051,6 +21250,7 @@ TABLE *Create_tmp_table::start(THD *thd,
sizeof(*m_key_part_info)*(param->group_parts+1),
&param->start_recinfo,
sizeof(*param->recinfo)*(field_count*2+4),
+ &param->rec_per_key, sizeof(ulong)*param->group_parts,
&tmpname, (uint) strlen(path)+1,
&m_group_buff, (m_group && ! m_using_unique_constraint ?
param->group_length : 0),
@@ -20379,7 +21579,7 @@ bool Create_tmp_table::finalize(THD *thd,
bool save_abort_on_warning;
uchar *pos;
uchar *null_flags;
- KEY *keyinfo;
+ KEY *keyinfo= param->keyinfo;
TMP_ENGINE_COLUMNDEF *recinfo;
TABLE_SHARE *share= table->s;
Copy_field *copy= param->copy_field;
@@ -20571,30 +21771,32 @@ bool Create_tmp_table::finalize(THD *thd,
set_if_smaller(share->max_rows, m_rows_limit);
param->end_write_records= m_rows_limit;
- keyinfo= param->keyinfo;
-
if (m_group)
{
DBUG_PRINT("info",("Creating group key in temporary table"));
- table->group= m_group; /* Table is grouped by key */
+ table->group= m_group; /* Table is grouped by key */
param->group_buff= m_group_buff;
share->keys=1;
- share->uniques= MY_TEST(m_using_unique_constraint);
table->key_info= table->s->key_info= keyinfo;
table->keys_in_use_for_query.set_bit(0);
share->keys_in_use.set_bit(0);
keyinfo->key_part= m_key_part_info;
keyinfo->flags=HA_NOSAME | HA_BINARY_PACK_KEY | HA_PACK_KEY;
+ if (m_using_unique_constraint)
+ keyinfo->flags|= HA_UNIQUE_HASH;
keyinfo->ext_key_flags= keyinfo->flags;
- keyinfo->usable_key_parts=keyinfo->user_defined_key_parts= param->group_parts;
+ keyinfo->usable_key_parts=keyinfo->user_defined_key_parts=
+ param->group_parts;
keyinfo->ext_key_parts= keyinfo->user_defined_key_parts;
+ share->ext_key_parts= share->key_parts= keyinfo->ext_key_parts;
keyinfo->key_length=0;
- keyinfo->rec_per_key=NULL;
+ keyinfo->rec_per_key= param->rec_per_key;
keyinfo->read_stats= NULL;
keyinfo->collected_stats= NULL;
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
keyinfo->is_statistics_from_stat_tables= FALSE;
keyinfo->name= group_key;
+ keyinfo->comment.str= 0;
ORDER *cur_group= m_group;
for (; cur_group ; cur_group= cur_group->next, m_key_part_info++)
{
@@ -20680,6 +21882,7 @@ bool Create_tmp_table::finalize(THD *thd,
*/
DBUG_PRINT("info",("hidden_field_count: %d", param->hidden_field_count));
+ keyinfo->flags= 0;
if (m_blobs_count[distinct])
{
/*
@@ -20687,14 +21890,16 @@ bool Create_tmp_table::finalize(THD *thd,
indexes on blobs with arbitrary length. Such indexes cannot be
used for lookups.
*/
- share->uniques= 1;
+ keyinfo->flags|= HA_UNIQUE_HASH;
}
keyinfo->user_defined_key_parts= m_field_count[distinct] +
- (share->uniques ? MY_TEST(null_pack_length[distinct]) : 0);
+ ((keyinfo->flags & HA_UNIQUE_HASH) ?
+ MY_TEST(null_pack_length[distinct]) : 0);
keyinfo->ext_key_parts= keyinfo->user_defined_key_parts;
keyinfo->usable_key_parts= keyinfo->user_defined_key_parts;
table->distinct= 1;
share->keys= 1;
+ share->ext_key_parts= share->key_parts= keyinfo->ext_key_parts;
if (!(m_key_part_info= (KEY_PART_INFO*)
alloc_root(&table->mem_root,
keyinfo->user_defined_key_parts * sizeof(KEY_PART_INFO))))
@@ -20704,7 +21909,8 @@ bool Create_tmp_table::finalize(THD *thd,
share->keys_in_use.set_bit(0);
table->key_info= table->s->key_info= keyinfo;
keyinfo->key_part= m_key_part_info;
- keyinfo->flags=HA_NOSAME | HA_NULL_ARE_EQUAL | HA_BINARY_PACK_KEY | HA_PACK_KEY;
+ keyinfo->flags|= (HA_NOSAME | HA_NULL_ARE_EQUAL | HA_BINARY_PACK_KEY |
+ HA_PACK_KEY);
keyinfo->ext_key_flags= keyinfo->flags;
keyinfo->key_length= 0; // Will compute the sum of the parts below.
keyinfo->name= distinct_key;
@@ -20733,7 +21939,7 @@ bool Create_tmp_table::finalize(THD *thd,
blobs can distinguish NULL from 0. This extra field is not needed
when we do not use UNIQUE indexes for blobs.
*/
- if (null_pack_length[distinct] && share->uniques)
+ if (null_pack_length[distinct] && (keyinfo->flags & HA_UNIQUE_HASH))
{
m_key_part_info->null_bit=0;
m_key_part_info->offset= null_pack_base[distinct];
@@ -20799,6 +22005,8 @@ bool Create_tmp_table::finalize(THD *thd,
m_key_part_info++;
}
}
+ if (share->keys)
+ keyinfo->index_flags= table->file->index_flags(0, 0, 1);
if (unlikely(thd->is_fatal_error)) // If end of memory
goto err; /* purecov: inspected */
@@ -20913,7 +22121,7 @@ TABLE *create_tmp_table_for_schema(THD *thd, TMP_TABLE_PARAM *param,
{
TABLE *table;
Create_tmp_table maker((ORDER *) NULL, false, false,
- select_options, HA_POS_ERROR);
+ select_options, HA_ROWS_MAX);
if (!(table= maker.start(thd, param, &table_alias)) ||
maker.add_schema_fields(thd, table, param, schema_table) ||
maker.finalize(thd, table, param, do_not_open, keep_row_order))
@@ -21093,7 +22301,6 @@ bool Virtual_tmp_table::sp_set_all_fields_from_item(THD *thd, Item *value)
return false;
}
-
bool open_tmp_table(TABLE *table)
{
int error;
@@ -21107,6 +22314,7 @@ bool open_tmp_table(TABLE *table)
}
table->db_stat= HA_OPEN_KEYFILE;
(void) table->file->extra(HA_EXTRA_QUICK); /* Faster */
+ table->file->set_optimizer_costs(table->in_use);
if (!table->is_created())
{
table->set_created();
@@ -21149,109 +22357,124 @@ bool open_tmp_table(TABLE *table)
*/
-bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
+bool create_internal_tmp_table(TABLE *table, KEY *org_keyinfo,
TMP_ENGINE_COLUMNDEF *start_recinfo,
TMP_ENGINE_COLUMNDEF **recinfo,
ulonglong options)
{
int error;
- MARIA_KEYDEF keydef;
+ MARIA_KEYDEF *keydefs= 0, *keydef;
MARIA_UNIQUEDEF uniquedef;
TABLE_SHARE *share= table->s;
MARIA_CREATE_INFO create_info;
+ bool use_unique= false;
DBUG_ENTER("create_internal_tmp_table");
if (share->keys)
{ // Get keys for ni_create
- bool using_unique_constraint=0;
- HA_KEYSEG *seg= (HA_KEYSEG*) alloc_root(&table->mem_root,
- sizeof(*seg) * keyinfo->user_defined_key_parts);
- if (!seg)
- goto err;
+ HA_KEYSEG *seg;
+ DBUG_ASSERT(share->key_parts);
- bzero(seg, sizeof(*seg) * keyinfo->user_defined_key_parts);
- /*
- Note that a similar check is performed during
- subquery_types_allow_materialization. See MDEV-7122 for more details as
- to why. Whenever this changes, it must be updated there as well, for
- all tmp_table engines.
- */
- if (keyinfo->key_length > table->file->max_key_length() ||
- keyinfo->user_defined_key_parts > table->file->max_key_parts() ||
- share->uniques)
- {
- if (!share->uniques && !(keyinfo->flags & HA_NOSAME))
- {
- my_error(ER_INTERNAL_ERROR, MYF(0),
- "Using too big key for internal temp tables");
- DBUG_RETURN(1);
- }
-
- /* Can't create a key; Make a unique constraint instead of a key */
- share->keys= 0;
- share->uniques= 1;
- using_unique_constraint=1;
- bzero((char*) &uniquedef,sizeof(uniquedef));
- uniquedef.keysegs=keyinfo->user_defined_key_parts;
- uniquedef.seg=seg;
- uniquedef.null_are_equal=1;
+ if (!(multi_alloc_root(&table->mem_root,
+ &seg, sizeof(*seg) * share->key_parts,
+ &keydefs, sizeof(*keydefs) * share->keys,
+ NullS)))
+ goto err;
+ keydef= keydefs;
- /* Create extra column for hash value */
- bzero((uchar*) *recinfo,sizeof(**recinfo));
- (*recinfo)->type= FIELD_CHECK;
- (*recinfo)->length= MARIA_UNIQUE_HASH_LENGTH;
- (*recinfo)++;
+ bzero(seg, sizeof(*seg) * share->key_parts);
- /* Avoid warnings from valgrind */
- bzero(table->record[0]+ share->reclength, MARIA_UNIQUE_HASH_LENGTH);
- bzero(share->default_values+ share->reclength, MARIA_UNIQUE_HASH_LENGTH);
- share->reclength+= MARIA_UNIQUE_HASH_LENGTH;
- }
- else
+ /* Note that share->keys may change in the loop ! */
+ for (KEY *keyinfo= org_keyinfo, *end_keyinfo= keyinfo + share->keys;
+ keyinfo < end_keyinfo ;
+ keyinfo++)
{
- /* Create a key */
- bzero((char*) &keydef,sizeof(keydef));
- keydef.flag= keyinfo->flags & HA_NOSAME;
- keydef.keysegs= keyinfo->user_defined_key_parts;
- keydef.seg= seg;
- }
- for (uint i=0; i < keyinfo->user_defined_key_parts ; i++,seg++)
- {
- Field *field=keyinfo->key_part[i].field;
- seg->flag= 0;
- seg->language= field->charset()->number;
- seg->length= keyinfo->key_part[i].length;
- seg->start= keyinfo->key_part[i].offset;
- if (field->flags & BLOB_FLAG)
+ /*
+ Note that a similar check is performed during
+ subquery_types_allow_materialization. See MDEV-7122 for more details as
+ to why. Whenever this changes, it must be updated there as well, for
+ all tmp_table engines.
+ */
+ if (keyinfo->key_length > table->file->max_key_length() ||
+ keyinfo->user_defined_key_parts > table->file->max_key_parts() ||
+ (keyinfo->flags & HA_UNIQUE_HASH))
{
- seg->type=
- ((keyinfo->key_part[i].key_type & FIELDFLAG_BINARY) ?
- HA_KEYTYPE_VARBINARY2 : HA_KEYTYPE_VARTEXT2);
- seg->bit_start= (uint8)(field->pack_length() -
- portable_sizeof_char_ptr);
- seg->flag= HA_BLOB_PART;
- seg->length=0; // Whole blob in unique constraint
+ if (!(keyinfo->flags & (HA_NOSAME | HA_UNIQUE_HASH)))
+ {
+ my_error(ER_INTERNAL_ERROR, MYF(0),
+ "Using too big key for internal temp tables");
+ DBUG_RETURN(1);
+ }
+ /* Can't create a key; Make a unique constraint instead of a key */
+ share->keys--;
+ share->key_parts-= keyinfo->user_defined_key_parts;
+ share->ext_key_parts-= keyinfo->ext_key_parts;
+ use_unique= true;
+ bzero((char*) &uniquedef,sizeof(uniquedef));
+ uniquedef.keysegs= keyinfo->user_defined_key_parts;
+ uniquedef.seg=seg;
+ uniquedef.null_are_equal=1;
+ keyinfo->flags|= HA_UNIQUE_HASH;
+ keyinfo->algorithm= HA_KEY_ALG_UNIQUE_HASH;
+
+ /* Create extra column for hash value */
+ bzero((uchar*) *recinfo,sizeof(**recinfo));
+ (*recinfo)->type= FIELD_CHECK;
+ (*recinfo)->length= MARIA_UNIQUE_HASH_LENGTH;
+ (*recinfo)++;
+
+ /* Avoid warnings from valgrind */
+ bzero(table->record[0]+ share->reclength, MARIA_UNIQUE_HASH_LENGTH);
+ bzero(share->default_values+ share->reclength,
+ MARIA_UNIQUE_HASH_LENGTH);
+ share->reclength+= MARIA_UNIQUE_HASH_LENGTH;
}
else
{
- seg->type= keyinfo->key_part[i].type;
- /* Tell handler if it can do suffic space compression */
- if (field->real_type() == MYSQL_TYPE_STRING &&
- keyinfo->key_part[i].length > 32)
- seg->flag|= HA_SPACE_PACK;
- }
- if (!(field->flags & NOT_NULL_FLAG))
- {
- seg->null_bit= field->null_bit;
- seg->null_pos= (uint) (field->null_ptr - (uchar*) table->record[0]);
- /*
- We are using a GROUP BY on something that contains NULL
- In this case we have to tell Aria that two NULL should
- on INSERT be regarded at the same value
- */
- if (!using_unique_constraint)
- keydef.flag|= HA_NULL_ARE_EQUAL;
+ /* Create a key */
+ bzero((char*) keydef,sizeof(*keydef));
+ /*
+ We are using a GROUP BY on something that contains NULL
+ In this case we have to tell Aria that two NULL should
+ on INSERT be regarded at the same value.
+ */
+ keydef->flag= (keyinfo->flags & HA_NOSAME) | HA_NULL_ARE_EQUAL;
+ keydef->keysegs= keyinfo->user_defined_key_parts;
+ keydef->seg= seg;
+ keydef++;
+ }
+ for (uint i=0; i < keyinfo->user_defined_key_parts ; i++,seg++)
+ {
+ Field *field=keyinfo->key_part[i].field;
+ seg->flag= 0;
+ seg->language= field->charset()->number;
+ seg->length= keyinfo->key_part[i].length;
+ seg->start= keyinfo->key_part[i].offset;
+ if (field->flags & BLOB_FLAG)
+ {
+ seg->type=
+ ((keyinfo->key_part[i].key_type & FIELDFLAG_BINARY) ?
+ HA_KEYTYPE_VARBINARY2 : HA_KEYTYPE_VARTEXT2);
+ seg->bit_start= (uint8)(field->pack_length() -
+ portable_sizeof_char_ptr);
+ seg->flag= HA_BLOB_PART;
+ seg->length=0; // Whole blob in unique constraint
+ }
+ else
+ {
+ seg->type= keyinfo->key_part[i].type;
+ /* Tell handler if it can do suffic space compression */
+ if (field->real_type() == MYSQL_TYPE_STRING &&
+ keyinfo->key_part[i].length > 32)
+ seg->flag|= HA_SPACE_PACK;
+ }
+ if (!(field->flags & NOT_NULL_FLAG))
+ {
+ seg->null_bit= field->null_bit;
+ seg->null_pos= (uint) (field->null_ptr - (uchar*) table->record[0]);
+ }
}
+ keyinfo->index_flags= table->file->index_flags(0, 0, 1);
}
}
bzero((char*) &create_info,sizeof(create_info));
@@ -21298,8 +22521,8 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
}
if (unlikely((error= maria_create(share->path.str, file_type, share->keys,
- &keydef, (uint) (*recinfo-start_recinfo),
- start_recinfo, share->uniques, &uniquedef,
+ keydefs, (uint) (*recinfo-start_recinfo),
+ start_recinfo, use_unique, &uniquedef,
&create_info, create_flags))))
{
table->file->print_error(error,MYF(0)); /* purecov: inspected */
@@ -21351,7 +22574,7 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
/* Create internal MyISAM temporary table */
-bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
+bool create_internal_tmp_table(TABLE *table, KEY *org_keyinfo,
TMP_ENGINE_COLUMNDEF *start_recinfo,
TMP_ENGINE_COLUMNDEF **recinfo,
ulonglong options)
@@ -21366,11 +22589,12 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
{ // Get keys for ni_create
bool using_unique_constraint=0;
HA_KEYSEG *seg= (HA_KEYSEG*) alloc_root(&table->mem_root,
- sizeof(*seg) * keyinfo->user_defined_key_parts);
+ sizeof(*seg) *
+ share->user_defined_key_parts);
if (!seg)
goto err;
- bzero(seg, sizeof(*seg) * keyinfo->user_defined_key_parts);
+ bzero(seg, sizeof(*seg) * share->user_defined_key_parts);
/*
Note that a similar check is performed during
subquery_types_allow_materialization. See MDEV-7122 for more details as
@@ -21383,6 +22607,7 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
{
/* Can't create a key; Make a unique constraint instead of a key */
share->keys= 0;
+ share->key_parts= share->ext_key_parts= 0;
share->uniques= 1;
using_unique_constraint=1;
bzero((char*) &uniquedef,sizeof(uniquedef));
@@ -21446,6 +22671,8 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
keydef.flag|= HA_NULL_ARE_EQUAL;
}
}
+ if (share->keys)
+ keyinfo->index_flags= table->file->index_flags(0, 0, 1);
}
MI_CREATE_INFO create_info;
bzero((char*) &create_info,sizeof(create_info));
@@ -21497,6 +22724,7 @@ create_internal_tmp_table_from_heap(THD *thd, TABLE *table,
TABLE_SHARE share;
const char *save_proc_info;
int write_err= 0;
+ String tmp_alias;
DBUG_ENTER("create_internal_tmp_table_from_heap");
if (is_duplicate)
*is_duplicate= FALSE;
@@ -21589,9 +22817,18 @@ create_internal_tmp_table_from_heap(THD *thd, TABLE *table,
plugin_unlock(0, table->s->db_plugin);
share.db_plugin= my_plugin_lock(0, share.db_plugin);
new_table.s= table->s; // Keep old share
+
+ /*
+ The following work with alias has to be done as new_table.alias() may have
+ been reallocated and we want to keep the original one.
+ */
+ tmp_alias.move(table->alias);
*table= new_table;
+ table->alias.move(tmp_alias);
+ new_table.alias.free();
+ /* Get the new share */
*table->s= share;
-
+
table->file->change_table_ptr(table, table->s);
table->use_all_columns();
if (save_proc_info)
@@ -21693,7 +22930,7 @@ void set_postjoin_aggr_write_func(JOIN_TAB *tab)
Note for MyISAM tmp tables: if uniques is true keys won't be
created.
*/
- if (table->s->keys && !table->s->uniques)
+ if (table->s->keys && !table->s->have_unique_constraint())
{
DBUG_PRINT("info",("Using end_update"));
aggr->set_write_func(end_update);
@@ -21782,6 +23019,7 @@ do_select(JOIN *join, Procedure *procedure)
{
int rc= 0;
enum_nested_loop_state error= NESTED_LOOP_OK;
+ uint top_level_tables= join->exec_join_tab_cnt();
DBUG_ENTER("do_select");
if (join->pushdown_query)
@@ -21798,8 +23036,9 @@ do_select(JOIN *join, Procedure *procedure)
if (join->pushdown_query->store_data_in_temp_table)
{
- JOIN_TAB *last_tab= join->join_tab + join->exec_join_tab_cnt();
+ JOIN_TAB *last_tab= join->join_tab + top_level_tables;
last_tab->next_select= end_send;
+ last_tab->cached_pfs_batch_update= last_tab->pfs_batch_update();
enum_nested_loop_state state= last_tab->aggr->end_send();
if (state >= NESTED_LOOP_OK)
@@ -21816,6 +23055,7 @@ do_select(JOIN *join, Procedure *procedure)
join->procedure= procedure;
join->duplicate_rows= join->send_records=0;
+
if (join->only_const_tables() && !join->need_tmp)
{
Next_select_func end_select= setup_end_select_func(join);
@@ -21841,8 +23081,7 @@ do_select(JOIN *join, Procedure *procedure)
here. join->send_records is increased on success in end_send(),
so we don't touch it here.
*/
- join->join_examined_rows++;
- DBUG_ASSERT(join->join_examined_rows <= 1);
+ join->thd->inc_examined_row_count_fast();
}
else if (join->send_row_on_empty_set())
{
@@ -21888,6 +23127,17 @@ do_select(JOIN *join, Procedure *procedure)
dbug_serve_apcs(join->thd, 1);
);
+ /*
+ We have to update the cached_pfs_batch_update as
+ join_tab->select_cond may have changed.
+
+ This can happen in case of group by where some sub queries are not
+ needed anymore. This is checked by main.ps
+ */
+ if (top_level_tables)
+ join->join_tab[top_level_tables-1].cached_pfs_batch_update=
+ join->join_tab[top_level_tables-1].pfs_batch_update();
+
JOIN_TAB *join_tab= join->join_tab +
(join->tables_list ? join->const_tables : 0);
if (join->outer_ref_cond && !join->outer_ref_cond->val_int())
@@ -21989,6 +23239,8 @@ bool instantiate_tmp_table(TABLE *table, KEY *keyinfo,
TMP_ENGINE_COLUMNDEF **recinfo,
ulonglong options)
{
+ DBUG_ASSERT(table->s->keys == 0 || table->key_info == keyinfo);
+ DBUG_ASSERT(table->s->keys <= 1);
if (table->s->db_type() == TMP_ENGINE_HTON)
{
/*
@@ -22286,6 +23538,8 @@ sub_select_cache(JOIN *join, JOIN_TAB *join_tab, bool end_of_records)
enum_nested_loop_state
sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
{
+ int error;
+ enum_nested_loop_state rc;
DBUG_ENTER("sub_select");
if (join_tab->split_derived_to_update && !end_of_records)
@@ -22316,10 +23570,7 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
}
join_tab->tracker->r_scans++;
- int error;
- enum_nested_loop_state rc= NESTED_LOOP_OK;
- READ_RECORD *info= &join_tab->read_record;
-
+ rc= NESTED_LOOP_OK;
for (SJ_TMP_TABLE *flush_dups_table= join_tab->flush_weedout_table;
flush_dups_table;
@@ -22331,11 +23582,22 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
if (!join_tab->preread_init_done && join_tab->preread_init())
DBUG_RETURN(NESTED_LOOP_ERROR);
- if (join_tab->build_range_rowid_filter_if_needed())
- DBUG_RETURN(NESTED_LOOP_ERROR);
-
- if (join_tab->rowid_filter && join_tab->rowid_filter->is_empty())
- rc= NESTED_LOOP_NO_MORE_ROWS;
+ if (unlikely(join_tab->rowid_filter))
+ {
+ if (unlikely(join_tab->need_to_build_rowid_filter))
+ {
+ if (join_tab->build_range_rowid_filter())
+ DBUG_RETURN(NESTED_LOOP_ERROR);
+ /*
+ We have to check join_tab->rowid_filter again as the above
+ function may have cleared it in case of errors.
+ */
+ if (join_tab->rowid_filter && join_tab->rowid_filter->is_empty())
+ rc= NESTED_LOOP_NO_MORE_ROWS;
+ }
+ else if (join_tab->rowid_filter->is_empty())
+ rc= NESTED_LOOP_NO_MORE_ROWS;
+ }
join->return_tab= join_tab;
@@ -22361,8 +23623,8 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
if (join_tab->loosescan_match_tab)
join_tab->loosescan_match_tab->found_match= FALSE;
- const bool pfs_batch_update= join_tab->pfs_batch_update(join);
- if (pfs_batch_update)
+ DBUG_ASSERT(join_tab->cached_pfs_batch_update == join_tab->pfs_batch_update());
+ if (join_tab->cached_pfs_batch_update)
join_tab->table->file->start_psi_batch_mode();
if (rc != NESTED_LOOP_NO_MORE_ROWS)
@@ -22373,11 +23635,9 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
rc= evaluate_join_record(join, join_tab, error);
}
- /*
- Note: psergey has added the 2nd part of the following condition; the
- change should probably be made in 5.1, too.
- */
bool skip_over= FALSE;
+ READ_RECORD *info= &join_tab->read_record;
+
while (rc == NESTED_LOOP_OK && join->return_tab >= join_tab)
{
if (join_tab->loosescan_match_tab &&
@@ -22412,15 +23672,21 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
rc= evaluate_join_record(join, join_tab, error);
}
- if (rc == NESTED_LOOP_NO_MORE_ROWS &&
- join_tab->last_inner && !join_tab->found)
- rc= evaluate_null_complemented_join_record(join, join_tab);
+ if (rc == NESTED_LOOP_NO_MORE_ROWS)
+ {
+ if (join_tab->last_inner && !join_tab->found)
+ {
+ rc= evaluate_null_complemented_join_record(join, join_tab);
+ if (rc == NESTED_LOOP_NO_MORE_ROWS)
+ rc= NESTED_LOOP_OK;
+ }
+ else
+ rc= NESTED_LOOP_OK;
+ }
- if (pfs_batch_update)
+ if (join_tab->cached_pfs_batch_update)
join_tab->table->file->end_psi_batch_mode();
- if (rc == NESTED_LOOP_NO_MORE_ROWS)
- rc= NESTED_LOOP_OK;
DBUG_RETURN(rc);
}
@@ -22447,7 +23713,6 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
ha_rows found_records=join->found_records;
COND *select_cond= join_tab->select_cond;
bool select_cond_result= TRUE;
-
DBUG_ENTER("evaluate_join_record");
DBUG_PRINT("enter",
("evaluate_join_record join: %p join_tab: %p "
@@ -22475,7 +23740,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
DBUG_RETURN(NESTED_LOOP_ERROR);
}
- if (!select_cond || select_cond_result)
+ if (select_cond_result)
{
/*
There is no select condition or the attached pushed down
@@ -22592,9 +23857,9 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
of the newly activated predicates is evaluated as false
(See above join->return_tab= tab).
*/
- join->join_examined_rows++;
- DBUG_PRINT("counts", ("join->examined_rows++: %lu found: %d",
- (ulong) join->join_examined_rows, (int) found));
+ join->thd->inc_examined_row_count_fast();
+ DBUG_PRINT("counts", ("examined_rows: %llu found: %d",
+ (ulonglong) join->thd->m_examined_row_count, (int) found));
if (found)
{
@@ -22630,7 +23895,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
The condition pushed down to the table join_tab rejects all rows
with the beginning coinciding with the current partial join.
*/
- join->join_examined_rows++;
+ join->thd->inc_examined_row_count_fast();
}
join->thd->get_stmt_da()->inc_current_row_for_warning();
@@ -22791,12 +24056,16 @@ join_read_const_table(THD *thd, JOIN_TAB *tab, POSITION *pos)
if (tab->table->pos_in_table_list->is_materialized_derived() &&
!tab->table->pos_in_table_list->fill_me)
{
+ DBUG_ASSERT(0);
//TODO: don't get here at all
- /* Skip materialized derived tables/views. */
+ /*
+ Skip materialized derived tables/views as they temporary table is not
+ opened yet.
+ */
DBUG_RETURN(0);
}
- else if (tab->table->pos_in_table_list->jtbm_subselect &&
- tab->table->pos_in_table_list->jtbm_subselect->is_jtbm_const_tab)
+ else if (tab->table->pos_in_table_list->jtbm_subselect &&
+ tab->table->pos_in_table_list->jtbm_subselect->is_jtbm_const_tab)
{
/* Row will not be found */
int res;
@@ -22812,7 +24081,7 @@ join_read_const_table(THD *thd, JOIN_TAB *tab, POSITION *pos)
{ // Info for DESCRIBE
tab->info= ET_CONST_ROW_NOT_FOUND;
/* Mark for EXPLAIN that the row was not found */
- pos->records_read=0.0;
+ pos->records_read= pos->records_out= 0.0;
pos->ref_depend_map= 0;
if (!table->pos_in_table_list->outer_join || error > 0)
DBUG_RETURN(error);
@@ -22825,20 +24094,12 @@ join_read_const_table(THD *thd, JOIN_TAB *tab, POSITION *pos)
}
else
{
- if (/*!table->file->key_read && */
- table->covering_keys.is_set(tab->ref.key) && !table->no_keyread &&
- (int) table->reginfo.lock_type <= (int) TL_READ_HIGH_PRIORITY)
- {
- table->file->ha_start_keyread(tab->ref.key);
- tab->index= tab->ref.key;
- }
error=join_read_const(tab);
- table->file->ha_end_keyread();
if (unlikely(error))
{
tab->info= ET_UNIQUE_ROW_NOT_FOUND;
/* Mark for EXPLAIN that the row was not found */
- pos->records_read=0.0;
+ pos->records_read= pos->records_out= 0.0;
pos->ref_depend_map= 0;
if (!table->pos_in_table_list->outer_join || error > 0)
DBUG_RETURN(error);
@@ -22954,10 +24215,20 @@ join_read_const(JOIN_TAB *tab)
error=HA_ERR_KEY_NOT_FOUND;
else
{
- error= table->file->ha_index_read_idx_map(table->record[0],tab->ref.key,
- (uchar*) tab->ref.key_buff,
- make_prev_keypart_map(tab->ref.key_parts),
- HA_READ_KEY_EXACT);
+ handler *file= table->file;
+ if (table->covering_keys.is_set(tab->ref.key) && !table->no_keyread &&
+ (int) table->reginfo.lock_type <= (int) TL_READ_HIGH_PRIORITY)
+ {
+ file->ha_start_keyread(tab->ref.key);
+ /* This is probably needed for analyze table */
+ tab->index= tab->ref.key;
+ }
+ error= file->
+ ha_index_read_idx_map(table->record[0],tab->ref.key,
+ (uchar*) tab->ref.key_buff,
+ make_prev_keypart_map(tab->ref.key_parts),
+ HA_READ_KEY_EXACT);
+ file->ha_end_keyread();
}
if (unlikely(error))
{
@@ -23339,6 +24610,7 @@ int test_if_use_dynamic_range_scan(JOIN_TAB *join_tab)
return 0;
}
+
int join_init_read_record(JOIN_TAB *tab)
{
bool need_unpacking= FALSE;
@@ -23356,8 +24628,11 @@ int join_init_read_record(JOIN_TAB *tab)
need_unpacking= tbl ? tbl->is_sjm_scan_table() : FALSE;
}
- if (tab->build_range_rowid_filter_if_needed())
- return 1;
+ if (tab->need_to_build_rowid_filter)
+ {
+ if (tab->build_range_rowid_filter())
+ return 1; /* Fatal error */
+ }
if (tab->filesort && tab->sort_table()) // Sort table.
return 1;
@@ -23389,10 +24664,29 @@ int join_init_read_record(JOIN_TAB *tab)
save_copy= tab->read_record.copy_field;
save_copy_end= tab->read_record.copy_field_end;
- if (init_read_record(&tab->read_record, tab->join->thd, tab->table,
- tab->select, tab->filesort_result, 1, 1, FALSE))
- return 1;
+ /*
+ JT_NEXT means that we should use an index scan on index 'tab->index'
+ However if filesort is set, the table was already sorted above
+ and now have to retrive the rows from the tmp file or by rnd_pos()
+ If !(tab->select && tab->select->quick)) it means that we are
+ in "Range checked for each record" and we better let the normal
+ init_read_record() handle this case
+ */
+ if (tab->type == JT_NEXT && ! tab->filesort &&
+ !(tab->select && tab->select->quick))
+ {
+ /* Used with covered_index scan or force index */
+ if (init_read_record_idx(&tab->read_record, tab->join->thd, tab->table,
+ 1, tab->index, 0))
+ return 1;
+ }
+ else
+ {
+ if (init_read_record(&tab->read_record, tab->join->thd, tab->table,
+ tab->select, tab->filesort_result, 1, 1, FALSE))
+ return 1;
+ }
tab->read_record.copy_field= save_copy;
tab->read_record.copy_field_end= save_copy_end;
@@ -23761,12 +25055,8 @@ end_send_group(JOIN *join, JOIN_TAB *join_tab, bool end_of_records)
List<Item> *fields= join_tab ? (join_tab-1)->fields : join->fields;
DBUG_ENTER("end_send_group");
- if (!join->items3.is_null() && !join->set_group_rpa)
- {
- /* Move ref_pointer_array to points to items3 */
- join->set_group_rpa= true;
+ if (!join->items3.is_null() && join->current_ref_ptrs != join->items3)
join->set_items_ref_array(join->items3);
- }
if (!join->first_record || end_of_records ||
(idx=test_if_group_changed(join->group_fields)) >= 0)
@@ -23938,7 +25228,6 @@ end_write(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
DBUG_RETURN(NESTED_LOOP_ERROR); // Not a table_is_full error
if (is_duplicate)
goto end;
- table->s->uniques=0; // To ensure rows are the same
}
if (++join_tab->send_records >=
join_tab->tmp_table_param->end_write_records &&
@@ -24317,10 +25606,10 @@ bool test_if_ref(Item *root_cond, Item_field *left_item,Item *right_item)
@param cond Condition to analyze
@param tables Tables for which "current field values" are available
+ Tables for which "current field values" are available (this
+ includes used_table)
+ (may also include PSEUDO_TABLE_BITS, and may be zero)
@param used_table Table that we're extracting the condition for
- tables Tables for which "current field values" are available (this
- includes used_table)
- (may also include PSEUDO_TABLE_BITS, and may be zero)
@param join_tab_idx_arg
The index of the JOIN_TAB this Item is being extracted
for. MAX_TABLES if there is no corresponding JOIN_TAB.
@@ -24754,6 +26043,7 @@ static int test_if_order_by_key(JOIN *join,
uint key_parts;
bool have_pk_suffix= false;
uint pk= table->s->primary_key;
+ ORDER::enum_order keypart_order;
DBUG_ENTER("test_if_order_by_key");
if ((table->file->ha_table_flags() & HA_PRIMARY_KEY_IN_READ_INDEX) &&
@@ -24766,16 +26056,23 @@ static int test_if_order_by_key(JOIN *join,
for (; order ; order=order->next, const_key_parts>>=1)
{
Item_field *item_field= ((Item_field*) (*order->item)->real_item());
- Field *field= item_field->field;
int flag;
/*
Skip key parts that are constants in the WHERE clause.
These are already skipped in the ORDER BY by const_expression_in_where()
+ for top level queries.
*/
for (; const_key_parts & 1 ; const_key_parts>>= 1)
- key_part++;
-
+ {
+ if (item_field->contains(key_part->field))
+ {
+ /* Subquery with ORDER BY, continue with next field */
+ goto next_order_field;
+ }
+ key_part++;
+ }
+
/*
This check was in this function historically (although I think it's
better to check it outside of this function):
@@ -24800,36 +26097,27 @@ static int test_if_order_by_key(JOIN *join,
goto ok;
}
- if (key_part == key_part_end)
+ if (key_part == key_part_end ||
+ !key_part->field->part_of_sortkey.is_set(idx))
{
/*
- There are some items left in ORDER BY that we don't
+ There are some items left in ORDER BY that we don't have in the key
*/
DBUG_RETURN(0);
}
- if (key_part->field != field)
- {
- /*
- Check if there is a multiple equality that allows to infer that field
- and key_part->field are equal
- (see also: compute_part_of_sort_key_for_equals)
- */
- if (item_field->item_equal &&
- item_field->item_equal->contains(key_part->field))
- field= key_part->field;
- }
- if (key_part->field != field || !field->part_of_sortkey.is_set(idx))
+ if (!item_field->contains(key_part->field))
DBUG_RETURN(0);
- const ORDER::enum_order keypart_order=
- (key_part->key_part_flag & HA_REVERSE_SORT) ?
- ORDER::ORDER_DESC : ORDER::ORDER_ASC;
+ keypart_order= ((key_part->key_part_flag & HA_REVERSE_SORT) ?
+ ORDER::ORDER_DESC : ORDER::ORDER_ASC);
/* set flag to 1 if we can use read-next on key, else to -1 */
flag= (order->direction == keypart_order) ? 1 : -1;
if (reverse && flag != reverse)
DBUG_RETURN(0);
reverse=flag; // Remember if reverse
+
+next_order_field:
if (key_part < key_part_end)
key_part++;
}
@@ -24862,31 +26150,40 @@ ok:
@return
MAX_KEY no suitable key found
key index otherwise
+
+ @notes
+ We should not use keyread_time() as in the case of disk_read_cost= 0
+ all keys would be regarded equal.
*/
uint find_shortest_key(TABLE *table, const key_map *usable_keys)
{
- double min_cost= DBL_MAX;
+ size_t min_length= INT_MAX32;
uint best= MAX_KEY;
- if (!usable_keys->is_clear_all())
+ uint possible_keys= usable_keys->bits_set();
+
+ if (possible_keys)
{
+ if (possible_keys == 1)
+ return usable_keys->find_first_bit();
+
for (uint nr=0; nr < table->s->keys ; nr++)
{
if (usable_keys->is_set(nr))
{
- double cost= table->file->keyread_time(nr, 1, table->file->records());
- if (cost < min_cost)
+ size_t length= table->key_storage_length(nr);
+ if (length < min_length)
{
- min_cost= cost;
- best=nr;
+ min_length= length;
+ best= nr;
}
- DBUG_ASSERT(best < MAX_KEY);
}
}
}
return best;
}
+
/**
Test if a second key is the subkey of the first one.
@@ -25277,7 +26574,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
quick_type == QUICK_SELECT_I::QS_TYPE_ROR_INTERSECT)
{
/*
- we set ref_key=MAX_KEY instead of -1, because test_if_cheaper ordering
+ we set ref_key=MAX_KEY instead of -1, because test_if_cheaper_ordering()
assumes that "ref_key==-1" means doing full index scan.
(This is not very straightforward and we got into this situation for
historical reasons. Should be fixed at some point).
@@ -25367,7 +26664,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
select->cond= save_cond;
goto use_filesort;
}
- tab->type= JT_ALL;
+ tab->type= JT_RANGE;
tab->ref.key= -1;
tab->ref.key_parts= 0;
tab->use_quick= 1;
@@ -25430,13 +26727,12 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
*/
if (best_key < 0 ||
((select_limit >= table_records) &&
- (tab->type == JT_ALL &&
+ ((tab->type == JT_ALL || tab->type == JT_RANGE) &&
tab->join->table_count > tab->join->const_tables + 1) &&
- !(table->file->index_flags(best_key, 0, 1) & HA_CLUSTERED_INDEX)))
+ !table->is_clustering_key(best_key)))
goto use_filesort;
- if (select && // psergey: why doesn't this use a quick?
- table->opt_range_keys.is_set(best_key) && best_key != ref_key)
+ if (select && table->opt_range_keys.is_set(best_key) && best_key != ref_key)
{
key_map tmp_map;
tmp_map.clear_all(); // Force the creation of quick select
@@ -25476,10 +26772,10 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
}
order_direction= best_key_direction;
/*
- saved_best_key_parts is actual number of used keyparts found by the
- test_if_order_by_key function. It could differ from keyinfo->user_defined_key_parts,
- thus we have to restore it in case of desc order as it affects
- QUICK_SELECT_DESC behaviour.
+ saved_best_key_parts is actual number of used keyparts found by
+ the test_if_order_by_key function. It could differ from
+ keyinfo->user_defined_key_parts, thus we have to restore it in
+ case of desc order as it affects QUICK_SELECT_DESC behaviour.
*/
used_key_parts= (order_direction == -1) ?
saved_best_key_parts : best_key_parts;
@@ -25531,8 +26827,9 @@ check_reverse_order:
select->quick= 0; // Cleanup either reset to save_quick,
// or 'delete save_quick'
tab->index= best_key;
- tab->read_first_record= order_direction > 0 ?
- join_read_first:join_read_last;
+ tab->read_first_record= (order_direction > 0 ?
+ join_read_first:
+ join_read_last);
tab->type=JT_NEXT; // Read with index_first(), index_next()
/*
@@ -25540,12 +26837,9 @@ check_reverse_order:
if the table is accessed by the primary key
*/
if (tab->rowid_filter &&
- table->file->is_clustering_key(tab->index))
- {
- tab->range_rowid_filter_info= 0;
- delete tab->rowid_filter;
- tab->rowid_filter= 0;
- }
+ (table->file->is_clustering_key(tab->index) ||
+ table->covering_keys.is_set(best_key)))
+ tab->clear_range_rowid_filter();
if (tab->pre_idx_push_select_cond)
{
@@ -25575,16 +26869,12 @@ check_reverse_order:
method is actually used.
*/
DBUG_ASSERT(tab->select->quick);
- tab->type=JT_ALL;
+ tab->type= JT_RANGE;
tab->use_quick=1;
tab->ref.key= -1;
tab->ref.key_parts=0; // Don't use ref key.
- tab->range_rowid_filter_info= 0;
if (tab->rowid_filter)
- {
- delete tab->rowid_filter;
- tab->rowid_filter= 0;
- }
+ tab->clear_range_rowid_filter();
tab->read_first_record= join_init_read_record;
if (tab->is_using_loose_index_scan())
tab->join->tmp_table_param.precomputed_group_by= TRUE;
@@ -25792,6 +27082,7 @@ create_sort_index(THD *thd, JOIN *join, JOIN_TAB *tab, Filesort *fsort)
}
else
{
+ fsort->own_select= false;
DBUG_ASSERT(tab->type == JT_REF || tab->type == JT_EQ_REF);
// Update ref value
if (unlikely(cp_buffer_from_ref(thd, table, &tab->ref) &&
@@ -25817,7 +27108,6 @@ create_sort_index(THD *thd, JOIN *join, JOIN_TAB *tab, Filesort *fsort)
{
tab->records= join->select_options & OPTION_FOUND_ROWS ?
file_sort->found_rows : file_sort->return_rows;
- tab->join->join_examined_rows+= file_sort->examined_rows;
}
if (quick_created)
@@ -27527,6 +28817,17 @@ change_to_use_tmp_fields(THD *thd, Ref_ptr_array ref_pointer_array,
for (uint i= 0; (item= it++); i++)
{
Field *field;
+ /*
+ SUM_FUNC_ITEM will be replaced by the calculated value which is
+ stored in the temporary table.
+ The first part of the following test is for items that are expressions
+ with SUM_FUNC_ITEMS, like 'sum(a)+1'. In this case we keep the original
+ item, which contain an Item_ref that points to the SUM_FUNC_ITEM that
+ will be replaced with a pointer to the calculated value.
+ The second test is for window functions. Window functions contains
+ only pointers to Item_refs, which will be adjusted to point to the
+ temporary table.
+ */
enum Item::Type item_type= item->type();
if ((item->with_sum_func() && item_type != Item::SUM_FUNC_ITEM) ||
item->with_window_func())
@@ -28573,7 +29874,7 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
table_map prefix_tables,
bool distinct_arg, JOIN_TAB *first_top_tab)
{
- int quick_type;
+ int quick_type= -1;
CHARSET_INFO *cs= system_charset_info;
THD *thd= join->thd;
TABLE_LIST *table_list= table->pos_in_table_list;
@@ -28581,12 +29882,22 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
my_bool key_read;
char table_name_buffer[SAFE_NAME_LEN];
KEY *key_info= 0;
- uint key_len= 0;
- quick_type= -1;
+ uint key_len= 0, used_index= MAX_KEY;
+
+#ifdef NOT_YET
+ /*
+ Would be good to keep this condition up to date.
+ Another alternative is to remove JOIN_TAB::cond_selectivity and use
+ TABLE::cond_selectivity everywhere
+ */
+ DBUG_ASSERT(cond_selectivity == table->cond_selectivity);
+#endif
explain_plan= eta;
eta->key.clear();
eta->quick_info= NULL;
+ eta->cost= join_read_time;
+ eta->loops= join_loops;
/*
We assume that if this table does pre-sorting, then it doesn't do filtering
@@ -28700,7 +30011,7 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
/* "type" column */
enum join_type tab_type= type;
- if ((type == JT_ALL || type == JT_HASH) &&
+ if ((type == JT_ALL || type == JT_RANGE || type == JT_HASH) &&
tab_select && tab_select->quick && use_quick != 2)
{
cur_quick= tab_select->quick;
@@ -28709,9 +30020,9 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
(quick_type == QUICK_SELECT_I::QS_TYPE_INDEX_INTERSECT) ||
(quick_type == QUICK_SELECT_I::QS_TYPE_ROR_INTERSECT) ||
(quick_type == QUICK_SELECT_I::QS_TYPE_ROR_UNION))
- tab_type= type == JT_ALL ? JT_INDEX_MERGE : JT_HASH_INDEX_MERGE;
+ tab_type= type == JT_HASH ? JT_HASH_INDEX_MERGE : JT_INDEX_MERGE;
else
- tab_type= type == JT_ALL ? JT_RANGE : JT_HASH_RANGE;
+ tab_type= type == JT_HASH ? JT_HASH_RANGE : JT_RANGE;
}
eta->type= tab_type;
@@ -28742,11 +30053,13 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
if (tab_type == JT_NEXT)
{
+ used_index= index;
key_info= table->key_info+index;
key_len= key_info->key_length;
}
else if (ref.key_parts)
{
+ used_index= ref.key;
key_info= get_keyinfo_by_key_no(ref.key);
key_len= ref.key_length;
}
@@ -28796,6 +30109,7 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
if (tab_type == JT_HASH_NEXT) /* full index scan + hash join */
{
+ used_index= index;
eta->hash_next_key.set(thd->mem_root,
& table->key_info[index],
table->key_info[index].key_length);
@@ -28846,30 +30160,26 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
}
else
{
- ha_rows examined_rows= get_examined_rows();
+ double examined_rows= get_examined_rows();
eta->rows_set= true;
- eta->rows= examined_rows;
+ eta->rows= double_to_rows(examined_rows);
/* "filtered" */
float f= 0.0;
if (examined_rows)
{
- double pushdown_cond_selectivity= cond_selectivity;
- if (pushdown_cond_selectivity == 1.0)
- f= (float) (100.0 * records_read / examined_rows);
- else
- f= (float) (100.0 * pushdown_cond_selectivity);
+ f= (float) (100.0 * records_out / examined_rows);
+ set_if_smaller(f, 100.0);
}
- set_if_smaller(f, 100.0);
eta->filtered_set= true;
eta->filtered= f;
}
/* Build "Extra" field and save it */
key_read= table->file->keyread_enabled();
- if ((tab_type == JT_NEXT || tab_type == JT_CONST) &&
- table->covering_keys.is_set(index))
+ if ((tab_type == JT_NEXT || tab_type == JT_CONST) && used_index != MAX_KEY &&
+ table->covering_keys.is_set(used_index))
key_read=1;
if (quick_type == QUICK_SELECT_I::QS_TYPE_ROR_INTERSECT &&
!((QUICK_ROR_INTERSECT_SELECT*)cur_quick)->need_to_fetch_row)
@@ -29217,6 +30527,7 @@ int JOIN::save_explain_data_intern(Explain_query *output,
table_map used_tables=0;
join->select_lex->set_explain_type(true);
+ xpl_sel->cost= best_read;
xpl_sel->select_id= join->select_lex->select_number;
xpl_sel->select_type= join->select_lex->type;
xpl_sel->linkage= select_lex->get_linkage();
@@ -29255,7 +30566,6 @@ int JOIN::save_explain_data_intern(Explain_query *output,
continue;
}
-
Explain_table_access *eta= (new (output->mem_root)
Explain_table_access(output->mem_root,
thd->lex->analyze_stmt));
@@ -29390,7 +30700,6 @@ bool mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result)
DBUG_ENTER("mysql_explain_union");
bool res= 0;
SELECT_LEX *first= unit->first_select();
- bool is_pushed_union= unit->derived && unit->derived->pushdown_derived;
for (SELECT_LEX *sl= first; sl; sl= sl->next_select())
{
@@ -29412,6 +30721,17 @@ bool mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result)
if (!(res= unit->prepare(unit->derived, result,
SELECT_NO_UNLOCK | SELECT_DESCRIBE)))
{
+ bool is_pushed_union=
+ (unit->derived && unit->derived->pushdown_derived) ||
+ unit->pushdown_unit;
+ if (unit->pushdown_unit)
+ {
+ create_explain_query_if_not_exists(thd->lex, thd->mem_root);
+ if (!unit->executed)
+ unit->save_union_explain(thd->lex->explain);
+ List<Item> items;
+ result->prepare(items, unit);
+ }
if (!is_pushed_union)
res= unit->exec();
}
@@ -29765,21 +31085,9 @@ void TABLE_LIST::print(THD *thd, table_map eliminated_tables, String *str,
if (my_strcasecmp(table_alias_charset, cmp_name, alias.str))
{
- char t_alias_buff[MAX_ALIAS_NAME];
- LEX_CSTRING t_alias= alias;
-
str->append(' ');
- if (lower_case_table_names == 1)
- {
- if (alias.str && alias.str[0])
- {
- strmov(t_alias_buff, alias.str);
- t_alias.length= my_casedn_str(files_charset_info, t_alias_buff);
- t_alias.str= t_alias_buff;
- }
- }
-
- append_identifier(thd, str, &t_alias);
+ append_identifier_opt_casedn(thd, str, alias,
+ lower_case_table_names == 1);
}
if (index_hints)
@@ -29971,7 +31279,7 @@ void st_select_lex::print(THD *thd, String *str, enum_query_type query_type)
bool top_level= is_query_topmost(thd);
enum explainable_cmd_type sel_type= SELECT_CMD;
- if (top_level)
+ if (top_level && !(query_type & QT_SELECT_ONLY))
sel_type= get_explainable_cmd_type(thd);
if (sel_type == INSERT_CMD || sel_type == REPLACE_CMD)
@@ -30396,8 +31704,8 @@ void JOIN::restore_query_plan(Join_plan_state *restore_from)
@param added_where An extra conjunct to the WHERE clause to reoptimize with
@param join_tables The set of tables to reoptimize
- @param save_to If != NULL, save here the state of the current query plan,
- otherwise reuse the existing query plan structures.
+ @param save_to If != NULL, save here the state of the current query
+ plan, otherwise reuse the existing query plan structures.
@notes
Given a query plan that was already optimized taking into account some WHERE
@@ -30414,7 +31722,8 @@ void JOIN::restore_query_plan(Join_plan_state *restore_from)
@retval REOPT_NEW_PLAN there is a new plan.
@retval REOPT_OLD_PLAN no new improved plan was produced, use the old one.
- @retval REOPT_ERROR an irrecovarable error occurred during reoptimization.
+ @retval REOPT_ERROR an irrecovarable error occurred during
+ reoptimization.
*/
JOIN::enum_reopt_result
@@ -30426,8 +31735,8 @@ JOIN::reoptimize(Item *added_where, table_map join_tables,
size_t org_keyuse_elements;
/* Re-run the REF optimizer to take into account the new conditions. */
- if (update_ref_and_keys(thd, &added_keyuse, join_tab, table_count, added_where,
- ~outer_join, select_lex, &sargables))
+ if (update_ref_and_keys(thd, &added_keyuse, join_tab, table_count,
+ added_where, ~outer_join, select_lex, &sargables))
{
delete_dynamic(&added_keyuse);
return REOPT_ERROR;
@@ -30481,7 +31790,7 @@ JOIN::reoptimize(Item *added_where, table_map join_tables,
return REOPT_ERROR;
/* Re-run the join optimizer to compute a new query plan. */
- if (choose_plan(this, join_tables))
+ if (choose_plan(this, join_tables, 0))
return REOPT_ERROR;
return REOPT_NEW_PLAN;
@@ -30523,139 +31832,132 @@ void JOIN::cache_const_exprs()
/*
- Get the cost of using index keynr to read #LIMIT matching rows
+ Get the cost of using index keynr to read #LIMIT matching rows by calling
+ ha_index_next() repeatedly (either with index scan, quick or 'ref')
@detail
- If there is a quick select, we try to use it.
- - if there is a ref(const) access, we try to use it, too.
- - quick and ref(const) use different cost formulas, so if both are possible
- we should make a cost-based choice.
-
- rows_limit is the number of rows we would need to read when using a full
- index scan. This is generally higher than the N from "LIMIT N" clause,
- because there's a WHERE condition (a part of which is used to construct a
- range access we are considering using here)
+ - If there is no quick select return the full cost from
+ cost_for_index_read() (Doing a full scan with up to 'limit' records)
+
+ @param pos Result from best_access_path(). Is NULL for
+ single-table UPDATE/DELETE
+ @param table Table to be sorted
+ @param keynr Which index to use
+ @param rows_limit How many rows we want to read.
+ This may be different than what was in the original
+ LIMIT the caller has included fanouts and extra
+ rows needed for handling GROUP BY.
+ @param rows_to_scan Number of rows to scan if there is no range.
+ @param read_cost Full cost, including cost of WHERE.
+ @param read_rows Number of rows that needs to be read
- @param tab JOIN_TAB with table access (is NULL for single-table
- UPDATE/DELETE)
- @param rows_limit See explanation above
- @param read_time OUT Cost of reading using quick or ref(const) access.
+ @return
+ 0 No possible range scan, cost is for index scan
+ 1 Range scan should be used
+ For the moment we don't take selectivity of the WHERE clause into
+ account when calculating the number of rows we have to read
+ (except what we get from quick select).
- @return
- true There was a possible quick or ref access, its cost is in the OUT
- parameters.
- false No quick or ref(const) possible (and so, the caller will attempt
- to use a full index scan on this index).
+ The cost is calculated the following way:
+ (The selectivity is there to take into account the increased number of
+ rows that we have to read to find LIMIT matching rows)
*/
-static bool get_range_limit_read_cost(const JOIN_TAB *tab,
- const TABLE *table,
- ha_rows table_records,
+static bool get_range_limit_read_cost(const POSITION *pos,
+ const TABLE *table,
uint keynr,
- ha_rows rows_limit,
- double *read_time)
+ ha_rows rows_limit_arg,
+ ha_rows rows_to_scan,
+ double *read_cost,
+ double *read_rows)
{
- bool res= false;
- /*
- We need to adjust the estimates if we had a quick select (or ref(const)) on
- index keynr.
- */
+ double rows_limit= rows2double(rows_limit_arg);
if (table->opt_range_keys.is_set(keynr))
{
/*
Start from quick select's rows and cost. These are always cheaper than
full index scan/cost.
*/
- double best_rows= (double) table->opt_range[keynr].rows;
- double best_cost= (double) table->opt_range[keynr].cost;
-
- /*
- Check if ref(const) access was possible on this index.
- */
- if (tab)
- {
- key_part_map map= 1;
- uint kp;
- /* Find how many key parts would be used by ref(const) */
- for (kp=0; kp < MAX_REF_PARTS; map=map << 1, kp++)
- {
- if (!(table->const_key_parts[keynr] & map))
- break;
- }
-
- if (kp > 0)
- {
- ha_rows ref_rows;
- /*
- Two possible cases:
- 1. ref(const) uses the same #key parts as range access.
- 2. ref(const) uses fewer key parts, becasue there is a
- range_cond(key_part+1).
- */
- if (kp == table->opt_range[keynr].key_parts)
- ref_rows= table->opt_range[keynr].rows;
- else
- ref_rows= (ha_rows) table->key_info[keynr].actual_rec_per_key(kp-1);
-
- if (ref_rows > 0)
- {
- double tmp= cost_for_index_read(tab->join->thd, table, keynr,
- ref_rows,
- (ha_rows) tab->worst_seeks);
- if (tmp < best_cost)
- {
- best_cost= tmp;
- best_rows= (double)ref_rows;
- }
- }
- }
- }
+ double best_rows, range_rows;
+ double range_cost= (double) table->opt_range[keynr].cost.fetch_cost();
+ best_rows= range_rows= (double) table->opt_range[keynr].rows;
- /*
- Consider an example:
-
- SELECT *
- FROM t1
- WHERE key1 BETWEEN 10 AND 20 AND col2='foo'
- ORDER BY key1 LIMIT 10
+ if (pos)
+ {
+ double cond_selectivity;
+ /*
+ Take into count table selectivity as the number of accepted
+ rows for this table will be 'records_out'.
- If we were using a full index scan on key1, we would need to read this
- many rows to get 10 matches:
+ For example:
+ key1 BETWEEN 10 AND 1000 AND key2 BETWEEN 10 AND 20
- 10 / selectivity(key1 BETWEEN 10 AND 20 AND col2='foo')
+ If we are trying to do an ORDER BY on key1, we have to take into
+ account that using key2 we have to examine much fewer rows.
+ */
+ best_rows= pos->records_out; // Best rows with any key/keys
+ /*
+ We assign "double range_rows" from integer #rows a few lines above
+ so comparison with 0.0 makes sense
+ */
+ if (range_rows > 0.0)
+ cond_selectivity= best_rows / range_rows;
+ else
+ cond_selectivity= 1.0;
- This is the number we get in rows_limit.
- But we intend to use range access on key1. The rows returned by quick
- select will satisfy the range part of the condition,
- "key1 BETWEEN 10 and 20". We will still need to filter them with
- the remainder condition, (col2='foo').
+ DBUG_ASSERT(cond_selectivity <= 1.000000001);
+ set_if_smaller(cond_selectivity, 1.0);
- The selectivity of the range access is (best_rows/table_records). We need
- to discount it from the rows_limit:
- */
- double rows_limit_for_quick= rows_limit * (best_rows / table_records);
+ /*
+ We have to examine more rows in the proportion to the selectivity of the
+ the table
+ */
+ rows_limit= rows_limit / cond_selectivity;
+ }
- if (best_rows > rows_limit_for_quick)
+ if (best_rows > rows_limit)
{
/*
LIMIT clause specifies that we will need to read fewer records than
quick select will return. Assume that quick select's cost is
- proportional to the number of records we need to return (e.g. if we
+ proportional to the number of records we need to return (e.g. if we
only need 1/3rd of records, it will cost us 1/3rd of quick select's
read time)
*/
- best_cost *= rows_limit_for_quick / best_rows;
+ range_cost*= rows_limit / best_rows;
+ range_rows= rows_limit;
}
- *read_time= best_cost;
- res= true;
+ *read_cost= range_cost + range_rows * WHERE_COST_THD(table->in_use);
+ *read_rows= range_rows;
+ return 1;
}
- return res;
+
+ /*
+ Calculate the number of rows we have to check if we are
+ doing a full index scan (as a suitable range scan was not available).
+
+ We assume that each of the tested indexes is not correlated
+ with ref_key. Thus, to select first N records we have to scan
+ N/selectivity(ref_key) index entries.
+ selectivity(ref_key) = #scanned_records/#table_records =
+ refkey_rows_estimate/table_records.
+ In any case we can't select more than #table_records.
+ N/(refkey_rows_estimate/table_records) > table_records
+ <=> N > refkey_rows_estimate.
+ */
+ ALL_READ_COST cost= cost_for_index_read(table->in_use, table, keynr,
+ rows_to_scan, 0);
+ *read_cost= (table->file->cost(&cost) +
+ rows_to_scan * WHERE_COST_THD(table->in_use));
+ *read_rows= rows2double(rows_to_scan);
+ return 0;
}
/**
- Find a cheaper access key than a given @a key
+ Find a cheaper access key than a given key
@param tab NULL or JOIN_TAB of the accessed table
@param order Linked list of ORDER BY arguments
@@ -30672,7 +31974,8 @@ static bool get_range_limit_read_cost(const JOIN_TAB *tab,
@param [out] new_key Key number if success, otherwise undefined
@param [out] new_key_direction Return -1 (reverse) or +1 if success,
otherwise undefined
- @param [out] new_select_limit Return adjusted LIMIT
+ @param [out] new_select_limit Estimate of the number of rows we have
+ to read find 'select_limit' rows.
@param [out] new_used_key_parts NULL by default, otherwise return number
of new_key prefix columns if success
or undefined if the function fails
@@ -30682,7 +31985,8 @@ static bool get_range_limit_read_cost(const JOIN_TAB *tab,
@note
This function takes into account table->opt_range_condition_rows statistic
(that is calculated by the make_join_statistics function).
- However, single table procedures such as mysql_update() and mysql_delete()
+ However, single table procedures such as Sql_cmd_update:update_single_table()
+ and Sql_cmd_delete::delete_single_table()
never call make_join_statistics, so they have to update it manually
(@see get_index_for_order()).
*/
@@ -30703,26 +32007,41 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
It may be the case if ORDER/GROUP BY is used with LIMIT.
*/
ha_rows best_select_limit= HA_POS_ERROR;
- JOIN *join= tab ? tab->join : NULL;
+ JOIN *join;
uint nr;
key_map keys;
- uint best_key_parts= 0;
int best_key_direction= 0;
- ha_rows best_records= 0;
- double read_time, records;
+ double read_time, filesort_cost;
+ enum sort_type filesort_type;
int best_key= -1;
- bool is_best_covering= FALSE;
- double fanout= 1;
+ double fanout;
ha_rows table_records= table->stat_records();
- bool group= join && join->group && order == join->group_list;
- bool group_forces_index_usage= group;
- ha_rows refkey_rows_estimate= table->opt_range_condition_rows;
+ bool group;
const bool has_limit= (select_limit_arg != HA_POS_ERROR);
- THD* thd= join ? join->thd : table->in_use;
-
+ THD *thd= table->in_use;
+ POSITION *position;
+ ha_rows rows_estimate, refkey_rows_estimate;
Json_writer_object trace_wrapper(thd);
Json_writer_object trace_cheaper_ordering(
thd, "reconsidering_access_paths_for_index_ordering");
+
+ if (tab)
+ {
+ join= tab->join;
+ position= &join->best_positions[tab- join->join_tab];
+ group=join->group && order == join->group_list;
+ /* Take into account that records_out can be < 1.0 in case of GROUP BY */
+ rows_estimate= double_to_rows(position->records_out+0.5);
+ set_if_bigger(rows_estimate, 1);
+ refkey_rows_estimate= rows_estimate;
+ }
+ else
+ {
+ join= NULL;
+ position= 0;
+ refkey_rows_estimate= rows_estimate= table_records;
+ group= 0;
+ }
trace_cheaper_ordering.add("clause", group ? "GROUP BY" : "ORDER BY");
/*
@@ -30748,42 +32067,32 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
else
keys= usable_keys;
- if (join)
+
+ if (join) // True if SELECT
{
- uint tablenr= (uint)(tab - join->join_tab);
- read_time= join->best_positions[tablenr].read_time;
- records= join->best_positions[tablenr].records_read;
- for (uint i= tablenr+1; i < join->table_count; i++)
+ uint nr= (uint) (tab - join->join_tab);
+ fanout= 1.0;
+ if (nr != join->table_count - 1) // If not last table
+ fanout= (join->join_record_count / position->records_out);
+ else
{
- fanout*= join->best_positions[i].records_read; // fanout is always >= 1
- // But selectivity is =< 1 :
- fanout*= join->best_positions[i].cond_selectivity;
+ /* Only one table. Limit cannot be bigger than table_records */
+ set_if_smaller(select_limit_arg, table_records);
}
+ read_time= position->read_time;
}
else
{
- read_time= table->file->scan_time();
- records= rows2double(table_records);
- }
-
- if ((thd->variables.optimizer_adjust_secondary_key_costs &
- OPTIMIZER_ADJ_DISABLE_FORCE_INDEX_GROUP_BY) && group)
- {
- /*
- read_time does not include TIME_FOR_COMPARE while opt_range.cost, which
- is used by index_scan_time contains it.
- Ensure that read_time and index_scan_time always include it to make
- costs comparable.
- */
- read_time+= records/TIME_FOR_COMPARE;
+ /* Probably an update or delete. Assume we will do a full table scan */
+ fanout= 1.0;
+ read_time= table->file->cost(table->file->ha_scan_and_compare_time(rows_estimate));
+ set_if_smaller(select_limit_arg, table_records);
}
- trace_cheaper_ordering.add("fanout", fanout);
- /*
- TODO: add cost of sorting here.
- */
- read_time += COST_EPS;
- trace_cheaper_ordering.add("read_time", read_time);
+ filesort_cost= cost_of_filesort(table, order, rows_estimate,
+ select_limit_arg, &filesort_type);
+ read_time+= filesort_cost;
+
/*
Calculate the selectivity of the ref_key for REF_ACCESS. For
RANGE_ACCESS we use table->opt_range_condition_rows.
@@ -30808,18 +32117,35 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
set_if_bigger(refkey_rows_estimate, 1);
}
- if (tab)
- trace_cheaper_ordering.add_table_name(tab);
- else
- trace_cheaper_ordering.add_table_name(table);
- trace_cheaper_ordering.add("rows_estimation", refkey_rows_estimate);
+ if (unlikely(thd->trace_started()))
+ {
+ if (tab)
+ trace_cheaper_ordering.add_table_name(tab);
+ else
+ trace_cheaper_ordering.add_table_name(table);
+ trace_cheaper_ordering.
+ add("rows_estimation", rows_estimate).
+ add("filesort_cost", filesort_cost).
+ add("read_cost", read_time).
+ add("filesort_type", filesort_names[filesort_type].str).
+ add("fanout", fanout);
+ }
+
+ /*
+ Force using an index for sorting if there was no ref key
+ and FORCE INDEX was used.
+ */
+ if (table->force_index && ref_key < 0)
+ read_time= DBL_MAX;
Json_writer_array possible_keys(thd,"possible_keys");
for (nr=0; nr < table->s->keys ; nr++)
{
int direction;
ha_rows select_limit= select_limit_arg;
+ ha_rows estimated_rows_to_scan;
uint used_key_parts= 0;
+ double range_cost, range_rows;
Json_writer_object possible_key(thd);
possible_key.add("index", table->key_info[nr].name);
@@ -30837,9 +32163,8 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
possible_key.add("can_resolve_order", true);
possible_key.add("direction", direction);
bool is_covering= (table->covering_keys.is_set(nr) ||
- (table->file->index_flags(nr, 0, 1) &
- HA_CLUSTERED_INDEX));
- /*
+ table->is_clustering_key(nr));
+ /*
Don't use an index scan with ORDER BY without limit.
For GROUP BY without limit always use index scan
if there is a suitable index.
@@ -30849,14 +32174,11 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
queries too.
*/
if (is_covering ||
- select_limit != HA_POS_ERROR ||
+ has_limit ||
(ref_key < 0 && (group || table->force_index)))
{
double rec_per_key;
- double index_scan_time;
KEY *keyinfo= table->key_info+nr;
- if (select_limit == HA_POS_ERROR)
- select_limit= table_records;
if (group)
{
/*
@@ -30874,6 +32196,13 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
/* Take into account the selectivity of the used pk prefix */
if (used_pk_parts)
{
+ /*
+ TODO: This code need to be tested with debugger
+ - Why set rec_per_key to 1 if we don't have primary key data
+ or the full key is used ?
+ - If used_pk_parts == 1, we don't take into account that
+ the first primary key part could part of the current key.
+ */
KEY *pkinfo=tab->table->key_info+table->s->primary_key;
/*
If the values of of records per key for the prefixes
@@ -30905,7 +32234,7 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
rec_per_key/= pkinfo->actual_rec_per_key(i);
}
}
- }
+ }
}
set_if_bigger(rec_per_key, 1);
/*
@@ -30929,186 +32258,76 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
and as result we'll choose an index scan when using ref/range
access + filesort will be cheaper.
*/
- select_limit= (ha_rows) (select_limit < fanout ?
- 1 : select_limit/fanout);
-
- /*
- refkey_rows_estimate is E(#rows) produced by the table access
- strategy that was picked without regard to ORDER BY ... LIMIT.
-
- It will be used as the source of selectivity data.
- Use table->cond_selectivity as a better estimate which includes
- condition selectivity too.
- */
- {
- // we use MIN(...), because "Using LooseScan" queries have
- // cond_selectivity=1 while refkey_rows_estimate has a better
- // estimate.
- refkey_rows_estimate= MY_MIN(refkey_rows_estimate,
- ha_rows(table_records *
- table->cond_selectivity));
- }
-
- /*
- We assume that each of the tested indexes is not correlated
- with ref_key. Thus, to select first N records we have to scan
- N/selectivity(ref_key) index entries.
- selectivity(ref_key) = #scanned_records/#table_records =
- refkey_rows_estimate/table_records.
- In any case we can't select more than #table_records.
- N/(refkey_rows_estimate/table_records) > table_records
- <=> N > refkey_rows_estimate.
- */
+ select_limit= double_to_rows(select_limit/fanout);
+ set_if_bigger(select_limit, 1);
if (select_limit > refkey_rows_estimate)
- select_limit= table_records;
- else
- select_limit= (ha_rows) (select_limit *
- (double) table_records /
- refkey_rows_estimate);
- possible_key.add("updated_limit", select_limit);
- rec_per_key= keyinfo->actual_rec_per_key(keyinfo->user_defined_key_parts-1);
- set_if_bigger(rec_per_key, 1);
-
- if ((thd->variables.optimizer_adjust_secondary_key_costs &
- OPTIMIZER_ADJ_DISABLE_FORCE_INDEX_GROUP_BY) && group)
- {
- /* Special optimization to avoid forcing an index when group by is used */
- group_forces_index_usage= 0;
-
- if (table->opt_range_keys.is_set(nr))
- {
- /* opt_range includes TIME_FOR_COMPARE */
- index_scan_time= (double) table->opt_range[nr].cost;
- }
- else
- {
- /* Enable secondary_key_cost and disable max_seek option */
- ulonglong save= thd->variables.optimizer_adjust_secondary_key_costs;
- thd->variables.optimizer_adjust_secondary_key_costs|=
- OPTIMIZER_ADJ_SEC_KEY_COST | OPTIMIZER_ADJ_DISABLE_MAX_SEEKS;
-
- index_scan_time= cost_for_index_read(thd, table, nr,
- table_records, HA_ROWS_MAX);
- index_scan_time+= rows2double(table_records) / TIME_FOR_COMPARE;
- thd->variables.optimizer_adjust_secondary_key_costs= save;
- }
- /* Assume data is proportionalyl distributed */
- index_scan_time*= MY_MIN(select_limit, rec_per_key) / rec_per_key;
- }
+ estimated_rows_to_scan= table_records;
else
+ estimated_rows_to_scan= (ha_rows) (select_limit *
+ (double) table_records /
+ (double) refkey_rows_estimate);
+
+ bool range_scan= get_range_limit_read_cost(tab ? position : 0,
+ table,
+ nr,
+ select_limit,
+ estimated_rows_to_scan,
+ &range_cost,
+ &range_rows);
+ if (unlikely(possible_key.trace_started()))
{
- /*
- Here we take into account the fact that rows are
- accessed in sequences rec_per_key records in each.
- Rows in such a sequence are supposed to be ordered
- by rowid/primary key. When reading the data
- in a sequence we'll touch not more pages than the
- table file contains.
- TODO. Use the formula for a disk sweep sequential access
- to calculate the cost of accessing data rows for one
- index entry.
- */
- index_scan_time= select_limit/rec_per_key *
- MY_MIN(rec_per_key, table->file->scan_time());
-
- double range_scan_time;
- if (get_range_limit_read_cost(tab, table, table_records, nr,
- select_limit, &range_scan_time))
- {
- possible_key.add("range_scan_time", range_scan_time);
- if (range_scan_time < index_scan_time)
- index_scan_time= range_scan_time;
- }
+ possible_key
+ .add("rows_to_examine", range_rows)
+ .add("range_scan", range_scan)
+ .add("scan_cost", range_cost);
}
- possible_key.add("index_scan_time", index_scan_time);
- if ((ref_key < 0 &&
- (group_forces_index_usage || table->force_index || is_covering)) ||
- index_scan_time < read_time)
+ /*
+ We will try use the key if:
+ - If there is no ref key and no usable keys has yet been found and
+ there is either a group by or a FORCE_INDEX
+ - If the new cost is better than read_time
+ */
+ if (range_cost < read_time)
{
- ha_rows quick_records= table_records;
- ha_rows refkey_select_limit= (ref_key >= 0 &&
- !is_hash_join_key_no(ref_key) &&
- table->covering_keys.is_set(ref_key)) ?
- refkey_rows_estimate :
- HA_POS_ERROR;
- if (is_best_covering && !is_covering)
- {
- possible_key.add("chosen", false);
- possible_key.add("cause", "covering index already found");
- continue;
- }
-
- if (is_covering && refkey_select_limit < select_limit)
- {
- possible_key.add("chosen", false);
- possible_key.add("cause", "ref estimates better");
- continue;
- }
-
- if (table->opt_range_keys.is_set(nr))
- quick_records= table->opt_range[nr].rows;
- possible_key.add("records", quick_records);
- if (best_key < 0 ||
- (select_limit <= MY_MIN(quick_records,best_records) ?
- keyinfo->user_defined_key_parts < best_key_parts :
- quick_records < best_records) ||
- (!is_best_covering && is_covering))
- {
- possible_key.add("chosen", true);
- best_key= nr;
- best_key_parts= keyinfo->user_defined_key_parts;
- if (saved_best_key_parts)
- *saved_best_key_parts= used_key_parts;
- best_records= quick_records;
- is_best_covering= is_covering;
- best_key_direction= direction;
- best_select_limit= select_limit;
- if ((thd->variables.optimizer_adjust_secondary_key_costs &
- OPTIMIZER_ADJ_DISABLE_FORCE_INDEX_GROUP_BY) && group)
- set_if_smaller(read_time, index_scan_time);
- }
- else
- {
- char const *cause;
- possible_key.add("chosen", false);
- if (is_covering)
- cause= "covering index already found";
- else
- {
- if (select_limit <= MY_MIN(quick_records,best_records))
- cause= "keyparts greater than the current best keyparts";
- else
- cause= "rows estimation greater";
- }
- possible_key.add("cause", cause);
- }
+ read_time= range_cost;
+ possible_key.add("chosen", true);
+ best_key= nr;
+ if (saved_best_key_parts)
+ *saved_best_key_parts= used_key_parts;
+ if (new_used_key_parts)
+ *new_used_key_parts= keyinfo->user_defined_key_parts;
+ best_key_direction= direction;
+ best_select_limit= estimated_rows_to_scan;
}
- else
+ else if (unlikely(possible_key.trace_started()))
{
- possible_key.add("usable", false);
- possible_key.add("cause", "cost");
+ possible_key
+ .add("usable", false)
+ .add("cause", "cost");
}
}
- else
+ else if (unlikely(possible_key.trace_started()))
{
possible_key.add("usable", false);
if (!group && select_limit == HA_POS_ERROR)
possible_key.add("cause", "order by without limit");
}
}
- else
+ else if (unlikely(possible_key.trace_started()))
{
if (keys.is_set(nr))
{
- possible_key.add("can_resolve_order", false);
- possible_key.add("cause", "order can not be resolved by key");
+ possible_key.
+ add("can_resolve_order", false).
+ add("cause", "order can not be resolved by key");
}
else
{
- possible_key.add("can_resolve_order", false);
- possible_key.add("cause", "not usable index for the query");
+ possible_key.
+ add("can_resolve_order", false).
+ add("cause", "not usable index for the query");
}
}
}
@@ -31119,8 +32338,6 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
*new_key= best_key;
*new_key_direction= best_key_direction;
*new_select_limit= has_limit ? best_select_limit : table_records;
- if (new_used_key_parts != NULL)
- *new_used_key_parts= best_key_parts;
DBUG_RETURN(TRUE);
}
@@ -31160,7 +32377,7 @@ uint get_index_for_order(ORDER *order, TABLE *table, SQL_SELECT *select,
if (select && select->quick)
return select->quick->index; // index or MAX_KEY, use quick select as is
else
- return table->file->key_used_on_scan; // MAX_KEY or index for some engines
+ return table->file->key_used_on_scan; // MAX_KEY or index for some engine
}
if (!is_simple_order(order)) // just to cut further expensive checks
@@ -31208,7 +32425,8 @@ uint get_index_for_order(ORDER *order, TABLE *table, SQL_SELECT *select,
DBUG_ASSERT(0);
}
else if (limit != HA_POS_ERROR)
- { // check if some index scan & LIMIT is more efficient than filesort
+ {
+ // check if some index scan & LIMIT is more efficient than filesort
/*
Update opt_range_condition_rows since single table UPDATE/DELETE
@@ -31789,20 +33007,22 @@ bool build_notnull_conds_for_range_scans(JOIN *join, Item *cond,
@brief
Build not null conditions for inner nest tables of an outer join
- @param join the join for whose table nest not null conditions are to be built
+ @param join the join for whose table nest not null conditions are to be
+ built
@param nest_tbl the nest of the inner tables of an outer join
@details
- The function assumes that nest_tbl is the nest of the inner tables of an
- outer join and so an ON expression for this outer join is attached to
- nest_tbl.
- The function selects the tables of the nest_tbl that are not inner tables of
- embedded outer joins and then it calls build_notnull_conds_for_range_scans()
- for nest_tbl->on_expr and the bitmap for the selected tables. This call
- finds all fields belonging to the selected tables whose null-rejectedness
- can be inferred from the null-rejectedness of nest_tbl->on_expr. After this
- the function recursively finds all null_rejected fields for the remaining
- tables from the nest of nest_tbl.
+ The function assumes that nest_tbl is the nest of the inner tables
+ of an outer join and so an ON expression for this outer join is
+ attached to nest_tbl.
+ The function selects the tables of the nest_tbl that are not inner
+ tables of embedded outer joins and then it calls
+ build_notnull_conds_for_range_scans() for nest_tbl->on_expr and
+ the bitmap for the selected tables. This call finds all fields
+ belonging to the selected tables whose null-rejectedness can be
+ inferred from the null-rejectedness of nest_tbl->on_expr. After
+ this the function recursively finds all null_rejected fields for
+ the remaining tables from the nest of nest_tbl.
*/
static
@@ -31868,6 +33088,7 @@ void JOIN::init_join_cache_and_keyread()
break;
case JT_HASH:
case JT_ALL:
+ case JT_RANGE:
SQL_SELECT *select;
select= tab->select ? tab->select :
(tab->filesort ? tab->filesort->select : NULL);
@@ -31892,7 +33113,8 @@ void JOIN::init_join_cache_and_keyread()
/* purecov: end */
}
- if (table->file->keyread_enabled())
+ if (table->file->keyread_enabled() &&
+ !table->is_clustering_key(table->file->keyread))
{
/*
Here we set the read_set bitmap for all covering keys
@@ -31927,8 +33149,7 @@ void JOIN::init_join_cache_and_keyread()
c, which is not a problem as we read all the columns from the index
tuple.
*/
- if (!(table->file->index_flags(table->file->keyread, 0, 1) & HA_CLUSTERED_INDEX))
- table->mark_index_columns(table->file->keyread, table->read_set);
+ table->mark_index_columns(table->file->keyread, table->read_set);
}
bool init_for_explain= false;
@@ -32222,6 +33443,20 @@ bool JOIN::transform_in_predicates_into_equalities(THD *thd)
/**
@brief
+ Rewrite datetime comparison conditions into sargable.
+ See details in the description for class Date_cmp_func_rewriter
+*/
+
+bool JOIN::transform_date_conds_into_sargable()
+{
+ DBUG_ENTER("JOIN::transform_date_conds_into_sargable");
+ DBUG_RETURN(transform_all_conds_and_on_exprs(
+ thd, &Item::date_conds_transformer));
+}
+
+
+/**
+ @brief
Transform all items in WHERE and ON expressions using a given transformer
@param thd The context of the statement
@@ -32280,6 +33515,272 @@ bool JOIN::transform_all_conds_and_on_exprs_in_join_list(
}
+static void MYSQL_DML_START(THD *thd)
+{
+ switch (thd->lex->sql_command) {
+
+ case SQLCOM_UPDATE:
+ MYSQL_UPDATE_START(thd->query());
+ break;
+ case SQLCOM_UPDATE_MULTI:
+ MYSQL_MULTI_UPDATE_START(thd->query());
+ break;
+ case SQLCOM_DELETE:
+ MYSQL_DELETE_START(thd->query());
+ break;
+ case SQLCOM_DELETE_MULTI:
+ MYSQL_MULTI_DELETE_START(thd->query());
+ break;
+ default:
+ DBUG_ASSERT(0);
+ }
+}
+
+
+static void MYSQL_DML_DONE(THD *thd, int rc)
+{
+ switch (thd->lex->sql_command) {
+
+ case SQLCOM_UPDATE:
+ MYSQL_UPDATE_DONE(
+ rc,
+ (rc ? 0 :
+ ((multi_update*)(((Sql_cmd_dml*)(thd->lex->m_sql_cmd))->get_result()))
+ ->num_found()),
+ (rc ? 0 :
+ ((multi_update*)(((Sql_cmd_dml*)(thd->lex->m_sql_cmd))->get_result()))
+ ->num_updated()));
+ break;
+ case SQLCOM_UPDATE_MULTI:
+ MYSQL_MULTI_UPDATE_DONE(
+ rc,
+ (rc ? 0 :
+ ((multi_update*)(((Sql_cmd_dml*)(thd->lex->m_sql_cmd))->get_result()))
+ ->num_found()),
+ (rc ? 0 :
+ ((multi_update*)(((Sql_cmd_dml*)(thd->lex->m_sql_cmd))->get_result()))
+ ->num_updated()));
+ break;
+ case SQLCOM_DELETE:
+ MYSQL_DELETE_DONE(rc, (rc ? 0 : (ulong) (thd->get_row_count_func())));
+ break;
+ case SQLCOM_DELETE_MULTI:
+ MYSQL_MULTI_DELETE_DONE(
+ rc,
+ (rc ? 0 :
+ ((multi_delete*)(((Sql_cmd_dml*)(thd->lex->m_sql_cmd))->get_result()))
+ ->num_deleted()));
+ break;
+ default:
+ DBUG_ASSERT(0);
+ }
+}
+
+
+/*
+ @brief Perform actions needed before locking tables for a DML statement
+
+ @param thd global context the processed statement
+ @returns false if success, true if error
+
+ @details
+ This function calls the precheck() procedure fo the processed statement,
+ then is opens tables used in the statement and finally it calls the function
+ prepare_inner() that is specific for the type of the statement.
+
+ @note
+ The function are used when processing:
+ - a DML statement
+ - PREPARE stmt FROM <DML "statement>"
+ - EXECUTE stmt when stmt is prepared from a DML statement.
+*/
+
+bool Sql_cmd_dml::prepare(THD *thd)
+{
+ lex= thd->lex;
+ SELECT_LEX_UNIT *unit= &lex->unit;
+
+ DBUG_ASSERT(!is_prepared());
+
+ // Perform a coarse statement-specific privilege check.
+ if (precheck(thd))
+ goto err;
+
+ MYSQL_DML_START(thd);
+
+ lex->context_analysis_only|= CONTEXT_ANALYSIS_ONLY_DERIVED;
+
+ if (open_tables_for_query(thd, lex->query_tables, &table_count, 0,
+ get_dml_prelocking_strategy()))
+ {
+ if (thd->is_error())
+ goto err;
+ (void)unit->cleanup();
+ return true;
+ }
+
+ if (prepare_inner(thd))
+ goto err;
+
+ lex->context_analysis_only&= ~CONTEXT_ANALYSIS_ONLY_DERIVED;
+
+ set_prepared();
+ unit->set_prepared();
+
+ return false;
+
+err:
+ DBUG_ASSERT(thd->is_error());
+ DBUG_PRINT("info", ("report_error: %d", thd->is_error()));
+
+ (void)unit->cleanup();
+
+ return true;
+}
+
+
+/**
+ @brief Execute a DML statement
+
+ @param thd global context the processed statement
+ @returns false if success, true if error
+
+ @details
+ The function assumes that each type of a DML statement has its own
+ implementation of the virtunal functions precheck(). It is also
+ assumed that that the virtual function execute execute_inner() is to be
+ overridden by the implementations for specific commands.
+
+ @note
+ Currently only UPDATE and DELETE statement are executed using this function.
+*/
+
+bool Sql_cmd_dml::execute(THD *thd)
+{
+ lex = thd->lex;
+ bool res;
+
+ SELECT_LEX_UNIT *unit = &lex->unit;
+ SELECT_LEX *select_lex= lex->first_select_lex();
+
+ if (!is_prepared())
+ {
+ /*
+ This is called when processing
+ - a DML statement
+ - PREPARE stmt FROM <DML "statement>"
+ - EXECUTE stmt when stmt is prepared from a DML statement.
+ The call will invoke open_tables_for_query()
+ */
+ if (prepare(thd))
+ goto err;
+ }
+ else // This branch currently is never used for DML commands
+ {
+ if (precheck(thd))
+ goto err;
+
+ MYSQL_DML_START(thd);
+
+ if (open_tables_for_query(thd, lex->query_tables, &table_count, 0,
+ get_dml_prelocking_strategy()))
+ goto err;
+ }
+
+ THD_STAGE_INFO(thd, stage_init);
+
+ /*
+ Locking of tables is done after preparation but before optimization.
+ This allows to do better partition pruning and avoid locking unused
+ partitions. As a consequence, in such a case, prepare stage can rely only
+ on metadata about tables used and not data from them.
+ */
+ if (!is_empty_query())
+ {
+ if (lock_tables(thd, lex->query_tables, table_count, 0))
+ goto err;
+ }
+
+ unit->set_limit(select_lex);
+
+ /* Perform statement-specific execution */
+ res = execute_inner(thd);
+
+ if (res)
+ goto err;
+
+ res= unit->cleanup();
+
+ /* "Unprepare" this object since unit->cleanup actually unprepares */
+ unprepare(thd);
+
+ THD_STAGE_INFO(thd, stage_end);
+
+ MYSQL_DML_DONE(thd, res);
+
+ return res;
+
+err:
+ DBUG_ASSERT(thd->is_error() || thd->killed);
+ MYSQL_DML_DONE(thd, 1);
+ THD_STAGE_INFO(thd, stage_end);
+ (void)unit->cleanup();
+ if (is_prepared())
+ unprepare(thd);
+
+ return thd->is_error();
+}
+
+
+/**
+ @brief Generic implemention of optimization and execution phases
+ @param thd global context the processed statement
+ @returns false if success, true if error
+
+ @note
+ This implementation assumes that the processed DML statement is represented
+ as a SELECT_LEX or SELECT_LEX_UNIT tree with attached corresponding
+ JOIN structures. Any JOIN structure is constructed at the prepare phase.
+ When created at the top level join it is provided with an object of a class
+ derived from select_result_sink. The pointer to the object is saved in
+ the this->result field. For different types of DML statements different
+ derived classes are used for this object. The class of this object determines
+ additional specific actions performed at the phases of context analysis,
+ optimization and execution.
+*/
+
+bool Sql_cmd_dml::execute_inner(THD *thd)
+{
+ SELECT_LEX_UNIT *unit = &lex->unit;
+ SELECT_LEX *select_lex= unit->first_select();
+ JOIN *join= select_lex->join;
+
+ if (join->optimize())
+ goto err;
+
+ if (thd->lex->describe & DESCRIBE_EXTENDED)
+ {
+ join->conds_history= join->conds;
+ join->having_history= (join->having?join->having:join->tmp_having);
+ }
+
+ if (unlikely(thd->is_error()))
+ goto err;
+
+ if (join->exec())
+ goto err;
+
+ if (thd->lex->describe & DESCRIBE_EXTENDED)
+ {
+ select_lex->where= join->conds_history;
+ select_lex->having= join->having_history;
+ }
+
+err:
+ return join->error;
+}
+
+
/**
@} (end of group Query_Optimizer)
*/
diff --git a/sql/sql_select.h b/sql/sql_select.h
index 6d1d4626..fd280164 100644
--- a/sql/sql_select.h
+++ b/sql/sql_select.h
@@ -313,11 +313,6 @@ typedef struct st_join_table {
Table_access_tracker *jbuf_tracker;
Time_and_counter_tracker *jbuf_unpack_tracker;
Counter_tracker *jbuf_loops_tracker;
- /*
- Bitmap of TAB_INFO_* bits that encodes special line for EXPLAIN 'Extra'
- column, or 0 if there is no info.
- */
- uint packed_info;
// READ_RECORD::Setup_func materialize_table;
READ_RECORD::Setup_func read_first_record;
@@ -330,7 +325,6 @@ typedef struct st_join_table {
*/
READ_RECORD::Setup_func save_read_first_record;/* to save read_first_record */
READ_RECORD::Read_func save_read_record;/* to save read_record.read_record */
- double worst_seeks;
key_map const_keys; /**< Keys with constant part */
key_map checked_keys; /**< Keys checked in find_best */
key_map needed_reg;
@@ -350,9 +344,22 @@ typedef struct st_join_table {
*/
double read_time;
+ /* Copy of POSITION::records_init, set by get_best_combination() */
+ double records_init;
+
/* Copy of POSITION::records_read, set by get_best_combination() */
double records_read;
-
+
+ /* Copy of POSITION::records_out, set by get_best_combination() */
+ double records_out;
+
+ /*
+ Copy of POSITION::read_time, set by get_best_combination(). The cost of
+ accessing the table in course of the join execution.
+ */
+ double join_read_time;
+ double join_loops;
+
/* The selectivity of the conditions that can be pushed to the table */
double cond_selectivity;
@@ -361,7 +368,34 @@ typedef struct st_join_table {
double partial_join_cardinality;
- table_map dependent,key_dependent;
+ /* set by estimate_scan_time() */
+ double cached_scan_and_compare_time;
+ ALL_READ_COST cached_scan_and_compare_cost;
+
+ /* Used with force_index_join */
+ ALL_READ_COST cached_forced_index_cost;
+ /*
+ dependent is the table that must be read before the current one
+ Used for example with STRAIGHT_JOIN or outer joins
+ */
+ table_map dependent;
+ /*
+ key_dependent is dependent but add those tables that are used to compare
+ with a key field in a simple expression. See add_key_field().
+ It is only used to prune searches in best_extension_by_limited_search()
+ */
+ table_map key_dependent;
+ /*
+ Tables that have expression in their attached condition clause that depends
+ on this table.
+ */
+ table_map related_tables;
+
+ /*
+ Bitmap of TAB_INFO_* bits that encodes special line for EXPLAIN 'Extra'
+ column, or 0 if there is no info.
+ */
+ uint packed_info;
/*
This is set for embedded sub queries. It contains the table map of
the outer expression, like 'A' in the following expression:
@@ -381,17 +415,21 @@ typedef struct st_join_table {
uint index;
uint status; ///< Save status for cache
uint used_fields;
+ uint cached_covering_key; // Set by estimate_scan_time()
ulong used_fieldlength;
ulong max_used_fieldlength;
uint used_blobs;
uint used_null_fields;
uint used_uneven_bit_fields;
- enum join_type type;
+ uint cached_forced_index;
+ enum join_type type, cached_forced_index_type;
/* If first key part is used for any key in 'key_dependent' */
bool key_start_dependent;
bool cached_eq_ref_table,eq_ref_table;
bool shortcut_for_distinct;
bool sorted;
+ bool cached_pfs_batch_update;
+
/*
If it's not 0 the number stored this field indicates that the index
scan has been chosen to access the table data and we expect to scan
@@ -551,10 +589,11 @@ typedef struct st_join_table {
Range_rowid_filter_cost_info *range_rowid_filter_info;
/* Rowid filter to be used when joining this join table */
Rowid_filter *rowid_filter;
- /* Becomes true just after the used range filter has been built / filled */
- bool is_rowid_filter_built;
+ /* True if the plan requires a rowid filter and it's not built yet */
+ bool need_to_build_rowid_filter;
- bool build_range_rowid_filter_if_needed();
+ bool build_range_rowid_filter();
+ void clear_range_rowid_filter();
void cleanup();
inline bool is_using_loose_index_scan()
@@ -666,11 +705,11 @@ typedef struct st_join_table {
{
return (is_hash_join_key_no(key) ? hj_key : table->key_info+key);
}
- double scan_time();
- ha_rows get_examined_rows();
+ void estimate_scan_time();
+ double get_examined_rows();
bool preread_init();
- bool pfs_batch_update(JOIN *join);
+ bool pfs_batch_update();
bool is_sjm_nest() { return MY_TEST(bush_children); }
@@ -955,12 +994,49 @@ public:
/* The table that's put into join order */
JOIN_TAB *table;
+ /* number of rows that will be read from the table */
+ double records_init;
+
/*
- The "fanout": number of output rows that will be produced (after
+ Number of rows left after filtering, calculated in best_access_path()
+ In case of use_cond_selectivity > 1 it contains rows after the used
+ rowid filter (if such one exists).
+ If use_cond_selectivity <= 1 it contains the minimum rows of any
+ rowid filtering or records_init if no filter exists.
+ */
+ double records_after_filter;
+
+ /*
+ Number of expected rows before applying the full WHERE clause. This
+ includes rowid filter and table->cond_selectivity if
+ use_cond_selectivity > 1. See matching_candidates_in_table().
+ Should normally not be used.
+ */
+ double records_read;
+
+ /*
+ The number of rows after applying the WHERE clause.
+
+ Same as the "fanout": number of output rows that will be produced (after
pushed down selection condition is applied) per each row combination of
previous tables.
+
+ In best_access_path() it is set to the minum number of accepted rows
+ for any possible access method or filter:
+
+ records_out takes into account table->cond_selectivity, the WHERE clause
+ related to this table calculated in calculate_cond_selectivity_for_table(),
+ and the used rowid filter.
+
+ After best_access_path() records_out it does not yet take into
+ account the part of the WHERE clause involving preceding tables.
+ records_out is updated in best_extension_by_limited_search() to take these
+ tables into account by calling table_after_join_selectivity().
*/
- double records_read;
+ double records_out;
+
+ /* Values from prev_record_reads call for EQ_REF table*/
+ double prev_record_reads, identical_keys;
/* The selectivity of the pushed down conditions */
double cond_selectivity;
@@ -968,10 +1044,13 @@ public:
/*
Cost accessing the table in course of the entire complete join execution,
i.e. cost of one access method use (e.g. 'range' or 'ref' scan ) times
- number the access method will be invoked.
+ number the access method will be invoked and checking the WHERE clause.
*/
double read_time;
+ /* record combinations before this table */
+ double loops;
+
double prefix_record_count;
/* Cost for the join prefix */
@@ -1020,6 +1099,7 @@ public:
LooseScan_picker loosescan_picker;
Sj_materialization_picker sjmat_picker;
+ ulonglong refills;
/*
Current optimization state: Semi-join strategy to be used for this
and preceding join tables.
@@ -1036,18 +1116,21 @@ public:
/* Type of join (EQ_REF, REF etc) */
enum join_type type;
+
/*
Valid only after fix_semijoin_strategies_for_picked_join_order() call:
if sj_strategy!=SJ_OPT_NONE, this is the number of subsequent tables that
are covered by the specified semi-join strategy
*/
uint n_sj_tables;
-
+ uint forced_index; // If force_index() is used
/*
TRUE <=> join buffering will be used. At the moment this is based on
*very* imprecise guesses made in best_access_path().
*/
bool use_join_buffer;
+ /* True if we can use join_buffer togethere with firstmatch */
+ bool firstmatch_with_join_buf;
POSITION();
};
@@ -1270,6 +1353,13 @@ public:
bool hash_join;
bool do_send_rows;
table_map const_table_map;
+
+ /*
+ Tables one is allowed to use in choose_plan(). Either all or
+ set to a mapt of the tables in the materialized semi-join nest
+ */
+ table_map allowed_tables;
+
/**
Bitmap of semijoin tables that the current partial plan decided
to materialize and access by lookups
@@ -1301,7 +1391,7 @@ public:
table_map eq_ref_tables;
table_map allowed_top_level_tables;
- ha_rows send_records,found_records,join_examined_rows, accepted_rows;
+ ha_rows send_records,found_records, accepted_rows;
/*
LIMIT for the JOIN operation. When not using aggregation or DISITNCT, this
@@ -1377,7 +1467,9 @@ public:
int dbug_join_tab_array_size;
#endif
- /* We also maintain a stack of join optimization states in * join->positions[] */
+ /*
+ We also maintain a stack of join optimization states in join->positions[]
+ */
/******* Join optimization state members end *******/
/*
@@ -1510,6 +1602,8 @@ public:
*/
bool impossible_where;
+ bool prepared;
+
/*
All fields used in the query processing.
@@ -1604,8 +1698,6 @@ public:
/* SJM nests that are executed with SJ-Materialization strategy */
List<SJ_MATERIALIZATION_INFO> sjm_info_list;
- /** TRUE <=> ref_pointer_array is set to items3. */
- bool set_group_rpa;
/** Exec time only: TRUE <=> current group has been sent */
bool group_sent;
/**
@@ -1664,9 +1756,8 @@ public:
bool build_explain();
int reinit();
int init_execution();
- void exec();
-
- void exec_inner();
+ int exec() __attribute__((warn_unused_result));
+ int exec_inner();
bool prepare_result(List<Item> **columns_list);
int destroy();
void restore_tmp();
@@ -1869,6 +1960,7 @@ private:
bool prepare_sum_aggregators(THD *thd,Item_sum **func_ptr,
bool need_distinct);
bool transform_in_predicates_into_equalities(THD *thd);
+ bool transform_date_conds_into_sargable();
bool transform_all_conds_and_on_exprs(THD *thd,
Item_transformer transformer);
bool transform_all_conds_and_on_exprs_in_join_list(THD *thd,
@@ -2433,7 +2525,7 @@ inline Item * or_items(THD *thd, Item* cond, Item *item)
{
return (cond ? (new (thd->mem_root) Item_cond_or(thd, cond, item)) : item);
}
-bool choose_plan(JOIN *join, table_map join_tables);
+bool choose_plan(JOIN *join, table_map join_tables, TABLE_LIST *emb_sjm_nest);
void optimize_wo_join_buffering(JOIN *join, uint first_tab, uint last_tab,
table_map last_remaining_tables,
bool first_alt, uint no_jbuf_before,
@@ -2519,14 +2611,24 @@ bool instantiate_tmp_table(TABLE *table, KEY *keyinfo,
TMP_ENGINE_COLUMNDEF **recinfo,
ulonglong options);
bool open_tmp_table(TABLE *table);
-double prev_record_reads(const POSITION *positions, uint idx, table_map found_ref);
void fix_list_after_tbl_changes(SELECT_LEX *new_parent, List<TABLE_LIST> *tlist);
-double get_tmp_table_lookup_cost(THD *thd, double row_count, uint row_size);
-double get_tmp_table_write_cost(THD *thd, double row_count, uint row_size);
void optimize_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse_array);
bool sort_and_filter_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse,
bool skip_unprefixed_keyparts);
+struct TMPTABLE_COSTS
+{
+ double create;
+ double lookup;
+ double write;
+ double avg_io_cost;
+ double cache_hit_ratio;
+ double block_size;
+};
+
+TMPTABLE_COSTS get_tmp_table_costs(THD *thd, double row_count, uint row_size,
+ bool blobs_used, bool add_row_copy_cost);
+
struct st_cond_statistic
{
Item *cond;
diff --git a/sql/sql_servers.cc b/sql/sql_servers.cc
index d52d6071..10a32abe 100644
--- a/sql/sql_servers.cc
+++ b/sql/sql_servers.cc
@@ -254,6 +254,8 @@ bool servers_init(bool dont_read_servers_table)
DBUG_RETURN(TRUE);
thd->thread_stack= (char*) &thd;
thd->store_globals();
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:servers_init"),
+ default_charset_info);
/*
It is safe to call servers_reload() since servers_* arrays and hashes which
will be freed there are global static objects and thus are initialized
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index c09de58c..cc7e7a2a 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -50,6 +50,7 @@
#include "authors.h"
#include "contributors.h"
#include "sql_partition.h"
+#include "optimizer_defaults.h"
#ifdef HAVE_EVENT_SCHEDULER
#include "events.h"
#include "event_data_objects.h"
@@ -120,6 +121,14 @@ static const LEX_CSTRING trg_event_type_names[]=
{ STRING_WITH_LEN("DELETE") }
};
+static const LEX_CSTRING sp_data_access_name[]=
+{
+ { STRING_WITH_LEN("") },
+ { STRING_WITH_LEN("CONTAINS SQL") },
+ { STRING_WITH_LEN("NO SQL") },
+ { STRING_WITH_LEN("READS SQL DATA") },
+ { STRING_WITH_LEN("MODIFIES SQL DATA") }
+};
LEX_CSTRING DATA_clex_str= { STRING_WITH_LEN("DATA") };
LEX_CSTRING INDEX_clex_str= { STRING_WITH_LEN("INDEX") };
@@ -152,6 +161,7 @@ static const LEX_CSTRING *view_algorithm(TABLE_LIST *table);
bool get_lookup_field_values(THD *, COND *, bool, TABLE_LIST *,
LOOKUP_FIELD_VALUES *);
+void process_i_s_table_temporary_tables(THD *thd, TABLE * table, TABLE *tmp_tbl);
/**
Try to lock a mutex, but give up after a short while to not cause deadlocks
@@ -522,7 +532,7 @@ static struct show_privileges_st sys_privileges[]=
{"Show databases","Server Admin","To see all databases with SHOW DATABASES"},
{"Show view","Tables","To see views with SHOW CREATE VIEW"},
{"Shutdown","Server Admin", "To shut down the server"},
- {"Super","Server Admin","To use KILL thread, SET GLOBAL, CHANGE MASTER, etc."},
+ {"Super","Server Admin","To set few server variables"},
{"Trigger","Tables", "To use triggers"},
{"Create tablespace", "Server Admin", "To create/alter/drop tablespaces"},
{"Update", "Tables", "To update existing rows"},
@@ -531,6 +541,7 @@ static struct show_privileges_st sys_privileges[]=
{"Connection admin", "Server", "To bypass connection limits and kill other users' connections"},
{"Read_only admin", "Server", "To perform write operations even if @@read_only=ON"},
{"Usage","Server Admin","No privileges - allow connect only"},
+ {"Show Create Routine","Databases,Functions,Procedures","To allow SHOW CREATE PROCEDURE/FUNCTION/PACKAGE"},
{NullS, NullS, NullS}
};
@@ -938,7 +949,8 @@ enum find_files_result {
static find_files_result
-find_files(THD *thd, Dynamic_array<LEX_CSTRING*> *files, LEX_CSTRING *db,
+find_files(THD *thd, Dynamic_array<LEX_CSTRING*> *files,
+ const Lex_ident_db *db,
const char *path, const LEX_CSTRING *wild)
{
MY_DIR *dirp;
@@ -1619,6 +1631,20 @@ append_identifier(THD *thd, String *packet, const char *name, size_t length)
}
+/**
+ Similar to append_identifier(), but with optional casedn conversion.
+*/
+bool append_identifier_opt_casedn(THD *thd, String *to,
+ const LEX_CSTRING &ident, bool casedn)
+{
+ if (!casedn)
+ return append_identifier(thd, to, &ident);
+ CharBuffer<MAX_ALIAS_NAME> buff;
+ LEX_CSTRING ls= buff.copy_casedn(system_charset_info, ident).to_lex_cstring();
+ return append_identifier(thd, to, &ls);
+}
+
+
/*
Get the quote character for displaying an identifier.
@@ -2222,7 +2248,7 @@ int show_create_table_ex(THD *thd, TABLE_LIST *table_list,
packet->append(STRING_WITH_LEN(" GENERATED ALWAYS AS ("));
packet->append(str);
packet->append(STRING_WITH_LEN(")"));
- if (field->vcol_info->stored_in_db)
+ if (field->vcol_info->is_stored())
packet->append(STRING_WITH_LEN(" STORED"));
else
packet->append(STRING_WITH_LEN(" VIRTUAL"));
@@ -3365,11 +3391,11 @@ static my_bool processlist_callback(THD *tmp, processlist_callback_arg *arg)
arg->table->field[7]->set_notnull();
/* INFO_BINARY */
- arg->table->field[16]->store(tmp->query(),
+ arg->table->field[17]->store(tmp->query(),
MY_MIN(PROCESS_LIST_INFO_WIDTH,
tmp->query_length()),
&my_charset_bin);
- arg->table->field[16]->set_notnull();
+ arg->table->field[17]->set_notnull();
}
/*
@@ -3405,12 +3431,13 @@ static my_bool processlist_callback(THD *tmp, processlist_callback_arg *arg)
FALSE);
arg->table->field[13]->store((longlong) tmp->status_var.max_local_memory_used,
FALSE);
- arg->table->field[14]->store((longlong) tmp->get_examined_row_count(), TRUE);
+ arg->table->field[14]->store((longlong) tmp->examined_row_count_for_statement, TRUE);
+ arg->table->field[15]->store((longlong) tmp->sent_row_count_for_statement, TRUE);
/* QUERY_ID */
- arg->table->field[15]->store(tmp->query_id, TRUE);
+ arg->table->field[16]->store(tmp->query_id, TRUE);
- arg->table->field[17]->store(tmp->os_thread_id);
+ arg->table->field[18]->store(tmp->os_thread_id);
if (schema_table_store_record(arg->thd, arg->table))
return 1;
@@ -4533,7 +4560,7 @@ int schema_tables_add(THD *thd, Dynamic_array<LEX_CSTRING*> *files,
static int
make_table_name_list(THD *thd, Dynamic_array<LEX_CSTRING*> *table_names,
LEX *lex, LOOKUP_FIELD_VALUES *lookup_field_vals,
- LEX_CSTRING *db_name)
+ const LEX_CSTRING *db_name)
{
char path[FN_REFLEN + 1];
build_table_filename(path, sizeof(path) - 1, db_name->str, "", "", 0);
@@ -4579,10 +4606,12 @@ make_table_name_list(THD *thd, Dynamic_array<LEX_CSTRING*> *table_names,
return (schema_tables_add(thd, table_names,
lookup_field_vals->table_value.str));
- if (check_db_name((LEX_STRING*)db_name))
+ const DBNameBuffer dbbuf(*db_name, lower_case_table_names == 1);
+ const Lex_ident_db dbnorm= dbbuf.to_lex_ident_db();
+ if (!dbnorm.str)
return 0; // Impossible TABLE_SCHEMA name
- find_files_result res= find_files(thd, table_names, db_name, path,
+ find_files_result res= find_files(thd, table_names, &dbnorm, path,
&lookup_field_vals->table_value);
if (res != FIND_FILES_OK)
{
@@ -4606,7 +4635,8 @@ make_table_name_list(THD *thd, Dynamic_array<LEX_CSTRING*> *table_names,
static void get_table_engine_for_i_s(THD *thd, char *buf, TABLE_LIST *tl,
- LEX_CSTRING *db, LEX_CSTRING *table)
+ const LEX_CSTRING *db,
+ const LEX_CSTRING *table)
{
LEX_CSTRING engine_name= { buf, 0 };
@@ -4656,7 +4686,7 @@ fill_schema_table_by_open(THD *thd, MEM_ROOT *mem_root,
LEX *old_lex= thd->lex, temp_lex, *lex;
LEX_CSTRING db_name, table_name;
TABLE_LIST *table_list;
- bool result= true;
+ bool result= true, open_result, run, ext_error_handling;
DBUG_ENTER("fill_schema_table_by_open");
/*
@@ -4733,7 +4763,7 @@ fill_schema_table_by_open(THD *thd, MEM_ROOT *mem_root,
}
DBUG_ASSERT(thd->lex == lex);
- result= open_tables_only_view_structure(thd, table_list, can_deadlock);
+ open_result= open_tables_only_view_structure(thd, table_list, can_deadlock);
DEBUG_SYNC(thd, "after_open_table_ignore_flush");
@@ -4748,28 +4778,41 @@ fill_schema_table_by_open(THD *thd, MEM_ROOT *mem_root,
Again we don't do this for SHOW COLUMNS/KEYS because
of backward compatibility.
*/
- if (!is_show_fields_or_keys && result && thd->is_error() &&
- (thd->get_stmt_da()->sql_errno() == ER_NO_SUCH_TABLE ||
- thd->get_stmt_da()->sql_errno() == ER_WRONG_OBJECT ||
- thd->get_stmt_da()->sql_errno() == ER_NOT_SEQUENCE))
+ result= open_result;
+ run= true;
+ ext_error_handling= schema_table->i_s_requested_object
+ & I_S_EXTENDED_ERROR_HANDLING;
+ if (result && thd->is_error())
{
- /*
- Hide error for a non-existing table.
- For example, this error can occur when we use a where condition
- with a db name and table, but the table does not exist or
- there is a view with the same name.
- */
- result= false;
- thd->clear_error();
+ if (!is_show_fields_or_keys)
+ {
+ /*
+ Hide error for a non-existing table and skip processing.
+ For example, this error can occur when we use a where condition
+ with a db name and table, but the table does not exist or
+ there is a view with the same name.
+ Some errors, like ER_UNKNOWN_STORAGE_ENGINE, can still allow table
+ processing, if the information schema table supports that.
+ */
+ run= run && thd->get_stmt_da()->sql_errno() != ER_NO_SUCH_TABLE
+ && thd->get_stmt_da()->sql_errno() != ER_WRONG_OBJECT
+ && thd->get_stmt_da()->sql_errno() != ER_NOT_SEQUENCE;
+ if (!run)
+ thd->clear_error();
+ else if (!ext_error_handling)
+ convert_error_to_warning(thd);
+ result= false;
+ }
}
- else
+
+ if (run && (!open_result || ext_error_handling))
{
char buf[NAME_CHAR_LEN + 1];
if (unlikely(thd->is_error()))
get_table_engine_for_i_s(thd, buf, table_list, &db_name, &table_name);
result= schema_table->process_table(thd, table_list,
- table, result,
+ table, open_result,
orig_db_name,
orig_table_name);
}
@@ -5004,7 +5047,7 @@ static int fill_schema_table_from_frm(THD *thd, MEM_ROOT *mem_root,
TABLE tbl;
TABLE_LIST table_list;
uint res= 0;
- char db_name_buff[NAME_LEN + 1], table_name_buff[NAME_LEN + 1];
+ IdentBuffer<NAME_LEN> db_name_buff, table_name_buff;
Query_arena i_s_arena(mem_root, Query_arena::STMT_CONVENTIONAL_EXECUTION);
Query_arena backup_arena, *old_arena;
bool i_s_arena_active= false;
@@ -5022,12 +5065,9 @@ static int fill_schema_table_from_frm(THD *thd, MEM_ROOT *mem_root,
cache subsystems require normalized (lowercased) database and table
names as input.
*/
- strmov(db_name_buff, db_name->str);
- strmov(table_name_buff, table_name->str);
- table_list.db.length= my_casedn_str(files_charset_info, db_name_buff);
- table_list.table_name.length= my_casedn_str(files_charset_info, table_name_buff);
- table_list.db.str= db_name_buff;
- table_list.table_name.str= table_name_buff;
+ table_list.db= db_name_buff.copy_casedn(*db_name).to_lex_cstring();
+ table_list.table_name= table_name_buff.copy_casedn(*table_name).
+ to_lex_cstring();
}
else
{
@@ -5096,7 +5136,7 @@ static int fill_schema_table_from_frm(THD *thd, MEM_ROOT *mem_root,
{
res= 0;
}
- else
+ else if (schema_table->i_s_requested_object & I_S_EXTENDED_ERROR_HANDLING)
{
char buf[NAME_CHAR_LEN + 1];
get_table_engine_for_i_s(thd, buf, &table_list, db_name, table_name);
@@ -5104,6 +5144,11 @@ static int fill_schema_table_from_frm(THD *thd, MEM_ROOT *mem_root,
res= schema_table->process_table(thd, &table_list, table,
true, db_name, table_name);
}
+ else
+ {
+ if (thd->is_error())
+ convert_error_to_warning(thd);
+ }
goto end;
}
@@ -5184,6 +5229,29 @@ end:
}
+static privilege_t get_schema_privileges_for_show(THD *thd, TABLE_LIST *tables,
+ const privilege_t need,
+ bool any)
+{
+#ifndef NO_EMBEDDED_ACCESS_CHECKS
+ /*
+ We know that the table or at least some of the columns have
+ necessary privileges, but the caller didn't pass down the GRANT_INFO
+ object, so we have to rediscover everything again :(
+ */
+ if (!(thd->col_access & need))
+ {
+ check_grant(thd, need, tables, 0, 1, 1);
+ return (any ? tables->grant.all_privilege()
+ : tables->grant.privilege) & need;
+ }
+ return thd->col_access & need;
+#else
+ return need;
+#endif
+}
+
+
class Warnings_only_error_handler : public Internal_error_handler
{
public:
@@ -5204,6 +5272,21 @@ public:
}
};
+
+static bool wildcmpcs(const LEX_CSTRING &str, const LEX_CSTRING &pat)
+{
+ return table_alias_charset->wildcmp(str.str, str.str + str.length,
+ pat.str, pat.str + pat.length,
+ '\\', '_', '%');
+}
+
+static bool strcmpcs(const LEX_CSTRING &str, const LEX_CSTRING &pat)
+{
+ return table_alias_charset->strnncoll(str.str, str.length,
+ pat.str, pat.length, 0);
+}
+
+
/**
@brief Fill I_S tables whose data are retrieved
from frm files and storage engine
@@ -5300,6 +5383,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
*/
if (lsel && lsel->table_list.first)
{
+ DBUG_ASSERT(thd->sql_command_flags() & CF_STATUS_COMMAND);
error= fill_schema_table_by_open(thd, thd->mem_root, TRUE,
table, schema_table,
&lsel->table_list.first->db,
@@ -5322,15 +5406,63 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
goto err;
}
+ /* Use tmp_mem_root to allocate data for opened tables */
+ init_alloc_root(PSI_INSTRUMENT_ME, &tmp_mem_root, SHOW_ALLOC_BLOCK_SIZE,
+ SHOW_ALLOC_BLOCK_SIZE, MY_THREAD_SPECIFIC);
+
+ /*
+ Separate handling for session temporary tables from the backup state
+ for table IS.tables and SHOW TABLES commands.
+ */
+ if ((schema_table_idx == SCH_TABLES || schema_table_idx == SCH_TABLE_NAMES) &&
+ open_tables_state_backup.temporary_tables)
+ {
+ All_tmp_tables_list::Iterator it(*open_tables_state_backup.temporary_tables);
+ TMP_TABLE_SHARE *share_temp;
+ bool (*cmp_db)(const LEX_CSTRING &, const LEX_CSTRING &)=
+ plan->lookup_field_vals.wild_db_value ? wildcmpcs : strcmpcs;
+ bool (*cmp_table)(const LEX_CSTRING &, const LEX_CSTRING &)=
+ plan->lookup_field_vals.wild_table_value ? wildcmpcs : strcmpcs;
+ while ((share_temp= it++))
+ {
+ if (plan->lookup_field_vals.db_value.str)
+ {
+ if (cmp_db(share_temp->db, plan->lookup_field_vals.db_value))
+ continue;
+ }
+ if (plan->lookup_field_vals.table_value.str)
+ {
+ if (cmp_table(share_temp->table_name, plan->lookup_field_vals.table_value))
+ continue;
+ }
+
+ TABLE *tmp_tbl= share_temp->all_tmp_tables.front();
+ if (schema_table_idx == SCH_TABLE_NAMES)
+ {
+ LEX_CSTRING *table_name= &tmp_tbl->s->table_name;
+ restore_record(table, s->default_values);
+ table->field[1]->store(share_temp->db.str, share_temp->db.length,
+ system_charset_info);
+ table->field[2]->store(table_name->str, table_name->length,
+ system_charset_info);
+ if (tmp_tbl->s->table_type == TABLE_TYPE_SEQUENCE)
+ table->field[3]->store(STRING_WITH_LEN("TEMPORARY SEQUENCE"),
+ system_charset_info);
+ else
+ table->field[3]->store(STRING_WITH_LEN("TEMPORARY TABLE"),
+ system_charset_info);
+ schema_table_store_record(thd, table);
+ }
+ else /* SCH_TABLES */
+ process_i_s_table_temporary_tables(thd, table, tmp_tbl);
+ }
+ }
+
bzero((char*) &table_acl_check, sizeof(table_acl_check));
if (make_db_list(thd, &db_names, &plan->lookup_field_vals))
goto err;
- /* Use tmp_mem_root to allocate data for opened tables */
- init_alloc_root(PSI_INSTRUMENT_ME, &tmp_mem_root, SHOW_ALLOC_BLOCK_SIZE,
- SHOW_ALLOC_BLOCK_SIZE, MY_THREAD_SPECIFIC);
-
for (size_t i=0; i < db_names.elements(); i++)
{
LEX_CSTRING *db_name= db_names.at(i);
@@ -5344,6 +5476,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
#endif
{
Dynamic_array<LEX_CSTRING*> table_names(PSI_INSTRUMENT_MEM);
+
int res= make_table_name_list(thd, &table_names, lex,
&plan->lookup_field_vals, db_name);
if (unlikely(res == 2)) /* Not fatal error, continue */
@@ -5351,9 +5484,9 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
if (unlikely(res))
goto err;
- for (size_t i=0; i < table_names.elements(); i++)
+ for (size_t j=0; j < table_names.elements(); j++)
{
- LEX_CSTRING *table_name= table_names.at(i);
+ LEX_CSTRING *table_name= table_names.at(j);
DBUG_ASSERT(table_name->length <= NAME_LEN);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
@@ -5366,7 +5499,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
continue;
}
#endif
- restore_record(table, s->default_values);
+ restore_record(table, s->default_values);
table->field[schema_table->idx_field1]->
store(db_name->str, db_name->length, system_charset_info);
table->field[schema_table->idx_field2]->
@@ -5556,6 +5689,14 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
}
+static int store_yesno(Field *field, bool predicate)
+{
+ static const LEX_CSTRING yes{STRING_WITH_LEN("YES")};
+ static const LEX_CSTRING no {STRING_WITH_LEN("NO")};
+ return field->store(predicate ? yes : no, system_charset_info);
+}
+
+
static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
TABLE *table, bool res,
const LEX_CSTRING *db_name,
@@ -5609,8 +5750,12 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
if (share->tmp_table == SYSTEM_TMP_TABLE)
table->field[3]->store(STRING_WITH_LEN("SYSTEM VIEW"), cs);
+ else if (share->tmp_table && share->table_type == TABLE_TYPE_SEQUENCE)
+ table->field[3]->store(STRING_WITH_LEN("TEMPORARY SEQUENCE"), cs);
else if (share->table_type == TABLE_TYPE_SEQUENCE)
table->field[3]->store(STRING_WITH_LEN("SEQUENCE"), cs);
+ else if (share->tmp_table)
+ table->field[3]->store(STRING_WITH_LEN("TEMPORARY"), cs);
else
{
DBUG_ASSERT(share->tmp_table == NO_TMP_TABLE);
@@ -5888,6 +6033,25 @@ err:
/**
+ @brief Fill IS.table with temporary tables
+ @param[in] thd thread handler
+ @param[in] table I_S table (TABLE)
+ @param[in] tmp_tbl temporary table to be represetned by IS.table
+ @return Operation status
+ @retval 0 - success
+ @retval 1 - failure
+*/
+void process_i_s_table_temporary_tables(THD *thd, TABLE * table, TABLE *tmp_tbl)
+{
+ TABLE_LIST table_list;
+ bzero((char*) &table_list, sizeof(TABLE_LIST));
+ table_list.table= tmp_tbl;
+ get_schema_tables_record(thd, &table_list, table,
+ 0, &tmp_tbl->s->db, &tmp_tbl->s->table_name);
+}
+
+
+/**
@brief Store field characteristics into appropriate I_S table columns
@param[in] table I_S table
@@ -6098,11 +6262,88 @@ static void store_variable_type(THD *thd, const sp_variable *spvar,
}
}
+static int store_schema_period_record(THD *thd, TABLE_LIST *tl,
+ TABLE *schema_table,
+ const LEX_CSTRING *db_name,
+ const LEX_CSTRING *table_name,
+ const TABLE_SHARE::period_info_t &period)
+{
+ TABLE_SHARE *s= tl->table->s;
+ const CHARSET_INFO *cs= system_charset_info;
-static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
- TABLE *table, bool res,
- const LEX_CSTRING *db_name,
- const LEX_CSTRING *table_name)
+ if (period.start_field(s)->invisible >= INVISIBLE_SYSTEM)
+ {
+ // A system-versioned table without user-defined SYSTEM_TIME
+ DBUG_ASSERT(&period == &s->vers);
+ DBUG_ASSERT(period.end_field(s)->invisible >= INVISIBLE_SYSTEM);
+ return 0;
+ }
+
+ schema_table->field[0]->store(STRING_WITH_LEN("def"), cs);
+ schema_table->field[1]->store(db_name, cs);
+ schema_table->field[2]->store(table_name, cs);
+ schema_table->field[3]->store(period.name, cs);
+
+ /* need any privilege on any of the columns */
+ bool table_granted= get_schema_privileges_for_show(thd, tl, TABLE_ACLS, true);
+ if (!table_granted)
+ return 0;
+
+ int period_field= 4;
+ for (auto *field: {period.start_field(s), period.end_field(s)})
+ {
+ /* Reveal the value only if the user has any privilege on this column */
+ bool col_granted= get_column_grant(thd, &tl->grant,
+ db_name->str, table_name->str,
+ field->field_name.str) & COL_DML_ACLS;
+ if (col_granted)
+ {
+ schema_table->field[period_field]->set_notnull();
+ schema_table->field[period_field]->store(field->field_name, cs);
+ }
+
+ period_field++;
+ }
+
+ return schema_table_store_record(thd, schema_table);
+}
+
+
+static int
+get_schema_period_records(THD *thd, TABLE_LIST *tl,
+ TABLE *schema_table, //!< @ref
+ //!< Show::periods_fields_info
+ bool res,
+ const LEX_CSTRING *db_name,
+ const LEX_CSTRING *table_name)
+{
+ TABLE *table= tl->table;
+
+ if (!table || (!table->s->period.name && !table->versioned()))
+ return 0;
+
+#ifndef NO_EMBEDDED_ACCESS_CHECKS
+ check_access(thd, SELECT_ACL, db_name->str,
+ &tl->grant.privilege, 0, 0, MY_TEST(tl->schema_table));
+ DBUG_ASSERT(!is_temporary_table(tl));
+#endif
+ int err= 0;
+ if (table->versioned())
+ err= store_schema_period_record(thd, tl, schema_table, db_name, table_name,
+ table->s->vers);
+ if (!err && table->s->period.name)
+ err= store_schema_period_record(thd, tl, schema_table, db_name, table_name,
+ table->s->period);
+
+ return err;
+}
+
+static
+int get_schema_column_record(THD *thd, TABLE_LIST *tables,
+ TABLE *table, //!< @ref Show::columns_fields_info
+ bool res,
+ const LEX_CSTRING *db_name,
+ const LEX_CSTRING *table_name)
{
LEX *lex= thd->lex;
const char *wild= lex->wild ? lex->wild->ptr() : NullS;
@@ -6113,20 +6354,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
bool quoted_defaults= lex->sql_command != SQLCOM_SHOW_FIELDS;
DBUG_ENTER("get_schema_column_record");
- if (res)
- {
- if (lex->sql_command != SQLCOM_SHOW_FIELDS)
- {
- /*
- I.e. we are in SELECT FROM INFORMATION_SCHEMA.COLUMS
- rather than in SHOW COLUMNS
- */
- if (thd->is_error())
- convert_error_to_warning(thd);
- res= 0;
- }
- DBUG_RETURN(res);
- }
show_table= tables->table;
count= 0;
ptr= show_table->field;
@@ -6192,9 +6419,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
table->field[5]->store(type.ptr(), type.length(), cs);
table->field[5]->set_notnull();
}
- pos=(uchar*) ((field->flags & NOT_NULL_FLAG) ? "NO" : "YES");
- table->field[6]->store((const char*) pos,
- strlen((const char*) pos), cs);
+ store_yesno(table->field[6], (field->flags & NOT_NULL_FLAG) == 0);
store_column_type(table, field, cs, 7);
pos=(uchar*) ((field->flags & PRI_KEY_FLAG) ? "PRI" :
(field->flags & UNIQUE_KEY_FLAG) ? "UNI" :
@@ -6216,7 +6441,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
table->field[21]->set_notnull();
table->field[20]->store(STRING_WITH_LEN("ALWAYS"), cs);
- if (field->vcol_info->stored_in_db)
+ if (field->vcol_info->is_stored())
buf.set(STRING_WITH_LEN("STORED GENERATED"), cs);
else
buf.set(STRING_WITH_LEN("VIRTUAL GENERATED"), cs);
@@ -6253,6 +6478,12 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
}
table->field[17]->store(buf.ptr(), buf.length(), cs);
table->field[19]->store(field->comment.str, field->comment.length, cs);
+ const auto &vers= show_table->s->vers;
+ store_yesno(table->field[22], show_table->versioned() &&
+ vers.start_fieldno == field->field_index);
+ store_yesno(table->field[23], show_table->versioned() &&
+ vers.end_fieldno == field->field_index);
+
if (schema_table_store_record(thd, table))
DBUG_RETURN(1);
}
@@ -6281,7 +6512,9 @@ int fill_schema_charsets(THD *thd, TABLE_LIST *tables, COND *cond)
const char *comment;
restore_record(table, s->default_values);
table->field[0]->store(&tmp_cs->cs_name, scs);
- table->field[1]->store(&tmp_cs->coll_name, scs);
+ CHARSET_INFO *def_cl= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, tmp_cs);
+ table->field[1]->store(&def_cl->coll_name, scs);
comment= tmp_cs->comment ? tmp_cs->comment : "";
table->field[2]->store(comment, strlen(comment), scs);
table->field[3]->store((longlong) tmp_cs->mbmaxlen, TRUE);
@@ -6328,10 +6561,7 @@ static my_bool iter_schema_engines(THD *thd, plugin_ref plugin,
if (!(wild && wild[0] &&
wild_case_compare(scs, name->str,wild)))
{
- LEX_CSTRING yesno[2]= {{ STRING_WITH_LEN("NO") },
- { STRING_WITH_LEN("YES") }};
- LEX_CSTRING *tmp;
- const char *option_name= default_type != hton ? yesno[1].str
+ const char *option_name= default_type != hton ? "YES"
: "DEFAULT";
restore_record(table, s->default_values);
@@ -6339,14 +6569,12 @@ static my_bool iter_schema_engines(THD *thd, plugin_ref plugin,
table->field[1]->store(option_name, strlen(option_name), scs);
table->field[2]->store(plugin_decl(plugin)->descr,
strlen(plugin_decl(plugin)->descr), scs);
- tmp= &yesno[MY_TEST(hton->commit && !(hton->flags & HTON_NO_ROLLBACK))];
- table->field[3]->store(tmp->str, tmp->length, scs);
+ store_yesno(table->field[3],
+ hton->commit && !(hton->flags & HTON_NO_ROLLBACK));
table->field[3]->set_notnull();
- tmp= &yesno[MY_TEST(hton->prepare)];
- table->field[4]->store(tmp->str, tmp->length, scs);
+ store_yesno(table->field[4], hton->prepare);
table->field[4]->set_notnull();
- tmp= &yesno[MY_TEST(hton->savepoint_set)];
- table->field[5]->store(tmp->str, tmp->length, scs);
+ store_yesno(table->field[5], hton->savepoint_set);
table->field[5]->set_notnull();
if (schema_table_store_record(thd, table))
@@ -6384,6 +6612,8 @@ int fill_schema_collation(THD *thd, TABLE_LIST *tables, COND *cond)
(tmp_cs->state & MY_CS_HIDDEN) ||
!(tmp_cs->state & MY_CS_PRIMARY))
continue;
+ CHARSET_INFO *def_cl= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, tmp_cs);
for (cl= all_charsets;
cl < all_charsets + array_elements(all_charsets) ;
cl ++)
@@ -6425,7 +6655,7 @@ int fill_schema_collation(THD *thd, TABLE_LIST *tables, COND *cond)
table->field[2]->store((longlong) tmp_cl->number, TRUE);
table->field[3]->set_notnull(); // IS_DEFAULT
table->field[3]->store(
- Show::Yes_or_empty::value(tmp_cl->default_flag()), scs);
+ Show::Yes_or_empty::value(def_cl == tmp_cl), scs);
}
table->field[4]->store(
Show::Yes_or_empty::value(tmp_cl->compiled_flag()), scs);
@@ -6453,6 +6683,8 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond)
if (!tmp_cs || !(tmp_cs->state & MY_CS_AVAILABLE) ||
!(tmp_cs->state & MY_CS_PRIMARY))
continue;
+ CHARSET_INFO *def_cl= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, tmp_cs);
for (cl= all_charsets;
cl < all_charsets + array_elements(all_charsets) ;
cl ++)
@@ -6472,7 +6704,7 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond)
table->field[2]->store(full_collation_name, scs);
table->field[3]->store(tmp_cl->number);
table->field[4]->store(
- Show::Yes_or_empty::value(tmp_cl->default_flag()), scs);
+ Show::Yes_or_empty::value(def_cl == tmp_cl), scs);
if (schema_table_store_record(thd, table))
return 1;
}
@@ -6604,7 +6836,9 @@ int store_schema_params(THD *thd, TABLE *table, TABLE *proc_table,
DBUG_RETURN(0);
if (!full_access)
- full_access= !strcmp(sp_user, definer.str);
+ full_access= !strcmp(sp_user, definer.str) ||
+ !check_db_routine_access(thd, SHOW_CREATE_ROUTINE_ACL,
+ db.str, name.str, sph, TRUE);
if (!full_access &&
check_some_routine_access(thd, db.str, name.str, sph))
DBUG_RETURN(0);
@@ -6723,7 +6957,9 @@ int store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
return 0;
if (!full_access)
- full_access= !strcmp(sp_user, definer.str);
+ full_access= !strcmp(sp_user, definer.str) ||
+ !check_db_routine_access(thd, SHOW_CREATE_ROUTINE_ACL,
+ db.str, name.str, sph, TRUE);
if (!full_access &&
check_some_routine_access(thd, db.str, name.str, sph))
return 0;
@@ -6843,7 +7079,8 @@ int fill_schema_proc(THD *thd, TABLE_LIST *tables, COND *cond)
proc_tables.alias= MYSQL_PROC_NAME;
proc_tables.lock_type= TL_READ;
full_access= !check_table_access(thd, SELECT_ACL, &proc_tables, FALSE,
- 1, TRUE);
+ 1, TRUE) ||
+ !check_global_access(thd, SHOW_CREATE_ROUTINE_ACL, TRUE);
LOOKUP_FIELD_VALUES lookup;
if (get_lookup_field_values(thd, cond, false, tables, &lookup))
@@ -6934,24 +7171,7 @@ static int get_schema_stat_record(THD *thd, TABLE_LIST *tables,
{
CHARSET_INFO *cs= system_charset_info;
DBUG_ENTER("get_schema_stat_record");
- if (res)
- {
- if (thd->lex->sql_command != SQLCOM_SHOW_KEYS)
- {
- /*
- I.e. we are in SELECT FROM INFORMATION_SCHEMA.STATISTICS
- rather than in SHOW KEYS
- */
- if (unlikely(thd->is_error()))
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- res= 0;
- }
- DBUG_RETURN(res);
- }
- else if (!tables->view)
+ if (!tables->view)
{
TABLE *show_table= tables->table;
KEY *key_info=show_table->s->key_info;
@@ -6963,19 +7183,8 @@ static int get_schema_stat_record(THD *thd, TABLE_LIST *tables,
set_statistics_for_table(thd, show_table);
}
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- bool need_column_checks= false;
- /* we know that the table or at least some of the columns have
- necessary privileges, but the caller didn't pass down the GRANT_INFO
- object, so we have to rediscover everything again :( */
- if (!(thd->col_access & TABLE_ACLS))
- {
- check_grant(thd, SELECT_ACL, tables, 0, 1, 1);
-
- if (!(tables->grant.privilege & TABLE_ACLS))
- need_column_checks= true;
- }
-#endif
+ bool need_column_checks= !get_schema_privileges_for_show(thd, tables,
+ TABLE_ACLS, false);
for (uint i=0 ; i < show_table->s->keys ; i++,key_info++)
{
@@ -6986,13 +7195,12 @@ static int get_schema_stat_record(THD *thd, TABLE_LIST *tables,
LEX_CSTRING *str;
LEX_CSTRING unknown= {STRING_WITH_LEN("?unknown field?") };
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
if (need_column_checks)
{
uint j;
for (j=0 ; j < key_info->user_defined_key_parts ; j++,key_part++)
{
- uint access= get_column_grant(thd, &tables->grant, db_name->str,
+ auto access= get_column_grant(thd, &tables->grant, db_name->str,
table_name->str,
key_part->field->field_name.str);
@@ -7003,7 +7211,6 @@ static int get_schema_stat_record(THD *thd, TABLE_LIST *tables,
continue;
key_part= key_info->key_part;
}
-#endif
for (uint j=0 ; j < key_info->user_defined_key_parts ; j++,key_part++)
{
@@ -7083,8 +7290,7 @@ static int get_schema_stat_record(THD *thd, TABLE_LIST *tables,
key_info->comment.length, cs);
// IGNORED column
- const char *is_ignored= key_info->is_ignored ? "YES" : "NO";
- table->field[16]->store(is_ignored, strlen(is_ignored), cs);
+ store_yesno(table->field[16], key_info->is_ignored);
table->field[16]->set_notnull();
if (schema_table_store_record(thd, table))
@@ -7203,10 +7409,7 @@ static int get_schema_views_record(THD *thd, TABLE_LIST *tables,
if (updatable_view && !tables->view->can_be_merged())
updatable_view= 0;
}
- if (updatable_view)
- table->field[5]->store(STRING_WITH_LEN("YES"), cs);
- else
- table->field[5]->store(STRING_WITH_LEN("NO"), cs);
+ store_yesno(table->field[5], updatable_view);
}
definer_len= (uint)(strxmov(definer, tables->definer.user.str, "@",
@@ -7258,15 +7461,6 @@ static int get_check_constraints_record(THD *thd, TABLE_LIST *tables,
const LEX_CSTRING *table_name)
{
DBUG_ENTER("get_check_constraints_record");
- if (res)
- {
- if (thd->is_error())
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- DBUG_RETURN(0);
- }
if (!tables->view)
{
StringBuffer<MAX_FIELD_WIDTH> str(system_charset_info);
@@ -7310,31 +7504,12 @@ static int get_schema_constraints_record(THD *thd, TABLE_LIST *tables,
const LEX_CSTRING *table_name)
{
DBUG_ENTER("get_schema_constraints_record");
- if (res)
- {
- if (unlikely(thd->is_error()))
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- DBUG_RETURN(0);
- }
- else if (!tables->view)
+ if (!tables->view)
{
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
/* need any non-SELECT privilege on the table or any of its columns */
- const privilege_t need= TABLE_ACLS & ~SELECT_ACL;
- if (!(thd->col_access & need))
- {
- /* we know that the table or at least some of the columns have
- necessary privileges, but the caller didn't pass down the GRANT_INFO
- object, so we have to rediscover everything again :( */
- check_grant(thd, SELECT_ACL, tables, 0, 1, 1);
-
- if (!(tables->grant.all_privilege() & need))
- DBUG_RETURN(0);
- }
-#endif
+ if (!get_schema_privileges_for_show(thd, tables, TABLE_ACLS & ~SELECT_ACL,
+ true))
+ DBUG_RETURN(0);
List<FOREIGN_KEY_INFO> f_key_list;
TABLE *show_table= tables->table;
@@ -7447,19 +7622,6 @@ static int get_schema_triggers_record(THD *thd, TABLE_LIST *tables,
const LEX_CSTRING *table_name)
{
DBUG_ENTER("get_schema_triggers_record");
- /*
- res can be non zero value when processed table is a view or
- error happened during opening of processed table.
- */
- if (res)
- {
- if (unlikely(thd->is_error()))
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- DBUG_RETURN(0);
- }
if (!tables->view && tables->table->triggers)
{
Table_triggers_list *triggers= tables->table->triggers;
@@ -7489,41 +7651,43 @@ ret:
DBUG_RETURN(0);
}
+static int
+store_key_column_usage(TABLE *table, const LEX_CSTRING &db_name,
+ const LEX_CSTRING &table_name,
+ const LEX_CSTRING &key_name,
+ const LEX_CSTRING &col_name)
+{
+ CHARSET_INFO *cs= system_charset_info;
+ static const LEX_CSTRING def{STRING_WITH_LEN("def")};
+ const LEX_CSTRING *values[] { &def, &db_name, &key_name,
+ &def, &db_name, &table_name, &col_name };
+ for (uint i = 0; i < array_elements(values); i++)
+ table->field[i]->store(values[i], cs);
+ return 0;
+}
static void
store_key_column_usage(TABLE *table, const LEX_CSTRING *db_name,
const LEX_CSTRING *table_name, const char *key_name,
- size_t key_len, const char *con_type, size_t con_len,
+ size_t key_len, const char *col_name, size_t col_len,
longlong idx)
{
- CHARSET_INFO *cs= system_charset_info;
- table->field[0]->store(STRING_WITH_LEN("def"), cs);
- table->field[1]->store(db_name->str, db_name->length, cs);
- table->field[2]->store(key_name, key_len, cs);
- table->field[3]->store(STRING_WITH_LEN("def"), cs);
- table->field[4]->store(db_name->str, db_name->length, cs);
- table->field[5]->store(table_name->str, table_name->length, cs);
- table->field[6]->store(con_type, con_len, cs);
+ store_key_column_usage(table, *db_name, *table_name, {key_name, key_len},
+ {col_name, col_len});
table->field[7]->store((longlong) idx, TRUE);
}
-static int get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
- TABLE *table, bool res,
- const LEX_CSTRING *db_name,
- const LEX_CSTRING *table_name)
+static int
+get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
+ TABLE *table,
+ //!< @ref Show::key_column_usage_fields_info
+ bool res,
+ const LEX_CSTRING *db_name,
+ const LEX_CSTRING *table_name)
{
DBUG_ENTER("get_schema_key_column_usage_record");
- if (res)
- {
- if (unlikely(thd->is_error()))
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- DBUG_RETURN(0);
- }
- else if (!tables->view)
+ if (!tables->view)
{
List<FOREIGN_KEY_INFO> f_key_list;
TABLE *show_table= tables->table;
@@ -7532,19 +7696,8 @@ static int get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
show_table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK |
HA_STATUS_TIME);
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- bool need_column_checks= false;
- /* we know that the table or at least some of the columns have
- necessary privileges, but the caller didn't pass down the GRANT_INFO
- object, so we have to rediscover everything again :( */
- if (!(thd->col_access & TABLE_ACLS))
- {
- check_grant(thd, SELECT_ACL, tables, 0, 1, 1);
-
- if (!(tables->grant.privilege & TABLE_ACLS))
- need_column_checks= true;
- }
-#endif
+ bool need_column_checks= !get_schema_privileges_for_show(thd, tables,
+ TABLE_ACLS, false);
for (uint i=0 ; i < show_table->s->keys ; i++, key_info++)
{
@@ -7552,13 +7705,12 @@ static int get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
continue;
uint f_idx= 0;
KEY_PART_INFO *key_part= key_info->key_part;
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
if (need_column_checks)
{
uint j;
for (j=0 ; j < key_info->user_defined_key_parts ; j++,key_part++)
{
- uint access= get_column_grant(thd, &tables->grant, db_name->str,
+ auto access= get_column_grant(thd, &tables->grant, db_name->str,
table_name->str,
key_part->field->field_name.str);
@@ -7569,7 +7721,6 @@ static int get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
continue;
key_part= key_info->key_part;
}
-#endif
for (uint j=0 ; j < key_info->user_defined_key_parts ; j++,key_part++)
{
@@ -7601,7 +7752,7 @@ static int get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
{
while ((r_info= it1++))
{
- uint access= get_column_grant(thd, &tables->grant, db_name->str,
+ auto access= get_column_grant(thd, &tables->grant, db_name->str,
table_name->str, r_info->str);
if (!access)
@@ -7644,6 +7795,40 @@ static int get_schema_key_column_usage_record(THD *thd, TABLE_LIST *tables,
}
+static
+int get_schema_key_period_usage_record(THD *thd, TABLE_LIST *tables,
+ TABLE *schema_table, //!< @ref
+ //!< Show::key_period_usage_fields_info
+ bool res,
+ const LEX_CSTRING *db_name,
+ const LEX_CSTRING *table_name)
+{
+ const uint keys_total= tables->table->s->keys;
+ const KEY *keys= tables->table->s->key_info;
+ const Lex_ident &period_name= tables->table->s->period.name;
+ if (!period_name)
+ return 0;
+
+#ifndef NO_EMBEDDED_ACCESS_CHECKS
+ /* Need any non-SELECT privilege on the table or any of its columns */
+ if (!get_schema_privileges_for_show(thd, tables, TABLE_ACLS & ~SELECT_ACL,
+ true))
+ return 0;
+#endif
+
+ bool err= false;
+ for (uint k= 0; !err && k < keys_total; k++)
+ {
+ if (!keys[k].without_overlaps)
+ continue;
+ err= store_key_column_usage(schema_table, *db_name, *table_name,
+ keys[k].name, period_name);
+ err= err || schema_table_store_record(thd, schema_table);
+ }
+ return err;
+}
+
+
#ifdef WITH_PARTITION_STORAGE_ENGINE
static void collect_partition_expr(THD *thd, List<const char> &field_list,
String *str)
@@ -7778,15 +7963,6 @@ static int get_schema_partitions_record(THD *thd, TABLE_LIST *tables,
#endif
DBUG_ENTER("get_schema_partitions_record");
- if (res)
- {
- if (unlikely(thd->is_error()))
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- DBUG_RETURN(0);
- }
file= show_table->file;
#ifdef WITH_PARTITION_STORAGE_ENGINE
part_info= show_table->part_info;
@@ -8371,15 +8547,6 @@ get_referential_constraints_record(THD *thd, TABLE_LIST *tables,
LEX_CSTRING *s;
DBUG_ENTER("get_referential_constraints_record");
- if (res)
- {
- if (unlikely(thd->is_error()))
- push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
- thd->get_stmt_da()->sql_errno(),
- thd->get_stmt_da()->message());
- thd->clear_error();
- DBUG_RETURN(0);
- }
if (!tables->view)
{
List<FOREIGN_KEY_INFO> f_key_list;
@@ -8387,20 +8554,10 @@ get_referential_constraints_record(THD *thd, TABLE_LIST *tables,
show_table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK |
HA_STATUS_TIME);
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
/* need any non-SELECT privilege on the table or any of its columns */
- const privilege_t need= TABLE_ACLS & ~SELECT_ACL;
- if (!(thd->col_access & need))
- {
- /* we know that the table or at least some of the columns have
- necessary privileges, but the caller didn't pass down the GRANT_INFO
- object, so we have to rediscover everything again :( */
- check_grant(thd, SELECT_ACL, tables, 0, 1, 1);
-
- if (!(tables->grant.all_privilege() & need))
- DBUG_RETURN(0);
- }
-#endif
+ privilege_t need= TABLE_ACLS & ~SELECT_ACL;
+ if (!get_schema_privileges_for_show(thd, tables, need, true))
+ DBUG_RETURN(0);
show_table->file->get_foreign_key_list(thd, &f_key_list);
FOREIGN_KEY_INFO *f_key_info;
@@ -9006,7 +9163,6 @@ bool optimize_schema_tables_memory_usage(List<TABLE_LIST> &tables)
TMP_TABLE_PARAM *p= table_list->schema_table_param;
TMP_ENGINE_COLUMNDEF *from_recinfo, *to_recinfo;
DBUG_ASSERT(table->s->keys == 0);
- DBUG_ASSERT(table->s->uniques == 0);
uchar *cur= table->field[0]->ptr;
/* first recinfo could be a NULL bitmap, not an actual Field */
@@ -9069,6 +9225,10 @@ bool optimize_schema_tables_reads(JOIN *join)
tab;
tab= next_linear_tab(join, tab, WITH_BUSH_ROOTS))
{
+ /*
+ The following is true for the temporary table that will hold the
+ final result.
+ */
if (!tab->table || !tab->table->pos_in_table_list)
continue;
@@ -9140,6 +9300,10 @@ bool get_schema_tables_result(JOIN *join,
tab;
tab= next_linear_tab(join, tab, WITH_BUSH_ROOTS))
{
+ /*
+ The following is true for the temporary table that will hold the
+ final result.
+ */
if (!tab->table || !tab->table->pos_in_table_list)
break;
@@ -9370,6 +9534,49 @@ int fill_key_cache_tables(THD *thd, TABLE_LIST *tables, COND *cond)
}
+/* Ensure we return 'OPTIMIZER_COST_UNDEF' if cost < 0 */
+
+static double fix_cost(double cost)
+{
+ return cost < 0 ? OPTIMIZER_COST_UNDEF : cost;
+}
+
+static int run_fill_optimizer_costs_tables(const LEX_CSTRING *name,
+ const OPTIMIZER_COSTS *costs,
+ TABLE *table)
+{
+ THD *thd= table->in_use;
+ DBUG_ENTER("run_fill_optimizer_costs_tables");
+
+ restore_record(table, s->default_values);
+ table->field[0]->store(name->str, name->length, system_charset_info);
+ table->field[1]->store(fix_cost(costs->disk_read_cost*1000.0));
+ table->field[2]->store(fix_cost(costs->index_block_copy_cost*1000.0));
+ table->field[3]->store(fix_cost(costs->key_cmp_cost*1000.0));
+ table->field[4]->store(fix_cost(costs->key_copy_cost*1000.0));
+ table->field[5]->store(fix_cost(costs->key_lookup_cost*1000.0));
+ table->field[6]->store(fix_cost(costs->key_next_find_cost*1000.0));
+ table->field[7]->store(fix_cost(costs->disk_read_ratio));
+ table->field[8]->store(fix_cost(costs->row_copy_cost*1000.0));
+ table->field[9]->store(fix_cost(costs->row_lookup_cost*1000.0));
+ table->field[10]->store(fix_cost(costs->row_next_find_cost*1000.0));
+ table->field[11]->store(fix_cost(costs->rowid_cmp_cost*1000.0));
+ table->field[12]->store(fix_cost(costs->rowid_copy_cost*1000.0));
+
+ DBUG_RETURN(schema_table_store_record(thd, table));
+}
+
+
+int fill_optimizer_costs_tables(THD *thd, TABLE_LIST *tables, COND *cond)
+{
+ DBUG_ENTER("fill_optimizer_costs_tables");
+
+ int res= process_optimizer_costs(run_fill_optimizer_costs_tables,
+ tables->table);
+ DBUG_RETURN(res);
+}
+
+
namespace Show {
ST_FIELD_INFO schema_fields_info[]=
@@ -9445,7 +9652,9 @@ ST_FIELD_INFO columns_fields_info[]=
OPEN_FRM_ONLY),
Column("IS_GENERATED", Varchar(6), NOT_NULL, OPEN_FRM_ONLY),
Column("GENERATION_EXPRESSION", Longtext(MAX_FIELD_VARCHARLENGTH),
- NULLABLE, OPEN_FRM_ONLY),
+ NULLABLE, OPEN_FRM_ONLY), // 21
+ Column("IS_SYSTEM_TIME_PERIOD_START", Varchar(3), NOT_NULL, OPEN_FRM_ONLY), // 22
+ Column("IS_SYSTEM_TIME_PERIOD_END", Varchar(3), NOT_NULL, OPEN_FRM_ONLY), // 23
CEnd()
};
@@ -9709,6 +9918,18 @@ ST_FIELD_INFO key_column_usage_fields_info[]=
CEnd()
};
+ST_FIELD_INFO key_period_usage_fields_info[]=
+{
+ Column("CONSTRAINT_CATALOG", Catalog(), NOT_NULL, OPEN_FULL_TABLE),
+ Column("CONSTRAINT_SCHEMA", Name(), NOT_NULL, OPEN_FULL_TABLE),
+ Column("CONSTRAINT_NAME", Name(), NOT_NULL, OPEN_FULL_TABLE),
+ Column("TABLE_CATALOG", Catalog(), NOT_NULL, OPEN_FULL_TABLE),
+ Column("TABLE_SCHEMA", Name(), NOT_NULL, OPEN_FULL_TABLE),
+ Column("TABLE_NAME", Name(), NOT_NULL, OPEN_FULL_TABLE),
+ Column("PERIOD_NAME", Name(), NOT_NULL, OPEN_FULL_TABLE),
+ CEnd()
+};
+
ST_FIELD_INFO table_names_fields_info[]=
{
@@ -9822,6 +10043,17 @@ ST_FIELD_INFO sysvars_fields_info[]=
CEnd()
};
+ST_FIELD_INFO periods_fields_info[]=
+{
+ Column("TABLE_CATALOG", Catalog(), NOT_NULL, OPEN_FRM_ONLY),
+ Column("TABLE_SCHEMA", Name(), NOT_NULL, OPEN_FRM_ONLY),
+ Column("TABLE_NAME", Name(), NOT_NULL, OPEN_FRM_ONLY),
+ Column("PERIOD", Name(), NOT_NULL, OPEN_FRM_ONLY),
+ Column("START_COLUMN_NAME", Name(), NULLABLE, OPEN_FRM_ONLY),
+ Column("END_COLUMN_NAME", Name(), NULLABLE, OPEN_FRM_ONLY),
+ CEnd()
+};
+
ST_FIELD_INFO processlist_fields_info[]=
{
@@ -9839,12 +10071,13 @@ ST_FIELD_INFO processlist_fields_info[]=
Column("STAGE", STiny(2), NOT_NULL, "Stage"),
Column("MAX_STAGE", STiny(2), NOT_NULL, "Max_stage"),
Column("PROGRESS", Decimal(703), NOT_NULL, "Progress"),
- Column("MEMORY_USED", SLonglong(7), NOT_NULL, "Memory_used"),
- Column("MAX_MEMORY_USED",SLonglong(7), NOT_NULL, "Max_memory_used"),
- Column("EXAMINED_ROWS", SLong(7), NOT_NULL, "Examined_rows"),
- Column("QUERY_ID", SLonglong(4), NOT_NULL),
+ Column("MEMORY_USED", SLonglong(10), NOT_NULL, "Memory_used"),
+ Column("MAX_MEMORY_USED",SLonglong(10), NOT_NULL, "Max_memory_used"),
+ Column("EXAMINED_ROWS", SLonglong(10), NOT_NULL, "Examined_rows"),
+ Column("SENT_ROWS", SLonglong(10), NOT_NULL, "Sent_rows"),
+ Column("QUERY_ID", SLonglong(10), NOT_NULL),
Column("INFO_BINARY",Blob(PROCESS_LIST_INFO_WIDTH),NULLABLE, "Info_binary"),
- Column("TID", SLonglong(4), NOT_NULL, "Tid"),
+ Column("TID", SLonglong(10), NOT_NULL, "Tid"),
CEnd()
};
@@ -9998,6 +10231,25 @@ ST_FIELD_INFO keycache_fields_info[]=
};
+ST_FIELD_INFO optimizer_costs_fields_info[]=
+{
+ Column("ENGINE", Varchar(NAME_LEN),NOT_NULL),
+ Column("OPTIMIZER_DISK_READ_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_INDEX_BLOCK_COPY_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_KEY_COMPARE_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_KEY_COPY_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_KEY_LOOKUP_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_KEY_NEXT_FIND_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_DISK_READ_RATIO", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_ROW_COPY_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_ROW_LOOKUP_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_ROW_NEXT_FIND_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_ROWID_COMPARE_COST", Decimal(906), NOT_NULL),
+ Column("OPTIMIZER_ROWID_COPY_COST", Decimal(906), NOT_NULL),
+ CEnd()
+};
+
+
ST_FIELD_INFO show_explain_tabular_fields_info[]=
{
Column("id", SLonglong(3), NULLABLE, "id"),
@@ -10134,8 +10386,13 @@ ST_SCHEMA_TABLE schema_tables[]=
{"KEY_COLUMN_USAGE", Show::key_column_usage_fields_info, 0,
get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0,
OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY},
+ {"KEY_PERIOD_USAGE", Show::key_period_usage_fields_info, 0,
+ get_all_tables, 0, get_schema_key_period_usage_record, 4, 5, 0,
+ OPTIMIZE_I_S_TABLE | OPEN_FRM_FILE_ONLY},
{"OPEN_TABLES", Show::open_tables_fields_info, 0,
fill_open_tables, make_old_format, 0, -1, -1, 1, 0},
+ {"OPTIMIZER_COSTS", Show::optimizer_costs_fields_info, 0,
+ fill_optimizer_costs_tables, 0, 0, -1,-1, 0, 0},
{"OPTIMIZER_TRACE", Show::optimizer_trace_info, 0,
fill_optimizer_trace_info, NULL, NULL, -1, -1, false, 0},
{"PARAMETERS", Show::parameters_fields_info, 0,
@@ -10143,6 +10400,9 @@ ST_SCHEMA_TABLE schema_tables[]=
{"PARTITIONS", Show::partitions_fields_info, 0,
get_all_tables, 0, get_schema_partitions_record, 1, 2, 0,
OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY},
+ {"PERIODS", Show::periods_fields_info, 0,
+ get_all_tables, 0, get_schema_period_records, 1, 2, 0,
+ OPTIMIZE_I_S_TABLE | OPEN_TABLE_ONLY},
{"PLUGINS", Show::plugin_fields_info, 0,
fill_plugins, make_old_format, 0, -1, -1, 0, 0},
{"PROCESSLIST", Show::processlist_fields_info, 0,
@@ -10172,7 +10432,7 @@ ST_SCHEMA_TABLE schema_tables[]=
fill_sysvars, make_old_format, 0, 0, -1, 0, 0},
{"TABLES", Show::tables_fields_info, 0,
get_all_tables, make_old_format, get_schema_tables_record, 1, 2, 0,
- OPTIMIZE_I_S_TABLE},
+ OPTIMIZE_I_S_TABLE|I_S_EXTENDED_ERROR_HANDLING},
{"TABLESPACES", Show::tablespaces_fields_info, 0,
hton_fill_schema_table, 0, 0, -1, -1, 0, 0},
{"TABLE_CONSTRAINTS", Show::table_constraints_fields_info, 0,
@@ -10189,10 +10449,12 @@ ST_SCHEMA_TABLE schema_tables[]=
fill_schema_user_privileges, 0, 0, -1, -1, 0, 0},
{"VIEWS", Show::view_fields_info, 0,
get_all_tables, 0, get_schema_views_record, 1, 2, 0,
- OPEN_VIEW_ONLY|OPTIMIZE_I_S_TABLE},
+ OPEN_VIEW_ONLY|OPTIMIZE_I_S_TABLE|I_S_EXTENDED_ERROR_HANDLING},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
+static_assert(array_elements(schema_tables) == SCH_ENUM_SIZE + 1,
+ "Update enum_schema_tables as well.");
int initialize_schema_table(st_plugin_int *plugin)
{
diff --git a/sql/sql_show.h b/sql/sql_show.h
index 9a269b49..8795dded 100644
--- a/sql/sql_show.h
+++ b/sql/sql_show.h
@@ -96,6 +96,10 @@ static inline bool append_identifier(THD *thd, String *packet, const LEX_CSTRING
{
return append_identifier(thd, packet, name->str, name->length);
}
+
+bool append_identifier_opt_casedn(THD *thd, String *to,
+ const LEX_CSTRING &ident, bool casedn);
+
void mysqld_list_fields(THD *thd,TABLE_LIST *table, const char *wild);
int mysqld_dump_create_info(THD *thd, TABLE_LIST *table_list, int fd);
bool mysqld_show_create_get_fields(THD *thd, TABLE_LIST *table_list,
diff --git a/sql/sql_sort.h b/sql/sql_sort.h
index 82e1f492..2b2c08b5 100644
--- a/sql/sql_sort.h
+++ b/sql/sql_sort.h
@@ -542,14 +542,25 @@ to be fixed later
class Sort_param {
public:
- uint rec_length; // Length of sorted records.
- uint sort_length; // Length of sorted columns.
+ // Length of sorted records. ALWAYS equal to sort_length + addon_length
+ uint rec_length;
+ /*
+ Length of what we need to sort: Sorted columns + ref_length if not
+ addon fields are used
+ */
+ uint sort_length;
+ /* Length of the reference to the row (rowid or primary key etc */
uint ref_length; // Length of record ref.
+ /* Length of all addon fields. 0 if no addon fields */
uint addon_length; // Length of addon_fields
- uint res_length; // Length of records in final sorted file/buffer.
+ /*
+ The length of the 'result' we are going to return to the caller for
+ each sort element. Also the length of data in final sorted file/buffer.
+ */
+ uint res_length;
uint max_keys_per_buffer; // Max keys / buffer.
uint min_dupl_count;
- ha_rows max_rows; // Select limit, or HA_POS_ERROR if unlimited.
+ ha_rows limit_rows; // Select limit, or HA_POS_ERROR if unlimited.
ha_rows examined_rows; // Number of examined rows.
TABLE *sort_form; // For quicker make_sortkey.
/**
@@ -580,10 +591,14 @@ public:
*/
tmp_buffer.set_charset(&my_charset_bin);
}
- void init_for_filesort(uint sortlen, TABLE *table,
- ha_rows maxrows, Filesort *filesort);
- void (*unpack)(TABLE *);
+ void init_for_filesort(TABLE *table, Filesort *filesort,
+ uint sortlen, ha_rows limit_rows_arg);
+ void setup_lengths_and_limit(TABLE *table,
+ uint sortlen,
+ uint addon_length,
+ ha_rows limit_rows_arg);
+ void (*unpack)(TABLE *);
/// Enables the packing of addons if possible.
void try_to_pack_addons(ulong max_length_for_sort_data);
diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc
index e552bab0..bdff67df 100644
--- a/sql/sql_statistics.cc
+++ b/sql/sql_statistics.cc
@@ -4117,13 +4117,17 @@ PRAGMA_REENABLE_CHECK_STACK_FRAME
void set_statistics_for_table(THD *thd, TABLE *table)
{
- TABLE_STATISTICS_CB *stats_cb= table->stats_cb;
-
+ TABLE_STATISTICS_CB *stats_cb= table->s->stats_cb;
Table_statistics *read_stats= stats_cb ? stats_cb->table_stats : 0;
- table->used_stat_records=
+
+ /*
+ The MAX below is to ensure that we don't return 0 rows for a table if it
+ not guaranteed to be empty.
+ */
+ table->used_stat_records=
(!check_eits_preferred(thd) ||
!table->stats_is_read || !read_stats || read_stats->cardinality_is_null) ?
- table->file->stats.records : read_stats->cardinality;
+ table->file->stats.records : MY_MAX(read_stats->cardinality, 1);
/*
For partitioned table, EITS statistics is based on data from all partitions.
@@ -4484,7 +4488,7 @@ bool is_eits_usable(Field *field)
Column_statistics* col_stats= field->read_stats;
// check if column_statistics was allocated for this field
- if (!col_stats || !field->table->stats_is_read)
+ if (!col_stats || !field->orig_table->stats_is_read)
return false;
/*
@@ -4498,8 +4502,8 @@ bool is_eits_usable(Field *field)
return !col_stats->no_stat_values_provided() && //(1)
field->type() != MYSQL_TYPE_GEOMETRY && //(2)
#ifdef WITH_PARTITION_STORAGE_ENGINE
- (!field->table->part_info ||
- !field->table->part_info->field_in_partition_expr(field)) && //(3)
+ (!field->orig_table->part_info ||
+ !field->orig_table->part_info->field_in_partition_expr(field)) && //(3)
#endif
true;
}
diff --git a/sql/sql_string.cc b/sql/sql_string.cc
index f5edb1a5..79df1e0f 100644
--- a/sql/sql_string.cc
+++ b/sql/sql_string.cc
@@ -1132,7 +1132,6 @@ String_copier::well_formed_copy(CHARSET_INFO *to_cs,
}
-
/*
Append characters to a single-quoted string '...', escaping special
characters with backslashes as necessary.
diff --git a/sql/sql_string.h b/sql/sql_string.h
index 3b90f2c4..36cde655 100644
--- a/sql/sql_string.h
+++ b/sql/sql_string.h
@@ -1065,13 +1065,6 @@ public:
}
// Append with optional character set conversion from ASCII (e.g. to UCS2)
- bool append(const LEX_STRING *ls)
- {
- DBUG_ASSERT(ls->length < UINT_MAX32 &&
- ((ls->length == 0 && !ls->str) ||
- ls->length == strlen(ls->str)));
- return append(ls->str, (uint32) ls->length);
- }
bool append(const LEX_CSTRING *ls)
{
DBUG_ASSERT(ls->length < UINT_MAX32 &&
@@ -1190,11 +1183,12 @@ public:
static my_wc_t escaped_wc_for_single_quote(my_wc_t ch)
{
- switch (ch)
- {
+ switch (ch) {
case '\\': return '\\';
case '\0': return '0';
case '\'': return '\'';
+ case '\b': return 'b';
+ case '\t': return 't';
case '\n': return 'n';
case '\r': return 'r';
case '\032': return 'Z';
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index c2306c53..c46ed3c8 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -55,6 +55,7 @@
#include "sql_audit.h"
#include "sql_sequence.h"
#include "tztime.h"
+#include "rpl_rli.h"
#include "sql_insert.h" // binlog_drop_table
#include "ddl_log.h"
#include "debug.h" // debug_crash_here()
@@ -94,6 +95,7 @@ class Enable_wsrep_ctas_guard
#endif /* WITH_WSREP */
#include "sql_debug.h"
+#include "scope.h"
#ifdef _WIN32
#include <io.h>
@@ -111,9 +113,11 @@ static bool make_unique_constraint_name(THD *, LEX_CSTRING *, const char *,
List<Virtual_column_info> *, uint *);
static const char *make_unique_invisible_field_name(THD *, const char *,
List<Create_field> *);
-static int copy_data_between_tables(THD *, TABLE *,TABLE *, bool, uint,
- ORDER *, ha_rows *, ha_rows *,
- Alter_info *, Alter_table_ctx *);
+static int copy_data_between_tables(THD *, TABLE *,TABLE *,
+ bool, uint, ORDER *,
+ ha_rows *, ha_rows *,
+ Alter_info *,
+ Alter_table_ctx *, bool, uint64);
static int append_system_key_parts(THD *, HA_CREATE_INFO *, Key *);
static int mysql_prepare_create_table(THD *, HA_CREATE_INFO *, Alter_info *,
uint *, handler *, KEY **, uint *, int);
@@ -670,20 +674,11 @@ void build_lower_case_table_filename(char *buff, size_t bufflen,
const LEX_CSTRING *table,
uint flags)
{
- char table_name[SAFE_NAME_LEN+1], db_name[SAFE_NAME_LEN+1];
-
DBUG_ASSERT(db->length <= SAFE_NAME_LEN && table->length <= SAFE_NAME_LEN);
-
- memcpy(db_name, db->str, db->length);
- db_name[db->length]= 0;
- my_casedn_str(files_charset_info, db_name);
-
- memcpy(table_name, table->str, table->length);
- table_name[table->length]= 0;
- my_casedn_str(files_charset_info, table_name);
-
- build_table_filename(buff, bufflen, db_name, table_name, "",
- flags & FN_IS_TMP);
+ build_table_filename(buff, bufflen,
+ IdentBufferCasedn<SAFE_NAME_LEN>(*db).to_lex_cstring().str,
+ IdentBufferCasedn<SAFE_NAME_LEN>(*table).to_lex_cstring().str, "",
+ flags & FN_IS_TMP);
}
@@ -2135,7 +2130,8 @@ static int sort_keys(KEY *a, KEY *b)
return -1;
/*
Long Unique keys should always be last unique key.
- Before this patch they used to change order wrt to partial keys (MDEV-19049)
+ Before this patch they used to change order wrt to partial keys
+ (MDEV-19049)
*/
if (a->algorithm == HA_KEY_ALG_LONG_HASH)
return 1;
@@ -2230,10 +2226,12 @@ bool check_duplicates_in_interval(const char *set_or_name,
Generates an error to the diagnostics area in case of a failure.
*/
bool Column_definition::
- prepare_charset_for_string(const Column_derived_attributes *dattr)
+ prepare_charset_for_string(Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Column_derived_attributes *dattr)
{
CHARSET_INFO *tmp= charset_collation_attrs().
- resolved_to_character_set(dattr->charset());
+ resolved_to_character_set(used, map, dattr->charset());
if (!tmp)
return true;
charset= tmp;
@@ -2632,7 +2630,7 @@ static Create_field * add_hash_field(THD * thd, List<Create_field> *create_list,
cf->invisible= INVISIBLE_FULL;
cf->pack_flag|= FIELDFLAG_MAYBE_NULL;
cf->vcol_info= new (thd->mem_root) Virtual_column_info();
- cf->vcol_info->stored_in_db= false;
+ cf->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
uint num= 1;
LEX_CSTRING field_name;
field_name.str= (char *)thd->alloc(LONG_HASH_FIELD_NAME_LENGTH);
@@ -3745,7 +3743,7 @@ without_overlaps_err:
{
if (sql_field->vcol_info && sql_field->vcol_info->expr &&
check_expression(sql_field->vcol_info, &sql_field->field_name,
- sql_field->vcol_info->stored_in_db
+ sql_field->vcol_info->is_stored()
? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL,
alter_info))
DBUG_RETURN(TRUE);
@@ -4303,7 +4301,7 @@ handler *mysql_create_frm_image(THD *thd, HA_CREATE_INFO *create_info,
{
if (key->type == Key::FOREIGN_KEY)
{
- my_error(ER_FEATURE_NOT_SUPPORTED_WITH_PARTITIONING, MYF(0),
+ my_error(ER_FEATURE_NOT_SUPPORTED_WITH_PARTITIONING, MYF(0),
"FOREIGN KEY");
goto err;
}
@@ -4435,8 +4433,8 @@ int create_table_impl(THD *thd,
If a table exists, it must have been pre-opened. Try looking for one
in-use in THD::all_temp_tables list of TABLE_SHAREs.
*/
- TABLE *tmp_table= thd->find_temporary_table(db.str, table_name.str,
- THD::TMP_TABLE_ANY);
+ TABLE *tmp_table= internal_tmp_table ? NULL :
+ thd->find_temporary_table(db.str, table_name.str, THD::TMP_TABLE_ANY);
if (tmp_table)
{
@@ -9600,25 +9598,19 @@ static bool fk_prepare_copy_alter_table(THD *thd, TABLE *table,
continue;
Foreign_key *fk= static_cast<Foreign_key*>(key);
- char dbuf[NAME_LEN];
- char tbuf[NAME_LEN];
- const char *ref_db= (fk->ref_db.str ?
- fk->ref_db.str :
- alter_ctx->new_db.str);
- const char *ref_table= fk->ref_table.str;
+ IdentBuffer<NAME_LEN> dbuf, tbuf;
+ LEX_CSTRING ref_db= fk->ref_db.str ? fk->ref_db : alter_ctx->new_db;
+ LEX_CSTRING ref_table= fk->ref_table;
MDL_request mdl_request;
if (lower_case_table_names)
{
- strmake_buf(dbuf, ref_db);
- my_casedn_str(system_charset_info, dbuf);
- strmake_buf(tbuf, ref_table);
- my_casedn_str(system_charset_info, tbuf);
- ref_db= dbuf;
- ref_table= tbuf;
+ ref_db= dbuf.copy_casedn(ref_db).to_lex_cstring();
+ ref_table= tbuf.copy_casedn(ref_table).to_lex_cstring();
}
- MDL_REQUEST_INIT(&mdl_request, MDL_key::TABLE, ref_db, ref_table,
+ MDL_REQUEST_INIT(&mdl_request, MDL_key::TABLE,
+ ref_db.str, ref_table.str,
MDL_SHARED_NO_WRITE, MDL_TRANSACTION);
if (thd->mdl_context.acquire_lock(&mdl_request,
thd->variables.lock_wait_timeout))
@@ -10065,6 +10057,152 @@ static uint64 get_start_alter_id(THD *thd)
}
+static
+bool online_alter_check_autoinc(const THD *thd, const Alter_info *alter_info,
+ const TABLE *table)
+{
+ /*
+ We can't go online, if all of the following is presented:
+ * Autoinc is added to existing field
+ * Disabled NO_AUTO_VALUE_ON_ZERO
+ * No non-nullable unique key in the old table, that has all the key parts
+ remaining unchanged.
+ */
+
+ // Exit earlier when possible
+ if (thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO)
+ return true;
+ if ((alter_info->flags | ALTER_CHANGE_COLUMN) != alter_info->flags)
+ return true;
+
+ /*
+ Find at least one unique index (without NULLs), all columns of which
+ remain in the table unchanged to presume it's a safe ALTER TABLE.
+ */
+ for (uint k= 0; k < table->s->keys; k++)
+ {
+ const KEY &key= table->key_info[k];
+ if ((key.flags & HA_NOSAME) == 0 || key.flags & HA_NULL_PART_KEY)
+ continue;
+ bool key_parts_good= true;
+ for (uint kp= 0; kp < key.user_defined_key_parts && key_parts_good; kp++)
+ {
+ const Field *f= key.key_part[kp].field;
+ // tmp_set contains dropped fields after mysql_prepare_alter_table
+ key_parts_good= !bitmap_is_set(&table->tmp_set, f->field_index);
+
+ if (key_parts_good)
+ for (const auto &c: alter_info->create_list)
+ if (c.field == f)
+ {
+ key_parts_good= f->is_equal(c);
+ break;
+ }
+ }
+ if (key_parts_good)
+ return true;
+ }
+
+ for (const auto &c: alter_info->create_list)
+ {
+ if (c.flags & AUTO_INCREMENT_FLAG)
+ {
+ if (c.field && !(c.field->flags & AUTO_INCREMENT_FLAG))
+ return false;
+ break;
+ }
+ }
+ return true;
+}
+
+static
+const char *online_alter_check_supported(const THD *thd,
+ const Alter_info *alter_info,
+ const TABLE *table,
+ const TABLE *new_table, bool *online)
+{
+ DBUG_ASSERT(*online);
+
+ *online= thd->locked_tables_mode != LTM_LOCK_TABLES && !table->s->tmp_table;
+ if (!*online)
+ return NULL;
+
+ *online= (new_table->file->ha_table_flags() & HA_NO_ONLINE_ALTER) == 0;
+ if (!*online)
+ return new_table->file->engine_name()->str;
+
+ *online= table->s->sequence == NULL;
+ if (!*online)
+ return "SEQUENCE";
+
+ *online= (alter_info->flags & ALTER_DROP_SYSTEM_VERSIONING) == 0;
+ if (!*online)
+ return "DROP SYSTEM VERSIONING";
+
+ *online= !thd->lex->ignore;
+ if (!*online)
+ return "ALTER IGNORE TABLE";
+
+ *online= !table->versioned(VERS_TRX_ID);
+ if (!*online)
+ return "BIGINT GENERATED ALWAYS AS ROW_START";
+
+ List<FOREIGN_KEY_INFO> fk_list;
+ table->file->get_foreign_key_list(thd, &fk_list);
+ for (auto &fk: fk_list)
+ {
+ if (fk_modifies_child(fk.delete_method) ||
+ fk_modifies_child(fk.update_method))
+ {
+ *online= false;
+ // Don't fall to a common unsupported case to avoid heavy string ops.
+ if (alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_NONE)
+ {
+ return fk_modifies_child(fk.delete_method)
+ ? thd->strcat({STRING_WITH_LEN("ON DELETE ")},
+ *fk_option_name(fk.delete_method)).str
+ : thd->strcat({STRING_WITH_LEN("ON UPDATE ")},
+ *fk_option_name(fk.update_method)).str;
+ }
+ return NULL;
+ }
+ }
+
+ for (auto &c: alter_info->create_list)
+ {
+ *online= c.field || !(c.flags & AUTO_INCREMENT_FLAG);
+ if (!*online)
+ return "ADD COLUMN ... AUTO_INCREMENT";
+
+ auto *def= c.default_value;
+ *online= !(def && def->flags & VCOL_NEXTVAL
+ // either it's a new field, or a NULL -> NOT NULL change
+ && (!c.field || (!(c.field->flags & NOT_NULL_FLAG)
+ && (c.flags & NOT_NULL_FLAG))));
+ if (!*online)
+ {
+ if (alter_info->requested_lock != Alter_info::ALTER_TABLE_LOCK_NONE)
+ return NULL; // Avoid heavy string op
+ const char *fmt= ER_THD(thd, ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED);
+
+ LEX_CSTRING dflt{STRING_WITH_LEN("DEFAULT")};
+ LEX_CSTRING nxvl{STRING_WITH_LEN("NEXTVAL()")};
+ size_t len= strlen(fmt) + nxvl.length + c.field_name.length + dflt.length;
+ char *resp= (char*)thd->alloc(len);
+ // expression %s cannot be used in the %s clause of %`s
+ my_snprintf(resp, len, fmt, nxvl.str, dflt.str, c.field_name.str);
+ return resp;
+ }
+ }
+
+ *online= online_alter_check_autoinc(thd, alter_info, table);
+ if (!*online)
+ return "CHANGE COLUMN ... AUTO_INCREMENT";
+
+ return NULL;
+}
+
+
/**
Alter table
@@ -10152,6 +10290,11 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
MDL_request target_mdl_request;
MDL_ticket *mdl_ticket= 0;
Alter_table_prelocking_strategy alter_prelocking_strategy;
+#ifdef HAVE_REPLICATION
+ bool online= order == NULL && !opt_bootstrap;
+#else
+ bool online= false;
+#endif
TRIGGER_RENAME_PARAM trigger_param;
/*
@@ -10235,6 +10378,24 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
*/
table_list->required_type= TABLE_TYPE_NORMAL;
+ if ((alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_DEFAULT
+ && (thd->variables.old_behavior & OLD_MODE_LOCK_ALTER_TABLE_COPY))
+ || alter_info->requested_lock > Alter_info::ALTER_TABLE_LOCK_NONE
+ || thd->lex->sql_command == SQLCOM_OPTIMIZE
+ || alter_info->algorithm(thd) > Alter_info::ALTER_TABLE_ALGORITHM_COPY)
+ online= false;
+
+ if (online)
+ {
+ table_list->lock_type= TL_READ;
+ }
+
+ enum_tx_isolation iso_level_initial= thd->tx_isolation;
+ SCOPE_EXIT([thd, iso_level_initial](){
+ thd->tx_isolation= iso_level_initial;
+ });
+ thd->tx_isolation= ISO_REPEATABLE_READ;
+
DEBUG_SYNC(thd, "alter_table_before_open_tables");
thd->open_options|= HA_OPEN_FOR_ALTER;
@@ -10265,7 +10426,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
table= table_list->table;
bool is_reg_table= table->s->tmp_table == NO_TMP_TABLE;
-
+
#ifdef WITH_WSREP
/*
If this ALTER TABLE is actually SEQUENCE we need to check
@@ -10334,8 +10495,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
a new one if needed.
*/
table->s->tdc->flushed= 1; // Force close of all instances
- if (thd->mdl_context.upgrade_shared_lock(mdl_ticket,
- MDL_EXCLUSIVE,
+ if (thd->mdl_context.upgrade_shared_lock(mdl_ticket, MDL_EXCLUSIVE,
thd->variables.lock_wait_timeout))
DBUG_RETURN(1);
quick_rm_table(thd, table->file->ht, &table_list->db,
@@ -10344,8 +10504,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
goto end_inplace;
}
if (!if_exists &&
- (table->file->partition_ht()->flags &
- HTON_TABLE_MAY_NOT_EXIST_ON_SLAVE))
+ (table->file->partition_ht()->flags & HTON_TABLE_MAY_NOT_EXIST_ON_SLAVE))
{
/*
Table is a shared table that may not exist on the slave.
@@ -10485,7 +10644,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
till this point for the alter operation.
*/
if ((alter_info->flags & ALTER_ADD_FOREIGN_KEY) &&
- check_fk_parent_table_access(thd, create_info, alter_info, new_db->str))
+ check_fk_parent_table_access(thd, create_info, alter_info, *new_db))
DBUG_RETURN(true);
/*
@@ -10784,31 +10943,25 @@ do_continue:;
#endif /* WITH_WSREP */
/*
- Use copy algorithm if:
- - old_alter_table system variable is set without in-place requested using
- the ALGORITHM clause.
- - Or if in-place is impossible for given operation.
+ We can use only copy algorithm if one of the following is true:
+ - In-place is impossible for given operation.
- Changes to partitioning which were not handled by fast_alter_part_table()
needs to be handled using table copying algorithm unless the engine
supports auto-partitioning as such engines can do some changes
using in-place API.
*/
- if ((thd->variables.alter_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_COPY &&
- alter_info->algorithm(thd) !=
- Alter_info::ALTER_TABLE_ALGORITHM_INPLACE)
- || is_inplace_alter_impossible(table, create_info, alter_info)
+ if (is_inplace_alter_impossible(table, create_info, alter_info)
|| IF_PARTITIONING((partition_changed &&
- !(old_db_type->partition_flags() & HA_USE_AUTO_PARTITION)), 0))
+ !(old_db_type->partition_flags() & HA_USE_AUTO_PARTITION)), 0))
{
- if (alter_info->algorithm(thd) ==
- Alter_info::ALTER_TABLE_ALGORITHM_INPLACE)
+ if (alter_info->algorithm_is_nocopy(thd))
{
my_error(ER_ALTER_OPERATION_NOT_SUPPORTED, MYF(0),
- "ALGORITHM=INPLACE", "ALGORITHM=COPY");
+ alter_info->algorithm_clause(thd), "ALGORITHM=COPY");
DBUG_RETURN(true);
}
- alter_info->set_requested_algorithm(
- Alter_info::ALTER_TABLE_ALGORITHM_COPY);
+
+ alter_info->set_requested_algorithm(Alter_info::ALTER_TABLE_ALGORITHM_COPY);
}
/*
@@ -11059,7 +11212,7 @@ do_continue:;
}
if (alter_info->supports_algorithm(thd, &ha_alter_info) ||
- alter_info->supports_lock(thd, &ha_alter_info))
+ alter_info->supports_lock(thd, online, &ha_alter_info))
{
cleanup_table_after_inplace_alter(&altered_table);
goto err_new_table_cleanup;
@@ -11117,16 +11270,6 @@ do_continue:;
if (!table->s->tmp_table)
{
- // COPY algorithm doesn't work with concurrent writes.
- if (alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_NONE)
- {
- my_error(ER_ALTER_OPERATION_NOT_SUPPORTED_REASON, MYF(0),
- "LOCK=NONE",
- ER_THD(thd, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY),
- "LOCK=SHARED");
- goto err_new_table_cleanup;
- }
-
// If EXCLUSIVE lock is requested, upgrade already.
if (alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_EXCLUSIVE &&
wait_while_table_is_used(thd, table, HA_EXTRA_FORCE_REOPEN))
@@ -11184,11 +11327,9 @@ do_continue:;
DEBUG_SYNC(thd, "alter_table_intermediate_table_created");
/* Open the table since we need to copy the data. */
- new_table= thd->create_and_open_tmp_table(&frm,
- alter_ctx.get_tmp_path(),
+ new_table= thd->create_and_open_tmp_table(&frm, alter_ctx.get_tmp_path(),
alter_ctx.new_db.str,
- alter_ctx.new_name.str,
- true);
+ alter_ctx.new_name.str, true);
if (!new_table)
goto err_new_table_cleanup;
@@ -11198,6 +11339,21 @@ do_continue:;
thd->session_tracker.state_change.mark_as_changed(thd);
}
+ if (online)
+ {
+ const char *reason= online_alter_check_supported(thd, alter_info, table,
+ new_table,
+ &online);
+ if (reason &&
+ alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_NONE)
+ {
+ DBUG_ASSERT(!online);
+ my_error(ER_ALTER_OPERATION_NOT_SUPPORTED_REASON, MYF(0),
+ "LOCK=NONE", reason, "LOCK=SHARED");
+ goto err_new_table_cleanup;
+ }
+ }
+
/*
Note: In case of MERGE table, we do not attach children. We do not
copy data for MERGE tables. Only the children have data.
@@ -11265,11 +11421,22 @@ do_continue:;
binlog_as_create_select= 1;
DBUG_ASSERT(new_table->file->row_logging);
new_table->mark_columns_needed_for_insert();
- thd->binlog_write_table_map(new_table, 1);
+ mysql_bin_log.write_table_map(thd, new_table, 1);
}
- if (copy_data_between_tables(thd, table, new_table, ignore, order_num,
- order, &copied, &deleted, alter_info,
- &alter_ctx))
+
+ /*
+ if ORDER BY: sorting
+ always: copying, building indexes.
+ if online: reading up the binlog (second binlog is being written)
+ reading up the second binlog under exclusive lock
+ */
+ thd_progress_init(thd, MY_TEST(order) + 2 + 2 * MY_TEST(online));
+
+ if (copy_data_between_tables(thd, table, new_table,
+ ignore,
+ order_num, order, &copied, &deleted,
+ alter_info,
+ &alter_ctx, online, start_alter_id))
goto err_new_table_cleanup;
}
else
@@ -11433,6 +11600,8 @@ do_continue:;
NULL);
table_list->table= table= NULL; /* Safety */
+ thd_progress_end(thd);
+
DBUG_PRINT("info", ("is_table_renamed: %d engine_changed: %d",
alter_ctx.is_table_renamed(), engine_changed));
@@ -11580,7 +11749,7 @@ end_inplace:
thd->is_current_stmt_binlog_format_row() &&
(create_info->tmp_table())));
- if(start_alter_id)
+ if (start_alter_id)
{
if (!is_reg_table)
{
@@ -11662,6 +11831,8 @@ err_new_table_cleanup:
DBUG_PRINT("error", ("err_new_table_cleanup"));
thd->variables.option_bits&= ~OPTION_BIN_COMMIT_OFF;
+ thd_progress_end(thd);
+
/*
No default value was provided for a DATE/DATETIME field, the
current sql_mode doesn't allow the '0000-00-00' value and
@@ -11766,12 +11937,74 @@ bool mysql_trans_commit_alter_copy_data(THD *thd)
DBUG_RETURN(error);
}
+#ifdef HAVE_REPLICATION
+/*
+ locking ALTER TABLE doesn't issue ER_NO_DEFAULT_FOR_FIELD, so online
+ ALTER shouldn't either
+*/
+class Has_default_error_handler : public Internal_error_handler
+{
+public:
+ bool handle_condition(THD *, uint sql_errno, const char *,
+ Sql_condition::enum_warning_level *,
+ const char *, Sql_condition **)
+ {
+ return sql_errno == ER_NO_DEFAULT_FOR_FIELD;
+ }
+};
+
+
+static int online_alter_read_from_binlog(THD *thd, rpl_group_info *rgi,
+ Cache_flip_event_log *log,
+ ha_rows *found_rows)
+{
+ int error= 0;
+
+ IO_CACHE *log_file= log->flip();
+
+ thd_progress_report(thd, 1, MY_MAX(1, my_b_write_tell(log_file)));
+
+ Has_default_error_handler hdeh;
+ thd->push_internal_handler(&hdeh);
+ do
+ {
+ const auto *descr_event= rgi->rli->relay_log.description_event_for_exec;
+ auto *ev= Log_event::read_log_event(log_file, descr_event, 0, 1, ~0UL);
+ error= log_file->error;
+ if (unlikely(!ev))
+ {
+ if (error)
+ my_error(ER_IO_READ_ERROR,MYF(0), (ulong)EIO, strerror(EIO), "");
+ break;
+ }
+ DBUG_ASSERT(!error);
+
+ ev->thd= thd;
+ error= ev->apply_event(rgi);
+
+ error= error || thd->is_error();
+ if(likely(!error))
+ ev->online_alter_update_row_count(found_rows);
+
+ if (ev != rgi->rli->relay_log.description_event_for_exec)
+ delete ev;
+ thd_progress_report(thd, my_b_tell(log_file), thd->progress.max_counter);
+ DEBUG_SYNC(thd, "alter_table_online_progress");
+ } while(!error);
+ thd->pop_internal_handler();
+
+ return MY_TEST(error);
+}
+#endif
static int
-copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
- uint order_num, ORDER *order, ha_rows *copied,
- ha_rows *deleted, Alter_info *alter_info,
- Alter_table_ctx *alter_ctx)
+copy_data_between_tables(THD *thd, TABLE *from, TABLE *to,
+ bool ignore,
+ uint order_num, ORDER *order,
+ ha_rows *copied, ha_rows *deleted,
+ Alter_info *alter_info,
+ Alter_table_ctx *alter_ctx, bool online,
+ uint64 start_alter_id)
{
int error= 1;
Copy_field *copy= NULL, *copy_end;
@@ -11796,9 +12029,6 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
MYSQL_TIME query_start;
DBUG_ENTER("copy_data_between_tables");
- /* Two or 3 stages; Sorting, copying data and update indexes */
- thd_progress_init(thd, 2 + MY_TEST(order));
-
if (!(copy= new (thd->mem_root) Copy_field[to->s->fields]))
DBUG_RETURN(-1);
@@ -11840,6 +12070,7 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
Create_field *def;
copy_end=copy;
to->s->default_fields= 0;
+ error= 1;
for (Field **ptr=to->field ; *ptr ; ptr++)
{
def=it++;
@@ -11958,145 +12189,171 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
if (!ignore) /* for now, InnoDB needs the undo log for ALTER IGNORE */
to->file->extra(HA_EXTRA_BEGIN_ALTER_COPY);
- while (likely(!(error= info.read_record())))
+ if (!(error= info.read_record()))
{
- if (unlikely(thd->killed))
+#ifdef HAVE_REPLICATION
+ if (online)
{
- thd->send_kill_message();
- error= 1;
- break;
- }
+ DBUG_ASSERT(from->s->online_alter_binlog == NULL);
+ from->s->online_alter_binlog= new Cache_flip_event_log();
+ if (!from->s->online_alter_binlog)
+ goto err;
+ from->s->online_alter_binlog->init_pthread_objects();
+ error= from->s->online_alter_binlog->open(WRITE_CACHE);
- if (make_unversioned)
- {
- if (!from_row_end->is_max())
- continue; // Drop history rows.
- }
+ if (error)
+ {
+ from->s->online_alter_binlog->release();
+ from->s->online_alter_binlog= NULL;
+ goto err;
+ }
- if (unlikely(++thd->progress.counter >= time_to_report_progress))
- {
- time_to_report_progress+= MY_HOW_OFTEN_TO_WRITE/10;
- thd_progress_report(thd, thd->progress.counter,
- thd->progress.max_counter);
+ from->mdl_ticket->downgrade_lock(MDL_SHARED_UPGRADABLE);
+ DEBUG_SYNC(thd, "alter_table_online_downgraded");
}
+#else
+ DBUG_ASSERT(!online);
+#endif // HAVE_REPLICATION
- /* Return error if source table isn't empty. */
- if (unlikely(alter_ctx->error_if_not_empty))
+ do
{
- error= 1;
- break;
- }
+ if (unlikely(thd->killed))
+ {
+ thd->send_kill_message();
+ error= 1;
+ break;
+ }
- for (Copy_field *copy_ptr=copy ; copy_ptr != copy_end ; copy_ptr++)
- {
- copy_ptr->do_copy(copy_ptr);
- }
+ if (make_unversioned)
+ {
+ if (!from_row_end->is_max())
+ continue; // Drop history rows.
+ }
- if (make_versioned)
- {
- to_row_start->set_notnull();
- to_row_start->store_time(&query_start);
- to_row_end->set_max();
- }
+ if (unlikely(++thd->progress.counter >= time_to_report_progress))
+ {
+ time_to_report_progress+= MY_HOW_OFTEN_TO_WRITE/10;
+ thd_progress_report(thd, thd->progress.counter,
+ thd->progress.max_counter);
+ }
- prev_insert_id= to->file->next_insert_id;
- if (to->default_field)
- to->update_default_fields(ignore);
- if (to->vfield)
- to->update_virtual_fields(to->file, VCOL_UPDATE_FOR_WRITE);
+ /* Return error if source table isn't empty. */
+ if (unlikely(alter_ctx->error_if_not_empty))
+ {
+ error= 1;
+ break;
+ }
- /* This will set thd->is_error() if fatal failure */
- if (to->verify_constraints(ignore) == VIEW_CHECK_SKIP)
- continue;
- if (unlikely(thd->is_error()))
- {
- error= 1;
- break;
- }
- if (keep_versioned && to->versioned(VERS_TRX_ID))
- to->vers_write= false;
+ for (Copy_field *copy_ptr=copy ; copy_ptr != copy_end ; copy_ptr++)
+ {
+ copy_ptr->do_copy(copy_ptr);
+ }
- if (to->next_number_field)
- {
- if (auto_increment_field_copied)
- to->auto_increment_field_not_null= TRUE;
- else
- to->next_number_field->reset();
- }
- error= to->file->ha_write_row(to->record[0]);
- to->auto_increment_field_not_null= FALSE;
- if (unlikely(error))
- {
- if (to->file->is_fatal_error(error, HA_CHECK_DUP))
+ if (make_versioned)
+ {
+ to_row_start->set_notnull();
+ to_row_start->store_time(&query_start);
+ to_row_end->set_max();
+ }
+
+ prev_insert_id= to->file->next_insert_id;
+ if (to->default_field)
+ to->update_default_fields(ignore);
+ if (to->vfield)
+ to->update_virtual_fields(to->file, VCOL_UPDATE_FOR_WRITE);
+
+ /* This will set thd->is_error() if fatal failure */
+ if (to->verify_constraints(ignore) == VIEW_CHECK_SKIP)
+ continue;
+ if (unlikely(thd->is_error()))
{
- /* Not a duplicate key error. */
- to->file->print_error(error, MYF(0));
error= 1;
- break;
+ break;
}
- else
+ if (keep_versioned && to->versioned(VERS_TRX_ID))
+ to->vers_write= false;
+
+ if (to->next_number_field)
+ {
+ if (auto_increment_field_copied)
+ to->auto_increment_field_not_null= TRUE;
+ else
+ to->next_number_field->reset();
+ }
+ error= to->file->ha_write_row(to->record[0]);
+ to->auto_increment_field_not_null= FALSE;
+ if (unlikely(error))
{
- /* Duplicate key error. */
- if (unlikely(alter_ctx->fk_error_if_delete_row))
+ if (to->file->is_fatal_error(error, HA_CHECK_DUP))
{
- /*
- We are trying to omit a row from the table which serves as parent
- in a foreign key. This might have broken referential integrity so
- emit an error. Note that we can't ignore this error even if we are
- executing ALTER IGNORE TABLE. IGNORE allows to skip rows, but
- doesn't allow to break unique or foreign key constraints,
- */
- my_error(ER_FK_CANNOT_DELETE_PARENT, MYF(0),
- alter_ctx->fk_error_id,
- alter_ctx->fk_error_table);
+ /* Not a duplicate key error. */
+ to->file->print_error(error, MYF(0));
+ error= 1;
break;
}
-
- if (ignore)
- {
- /* This ALTER IGNORE TABLE. Simply skip row and continue. */
- to->file->restore_auto_increment(prev_insert_id);
- delete_count++;
- }
else
{
- /* Ordinary ALTER TABLE. Report duplicate key error. */
- uint key_nr= to->file->get_dup_key(error);
- if ((int) key_nr >= 0)
+ /* Duplicate key error. */
+ if (unlikely(alter_ctx->fk_error_if_delete_row))
+ {
+ /*
+ We are trying to omit a row from the table which serves as parent
+ in a foreign key. This might have broken referential integrity so
+ emit an error. Note that we can't ignore this error even if we are
+ executing ALTER IGNORE TABLE. IGNORE allows to skip rows, but
+ doesn't allow to break unique or foreign key constraints,
+ */
+ my_error(ER_FK_CANNOT_DELETE_PARENT, MYF(0),
+ alter_ctx->fk_error_id,
+ alter_ctx->fk_error_table);
+ break;
+ }
+
+ if (ignore)
{
- const char *err_msg= ER_THD(thd, ER_DUP_ENTRY_WITH_KEY_NAME);
- if (key_nr == 0 && to->s->keys > 0 &&
- (to->key_info[0].key_part[0].field->flags &
- AUTO_INCREMENT_FLAG))
- err_msg= ER_THD(thd, ER_DUP_ENTRY_AUTOINCREMENT_CASE);
- print_keydup_error(to,
- key_nr >= to->s->keys ? NULL :
- &to->key_info[key_nr],
- err_msg, MYF(0));
+ /* This ALTER IGNORE TABLE. Simply skip row and continue. */
+ to->file->restore_auto_increment(prev_insert_id);
+ delete_count++;
}
else
- to->file->print_error(error, MYF(0));
- break;
+ {
+ /* Ordinary ALTER TABLE. Report duplicate key error. */
+ uint key_nr= to->file->get_dup_key(error);
+ if ((int) key_nr >= 0)
+ {
+ const char *err_msg= ER_THD(thd, ER_DUP_ENTRY_WITH_KEY_NAME);
+ if (key_nr == 0 && to->s->keys > 0 &&
+ (to->key_info[0].key_part[0].field->flags &
+ AUTO_INCREMENT_FLAG))
+ err_msg= ER_THD(thd, ER_DUP_ENTRY_AUTOINCREMENT_CASE);
+ print_keydup_error(to,
+ key_nr >= to->s->keys ? NULL :
+ &to->key_info[key_nr],
+ err_msg, MYF(0));
+ }
+ else
+ to->file->print_error(error, MYF(0));
+ break;
+ }
}
}
- }
- else
- {
- DEBUG_SYNC(thd, "copy_data_between_tables_before");
- found_count++;
- mysql_stage_set_work_completed(thd->m_stage_progress_psi, found_count);
- }
- thd->get_stmt_da()->inc_current_row_for_warning();
+ else
+ {
+ DEBUG_SYNC(thd, "copy_data_between_tables_before");
+ found_count++;
+ mysql_stage_set_work_completed(thd->m_stage_progress_psi, found_count);
+ }
+ thd->get_stmt_da()->inc_current_row_for_warning();
+ } while (!(error= info.read_record()));
}
+ else
+ online= false;
+
+ DEBUG_SYNC(thd, "alter_table_copy_end");
THD_STAGE_INFO(thd, stage_enabling_keys);
thd_progress_next_stage(thd);
- if (error > 0 && !from->s->tmp_table)
- {
- /* We are going to drop the temporary table */
- to->file->extra(HA_EXTRA_PREPARE_FOR_DROP);
- }
if (bulk_insert_started && to->file->ha_end_bulk_insert() && error <= 0)
{
/* Give error, if not already given */
@@ -12104,6 +12361,7 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
to->file->print_error(my_errno,MYF(0));
error= 1;
}
+
bulk_insert_started= 0;
if (!ignore)
to->file->extra(HA_EXTRA_END_ALTER_COPY);
@@ -12111,18 +12369,119 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
cleanup_done= 1;
to->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
+#ifdef HAVE_REPLICATION
+ if (online && error < 0)
+ {
+ MEM_UNDEFINED(from->record[0], from->s->rec_buff_length * 2);
+ MEM_UNDEFINED(to->record[0], to->s->rec_buff_length * 2);
+ thd_progress_next_stage(thd);
+ enum_sql_command saved_sql_command= thd->lex->sql_command;
+ Table_map_log_event table_event(thd, from, from->s->table_map_id,
+ from->file->has_transactions());
+ Relay_log_info rli(false);
+ rpl_group_info rgi(&rli);
+ RPL_TABLE_LIST rpl_table(to, TL_WRITE, from, table_event.get_table_def(),
+ copy, copy_end);
+ DBUG_ASSERT(to->pos_in_table_list == NULL);
+ to->pos_in_table_list= &rpl_table;
+ rgi.thd= thd;
+ rgi.tables_to_lock= &rpl_table;
+
+ rgi.m_table_map.set_table(from->s->table_map_id, to);
+
+ Cache_flip_event_log *binlog= from->s->online_alter_binlog;
+ DBUG_ASSERT(binlog->is_open());
+
+ rli.relay_log.description_event_for_exec=
+ new Format_description_log_event(4);
+
+ // We'll be filling from->record[0] from row events
+ bitmap_set_all(from->write_set);
+ // We restore bitmaps, because update event is going to mess up with them.
+ to->default_column_bitmaps();
+
+ end_read_record(&info);
+ init_read_record_done= false;
+ mysql_unlock_tables(thd, thd->lock);
+ thd->lock= NULL;
+
+ error= online_alter_read_from_binlog(thd, &rgi, binlog, &found_count);
+ if (start_alter_id)
+ {
+ DBUG_ASSERT(thd->slave_thread);
+
+ int rpl_error= wait_for_master(thd);
+ if (rpl_error)
+ error= 1;
+ }
+
+ DEBUG_SYNC(thd, "alter_table_online_before_lock");
+
+ int lock_error=
+ thd->mdl_context.upgrade_shared_lock(from->mdl_ticket, MDL_SHARED_NO_WRITE,
+ (double)thd->variables.lock_wait_timeout);
+ if (!error)
+ error= lock_error;
+
+ if (!error)
+ {
+ thd_progress_next_stage(thd);
+ error= online_alter_read_from_binlog(thd, &rgi, binlog, &found_count);
+ }
+
+ /*
+ We'll do it earlier than usually in mysql_alter_table to handle the
+ online-related errors more comfortably.
+ */
+ lock_error= thd->mdl_context.upgrade_shared_lock(from->mdl_ticket,
+ MDL_EXCLUSIVE,
+ (double)thd->variables.lock_wait_timeout);
+ if (!error)
+ error= lock_error;
+
+ to->pos_in_table_list= NULL; // Safety
+ DBUG_ASSERT(thd->lex->sql_command == saved_sql_command);
+ thd->lex->sql_command= saved_sql_command; // Just in case
+ }
+#endif
+
+ if (error > 0 && !from->s->tmp_table)
+ {
+ /* We are going to drop the temporary table */
+ to->file->extra(HA_EXTRA_PREPARE_FOR_DROP);
+ }
+
DEBUG_SYNC(thd, "copy_data_between_tables_before_reset_backup_lock");
if (backup_reset_alter_copy_lock(thd))
error= 1;
if (unlikely(mysql_trans_commit_alter_copy_data(thd)))
error= 1;
+
+ if (unlikely(error) && online)
+ {
+ /*
+ We can't free the resources properly now, as we can still be in
+ non-exclusive state. So this s->online_alter_binlog will be used
+ until all transactions will release it.
+ Once the transaction commits, it can release online_alter_binlog
+ by decreasing ref_count.
+
+ online_alter_binlog->ref_count can be reached 0 only once.
+ Proof:
+ If share exists, we'll always have ref_count >= 1.
+ Once it reaches destroy(), nobody can acquire it again,
+ therefore, only release() is possible at this moment.
+
+ Also, this will release the binlog.
+ */
+ from->s->tdc->flush_unused(1);
+ }
err:
if (bulk_insert_started)
(void) to->file->ha_end_bulk_insert();
-/* Free resources */
if (init_read_record_done)
end_read_record(&info);
delete [] copy;
@@ -12147,7 +12506,6 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
if (error < 0 && !from->s->tmp_table &&
to->file->extra(HA_EXTRA_PREPARE_FOR_RENAME))
error= 1;
- thd_progress_end(thd);
DBUG_RETURN(error > 0 ? -1 : 0);
}
@@ -12815,7 +13173,8 @@ bool HA_CREATE_INFO::
thd->stmt_arena->is_stmt_execute() ||
thd->stmt_arena->state == Query_arena::STMT_INITIALIZED_FOR_SP);
if (!(default_table_charset=
- default_cscl.resolved_to_context(ctx)))
+ default_cscl.resolved_to_context(thd,
+ thd->variables.character_set_collations, ctx)))
return true;
}
@@ -12828,7 +13187,8 @@ bool HA_CREATE_INFO::
thd->stmt_arena->is_stmt_execute() ||
thd->stmt_arena->state == Query_arena::STMT_INITIALIZED_FOR_SP);
if (!(alter_table_convert_to_charset=
- convert_cscl.resolved_to_context(ctx)))
+ convert_cscl.resolved_to_context(thd,
+ thd->variables.character_set_collations, ctx)))
return true;
}
return false;
diff --git a/sql/sql_test.cc b/sql/sql_test.cc
index 5cc192af..cf34c996 100644
--- a/sql/sql_test.cc
+++ b/sql/sql_test.cc
@@ -26,7 +26,6 @@
#include "keycaches.h"
#include "my_json_writer.h"
#include <hash.h>
-#include <thr_alarm.h>
#include "sql_connect.h"
#include "thread_cache.h"
@@ -388,7 +387,7 @@ void print_sjm(SJ_MATERIALIZATION_INFO *sjm)
}
fprintf(DBUG_FILE, " }\n");
fprintf(DBUG_FILE, " materialize_cost= %g\n",
- sjm->materialization_cost.total_cost());
+ sjm->materialization_cost);
fprintf(DBUG_FILE, " rows= %g\n", sjm->rows);
fprintf(DBUG_FILE, "}\n");
DBUG_UNLOCK_FILE;
@@ -616,17 +615,6 @@ Open streams: %10lu\n",
my_file_opened,
my_stream_opened);
-#ifndef DONT_USE_THR_ALARM
- ALARM_INFO alarm_info;
- thr_alarm_info(&alarm_info);
- printf("\nAlarm status:\n\
-Active alarms: %u\n\
-Max used alarms: %u\n\
-Next alarm time: %lu\n",
- alarm_info.active_alarms,
- alarm_info.max_used_alarms,
- (ulong)alarm_info.next_alarm_time);
-#endif
display_table_locks();
#if defined(HAVE_MALLINFO2)
struct mallinfo2 info = mallinfo2();
@@ -707,14 +695,15 @@ void print_keyuse_array_for_trace(THD *thd, DYNAMIC_ARRAY *keyuse_array)
{
keyuse_elem.add("index", keyuse->table->key_info[keyuse->key].name);
}
- keyuse_elem.add("field", (keyuse->keypart == FT_KEYPART) ? "<fulltext>":
- (keyuse->is_for_hash_join() ?
- keyuse->table->field[keyuse->keypart]
- ->field_name.str :
- keyuse->table->key_info[keyuse->key]
- .key_part[keyuse->keypart]
- .field->field_name.str));
- keyuse_elem.add("equals",keyuse->val);
- keyuse_elem.add("null_rejecting",keyuse->null_rejecting);
+ keyuse_elem.
+ add("field", (keyuse->keypart == FT_KEYPART) ? "<fulltext>":
+ (keyuse->is_for_hash_join() ?
+ keyuse->table->field[keyuse->keypart]
+ ->field_name.str :
+ keyuse->table->key_info[keyuse->key]
+ .key_part[keyuse->keypart]
+ .field->field_name.str)).
+ add("equals",keyuse->val).
+ add("null_rejecting",keyuse->null_rejecting);
}
}
diff --git a/sql/sql_time.cc b/sql/sql_time.cc
index 753f78cc..910d535f 100644
--- a/sql/sql_time.cc
+++ b/sql/sql_time.cc
@@ -546,322 +546,6 @@ void calc_time_from_sec(MYSQL_TIME *to, ulong seconds, ulong microseconds)
}
-/*
- Parse a format string specification
-
- SYNOPSIS
- parse_date_time_format()
- format_type Format of string (time, date or datetime)
- format_str String to parse
- format_length Length of string
- date_time_format Format to fill in
-
- NOTES
- Fills in date_time_format->positions for all date time parts.
-
- positions marks the position for a datetime element in the format string.
- The position array elements are in the following order:
- YYYY-DD-MM HH-MM-DD.FFFFFF AM
- 0 1 2 3 4 5 6 7
-
- If positions[0]= 5, it means that year will be the forth element to
- read from the parsed date string.
-
- RETURN
- 0 ok
- 1 error
-*/
-
-bool parse_date_time_format(timestamp_type format_type,
- const char *format, uint format_length,
- DATE_TIME_FORMAT *date_time_format)
-{
- uint offset= 0, separators= 0;
- const char *ptr= format, *format_str;
- const char *end= ptr+format_length;
- uchar *dt_pos= date_time_format->positions;
- /* need_p is set if we are using AM/PM format */
- bool need_p= 0, allow_separator= 0;
- ulong part_map= 0, separator_map= 0;
- const char *parts[16];
-
- date_time_format->time_separator= 0;
- date_time_format->flag= 0; // For future
-
- /*
- Fill position with 'dummy' arguments to found out if a format tag is
- used twice (This limit's the format to 255 characters, but this is ok)
- */
- dt_pos[0]= dt_pos[1]= dt_pos[2]= dt_pos[3]=
- dt_pos[4]= dt_pos[5]= dt_pos[6]= dt_pos[7]= 255;
-
- for (; ptr != end; ptr++)
- {
- if (*ptr == '%' && ptr+1 != end)
- {
- uint UNINIT_VAR(position);
- switch (*++ptr) {
- case 'y': // Year
- case 'Y':
- position= 0;
- break;
- case 'c': // Month
- case 'm':
- position= 1;
- break;
- case 'd':
- case 'e':
- position= 2;
- break;
- case 'h':
- case 'I':
- case 'l':
- need_p= 1; // Need AM/PM
- /* Fall through */
- case 'k':
- case 'H':
- position= 3;
- break;
- case 'i':
- position= 4;
- break;
- case 's':
- case 'S':
- position= 5;
- break;
- case 'f':
- position= 6;
- if (dt_pos[5] != offset-1 || ptr[-2] != '.')
- return 1; // Wrong usage of %f
- break;
- case 'p': // AM/PM
- if (offset == 0) // Can't be first
- return 0;
- position= 7;
- break;
- default:
- return 1; // Unknown controll char
- }
- if (dt_pos[position] != 255) // Don't allow same tag twice
- return 1;
- parts[position]= ptr-1;
-
- /*
- If switching from time to date, ensure that all time parts
- are used
- */
- if (part_map && position <= 2 && !(part_map & (1 | 2 | 4)))
- offset=5;
- part_map|= (ulong) 1 << position;
- dt_pos[position]= offset++;
- allow_separator= 1;
- }
- else
- {
- /*
- Don't allow any characters in format as this could easily confuse
- the date reader
- */
- if (!allow_separator)
- return 1; // No separator here
- allow_separator= 0; // Don't allow two separators
- separators++;
- /* Store in separator_map which parts are punct characters */
- if (my_ispunct(&my_charset_latin1, *ptr))
- separator_map|= (ulong) 1 << (offset-1);
- else if (!my_isspace(&my_charset_latin1, *ptr))
- return 1;
- }
- }
-
- /* If no %f, specify it after seconds. Move %p up, if necessary */
- if ((part_map & 32) && !(part_map & 64))
- {
- dt_pos[6]= dt_pos[5] +1;
- parts[6]= parts[5]; // For later test in (need_p)
- if (dt_pos[6] == dt_pos[7]) // Move %p one step up if used
- dt_pos[7]++;
- }
-
- /*
- Check that we have not used a non legal format specifier and that all
- format specifiers have been used
-
- The last test is to ensure that %p is used if and only if
- it's needed.
- */
- if ((format_type == MYSQL_TIMESTAMP_DATETIME &&
- !test_all_bits(part_map, (1 | 2 | 4 | 8 | 16 | 32))) ||
- (format_type == MYSQL_TIMESTAMP_DATE && part_map != (1 | 2 | 4)) ||
- (format_type == MYSQL_TIMESTAMP_TIME &&
- !test_all_bits(part_map, 8 | 16 | 32)) ||
- !allow_separator || // %option should be last
- (need_p && dt_pos[6] +1 != dt_pos[7]) ||
- (need_p ^ (dt_pos[7] != 255)))
- return 1;
-
- if (dt_pos[6] != 255) // If fractional seconds
- {
- /* remove fractional seconds from later tests */
- uint pos= dt_pos[6] -1;
- /* Remove separator before %f from sep map */
- separator_map= ((separator_map & ((ulong) (1 << pos)-1)) |
- ((separator_map & ~((ulong) (1 << pos)-1)) >> 1));
- if (part_map & 64)
- {
- separators--; // There is always a separator
- need_p= 1; // force use of separators
- }
- }
-
- /*
- Remove possible separator before %p from sep_map
- (This can either be at position 3, 4, 6 or 7) h.m.d.%f %p
- */
- if (dt_pos[7] != 255)
- {
- if (need_p && parts[7] != parts[6]+2)
- separators--;
- }
- /*
- Calculate if %p is in first or last part of the datetime field
-
- At this point we have either %H-%i-%s %p 'year parts' or
- 'year parts' &H-%i-%s %p" as %f was removed above
- */
- offset= dt_pos[6] <= 3 ? 3 : 6;
- /* Remove separator before %p from sep map */
- separator_map= ((separator_map & ((ulong) (1 << offset)-1)) |
- ((separator_map & ~((ulong) (1 << offset)-1)) >> 1));
-
- format_str= 0;
- switch (format_type) {
- case MYSQL_TIMESTAMP_DATE:
- format_str= known_date_time_formats[INTERNAL_FORMAT].date_format;
- /* fall through */
- case MYSQL_TIMESTAMP_TIME:
- if (!format_str)
- format_str=known_date_time_formats[INTERNAL_FORMAT].time_format;
-
- /*
- If there is no separators, allow the internal format as we can read
- this. If separators are used, they must be between each part
- */
- if (format_length == 6 && !need_p &&
- !my_charset_bin.strnncoll(format, 6, format_str, 6))
- return 0;
- if (separator_map == (1 | 2))
- {
- if (format_type == MYSQL_TIMESTAMP_TIME)
- {
- if (*(format+2) != *(format+5))
- break; // Error
- /* Store the character used for time formats */
- date_time_format->time_separator= *(format+2);
- }
- return 0;
- }
- break;
- case MYSQL_TIMESTAMP_DATETIME:
- /*
- If there is no separators, allow the internal format as we can read
- this. If separators are used, they must be between each part.
- Between DATE and TIME we also allow space as separator
- */
- if ((format_length == 12 && !need_p &&
- !my_charset_bin.strnncoll(
- format, 12,
- known_date_time_formats[INTERNAL_FORMAT].datetime_format,
- 12)) ||
- (separators == 5 && separator_map == (1 | 2 | 8 | 16)))
- return 0;
- break;
- default:
- DBUG_ASSERT(0);
- break;
- }
- return 1; // Error
-}
-
-
-/*
- Create a DATE_TIME_FORMAT object from a format string specification
-
- SYNOPSIS
- date_time_format_make()
- format_type Format to parse (time, date or datetime)
- format_str String to parse
- format_length Length of string
-
- NOTES
- The returned object should be freed with my_free()
-
- RETURN
- NULL ponter: Error
- new object
-*/
-
-DATE_TIME_FORMAT
-*date_time_format_make(timestamp_type format_type,
- const char *format_str, uint format_length)
-{
- DATE_TIME_FORMAT tmp;
-
- if (format_length && format_length < 255 &&
- !parse_date_time_format(format_type, format_str,
- format_length, &tmp))
- {
- tmp.format.str= format_str;
- tmp.format.length= format_length;
- return date_time_format_copy((THD *)0, &tmp);
- }
- return 0;
-}
-
-
-/*
- Create a copy of a DATE_TIME_FORMAT object
-
- SYNOPSIS
- date_and_time_format_copy()
- thd Set if variable should be allocated in thread mem
- format format to copy
-
- NOTES
- The returned object should be freed with my_free()
-
- RETURN
- NULL ponter: Error
- new object
-*/
-
-DATE_TIME_FORMAT *date_time_format_copy(THD *thd, DATE_TIME_FORMAT *format)
-{
- DATE_TIME_FORMAT *new_format;
- size_t length= sizeof(*format) + format->format.length + 1;
- char *format_pos;
-
- if (thd)
- new_format= (DATE_TIME_FORMAT *) thd->alloc(length);
- else
- new_format= (DATE_TIME_FORMAT *) my_malloc(key_memory_DATE_TIME_FORMAT,
- length, MYF(MY_WME));
- if (new_format)
- {
- /* Put format string after current pos */
- new_format->format.str= format_pos= (char*) (new_format+1);
- memcpy((char*) new_format->positions, (char*) format->positions,
- sizeof(format->positions));
- new_format->time_separator= format->time_separator;
- /* We make the string null terminated for easy printf in SHOW VARIABLES */
- memcpy(format_pos, format->format.str, format->format.length);
- format_pos[format->format.length]= 0;
- new_format->format.length= format->format.length;
- }
- return new_format;
-}
-
-
KNOWN_DATE_TIME_FORMAT known_date_time_formats[6]=
{
{"USA", "%m.%d.%Y", "%Y-%m-%d %H.%i.%s", "%h:%i:%s %p" },
diff --git a/sql/sql_time.h b/sql/sql_time.h
index c918eb6d..255ebfeb 100644
--- a/sql/sql_time.h
+++ b/sql/sql_time.h
@@ -81,11 +81,6 @@ void make_truncated_value_warning(THD *thd,
const char *db_name, const char *table_name,
const char *field_name);
-extern DATE_TIME_FORMAT *date_time_format_make(timestamp_type format_type,
- const char *format_str,
- uint format_length);
-extern DATE_TIME_FORMAT *date_time_format_copy(THD *thd,
- DATE_TIME_FORMAT *format);
const char *get_date_time_format_str(KNOWN_DATE_TIME_FORMAT *format,
timestamp_type type);
bool my_TIME_to_str(const MYSQL_TIME *ltime, String *str, uint dec);
@@ -128,24 +123,7 @@ void calc_time_from_sec(MYSQL_TIME *to, ulong seconds, ulong microseconds);
uint calc_week(const MYSQL_TIME *l_time, uint week_behaviour, uint *year);
int calc_weekday(long daynr,bool sunday_first_day_of_week);
-bool parse_date_time_format(timestamp_type format_type,
- const char *format, uint format_length,
- DATE_TIME_FORMAT *date_time_format);
-/* convenience wrapper */
-inline bool parse_date_time_format(timestamp_type format_type,
- DATE_TIME_FORMAT *date_time_format)
-{
- return parse_date_time_format(format_type,
- date_time_format->format.str,
- (uint) date_time_format->format.length,
- date_time_format);
-}
-
-
-extern DATE_TIME_FORMAT global_date_format;
-extern DATE_TIME_FORMAT global_datetime_format;
-extern DATE_TIME_FORMAT global_time_format;
extern KNOWN_DATE_TIME_FORMAT known_date_time_formats[];
extern LEX_CSTRING interval_type_to_name[];
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc
index d7600108..c9864e57 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -867,6 +867,41 @@ static void build_trig_stmt_query(THD *thd, TABLE_LIST *tables,
/**
+ Visit every Item_trigger_field object associated with a trigger
+ and run the code supplied in the last argument, passing
+ the Item_trigger_fgield object being visited.
+
+ @param trg_table_fields Item_trigger_field objects owned by a trigger
+ @param fn a function to invoke for every Item_trigger_field
+ object
+
+ @return false on success, true on failure.
+*/
+
+template <typename FN>
+static
+bool iterate_trigger_fields_and_run_func(
+ SQL_I_List<SQL_I_List<Item_trigger_field> > &trg_table_fields,
+ FN fn
+ )
+{
+ for (SQL_I_List<Item_trigger_field>
+ *trg_fld_lst= trg_table_fields.first;
+ trg_fld_lst;
+ trg_fld_lst= trg_fld_lst->first->next_trig_field_list)
+ {
+ for (Item_trigger_field *trg_field= trg_fld_lst->first;
+ trg_field;
+ trg_field= trg_field->next_trg_field)
+ {
+ if (fn(trg_field))
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
Create trigger for table.
@param thd current thread context (including trigger definition in
@@ -902,7 +937,6 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables,
char trg_definer_holder[USER_HOST_BUFF_SIZE];
LEX_CSTRING backup_name= { backup_file_buff, 0 };
LEX_CSTRING file, trigname_file;
- Item_trigger_field *trg_field;
struct st_trigname trigname;
String trigger_definition;
Trigger *trigger= 0;
@@ -939,18 +973,20 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables,
*/
old_field= new_field= table->field;
- for (trg_field= lex->trg_table_fields.first;
- trg_field; trg_field= trg_field->next_trg_field)
- {
- /*
- NOTE: now we do not check privileges at CREATE TRIGGER time. This will
- be changed in the future.
- */
- trg_field->setup_field(thd, table, NULL);
+ if (iterate_trigger_fields_and_run_func(
+ lex->sphead->m_trg_table_fields,
+ [thd, table] (Item_trigger_field* trg_field)
+ {
+ /*
+ NOTE: now we do not check privileges at CREATE TRIGGER time.
+ This will be changed in the future.
+ */
+ trg_field->setup_field(thd, table, nullptr);
- if (trg_field->fix_fields_if_needed(thd, (Item **)0))
- DBUG_RETURN(true);
- }
+ return trg_field->fix_fields_if_needed(thd, (Item **)0);
+ }
+ ))
+ DBUG_RETURN(true);
/* Ensure anchor trigger exists */
if (lex->trg_chistics.ordering_clause != TRG_ORDER_NONE)
@@ -1651,7 +1687,12 @@ bool Table_triggers_list::check_n_load(THD *thd, const LEX_CSTRING *db,
bool parse_error= parse_sql(thd, & parser_state, creation_ctx);
thd->pop_internal_handler();
- DBUG_ASSERT(!parse_error || lex.sphead == 0);
+
+ if (parse_error)
+ {
+ sp_head::destroy(lex.sphead);
+ lex.sphead= nullptr;
+ }
/*
Not strictly necessary to invoke this method here, since we know
@@ -1793,12 +1834,6 @@ bool Table_triggers_list::check_n_load(THD *thd, const LEX_CSTRING *db,
}
/*
- Gather all Item_trigger_field objects representing access to fields
- in old/new versions of row in trigger into lists containing all such
- objects for the trigger_list with same action and timing.
- */
- trigger->trigger_fields= lex.trg_table_fields.first;
- /*
Also let us bind these objects to Field objects in table being
opened.
@@ -1807,14 +1842,17 @@ bool Table_triggers_list::check_n_load(THD *thd, const LEX_CSTRING *db,
SELECT)...
Anyway some things can be checked only during trigger execution.
*/
- for (Item_trigger_field *trg_field= lex.trg_table_fields.first;
- trg_field;
- trg_field= trg_field->next_trg_field)
- {
- trg_field->setup_field(thd, table,
- &trigger->subject_table_grants);
- }
+ (void)iterate_trigger_fields_and_run_func(
+ sp->m_trg_table_fields,
+ [thd, table, trigger] (Item_trigger_field* trg_field)
+ {
+ trg_field->setup_field(thd, table, &trigger->subject_table_grants);
+ return false;
+ }
+ );
+
+ sp->m_trg= trigger;
lex_end(&lex);
}
thd->reset_db(&save_db);
@@ -2574,7 +2612,6 @@ add_tables_and_routines_for_triggers(THD *thd,
void Table_triggers_list::mark_fields_used(trg_event_type event)
{
int action_time;
- Item_trigger_field *trg_field;
DBUG_ENTER("Table_triggers_list::mark_fields_used");
for (action_time= 0; action_time < (int)TRG_ACTION_MAX; action_time++)
@@ -2583,20 +2620,28 @@ void Table_triggers_list::mark_fields_used(trg_event_type event)
trigger ;
trigger= trigger->next)
{
- for (trg_field= trigger->trigger_fields;
- trg_field;
- trg_field= trg_field->next_trg_field)
- {
- /* We cannot mark fields which does not present in table. */
- if (trg_field->field_idx != NO_CACHED_FIELD_INDEX)
+ /*
+ Skip a trigger that was parsed with an error.
+ */
+ if (trigger->body == nullptr)
+ continue;
+
+ (void)iterate_trigger_fields_and_run_func(
+ trigger->body->m_trg_table_fields,
+ [this] (Item_trigger_field* trg_field)
{
- DBUG_PRINT("info", ("marking field: %u", (uint) trg_field->field_idx));
- if (trg_field->get_settable_routine_parameter())
- bitmap_set_bit(trigger_table->write_set, trg_field->field_idx);
- trigger_table->mark_column_with_deps(
- trigger_table->field[trg_field->field_idx]);
+ /* We cannot mark fields which does not present in table. */
+ if (trg_field->field_idx != NO_CACHED_FIELD_INDEX)
+ {
+ DBUG_PRINT("info", ("marking field: %u", (uint) trg_field->field_idx));
+ if (trg_field->get_settable_routine_parameter())
+ bitmap_set_bit(trigger_table->write_set, trg_field->field_idx);
+ trigger_table->mark_column_with_deps(
+ trigger_table->field[trg_field->field_idx]);
+ }
+ return false;
}
- }
+ );
}
}
trigger_table->file->column_bitmaps_signal();
diff --git a/sql/sql_trigger.h b/sql/sql_trigger.h
index 774dca7c..493349af 100644
--- a/sql/sql_trigger.h
+++ b/sql/sql_trigger.h
@@ -113,7 +113,7 @@ class Trigger :public Sql_alloc
{
public:
Trigger(Table_triggers_list *base_arg, sp_head *code):
- base(base_arg), body(code), next(0), trigger_fields(0), action_order(0)
+ base(base_arg), body(code), next(0), action_order(0)
{
bzero((char *)&subject_table_grants, sizeof(subject_table_grants));
}
@@ -122,11 +122,6 @@ public:
sp_head *body;
Trigger *next; /* Next trigger of same type */
- /**
- Heads of the lists linking items for all fields used in triggers
- grouped by event and action_time.
- */
- Item_trigger_field *trigger_fields;
LEX_CSTRING name;
LEX_CSTRING on_table_name; /* Raw table name */
LEX_CSTRING definition;
@@ -145,7 +140,6 @@ public:
trg_action_time_type action_time;
uint action_order;
- bool is_fields_updated_in_trigger(MY_BITMAP *used_fields);
void get_trigger_info(LEX_CSTRING *stmt, LEX_CSTRING *body,
LEX_STRING *definer);
/* Functions executed over each active trigger */
@@ -344,6 +338,12 @@ private:
}
return false;
}
+
+public:
+ TABLE *get_subject_table()
+ {
+ return trigger_table;
+ }
};
diff --git a/sql/sql_tvc.cc b/sql/sql_tvc.cc
index fc1db382..487f7cc9 100644
--- a/sql/sql_tvc.cc
+++ b/sql/sql_tvc.cc
@@ -711,12 +711,12 @@ st_select_lex *wrap_tvc(THD *thd, st_select_lex *tvc_sl,
goto err;
wrapper_sl->select_number= ++thd->lex->stmt_lex->current_select_number;
wrapper_sl->parent_lex= lex; /* Used in init_query. */
- wrapper_sl->init_query();
- wrapper_sl->init_select();
+ wrapper_sl->make_empty_select();
wrapper_sl->is_tvc_wrapper= true;
wrapper_sl->nest_level= tvc_sl->nest_level;
wrapper_sl->parsing_place= tvc_sl->parsing_place;
+ wrapper_sl->distinct= tvc_sl->distinct;
wrapper_sl->set_linkage(tvc_sl->get_linkage());
wrapper_sl->exclude_from_table_unique_test=
tvc_sl->exclude_from_table_unique_test;
@@ -744,6 +744,7 @@ st_select_lex *wrap_tvc(THD *thd, st_select_lex *tvc_sl,
derived_unit->init_query();
derived_unit->thd= thd;
derived_unit->include_down(wrapper_sl);
+ derived_unit->distinct= tvc_sl->distinct;
/*
Attach the select used of TVC as the only slave to the unit for
@@ -960,8 +961,10 @@ Item *Item_func_in::in_predicate_to_in_subs_transformer(THD *thd,
if (!length || length > tmp_table_max_key_length() ||
args[0]->cols() > tmp_table_max_key_parts())
{
- trace_conv.add("done", false);
- trace_conv.add("reason", "key is too long");
+ if (unlikely(trace_conv.trace_started()))
+ trace_conv.
+ add("done", false).
+ add("reason", "key is too long");
return this;
}
@@ -969,15 +972,19 @@ Item *Item_func_in::in_predicate_to_in_subs_transformer(THD *thd,
{
if (!args[i]->const_item())
{
- trace_conv.add("done", false);
- trace_conv.add("reason", "non-constant element in the IN-list");
+ if (unlikely(trace_conv.trace_started()))
+ trace_conv.
+ add("done", false).
+ add("reason", "non-constant element in the IN-list");
return this;
}
if (cmp_row_types(args[i], args[0]))
{
- trace_conv.add("done", false);
- trace_conv.add("reason", "type mismatch");
+ if (unlikely(trace_conv.trace_started()))
+ trace_conv.
+ add("done", false).
+ add("reason", "type mismatch");
return this;
}
}
@@ -1012,7 +1019,9 @@ Item *Item_func_in::in_predicate_to_in_subs_transformer(THD *thd,
lex->init_select();
tvc_select= lex->current_select;
derived_unit= tvc_select->master_unit();
+ derived_unit->distinct= 1;
tvc_select->set_linkage(DERIVED_TABLE_TYPE);
+ tvc_select->distinct= 1;
/* Create TVC used in the transformation */
if (create_value_list_for_tvc(thd, &values))
@@ -1045,7 +1054,9 @@ Item *Item_func_in::in_predicate_to_in_subs_transformer(THD *thd,
sq_select->add_where_field(derived_unit->first_select());
sq_select->context.table_list= sq_select->table_list.first;
sq_select->context.first_name_resolution_table= sq_select->table_list.first;
- sq_select->table_list.first->derived_type= DTYPE_TABLE | DTYPE_MATERIALIZE;
+ sq_select->table_list.first->derived_type= (DTYPE_TABLE |
+ DTYPE_MATERIALIZE |
+ DTYPE_IN_PREDICATE);
lex->derived_tables|= DERIVED_SUBQUERY;
sq_select->where= 0;
diff --git a/sql/sql_type.cc b/sql/sql_type.cc
index b1911c79..4322b215 100644
--- a/sql/sql_type.cc
+++ b/sql/sql_type.cc
@@ -2727,7 +2727,9 @@ Type_handler::Column_definition_set_attributes(THD *thd,
column_definition_type_t type)
const
{
- def->set_charset_collation_attrs(attr.charset_collation_attrs());
+ def->set_charset_collation_attrs(thd,
+ thd->variables.character_set_collations,
+ attr.charset_collation_attrs());
def->set_length_and_dec(attr);
return false;
}
@@ -2989,10 +2991,7 @@ void Type_handler_year::
{
char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
my_snprintf(buff, sizeof(buff), "YEAR(%llu)", def->length);
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- buff, "YEAR(4)");
+ warn_deprecated<1007>(thd, buff, "YEAR(4)");
}
}
@@ -3035,7 +3034,9 @@ bool Type_handler_null::
*derived_attr)
const
{
- def->prepare_charset_for_string(derived_attr);
+ def->prepare_charset_for_string(thd,
+ thd->variables.character_set_collations,
+ derived_attr);
def->create_length_to_internal_length_null();
return false;
}
@@ -3117,7 +3118,10 @@ bool Type_handler_typelib::
*derived_attr)
const
{
- return def->prepare_charset_for_string(derived_attr) ||
+ return def->prepare_charset_for_string(thd,
+ thd->variables.
+ character_set_collations,
+ derived_attr) ||
def->prepare_stage1_typelib(thd, mem_root, type);
}
@@ -3131,7 +3135,10 @@ bool Type_handler_string_result::
*derived_attr)
const
{
- return def->prepare_charset_for_string(derived_attr) ||
+ return def->prepare_charset_for_string(thd,
+ thd->variables.
+ character_set_collations,
+ derived_attr) ||
def->prepare_stage1_string(thd, mem_root);
}
@@ -7780,6 +7787,104 @@ Item *Type_handler_row::
/***************************************************************************/
+/*
+ Check if in a predicate like:
+
+ WHERE timestamp_arg=datetime_arg
+
+ we can replace DATETIME comparison to TIMESTAMP comparison,
+ to avoid slow TIMESTAMP->DATETIME data type conversion per row.
+
+ TIMESTAMP and DATETIME are compared as DATETIME historically.
+ This may be inefficient, because involves a conversion of
+ the TIMESTAMP side to DATETIME per row.
+ The conversion happens in Timezone::gmt_sec_to_TIME().
+ E.g. in case of the SYSTEM timezone, it calls localtime_r(),
+ which is known to be slow.
+
+ It's generally not possible to compare TIMESTAMP and DATETIME
+ as TIMESTAMP without behavior change, because:
+ - DATETIME has a wider range.
+ - Two different TIMESTAMP values can have the same DATETIME value
+ near the "fall back" DST change, as well as for leap seconds.
+ - There are DATETIME gaps during the "spring forward" DST switch.
+
+ However, if the DATETIME side is a constant, then we can compare
+ it to TIMESTAMP as TIMESTAMP in many cases. The DATETIME argument can
+ be converted once to TIMESTAMP, so no data type conversion will
+ happen per row. This is faster for big tables.
+
+ The comparison predicates must satisfy the following conditions:
+ 1. There must be a proper data type combination:
+ - other must be of the TIMESTAMP data type
+ - subject must be of the DATETIME data type,
+ or can convert to DATETIME.
+ 2. subject must be a constant
+ 3. subject must convert to TIMESTAMP safely
+ (without time zone anomalies near its value)
+*/
+
+Item *
+Type_handler_datetime_common::convert_item_for_comparison(
+ THD *thd,
+ Item *subject,
+ const Item *counterpart)
+ const
+{
+ if (!dynamic_cast<const Type_handler_timestamp_common*>(
+ counterpart->type_handler()) ||
+ !subject->type_handler()->can_return_date())
+ return subject;
+
+ struct Count_handler : public Internal_error_handler
+ {
+ uint hit= 0;
+ bool handle_condition(THD *thd,
+ uint sql_errno,
+ const char *sqlstate,
+ Sql_condition::enum_warning_level *level,
+ const char *msg,
+ Sql_condition **cond_hdl)
+ {
+ hit++;
+ return *level >= Sql_condition::WARN_LEVEL_WARN;
+ }
+ } cnt_handler;
+
+ // Suppress and count warnings
+ thd->push_internal_handler(&cnt_handler);
+ Datetime dt(thd, subject, Timestamp::DatetimeOptions(thd));
+ thd->pop_internal_handler();
+
+ if (!dt.is_valid_datetime() || cnt_handler.hit)
+ {
+ /*
+ SQL NULL DATETIME, or a DATETIME with zeros in YYYYMMDD,
+ or warnings during DATETIME evaluation.
+ */
+ return subject;
+ }
+
+ // '0000-00-00 00:00:00' is a special valid MariaDB TIMESTAMP value
+ if (!non_zero_date(dt.get_mysql_time()))
+ return new (thd->mem_root) Item_timestamp_literal(thd,
+ Timestamp_or_zero_datetime::zero(),
+ subject->datetime_precision(thd));
+
+ const Timeval_null tv(thd->safe_timeval_replacement_for_nonzero_datetime(dt));
+ if (tv.is_null())
+ return subject; // Time zone anomalies found around "dt"
+
+ // Should be safe to convert
+ const Timestamp_or_zero_datetime ts(Timestamp(tv.to_timeval()));
+ return new (thd->mem_root) Item_timestamp_literal(thd,
+ ts,
+ subject->datetime_precision(thd));
+}
+
+
+/***************************************************************************/
+
static const char* item_name(Item *a, String *str)
{
if (a->name.str)
@@ -8798,6 +8903,43 @@ Type_handler_temporal_result::Item_const_eq(const Item_const *a,
b->get_type_all_attributes_from_const()->decimals);
}
+
+/*
+ @brief
+ Check if two costant timestamp values are identical.
+
+ @return
+ true <=> *a and *b are identical
+*/
+bool
+Type_handler_timestamp_common::Item_const_eq(const Item_const *a,
+ const Item_const *b,
+ bool binary_cmp) const
+{
+ /*
+ In a condition like:
+ WHERE IF(a='2001-01-01 00:00:00',1,0)=IF(a='2001-01-01 00:00:00',1,0);
+ Item_func_eq::fix_length_and_dec() calls get_timestamp_item_for_comparison()
+ which replaces string literals '2001-01-01 00:00:00' with
+ Item_timestamp_literal instances, which later during remove_eq_conds()
+ come to here.
+
+ Note, Item_param bound to TIMESTAMP is not detected here,
+ so trivial conditions of this kind do not get eliminated:
+ DECLARE ts TIMESTAMP DEFAULT (SELECT MAX(ts_col) FROM t1);
+ EXECUTE IMMEDIATE
+ 'SELECT * FROM t1 WHERE COALESCE(ts_col,?)<=>COALESCE(ts_col,?)'
+ USING ts, ts;
+ It should be fixed by MDEV-14271.
+ */
+ const Item_timestamp_literal *ta, *tb;
+ if (!(ta= dynamic_cast<const Item_timestamp_literal*>(a)) ||
+ !(tb= dynamic_cast<const Item_timestamp_literal*>(b)))
+ return false;
+ return !ta->value().cmp(tb->value());
+}
+
+
/***************************************************************************/
const Type_handler *
diff --git a/sql/sql_type.h b/sql/sql_type.h
index b092433b..82db1bc7 100644
--- a/sql/sql_type.h
+++ b/sql/sql_type.h
@@ -24,6 +24,7 @@
#include "mysqld.h"
#include "lex_string.h"
+#include "sql_type_timeofday.h"
#include "sql_array.h"
#include "sql_const.h"
#include "sql_time.h"
@@ -2522,6 +2523,20 @@ public:
}
Datetime(my_time_t unix_time, ulong second_part,
const Time_zone* time_zone);
+ Datetime(uint year_arg, uint month_arg, uint day_arg, const TimeOfDay6 &td)
+ {
+ neg= 0;
+ year= year_arg;
+ month= month_arg;
+ day= day_arg;
+ hour= td.hour();
+ minute= td.minute();
+ second= td.second();
+ second_part= td.usecond();
+ time_type= MYSQL_TIMESTAMP_DATETIME;
+ if (!is_valid_datetime_slow())
+ time_type= MYSQL_TIMESTAMP_NONE;
+ }
bool is_valid_datetime() const
{
@@ -2667,6 +2682,12 @@ public:
return Temporal::fraction_remainder(dec);
}
+ Datetime time_of_day(const TimeOfDay6 &td) const
+ {
+ DBUG_ASSERT(is_valid_datetime()); // not SQL NULL
+ return Datetime(year, month, day, td);
+ }
+
Datetime &trunc(uint dec)
{
if (is_valid_datetime())
@@ -2840,6 +2861,11 @@ class Timestamp_or_zero_datetime: protected Timestamp
{
bool m_is_zero_datetime;
public:
+ static Timestamp_or_zero_datetime zero()
+ {
+ return Timestamp_or_zero_datetime(Timestamp(0, 0), true);
+ }
+public:
Timestamp_or_zero_datetime()
:Timestamp(0,0), m_is_zero_datetime(true)
{ }
@@ -2847,7 +2873,7 @@ public:
:Timestamp(native.length() ? Timestamp(native) : Timestamp(0,0)),
m_is_zero_datetime(native.length() == 0)
{ }
- Timestamp_or_zero_datetime(const Timestamp &tm, bool is_zero_datetime)
+ Timestamp_or_zero_datetime(const Timestamp &tm, bool is_zero_datetime= false)
:Timestamp(tm), m_is_zero_datetime(is_zero_datetime)
{ }
Timestamp_or_zero_datetime(THD *thd, const MYSQL_TIME *ltime, uint *err_code);
@@ -2871,6 +2897,11 @@ public:
return 1;
return Timestamp::cmp(other);
}
+ const Timestamp &to_timestamp() const
+ {
+ DBUG_ASSERT(!is_zero_datetime());
+ return *this;
+ }
bool to_TIME(THD *thd, MYSQL_TIME *to, date_mode_t fuzzydate) const;
/*
Convert to native format:
@@ -4231,6 +4262,33 @@ public:
virtual Item *make_const_item_for_comparison(THD *thd,
Item *src,
const Item *cmp) const= 0;
+ /**
+ When aggregating function arguments for comparison
+ (e.g. for =, <, >, <=, >=, NULLIF), in some cases we rewrite
+ arguments. For example, if the predicate
+ timestamp_expr0 = datetime_const_expr1
+ decides to compare arguments as DATETIME,
+ we can try to rewrite datetime_const_expr1 to a TIMESTAMP constant
+ and perform the comparison as TIMESTAMP, which is faster because
+ does not have to perform TIMESTAMP->DATETIME data type conversion per row.
+
+ "this" is the type handler that is used to compare
+ "subject" and "counterpart" (DATETIME in the above example).
+ @param thd the current thread
+ @param subject the comparison side that we want try to rewrite
+ @param counterpart the other comparison side
+ @retval subject, if the subject does not need to be rewritten
+ @retval NULL in case of error (e.g. EOM)
+ @retval Otherwise, a pointer to a new Item which can
+ be used as a replacement for the subject.
+ */
+ virtual Item *convert_item_for_comparison(THD *thd,
+ Item *subject,
+ const Item *counterpart) const
+ {
+ return subject;
+ }
+
virtual Item_cache *Item_get_cache(THD *thd, const Item *item) const= 0;
virtual Item *make_constructor_item(THD *thd, List<Item> *args) const
{
@@ -6583,6 +6641,9 @@ public:
}
String *print_item_value(THD *thd, Item *item, String *str) const override;
Item_cache *Item_get_cache(THD *thd, const Item *item) const override;
+ Item *convert_item_for_comparison(THD *thd,
+ Item *subject,
+ const Item *counterpart) const override;
String *Item_func_min_max_val_str(Item_func_min_max *, String *) const override;
double Item_func_min_max_val_real(Item_func_min_max *) const override;
longlong Item_func_min_max_val_int(Item_func_min_max *) const override;
@@ -6755,6 +6816,8 @@ public:
my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *,
my_decimal *) const override;
bool set_comparator_func(THD *thd, Arg_comparator *cmp) const override;
+ bool Item_const_eq(const Item_const *a, const Item_const *b,
+ bool binary_cmp) const override;
bool Item_hybrid_func_fix_attributes(THD *thd,
const LEX_CSTRING &name,
Type_handler_hybrid_field_type *,
diff --git a/sql/sql_type_fixedbin.h b/sql/sql_type_fixedbin.h
index a05b0849..6d5c72d2 100644
--- a/sql/sql_type_fixedbin.h
+++ b/sql/sql_type_fixedbin.h
@@ -582,7 +582,7 @@ public:
return do_field_string;
}
- static void do_field_fbt_native_to_binary(Copy_field *copy)
+ static void do_field_fbt_native_to_binary(const Copy_field *copy)
{
NativeBuffer<FbtImpl::binary_length()+1> res;
copy->from_field->val_native(&res);
diff --git a/sql/sql_type_timeofday.h b/sql/sql_type_timeofday.h
new file mode 100644
index 00000000..202c98e9
--- /dev/null
+++ b/sql/sql_type_timeofday.h
@@ -0,0 +1,67 @@
+/* Copyright (c) 2024, MariaDB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
+
+#ifndef SQL_TYPE_TIMEOFDAY_INCLUDED
+#define SQL_TYPE_TIMEOFDAY_INCLUDED
+
+#include "my_time.h" // TIME_MAX_MINUTE
+
+/*
+ This class stores a time of the day with
+ fractional precision up to 6 digits.
+*/
+class TimeOfDay6
+{
+ uint m_hour; // 0..23
+ uint m_minute; // 0..59
+ uint m_second; // 0..59
+ uint m_usecond; // 0..999999
+ bool is_valid_time_of_day6() const
+ {
+ return m_hour <= 23 &&
+ m_minute <= TIME_MAX_MINUTE &&
+ m_second <= TIME_MAX_SECOND &&
+ m_usecond <= TIME_MAX_SECOND_PART;
+ }
+public:
+ TimeOfDay6()
+ :m_hour(0), m_minute(0), m_second(0), m_usecond(0)
+ { }
+ // This constructor assumes the caller passes valid 'hh:mm:ss.ff' values
+ TimeOfDay6(uint hour, uint minute, uint second, uint usecond)
+ :m_hour(hour), m_minute(minute), m_second(second), m_usecond(usecond)
+ {
+ DBUG_ASSERT(is_valid_time_of_day6());
+ }
+ uint hour() const { return m_hour; }
+ uint minute() const { return m_minute; }
+ uint second() const { return m_second; }
+ uint usecond() const { return m_usecond; }
+ /*
+ Return the last time of the day for the given precision, e.g.:
+ - '23:59:59.000000' for decimals==0
+ - '23:59:59.999000' for decimals==3
+ - '23:59:59.999999' for decimals==6
+ */
+ static TimeOfDay6 end_of_day(decimal_digits_t decimals)
+ {
+ long rem= my_time_fraction_remainder(TIME_MAX_SECOND_PART, decimals);
+ DBUG_ASSERT(rem >= 0 && rem <= TIME_MAX_SECOND_PART);
+ return TimeOfDay6(23, TIME_MAX_MINUTE, TIME_MAX_SECOND,
+ (uint) (TIME_MAX_SECOND_PART - (uint) rem));
+ }
+};
+
+#endif // SQL_TYPE_TIMEOFDAY_INCLUDED
diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc
index 02f068e9..db7f6483 100644
--- a/sql/sql_udf.cc
+++ b/sql/sql_udf.cc
@@ -181,6 +181,8 @@ void udf_init()
initialized = 1;
new_thd->thread_stack= (char*) &new_thd;
new_thd->store_globals();
+ new_thd->set_query_inner((char*) STRING_WITH_LEN("intern:udf_init"),
+ default_charset_info);
new_thd->set_db(&MYSQL_SCHEMA_NAME);
tables.init_one_table(&new_thd->db, &MYSQL_FUNC_NAME, 0, TL_READ);
@@ -206,10 +208,11 @@ void udf_init()
while (!(error= read_record_info.read_record()))
{
DBUG_PRINT("info",("init udf record"));
- LEX_CSTRING name;
- name.str=get_field(&mem, table->field[0]);
- name.length = (uint) safe_strlen(name.str);
- char *dl_name= get_field(&mem, table->field[2]);
+ DBUG_ASSERT(!(new_thd->variables.sql_mode & MODE_PAD_CHAR_TO_FULL_LENGTH));
+ DBUG_ASSERT(table->field[0]->get_thd() == new_thd);
+ DBUG_ASSERT(table->field[2]->get_thd() == new_thd);
+ LEX_CSTRING name= table->field[0]->val_lex_string_strmake(&mem);
+ LEX_CSTRING dl_name= table->field[2]->val_lex_string_strmake(&mem);
bool new_dl=0;
Item_udftype udftype=UDFTYPE_FUNCTION;
if (table->s->fields >= 4) // New func table
@@ -222,7 +225,8 @@ void udf_init()
On windows we must check both FN_LIBCHAR and '/'.
*/
- if (!name.str || !dl_name || check_valid_path(dl_name, strlen(dl_name)) ||
+ if (!name.length || !dl_name.length ||
+ check_valid_path(dl_name.str, dl_name.length) ||
check_string_char_length(&name, 0, NAME_CHAR_LEN,
system_charset_info, 1))
{
@@ -232,7 +236,7 @@ void udf_init()
}
if (!(tmp= add_udf(&name,(Item_result) table->field[1]->val_int(),
- dl_name, udftype)))
+ dl_name.str, udftype)))
{
sql_print_error("Can't alloc memory for udf function: '%.64s'", name.str);
continue;
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index 3413b840..eca490e8 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -32,6 +32,9 @@
#include "sql_cte.h"
#include "item_windowfunc.h"
+select_handler *find_partial_select_handler(THD *thd, SELECT_LEX *select_lex,
+ SELECT_LEX_UNIT *lex_unit);
+
bool mysql_union(THD *thd, LEX *lex, select_result *result,
SELECT_LEX_UNIT *unit, ulonglong setup_tables_done_option)
{
@@ -355,8 +358,6 @@ select_unit::create_result_table(THD *thd_arg, List<Item> *column_types,
return TRUE;
table->keys_in_use_for_query.clear_all();
- for (uint i=0; i < table->s->fields; i++)
- table->field[i]->flags &= ~(PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG);
if (create_table)
{
@@ -395,9 +396,6 @@ select_union_recursive::create_result_table(THD *thd_arg,
return true;
incr_table->keys_in_use_for_query.clear_all();
- for (uint i=0; i < table->s->fields; i++)
- incr_table->field[i]->flags &= ~(PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG);
-
return false;
}
@@ -1282,6 +1280,94 @@ static bool init_item_int(THD* thd, Item_int* &item)
return false;
}
+/**
+ @brief
+ Recursive subroutine to be called from find_unit_handler() (see below).
+ Must not be called directly, only from find_unit_handler().
+*/
+static select_handler *find_unit_handler_for_lex(THD *thd,
+ SELECT_LEX *sel_lex,
+ SELECT_LEX_UNIT* unit)
+{
+ if (!(sel_lex->join))
+ return nullptr;
+ for (TABLE_LIST *tbl= sel_lex->join->tables_list; tbl; tbl= tbl->next_local)
+ {
+ if (!tbl->table)
+ continue;
+ if (tbl->derived)
+ {
+ /*
+ Skip derived table for now as they will be checked
+ in the subsequent loop
+ */
+ continue;
+ }
+ handlerton *ht= tbl->table->file->partition_ht();
+ if (!ht->create_unit)
+ continue;
+ select_handler *sh= ht->create_unit(thd, unit);
+ if (sh)
+ return sh;
+ }
+
+ for (SELECT_LEX_UNIT *un= sel_lex->first_inner_unit(); un;
+ un= un->next_unit())
+ {
+ for (SELECT_LEX *sl= un->first_select(); sl; sl= sl->next_select())
+ {
+ select_handler *uh= find_unit_handler_for_lex(thd, sl, unit);
+ if (uh)
+ return uh;
+ }
+ }
+ return nullptr;
+}
+
+
+/**
+ @brief
+ Look for provision of the select_handler interface by a foreign engine.
+ This interface must support processing UNITs (multiple SELECTs combined
+ with UNION/EXCEPT/INTERSECT operators)
+
+ @param
+ thd The thread handler
+ unit UNIT (one or more SELECTs combined with UNION/EXCEPT/INTERSECT
+
+ @details
+ The function checks that this is an upper level UNIT and if so looks
+ through its tables searching for one whose handlerton owns a
+ create_unit call-back function. If the call of this function returns
+ a select_handler interface object then the server will push the
+ query into this engine.
+ This is a responsibility of the create_unit call-back function to
+ check whether the engine can execute the query.
+
+ The function recursively scans subqueries (see find_unit_handler_for_lex())
+ to get down to real tables and process queries like this:
+ (SELECT a FROM t1 UNION SELECT b FROM t2) UNION
+ (SELECT c FROM t3 UNION select d FROM t4)
+
+ @retval the found select_handler if the search is successful
+ nullptr otherwise
+*/
+
+static select_handler *find_unit_handler(THD *thd,
+ SELECT_LEX_UNIT *unit)
+{
+ if (unit->outer_select())
+ return nullptr;
+
+ for (SELECT_LEX *sl= unit->first_select(); sl; sl= sl->next_select())
+ {
+ select_handler *uh= find_unit_handler_for_lex(thd, sl, unit);
+ if (uh)
+ return uh;
+ }
+ return nullptr;
+}
+
bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
select_result *sel_result,
@@ -1297,8 +1383,10 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
bool have_except= false, have_intersect= false,
have_except_all_or_intersect_all= false;
bool instantiate_tmp_table= false;
+ bool use_direct_union_result= false;
bool single_tvc= !first_sl->next_select() && first_sl->tvc;
bool single_tvc_wo_order= single_tvc && !first_sl->order_list.elements;
+ bool distinct_key= 0;
DBUG_ENTER("st_select_lex_unit::prepare");
DBUG_ASSERT(thd == current_thd);
@@ -1402,38 +1490,35 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
{
case INTERSECT_TYPE:
have_intersect= TRUE;
- if (!s->distinct){
- have_except_all_or_intersect_all= true;
- }
+ if (!s->distinct)
+ have_except_all_or_intersect_all= TRUE;
break;
case EXCEPT_TYPE:
have_except= TRUE;
- if (!s->distinct){
+ if (!s->distinct)
have_except_all_or_intersect_all= TRUE;
- }
+ break;
+ case DERIVED_TABLE_TYPE:
+ if (s->distinct)
+ distinct_key= 1;
break;
default:
break;
}
}
- /* Global option */
-
if (is_union_select || is_recursive)
{
if ((single_tvc_wo_order && !fake_select_lex) ||
(is_unit_op() && !union_needs_tmp_table() &&
- !have_except && !have_intersect && !single_tvc))
- {
- SELECT_LEX *last= first_select();
- while (last->next_select())
- last= last->next_select();
- if (!(tmp_result= union_result=
- new (thd->mem_root) select_union_direct(thd, sel_result,
- last)))
- goto err; /* purecov: inspected */
+ !have_except && !have_intersect && !single_tvc))
+ {
+ if (unlikely(set_direct_union_result(sel_result)))
+ goto err;
+ tmp_result= union_result;
fake_select_lex= NULL;
instantiate_tmp_table= false;
+ use_direct_union_result= true;
}
else
{
@@ -1617,7 +1702,8 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
if (join_union_item_types(thd, types, union_part_count + 1))
goto err;
if (union_result->create_result_table(thd, &types,
- MY_TEST(union_distinct),
+ (MY_TEST(union_distinct) ||
+ distinct_key),
create_options,
&derived_arg->alias, false,
instantiate_tmp_table, false,
@@ -1640,7 +1726,7 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
res= derived_arg->derived_result->create_result_table(thd,
&types,
- FALSE,
+ distinct_key,
create_options,
&derived_arg->alias,
FALSE, FALSE,
@@ -1768,9 +1854,9 @@ cont:
union_result->create_result_table(thd, &types,
MY_TEST(union_distinct) ||
have_except_all_or_intersect_all ||
- have_intersect,
- create_options, &empty_clex_str, false,
- instantiate_tmp_table, false,
+ have_intersect || distinct_key,
+ create_options, &empty_clex_str,
+ false, instantiate_tmp_table, false,
hidden);
union_result->addon_cnt= hidden;
for (uint i= 0; i < hidden; i++)
@@ -1814,37 +1900,6 @@ cont:
if (unlikely(saved_error))
goto err;
-
- if (fake_select_lex != NULL &&
- (thd->stmt_arena->is_stmt_prepare() ||
- (thd->lex->context_analysis_only & CONTEXT_ANALYSIS_ONLY_VIEW)))
- {
- /* Validate the global parameters of this union */
-
- init_prepare_fake_select_lex(thd, TRUE);
- /* Should be done only once (the only item_list per statement) */
- DBUG_ASSERT(fake_select_lex->join == 0);
- if (!(fake_select_lex->join= new JOIN(thd, item_list, thd->variables.option_bits,
- result)))
- {
- fake_select_lex->table_list.empty();
- DBUG_RETURN(TRUE);
- }
-
- /*
- Fake st_select_lex should have item list for correct ref_array
- allocation.
- */
- fake_select_lex->item_list= item_list;
-
- thd->lex->current_select= fake_select_lex;
-
- /*
- We need to add up n_sum_items in order to make the correct
- allocation in setup_ref_array().
- */
- fake_select_lex->n_child_sum_items+= global_parameters()->n_sum_items;
- }
}
else
{
@@ -1854,23 +1909,45 @@ cont:
*/
table->reset_item_list(&item_list, hidden);
}
- if (fake_select_lex != NULL &&
- (thd->stmt_arena->is_stmt_prepare() ||
- (thd->lex->context_analysis_only & CONTEXT_ANALYSIS_ONLY_VIEW)))
+
+ if (fake_select_lex != NULL)
{
- if (!fake_select_lex->join &&
- !(fake_select_lex->join=
- new JOIN(thd, item_list, thd->variables.option_bits, result)))
+ init_prepare_fake_select_lex(thd, TRUE);
+
+ DBUG_ASSERT(fake_select_lex->join == 0);
+ if (!(fake_select_lex->join= new JOIN(thd, item_list, options, result)))
{
- fake_select_lex->table_list.empty();
- DBUG_RETURN(TRUE);
+ fake_select_lex->table_list.empty();
+ DBUG_RETURN(TRUE);
}
- saved_error= fake_select_lex->join->
- prepare(fake_select_lex->table_list.first, 0,
+
+ /*
+ Fake st_select_lex should have item list for correct ref_array
+ allocation.
+ */
+ fake_select_lex->item_list= item_list;
+
+ thd->lex->current_select= fake_select_lex;
+
+ /*
+ We need to add up n_sum_items in order to make the correct
+ allocation in setup_ref_array().
+ */
+ fake_select_lex->n_child_sum_items+= global_parameters()->n_sum_items;
+ fake_select_lex->join->no_const_tables= TRUE;
+ saved_error= fake_select_lex->join->prepare(
+ fake_select_lex->table_list.first, 0,
global_parameters()->order_list.elements, // og_num
global_parameters()->order_list.first, // order
false, NULL, NULL, NULL, fake_select_lex, this);
- fake_select_lex->table_list.empty();
+ }
+
+ if (!thd->lex->is_view_context_analysis())
+ pushdown_unit= find_unit_handler(thd, this);
+ if (pushdown_unit)
+ {
+ if (prepare_pushdown(use_direct_union_result, sel_result))
+ goto err;
}
}
@@ -1884,6 +1961,45 @@ err:
DBUG_RETURN(TRUE);
}
+/**
+ @brief
+ Prepare st_select_lex_unit for the pushdown handler processing
+ @details
+ Creates and initializes data structures required for processing of the
+ pushdown handler. Validates fake_select_lex then discards it and sets
+ direct union result which is necessary for pushed down statements
+ @return
+ false - success
+ true - failure
+*/
+bool st_select_lex_unit::prepare_pushdown(bool use_direct_union_result,
+ select_result *sel_result)
+{
+ if (unlikely(pushdown_unit->prepare()))
+ return true;
+
+ if(!use_direct_union_result)
+ {
+ /*
+ Always use select_union_direct result for pushed down units, overwrite
+ the previous union_result unless select_union_direct is already used
+ */
+ if (unlikely(set_direct_union_result(sel_result)))
+ return true;
+ }
+ return false;
+}
+
+
+bool st_select_lex_unit::set_direct_union_result(select_result *sel_result)
+{
+ SELECT_LEX *last= first_select();
+ while (last->next_select())
+ last= last->next_select();
+ union_result= new (thd->mem_root) select_union_direct(thd, sel_result,
+ last);
+ return (union_result == nullptr);
+}
/**
@brief
@@ -2133,6 +2249,15 @@ bool st_select_lex_unit::optimize()
(lim.is_unlimited() || sl->braces) ?
sl->options & ~OPTION_FOUND_ROWS : sl->options | found_rows_for_union;
+ if (!this->pushdown_unit)
+ {
+ /*
+ If the UNIT hasn't been pushed down to the engine as a whole,
+ try to push down partial SELECTs of this UNIT separately
+ */
+ sl->pushdown_select= find_partial_select_handler(thd, sl, this);
+ }
+
saved_error= sl->join->optimize();
}
@@ -2152,16 +2277,29 @@ bool st_select_lex_unit::optimize()
bool st_select_lex_unit::exec()
{
+ DBUG_ENTER("st_select_lex_unit::exec");
+ if (executed && !uncacheable && !describe)
+ DBUG_RETURN(FALSE);
+
+ if (pushdown_unit)
+ {
+ create_explain_query_if_not_exists(thd->lex, thd->mem_root);
+ if (!executed)
+ save_union_explain(thd->lex->explain);
+ DBUG_RETURN(pushdown_unit->execute());
+ }
+ DBUG_RETURN(exec_inner());
+}
+
+
+bool st_select_lex_unit::exec_inner()
+{
SELECT_LEX *lex_select_save= thd->lex->current_select;
SELECT_LEX *select_cursor=first_select();
ulonglong add_rows=0;
- ha_rows examined_rows= 0;
bool first_execution= !executed;
- DBUG_ENTER("st_select_lex_unit::exec");
bool was_executed= executed;
- if (executed && !uncacheable && !describe)
- DBUG_RETURN(FALSE);
executed= 1;
if (!(uncacheable & ~UNCACHEABLE_EXPLAIN) && item &&
!item->with_recursive_reference)
@@ -2175,7 +2313,7 @@ bool st_select_lex_unit::exec()
save_union_explain(thd->lex->explain);
if (unlikely(saved_error))
- DBUG_RETURN(saved_error);
+ return saved_error;
if (union_result)
{
@@ -2192,6 +2330,7 @@ bool st_select_lex_unit::exec()
{
if (!fake_select_lex && !(with_element && with_element->is_recursive))
union_result->cleanup();
+
for (SELECT_LEX *sl= select_cursor; sl; sl= sl->next_select())
{
ha_rows records_at_start= 0;
@@ -2245,33 +2384,29 @@ bool st_select_lex_unit::exec()
if (sl->tvc)
sl->tvc->exec(sl);
else
- sl->join->exec();
+ saved_error= sl->join->exec();
if (sl == union_distinct && !have_except_all_or_intersect_all &&
!(with_element && with_element->is_recursive))
{
// This is UNION DISTINCT, so there should be a fake_select_lex
DBUG_ASSERT(fake_select_lex != NULL);
if (table->file->ha_disable_indexes(key_map(0), false))
- DBUG_RETURN(TRUE);
+ return true;
table->no_keyread=1;
}
- if (!sl->tvc)
- saved_error= sl->join->error;
if (likely(!saved_error))
{
- examined_rows+= thd->get_examined_row_count();
- thd->set_examined_row_count(0);
if (union_result->flush())
{
thd->lex->current_select= lex_select_save;
- DBUG_RETURN(1);
+ return true;
}
}
}
if (unlikely(saved_error))
{
thd->lex->current_select= lex_select_save;
- DBUG_RETURN(saved_error);
+ return saved_error;
}
if (fake_select_lex != NULL)
{
@@ -2280,7 +2415,7 @@ bool st_select_lex_unit::exec()
if (unlikely(error))
{
table->file->print_error(error, MYF(0));
- DBUG_RETURN(1);
+ return true;
}
}
if (found_rows_for_union && !sl->braces &&
@@ -2330,45 +2465,13 @@ bool st_select_lex_unit::exec()
saved_error= true;
set_limit(global_parameters());
- init_prepare_fake_select_lex(thd, first_execution);
JOIN *join= fake_select_lex->join;
saved_error= false;
- if (!join)
+ if (!(thd->stmt_arena->is_stmt_prepare() ||
+ (thd->lex->context_analysis_only & CONTEXT_ANALYSIS_ONLY_VIEW)) &&
+ first_execution)
{
- /*
- allocate JOIN for fake select only once (prevent
- mysql_select automatic allocation)
- TODO: The above is nonsense. mysql_select() will not allocate the
- join if one already exists. There must be some other reason why we
- don't let it allocate the join. Perhaps this is because we need
- some special parameter values passed to join constructor?
- */
- if (unlikely(!(fake_select_lex->join=
- new JOIN(thd, item_list, fake_select_lex->options,
- result))))
- {
- fake_select_lex->table_list.empty();
- goto err;
- }
- fake_select_lex->join->no_const_tables= TRUE;
-
- /*
- Fake st_select_lex should have item list for correct ref_array
- allocation.
- */
- fake_select_lex->item_list= item_list;
-
- /*
- We need to add up n_sum_items in order to make the correct
- allocation in setup_ref_array().
- Don't add more sum_items if we have already done JOIN::prepare
- for this (with a different join object)
- */
- if (fake_select_lex->ref_pointer_array.is_null())
- fake_select_lex->n_child_sum_items+= global_parameters()->n_sum_items;
-
- if (!was_executed)
- save_union_explain_part2(thd->lex->explain);
+ save_union_explain_part2(thd->lex->explain);
saved_error= mysql_select(thd, &result_table_list,
item_list, NULL,
@@ -2391,7 +2494,6 @@ bool st_select_lex_unit::exec()
subquery execution rather than EXPLAIN line production. In order
to reset them back, we re-do all of the actions (yes it is ugly):
*/ // psergey-todo: is the above really necessary anymore??
- join->init(thd, item_list, fake_select_lex->options, result);
saved_error= mysql_select(thd, &result_table_list, item_list, NULL,
global_parameters()->order_list.elements,
global_parameters()->order_list.first,
@@ -2401,9 +2503,9 @@ bool st_select_lex_unit::exec()
}
else
{
- join->join_examined_rows= 0;
saved_error= join->reinit();
- join->exec();
+ if (join->exec())
+ saved_error= 1;
}
}
@@ -2411,7 +2513,6 @@ bool st_select_lex_unit::exec()
if (likely(!saved_error))
{
thd->limit_found_rows = (ulonglong)table->file->stats.records + add_rows;
- thd->inc_examined_row_count(examined_rows);
}
/*
Mark for slow query log if any of the union parts didn't use
@@ -2420,9 +2521,8 @@ bool st_select_lex_unit::exec()
}
}
thd->lex->current_select= lex_select_save;
-err:
thd->lex->set_limit_rows_examined();
- DBUG_RETURN(saved_error);
+ return saved_error;
}
@@ -2458,7 +2558,6 @@ bool st_select_lex_unit::exec_recursive()
bool is_unrestricted= with_element->is_unrestricted();
List_iterator_fast<TABLE_LIST> li(with_element->rec_result->rec_table_refs);
TMP_TABLE_PARAM *tmp_table_param= &with_element->rec_result->tmp_table_param;
- ha_rows examined_rows= 0;
bool was_executed= executed;
TABLE_LIST *rec_tbl;
@@ -2509,29 +2608,23 @@ bool st_select_lex_unit::exec_recursive()
sl->tvc->exec(sl);
else
{
- sl->join->exec();
- saved_error= sl->join->error;
+ saved_error= sl->join->exec();
}
if (likely(!saved_error))
{
- examined_rows+= thd->get_examined_row_count();
- thd->set_examined_row_count(0);
if (unlikely(union_result->flush()))
{
thd->lex->current_select= lex_select_save;
DBUG_RETURN(1);
}
}
- if (unlikely(saved_error))
+ else
{
thd->lex->current_select= lex_select_save;
goto err;
-
}
}
- thd->inc_examined_row_count(examined_rows);
-
incr_table->file->info(HA_STATUS_VARIABLE);
if (with_element->level && incr_table->file->stats.records == 0)
with_element->set_as_stabilized();
@@ -2651,6 +2744,9 @@ bool st_select_lex_unit::cleanup()
}
}
+ delete pushdown_unit;
+ pushdown_unit= nullptr;
+
DBUG_RETURN(error);
}
@@ -2684,12 +2780,9 @@ bool st_select_lex_unit::change_result(select_result_interceptor *new_result,
if (sl->join->change_result(new_result, old_result))
return true; /* purecov: inspected */
}
- /*
- If there were a fake_select_lex->join, we would have to change the
- result of that also, but change_result() is called before such an
- object is created.
- */
- DBUG_ASSERT(fake_select_lex == NULL || fake_select_lex->join == NULL);
+
+ if (fake_select_lex && fake_select_lex->join)
+ fake_select_lex->join->change_result(new_result, old_result);
return false;
}
@@ -2814,6 +2907,8 @@ bool st_select_lex::cleanup()
inner_refs_list.empty();
exclude_from_table_unique_test= FALSE;
hidden_bit_fields= 0;
+ delete pushdown_select;
+ pushdown_select= nullptr;
DBUG_RETURN(error);
}
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 6acea2d5..589bcc9c 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -45,6 +45,9 @@
#include "sql_insert.h" // For vers_insert_history_row() that may be
// needed for System Versioning.
+#ifdef WITH_WSREP
+#include "wsrep_mysqld.h"
+#endif
/**
True if the table's input and output record buffers are comparable using
@@ -197,22 +200,11 @@ static bool check_fields(THD *thd, TABLE_LIST *table, List<Item> &items,
return true;
}
- DBUG_ASSERT(thd->lex->sql_command == SQLCOM_UPDATE);
- for (List_iterator_fast<Item> it(items); (item=it++);)
- {
- Field *f= item->field_for_view_update()->field;
- vers_select_conds_t &period= table->period_conditions;
- if (period.field_start->field == f || period.field_end->field == f)
- {
- my_error(ER_PERIOD_COLUMNS_UPDATED, MYF(0),
- item->name.str, period.name.str);
- return true;
- }
- }
}
return FALSE;
}
+
bool TABLE::vers_check_update(List<Item> &items)
{
List_iterator<Item> it(items);
@@ -344,36 +336,25 @@ int cut_fields_for_portion_of_time(THD *thd, TABLE *table,
return res;
}
-/*
- Process usual UPDATE
-
- SYNOPSIS
- mysql_update()
- thd thread handler
- fields fields for update
- values values of fields for update
- conds WHERE clause expression
- order_num number of elemen in ORDER BY clause
- order ORDER BY clause list
- limit limit clause
+/**
+ @brief Special handling of single-table updates after prepare phase
- RETURN
- 0 - OK
- 2 - privilege check and openning table passed, but we need to convert to
- multi-update because of view substitution
- 1 - error
+ @param thd global context the processed statement
+ @returns false on success, true on error
*/
-int mysql_update(THD *thd,
- TABLE_LIST *table_list,
- List<Item> &fields,
- List<Item> &values,
- COND *conds,
- uint order_num, ORDER *order,
- ha_rows limit,
- bool ignore,
- ha_rows *found_return, ha_rows *updated_return)
+bool Sql_cmd_update::update_single_table(THD *thd)
{
+ SELECT_LEX_UNIT *unit = &lex->unit;
+ SELECT_LEX *select_lex= unit->first_select();
+ TABLE_LIST *const table_list = select_lex->get_table_list();
+ List<Item> *fields= &select_lex->item_list;
+ List<Item> *values= &lex->value_list;
+ COND *conds= select_lex->where_cond_after_prepare;
+ ORDER *order= select_lex->order_list.first;
+ ha_rows limit= unit->lim.get_select_limit();
+ bool ignore= lex->ignore;
+
bool using_limit= limit != HA_POS_ERROR;
bool safe_update= (thd->variables.option_bits & OPTION_SAFE_UPDATES)
&& !thd->lex->describe;
@@ -385,76 +366,38 @@ int mysql_update(THD *thd,
ha_rows dup_key_found;
bool need_sort= TRUE;
bool reverse= FALSE;
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- privilege_t want_privilege(NO_ACL);
-#endif
- uint table_count= 0;
ha_rows updated, updated_or_same, found;
key_map old_covering_keys;
TABLE *table;
SQL_SELECT *select= NULL;
SORT_INFO *file_sort= 0;
READ_RECORD info;
- SELECT_LEX *select_lex= thd->lex->first_select_lex();
ulonglong id;
List<Item> all_fields;
killed_state killed_status= NOT_KILLED;
bool has_triggers, binlog_is_row, do_direct_update= FALSE;
Update_plan query_plan(thd->mem_root);
Explain_update *explain;
- TABLE_LIST *update_source_table;
query_plan.index= MAX_KEY;
query_plan.using_filesort= FALSE;
// For System Versioning (may need to insert new fields to a table).
ha_rows rows_inserted= 0;
- DBUG_ENTER("mysql_update");
+ DBUG_ENTER("Sql_cmd_update::update_single_table");
- create_explain_query(thd->lex, thd->mem_root);
- if (open_tables(thd, &table_list, &table_count, 0))
- DBUG_RETURN(1);
-
- /* Prepare views so they are handled correctly */
- if (mysql_handle_derived(thd->lex, DT_INIT))
- DBUG_RETURN(1);
-
- if (table_list->has_period() && table_list->is_view_or_derived())
- {
- my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
- DBUG_RETURN(TRUE);
- }
-
- if (((update_source_table=unique_table(thd, table_list,
- table_list->next_global, 0)) ||
- table_list->is_multitable()))
- {
- DBUG_ASSERT(update_source_table || table_list->view != 0);
- DBUG_PRINT("info", ("Switch to multi-update"));
- /* pass counter value */
- thd->lex->table_count_update= table_count;
- if (thd->lex->period_conditions.is_set())
- {
- my_error(ER_NOT_SUPPORTED_YET, MYF(0),
- "updating and querying the same temporal periods table");
-
- DBUG_RETURN(1);
- }
+ THD_STAGE_INFO(thd, stage_init_update);
- /* convert to multiupdate */
- DBUG_RETURN(2);
- }
- if (lock_tables(thd, table_list, table_count, 0))
- DBUG_RETURN(1);
+ thd->table_map_for_update= 0;
- (void) read_statistics_for_tables_if_needed(thd, table_list);
-
- THD_STAGE_INFO(thd, stage_init_update);
if (table_list->handle_derived(thd->lex, DT_MERGE_FOR_INSERT))
DBUG_RETURN(1);
if (table_list->handle_derived(thd->lex, DT_PREPARE))
DBUG_RETURN(1);
+ if (setup_ftfuncs(select_lex))
+ DBUG_RETURN(1);
+
table= table_list->table;
if (!table_list->single_table_updatable())
@@ -463,89 +406,26 @@ int mysql_update(THD *thd,
DBUG_RETURN(1);
}
- /* Calculate "table->covering_keys" based on the WHERE */
- table->covering_keys= table->s->keys_in_use;
table->opt_range_keys.clear_all();
query_plan.select_lex= thd->lex->first_select_lex();
query_plan.table= table;
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- /* Force privilege re-checking for views after they have been opened. */
- want_privilege= (table_list->view ? UPDATE_ACL :
- table_list->grant.want_privilege);
-#endif
thd->lex->promote_select_describe_flag_if_needed();
- if (mysql_prepare_update(thd, table_list, &conds, order_num, order))
- DBUG_RETURN(1);
-
- if (table_list->has_period())
- {
- if (!table_list->period_conditions.start.item->const_item()
- || !table_list->period_conditions.end.item->const_item())
- {
- my_error(ER_NOT_CONSTANT_EXPRESSION, MYF(0), "FOR PORTION OF");
- DBUG_RETURN(true);
- }
- table->no_cache= true;
- }
-
old_covering_keys= table->covering_keys; // Keys used in WHERE
- /* Check the fields we are going to modify */
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- table_list->grant.want_privilege= table->grant.want_privilege= want_privilege;
- table_list->register_want_access(want_privilege);
-#endif
- /* 'Unfix' fields to allow correct marking by the setup_fields function. */
- if (table_list->is_view())
- unfix_fields(fields);
- if (setup_fields_with_no_wrap(thd, Ref_ptr_array(),
- fields, MARK_COLUMNS_WRITE, 0, 0))
- DBUG_RETURN(1); /* purecov: inspected */
- if (check_fields(thd, table_list, fields, table_list->view))
- {
- DBUG_RETURN(1);
- }
- bool has_vers_fields= table->vers_check_update(fields);
- if (check_key_in_view(thd, table_list))
- {
- my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias.str, "UPDATE");
- DBUG_RETURN(1);
- }
+ bool has_vers_fields= table->vers_check_update(*fields);
if (table->default_field)
table->mark_default_fields_for_write(false);
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- /* Check values */
- table_list->grant.want_privilege= table->grant.want_privilege=
- (SELECT_ACL & ~table->grant.privilege);
-#endif
- if (setup_fields(thd, Ref_ptr_array(), values, MARK_COLUMNS_READ, 0, NULL, 0))
- {
- free_underlaid_joins(thd, select_lex);
- DBUG_RETURN(1); /* purecov: inspected */
- }
-
- if (table_list->table->check_assignability_explicit_fields(fields, values,
- ignore))
- DBUG_RETURN(true);
-
- if (check_unique_table(thd, table_list))
- DBUG_RETURN(TRUE);
-
- switch_to_nullable_trigger_fields(fields, table);
- switch_to_nullable_trigger_fields(values, table);
+ switch_to_nullable_trigger_fields(*fields, table);
+ switch_to_nullable_trigger_fields(*values, table);
/* Apply the IN=>EXISTS transformation to all subqueries and optimize them */
if (select_lex->optimize_unflattened_subqueries(false))
DBUG_RETURN(TRUE);
- if (select_lex->inner_refs_list.elements &&
- fix_inner_refs(thd, all_fields, select_lex, select_lex->ref_pointer_array))
- DBUG_RETURN(1);
-
if (conds)
{
Item::cond_result cond_value;
@@ -558,6 +438,18 @@ int mysql_update(THD *thd,
goto produce_explain_and_leave;
}
}
+ if (conds && thd->lex->are_date_funcs_used())
+ {
+ /* Rewrite datetime comparison conditions into sargable */
+ conds= conds->top_level_transform(thd, &Item::date_conds_transformer,
+ (uchar *) 0);
+ }
+
+ if (conds && optimizer_flag(thd, OPTIMIZER_SWITCH_SARGABLE_CASEFOLD))
+ {
+ conds= conds->top_level_transform(thd, &Item::varchar_upper_cmp_transformer,
+ (uchar *) 0);
+ }
// Don't count on usage of 'only index' when calculating which key to use
table->covering_keys.clear_all();
@@ -586,9 +478,9 @@ int mysql_update(THD *thd,
set_statistics_for_table(thd, table);
select= make_select(table, 0, 0, conds, (SORT_INFO*) 0, 0, &error);
- if (unlikely(error || !limit || thd->is_error() ||
- (select && select->check_quick(thd, safe_update, limit,
- Item_func::BITMAP_ALL))))
+ if (error || !limit || thd->is_error() || table->stat_records() == 0 ||
+ (select && select->check_quick(thd, safe_update, limit,
+ Item_func::BITMAP_ALL)))
{
query_plan.set_impossible_where();
if (thd->lex->describe || thd->lex->analyze_stmt)
@@ -786,9 +678,9 @@ int mysql_update(THD *thd,
}
if (use_direct_update &&
- !table->file->info_push(INFO_KIND_UPDATE_FIELDS, &fields) &&
- !table->file->info_push(INFO_KIND_UPDATE_VALUES, &values) &&
- !table->file->direct_update_rows_init(&fields))
+ !table->file->info_push(INFO_KIND_UPDATE_FIELDS, fields) &&
+ !table->file->info_push(INFO_KIND_UPDATE_VALUES, values) &&
+ !table->file->direct_update_rows_init(fields))
{
do_direct_update= TRUE;
@@ -819,7 +711,6 @@ int mysql_update(THD *thd,
if (!(file_sort= filesort(thd, table, &fsort, fs_tracker)))
goto err;
- thd->inc_examined_row_count(file_sort->examined_rows);
/*
Filesort has already found and selected the rows we want to update,
@@ -839,15 +730,15 @@ int mysql_update(THD *thd,
table->use_all_columns();
/*
- We are doing a search on a key that is updated. In this case
- we go trough the matching rows, save a pointer to them and
- update these in a separate loop based on the pointer.
+ We are doing a search on a key that is updated. In this case
+ we go trough the matching rows, save a pointer to them and
+ update these in a separate loop based on the pointer.
*/
explain->buf_tracker.on_scan_init();
IO_CACHE tempfile;
if (open_cached_file(&tempfile, mysql_tmpdir,TEMP_PREFIX,
- DISK_BUFFER_SIZE, MYF(MY_WME)))
- goto err;
+ DISK_CHUNK_SIZE, MYF(MY_WME)))
+ goto err;
/* If quick select is used, initialize it before retrieving rows. */
if (select && select->quick && select->quick->reset())
@@ -887,7 +778,7 @@ int mysql_update(THD *thd,
while (likely(!(error=info.read_record())) && likely(!thd->killed))
{
explain->buf_tracker.on_record_read();
- thd->inc_examined_row_count(1);
+ thd->inc_examined_row_count();
if (!select || (error= select->skip_record(thd)) > 0)
{
if (table->file->ha_was_semi_consistent_read())
@@ -1024,7 +915,7 @@ update_begin:
while (!(error=info.read_record()) && !thd->killed)
{
explain->tracker.on_record_read();
- thd->inc_examined_row_count(1);
+ thd->inc_examined_row_count();
if (!select || select->skip_record(thd) > 0)
{
if (table->file->ha_was_semi_consistent_read())
@@ -1037,7 +928,7 @@ update_begin:
cut_fields_for_portion_of_time(thd, table,
table_list->period_conditions);
- if (fill_record_n_invoke_before_triggers(thd, table, fields, values, 0,
+ if (fill_record_n_invoke_before_triggers(thd, table, *fields, *values, 0,
TRG_EVENT_UPDATE))
break; /* purecov: inspected */
@@ -1370,9 +1261,9 @@ update_end:
thd->lex->current_select->save_leaf_tables(thd);
thd->lex->current_select->first_cond_optimization= 0;
}
- *found_return= found;
- *updated_return= updated;
-
+ ((multi_update *)result)->set_found(found);
+ ((multi_update *)result)->set_updated(updated);
+
if (unlikely(thd->lex->analyze_stmt))
goto emit_explain_and_leave;
@@ -1405,77 +1296,6 @@ emit_explain_and_leave:
DBUG_RETURN((err2 || thd->is_error()) ? 1 : 0);
}
-/*
- Prepare items in UPDATE statement
-
- SYNOPSIS
- mysql_prepare_update()
- thd - thread handler
- table_list - global/local table list
- conds - conditions
- order_num - number of ORDER BY list entries
- order - ORDER BY clause list
-
- RETURN VALUE
- FALSE OK
- TRUE error
-*/
-bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list,
- Item **conds, uint order_num, ORDER *order)
-{
- Item *fake_conds= 0;
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- TABLE *table= table_list->table;
-#endif
- List<Item> all_fields;
- SELECT_LEX *select_lex= thd->lex->first_select_lex();
- DBUG_ENTER("mysql_prepare_update");
-
-#ifndef NO_EMBEDDED_ACCESS_CHECKS
- table_list->grant.want_privilege= table->grant.want_privilege=
- (SELECT_ACL & ~table->grant.privilege);
- table_list->register_want_access(SELECT_ACL);
-#endif
-
- thd->lex->allow_sum_func.clear_all();
-
- if (table_list->has_period() &&
- select_lex->period_setup_conds(thd, table_list))
- DBUG_RETURN(true);
-
- DBUG_ASSERT(table_list->table);
- // conds could be cached from previous SP call
- DBUG_ASSERT(!table_list->vers_conditions.need_setup() ||
- !*conds || thd->stmt_arena->is_stmt_execute());
- if (select_lex->vers_setup_conds(thd, table_list))
- DBUG_RETURN(TRUE);
-
- *conds= select_lex->where;
-
- /*
- We do not call DT_MERGE_FOR_INSERT because it has no sense for simple
- (not multi-) update
- */
- if (mysql_handle_derived(thd->lex, DT_PREPARE))
- DBUG_RETURN(TRUE);
-
- if (setup_tables_and_check_access(thd, &select_lex->context,
- &select_lex->top_join_list, table_list,
- select_lex->leaf_tables,
- FALSE, UPDATE_ACL, SELECT_ACL, TRUE) ||
- setup_conds(thd, table_list, select_lex->leaf_tables, conds) ||
- select_lex->setup_ref_array(thd, order_num) ||
- setup_order(thd, select_lex->ref_pointer_array,
- table_list, all_fields, all_fields, order) ||
- setup_ftfuncs(select_lex))
- DBUG_RETURN(TRUE);
-
-
- select_lex->fix_prepare_information(thd, conds, &fake_conds);
- if (!thd->lex->upd_del_where)
- thd->lex->upd_del_where= *conds;
- DBUG_RETURN(FALSE);
-}
/**
Check that we are not using table that we are updating in a sub select
@@ -1686,6 +1506,14 @@ static bool multi_update_check_table_access(THD *thd, TABLE_LIST *table,
else
{
/* Must be a base or derived table. */
+ /*
+ Derived tables do not need the check below.
+ Besides one have take into account that for mergeable derived tables
+ TABLE_LIST::TABLE is set to NULL after the first execution of the query.
+ */
+ if (table->is_derived())
+ return false;
+
const bool updated= table->table->map & tables_for_update;
if (check_table_access(thd, updated ? UPDATE_ACL : SELECT_ACL, table,
FALSE, 1, FALSE))
@@ -1703,15 +1531,6 @@ static bool multi_update_check_table_access(THD *thd, TABLE_LIST *table,
}
-class Multiupdate_prelocking_strategy : public DML_prelocking_strategy
-{
- bool done;
- bool has_prelocking_list;
-public:
- void reset(THD *thd);
- bool handle_end(THD *thd);
-};
-
void Multiupdate_prelocking_strategy::reset(THD *thd)
{
done= false;
@@ -1741,7 +1560,13 @@ bool Multiupdate_prelocking_strategy::handle_end(THD *thd)
mysql_handle_derived(lex, DT_PREPARE))
DBUG_RETURN(1);
- /*
+ if (table_list->has_period() && table_list->is_view_or_derived())
+ {
+ my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
+ DBUG_RETURN(TRUE);
+ }
+
+ /*
setup_tables() need for VIEWs. JOIN::prepare() will call setup_tables()
second time, but this call will do nothing (there are check for second
call in setup_tables()).
@@ -1752,6 +1577,10 @@ bool Multiupdate_prelocking_strategy::handle_end(THD *thd)
FALSE, UPDATE_ACL, SELECT_ACL, TRUE))
DBUG_RETURN(1);
+ if (table_list->has_period() &&
+ select_lex->period_setup_conds(thd, table_list))
+ DBUG_RETURN(true);
+
List<Item> *fields= &lex->first_select_lex()->item_list;
if (setup_fields_with_no_wrap(thd, Ref_ptr_array(),
*fields, MARK_COLUMNS_WRITE, 0, 0))
@@ -1860,156 +1689,6 @@ bool Multiupdate_prelocking_strategy::handle_end(THD *thd)
DBUG_RETURN(0);
}
-/*
- make update specific preparation and checks after opening tables
-
- SYNOPSIS
- mysql_multi_update_prepare()
- thd thread handler
-
- RETURN
- FALSE OK
- TRUE Error
-*/
-
-int mysql_multi_update_prepare(THD *thd)
-{
- LEX *lex= thd->lex;
- TABLE_LIST *table_list= lex->query_tables;
- TABLE_LIST *tl;
- Multiupdate_prelocking_strategy prelocking_strategy;
- uint table_count= lex->table_count_update;
- DBUG_ENTER("mysql_multi_update_prepare");
-
- /*
- Open tables and create derived ones, but do not lock and fill them yet.
-
- During prepare phase acquire only S metadata locks instead of SW locks to
- keep prepare of multi-UPDATE compatible with concurrent LOCK TABLES WRITE
- and global read lock.
-
- Don't evaluate any subqueries even if constant, because
- tables aren't locked yet.
- */
- lex->context_analysis_only|= CONTEXT_ANALYSIS_ONLY_DERIVED;
- if (thd->lex->sql_command == SQLCOM_UPDATE_MULTI)
- {
- if (open_tables(thd, &table_list, &table_count,
- thd->stmt_arena->is_stmt_prepare() ? MYSQL_OPEN_FORCE_SHARED_MDL : 0,
- &prelocking_strategy))
- DBUG_RETURN(TRUE);
- }
- else
- {
- /* following need for prepared statements, to run next time multi-update */
- thd->lex->sql_command= SQLCOM_UPDATE_MULTI;
- prelocking_strategy.reset(thd);
- if (prelocking_strategy.handle_end(thd))
- DBUG_RETURN(TRUE);
- }
-
- /* now lock and fill tables */
- if (!thd->stmt_arena->is_stmt_prepare() &&
- lock_tables(thd, table_list, table_count, 0))
- DBUG_RETURN(TRUE);
-
- lex->context_analysis_only&= ~CONTEXT_ANALYSIS_ONLY_DERIVED;
-
- (void) read_statistics_for_tables_if_needed(thd, table_list);
- /* @todo: downgrade the metadata locks here. */
-
- /*
- Check that we are not using table that we are updating, but we should
- skip all tables of UPDATE SELECT itself
- */
- lex->first_select_lex()->exclude_from_table_unique_test= TRUE;
- /* We only need SELECT privilege for columns in the values list */
- List_iterator<TABLE_LIST> ti(lex->first_select_lex()->leaf_tables);
- while ((tl= ti++))
- {
- if (tl->is_jtbm())
- continue;
- TABLE *table= tl->table;
- TABLE_LIST *tlist;
- if (!(tlist= tl->top_table())->derived)
- {
- tlist->grant.want_privilege=
- (SELECT_ACL & ~tlist->grant.privilege);
- table->grant.want_privilege= (SELECT_ACL & ~table->grant.privilege);
- }
- DBUG_PRINT("info", ("table: %s want_privilege: %llx", tl->alias.str,
- (longlong) table->grant.want_privilege));
- }
- /*
- Set exclude_from_table_unique_test value back to FALSE. It is needed for
- further check in multi_update::prepare whether to use record cache.
- */
- lex->first_select_lex()->exclude_from_table_unique_test= FALSE;
-
- if (lex->save_prep_leaf_tables())
- DBUG_RETURN(TRUE);
-
- DBUG_RETURN (FALSE);
-}
-
-
-/*
- Setup multi-update handling and call SELECT to do the join
-*/
-
-bool mysql_multi_update(THD *thd, TABLE_LIST *table_list, List<Item> *fields,
- List<Item> *values, COND *conds, ulonglong options,
- enum enum_duplicates handle_duplicates,
- bool ignore, SELECT_LEX_UNIT *unit,
- SELECT_LEX *select_lex, multi_update **result)
-{
- bool res;
- DBUG_ENTER("mysql_multi_update");
-
- if (!(*result= new (thd->mem_root) multi_update(thd, table_list,
- &thd->lex->first_select_lex()->leaf_tables,
- fields, values, handle_duplicates, ignore)))
- {
- DBUG_RETURN(TRUE);
- }
-
- if ((*result)->init(thd))
- DBUG_RETURN(1);
-
- thd->abort_on_warning= !ignore && thd->is_strict_mode();
- List<Item> total_list;
-
- if (setup_tables(thd, &select_lex->context, &select_lex->top_join_list,
- table_list, select_lex->leaf_tables, FALSE, FALSE))
- DBUG_RETURN(1);
-
- if (select_lex->vers_setup_conds(thd, table_list))
- DBUG_RETURN(1);
-
- res= mysql_select(thd,
- table_list, total_list, conds,
- select_lex->order_list.elements,
- select_lex->order_list.first, NULL, NULL, NULL,
- options | SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK |
- OPTION_SETUP_TABLES_DONE,
- *result, unit, select_lex);
-
- DBUG_PRINT("info",("res: %d report_error: %d", res, (int) thd->is_error()));
- res|= thd->is_error();
- if (unlikely(res))
- (*result)->abort_result_set();
- else
- {
- if (thd->lex->describe || thd->lex->analyze_stmt)
- {
- bool extended= thd->lex->describe & DESCRIBE_EXTENDED;
- res= thd->lex->explain->send_explain(thd, extended);
- }
- }
- thd->abort_on_warning= 0;
- DBUG_RETURN(res);
-}
-
multi_update::multi_update(THD *thd_arg, TABLE_LIST *table_list,
List<TABLE_LIST> *leaves_list,
@@ -2045,6 +1724,19 @@ bool multi_update::init(THD *thd)
}
+bool multi_update::init_for_single_table(THD *thd)
+{
+ List_iterator_fast<TABLE_LIST> li(*leaves);
+ TABLE_LIST *tbl;
+ while ((tbl =li++))
+ {
+ if (updated_leaves.push_back(tbl, thd->mem_root))
+ return true;
+ }
+ return false;
+}
+
+
/*
Connect fields with tables and create list of tables that are updated
*/
@@ -2120,7 +1812,8 @@ int multi_update::prepare(List<Item> &not_used_values,
{
table->read_set= &table->def_read_set;
bitmap_union(table->read_set, &table->tmp_set);
- table->file->prepare_for_insert(1);
+ if (!(thd->lex->context_analysis_only & CONTEXT_ANALYSIS_ONLY_PREPARE))
+ table->file->prepare_for_insert(1);
}
}
if (unlikely(error))
@@ -2287,6 +1980,7 @@ static bool safe_update_on_fly(THD *thd, JOIN_TAB *join_tab,
case JT_REF:
case JT_REF_OR_NULL:
return !is_key_used(table, join_tab->ref.key, table->write_set);
+ case JT_RANGE:
case JT_ALL:
if (bitmap_is_overlapping(&table->tmp_set, table->write_set))
return FALSE;
@@ -3006,8 +2700,7 @@ int multi_update::do_updates()
(void) tmp_table->file->ha_rnd_end();
check_opt_it.rewind();
while (TABLE *tbl= check_opt_it++)
- tbl->file->ha_rnd_end();
-
+ tbl->file->ha_rnd_end();
}
DBUG_RETURN(0);
@@ -3146,3 +2839,267 @@ bool multi_update::send_eof()
}
DBUG_RETURN(FALSE);
}
+
+
+/**
+ @brief Check whether conversion to multi-table update is prohibited
+
+ @param thd global context the processed statement
+ @returns true if conversion is prohibited, false otherwise
+
+ @todo
+ Introduce handler level flag for storage engines that would prohibit
+ such conversion for any single-table update.
+*/
+
+bool Sql_cmd_update::processing_as_multitable_update_prohibited(THD *thd)
+{
+ SELECT_LEX *const select_lex = thd->lex->first_select_lex();
+ return
+ (select_lex->order_list.elements &&
+ select_lex->limit_params.select_limit);
+}
+
+
+/**
+ @brief Perform precheck of table privileges for update statements
+
+ @param thd global context the processed statement
+ @returns false on success, true on error
+*/
+
+bool Sql_cmd_update::precheck(THD *thd)
+{
+ if (!multitable)
+ {
+ if (update_precheck(thd, lex->query_tables))
+ return true;
+ }
+ else
+ {
+ if (multi_update_precheck(thd, lex->query_tables))
+ return true;
+ }
+
+#ifdef WITH_WSREP
+ WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
+#endif
+
+ return false;
+
+#ifdef WITH_WSREP
+wsrep_error_label:
+#endif
+ return true;
+}
+
+
+/**
+ @brief Perform context analysis for update statements
+
+ @param thd global context the processed statement
+ @returns false on success, true on error
+
+ @note
+ The main bulk of the context analysis actions for and update statement
+ is performed by a call of JOIN::prepare().
+*/
+
+bool Sql_cmd_update::prepare_inner(THD *thd)
+{
+ JOIN *join;
+ int err= 0;
+ SELECT_LEX *const select_lex = thd->lex->first_select_lex();
+ TABLE_LIST *const table_list = select_lex->get_table_list();
+ ulonglong select_options= select_lex->options;
+ bool free_join= 1;
+ DBUG_ENTER("Sql_cmd_update::prepare_inner");
+
+ (void) read_statistics_for_tables_if_needed(thd, table_list);
+
+ THD_STAGE_INFO(thd, stage_init_update);
+
+ if (!multitable)
+ {
+ if (mysql_handle_derived(lex, DT_INIT))
+ DBUG_RETURN(TRUE);
+ }
+
+ if (table_list->has_period() && table_list->is_view_or_derived())
+ {
+ my_error(ER_IT_IS_A_VIEW, MYF(0), table_list->table_name.str);
+ DBUG_RETURN(TRUE);
+ }
+
+ if (!multitable)
+ {
+ TABLE_LIST *update_source_table= 0;
+
+ if (((update_source_table=unique_table(thd, table_list,
+ table_list->next_global, 0)) ||
+ table_list->is_multitable()))
+ {
+ DBUG_ASSERT(update_source_table || table_list->view != 0);
+ if (thd->lex->period_conditions.is_set())
+ {
+ my_error(ER_NOT_SUPPORTED_YET, MYF(0),
+ "updating and querying the same temporal periods table");
+ DBUG_RETURN(TRUE);
+ }
+ if (!table_list->is_multitable() &&
+ !processing_as_multitable_update_prohibited(thd))
+ multitable= true;
+ }
+ }
+
+ if(!multitable)
+ {
+ if (table_list->is_view_or_derived() &&
+ select_lex->leaf_tables.elements > 1)
+ multitable = true;
+ }
+
+ if (!multitable)
+ {
+ if (lex->ignore)
+ lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_UPDATE_IGNORE);
+ }
+
+ if (!(result= new (thd->mem_root) multi_update(thd, table_list,
+ &select_lex->leaf_tables,
+ &select_lex->item_list,
+ &lex->value_list,
+ lex->duplicates,
+ lex->ignore)))
+ {
+ DBUG_RETURN(TRUE);
+ }
+
+ if (((multi_update *)result)->init(thd))
+ DBUG_RETURN(TRUE);
+
+ if (setup_tables(thd, &select_lex->context, &select_lex->top_join_list,
+ table_list, select_lex->leaf_tables, false, false))
+ DBUG_RETURN(TRUE);
+
+ if (select_lex->vers_setup_conds(thd, table_list))
+ DBUG_RETURN(TRUE);
+
+ {
+ if (thd->lex->describe)
+ select_options|= SELECT_DESCRIBE;
+
+ /*
+ When in EXPLAIN, delay deleting the joins so that they are still
+ available when we're producing EXPLAIN EXTENDED warning text.
+ */
+ if (select_options & SELECT_DESCRIBE)
+ free_join= 0;
+
+ select_options|=
+ SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK | OPTION_SETUP_TABLES_DONE;
+
+ if (!(join= new (thd->mem_root) JOIN(thd, select_lex->item_list,
+ select_options, result)))
+ DBUG_RETURN(TRUE);
+ THD_STAGE_INFO(thd, stage_init);
+ select_lex->join= join;
+ thd->lex->used_tables=0;
+ select_lex->item_list_usage= MARK_COLUMNS_WRITE;
+ if ((err= join->prepare(table_list, select_lex->where,
+ select_lex->order_list.elements,
+ select_lex->order_list.first,
+ false, NULL, NULL, NULL,
+ select_lex, &lex->unit)))
+ {
+ goto err;
+ }
+ if (!multitable &&
+ select_lex->sj_subselects.elements)
+ multitable= true;
+ }
+
+ if (table_list->has_period())
+ {
+ Item *item;
+ for (List_iterator_fast<Item> it(select_lex->item_list); (item=it++);)
+ {
+ Field *f= item->field_for_view_update()->field;
+ vers_select_conds_t &period= table_list->period_conditions;
+ if (period.field_start->field == f || period.field_end->field == f)
+ {
+ my_error(ER_PERIOD_COLUMNS_UPDATED, MYF(0),
+ item->name.str, period.name.str);
+ DBUG_RETURN(true);
+ }
+ }
+
+ if (!table_list->period_conditions.start.item->const_item()
+ || !table_list->period_conditions.end.item->const_item())
+ {
+ my_error(ER_NOT_CONSTANT_EXPRESSION, MYF(0), "FOR PORTION OF");
+ DBUG_RETURN(true);
+ }
+ table_list->table->no_cache= true;
+ }
+
+
+ free_join= false;
+
+err:
+
+ if (free_join)
+ {
+ THD_STAGE_INFO(thd, stage_end);
+ err|= (int)(select_lex->cleanup());
+ DBUG_RETURN(err || thd->is_error());
+ }
+ DBUG_RETURN(err);
+
+}
+
+
+/**
+ @brief Perform optimization and execution actions needed for updates
+
+ @param thd global context the processed statement
+ @returns false on success, true on error
+*/
+
+bool Sql_cmd_update::execute_inner(THD *thd)
+{
+ bool res= 0;
+
+ thd->get_stmt_da()->reset_current_row_for_warning(1);
+ if (!multitable)
+ res= update_single_table(thd);
+ else
+ {
+ thd->abort_on_warning= !thd->lex->ignore && thd->is_strict_mode();
+ res= Sql_cmd_dml::execute_inner(thd);
+ }
+
+ res|= thd->is_error();
+ if (multitable)
+ {
+ if (unlikely(res))
+ result->abort_result_set();
+ else
+ {
+ if (thd->lex->describe || thd->lex->analyze_stmt)
+ {
+ bool extended= thd->lex->describe & DESCRIBE_EXTENDED;
+ res= thd->lex->explain->send_explain(thd, extended);
+ }
+ }
+ }
+
+ if (result)
+ {
+ res= false;
+ delete result;
+ }
+
+ status_var_add(thd->status_var.rows_sent, thd->get_sent_row_count());
+ return res;
+}
diff --git a/sql/sql_update.h b/sql/sql_update.h
index 65e44d11..d01ecb73 100644
--- a/sql/sql_update.h
+++ b/sql/sql_update.h
@@ -17,6 +17,8 @@
#define SQL_UPDATE_INCLUDED
#include "sql_class.h" /* enum_duplicates */
+#include "sql_cmd.h" // Sql_cmd_dml
+#include "sql_base.h"
class Item;
struct TABLE_LIST;
@@ -25,20 +27,83 @@ class THD;
typedef class st_select_lex SELECT_LEX;
typedef class st_select_lex_unit SELECT_LEX_UNIT;
-bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list,
- Item **conds, uint order_num, ORDER *order);
bool check_unique_table(THD *thd, TABLE_LIST *table_list);
-int mysql_update(THD *thd,TABLE_LIST *tables,List<Item> &fields,
- List<Item> &values,COND *conds,
- uint order_num, ORDER *order, ha_rows limit,
- bool ignore, ha_rows *found_return, ha_rows *updated_return);
-bool mysql_multi_update(THD *thd, TABLE_LIST *table_list,
- List<Item> *fields, List<Item> *values,
- COND *conds, ulonglong options,
- enum enum_duplicates handle_duplicates, bool ignore,
- SELECT_LEX_UNIT *unit, SELECT_LEX *select_lex,
- multi_update **result);
bool records_are_comparable(const TABLE *table);
bool compare_record(const TABLE *table);
+/**
+ @class Sql_cmd_update - class used for any UPDATE statements
+
+ This class is derived from Sql_cmd_dml and contains implementations
+ for abstract virtual function of the latter such as precheck() and
+ prepare_inner(). It also overrides the implementation of execute_inner()
+ providing a special handling for single-table update statements that
+ are not converted to multi-table updates.
+ The class provides an object of the Multiupdate_prelocking_strategy class
+ for the virtual function get_dml_prelocking_strategy().
+*/
+class Sql_cmd_update final : public Sql_cmd_dml
+{
+public:
+ Sql_cmd_update(bool multitable_arg)
+ : orig_multitable(multitable_arg), multitable(multitable_arg)
+ {}
+
+ enum_sql_command sql_command_code() const override
+ {
+ return orig_multitable ? SQLCOM_UPDATE_MULTI : SQLCOM_UPDATE;
+ }
+
+ DML_prelocking_strategy *get_dml_prelocking_strategy() override
+ {
+ return &multiupdate_prelocking_strategy;
+ }
+
+ bool processing_as_multitable_update_prohibited(THD *thd);
+
+ bool is_multitable() const { return multitable; }
+
+ void set_as_multitable() { multitable= true; }
+
+protected:
+ /**
+ @brief Perform precheck of table privileges for update statements
+ */
+ bool precheck(THD *thd) override;
+
+ /**
+ @brief Perform context analysis for update statements
+ */
+ bool prepare_inner(THD *thd) override;
+
+ /**
+ @brief Perform optimization and execution actions needed for updates
+ */
+ bool execute_inner(THD *thd) override;
+
+private:
+
+ /**
+ @brief Special handling of single-table updates after prepare phase
+ */
+ bool update_single_table(THD *thd);
+
+ /* Original value of the 'multitable' flag set by constructor */
+ const bool orig_multitable;
+
+ /*
+ True if the statement is a multi-table update or converted to such.
+ For a single-table update this flag is set to true if the statement
+ is supposed to be converted to multi-table update.
+ */
+ bool multitable;
+
+ /* The prelocking strategy used when opening the used tables */
+ Multiupdate_prelocking_strategy multiupdate_prelocking_strategy;
+
+ public:
+ /* The list of the updating expressions used in the set clause */
+ List<Item> *update_value_list;
+};
+
#endif /* SQL_UPDATE_INCLUDED */
diff --git a/sql/sql_used.h b/sql/sql_used.h
new file mode 100644
index 00000000..fa23ea9f
--- /dev/null
+++ b/sql/sql_used.h
@@ -0,0 +1,33 @@
+/* Copyright (c) 2023, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
+
+#ifndef SQL_USED_INCLUDED
+#define SQL_USED_INCLUDED
+
+class Sql_used
+{
+public:
+ typedef uint used_t;
+ enum { RAND_USED=1, TIME_ZONE_USED=2, QUERY_START_SEC_PART_USED=4,
+ THREAD_SPECIFIC_USED=8,
+ CHARACTER_SET_COLLATIONS_USED= 16
+ };
+ used_t used;
+ Sql_used()
+ :used(0)
+ { }
+};
+
+#endif // SQL_USED_INCLUDED
diff --git a/sql/sql_view.cc b/sql/sql_view.cc
index d9422272..cb39ef00 100644
--- a/sql/sql_view.cc
+++ b/sql/sql_view.cc
@@ -67,8 +67,8 @@ static void make_unique_view_field_name(THD *thd, Item *target,
List<Item> &item_list,
Item *last_element)
{
- const char *name= (target->orig_name ?
- target->orig_name :
+ const char *name= (target->orig_name.str ?
+ target->orig_name.str :
target->name.str);
size_t name_len;
uint attempt;
@@ -100,8 +100,8 @@ static void make_unique_view_field_name(THD *thd, Item *target,
itc.rewind();
}
- if (!target->orig_name)
- target->orig_name= target->name.str;
+ if (!target->orig_name.str)
+ target->orig_name= target->name;
target->set_name(thd, buff, name_len, system_charset_info);
}
@@ -186,7 +186,7 @@ void make_valid_column_names(THD *thd, List<Item> &item_list)
if (item->is_explicit_name() || !check_column_name(item->name.str))
continue;
name_len= my_snprintf(buff, NAME_LEN, "Name_exp_%u", column_no);
- item->orig_name= item->name.str;
+ item->orig_name= item->name;
item->set_name(thd, buff, name_len, system_charset_info);
}
diff --git a/sql/sql_window.cc b/sql/sql_window.cc
index 8fe2890d..e0c7cef1 100644
--- a/sql/sql_window.cc
+++ b/sql/sql_window.cc
@@ -429,6 +429,16 @@ ORDER *st_select_lex::find_common_window_func_partition_fields(THD *thd)
#define CMP_GT_C 1 // Greater than and compatible
#define CMP_GT 2 // Greater then
+
+/*
+ This function is used for sorting ORDER/PARTITION BY clauses of window
+ functions and so must implement an order relation on ORDER BY clauses"
+
+ It is called by a sorting function.
+ The function return's CMP_EQ (=0) if the values are identical.
+ If not equal, it returns a stable value < or > than 0.
+*/
+
static
int compare_order_elements(ORDER *ord1, int weight1,
ORDER *ord2, int weight2)
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 577c90e6..715d83f1 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -43,6 +43,7 @@
#include "lex_symbol.h"
#include "item_create.h"
#include "sp_head.h"
+#include "sp_instr.h" // classes sp_instr,...
#include "sp_rcontext.h"
#include "sp.h"
#include "sql_show.h"
@@ -69,6 +70,8 @@
#include "my_base.h"
#include "sql_type_json.h"
#include "json_table.h"
+#include "sql_update.h"
+#include "sql_delete.h"
/* this is to get the bison compilation windows warnings out */
#ifdef _MSC_VER
@@ -325,6 +328,11 @@ void _CONCAT_UNDERSCORED(turn_parser_debug_on,yyparse)()
enum Column_definition::enum_column_versioning vers_column_versioning;
enum plsql_cursor_attr_t plsql_cursor_attr;
privilege_t privilege;
+ struct
+ {
+ Item *expr;
+ LEX_CSTRING expr_str;
+ } expr_and_query_str;
}
%{
@@ -341,9 +349,9 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
*/
%ifdef MARIADB
-%expect 64
+%expect 62
%else
-%expect 65
+%expect 63
%endif
/*
@@ -1080,6 +1088,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> SONAME_SYM
%token <kwd> SOUNDS_SYM
%token <kwd> SOURCE_SYM
+%token <kwd> SQL_AFTER_GTIDS_SYM
+%token <kwd> SQL_BEFORE_GTIDS_SYM
%token <kwd> SQL_BUFFER_RESULT
%token <kwd> SQL_CACHE_SYM
%token <kwd> SQL_CALC_FOUND_ROWS
@@ -1138,6 +1148,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> UPGRADE_SYM
%token <kwd> USER_SYM /* SQL-2003-R */
%token <kwd> USE_FRM
+%token <kwd> VALIDATION_SYM /* MYSQL */
%token <kwd> VALUE_SYM /* SQL-2003-R */
%token <kwd> VARCHAR2_MARIADB_SYM
%token <kwd> VARCHAR2_ORACLE_SYM /* Oracle-R, PLSQL-R */
@@ -1273,6 +1284,9 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%left PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE
%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM USER COMMENT_SYM
+%left PREC_BELOW_SP_OBJECT_TYPE
+%left PACKAGE_MARIADB_SYM FUNCTION_SYM
+
/*
Tokens that can appear in a token contraction on the second place
@@ -1297,7 +1311,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
ALTER TABLE t1 ADD SYSTEM VERSIONING;
*/
%left PREC_BELOW_CONTRACTION_TOKEN2
-%left TEXT_STRING '(' ')' VALUE_SYM VERSIONING_SYM
+%left TEXT_STRING '(' ')' VALUE_SYM VERSIONING_SYM BODY_MARIADB_SYM
%left EMPTY_FROM_CLAUSE
%right INTO
@@ -1318,6 +1332,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
ident
label_ident
sp_decl_ident
+ ident_options
ident_or_empty
ident_table_alias
ident_sysvar_name
@@ -1349,6 +1364,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
keyword_cast_type
keyword_ident
keyword_label
+ keyword_options
keyword_set_special_case
keyword_set_usual_case
keyword_sp_block_section
@@ -1377,7 +1393,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%type <simple_string>
remember_name remember_end
remember_tok_start
+ remember_cpp_ptr
wild_and_where
+ remember_start_opt
+ remember_end_opt
%type <const_simple_string>
field_length_str
@@ -1389,6 +1408,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%type <type_handler> int_type real_type
%type <sp_handler> sp_handler
+ sp_handler_package_spec
+ sp_handler_package_body
%type <json_on_response> json_on_response
@@ -1502,9 +1523,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
table_wild simple_expr column_default_non_parenthesized_expr udf_expr
primary_expr string_factor_expr mysql_concatenation_expr
select_sublist_qualified_asterisk
- expr_or_ignore expr_or_ignore_or_default set_expr_or_default
+ expr_or_ignore expr_or_ignore_or_default
signed_literal expr_or_literal
- sp_opt_default
simple_ident_nospvar
field_or_var limit_option
part_func_expr
@@ -1524,6 +1544,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
simple_target_specification
condition_number
opt_versioning_interval_start
+ set_expr_misc
%type <num> opt_vers_auto_part
@@ -1560,6 +1581,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
delete $$;
} <expr_lex>
+%type <expr_and_query_str> sp_opt_default set_expr_or_default
/*
@@ -1767,7 +1789,7 @@ rule:
opt_mi_check_type opt_to mi_check_types
table_to_table_list table_to_table opt_table_list opt_as
handler_rkey_function handler_read_or_scan
- single_multi table_wild_list table_wild_one opt_wild
+ single_multi opt_wild
opt_and
select_var_list select_var_list_init help
opt_extended_describe shutdown
@@ -1898,6 +1920,28 @@ rule:
%type <vers_column_versioning> with_or_without_system
%type <engine_option_value_ptr> engine_defined_option;
+%type <lex>
+ remember_lex
+ package_specification_function
+ package_specification_procedure
+%type <spname> opt_trailing_sp_name
+%type <lex_str> opt_package_routine_end_name
+
+%type <spblock>
+ package_implementation_declare_section
+ package_implementation_declare_section_list
+ package_implementation_routine_definition
+ package_implementation_item_declaration
+ package_implementation_declare_section_list1
+ package_implementation_declare_section_list2
+
+%type <spblock_handlers> package_implementation_executable_section
+
+%type <NONE>
+ sp_package_function_body
+ sp_package_procedure_body
+
+
%ifdef MARIADB
%type <NONE> sp_tail_standalone
%type <NONE> sp_unlabeled_block_not_atomic
@@ -1915,14 +1959,11 @@ rule:
%type <spvar_mode> sp_opt_inout
%type <NONE> sp_tail_standalone
%type <NONE> sp_labelable_stmt
-%type <simple_string> remember_end_opt
-%type <lex_str> opt_package_routine_end_name
%type <lex_str> label_declaration_oracle
%type <lex_str> labels_declaration_oracle
%type <kwd> keyword_directly_assignable
%type <ident_sys> ident_directly_assignable
%type <ident_cli> ident_cli_directly_assignable
-%type <spname> opt_sp_name
%type <spblock> sp_decl_body_list
%type <spblock> opt_sp_decl_body_list
%type <spblock> sp_decl_variable_list
@@ -1932,19 +1973,9 @@ rule:
%type <spblock> sp_decl_handler
%type <spblock> sp_decl_handler_list
%type <spblock> opt_sp_decl_handler_list
-%type <spblock> package_implementation_routine_definition
-%type <spblock> package_implementation_item_declaration
-%type <spblock> package_implementation_declare_section
-%type <spblock> package_implementation_declare_section_list1
-%type <spblock> package_implementation_declare_section_list2
%type <spblock_handlers> sp_block_statements_and_exceptions
-%type <spblock_handlers> package_implementation_executable_section
%type <sp_instr_addr> sp_instr_addr
%type <num> opt_exception_clause exception_handlers
-%type <lex> remember_lex
-%type <lex> package_routine_lex
-%type <lex> package_specification_function
-%type <lex> package_specification_procedure
%endif ORACLE
%%
@@ -3042,20 +3073,43 @@ opt_aggregate:
sp_handler:
FUNCTION_SYM { $$= &sp_handler_function; }
| PROCEDURE_SYM { $$= &sp_handler_procedure; }
- | PACKAGE_ORACLE_SYM { $$= &sp_handler_package_spec; }
- | PACKAGE_ORACLE_SYM BODY_ORACLE_SYM { $$= &sp_handler_package_body; }
+ | sp_handler_package_spec
+ | sp_handler_package_body
+ ;
+
+sp_handler_package_spec:
+ PACKAGE_ORACLE_SYM { $$= &sp_handler_package_spec; }
+ | PACKAGE_MARIADB_SYM { $$= &sp_handler_package_spec; }
+ ;
+
+sp_handler_package_body:
+ PACKAGE_ORACLE_SYM BODY_ORACLE_SYM { $$= &sp_handler_package_body; }
+ | PACKAGE_MARIADB_SYM BODY_MARIADB_SYM { $$= &sp_handler_package_body; }
+ ;
+
+drop_routine:
+ DROP sp_handler opt_if_exists ident '.' ident
+ {
+ if (Lex->stmt_drop_routine($2, $3, $4, $6))
+ MYSQL_YYABORT;
+ }
+ | DROP sp_handler opt_if_exists ident
+ {
+ if (Lex->stmt_drop_routine($2, $3, Lex_ident_sys(), $4))
+ MYSQL_YYABORT;
+ }
;
sp_name:
ident '.' ident
{
- if (unlikely(!($$= Lex->make_sp_name(thd, &$1, &$3))))
+ if (unlikely(!($$= Lex->make_sp_name(thd, $1, $3))))
MYSQL_YYABORT;
}
| ident
{
- if (unlikely(!($$= Lex->make_sp_name(thd, &$1))))
+ if (unlikely(!($$= Lex->make_sp_name(thd, $1))))
MYSQL_YYABORT;
}
;
@@ -3293,7 +3347,8 @@ sp_decl_variable_list:
{
if (unlikely(Lex->sp_variable_declarations_finalize(thd, $1,
&Lex->last_field[0],
- $4)))
+ $4.expr,
+ $4.expr_str)))
MYSQL_YYABORT;
$$.init_using_vars($1);
}
@@ -3301,7 +3356,9 @@ sp_decl_variable_list:
ROW_SYM row_type_body
sp_opt_default
{
- if (unlikely(Lex->sp_variable_declarations_row_finalize(thd, $1, $3, $4)))
+ if (unlikely(Lex->sp_variable_declarations_row_finalize(thd, $1, $3,
+ $4.expr,
+ $4.expr_str)))
MYSQL_YYABORT;
$$.init_using_vars($1);
}
@@ -3346,13 +3403,23 @@ sp_cursor_stmt:
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
- select
+ remember_name select remember_end
{
DBUG_ASSERT(Lex == $1);
Lex->pop_select(); //main select
- if (unlikely($1->stmt_finalize(thd)) ||
- unlikely($1->sphead->restore_lex(thd)))
+ if (unlikely($1->stmt_finalize(thd)))
+ MYSQL_YYABORT;
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, $3, $5);
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ $1->set_expr_str(expr_str);
+ }
+ if (unlikely($1->sphead->restore_lex(thd)))
MYSQL_YYABORT;
+
$$= $1;
}
;
@@ -3847,23 +3914,26 @@ sp_proc_stmt_return:
sp_proc_stmt_exit_oracle:
EXIT_ORACLE_SYM
{
- if (unlikely(Lex->sp_exit_statement(thd, NULL)))
+ if (unlikely(Lex->sp_exit_statement(thd, nullptr, empty_clex_str)))
MYSQL_YYABORT;
}
| EXIT_ORACLE_SYM label_ident
{
- if (unlikely(Lex->sp_exit_statement(thd, &$2, NULL)))
+ if (unlikely(Lex->sp_exit_statement(thd, &$2, nullptr,
+ empty_clex_str)))
MYSQL_YYABORT;
}
| EXIT_ORACLE_SYM WHEN_SYM expr_lex
{
- if (unlikely($3->sp_exit_statement(thd, $3->get_item())))
+ if (unlikely($3->sp_exit_statement(thd, $3->get_item(),
+ $3->get_expr_str())))
MYSQL_YYABORT;
}
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
| EXIT_ORACLE_SYM label_ident WHEN_SYM expr_lex
{
- if (unlikely($4->sp_exit_statement(thd, &$2, $4->get_item())))
+ if (unlikely($4->sp_exit_statement(thd, &$2, $4->get_item(),
+ $4->get_expr_str())))
MYSQL_YYABORT;
}
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
@@ -3930,10 +4000,20 @@ expr_lex:
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
- expr
+ remember_start_opt expr remember_end
{
$$= $<expr_lex>1;
- $$->set_item($2);
+ $$->set_item($3);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, $2, $4);
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ $$->set_expr_str(expr_str);
+ }
+
Lex->pop_select(); //min select
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
@@ -3960,11 +4040,21 @@ assignment_source_expr:
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
- expr
+ remember_cpp_ptr expr remember_end
{
DBUG_ASSERT($1 == thd->lex);
$$= $1;
- $$->set_item_and_free_list($3, thd->free_list);
+ $$->set_item_and_free_list($4, thd->free_list);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, $3, $5);
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ $$->set_expr_str(expr_str);
+ }
+
thd->free_list= NULL;
Lex->pop_select(); //min select
if ($$->sphead->restore_lex(thd))
@@ -3980,11 +4070,21 @@ for_loop_bound_expr:
MYSQL_YYABORT;
Lex->current_select->parsing_place= FOR_LOOP_BOUND;
}
- expr
+ remember_cpp_ptr expr remember_end
{
DBUG_ASSERT($1 == thd->lex);
$$= $1;
- $$->set_item_and_free_list($3, NULL);
+ $$->set_item_and_free_list($4, nullptr);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, $3, $5);
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ $$->set_expr_str(expr_str);
+ }
+
Lex->pop_select(); //main select
if (unlikely($$->sphead->restore_lex(thd)))
MYSQL_YYABORT;
@@ -5308,7 +5408,7 @@ opt_if_not_exists_table_element:
;
opt_if_not_exists:
- /* empty */
+ /* empty */ %prec PREC_BELOW_CONTRACTION_TOKEN2
{
$$.init();
}
@@ -5579,32 +5679,49 @@ create_table_option:
;
engine_defined_option:
- IDENT_sys equal TEXT_STRING_sys
+ ident_options equal TEXT_STRING_sys
{
if (unlikely($3.length > ENGINE_OPTION_MAX_LENGTH))
my_yyabort_error((ER_VALUE_TOO_LONG, MYF(0), $1.str));
$$= new (thd->mem_root) engine_option_value($1, $3, true);
MYSQL_YYABORT_UNLESS($$);
}
- | IDENT_sys equal ident
+ | ident_options equal ident
{
if (unlikely($3.length > ENGINE_OPTION_MAX_LENGTH))
my_yyabort_error((ER_VALUE_TOO_LONG, MYF(0), $1.str));
$$= new (thd->mem_root) engine_option_value($1, $3, false);
MYSQL_YYABORT_UNLESS($$);
}
- | IDENT_sys equal real_ulonglong_num
+ | ident_options equal real_ulonglong_num
{
$$= new (thd->mem_root) engine_option_value($1, $3, thd->mem_root);
MYSQL_YYABORT_UNLESS($$);
}
- | IDENT_sys equal DEFAULT
+ | ident_options equal DEFAULT
{
$$= new (thd->mem_root) engine_option_value($1);
MYSQL_YYABORT_UNLESS($$);
}
;
+ident_options:
+ IDENT_sys
+ | keyword_options
+ {
+ if (unlikely($$.copy_keyword(thd, &$1)))
+ MYSQL_YYABORT;
+ }
+ ;
+
+/*
+ These keywords are fine for option names.
+*/
+keyword_options:
+ READ_ONLY_SYM
+ | WRAPPER_SYM
+ ;
+
opt_versioning_option:
/* empty */
| versioning_option
@@ -5632,7 +5749,8 @@ versioning_option:
default_charset:
opt_default charset opt_equal charset_name_or_default
{
- if (unlikely(Lex->create_info.add_table_option_default_charset($4)))
+ if (unlikely(Lex->create_info.add_table_option_default_charset(
+ thd, thd->variables.character_set_collations, $4)))
MYSQL_YYABORT;
}
;
@@ -5641,7 +5759,8 @@ default_collation:
opt_default COLLATE_SYM opt_equal collation_name_or_default
{
Table_specification_st *cinfo= &Lex->create_info;
- if (unlikely(cinfo->add_table_option_default_collation($4)))
+ if (unlikely(cinfo->add_table_option_default_collation(
+ thd, thd->variables.character_set_collations, $4)))
MYSQL_YYABORT;
}
;
@@ -5894,9 +6013,12 @@ field_type_or_serial:
field_def
{
auto tmp= $1.charset_collation_attrs();
- if (tmp.merge_column_charset_clause_and_collate_clause($3))
+ if (tmp.merge_column_charset_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, $3))
MYSQL_YYABORT;
- Lex->last_field->set_charset_collation_attrs(tmp);
+ Lex->last_field->set_charset_collation_attrs(
+ thd, thd->variables.character_set_collations,
+ tmp);
}
| SERIAL_SYM
{
@@ -5934,7 +6056,8 @@ field_def:
| attribute_list compressed_deprecated_column_attribute { $$= $1; }
| attribute_list compressed_deprecated_column_attribute attribute_list
{
- if (($$= $1).merge_column_collate_clause_and_collate_clause($3))
+ if (($$= $1).merge_column_collate_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, $3))
MYSQL_YYABORT;
}
| opt_generated_always AS virtual_column_func
@@ -5967,19 +6090,19 @@ opt_generated_always:
vcol_opt_specifier:
/* empty */
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
}
| VIRTUAL_SYM
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
}
| PERSISTENT_SYM
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_STORED);
}
| STORED_SYM
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_STORED);
}
;
@@ -6216,10 +6339,7 @@ field_type_temporal:
{
char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
my_snprintf(buff, sizeof(buff), "YEAR(%u)", (uint) $2.length());
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- buff, "YEAR(4)");
+ warn_deprecated<1007>(thd, buff, "YEAR(4)");
}
}
$$.set(&type_handler_year, $2);
@@ -6410,8 +6530,9 @@ opt_precision:
attribute_list:
attribute_list attribute
{
- if (($$= $1).merge_column_collate_clause_and_collate_clause($2))
- MYSQL_YYABORT;
+ if (($$= $1).merge_column_collate_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, $2))
+ MYSQL_YYABORT;
}
| attribute
;
@@ -6638,11 +6759,17 @@ binary:
}
| charset_or_alias COLLATE_SYM DEFAULT
{
- $$.set_charset_collate_default(Lex_exact_charset($1));
+ $$.set_charset_collate_default(
+ thd,
+ thd->variables.character_set_collations,
+ Lex_exact_charset($1));
}
| charset_or_alias COLLATE_SYM collation_name
{
- if ($3.merge_exact_charset(Lex_exact_charset($1)))
+ if ($3.merge_exact_charset(
+ thd,
+ thd->variables.character_set_collations,
+ Lex_exact_charset($1)))
MYSQL_YYABORT;
$$= Lex_exact_charset_extended_collation_attrs($3);
}
@@ -7298,6 +7425,7 @@ alter_commands:
Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_discard_import_tablespace(
Sql_cmd_discard_import_tablespace::IMPORT_TABLESPACE);
+ Lex->create_info.add(DDL_options_st::OPT_IMPORT_TABLESPACE);
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
@@ -7396,13 +7524,13 @@ alter_commands:
}
| reorg_partition_rule
| EXCHANGE_SYM PARTITION_SYM alt_part_name_item
- WITH TABLE_SYM table_ident have_partitioning
+ WITH TABLE_SYM table_ident opt_without_validation have_partitioning
{
if (Lex->stmt_alter_table_exchange_partition($6))
MYSQL_YYABORT;
}
| CONVERT_SYM PARTITION_SYM alt_part_name_item
- TO_SYM TABLE_SYM table_ident have_partitioning
+ TO_SYM TABLE_SYM table_ident opt_without_validation have_partitioning
{
LEX *lex= Lex;
if (Lex->stmt_alter_table($6))
@@ -7442,7 +7570,7 @@ alter_commands:
lex->alter_info.partition_flags|= ALTER_PARTITION_ADD |
ALTER_PARTITION_CONVERT_IN;
}
- TO_SYM PARTITION_SYM part_definition
+ TO_SYM PARTITION_SYM part_definition opt_without_validation have_partitioning
{
LEX *lex= Lex;
lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_table();
@@ -7718,13 +7846,15 @@ alter_list_item:
}
| CONVERT_SYM TO_SYM charset charset_name_or_default
{
- if (Lex->add_alter_list_item_convert_to_charset($4))
+ if (Lex->add_alter_list_item_convert_to_charset(
+ thd, thd->variables.character_set_collations, $4))
MYSQL_YYABORT;
}
| CONVERT_SYM TO_SYM charset charset_name_or_default
COLLATE_SYM collation_name_or_default
{
- if (Lex->add_alter_list_item_convert_to_charset($4, $6))
+ if (Lex->add_alter_list_item_convert_to_charset(
+ thd, thd->variables.character_set_collations, $4, $6))
MYSQL_YYABORT;
}
| create_table_options_space_separated
@@ -7767,6 +7897,18 @@ alter_list_item:
}
;
+opt_without_validation:
+ /* empty */
+ | WITH VALIDATION_SYM
+ {
+ Lex->without_validation= 0;
+ }
+ | WITHOUT VALIDATION_SYM
+ {
+ Lex->without_validation= 1;
+ }
+ ;
+
opt_index_lock_algorithm:
/* empty */
| alter_lock_option
@@ -7980,6 +8122,17 @@ slave_until:
| UNTIL_SYM MASTER_GTID_POS_SYM '=' TEXT_STRING_sys
{
Lex->mi.gtid_pos_str = $4;
+ Lex->mi.is_until_before_gtids= false;
+ }
+ | UNTIL_SYM SQL_AFTER_GTIDS_SYM '=' TEXT_STRING_sys
+ {
+ Lex->mi.gtid_pos_str = $4;
+ Lex->mi.is_until_before_gtids= false;
+ }
+ | UNTIL_SYM SQL_BEFORE_GTIDS_SYM '=' TEXT_STRING_sys
+ {
+ Lex->mi.gtid_pos_str = $4;
+ Lex->mi.is_until_before_gtids= true;
}
;
@@ -8366,7 +8519,7 @@ assign_to_keycache_parts:
key_cache_name:
ident { $$= $1; }
- | DEFAULT { $$ = default_key_cache_base; }
+ | DEFAULT { $$ = default_base; }
;
preload:
@@ -9098,6 +9251,36 @@ remember_end:
}
;
+remember_cpp_ptr:
+ {
+ $$= (char*) YYLIP->get_cpp_ptr();
+ }
+ ;
+
+remember_start_opt:
+ {
+ if (yychar == YYEMPTY)
+ $$= (char*) YYLIP->get_cpp_ptr();
+ else
+ $$= (char*) YYLIP->get_cpp_tok_start();
+ }
+ ;
+
+remember_end_opt:
+ {
+ if (yychar == YYEMPTY)
+ $$= (char*) YYLIP->get_cpp_ptr_rtrim();
+ else
+ $$= (char*) YYLIP->get_cpp_tok_end_rtrim();
+ }
+ ;
+
+remember_lex:
+ {
+ $$= thd->lex;
+ }
+ ;
+
select_alias:
/* empty */ { $$=null_clex_str;}
| AS ident { $$=$2; }
@@ -9600,7 +9783,9 @@ temporal_dyncol_type:
string_dyncol_type:
char opt_binary
{
- if ($$.set(DYN_COL_STRING, $2, thd->variables.collation_connection))
+ if ($$.set(DYN_COL_STRING, thd,
+ thd->variables.character_set_collations,
+ $2, thd->variables.collation_connection))
MYSQL_YYABORT;
}
| nchar
@@ -9787,6 +9972,8 @@ column_default_non_parenthesized_expr:
}
| CONVERT_SYM '(' expr USING charset_name ')'
{
+ $5= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, $5);
$$= new (thd->mem_root) Item_func_conv_charset(thd, $3, $5);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
@@ -9939,6 +10126,8 @@ function_call_keyword:
}
| CHAR_SYM '(' expr_list USING charset_name ')'
{
+ $5= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, $5);
$$= new (thd->mem_root) Item_func_char(thd, *$3, $5);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
@@ -9966,6 +10155,7 @@ function_call_keyword:
$$= new (thd->mem_root) Item_date_typecast(thd, $3);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
| DAY_SYM '(' expr ')'
{
@@ -10028,6 +10218,7 @@ function_call_keyword:
$$= new (thd->mem_root) Item_func_month(thd, $3);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
| RIGHT '(' expr ',' expr ')'
{
@@ -10079,6 +10270,7 @@ function_call_keyword:
$$= new (thd->mem_root) Item_func_year(thd, $3);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
;
@@ -11170,19 +11362,22 @@ cast_type:
{ $$.set(&type_handler_long_blob, $2, &my_charset_bin); }
| CHAR_SYM opt_field_length opt_binary
{
- if ($$.set(&type_handler_long_blob, $2, $3,
+ if ($$.set(&type_handler_long_blob,
+ $2, thd, thd->variables.character_set_collations, $3,
thd->variables.collation_connection))
MYSQL_YYABORT;
}
| VARCHAR field_length opt_binary
{
- if ($$.set(&type_handler_long_blob, $2, $3,
+ if ($$.set(&type_handler_long_blob,
+ $2, thd, thd->variables.character_set_collations, $3,
thd->variables.collation_connection))
MYSQL_YYABORT;
}
| VARCHAR2_ORACLE_SYM field_length opt_binary
{
- if ($$.set(&type_handler_long_blob, $2, $3,
+ if ($$.set(&type_handler_long_blob,
+ $2, thd, thd->variables.character_set_collations, $3,
thd->variables.collation_connection))
MYSQL_YYABORT;
}
@@ -12515,13 +12710,8 @@ opt_procedure_or_into:
}
| into opt_select_lock_type
{
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- "<select expression> INTO <destination>;",
- "'SELECT <select list> INTO <destination>"
- " FROM...'");
$$= $2;
+ status_var_increment(thd->status_var.feature_into_outfile);
}
;
@@ -12744,6 +12934,7 @@ into_destination:
new (thd->mem_root)
select_export(thd, lex->exchange))))
MYSQL_YYABORT;
+ status_var_increment(thd->status_var.feature_into_outfile);
}
opt_load_data_charset
{ Lex->exchange->cs= $4; }
@@ -12766,6 +12957,7 @@ into_destination:
| select_var_list_init
{
Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
+ status_var_increment(thd->status_var.feature_into_variable);
}
;
@@ -12943,7 +13135,7 @@ opt_if_exists_table_element:
;
opt_if_exists:
- /* empty */
+ /* empty */ %prec PREC_BELOW_CONTRACTION_TOKEN2
{
$$.set(DDL_options_st::OPT_NONE);
}
@@ -13278,9 +13470,14 @@ update:
opt_low_priority opt_ignore update_table_list
SET update_list
{
+ bool is_multiupdate= false;
+ LEX *lex= Lex;
SELECT_LEX *slex= Lex->first_select_lex();
if (slex->table_list.elements > 1)
+ {
Lex->sql_command= SQLCOM_UPDATE_MULTI;
+ is_multiupdate= true;
+ }
else if (slex->get_table_list()->derived)
{
/* it is single table update and it is update of derived table */
@@ -13288,10 +13485,13 @@ update:
slex->get_table_list()->alias.str, "UPDATE");
MYSQL_YYABORT;
}
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_update(is_multiupdate)))
+ MYSQL_YYABORT;
/*
In case of multi-update setting write lock for all tables may
- be too pessimistic. We will decrease lock level if possible in
- mysql_multi_update().
+ be too pessimistic. We will decrease lock level if possible
+ later while processing the statement.
*/
slex->set_lock_for_tables($3, slex->table_list.elements == 1, false);
}
@@ -13348,12 +13548,11 @@ delete:
DELETE_SYM
{
LEX *lex= Lex;
- lex->sql_command= SQLCOM_DELETE;
YYPS->m_lock_type= TL_WRITE_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_WRITE;
if (Lex->main_select_push())
MYSQL_YYABORT;
- lex->init_select();
+ mysql_init_delete(lex);
lex->ignore= 0;
lex->first_select_lex()->order_list.empty();
}
@@ -13379,11 +13578,17 @@ delete_part2:
opt_delete_options single_multi {}
| HISTORY_SYM delete_single_table opt_delete_system_time
{
- Lex->last_table()->vers_conditions= Lex->vers_conditions;
- Lex->pop_select(); //main select
- if (Lex->check_main_unit_semantics())
+ LEX *lex= Lex;
+ lex->last_table()->vers_conditions= lex->vers_conditions;
+ lex->sql_command= SQLCOM_DELETE;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(false)))
+ MYSQL_YYABORT;
+ if (lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
+ stmt_end
+ {}
;
delete_single_table:
@@ -13394,8 +13599,23 @@ delete_single_table:
YYPS->m_lock_type,
YYPS->m_mdl_type,
NULL,
+ 0)))
+ MYSQL_YYABORT;
+ Select->table_list.save_and_clear(&Lex->auxiliary_table_list);
+ /* Save the number of auxiliary tables */
+ Lex->table_count_update= 1;
+
+ Lex->query_tables= 0;
+ Lex->query_tables_last= &Lex->query_tables;
+ if (unlikely(!Select->
+ add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING,
+ YYPS->m_lock_type,
+ YYPS->m_mdl_type,
+ NULL,
$3)))
MYSQL_YYABORT;
+ Lex->auxiliary_table_list.first->correspondent_table=
+ Lex->query_tables;
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
@@ -13416,14 +13636,24 @@ single_multi:
delete_limit_clause
opt_returning
{
+ LEX *lex= Lex;
if ($3)
Select->order_list= *($3);
- Lex->pop_select(); //main select
+ lex->sql_command= SQLCOM_DELETE;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(false)))
+ MYSQL_YYABORT;
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
- | table_wild_list
+ stmt_end {}
+ | table_alias_ref_list
{
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE_MULTI;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(true)))
+ MYSQL_YYABORT;
mysql_init_multi_delete(Lex);
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
@@ -13435,6 +13665,11 @@ single_multi:
} stmt_end {}
| FROM table_alias_ref_list
{
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE_MULTI;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(true)))
+ MYSQL_YYABORT;
mysql_init_multi_delete(Lex);
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
@@ -13484,44 +13719,6 @@ opt_returning:
}
;
-table_wild_list:
- table_wild_one
- | table_wild_list ',' table_wild_one
- ;
-
-table_wild_one:
- ident opt_wild
- {
- Table_ident *ti= new (thd->mem_root) Table_ident(&$1);
- if (unlikely(ti == NULL))
- MYSQL_YYABORT;
- if (unlikely(!Select->
- add_table_to_list(thd,
- ti,
- NULL,
- (TL_OPTION_UPDATING |
- TL_OPTION_ALIAS),
- YYPS->m_lock_type,
- YYPS->m_mdl_type)))
- MYSQL_YYABORT;
- }
- | ident '.' ident opt_wild
- {
- Table_ident *ti= new (thd->mem_root) Table_ident(thd, &$1, &$3, 0);
- if (unlikely(ti == NULL))
- MYSQL_YYABORT;
- if (unlikely(!Select->
- add_table_to_list(thd,
- ti,
- NULL,
- (TL_OPTION_UPDATING |
- TL_OPTION_ALIAS),
- YYPS->m_lock_type,
- YYPS->m_mdl_type)))
- MYSQL_YYABORT;
- }
- ;
-
opt_wild:
/* empty */ {}
| '.' '*' {}
@@ -14804,6 +15001,8 @@ text_literal:
}
| UNDERSCORE_CHARSET TEXT_STRING
{
+ $1= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, $1);
if (unlikely(!($$= thd->make_string_literal_charset($2, $1))))
MYSQL_YYABORT;
}
@@ -14943,6 +15142,8 @@ literal:
Item_string_with_introducer *item_str;
LEX_CSTRING tmp;
$2->get_value(&tmp);
+ $1= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, $1);
/*
Pass NULL as name. Name will be set in the "select_item" rule and
will include the introducer and the original hex/bin notation.
@@ -15943,7 +16144,7 @@ keyword_func_sp_var_and_label:
| ONLINE_SYM
| ONLY_SYM
| ORDINALITY_SYM
- | PACKAGE_MARIADB_SYM
+ | PACKAGE_MARIADB_SYM %prec PREC_BELOW_CONTRACTION_TOKEN2
| PACK_KEYS_SYM
| PAGE_SYM
| PARTIAL
@@ -16054,6 +16255,7 @@ keyword_func_sp_var_and_label:
| VIEW_SYM
| VIRTUAL_SYM
| VISIBLE_SYM
+ | VALIDATION_SYM
| WARNINGS
| WAIT_SYM
| WITHOUT
@@ -16476,7 +16678,8 @@ set_stmt_option:
{
Lex_ident_sys tmp(thd, &$1);
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(Lex->option_type, &tmp, $4)))
+ unlikely(Lex->set_system_variable(Lex->option_type, &tmp,
+ $4.expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
@@ -16490,7 +16693,7 @@ set_stmt_option:
Lex_ident_sys tmp(thd, &$1);
if (unlikely(!tmp.str) ||
unlikely(Lex->set_system_variable(thd, Lex->option_type,
- &tmp, &$3, $6)))
+ &tmp, &$3, $6.expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
@@ -16502,7 +16705,7 @@ set_stmt_option:
set_expr_or_default
{
if (unlikely(Lex->set_default_system_variable(Lex->option_type,
- &$3, $6)))
+ &$3, $6.expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
@@ -16520,7 +16723,8 @@ option_value_following_option_type:
{
Lex_ident_sys tmp(thd, &$1);
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(Lex->option_type, &tmp, $4)) ||
+ unlikely(Lex->set_system_variable(Lex->option_type, &tmp,
+ $4.expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16533,7 +16737,8 @@ option_value_following_option_type:
{
Lex_ident_sys tmp(thd, &$1);
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(thd, Lex->option_type, &tmp, &$3, $6)) ||
+ unlikely(Lex->set_system_variable(thd, Lex->option_type, &tmp,
+ &$3, $6.expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16544,7 +16749,8 @@ option_value_following_option_type:
}
set_expr_or_default
{
- if (unlikely(Lex->set_default_system_variable(Lex->option_type, &$3, $6)) ||
+ if (unlikely(Lex->set_default_system_variable(Lex->option_type,
+ &$3, $6.expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16560,8 +16766,9 @@ option_value_no_option_type:
set_expr_or_default
{
Lex_ident_sys tmp(thd, &$1);
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, $4)) ||
+ unlikely(Lex->set_variable(&tmp, $4.expr, $4.expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16573,8 +16780,9 @@ option_value_no_option_type:
set_expr_or_default
{
Lex_ident_sys tmp(thd, &$1);
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, &$3, $6)) ||
+ unlikely(Lex->set_variable(&tmp, &$3, $6.expr, $6.expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16585,7 +16793,8 @@ option_value_no_option_type:
}
set_expr_or_default
{
- if (unlikely(Lex->set_default_system_variable(Lex->option_type, &$3, $6)))
+ if (unlikely(Lex->set_default_system_variable(Lex->option_type,
+ &$3, $6.expr)))
MYSQL_YYABORT;
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
@@ -16601,9 +16810,17 @@ option_value_no_option_type:
if (sp_create_assignment_lex(thd, $1.str))
MYSQL_YYABORT;
}
- expr
+ remember_cpp_ptr expr remember_end
{
- if (unlikely(Lex->set_user_variable(thd, &$2, $5)) ||
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, $5, $7);
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+ if (unlikely(Lex->set_user_variable(thd, &$2, $6)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16614,7 +16831,7 @@ option_value_no_option_type:
}
set_expr_or_default
{
- if (unlikely(Lex->set_system_variable($3, &$4, $7)) ||
+ if (unlikely(Lex->set_system_variable($3, &$4, $7.expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16625,7 +16842,8 @@ option_value_no_option_type:
}
set_expr_or_default
{
- if (unlikely(Lex->set_system_variable(thd, $3, &$4, &$6, $9)) ||
+ if (unlikely(Lex->set_system_variable(thd, $3, &$4, &$6,
+ $9.expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16636,7 +16854,7 @@ option_value_no_option_type:
}
set_expr_or_default
{
- if (unlikely(Lex->set_default_system_variable($3, &$6, $9)) ||
+ if (unlikely(Lex->set_default_system_variable($3, &$6, $9.expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16673,7 +16891,11 @@ option_value_no_option_type:
{
CHARSET_INFO *def= global_system_variables.character_set_client;
Lex_exact_charset_opt_extended_collate tmp($2 ? $2 : def, false);
- if (Lex->set_names($1.pos(), tmp, yychar == YYEMPTY))
+ Lex_extended_collation_st cl;
+ cl.set_collate_default();
+ if (tmp.merge_collation(thd, thd->variables.
+ character_set_collations, cl) ||
+ Lex->set_names($1.pos(), tmp, yychar == YYEMPTY))
MYSQL_YYABORT;
}
| NAMES_SYM charset_name_or_default
@@ -16681,7 +16903,8 @@ option_value_no_option_type:
{
CHARSET_INFO *def= global_system_variables.character_set_client;
Lex_exact_charset_opt_extended_collate tmp($2 ? $2 : def, false);
- if (tmp.merge_collation($4) ||
+ if (tmp.merge_collation(thd, thd->variables.
+ character_set_collations, $4) ||
Lex->set_names($1.pos(), tmp, yychar == YYEMPTY))
MYSQL_YYABORT;
}
@@ -16742,8 +16965,9 @@ option_value_no_option_type:
set_expr_or_default
{
Lex_ident_sys tmp(thd, &$1);
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, $4)) ||
+ unlikely(Lex->set_variable(&tmp, $4.expr, $4.expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
@@ -16787,7 +17011,7 @@ transaction_access_mode:
MYSQL_YYABORT;
set_var *var= (new (thd->mem_root)
set_var(thd, lex->option_type,
- find_sys_var(thd, "tx_read_only"),
+ find_sys_var(thd, "transaction_read_only"),
&null_clex_str,
item));
if (unlikely(var == NULL))
@@ -16806,7 +17030,7 @@ isolation_level:
MYSQL_YYABORT;
set_var *var= (new (thd->mem_root)
set_var(thd, lex->option_type,
- find_sys_var(thd, "tx_isolation"),
+ find_sys_var(thd, "transaction_isolation"),
&null_clex_str,
item));
if (unlikely(var == NULL) ||
@@ -16850,28 +17074,37 @@ text_or_password:
;
set_expr_or_default:
- expr { $$=$1; }
- | DEFAULT { $$=0; }
- | ON
+ remember_cpp_ptr expr remember_end
{
- $$=new (thd->mem_root) Item_string_sys(thd, "ON", 2);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, $1, $3);
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+
+ $$= { $2, expr_str };
}
- | ALL
+ | remember_cpp_ptr set_expr_misc remember_end
{
- $$=new (thd->mem_root) Item_string_sys(thd, "ALL", 3);
- if (unlikely($$ == NULL))
+ if (unlikely($2 == nullptr))
MYSQL_YYABORT;
+ $$= {$2, empty_clex_str};
}
- | BINARY
+ | remember_cpp_ptr DEFAULT remember_end
{
- $$=new (thd->mem_root) Item_string_sys(thd, "binary", 6);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
+ $$= { nullptr, empty_clex_str };
}
;
+set_expr_misc:
+ ON { $$= new (thd->mem_root) Item_string_sys(thd, "ON", 2); }
+ | ALL { $$= new (thd->mem_root) Item_string_sys(thd, "ALL", 3); }
+ | BINARY { $$= new (thd->mem_root) Item_string_sys(thd, "binary", 6); }
+ ;
+
/* Lock function */
lock:
@@ -17203,7 +17436,7 @@ role_name: ident_or_text
grant_role: role_name | current_role ;
opt_table:
- /* Empty */
+ /* Empty */ %prec PREC_BELOW_SP_OBJECT_TYPE
| TABLE_SYM
;
@@ -17303,6 +17536,7 @@ object_privilege:
| REPLICATION MASTER_SYM ADMIN_SYM { $$= REPL_MASTER_ADMIN_ACL; }
| REPLICATION SLAVE ADMIN_SYM { $$= REPL_SLAVE_ADMIN_ACL; }
| SLAVE MONITOR_SYM { $$= SLAVE_MONITOR_ACL; }
+ | SHOW CREATE ROUTINE_SYM { $$= SHOW_CREATE_ROUTINE_ACL; }
;
opt_and:
@@ -17904,6 +18138,28 @@ sf_return_type:
}
;
+create_package_chistic:
+ COMMENT_SYM TEXT_STRING_sys
+ { Lex->sp_chistics.comment= $2; }
+ | sp_suid
+ { Lex->sp_chistics.suid= $1; }
+ ;
+
+create_package_chistics:
+ create_package_chistic {}
+ | create_package_chistics create_package_chistic { }
+ ;
+
+opt_create_package_chistics:
+ /*empty*/ { }
+ | create_package_chistics { }
+ ;
+
+opt_create_package_chistics_init:
+ { Lex->sp_chistics.init(); }
+ opt_create_package_chistics
+ ;
+
/*************************************************************************/
xa:
@@ -18064,6 +18320,66 @@ sp_case_then_statements:
sp_proc_stmts1
;
+sp_tail_is:
+ /*empty*/ { }
+ ;
+
+sp_package_function_body:
+ sp_proc_stmt_in_returns_clause
+ ;
+
+sp_package_procedure_body:
+ sp_proc_stmt
+ ;
+
+opt_trailing_sp_name:
+ /*empty*/ { $$= NULL; }
+ ;
+
+opt_package_routine_end_name:
+ /*empty*/ { $$= null_clex_str; }
+ | FORCE_LOOKAHEAD { $$= null_clex_str; }
+ ;
+
+sf_parameters:
+ sp_parenthesized_fdparam_list
+ ;
+
+sp_parameters:
+ sp_parenthesized_pdparam_list
+ ;
+
+sf_returned_type_clause:
+ RETURNS_SYM sf_return_type
+ ;
+
+package_implementation_item_declaration:
+ DECLARE_MARIADB_SYM sp_decl_variable_list ';' { $$= $2; }
+ ;
+
+// Inside CREATE PACKAGE BODY, package-wide items (e.g. variables)
+// must be declared before routine definitions.
+
+package_implementation_declare_section_list:
+ package_implementation_declare_section_list1 %prec PREC_BELOW_SP_OBJECT_TYPE
+ | package_implementation_declare_section_list2 %prec PREC_BELOW_SP_OBJECT_TYPE
+ | package_implementation_declare_section_list1
+ package_implementation_declare_section_list2 %prec PREC_BELOW_SP_OBJECT_TYPE
+ { $$.join($1, $2); }
+ ;
+
+package_implementation_declare_section:
+ package_implementation_declare_section_list
+ ;
+
+package_implementation_executable_section:
+ sp_proc_stmts END
+ {
+ $$.init(0);
+ }
+ ;
+
+
reserved_keyword_udt_param_type:
INOUT_SYM
| IN_SYM
@@ -18161,8 +18477,20 @@ sp_block_label:
;
sp_opt_default:
- _empty { $$ = NULL; }
- | DEFAULT expr { $$ = $2; }
+ _empty { $$= { nullptr, empty_clex_str}; }
+ | DEFAULT remember_cpp_ptr expr remember_end
+ {
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, $2, $4);
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+
+ $$= { $3, expr_str };
+ }
;
sp_decl_variable_list_anchored:
@@ -18170,7 +18498,8 @@ sp_decl_variable_list_anchored:
TYPE_SYM OF_SYM optionally_qualified_column_ident
sp_opt_default
{
- if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(thd, $1, $4, $5)))
+ if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(
+ thd, $1, $4, $5.expr, $5.expr_str)))
MYSQL_YYABORT;
$$.init_using_vars($1);
}
@@ -18178,7 +18507,8 @@ sp_decl_variable_list_anchored:
ROW_SYM TYPE_SYM OF_SYM optionally_qualified_column_ident
sp_opt_default
{
- if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(thd, $1, $5, $6)))
+ if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(
+ thd, $1, $5, $6.expr, $6.expr_str)))
MYSQL_YYABORT;
$$.init_using_vars($1);
}
@@ -18269,68 +18599,6 @@ sp_tail_standalone:
}
;
-drop_routine:
- DROP FUNCTION_SYM opt_if_exists ident '.' ident
- {
- if (Lex->stmt_drop_function($3, $4, $6))
- MYSQL_YYABORT;
- }
- | DROP FUNCTION_SYM opt_if_exists ident
- {
- if (Lex->stmt_drop_function($3, $4))
- MYSQL_YYABORT;
- }
- | DROP PROCEDURE_SYM opt_if_exists sp_name
- {
- if (Lex->stmt_drop_procedure($3, $4))
- MYSQL_YYABORT;
- }
- ;
-
-
-create_routine:
- create_or_replace definer_opt PROCEDURE_SYM opt_if_not_exists
- {
- if (Lex->stmt_create_procedure_start($1 | $4))
- MYSQL_YYABORT;
- }
- sp_tail_standalone
- {
- Lex->stmt_create_routine_finalize();
- }
- | create_or_replace definer opt_aggregate FUNCTION_SYM opt_if_not_exists
- sp_name
- {
- if (Lex->stmt_create_stored_function_start($1 | $5, $3, $6))
- MYSQL_YYABORT;
- }
- sp_parenthesized_fdparam_list
- RETURNS_SYM sf_return_type
- sf_c_chistics_and_body_standalone
- {
- Lex->stmt_create_routine_finalize();
- }
- | create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists
- sp_name
- {
- if (Lex->stmt_create_stored_function_start($1 | $5, $3, $6))
- MYSQL_YYABORT;
- }
- sp_parenthesized_fdparam_list
- RETURNS_SYM sf_return_type
- sf_c_chistics_and_body_standalone
- {
- Lex->stmt_create_routine_finalize();
- }
- | create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists
- ident RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys
- {
- if (Lex->stmt_create_udf_function($1 | $5, $3, $6,
- (Item_result) $8, $10))
- MYSQL_YYABORT;
- }
- ;
-
sp_decls:
_empty
@@ -18522,6 +18790,30 @@ sp_case_then_statements:
sp_proc_stmts1_implicit_block { }
;
+sp_parameters:
+ opt_sp_parenthesized_pdparam_list
+ ;
+
+sf_parameters:
+ opt_sp_parenthesized_fdparam_list
+ ;
+
+sf_returned_type_clause:
+ RETURN_ORACLE_SYM sf_return_type
+ ;
+
+package_implementation_item_declaration:
+ sp_decl_variable_list ';'
+ ;
+
+sp_package_function_body:
+ sp_body { }
+ ;
+
+sp_package_procedure_body:
+ sp_body { }
+ ;
+
reserved_keyword_udt:
reserved_keyword_udt_not_param_type
;
@@ -18608,19 +18900,34 @@ sp_block_label:
;
-remember_end_opt:
+sp_opt_default:
+ _empty { $$= { nullptr, empty_clex_str}; }
+ | DEFAULT remember_cpp_ptr expr remember_end
{
- if (yychar == YYEMPTY)
- $$= (char*) YYLIP->get_cpp_ptr_rtrim();
- else
- $$= (char*) YYLIP->get_cpp_tok_end_rtrim();
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, $2, $4);
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+
+ $$= { $3, expr_str };
}
- ;
+ | SET_VAR remember_cpp_ptr expr remember_end
+ {
+ LEX_CSTRING expr_str= empty_clex_str;
-sp_opt_default:
- _empty { $$ = NULL; }
- | DEFAULT expr { $$ = $2; }
- | SET_VAR expr { $$ = $2; }
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, $2, $4 );
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+
+ $$= { $3, expr_str };
+ }
;
sp_opt_inout:
@@ -18641,12 +18948,6 @@ sp_proc_stmts1_implicit_block:
;
-remember_lex:
- {
- $$= thd->lex;
- }
- ;
-
keyword_directly_assignable:
keyword_data_type
| keyword_cast_type
@@ -18684,8 +18985,9 @@ set_assign:
set_expr_or_default
{
Lex_ident_sys tmp(thd, &$1);
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, $4)) ||
+ unlikely(Lex->set_variable(&tmp, $4.expr, $4.expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY,
false)))
MYSQL_YYABORT;
@@ -18702,8 +19004,9 @@ set_assign:
LEX *lex= Lex;
DBUG_ASSERT(lex->var_list.is_empty());
Lex_ident_sys tmp(thd, &$1);
+
if (unlikely(!tmp.str) ||
- unlikely(lex->set_variable(&tmp, &$3, $6)) ||
+ unlikely(lex->set_variable(&tmp, &$3, $6.expr, $6.expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY,
false)))
MYSQL_YYABORT;
@@ -18723,7 +19026,8 @@ set_assign:
set_expr_or_default
{
LEX_CSTRING tmp= { $2.str, $2.length };
- if (unlikely(Lex->set_trigger_field(&tmp, &$4, $7)) ||
+ if (unlikely(Lex->set_trigger_field(&tmp, &$4, $7.expr,
+ $7.expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY,
false)))
MYSQL_YYABORT;
@@ -18789,7 +19093,7 @@ opt_sp_parenthesized_pdparam_list:
;
-opt_sp_name:
+opt_trailing_sp_name:
_empty { $$= NULL; }
| sp_name { $$= $1; }
;
@@ -18828,32 +19132,38 @@ sp_body:
END
;
-create_package_chistic:
- COMMENT_SYM TEXT_STRING_sys
- { Lex->sp_chistics.comment= $2; }
- | sp_suid
- { Lex->sp_chistics.suid= $1; }
- ;
-
-create_package_chistics:
- create_package_chistic {}
- | create_package_chistics create_package_chistic { }
- ;
+// Inside CREATE PACKAGE BODY, package-wide items (e.g. variables)
+// must be declared before routine definitions.
-opt_create_package_chistics:
- _empty
- | create_package_chistics { }
+package_implementation_declare_section_list:
+ package_implementation_declare_section_list1
+ | package_implementation_declare_section_list2
+ | package_implementation_declare_section_list1
+ package_implementation_declare_section_list2
+ { $$.join($1, $2); }
;
-opt_create_package_chistics_init:
- { Lex->sp_chistics.init(); }
- opt_create_package_chistics
+package_implementation_declare_section:
+ package_implementation_declare_section_list
+ {
+ /*
+ Add a jump "end of declarations -> start of exceptions"
+ (over the executable sectition).
+ */
+ if (Lex->sp_block_with_exceptions_finalize_declarations(thd))
+ MYSQL_YYABORT;
+ }
;
-
package_implementation_executable_section:
END
{
+ /*
+ Backpatch the jump generated in
+ package_implementation_declare_section
+ and generate a backward jump:
+ "end of exceptions -> start of the executable section".
+ */
if (unlikely(Lex->sp_block_with_exceptions_add_empty(thd)))
MYSQL_YYABORT;
$$.init(0);
@@ -18861,17 +19171,8 @@ package_implementation_executable_section:
| BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END { $$= $2; }
;
+%endif ORACLE
-// Inside CREATE PACKAGE BODY, package-wide items (e.g. variables)
-// must be declared before routine definitions.
-
-package_implementation_declare_section:
- package_implementation_declare_section_list1
- | package_implementation_declare_section_list2
- | package_implementation_declare_section_list1
- package_implementation_declare_section_list2
- { $$.join($1, $2); }
- ;
package_implementation_declare_section_list1:
package_implementation_item_declaration
@@ -18887,65 +19188,43 @@ package_implementation_declare_section_list2:
{ $$.join($1, $2); }
;
-package_routine_lex:
- {
- if (unlikely(!($$= new (thd->mem_root)
- sp_lex_local(thd, thd->lex))))
- MYSQL_YYABORT;
- thd->m_parser_state->m_yacc.reset_before_substatement();
- }
- ;
-
package_specification_function:
- remember_lex package_routine_lex ident
+ remember_lex ident
{
- DBUG_ASSERT($1->sphead->get_package());
- $2->sql_command= SQLCOM_CREATE_FUNCTION;
- sp_name *spname= $1->make_sp_name_package_routine(thd, &$3);
- if (unlikely(!spname))
- MYSQL_YYABORT;
- thd->lex= $2;
- if (unlikely(!$2->make_sp_head_no_recursive(thd, spname,
- &sp_handler_package_function,
- NOT_AGGREGATE)))
+ LEX *lex= thd->lex->package_routine_start(thd,
+ &sp_handler_package_function, $2);
+ if (!lex)
MYSQL_YYABORT;
- $1->sphead->get_package()->m_current_routine= $2;
- (void) is_native_function_with_warn(thd, &$3);
+ thd->lex= lex;
}
- opt_sp_parenthesized_fdparam_list
- RETURN_ORACLE_SYM sf_return_type
+ sf_parameters
+ sf_returned_type_clause
sp_c_chistics
{
+ $$= thd->lex;
sp_head *sp= thd->lex->sphead;
sp->restore_thd_mem_root(thd);
thd->lex= $1;
- $$= $2;
}
;
package_specification_procedure:
- remember_lex package_routine_lex ident
+ remember_lex ident
{
- DBUG_ASSERT($1->sphead->get_package());
- $2->sql_command= SQLCOM_CREATE_PROCEDURE;
- sp_name *spname= $1->make_sp_name_package_routine(thd, &$3);
- if (unlikely(!spname))
+ LEX *lex= thd->lex->package_routine_start(thd,
+ &sp_handler_package_procedure, $2);
+ if (!lex)
MYSQL_YYABORT;
- thd->lex= $2;
- if (unlikely(!$2->make_sp_head_no_recursive(thd, spname,
- &sp_handler_package_procedure,
- DEFAULT_AGGREGATE)))
- MYSQL_YYABORT;
- $1->sphead->get_package()->m_current_routine= $2;
+ thd->lex= lex;
}
- opt_sp_parenthesized_pdparam_list
+ sp_parameters
sp_c_chistics
{
+ $$= thd->lex;
sp_head *sp= thd->lex->sphead;
sp->restore_thd_mem_root(thd);
thd->lex= $1;
- $$= $2;
}
;
@@ -18983,7 +19262,7 @@ package_implementation_function_body:
sp->set_c_chistics(thd->lex->sp_chistics);
sp->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
- sp_body opt_package_routine_end_name
+ sp_package_function_body opt_package_routine_end_name
{
if (unlikely(thd->lex->sp_body_finalize_function(thd) ||
thd->lex->sphead->check_package_routine_end_name($5)))
@@ -19002,7 +19281,7 @@ package_implementation_procedure_body:
sp->set_c_chistics(thd->lex->sp_chistics);
sp->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
- sp_body opt_package_routine_end_name
+ sp_package_procedure_body opt_package_routine_end_name
{
if (unlikely(thd->lex->sp_body_finalize_procedure(thd) ||
thd->lex->sphead->check_package_routine_end_name($5)))
@@ -19012,10 +19291,6 @@ package_implementation_procedure_body:
;
-package_implementation_item_declaration:
- sp_decl_variable_list ';'
- ;
-
opt_package_specification_element_list:
_empty
| package_specification_element_list
@@ -19043,12 +19318,16 @@ package_specification_element:
}
;
+
+%ifdef ORACLE
+
sp_decl_variable_list_anchored:
sp_decl_idents_init_vars
optionally_qualified_column_ident PERCENT_ORACLE_SYM TYPE_SYM
sp_opt_default
{
- if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(thd, $1, $2, $5)))
+ if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(thd, $1, $2,
+ $5.expr, $5.expr_str)))
MYSQL_YYABORT;
$$.init_using_vars($1);
}
@@ -19056,7 +19335,8 @@ sp_decl_variable_list_anchored:
optionally_qualified_column_ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM
sp_opt_default
{
- if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(thd, $1, $2, $5)))
+ if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(thd, $1,
+ $2, $5.expr, $5.expr_str)))
MYSQL_YYABORT;
$$.init_using_vars($1);
}
@@ -19138,46 +19418,14 @@ sp_tail_standalone:
}
sp_tail_is
sp_body
- opt_sp_name
+ opt_trailing_sp_name
{
if (unlikely(Lex->sp_body_finalize_procedure_standalone(thd, $8)))
MYSQL_YYABORT;
}
;
-drop_routine:
- DROP FUNCTION_SYM opt_if_exists ident '.' ident
- {
- if (Lex->stmt_drop_function($3, $4, $6))
- MYSQL_YYABORT;
- }
- | DROP FUNCTION_SYM opt_if_exists ident
- {
- if (Lex->stmt_drop_function($3, $4))
- MYSQL_YYABORT;
- }
- | DROP PROCEDURE_SYM opt_if_exists sp_name
- {
- if (Lex->stmt_drop_procedure($3, $4))
- MYSQL_YYABORT;
- }
- | DROP PACKAGE_ORACLE_SYM opt_if_exists sp_name
- {
- LEX *lex= Lex;
- lex->set_command(SQLCOM_DROP_PACKAGE, $3);
- if (unlikely(lex->sphead))
- my_yyabort_error((ER_SP_NO_DROP_SP, MYF(0), "PACKAGE"));
- lex->spname= $4;
- }
- | DROP PACKAGE_ORACLE_SYM BODY_ORACLE_SYM opt_if_exists sp_name
- {
- LEX *lex= Lex;
- lex->set_command(SQLCOM_DROP_PACKAGE_BODY, $4);
- if (unlikely(lex->sphead))
- my_yyabort_error((ER_SP_NO_DROP_SP, MYF(0), "PACKAGE BODY"));
- lex->spname= $5;
- }
- ;
+%endif ORACLE
create_routine:
@@ -19196,12 +19444,12 @@ create_routine:
if (Lex->stmt_create_stored_function_start($1 | $5, $3, $6))
MYSQL_YYABORT;
}
- opt_sp_parenthesized_fdparam_list
- RETURN_ORACLE_SYM sf_return_type
+ sf_parameters
+ sf_returned_type_clause
sf_c_chistics_and_body_standalone
- opt_sp_name
+ opt_trailing_sp_name
{
- if (Lex->stmt_create_stored_function_finalize_standalone($12))
+ if (Lex->stmt_create_stored_function_finalize_standalone($11))
MYSQL_YYABORT;
}
| create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists
@@ -19210,12 +19458,12 @@ create_routine:
if (Lex->stmt_create_stored_function_start($1 | $5, $3, $6))
MYSQL_YYABORT;
}
- opt_sp_parenthesized_fdparam_list
- RETURN_ORACLE_SYM sf_return_type
+ sf_parameters
+ sf_returned_type_clause
sf_c_chistics_and_body_standalone
- opt_sp_name
+ opt_trailing_sp_name
{
- if (Lex->stmt_create_stored_function_finalize_standalone($12))
+ if (Lex->stmt_create_stored_function_finalize_standalone($11))
MYSQL_YYABORT;
}
| create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists
@@ -19225,59 +19473,54 @@ create_routine:
(Item_result) $8, $10))
MYSQL_YYABORT;
}
- | create_or_replace definer_opt PACKAGE_ORACLE_SYM
+ | create_or_replace definer_opt sp_handler_package_spec
opt_if_not_exists sp_name opt_create_package_chistics_init
{
sp_package *pkg;
if (unlikely(!(pkg= Lex->
- create_package_start(thd,
- SQLCOM_CREATE_PACKAGE,
- &sp_handler_package_spec,
- $5, $1 | $4))))
+ create_package_start(thd, &sp_handler_package_spec,
+ $5, $1 | $4,
+ Lex->sp_chistics))))
MYSQL_YYABORT;
- pkg->set_c_chistics(Lex->sp_chistics);
Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
sp_tail_is
opt_package_specification_element_list END
- remember_end_opt opt_sp_name
+ remember_end_opt opt_trailing_sp_name
{
if (unlikely(Lex->create_package_finalize(thd, $5, $12, $11)))
MYSQL_YYABORT;
}
- | create_or_replace definer_opt PACKAGE_ORACLE_SYM BODY_ORACLE_SYM
+ | create_or_replace definer_opt sp_handler_package_body
opt_if_not_exists sp_name opt_create_package_chistics_init
{
sp_package *pkg;
if (unlikely(!(pkg= Lex->
- create_package_start(thd,
- SQLCOM_CREATE_PACKAGE_BODY,
- &sp_handler_package_body,
- $6, $1 | $5))))
+ create_package_start(thd, &sp_handler_package_body,
+ $5, $1 | $4,
+ Lex->sp_chistics))))
MYSQL_YYABORT;
- pkg->set_c_chistics(Lex->sp_chistics);
Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
Lex->sp_block_init(thd);
}
sp_tail_is
package_implementation_declare_section
- {
- if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
- MYSQL_YYABORT;
- }
package_implementation_executable_section
{
- $10.hndlrs+= $12.hndlrs;
- if (unlikely(Lex->sp_block_finalize(thd, $10)))
+ $9.hndlrs+= $10.hndlrs;
+ if (unlikely(Lex->sp_block_finalize(thd, $9)))
MYSQL_YYABORT;
}
- remember_end_opt opt_sp_name
+ remember_end_opt opt_trailing_sp_name
{
- if (unlikely(Lex->create_package_finalize(thd, $6, $15, $14)))
+ if (unlikely(Lex->create_package_finalize(thd, $5, $13, $12)))
MYSQL_YYABORT;
}
;
+
+%ifdef ORACLE
+
opt_sp_decl_body_list:
_empty
{
diff --git a/sql/structs.h b/sql/structs.h
index 318df056..029543ce 100644
--- a/sql/structs.h
+++ b/sql/structs.h
@@ -97,12 +97,22 @@ class engine_option_value;
struct ha_index_option_struct;
typedef struct st_key {
- uint key_length; /* total length of user defined key parts */
ulong flags; /* dupp key and pack flags */
- uint user_defined_key_parts; /* How many key_parts */
- uint usable_key_parts; /* Should normally be = user_defined_key_parts */
- uint ext_key_parts; /* Number of key parts in extended key */
ulong ext_key_flags; /* Flags for extended key */
+ ulong index_flags; /* Copy of handler->index_flags(index_number, 0, 1) */
+ uint key_length; /* total length of user defined key parts */
+ uint user_defined_key_parts; /* How many key_parts */
+ uint usable_key_parts; /* Should normally be = user_defined_key_parts */
+ uint ext_key_parts; /* Number of key parts in extended key */
+ uint block_size;
+ /*
+ The flag is on if statistical data for the index prefixes
+ has to be taken from the system statistical tables.
+ */
+ bool is_statistics_from_stat_tables;
+ bool without_overlaps;
+ bool is_ignored; // TRUE if index needs to be ignored
+
/*
Parts of primary key that are in the extension of this index.
@@ -124,13 +134,7 @@ typedef struct st_key {
/* Set of keys constraint correlated with this key */
key_map constraint_correlated;
LEX_CSTRING name;
- uint block_size;
enum ha_key_alg algorithm;
- /*
- The flag is on if statistical data for the index prefixes
- has to be taken from the system statistical tables.
- */
- bool is_statistics_from_stat_tables;
/*
Note that parser is used when the table is opened for use, and
parser_name is used when the table is being created.
@@ -168,12 +172,6 @@ typedef struct st_key {
ha_index_option_struct *option_struct; /* structure with parsed options */
double actual_rec_per_key(uint i);
-
- bool without_overlaps;
- /*
- TRUE if index needs to be ignored
- */
- bool is_ignored;
} KEY;
@@ -540,7 +538,8 @@ public:
OPT_OR_REPLACE_SLAVE_GENERATED= 32,// REPLACE was added on slave, it was
// not in the original query on master.
OPT_IF_EXISTS= 64,
- OPT_CREATE_SELECT= 128 // CREATE ... SELECT
+ OPT_CREATE_SELECT= 128, // CREATE ... SELECT
+ OPT_IMPORT_TABLESPACE= 256 // ALTER ... IMPORT TABLESPACE
};
private:
@@ -569,6 +568,7 @@ public:
bool like() const { return m_options & OPT_LIKE; }
bool if_exists() const { return m_options & OPT_IF_EXISTS; }
bool is_create_select() const { return m_options & OPT_CREATE_SELECT; }
+ bool import_tablespace() const { return m_options & OPT_IMPORT_TABLESPACE; }
void add(const DDL_options_st::Options other)
{
@@ -774,10 +774,13 @@ public:
m_ci= cs;
Lex_length_and_dec_st::reset();
}
- bool set(int type, const Lex_column_charset_collation_attrs_st &collation,
+ bool set(int type,
+ Sql_used *used,
+ const Charset_collation_map_st &map,
+ const Lex_column_charset_collation_attrs_st &collation,
CHARSET_INFO *charset)
{
- CHARSET_INFO *tmp= collation.resolved_to_character_set(charset);
+ CHARSET_INFO *tmp= collation.resolved_to_character_set(used, map, charset);
if (!tmp)
return true;
set(type, tmp);
@@ -1032,4 +1035,29 @@ public:
};
+/*
+ A value that's either a Timeval or SQL NULL
+*/
+
+class Timeval_null: protected Timeval
+{
+ bool m_is_null;
+public:
+ Timeval_null()
+ :Timeval(0, 0),
+ m_is_null(true)
+ { }
+ Timeval_null(const my_time_t sec, ulong usec)
+ :Timeval(sec, usec),
+ m_is_null(false)
+ { }
+ const Timeval & to_timeval() const
+ {
+ DBUG_ASSERT(!m_is_null);
+ return *this;
+ }
+ bool is_null() const { return m_is_null; }
+};
+
+
#endif /* STRUCTS_INCLUDED */
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index 0b873777..b7d81fe0 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -38,9 +38,9 @@
#include "my_sys.h"
#include "events.h"
-#include <thr_alarm.h>
#include "slave.h"
#include "rpl_mi.h"
+#include "rpl_filter.h"
#include "transaction.h"
#include "mysqld.h"
#include "lock.h"
@@ -53,8 +53,9 @@
#include "debug_sync.h" // DEBUG_SYNC
#include "sql_show.h"
#include "opt_trace_context.h"
-
#include "log_event.h"
+#include "optimizer_defaults.h"
+
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
#include "../storage/perfschema/pfs_server.h"
#endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */
@@ -436,6 +437,14 @@ static bool update_auto_increment_increment (sys_var *self, THD *thd, enum_var_t
#endif /* WITH_WSREP */
+
+static Sys_var_charset_collation_map Sys_character_set_collations(
+ "character_set_collations",
+ "Overrides for character set default collations",
+ SESSION_VAR(character_set_collations),
+ NO_CMD_LINE, NOT_IN_BINLOG);
+
+
static Sys_var_double Sys_analyze_sample_percentage(
"analyze_sample_percentage",
"Percentage of rows from the table ANALYZE TABLE will sample "
@@ -722,13 +731,21 @@ Sys_binlog_direct(
CMD_LINE(OPT_ARG), DEFAULT(FALSE),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(binlog_direct_check));
+static bool deprecated_explicit_defaults_for_timestamp(sys_var *self, THD *thd,
+ set_var *var)
+{
+ if (var->value && var->save_result.ulonglong_value == 0)
+ warn_deprecated<1100>(thd, "explicit_defaults_for_timestamp=0");
+ return false;
+}
static Sys_var_bit Sys_explicit_defaults_for_timestamp(
"explicit_defaults_for_timestamp",
"This option causes CREATE TABLE to create all TIMESTAMP columns "
"as NULL with DEFAULT NULL attribute, Without this option, "
"TIMESTAMP columns are NOT NULL and have implicit DEFAULT clauses.",
SESSION_VAR(option_bits), CMD_LINE(OPT_ARG),
- OPTION_EXPLICIT_DEF_TIMESTAMP, DEFAULT(TRUE), NO_MUTEX_GUARD, IN_BINLOG);
+ OPTION_EXPLICIT_DEF_TIMESTAMP, DEFAULT(TRUE), NO_MUTEX_GUARD, IN_BINLOG,
+ ON_CHECK(deprecated_explicit_defaults_for_timestamp));
static Sys_var_ulonglong Sys_bulk_insert_buff_size(
"bulk_insert_buffer_size", "Size of tree cache used in bulk "
@@ -806,7 +823,7 @@ static bool check_charset(sys_var *self, THD *thd, set_var *var)
((thd->variables.pseudo_slave_mode || thd->slave_thread) &&
(var->save_result.ptr=
Lex_exact_charset_opt_extended_collate(cs, true).
- find_default_collation())))
+ find_compiled_default_collation())))
return false;
}
my_error(ER_UNKNOWN_CHARACTER_SET, MYF(0), llstr(csno, buff));
@@ -1120,7 +1137,7 @@ static bool event_scheduler_check(sys_var *self, THD *thd, set_var *var)
if (Events::opt_event_scheduler == Events::EVENTS_DISABLED)
{
my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0),
- "--event-scheduler=DISABLED or --skip-grant-tables");
+ opt_noacl ? "--skip-grant-tables" : "--event-scheduler=DISABLED");
return true;
}
/* DISABLED is only accepted on the command line */
@@ -1230,6 +1247,68 @@ Sys_binlog_expire_logs_seconds(
VALID_RANGE(0, 8553600), DEFAULT(0), BLOCK_SIZE(1), NO_MUTEX_GUARD,
NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(copy_to_expire_logs_days));
+
+static bool update_binlog_space_limit(sys_var *, THD *,
+ enum_var_type type)
+{
+#ifdef HAVE_REPLICATION
+ /* Refresh summary of binlog sizes */
+ mysql_bin_log.lock_index();
+ binlog_space_limit= internal_binlog_space_limit;
+ slave_connections_needed_for_purge=
+ internal_slave_connections_needed_for_purge;
+
+ if (opt_bin_log)
+ {
+ if (binlog_space_limit)
+ mysql_bin_log.count_binlog_space();
+ /* Inform can_purge_log() that it should do a recheck of log_in_use() */
+ sending_new_binlog_file++;
+ mysql_bin_log.unlock_index();
+ mysql_bin_log.purge(1);
+ return 0;
+ }
+ mysql_bin_log.unlock_index();
+#endif
+ return 0;
+}
+
+static Sys_var_on_access_global<Sys_var_ulonglong,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_BINLOG_CACHE_SIZE>
+Sys_max_binlog_total_size(
+ "max_binlog_total_size",
+ "Maximum space to use for all binary logs. Extra logs are deleted on "
+ "server start, log rotation, FLUSH LOGS or when writing to binlog. "
+ "Default is 0, which means no size restrictions. "
+ "See also slave_connections_needed_for_purge",
+ GLOBAL_VAR(internal_binlog_space_limit), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, ULONGLONG_MAX), DEFAULT(0), BLOCK_SIZE(1),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
+ ON_UPDATE(update_binlog_space_limit));
+
+static Sys_var_on_access_global<Sys_var_ulonglong,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_BINLOG_CACHE_SIZE>
+Sys_binlog_space_limit(
+ "binlog_space_limit",
+ "Alias for max_binlog_total_size. Compatibility with Percona server.",
+ GLOBAL_VAR(internal_binlog_space_limit), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, ULONGLONG_MAX), DEFAULT(0), BLOCK_SIZE(1),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
+ ON_UPDATE(update_binlog_space_limit));
+
+static Sys_var_on_access_global<Sys_var_uint,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_MAX_BINLOG_CACHE_SIZE>
+Sys_slave_connections_needed_for_purge(
+ "slave_connections_needed_for_purge",
+ "Minimum number of connected slaves required for automatic binary "
+ "log purge with max_binlog_total_size, binlog_expire_logs_seconds "
+ "or binlog_expire_logs_days.",
+ GLOBAL_VAR(internal_slave_connections_needed_for_purge),
+ CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, UINT_MAX), DEFAULT(1), BLOCK_SIZE(1),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
+ ON_UPDATE(update_binlog_space_limit));
+
static Sys_var_mybool Sys_flush(
"flush", "Flush MyISAM tables to disk between SQL commands",
GLOBAL_VAR(myisam_flush),
@@ -1333,12 +1412,11 @@ static bool check_master_connection(sys_var *self, THD *thd, set_var *var)
return false;
}
-static Sys_var_session_lexstring Sys_default_master_connection(
+static Sys_var_lexstring Sys_default_master_connection(
"default_master_connection",
"Master connection to use for all slave variables and slave commands",
- SESSION_ONLY(default_master_connection),
- NO_CMD_LINE,
- DEFAULT(""), MAX_CONNECTION_NAME, ON_CHECK(check_master_connection));
+ SESSION_ONLY(default_master_connection), NO_CMD_LINE, DEFAULT(""),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_master_connection));
#endif
static Sys_var_charptr_fscs Sys_init_file(
@@ -1439,7 +1517,7 @@ static Sys_var_uint Sys_large_page_size(
READ_ONLY GLOBAL_VAR(opt_large_page_size), NO_CMD_LINE,
VALID_RANGE(0, UINT_MAX), DEFAULT(0), BLOCK_SIZE(1),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED(""));
+ DEPRECATED(1005, ""));
static Sys_var_mybool Sys_large_pages(
"large_pages", "Enable support for large pages",
@@ -1523,9 +1601,12 @@ static Sys_var_bit Sys_log_slow_admin_statements(
"log_slow_admin_statements",
"Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements "
"to the slow log if it is open. Resets or sets the option 'admin' in "
- "log_slow_disabled_statements",
+ "log_slow_filter. "
+ "Deprecated, use log_slow_filter without 'admin'.",
SESSION_VAR(log_slow_disabled_statements),
- CMD_LINE(OPT_ARG), REVERSE(LOG_SLOW_DISABLE_ADMIN), DEFAULT(TRUE));
+ CMD_LINE(OPT_ARG), REVERSE(LOG_SLOW_DISABLE_ADMIN), DEFAULT(TRUE),
+ 0, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
+ DEPRECATED(1100, "'@@log_slow_filter'"));
static Sys_var_bit Sys_log_slow_slave_statements(
"log_slow_slave_statements",
@@ -1720,10 +1801,6 @@ Sys_max_binlog_size(
static bool fix_max_connections(sys_var *self, THD *thd, enum_var_type type)
{
-#ifndef EMBEDDED_LIBRARY
- resize_thr_alarm(max_connections + extra_max_connections +
- global_system_variables.max_insert_delayed_threads + 10);
-#endif
return false;
}
@@ -2618,13 +2695,6 @@ static Sys_var_max_user_conn Sys_max_user_connections(
VALID_RANGE(-1, INT_MAX), DEFAULT(0), BLOCK_SIZE(1), NO_MUTEX_GUARD,
NOT_IN_BINLOG, ON_CHECK(if_checking_enabled));
-static Sys_var_ulong Sys_max_tmp_tables(
- "max_tmp_tables", "Unused, will be removed.",
- SESSION_VAR(max_tmp_tables), CMD_LINE(REQUIRED_ARG),
- VALID_RANGE(1, UINT_MAX), DEFAULT(32), BLOCK_SIZE(1),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.1.2
-
static Sys_var_ulong Sys_max_write_lock_count(
"max_write_lock_count",
"After this many write locks, allow some read locks to run in between",
@@ -2743,7 +2813,7 @@ static bool set_old_mode (sys_var *self, THD *thd, enum_var_type type)
static Sys_var_mybool Sys_old_mode(
"old", "Use compatible behavior from previous MariaDB version. See also --old-mode",
SESSION_VAR(old_mode), CMD_LINE(OPT_ARG), DEFAULT(FALSE), 0, NOT_IN_BINLOG, ON_CHECK(0),
- ON_UPDATE(set_old_mode), DEPRECATED("'@@old_mode'"));
+ ON_UPDATE(set_old_mode), DEPRECATED(1009, "'@@old_mode'"));
static Sys_var_mybool Sys_opt_allow_suspicious_udfs(
"allow_suspicious_udfs",
@@ -2767,14 +2837,6 @@ static Sys_var_enum Sys_alter_algorithm(
SESSION_VAR(alter_algorithm), CMD_LINE(OPT_ARG),
alter_algorithm_modes, DEFAULT(0));
-static Sys_var_enum Sys_old_alter_table(
- "old_alter_table", "Alias for alter_algorithm. "
- "Deprecated. Use --alter-algorithm instead.",
- SESSION_VAR(alter_algorithm), CMD_LINE(OPT_ARG),
- alter_algorithm_modes, DEFAULT(0), NO_MUTEX_GUARD, NOT_IN_BINLOG,
- ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("'@@alter_algorithm'")); // Since 10.5.1
-
static bool check_old_passwords(sys_var *self, THD *thd, set_var *var)
{
return mysql_user_table_is_in_short_password_format;
@@ -2859,7 +2921,6 @@ export const char *optimizer_switch_names[]=
{
"index_merge","index_merge_union","index_merge_sort_union",
"index_merge_intersection","index_merge_sort_intersection",
- "engine_condition_pushdown",
"index_condition_pushdown",
"derived_merge", "derived_with_keys",
"firstmatch","loosescan","materialization","in_to_exists","semijoin",
@@ -2887,20 +2948,10 @@ export const char *optimizer_switch_names[]=
"not_null_range_scan",
"hash_join_cardinality",
"cset_narrowing",
- "default",
+ "sargable_casefold",
+ "default",
NullS
};
-static bool fix_optimizer_switch(sys_var *self, THD *thd,
- enum_var_type type)
-{
- SV *sv= (type == OPT_GLOBAL) ? &global_system_variables : &thd->variables;
- if (sv->optimizer_switch & deprecated_ENGINE_CONDITION_PUSHDOWN)
- push_warning_printf(current_thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
- "engine_condition_pushdown=on"); // since 10.1.1
- return false;
-}
static bool check_legal_optimizer_switch(sys_var *self, THD *thd,
set_var *var)
{
@@ -2917,8 +2968,7 @@ static Sys_var_flagset Sys_optimizer_switch(
"Fine-tune the optimizer behavior",
SESSION_VAR(optimizer_switch), CMD_LINE(REQUIRED_ARG),
optimizer_switch_names, DEFAULT(OPTIMIZER_SWITCH_DEFAULT),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_legal_optimizer_switch),
- ON_UPDATE(fix_optimizer_switch));
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_legal_optimizer_switch));
static Sys_var_flagset Sys_optimizer_trace(
"optimizer_trace",
@@ -2937,29 +2987,13 @@ static Sys_var_ulong Sys_optimizer_trace_max_mem_size(
SESSION_VAR(optimizer_trace_max_mem_size), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(0, ULONG_MAX), DEFAULT(1024 * 1024), BLOCK_SIZE(1));
-
-/*
- Symbolic names for OPTIMIZER_ADJ_* flags in sql_priv.h
-*/
-static const char *adjust_secondary_key_cost[]=
-{
- "adjust_secondary_key_cost", "disable_max_seek", "disable_forced_index_in_group_by", 0
-};
-
-
-static Sys_var_set Sys_optimizer_adjust_secondary_key_costs(
+static Sys_var_ulong Sys_optimizer_adjust_secondary_key_costs(
"optimizer_adjust_secondary_key_costs",
- "A bit field with the following values: "
- "adjust_secondary_key_cost = Update secondary key costs for ranges to be at least "
- "5x of clustered primary key costs. "
- "disable_max_seek = Disable 'max_seek optimization' for secondary keys and slight "
- "adjustment of filter cost. "
- "disable_forced_index_in_group_by = Disable automatic forced index in GROUP BY. "
- "This variable will be deleted in MariaDB 11.0 as it is not needed with the "
- "new 11.0 optimizer.",
+ "Unused, will be removed.",
SESSION_VAR(optimizer_adjust_secondary_key_costs), CMD_LINE(REQUIRED_ARG),
- adjust_secondary_key_cost, DEFAULT(0));
-
+ VALID_RANGE(0, 2), DEFAULT(0), BLOCK_SIZE(1),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
+ DEPRECATED(1100, ""));
static Sys_var_charptr_fscs Sys_pid_file(
"pid_file", "Pid file used by safe_mysqld",
@@ -3159,7 +3193,6 @@ static Sys_var_ulong Sys_query_prealloc_size(
BLOCK_SIZE(1024), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
ON_UPDATE(fix_thd_mem_root));
-
// this has to be NO_CMD_LINE as the command-line option has a different name
static Sys_var_mybool Sys_skip_external_locking(
"skip_external_locking", "Don't use system (external) locking",
@@ -3373,7 +3406,7 @@ Sys_secure_auth(
"passwords",
GLOBAL_VAR(opt_secure_auth), CMD_LINE(OPT_ARG, OPT_SECURE_AUTH),
DEFAULT(TRUE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.6.17
+ DEPRECATED(1006, ""));
static bool check_require_secure_transport(sys_var *self, THD *thd, set_var *var)
{
@@ -3543,6 +3576,19 @@ Sys_master_verify_checksum(
GLOBAL_VAR(opt_master_verify_checksum), CMD_LINE(OPT_ARG),
DEFAULT(FALSE));
+
+static Sys_var_on_access_global<Sys_var_mybool,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_LEGACY_EVENT_POS>
+Sys_binlog_legacy_event_pos(
+ "binlog_legacy_event_pos",
+ "Fill in the end_log_pos field of _all_ events in the binlog, even when "
+ "doing so costs performance. Can be used in case some old application needs "
+ "it for backwards compatibility. Setting this option can hurt binlog "
+ "scalability.",
+ GLOBAL_VAR(opt_binlog_legacy_event_pos), CMD_LINE(OPT_ARG),
+ DEFAULT(FALSE));
+
+
/* These names must match RPL_SKIP_XXX #defines in slave.h. */
static const char *replicate_events_marked_for_skip_names[]= {
"REPLICATE", "FILTER_ON_SLAVE", "FILTER_ON_MASTER", 0
@@ -3889,25 +3935,43 @@ static Sys_var_set Sys_sql_mode(
static const char *old_mode_names[]=
{
- "NO_DUP_KEY_WARNINGS_WITH_IGNORE",
- "NO_PROGRESS_INFO",
- "ZERO_DATE_TIME_CAST",
+ "NO_DUP_KEY_WARNINGS_WITH_IGNORE", // deprecated since 11.3
+ "NO_PROGRESS_INFO", // deprecated since 11.3
+ "ZERO_DATE_TIME_CAST", // deprecated since 11.3
"UTF8_IS_UTF8MB3",
- "IGNORE_INDEX_ONLY_FOR_JOIN",
- "COMPAT_5_1_CHECKSUM",
- "NO_NULL_COLLATION_IDS",
+ "IGNORE_INDEX_ONLY_FOR_JOIN", // deprecated since 11.3
+ "COMPAT_5_1_CHECKSUM", // deprecated since 11.3
+ "NO_NULL_COLLATION_IDS", // deprecated since 11.3
+ "LOCK_ALTER_TABLE_COPY", // deprecated since 11.3
0
};
-/*
- sql_mode should *not* be IN_BINLOG as the slave can't remember this
- anyway on restart.
-*/
+void old_mode_deprecated_warnings(THD *thd, ulonglong v)
+{
+ v &= ~OLD_MODE_DEFAULT_VALUE;
+ for (uint i=0; old_mode_names[i]; i++)
+ if ((1ULL<<i) & v)
+ {
+ if (thd)
+ warn_deprecated<1103>(thd, old_mode_names[i]);
+ else
+ sql_print_warning("--old-mode='%s' is deprecated and will be "
+ "removed in a future release", old_mode_names[i]);
+ }
+}
+
+static bool old_mode_deprecated(sys_var *self, THD *thd, set_var *var)
+{
+ old_mode_deprecated_warnings(thd, var->save_result.ulonglong_value);
+ return false;
+}
+
static Sys_var_set Sys_old_behavior(
"old_mode",
"Used to emulate old behavior from earlier MariaDB or MySQL versions",
SESSION_VAR(old_behavior), CMD_LINE(REQUIRED_ARG),
- old_mode_names, DEFAULT(OLD_MODE_UTF8_IS_UTF8MB3));
+ old_mode_names, DEFAULT(OLD_MODE_DEFAULT_VALUE),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(old_mode_deprecated));
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
#define SSL_OPT(X) CMD_LINE(REQUIRED_ARG,X)
@@ -4210,7 +4274,7 @@ Sys_threadpool_dedicated_listener(
#endif /* HAVE_POOL_OF_THREADS */
/**
- Can't change the 'next' tx_isolation if we are already in a
+ Can't change the 'next' transaction_isolation if we are already in a
transaction.
*/
@@ -4227,14 +4291,22 @@ static bool check_tx_isolation(sys_var *self, THD *thd, set_var *var)
// NO_CMD_LINE - different name of the option
static Sys_var_tx_isolation Sys_tx_isolation(
- "tx_isolation", "Default transaction isolation level",
- NO_SET_STMT SESSION_VAR(tx_isolation), NO_CMD_LINE,
+ "tx_isolation", "Default transaction isolation level."
+ "This variable is deprecated and will be removed in a future release.",
+ SESSION_VAR(tx_isolation), NO_CMD_LINE,
+ tx_isolation_names, DEFAULT(ISO_REPEATABLE_READ),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_tx_isolation),
+ ON_UPDATE(0), DEPRECATED(1101, "'@@transaction_isolation'"));
+
+static Sys_var_tx_isolation Sys_transaction_isolation(
+ "transaction_isolation", "Default transaction isolation level",
+ SESSION_VAR(tx_isolation), NO_CMD_LINE,
tx_isolation_names, DEFAULT(ISO_REPEATABLE_READ),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_tx_isolation));
/**
- Can't change the tx_read_only state if we are already in a
+ Can't change the transaction_read_only state if we are already in a
transaction.
*/
@@ -4274,11 +4346,21 @@ bool Sys_var_tx_read_only::session_update(THD *thd, set_var *var)
return false;
}
-
+// NO_CMD_LINE - different name of the option
static Sys_var_tx_read_only Sys_tx_read_only(
"tx_read_only", "Default transaction access mode. If set to OFF, "
"the default, access is read/write. If set to ON, access is read-only. "
"The SET TRANSACTION statement can also change the value of this variable. "
+ "See SET TRANSACTION and START TRANSACTION."
+ "This variable is deprecated and will be removed in a future release.",
+ SESSION_VAR(tx_read_only), NO_CMD_LINE, DEFAULT(0),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_tx_read_only),
+ ON_UPDATE(0), DEPRECATED(1101, "'@@transaction_read_only'"));
+
+static Sys_var_tx_read_only Sys_transaction_read_only(
+ "transaction_read_only", "Default transaction access mode. If set to OFF, "
+ "the default, access is read/write. If set to ON, access is read-only. "
+ "The SET TRANSACTION statement can also change the value of this variable. "
"See SET TRANSACTION and START TRANSACTION.",
SESSION_VAR(tx_read_only), NO_CMD_LINE, DEFAULT(0),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_tx_read_only));
@@ -4402,7 +4484,7 @@ static Sys_var_plugin Sys_storage_engine(
SESSION_VAR(table_plugin), NO_CMD_LINE,
MYSQL_STORAGE_ENGINE_PLUGIN, DEFAULT(&default_storage_engine),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_not_null), ON_UPDATE(0),
- DEPRECATED("'@@default_storage_engine'")); // since 10.5.1
+ DEPRECATED(1005, "'@@default_storage_engine'"));
static Sys_var_plugin Sys_default_tmp_storage_engine(
"default_tmp_storage_engine", "The default storage engine for user-created temporary tables",
@@ -4477,39 +4559,6 @@ static Sys_var_debug_sync Sys_debug_sync(
DEFAULT(0), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_has_super));
#endif /* defined(ENABLED_DEBUG_SYNC) */
-/**
- "time_format" "date_format" "datetime_format"
-
- the following three variables are unused, and the source of confusion
- (bug reports like "I've changed date_format, but date format hasn't changed.
- I've made them read-only, to alleviate the situation somewhat.
-
- @todo make them NO_CMD_LINE ?
-*/
-static Sys_var_charptr Sys_date_format(
- "date_format", "The DATE format (ignored)",
- READ_ONLY GLOBAL_VAR(global_date_format.format.str),
- CMD_LINE(REQUIRED_ARG),
- DEFAULT(known_date_time_formats[ISO_FORMAT].date_format),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.1.2
-
-static Sys_var_charptr Sys_datetime_format(
- "datetime_format", "The DATETIME format (ignored)",
- READ_ONLY GLOBAL_VAR(global_datetime_format.format.str),
- CMD_LINE(REQUIRED_ARG),
- DEFAULT(known_date_time_formats[ISO_FORMAT].datetime_format),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.1.2
-
-static Sys_var_charptr Sys_time_format(
- "time_format", "The TIME format (ignored)",
- READ_ONLY GLOBAL_VAR(global_time_format.format.str),
- CMD_LINE(REQUIRED_ARG),
- DEFAULT(known_date_time_formats[ISO_FORMAT].time_format),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.1.2
-
static bool fix_autocommit(sys_var *self, THD *thd, enum_var_type type)
{
if (type == OPT_GLOBAL)
@@ -4582,7 +4631,7 @@ static Sys_var_mybool Sys_big_tables(
"longer needed, as the server now handles this automatically.",
SESSION_VAR(big_tables), CMD_LINE(OPT_ARG), DEFAULT(FALSE),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.5.0
+ DEPRECATED(1005, ""));
static Sys_var_bit Sys_big_selects(
"sql_big_selects", "If set to 0, MariaDB will not perform large SELECTs."
@@ -4682,7 +4731,9 @@ static Sys_var_bit Sys_sql_notes(
"See also note_verbosity, which allows one to define with notes are "
"sent.",
SESSION_VAR(option_bits), NO_CMD_LINE, OPTION_SQL_NOTES,
- DEFAULT(TRUE));
+ DEFAULT(TRUE),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
+ DEPRECATED(1103, "'@@note_verbosity'"));
static Sys_var_bit Sys_auto_is_null(
"sql_auto_is_null", "If set to 1, the query SELECT * FROM table_name WHERE "
@@ -5055,7 +5106,7 @@ static Sys_var_mybool Sys_keep_files_on_create(
SESSION_VAR(keep_files_on_create), CMD_LINE(OPT_ARG),
DEFAULT(FALSE),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
- DEPRECATED("")); // since 10.8.0
+ DEPRECATED(1008, ""));
static char *license;
static Sys_var_charptr Sys_license(
@@ -5587,6 +5638,30 @@ Sys_var_rpl_filter::global_value_ptr(THD *thd,
return ret;
}
+const uchar *
+Sys_var_binlog_filter::global_value_ptr(THD *thd,
+ const LEX_CSTRING *base_name) const
+{
+ char buf[256];
+ String tmp(buf, sizeof(buf), &my_charset_bin);
+ uchar *ret;
+
+ tmp.length(0);
+
+ switch (opt_id) {
+ case OPT_BINLOG_DO_DB:
+ binlog_filter->get_do_db(&tmp);
+ break;
+ case OPT_BINLOG_IGNORE_DB:
+ binlog_filter->get_ignore_db(&tmp);
+ break;
+ }
+
+ ret= (uchar *) thd->strmake(tmp.ptr(), tmp.length());
+
+ return ret;
+}
+
static Sys_var_rpl_filter Sys_replicate_do_db(
"replicate_do_db", OPT_REPLICATE_DO_DB,
"Tell the slave to restrict replication to updates of tables "
@@ -5597,6 +5672,12 @@ static Sys_var_rpl_filter Sys_replicate_do_db(
"actual names of table(s) being updated are checked.",
PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_DO_DB);
+static Sys_var_binlog_filter Sys_binlog_do_db(
+ "binlog_do_db", OPT_BINLOG_DO_DB,
+ "Tells the primary it should log updates for the specified database, "
+ "and exclude all others not explicitly mentioned.",
+ PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_DO_DB);
+
static Sys_var_rpl_filter Sys_replicate_rewrite_db(
"replicate_rewrite_db", OPT_REPLICATE_REWRITE_DB,
"Tells the slave to replicate binlog events "
@@ -5620,6 +5701,11 @@ static Sys_var_rpl_filter Sys_replicate_ignore_db(
"actual names of table(s) being updated are checked.",
PRIV_SET_SYSTEM_GLOBAL_VAR_REPLICATE_IGNORE_DB);
+static Sys_var_binlog_filter Sys_binlog_ignore_db(
+ "binlog_ignore_db", OPT_BINLOG_IGNORE_DB,
+ "Tells the primary that updates to the given database should not be logged to the binary log.",
+ PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_IGNORE_DB);
+
static Sys_var_rpl_filter Sys_replicate_ignore_table(
"replicate_ignore_table", OPT_REPLICATE_IGNORE_TABLE,
"Tells the slave thread not to replicate any statement that "
@@ -5646,6 +5732,15 @@ static Sys_var_charptr_fscs Sys_slave_load_tmpdir(
READ_ONLY GLOBAL_VAR(slave_load_tmpdir), CMD_LINE(REQUIRED_ARG),
DEFAULT(0));
+static Sys_var_ulong Sys_opt_binlog_rows_event_max_size(
+ "binlog_row_event_max_size",
+ "The maximum size of a row-based binary log event in bytes. Rows will be "
+ "grouped into events smaller than this size if possible. "
+ "The value has to be a multiple of 256.",
+ READ_ONLY GLOBAL_VAR(opt_binlog_rows_event_max_size), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(256, UINT_MAX32 - (UINT_MAX32 % 256)), DEFAULT(8192),
+ BLOCK_SIZE(256));
+
static Sys_var_on_access_global<Sys_var_uint,
PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_NET_TIMEOUT>
Sys_slave_net_timeout(
@@ -6176,25 +6271,15 @@ static Sys_var_enum Sys_wsrep_certification_rules(
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
ON_UPDATE(0));
-static Sys_var_mybool Sys_wsrep_causal_reads(
- "wsrep_causal_reads", "Setting this variable is equivalent "
- "to setting wsrep_sync_wait READ flag",
- SESSION_VAR(wsrep_causal_reads),
- CMD_LINE(OPT_ARG, OPT_WSREP_CAUSAL_READS), DEFAULT(FALSE),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
- ON_UPDATE(wsrep_causal_reads_update),
- DEPRECATED("'@@wsrep_sync_wait=1'")); // since 10.1.3
-
static Sys_var_uint Sys_wsrep_sync_wait(
"wsrep_sync_wait", "Ensure \"synchronous\" read view before executing "
"an operation of the type specified by bitmask: 1 - READ(includes "
"SELECT, SHOW and BEGIN/START TRANSACTION); 2 - UPDATE and DELETE; 4 - "
"INSERT and REPLACE",
- SESSION_VAR(wsrep_sync_wait), CMD_LINE(OPT_ARG, OPT_WSREP_SYNC_WAIT),
+ SESSION_VAR(wsrep_sync_wait), CMD_LINE(OPT_ARG),
VALID_RANGE(WSREP_SYNC_WAIT_NONE, WSREP_SYNC_WAIT_MAX),
DEFAULT(WSREP_SYNC_WAIT_NONE), BLOCK_SIZE(1),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
- ON_UPDATE(wsrep_sync_wait_update));
+ NO_MUTEX_GUARD, NOT_IN_BINLOG);
static const char *wsrep_mode_names[]=
{
@@ -6265,7 +6350,7 @@ static Sys_var_mybool Sys_wsrep_load_data_splitting(
"transaction after every 10K rows inserted (deprecated)",
GLOBAL_VAR(wsrep_load_data_splitting),
CMD_LINE(OPT_ARG), DEFAULT(0), NO_MUTEX_GUARD, NOT_IN_BINLOG,
- ON_CHECK(0), ON_UPDATE(0), DEPRECATED("")); // since 10.4.3
+ ON_CHECK(0), ON_UPDATE(0), DEPRECATED(1004, ""));
static Sys_var_mybool Sys_wsrep_slave_FK_checks(
"wsrep_slave_FK_checks", "Should slave thread do "
@@ -6725,14 +6810,7 @@ static Sys_var_enum Sys_histogram_type(
"DOUBLE_PREC_HB - double precision height-balanced, "
"JSON_HB - height-balanced, stored as JSON.",
SESSION_VAR(histogram_type), CMD_LINE(REQUIRED_ARG),
- histogram_types, DEFAULT(1));
-
-static Sys_var_mybool Sys_no_thread_alarm(
- "debug_no_thread_alarm",
- "Disable system thread alarm calls. Disabling it may be useful "
- "in debugging or testing, never do it in production",
- READ_ONLY GLOBAL_VAR(my_disable_thr_alarm), CMD_LINE(OPT_ARG),
- DEFAULT(FALSE));
+ histogram_types, DEFAULT(2));
static Sys_var_mybool Sys_query_cache_strip_comments(
"query_cache_strip_comments",
@@ -6784,15 +6862,21 @@ static Sys_var_mybool Sys_binlog_encryption(
READ_ONLY GLOBAL_VAR(encrypt_binlog), CMD_LINE(OPT_ARG),
DEFAULT(FALSE));
-static const char *binlog_row_image_names[]= {"MINIMAL", "NOBLOB", "FULL", NullS};
+static const char *binlog_row_image_names[]=
+{
+ "MINIMAL", "NOBLOB", "FULL", "FULL_NODUP", NullS
+};
static Sys_var_on_access<Sys_var_enum,
PRIV_SET_SYSTEM_VAR_BINLOG_ROW_IMAGE,
PRIV_SET_SYSTEM_VAR_BINLOG_ROW_IMAGE>
Sys_binlog_row_image(
"binlog_row_image",
- "Controls whether rows should be logged in 'FULL', 'NOBLOB' or "
- "'MINIMAL' formats. 'FULL', means that all columns in the before "
- "and after image are logged. 'NOBLOB', means that mysqld avoids logging "
+ "Controls whether rows should be logged in 'FULL', 'FULL_NODUP', "
+ "'NOBLOB' or 'MINIMAL' formats. 'FULL', means that all columns in the "
+ "before and after image are logged. 'FULL_NODUP', means that all "
+ "columns are logged in before image, but only changed columns or all "
+ "columns of inserted record are logged in after image, "
+ "'NOBLOB', means that mysqld avoids logging "
"blob columns whenever possible (eg, blob column was not changed or "
"is not part of primary key). 'MINIMAL', means that a PK equivalent (PK "
"columns or full row if there is no PK in the table) is logged in the "
@@ -6816,6 +6900,36 @@ Sys_binlog_row_metadata(
ON_UPDATE(NULL));
+static Sys_var_on_access_global<Sys_var_mybool,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_GTID_INDEX>
+Sys_binlog_gtid_index(
+ "binlog_gtid_index",
+ "Enable the creation of a GTID index for every binlog file, and the use "
+ "of such index for speeding up GTID lookup in the binlog.",
+ GLOBAL_VAR(opt_binlog_gtid_index), CMD_LINE(OPT_ARG),
+ DEFAULT(TRUE));
+
+
+static Sys_var_on_access_global<Sys_var_uint,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_GTID_INDEX_PAGE_SIZE>
+Sys_binlog_gtid_index_page_size(
+ "binlog_gtid_index_page_size",
+ "Page size to use for the binlog GTID index.",
+ GLOBAL_VAR(opt_binlog_gtid_index_page_size), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(64, 1<<24), DEFAULT(4096), BLOCK_SIZE(1));
+
+
+static Sys_var_on_access_global<Sys_var_uint,
+ PRIV_SET_SYSTEM_GLOBAL_VAR_BINLOG_GTID_INDEX_SPAN_MIN>
+Sys_binlog_gtid_index_span_min(
+ "binlog_gtid_index_span_min",
+ "Control sparseness of the binlog GTID index. If set to N, at most one "
+ "index record will be added for every N bytes of binlog file written, "
+ "to reduce the size of the index. Normally does not need tuning.",
+ GLOBAL_VAR(opt_binlog_gtid_index_span_min), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(1, 1024*1024L*1024L), DEFAULT(65536), BLOCK_SIZE(1));
+
+
static bool check_pseudo_slave_mode(sys_var *self, THD *thd, set_var *var)
{
longlong previous_val= thd->variables.pseudo_slave_mode;
@@ -6905,13 +7019,78 @@ static Sys_var_ulonglong Sys_max_session_mem_used(
DEFAULT(LONGLONG_MAX), BLOCK_SIZE(1));
#ifndef EMBEDDED_LIBRARY
+/**
+ Validate a redirect_url string.
+
+ A valid string is either empty, or of the format mysql://host[:port],
+ where host is an arbitrary string without any colon ':'.
+
+ @param str A string to validate
+ @param len Length of the string
+ @retval false The string is valid
+ @retval true The string is invalid
+*/
+export bool validate_redirect_url(char *str, size_t len)
+{
+ LEX_CSTRING mysql_prefix= {STRING_WITH_LEN("mysql://")};
+ LEX_CSTRING maria_prefix= {STRING_WITH_LEN("mariadb://")};
+ /* Empty string is valid */
+ if (len == 0)
+ return false;
+ const char* end= str + len;
+ if (!strncmp(str, mysql_prefix.str, mysql_prefix.length))
+ str+= mysql_prefix.length;
+ else if (!strncmp(str, maria_prefix.str, maria_prefix.length))
+ str+= maria_prefix.length;
+ else
+ return true;
+ /* Host name cannot be empty */
+ if (str == end)
+ return true;
+ /* Find the colon, if any */
+ while (str < end && *str != ':')
+ str++;
+ /* Found colon */
+ if (str < end)
+ {
+ /* Should have at least one number after the colon */
+ if (str + 1 == end)
+ return true;
+ int p= 0;
+ while (str < end && isdigit(*++str))
+ if ((p= p * 10 + (*str - '0')) > 65535)
+ return true;
+ /* Should be all numbers after the colon */
+ if (str < end)
+ return true;
+ }
+ return false;
+}
+
+static bool sysvar_validate_redirect_url(sys_var *self, THD *thd,
+ set_var *var)
+{
+ /* NULL is invalid. */
+ if (check_not_null(self, thd, var))
+ return true;
+ char *str= var->save_result.string_value.str;
+ size_t len= var->save_result.string_value.length;
+ return validate_redirect_url(str, len);
+}
+
+static Sys_var_charptr Sys_redirect_url(
+ "redirect_url",
+ "URL of another server to redirect clients to. "
+ "Empty string means no redirection",
+ SESSION_VAR(redirect_url), CMD_LINE(REQUIRED_ARG), DEFAULT(""),
+ NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(sysvar_validate_redirect_url));
static Sys_var_sesvartrack Sys_track_session_sys_vars(
"session_track_system_variables",
"Track changes in registered system variables. ",
CMD_LINE(REQUIRED_ARG),
DEFAULT("autocommit,character_set_client,character_set_connection,"
- "character_set_results,time_zone"));
+ "character_set_results,redirect_url,time_zone"));
static bool update_session_track_schema(sys_var *self, THD *thd,
enum_var_type type)
@@ -6991,28 +7170,6 @@ static Sys_var_mybool Sys_session_track_user_variables(
#endif //EMBEDDED_LIBRARY
-static Sys_var_uint Sys_in_subquery_conversion_threshold(
- "in_predicate_conversion_threshold",
- "The minimum number of scalar elements in the value list of "
- "IN predicate that triggers its conversion to IN subquery. Set to "
- "0 to disable the conversion.",
- SESSION_VAR(in_subquery_conversion_threshold), CMD_LINE(REQUIRED_ARG),
- VALID_RANGE(0, UINT_MAX), DEFAULT(IN_SUBQUERY_CONVERSION_THRESHOLD), BLOCK_SIZE(1));
-
-static Sys_var_ulong Sys_optimizer_max_sel_arg_weight(
- "optimizer_max_sel_arg_weight",
- "The maximum weight of the SEL_ARG graph. Set to 0 for no limit",
- SESSION_VAR(optimizer_max_sel_arg_weight), CMD_LINE(REQUIRED_ARG),
- VALID_RANGE(0, UINT_MAX), DEFAULT(SEL_ARG::MAX_WEIGHT), BLOCK_SIZE(1));
-
-static Sys_var_ulong Sys_optimizer_max_sel_args(
- "optimizer_max_sel_args",
- "The maximum number of SEL_ARG objects created when optimizing a range. "
- "If more objects would be needed, the range will not be used by the "
- "optimizer.",
- SESSION_VAR(optimizer_max_sel_args), CMD_LINE(REQUIRED_ARG),
- VALID_RANGE(0, UINT_MAX), DEFAULT(SEL_ARG::DEFAULT_MAX_SEL_ARGS), BLOCK_SIZE(1));
-
static Sys_var_enum Sys_secure_timestamp(
"secure_timestamp", "Restricts direct setting of a session "
"timestamp. Possible levels are: YES - timestamp cannot deviate from "
@@ -7037,3 +7194,143 @@ static Sys_var_bit Sys_system_versioning_insert_history(
SESSION_VAR(option_bits), CMD_LINE(OPT_ARG),
OPTION_INSERT_HISTORY, DEFAULT(FALSE),
NO_MUTEX_GUARD, IN_BINLOG);
+
+/* Optimizer variables */
+
+static Sys_var_uint Sys_in_subquery_conversion_threshold(
+ "in_predicate_conversion_threshold",
+ "The minimum number of scalar elements in the value list of "
+ "IN predicate that triggers its conversion to IN subquery. Set to "
+ "0 to disable the conversion.",
+ SESSION_VAR(in_subquery_conversion_threshold), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, UINT_MAX), DEFAULT(IN_SUBQUERY_CONVERSION_THRESHOLD),
+ BLOCK_SIZE(1));
+
+static Sys_var_ulong Sys_optimizer_max_sel_arg_weight(
+ "optimizer_max_sel_arg_weight",
+ "The maximum weight of the SEL_ARG graph. Set to 0 for no limit",
+ SESSION_VAR(optimizer_max_sel_arg_weight), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, UINT_MAX), DEFAULT(SEL_ARG::MAX_WEIGHT), BLOCK_SIZE(1));
+
+static Sys_var_ulong Sys_optimizer_max_sel_args(
+ "optimizer_max_sel_args",
+ "The maximum number of SEL_ARG objects created when optimizing a range. "
+ "If more objects would be needed, the range will not be used by the "
+ "optimizer.",
+ SESSION_VAR(optimizer_max_sel_args), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, UINT_MAX), DEFAULT(SEL_ARG::DEFAULT_MAX_SEL_ARGS), BLOCK_SIZE(1));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_disk_read_ratio(
+ "optimizer_disk_read_ratio",
+ "Chance that we have to do a disk read to find a row or index entry from "
+ "the engine cache (cache_misses/total_cache_requests). 0.0 means that "
+ "everything is cached and 1.0 means that nothing is expected to be in the "
+ "engine cache.",
+ COST_VAR(disk_read_ratio),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_DISK_READ_RATIO),
+ VALID_RANGE(0.0, 1.0), DEFAULT(DEFAULT_DISK_READ_RATIO), COST_ADJUST(1));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_key_lookup_cost(
+ "optimizer_key_lookup_cost",
+ "Cost for finding a key based on a key value",
+ COST_VAR(key_lookup_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_KEY_LOOKUP_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_KEY_LOOKUP_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_row_lookup_cost(
+ "optimizer_row_lookup_cost",
+ "Cost of finding a row based on a rowid or a clustered key.",
+ COST_VAR(row_lookup_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_ROW_LOOKUP_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_ROW_LOOKUP_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_disk_read_cost(
+ "optimizer_disk_read_cost",
+ "Cost of reading a block of IO_SIZE (4096) from a disk (in usec).",
+ COST_VAR(disk_read_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_DISK_READ_COST),
+ VALID_RANGE(0, 10000), DEFAULT(DEFAULT_DISK_READ_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_key_copy_cost(
+ "optimizer_key_copy_cost",
+ "Cost of finding the next key in the engine and copying it to the SQL "
+ "layer.",
+ COST_VAR(key_copy_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_KEY_COPY_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_KEY_COPY_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_index_block_copy_cost(
+ "optimizer_index_block_copy_cost",
+ "Cost of copying a key block from the cache to intern storage as part of "
+ "an index scan.",
+ COST_VAR(index_block_copy_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_INDEX_BLOCK_COPY_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_INDEX_BLOCK_COPY_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_row_next_find_cost(
+ "optimizer_row_next_find_cost",
+ "Cost of finding the next row when scanning the table.",
+ COST_VAR(row_next_find_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_ROW_NEXT_FIND_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_ROW_NEXT_FIND_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_key_next_find_cost(
+ "optimizer_key_next_find_cost",
+ "Cost of finding the next key and rowid when using filters.",
+ COST_VAR(key_next_find_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_KEY_NEXT_FIND_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_KEY_NEXT_FIND_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_row_copy_cost(
+ "optimizer_row_copy_cost",
+ "Cost of copying a row from the engine or the join cache to the SQL layer.",
+ COST_VAR(row_copy_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_ROW_COPY_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_ROW_COPY_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_key_cmp_cost(
+ "optimizer_key_compare_cost",
+ "Cost of checking a key against the end key condition.",
+ COST_VAR(key_cmp_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_KEY_CMP_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_KEY_COMPARE_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_rowid_cmp_cost(
+ "optimizer_rowid_compare_cost",
+ "Cost of comparing two rowid's",
+ COST_VAR(rowid_cmp_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_ROWID_CMP_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_ROWID_COMPARE_COST), COST_ADJUST(1000));
+
+static Sys_var_engine_optimizer_cost Sys_optimizer_rowid_copy_cost(
+ "optimizer_rowid_copy_cost",
+ "Cost of copying a rowid",
+ COST_VAR(rowid_copy_cost),
+ CMD_LINE(REQUIRED_ARG, OPT_COSTS_ROWID_COPY_COST),
+ VALID_RANGE(0, 1000), DEFAULT(DEFAULT_ROWID_COPY_COST), COST_ADJUST(1000));
+
+/* The following costs are stored in THD and handler */
+
+static Sys_var_optimizer_cost Sys_optimizer_where_cost(
+ "optimizer_where_cost",
+ "Cost of checking the row against the WHERE clause. Increasing this will "
+ "have the optimizer to prefer plans with less row combinations.",
+ SESSION_VAR(optimizer_where_cost),
+ CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, 100000), DEFAULT(DEFAULT_WHERE_COST), COST_ADJUST(1000));
+
+static Sys_var_optimizer_cost Sys_optimizer_scan_cost(
+ "optimizer_scan_setup_cost",
+ "Extra cost added to TABLE and INDEX scans to get optimizer to prefer "
+ "index lookups.",
+ SESSION_VAR(optimizer_scan_setup_cost),
+ CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, 100000000), DEFAULT(DEFAULT_TABLE_SCAN_SETUP_COST),
+ COST_ADJUST(1000));
+
+extern const char *block_encryption_mode_values[];
+static Sys_var_enum Sys_block_encryption_mode(
+ "block_encryption_mode", "Default block encryption mode for "
+ "AES_ENCRYPT() and AES_DECRYPT() functions",
+ SESSION_VAR(block_encryption_mode), CMD_LINE(REQUIRED_ARG),
+ block_encryption_mode_values, DEFAULT(0));
diff --git a/sql/sys_vars.inl b/sql/sys_vars.inl
index 932b12fc..1d0722c7 100644
--- a/sql/sys_vars.inl
+++ b/sql/sys_vars.inl
@@ -32,6 +32,7 @@
#include "rpl_mi.h" // For Multi-Source Replication
#include "debug_sync.h"
#include "sql_acl.h" // check_global_access()
+#include "optimizer_defaults.h" // create_optimizer_costs
/*
a set of mostly trivial (as in f(X)=X) defines below to make system variable
@@ -40,6 +41,7 @@
#define VALID_RANGE(X,Y) X,Y
#define DEFAULT(X) X
#define BLOCK_SIZE(X) X
+#define COST_ADJUST(X) X
#define GLOBAL_VAR(X) sys_var::GLOBAL, (((char*)&(X))-(char*)&global_system_variables), sizeof(X)
#define SESSION_VAR(X) sys_var::SESSION, offsetof(SV, X), sizeof(((SV *)0)->X)
#define SESSION_ONLY(X) sys_var::ONLY_SESSION, offsetof(SV, X), sizeof(((SV *)0)->X)
@@ -67,7 +69,7 @@
@@foreign_key_checks <-> OPTION_NO_FOREIGN_KEY_CHECKS
*/
#define REVERSE(X) ~(X)
-#define DEPRECATED(X) X
+#define DEPRECATED(V, REPL) (check_deprecated_version<V>(), REPL)
#define session_var(THD, TYPE) (*(TYPE*)session_var_ptr(THD))
#define global_var(TYPE) (*(TYPE*)global_var_ptr())
@@ -490,14 +492,19 @@ public:
Backing store: char*
@note
- This class supports only GLOBAL variables, because THD on destruction
- does not destroy individual members of SV, there's no way to free
- allocated string variables for every thread.
+
+ Note that the memory management for SESSION_VAR's is manual, the
+ value must be strdup'ed in THD::init() and freed in
+ plugin_thdvar_cleanup(), see e.g. redirect_url. TODO: it should be
+ done automatically when we'll have more session string variables to
+ justify it. Maybe some kind of a loop over all variables, like
+ sys_var_end() in set_var.cc?
*/
-class Sys_var_charptr_base: public sys_var
+class Sys_var_charptr: public sys_var
{
+ const size_t max_length= 2000;
public:
- Sys_var_charptr_base(const char *name_arg,
+ Sys_var_charptr(const char *name_arg,
const char *comment, int flag_args, ptrdiff_t off, size_t size,
CMD_LINE getopt,
const char *def_val, PolyLock *lock=0,
@@ -517,8 +524,9 @@ public:
*/
option.var_type|= (flags & ALLOCATED) ? GET_STR_ALLOC : GET_STR;
global_var(const char*)= def_val;
+ SYSVAR_ASSERT(size == sizeof(char *));
}
- void cleanup()
+ void cleanup() override
{
if (flags & ALLOCATED)
{
@@ -556,17 +564,26 @@ public:
return false;
}
- bool do_check(THD *thd, set_var *var)
- { return do_string_check(thd, var, charset(thd)); }
- bool session_update(THD *thd, set_var *var)= 0;
- char *global_update_prepare(THD *thd, set_var *var)
+ bool do_check(THD *thd, set_var *var) override
+ {
+ if (do_string_check(thd, var, charset(thd)))
+ return true;
+ if (var->save_result.string_value.length > max_length)
+ {
+ my_error(ER_WRONG_STRING_LENGTH, MYF(0), var->save_result.string_value.str,
+ name.str, (int) max_length);
+ return true;
+ }
+ return false;
+ }
+ char *update_prepare(set_var *var, myf my_flags)
{
char *new_val, *ptr= var->save_result.string_value.str;
size_t len=var->save_result.string_value.length;
if (ptr)
{
new_val= (char*)my_memdup(key_memory_Sys_var_charptr_value,
- ptr, len+1, MYF(MY_WME));
+ ptr, len+1, my_flags);
if (!new_val) return 0;
new_val[len]=0;
}
@@ -574,6 +591,13 @@ public:
new_val= 0;
return new_val;
}
+ bool session_update(THD *thd, set_var *var) override
+ {
+ char *new_val= update_prepare(var, MYF(MY_WME | MY_THREAD_SPECIFIC));
+ my_free(session_var(thd, char*));
+ session_var(thd, char*)= new_val;
+ return (new_val == 0 && var->save_result.string_value.str != 0);
+ }
void global_update_finish(char *new_val)
{
if (flags & ALLOCATED)
@@ -581,14 +605,19 @@ public:
flags|= ALLOCATED;
global_var(char*)= new_val;
}
- bool global_update(THD *thd, set_var *var)
+ bool global_update(THD *thd, set_var *var) override
{
- char *new_val= global_update_prepare(thd, var);
+ char *new_val= update_prepare(var, MYF(MY_WME));
global_update_finish(new_val);
return (new_val == 0 && var->save_result.string_value.str != 0);
}
- void session_save_default(THD *thd, set_var *var)= 0;
- void global_save_default(THD *thd, set_var *var)
+ void session_save_default(THD *, set_var *var) override
+ {
+ var->save_result.string_value.str= global_var(char*);
+ var->save_result.string_value.length=
+ strlen(var->save_result.string_value.str);
+ }
+ void global_save_default(THD *, set_var *var) override
{
char *ptr= (char*)(intptr)option.def_value;
var->save_result.string_value.str= ptr;
@@ -596,35 +625,6 @@ public:
}
};
-class Sys_var_charptr: public Sys_var_charptr_base
-{
-public:
- Sys_var_charptr(const char *name_arg,
- const char *comment, int flag_args, ptrdiff_t off, size_t size,
- CMD_LINE getopt,
- const char *def_val, PolyLock *lock=0,
- enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
- on_check_function on_check_func=0,
- on_update_function on_update_func=0,
- const char *substitute=0) :
- Sys_var_charptr_base(name_arg, comment, flag_args, off, size, getopt,
- def_val, lock, binlog_status_arg,
- on_check_func, on_update_func, substitute)
- {
- SYSVAR_ASSERT(scope() == GLOBAL);
- SYSVAR_ASSERT(size == sizeof(char *));
- }
-
- bool session_update(THD *thd, set_var *var)
- {
- DBUG_ASSERT(FALSE);
- return true;
- }
- void session_save_default(THD *thd, set_var *var)
- { DBUG_ASSERT(FALSE); }
-};
-
-
class Sys_var_charptr_fscs: public Sys_var_charptr
{
using Sys_var_charptr::Sys_var_charptr;
@@ -635,23 +635,22 @@ public:
}
};
-
#ifndef EMBEDDED_LIBRARY
-class Sys_var_sesvartrack: public Sys_var_charptr_base
+class Sys_var_sesvartrack: public Sys_var_charptr
{
public:
Sys_var_sesvartrack(const char *name_arg,
const char *comment,
CMD_LINE getopt,
const char *def_val, PolyLock *lock= 0) :
- Sys_var_charptr_base(name_arg, comment,
- SESSION_VAR(session_track_system_variables),
- getopt, def_val, lock,
- VARIABLE_NOT_IN_BINLOG, 0, 0, 0)
+ Sys_var_charptr(name_arg, comment,
+ SESSION_VAR(session_track_system_variables),
+ getopt, def_val, lock,
+ VARIABLE_NOT_IN_BINLOG, 0, 0, 0)
{}
bool do_check(THD *thd, set_var *var)
{
- if (Sys_var_charptr_base::do_check(thd, var) ||
+ if (Sys_var_charptr::do_string_check(thd, var, charset(thd)) ||
sysvartrack_validate_value(thd, var->save_result.string_value.str,
var->save_result.string_value.length))
return TRUE;
@@ -659,7 +658,7 @@ public:
}
bool global_update(THD *thd, set_var *var)
{
- char *new_val= global_update_prepare(thd, var);
+ char *new_val= update_prepare(var, MYF(MY_WME));
if (new_val)
{
if (sysvartrack_global_update(thd, new_val,
@@ -799,6 +798,56 @@ protected:
bool set_filter_value(const char *value, Master_info *mi);
};
+class Sys_var_binlog_filter: public sys_var
+{
+private:
+ int opt_id;
+ privilege_t m_access_global;
+
+public:
+ Sys_var_binlog_filter(const char *name, int getopt_id, const char *comment,
+ privilege_t access_global)
+ : sys_var(&all_sys_vars, name, comment, sys_var::READONLY+sys_var::GLOBAL, 0, NO_GETOPT,
+ NO_ARG, SHOW_CHAR, 0, NULL, VARIABLE_NOT_IN_BINLOG,
+ NULL, NULL, NULL), opt_id(getopt_id),
+ m_access_global(access_global)
+ {
+ option.var_type|= GET_STR;
+ }
+
+ bool do_check(THD *thd, set_var *var) override
+ {
+ DBUG_ASSERT(FALSE);
+ return true;
+ }
+ void session_save_default(THD *, set_var *) override
+ { DBUG_ASSERT(FALSE); }
+
+ void global_save_default(THD *thd, set_var *var) override
+ { DBUG_ASSERT(FALSE); }
+
+ bool session_update(THD *, set_var *) override
+ {
+ DBUG_ASSERT(FALSE);
+ return true;
+ }
+
+ bool global_update(THD *thd, set_var *var) override
+ {
+ DBUG_ASSERT(FALSE);
+ return true;
+ }
+
+ bool on_check_access_global(THD *thd) const override
+ {
+ return check_global_access(thd, m_access_global);
+ }
+
+ protected:
+ const uchar *global_value_ptr(THD *thd, const LEX_CSTRING *base)
+ const override;
+};
+
/**
The class for string variables. Useful for strings that aren't necessarily
\0-terminated. Otherwise the same as Sys_var_charptr.
@@ -806,7 +855,19 @@ protected:
Backing store: LEX_CSTRING
@note
- Behaves exactly as Sys_var_charptr, only the backing store is different.
+ Behaves exactly as Sys_var_charptr, only the backing store is
+ different.
+
+ Note that for global variables handle_options() only sets the
+ pointer, whereas the length must be updated manually to match, which
+ is done in mysqld.cc. See e.g. opt_init_connect. TODO: it should be
+ done automatically when we'll have more Sys_var_lexstring variables
+ to justify it. Maybe some kind of a loop over all variables, like
+ sys_var_end() in set_var.cc?
+
+ Note that as a subclass of Sys_var_charptr, the memory management
+ for session Sys_var_lexstring's is manual too, see notes of
+ Sys_var_charptr and for example default_master_connection.
*/
class Sys_var_lexstring: public Sys_var_charptr
{
@@ -834,88 +895,15 @@ public:
global_var(LEX_CSTRING).length= var->save_result.string_value.length;
return false;
}
-};
-
-
-/*
- A LEX_CSTRING stored only in thd->variables
- Only to be used for small buffers
-*/
-
-class Sys_var_session_lexstring: public sys_var
-{
- size_t max_length;
-public:
- Sys_var_session_lexstring(const char *name_arg,
- const char *comment, int flag_args,
- ptrdiff_t off, size_t size, CMD_LINE getopt,
- const char *def_val, size_t max_length_arg,
- on_check_function on_check_func=0,
- on_update_function on_update_func=0)
- : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
- getopt.arg_type, SHOW_CHAR, (intptr)def_val,
- 0, VARIABLE_NOT_IN_BINLOG, on_check_func, on_update_func,
- 0),max_length(max_length_arg)
- {
- option.var_type|= GET_STR;
- SYSVAR_ASSERT(scope() == ONLY_SESSION)
- *const_cast<SHOW_TYPE*>(&show_val_type)= SHOW_LEX_STRING;
- }
- bool do_check(THD *thd, set_var *var)
- {
- char buff[STRING_BUFFER_USUAL_SIZE];
- String str(buff, sizeof(buff), system_charset_info), *res;
-
- if (!(res=var->value->val_str(&str)))
- {
- var->save_result.string_value.str= 0; /* NULL */
- var->save_result.string_value.length= 0;
- }
- else
- {
- if (res->length() > max_length)
- {
- my_error(ER_WRONG_STRING_LENGTH, MYF(0),
- res->ptr(), name.str, (int) max_length);
- return true;
- }
- var->save_result.string_value.str= thd->strmake(res->ptr(),
- res->length());
- var->save_result.string_value.length= res->length();
- }
- return false;
- }
bool session_update(THD *thd, set_var *var)
{
- LEX_CSTRING *tmp= &session_var(thd, LEX_CSTRING);
- tmp->length= var->save_result.string_value.length;
- /* Store as \0 terminated string (just to be safe) */
- strmake((char*) tmp->str, var->save_result.string_value.str, tmp->length);
- return false;
- }
- bool global_update(THD *thd, set_var *var)
- {
- DBUG_ASSERT(FALSE);
+ if (Sys_var_charptr::session_update(thd, var))
+ return true;
+ session_var(thd, LEX_CSTRING).length= var->save_result.string_value.length;
return false;
}
- void session_save_default(THD *thd, set_var *var)
- {
- char *ptr= (char*)(intptr)option.def_value;
- var->save_result.string_value.str= ptr;
- var->save_result.string_value.length= strlen(ptr);
- }
- void global_save_default(THD *thd, set_var *var)
- {
- DBUG_ASSERT(FALSE);
- }
- const uchar *global_value_ptr(THD *thd, const LEX_CSTRING *base) const
- {
- DBUG_ASSERT(FALSE);
- return NULL;
- }
};
-
#ifndef DBUG_OFF
/**
@@session.debug_dbug and @@global.debug_dbug variables.
@@ -1041,7 +1029,7 @@ public:
/* If no basename, assume it's for the key cache named 'default' */
if (!base_name->length)
- base_name= &default_key_cache_base;
+ base_name= &default_base;
key_cache= get_key_cache(base_name);
@@ -1191,7 +1179,6 @@ public:
option.var_type|= GET_DOUBLE;
option.min_value= (longlong) getopt_double2ulonglong(min_val);
option.max_value= (longlong) getopt_double2ulonglong(max_val);
- global_var(double)= (double)option.def_value;
SYSVAR_ASSERT(min_val < max_val);
SYSVAR_ASSERT(min_val <= def_val);
SYSVAR_ASSERT(max_val >= def_val);
@@ -1221,6 +1208,139 @@ public:
{ var->save_result.double_value= getopt_ulonglong2double(option.def_value); }
};
+
+/*
+ Optimizer costs
+ Stored as cost factor (1 cost = 1 ms).
+ Given and displayed as microsconds (as most values are very small)
+*/
+
+class Sys_var_optimizer_cost: public Sys_var_double
+{
+public:
+ double cost_adjust;
+ Sys_var_optimizer_cost(const char *name_arg,
+ const char *comment, int flag_args, ptrdiff_t off, size_t size,
+ CMD_LINE getopt,
+ double min_val, double max_val, double def_val,
+ ulong arg_cost_adjust, PolyLock *lock=0,
+ enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
+ on_check_function on_check_func=0,
+ on_update_function on_update_func=0,
+ const char *substitute=0)
+ :Sys_var_double(name_arg, comment, flag_args, off, size, getopt,
+ min_val, max_val, def_val * arg_cost_adjust, lock,
+ binlog_status_arg,
+ on_check_func,
+ on_update_func,
+ substitute)
+ {
+ cost_adjust= (double) arg_cost_adjust;
+ }
+ bool session_update(THD *thd, set_var *var)
+ {
+ session_var(thd, double)= var->save_result.double_value/cost_adjust;
+ return false;
+ }
+ bool global_update(THD *thd, set_var *var)
+ {
+ global_var(double)= var->save_result.double_value/cost_adjust;
+ return false;
+ }
+ void session_save_default(THD *thd, set_var *var)
+ { var->save_result.double_value= global_var(double) * cost_adjust; }
+
+ void global_save_default(THD *thd, set_var *var)
+ {
+ var->save_result.double_value= getopt_ulonglong2double(option.def_value);
+ }
+ const uchar *tmp_ptr(THD *thd) const
+ {
+ if (thd->sys_var_tmp.double_value > 0)
+ thd->sys_var_tmp.double_value*= cost_adjust;
+ return (uchar*) &thd->sys_var_tmp.double_value;
+ }
+ const uchar *session_value_ptr(THD *thd, const LEX_CSTRING *base) const
+ {
+ thd->sys_var_tmp.double_value= session_var(thd, double);
+ return tmp_ptr(thd);
+ }
+ const uchar *global_value_ptr(THD *thd, const LEX_CSTRING *base) const
+ {
+ thd->sys_var_tmp.double_value= global_var(double);
+ return tmp_ptr(thd);
+ }
+};
+
+
+/*
+ The class for optimizer costs with structured names, unique for each engine.
+ Used as 'engine.variable_name'
+
+ Class specific constructor arguments:
+ everything derived from Sys_var_optimizer_cost
+
+ Backing store: double
+
+ @note these variables can be only GLOBAL
+*/
+
+#define COST_VAR(X) GLOBAL_VAR(default_optimizer_costs.X)
+#define cost_var_ptr(KC, OFF) (((uchar*)(KC))+(OFF))
+#define cost_var(KC, OFF) (*(double*)cost_var_ptr(KC, OFF))
+
+class Sys_var_engine_optimizer_cost: public Sys_var_optimizer_cost
+{
+ public:
+ Sys_var_engine_optimizer_cost(const char *name_arg,
+ const char *comment, int flag_args, ptrdiff_t off, size_t size,
+ CMD_LINE getopt,
+ double min_val, double max_val, double def_val,
+ long cost_adjust, PolyLock *lock= 0,
+ const char *substitute=0)
+ : Sys_var_optimizer_cost(name_arg, comment, flag_args, off, size,
+ getopt, min_val, max_val, def_val, cost_adjust,
+ lock, VARIABLE_NOT_IN_BINLOG, 0,
+ 0, substitute)
+ {
+ option.var_type|= GET_ASK_ADDR;
+ option.value= (uchar**)1; // crash me, please
+ // fix an offset from global_system_variables to be an offset in OPTIMIZER_COSTS
+ offset= global_var_ptr() - (uchar*) &default_optimizer_costs;
+ SYSVAR_ASSERT(scope() == GLOBAL);
+ }
+ bool global_update(THD *thd, set_var *var)
+ {
+ double new_value= var->save_result.double_value;
+ LEX_CSTRING *base_name= &var->base;
+ OPTIMIZER_COSTS *optimizer_costs;
+
+ /* If no basename, assume it's for the default costs */
+ if (!base_name->length)
+ base_name= &default_base;
+
+ mysql_mutex_lock(&LOCK_optimizer_costs);
+ if (!(optimizer_costs= get_or_create_optimizer_costs(base_name->str,
+ base_name->length)))
+ {
+ mysql_mutex_unlock(&LOCK_optimizer_costs);
+ return true;
+ }
+ cost_var(optimizer_costs, offset)= new_value / cost_adjust;
+ mysql_mutex_unlock(&LOCK_optimizer_costs);
+ return 0;
+ }
+ const uchar *global_value_ptr(THD *thd, const LEX_CSTRING *base) const
+ {
+ OPTIMIZER_COSTS *optimizer_costs= get_optimizer_costs(base);
+ if (!optimizer_costs)
+ optimizer_costs= &default_optimizer_costs;
+ thd->sys_var_tmp.double_value= cost_var(optimizer_costs, offset);
+ return tmp_ptr(thd);
+ }
+};
+
+
/**
The class for the @max_user_connections.
It's derived from Sys_var_uint, but non-standard session value
@@ -2271,9 +2391,12 @@ public:
CMD_LINE getopt,
const char *values[], uint def_val, PolyLock *lock,
enum binlog_status_enum binlog_status_arg,
- on_check_function on_check_func)
+ on_check_function on_check_func,
+ on_update_function on_update_func=0,
+ const char *substitute=0)
:Sys_var_enum(name_arg, comment, flag_args, off, size, getopt,
- values, def_val, lock, binlog_status_arg, on_check_func)
+ values, def_val, lock, binlog_status_arg, on_check_func,
+ on_update_func, substitute)
{}
bool session_update(THD *thd, set_var *var)
{
@@ -2317,7 +2440,7 @@ public:
/**
- Class representing the tx_read_only system variable for setting
+ Class representing the transaction_read_only system variable for setting
default transaction access mode.
Note that there is a special syntax - SET TRANSACTION READ ONLY
@@ -2332,9 +2455,12 @@ public:
ptrdiff_t off, size_t size, CMD_LINE getopt,
my_bool def_val, PolyLock *lock,
enum binlog_status_enum binlog_status_arg,
- on_check_function on_check_func)
+ on_check_function on_check_func,
+ on_update_function on_update_func=0,
+ const char *substitute=0)
:Sys_var_mybool(name_arg, comment, flag_args, off, size, getopt,
- def_val, lock, binlog_status_arg, on_check_func)
+ def_val, lock, binlog_status_arg, on_check_func,
+ on_update_func, substitute)
{}
virtual bool session_update(THD *thd, set_var *var);
};
@@ -2804,3 +2930,104 @@ public:
virtual const uchar *global_value_ptr(THD *thd, const LEX_CSTRING *base) const
{ return value_ptr(thd, global_var(vers_asof_timestamp_t)); }
};
+
+
+class Sys_var_charset_collation_map: public sys_var
+{
+public:
+ Sys_var_charset_collation_map(const char *name_arg, const char *comment,
+ int flag_args, ptrdiff_t off, size_t size,
+ CMD_LINE getopt,
+ enum binlog_status_enum binlog_status_arg)
+ :sys_var(&all_sys_vars, name_arg, comment,
+ flag_args, off, getopt.id, getopt.arg_type,
+ SHOW_CHAR,
+ DEFAULT(0), nullptr, binlog_status_arg,
+ nullptr, nullptr, nullptr)
+ {
+ option.var_type|= GET_STR;
+ }
+
+private:
+
+ static bool charset_collation_map_from_item(Charset_collation_map_st *map,
+ Item *item,
+ myf utf8_flag)
+ {
+ String *value, buffer;
+ if (!(value= item->val_str_ascii(&buffer)))
+ return true;
+ return map->from_text(value->to_lex_cstring(), utf8_flag);
+ }
+
+ static const uchar *make_value_ptr(THD *thd,
+ const Charset_collation_map_st &map)
+ {
+ size_t nbytes= map.text_format_nbytes_needed();
+ char *buf= (char *) thd->alloc(nbytes + 1);
+ size_t length= map.print(buf, nbytes);
+ buf[length]= '\0';
+ return (uchar *) buf;
+ }
+
+private:
+
+ bool do_check(THD *thd, set_var *var) override
+ {
+ Charset_collation_map_st *map= (Charset_collation_map_st*)
+ thd->alloc(sizeof(Charset_collation_map_st));
+ if (!map || charset_collation_map_from_item(map, var->value,
+ thd->get_utf8_flag()))
+ return true;
+ var->save_result.ptr= map;
+ return false;
+ }
+
+ void session_save_default(THD *thd, set_var *var) override
+ {
+ thd->variables.character_set_collations.set(
+ global_system_variables.character_set_collations, 1);
+ }
+
+ void global_save_default(THD *thd, set_var *var) override
+ {
+ global_system_variables.character_set_collations.init();
+ }
+
+ bool session_update(THD *thd, set_var *var) override
+ {
+ if (!var->value)
+ {
+ session_save_default(thd, var);
+ return false;
+ }
+ thd->variables.character_set_collations.
+ set(*(Charset_collation_map_st*) var->save_result.ptr, 1);
+ return false;
+ }
+
+ bool global_update(THD *thd, set_var *var) override
+ {
+ if (!var->value)
+ {
+ global_save_default(thd, var);
+ return false;
+ }
+ global_system_variables.character_set_collations=
+ *(Charset_collation_map_st*) var->save_result.ptr;
+ return false;
+ }
+
+ const uchar *
+ session_value_ptr(THD *thd, const LEX_CSTRING *base) const override
+ {
+ return make_value_ptr(thd, thd->variables.character_set_collations);
+ }
+
+ const uchar *
+ global_value_ptr(THD *thd, const LEX_CSTRING *base) const override
+ {
+ return make_value_ptr(thd, global_system_variables.
+ character_set_collations);
+ }
+};
diff --git a/sql/table.cc b/sql/table.cc
index 3f4b529f..c42f7443 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -46,6 +46,10 @@
#include "sql_show.h"
#include "opt_trace.h"
#include "sql_db.h" // get_default_db_collation
+#include "sql_update.h" // class Sql_cmd_update
+#include "sql_delete.h" // class Sql_cmd_delete
+
+
#ifdef WITH_WSREP
#include "wsrep_schema.h"
#endif
@@ -366,7 +370,7 @@ TABLE_SHARE *alloc_table_share(const char *db, const char *table_name,
strmov(path_buff, path);
share->normalized_path.str= share->path.str;
share->normalized_path.length= path_length;
- share->table_category= get_table_category(& share->db, & share->table_name);
+ share->table_category= get_table_category(&share->db, &share->table_name);
share->open_errno= ENOENT;
/* The following will be updated in open_table_from_share */
share->can_do_row_logging= 1;
@@ -516,6 +520,14 @@ void TABLE_SHARE::destroy()
}
}
+#ifdef HAVE_REPLICATION
+ if (online_alter_binlog)
+ {
+ online_alter_binlog->release();
+ online_alter_binlog= NULL;
+ }
+#endif
+
#ifdef WITH_PARTITION_STORAGE_ENGINE
plugin_unlock(NULL, default_part_plugin);
#endif /* WITH_PARTITION_STORAGE_ENGINE */
@@ -766,10 +778,10 @@ static bool create_key_infos(const uchar *strpos, const uchar *frm_image_end,
LEX_STRING *keynames)
{
uint i, j, n_length;
+ uint primary_key_parts= 0;
KEY_PART_INFO *key_part= NULL;
ulong *rec_per_key= NULL;
- KEY_PART_INFO *first_key_part= NULL;
- uint first_key_parts= 0;
+ DBUG_ASSERT(keyinfo == first_keyinfo);
if (!keys)
{
@@ -778,15 +790,15 @@ static bool create_key_infos(const uchar *strpos, const uchar *frm_image_end,
bzero((char*) keyinfo, len);
key_part= reinterpret_cast<KEY_PART_INFO*> (keyinfo);
}
+ bzero((char*)first_keyinfo, sizeof(*first_keyinfo));
/*
- If share->use_ext_keys is set to TRUE we assume that any key
- can be extended by the components of the primary key whose
- definition is read first from the frm file.
- For each key only those fields of the assumed primary key are
- added that are not included in the proper key definition.
- If after all it turns out that there is no primary key the
- added components are removed from each key.
+ If share->use_ext_keys is set to TRUE we assume that any not
+ primary key, can be extended by the components of the primary key
+ whose definition is read first from the frm file.
+ This code only allocates space for the extend key information as
+ we at this point don't know if there is a primary key or not.
+ The extend key information is added in init_from_binary_frm_image().
When in the future we support others schemes of extending of
secondary keys with components of the primary key we'll have
@@ -819,26 +831,31 @@ static bool create_key_infos(const uchar *strpos, const uchar *frm_image_end,
if (i == 0)
{
- (*ext_key_parts)+= (share->use_ext_keys ? first_keyinfo->user_defined_key_parts*(keys-1) : 0);
+ /*
+ Allocate space for keys. We have to do it there as we need to know
+ the number of used_defined_key_parts for the first key when doing
+ this.
+ */
+ primary_key_parts= first_keyinfo->user_defined_key_parts;
+ (*ext_key_parts)+= (share->use_ext_keys ?
+ primary_key_parts*(keys-1) :
+ 0);
n_length=keys * sizeof(KEY) + *ext_key_parts * sizeof(KEY_PART_INFO);
if (!(keyinfo= (KEY*) alloc_root(&share->mem_root,
n_length + len)))
return 1;
- bzero((char*) keyinfo,n_length);
share->key_info= keyinfo;
+
+ /* Copy first keyinfo, read above */
+ memcpy((char*) keyinfo, (char*) first_keyinfo, sizeof(*keyinfo));
+ bzero(((char*) keyinfo) + sizeof(*keyinfo), n_length - sizeof(*keyinfo));
+
key_part= reinterpret_cast<KEY_PART_INFO*> (keyinfo + keys);
if (!(rec_per_key= (ulong*) alloc_root(&share->mem_root,
sizeof(ulong) * *ext_key_parts)))
return 1;
- first_key_part= key_part;
- first_key_parts= first_keyinfo->user_defined_key_parts;
- keyinfo->flags= first_keyinfo->flags;
- keyinfo->key_length= first_keyinfo->key_length;
- keyinfo->user_defined_key_parts= first_keyinfo->user_defined_key_parts;
- keyinfo->algorithm= first_keyinfo->algorithm;
- if (new_frm_ver >= 3)
- keyinfo->block_size= first_keyinfo->block_size;
+ bzero((char*) rec_per_key, sizeof(*rec_per_key) * *ext_key_parts);
}
keyinfo->key_part= key_part;
@@ -848,7 +865,7 @@ static bool create_key_infos(const uchar *strpos, const uchar *frm_image_end,
if (strpos + (new_frm_ver >= 1 ? 9 : 7) >= frm_image_end)
return 1;
if (!(keyinfo->algorithm == HA_KEY_ALG_LONG_HASH))
- *rec_per_key++=0;
+ rec_per_key++;
key_part->fieldnr= (uint16) (uint2korr(strpos) & FIELD_NR_MASK);
key_part->offset= (uint) uint2korr(strpos+2)-1;
key_part->key_type= (uint) uint2korr(strpos+5);
@@ -872,48 +889,33 @@ static bool create_key_infos(const uchar *strpos, const uchar *frm_image_end,
}
key_part->store_length=key_part->length;
}
+
+ keyinfo->ext_key_parts= keyinfo->user_defined_key_parts;
+ keyinfo->ext_key_flags= keyinfo->flags;
+ keyinfo->ext_key_part_map= 0;
+
if (keyinfo->algorithm == HA_KEY_ALG_LONG_HASH)
{
+ /*
+ We should not increase keyinfo->ext_key_parts here as it will
+ later be changed to 1 as the engine will only see the generated hash
+ key.
+ */
keyinfo->key_length= HA_HASH_KEY_LENGTH_WITHOUT_NULL;
- key_part++; // reserved for the hash value
- *rec_per_key++=0;
+ key_part++; // This will be set to point to the hash key
+ rec_per_key++; // Only one rec_per_key needed for the hash
+ share->ext_key_parts++;
}
- /*
- Add primary key to end of extended keys for non unique keys for
- storage engines that supports it.
- */
- keyinfo->ext_key_parts= keyinfo->user_defined_key_parts;
- keyinfo->ext_key_flags= keyinfo->flags;
- keyinfo->ext_key_part_map= 0;
- if (share->use_ext_keys && i && !(keyinfo->flags & HA_NOSAME))
+ if (i && share->use_ext_keys && !((keyinfo->flags & HA_NOSAME)))
{
- for (j= 0;
- j < first_key_parts && keyinfo->ext_key_parts < MAX_REF_PARTS;
- j++)
- {
- uint key_parts= keyinfo->user_defined_key_parts;
- KEY_PART_INFO* curr_key_part= keyinfo->key_part;
- KEY_PART_INFO* curr_key_part_end= curr_key_part+key_parts;
- for ( ; curr_key_part < curr_key_part_end; curr_key_part++)
- {
- if (curr_key_part->fieldnr == first_key_part[j].fieldnr)
- break;
- }
- if (curr_key_part == curr_key_part_end)
- {
- *key_part++= first_key_part[j];
- *rec_per_key++= 0;
- keyinfo->ext_key_parts++;
- keyinfo->ext_key_part_map|= 1 << j;
- }
- }
- if (j == first_key_parts)
- keyinfo->ext_key_flags= keyinfo->flags | HA_EXT_NOSAME;
+ /* Reserve place for extended key parts */
+ key_part+= primary_key_parts;
+ rec_per_key+= primary_key_parts;
+ share->ext_key_parts+= primary_key_parts; // For copy_keys_from_share()
}
- if (keyinfo->algorithm == HA_KEY_ALG_LONG_HASH)
- share->ext_key_parts++;
share->ext_key_parts+= keyinfo->ext_key_parts;
+ DBUG_ASSERT(share->ext_key_parts <= *ext_key_parts);
}
keynames->str= (char*) key_part;
keynames->length= strnmov(keynames->str, (char *) strpos,
@@ -1202,7 +1204,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
open_table_error(table->s, OPEN_FRM_CORRUPTED, 1);
goto end;
}
- type= (*field_ptr)->vcol_info->stored_in_db
+ type= (*field_ptr)->vcol_info->is_stored()
? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL;
expr_length= uint2korr(pos+1);
if (table->s->mysql_version > 50700 && table->s->mysql_version < 100000)
@@ -1278,10 +1280,10 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
for (key_index= 0; key_index < table->s->keys; key_index++)
{
key=table->key_info + key_index;
- parts= key->user_defined_key_parts;
+ parts= key->user_defined_key_parts;
if (key->key_part[parts].fieldnr == field->field_index + 1)
break;
- }
+ }
if (!key || key->algorithm != HA_KEY_ALG_LONG_HASH)
goto end;
KEY_PART_INFO *keypart;
@@ -1311,7 +1313,13 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
field->vcol_info->set_vcol_type(VCOL_USING_HASH);
if (v->fix_and_check_expr(thd, table))
goto end;
- key->user_defined_key_parts= key->ext_key_parts= key->usable_key_parts= 1;
+ /*
+ The hash key used by unique consist of one key_part.
+ It is stored in key_parts after the used defined parts.
+ The engine will only see the hash.
+ */
+ key->user_defined_key_parts= key->usable_key_parts=
+ key->ext_key_parts= 1;
key->key_part+= parts;
if (key->flags & HA_NULL_PART_KEY)
@@ -2053,7 +2061,12 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
next_chunk+= str_db_type_length + 2;
}
- share->set_use_ext_keys_flag(plugin_hton(se_plugin)->flags & HTON_SUPPORTS_EXTENDED_KEYS);
+ /*
+ Check if engine supports extended keys. This is used by
+ create_key_infos() to allocate room for extended keys
+ */
+ share->set_use_ext_keys_flag(plugin_hton(se_plugin)->flags &
+ HTON_SUPPORTS_EXTENDED_KEYS);
if (create_key_infos(disk_buff + 6, frm_image_end, keys, keyinfo,
new_frm_ver, &ext_key_parts,
@@ -2308,7 +2321,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
share->keynames.count != keys))
goto err;
- /* Allocate handler */
+ /* Allocate handler */
if (!(handler_file= get_new_handler(share, thd->mem_root,
plugin_hton(se_plugin))))
goto err;
@@ -2492,7 +2505,6 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
else if ((uint)vcol_screen_pos[0] != 1)
goto err;
bool stored= vcol_screen_pos[2] & 1;
- vcol_info->stored_in_db= stored;
vcol_info->set_vcol_type(stored ? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL);
uint vcol_expr_length= vcol_info_length -
(uint)(FRM_VCOL_OLD_HEADER_SIZE(opt_interval_id));
@@ -2573,7 +2585,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
uint vcol_info_length= uint2korr(vcol_screen_pos + 1);
if (!vcol_info_length) // Expect non-empty expression
goto err;
- vcol_info->stored_in_db= vcol_screen_pos[3];
+ vcol_info->set_vcol_type(vcol_screen_pos[3] ? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL);
vcol_info->utf8= 0;
vcol_screen_pos+= vcol_info_length + MYSQL57_GCOL_HEADER_SIZE;;
share->virtual_fields++;
@@ -2673,7 +2685,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
}
#endif
- if (mysql57_null_bits && vcol_info && !vcol_info->stored_in_db)
+ if (mysql57_null_bits && vcol_info && !vcol_info->is_stored())
{
swap_variables(uchar*, null_pos, mysql57_vcol_null_pos);
swap_variables(uint, null_bit_pos, mysql57_vcol_null_bit_pos);
@@ -2730,7 +2742,6 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
{
reg_field->default_value= new (&share->mem_root) Virtual_column_info();
reg_field->default_value->set_vcol_type(VCOL_DEFAULT);
- reg_field->default_value->stored_in_db= 1;
share->default_expressions++;
}
@@ -2769,7 +2780,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
if (vcol_info)
{
vcol_info->name= reg_field->field_name;
- if (mysql57_null_bits && !vcol_info->stored_in_db)
+ if (mysql57_null_bits && !vcol_info->is_stored())
{
/* MySQL 5.7 has null bits last */
swap_variables(uchar*, null_pos, mysql57_vcol_null_pos);
@@ -2811,6 +2822,8 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
DBUG_ASSERT((null_pos + (null_bit_pos + 7) / 8) <= share->field[0]->ptr);
}
+ share->primary_key= MAX_KEY;
+
/* Fix key->name and key_part->field */
if (key_parts)
{
@@ -2831,7 +2844,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
hash_keypart->type= HA_KEYTYPE_ULONGLONG;
hash_keypart->key_part_flag= 0;
hash_keypart->key_type= 32834;
- /* Last n fields are unique_index_hash fields*/
+ /* Last n fields are unique_index_hash fields */
hash_keypart->offset= offset;
hash_keypart->fieldnr= hash_field_used_no + 1;
hash_field= share->field[hash_field_used_no];
@@ -2845,7 +2858,6 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
offset+= HA_HASH_FIELD_LENGTH;
}
}
- uint add_first_key_parts= 0;
longlong ha_option= handler_file->ha_table_flags();
keyinfo= share->key_info;
uint primary_key= my_strcasecmp(system_charset_info,
@@ -2915,33 +2927,85 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
goto err;
}
+ uint add_first_key_parts= 0;
if (share->use_ext_keys)
{
if (primary_key >= MAX_KEY)
- {
- add_first_key_parts= 0;
- share->set_use_ext_keys_flag(FALSE);
- }
+ share->set_use_ext_keys_flag(false);
else
{
- add_first_key_parts= first_keyinfo.user_defined_key_parts;
- /*
- Do not add components of the primary key starting from
- the major component defined over the beginning of a field.
- */
- for (i= 0; i < first_keyinfo.user_defined_key_parts; i++)
- {
+ /* Add primary key to end of all non unique keys */
+
+ KEY *curr_keyinfo= keyinfo, *keyinfo_end= keyinfo+ keys;
+ KEY_PART_INFO *first_key_part= keyinfo->key_part;
+ uint first_key_parts= keyinfo->user_defined_key_parts;
+
+ /*
+ We are skipping the first key (primary key) as it cannot be
+ extended
+ */
+ while (++curr_keyinfo < keyinfo_end)
+ {
+ uint j;
+ if (!(curr_keyinfo->flags & HA_NOSAME))
+ {
+ KEY_PART_INFO *key_part= (curr_keyinfo->key_part +
+ curr_keyinfo->user_defined_key_parts);
+
+ /* Extend key with primary key parts */
+ for (j= 0;
+ j < first_key_parts &&
+ curr_keyinfo->ext_key_parts < MAX_REF_PARTS;
+ j++)
+ {
+ uint key_parts= curr_keyinfo->user_defined_key_parts;
+ KEY_PART_INFO *curr_key_part= curr_keyinfo->key_part;
+ KEY_PART_INFO *curr_key_part_end= curr_key_part+key_parts;
+
+ for ( ; curr_key_part < curr_key_part_end; curr_key_part++)
+ {
+ if (curr_key_part->fieldnr == first_key_part[j].fieldnr)
+ break;
+ }
+ if (curr_key_part == curr_key_part_end)
+ {
+ /* Add primary key part not part of the current index */
+ *key_part++= first_key_part[j];
+ curr_keyinfo->ext_key_parts++;
+ curr_keyinfo->ext_key_part_map|= 1 << j;
+ }
+ }
+ if (j == first_key_parts)
+ {
+ /* Full primary key added to secondary keys makes it unique */
+ curr_keyinfo->ext_key_flags= curr_keyinfo->flags | HA_EXT_NOSAME;
+ }
+ }
+ }
+ add_first_key_parts= keyinfo->user_defined_key_parts;
+
+ /*
+ If a primary key part is using a partial key, don't use it or any key part after
+ it.
+ */
+ for (i= 0; i < first_key_parts; i++)
+ {
uint fieldnr= keyinfo[0].key_part[i].fieldnr;
if (share->field[fieldnr-1]->key_length() !=
keyinfo[0].key_part[i].length)
- {
+ {
add_first_key_parts= i;
break;
}
}
- }
+ }
}
+ /* Primary key must be set early as engine may use it in index_flag() */
+ share->primary_key= (primary_key < MAX_KEY &&
+ share->keys_in_use.is_set(primary_key) ?
+ primary_key : MAX_KEY);
+
key_first_info= keyinfo;
for (uint key=0 ; key < keys ; key++,keyinfo++)
{
@@ -3098,12 +3162,17 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
if (handler_file->index_flags(key, i, 0) & HA_KEYREAD_ONLY)
{
share->keys_for_keyread.set_bit(key);
+ /*
+ part_of_key is used to check if we can use the field
+ as part of covering key (which implies HA_KEYREAD_ONLY).
+ */
field->part_of_key.set_bit(key);
- if (i < keyinfo->user_defined_key_parts)
- field->part_of_key_not_clustered.set_bit(key);
}
if (handler_file->index_flags(key, i, 1) & HA_READ_ORDER)
field->part_of_sortkey.set_bit(key);
+
+ if (i < keyinfo->user_defined_key_parts)
+ field->part_of_key_not_clustered.set_bit(key);
}
if (!(key_part->key_part_flag & HA_REVERSE_SORT) &&
usable_parts == i)
@@ -3187,7 +3256,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
if (primary_key < MAX_KEY &&
(share->keys_in_use.is_set(primary_key)))
{
- share->primary_key= primary_key;
+ DBUG_ASSERT(share->primary_key == primary_key);
/*
If we are using an integer as the primary key then allow the user to
refer to it as '_rowid'
@@ -3204,10 +3273,10 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
}
}
else
- share->primary_key = MAX_KEY; // we do not have a primary key
+ {
+ DBUG_ASSERT(share->primary_key == MAX_KEY);
+ }
}
- else
- share->primary_key= MAX_KEY;
if (new_field_pack_flag <= 1)
{
/* Old file format with default as not null */
@@ -3286,13 +3355,11 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
break;
}
case VCOL_GENERATED_STORED:
- vcol_info->stored_in_db= 1;
DBUG_ASSERT(!reg_field->vcol_info);
reg_field->vcol_info= vcol_info;
share->virtual_fields++;
break;
case VCOL_DEFAULT:
- vcol_info->stored_in_db= 1;
DBUG_ASSERT(!reg_field->default_value);
reg_field->default_value= vcol_info;
share->default_expressions++;
@@ -3437,6 +3504,27 @@ err:
}
+/*
+ Make a copy of optimizer costs to be able to access these without any locks
+ and to allow the engine to update costs.
+*/
+
+void TABLE_SHARE::update_optimizer_costs(handlerton *hton)
+{
+ if (hton != view_pseudo_hton && !(hton->flags & HTON_HIDDEN))
+ {
+ mysql_mutex_lock(&LOCK_optimizer_costs);
+ memcpy(&optimizer_costs, hton->optimizer_costs, sizeof(optimizer_costs));
+ mysql_mutex_unlock(&LOCK_optimizer_costs);
+ }
+ else
+ {
+ bzero(&optimizer_costs, sizeof(optimizer_costs));
+ MEM_UNDEFINED(&optimizer_costs, sizeof(optimizer_costs));
+ }
+}
+
+
static bool sql_unusable_for_discovery(THD *thd, handlerton *engine,
const char *sql)
{
@@ -3941,7 +4029,6 @@ unpack_vcol_info_from_frm(THD *thd, TABLE *table,
}
vcol_storage.vcol_info->set_vcol_type(vcol->get_vcol_type());
- vcol_storage.vcol_info->stored_in_db= vcol->stored_in_db;
vcol_storage.vcol_info->name= vcol->name;
vcol_storage.vcol_info->utf8= vcol->utf8;
if (!vcol_storage.vcol_info->fix_and_check_expr(thd, table))
@@ -4038,6 +4125,11 @@ static void print_long_unique_table(TABLE *table)
}
#endif
+
+/**
+ Copy key information from TABLE_SHARE to TABLE
+*/
+
bool copy_keys_from_share(TABLE *outparam, MEM_ROOT *root)
{
TABLE_SHARE *share= outparam->s;
@@ -4047,14 +4139,16 @@ bool copy_keys_from_share(TABLE *outparam, MEM_ROOT *root)
KEY_PART_INFO *key_part;
if (!multi_alloc_root(root, &key_info, share->keys*sizeof(KEY),
- &key_part, share->ext_key_parts*sizeof(KEY_PART_INFO),
+ &key_part,
+ share->ext_key_parts*sizeof(KEY_PART_INFO),
NullS))
return 1;
outparam->key_info= key_info;
memcpy(key_info, share->key_info, sizeof(*key_info)*share->keys);
- memcpy(key_part, key_info->key_part, sizeof(*key_part)*share->ext_key_parts);
+ memcpy(key_part, key_info->key_part,
+ sizeof(*key_part)*share->ext_key_parts);
my_ptrdiff_t adjust_ptrs= PTR_BYTE_DIFF(key_part, key_info->key_part);
for (key_info_end= key_info + share->keys ;
@@ -4065,22 +4159,44 @@ bool copy_keys_from_share(TABLE *outparam, MEM_ROOT *root)
key_info->key_part= reinterpret_cast<KEY_PART_INFO*>
(reinterpret_cast<char*>(key_info->key_part) + adjust_ptrs);
if (key_info->algorithm == HA_KEY_ALG_LONG_HASH)
+ {
+ /*
+ From the user point of view, this key is unique.
+ However from the engine point, the value is not unique
+ as there can be hash collisions.
+ */
key_info->flags&= ~HA_NOSAME;
+ }
}
+
+ /*
+ We have to copy key parts separately as LONG HASH has invisible
+ key parts not seen by key_info
+ */
for (KEY_PART_INFO *key_part_end= key_part+share->ext_key_parts;
key_part < key_part_end;
key_part++)
{
- Field *field= key_part->field= outparam->field[key_part->fieldnr - 1];
- if (field->key_length() != key_part->length &&
- !(field->flags & BLOB_FLAG))
+ /*
+ key_part->field is not set for key_parts that are here not used.
+ This can happen with extended keys where a secondary key
+ contains a primary key. In this case no key_info will contain
+ this key_part, but it can still be part of the memory region of
+ share->key_part.
+ */
+ if (key_part->field)
{
- /*
- We are using only a prefix of the column as a key:
- Create a new field for the key part that matches the index
- */
- field= key_part->field=field->make_new_field(root, outparam, 0);
- field->field_length= key_part->length;
+ Field *field= key_part->field= outparam->field[key_part->fieldnr - 1];
+ if (field->key_length() != key_part->length &&
+ !(field->flags & BLOB_FLAG))
+ {
+ /*
+ We are using only a prefix of the column as a key:
+ Create a new field for the key part that matches the index
+ */
+ field= key_part->field=field->make_new_field(root, outparam, 0);
+ field->field_length= key_part->length;
+ }
}
}
}
@@ -4321,15 +4437,15 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
for (uint k= 0; k < share->keys; k++)
{
- KEY &key_info= outparam->key_info[k];
- uint parts = (share->use_ext_keys ? key_info.ext_key_parts :
- key_info.user_defined_key_parts);
- for (uint p= 0; p < parts; p++)
+ KEY *key_info= &outparam->key_info[k];
+ uint parts= (share->use_ext_keys ? key_info->ext_key_parts :
+ key_info->user_defined_key_parts);
+ for (uint p=0; p < parts; p++)
{
- KEY_PART_INFO &kp= key_info.key_part[p];
- if (kp.field != outparam->field[kp.fieldnr - 1])
+ KEY_PART_INFO *kp= &key_info->key_part[p];
+ if (kp->field != outparam->field[kp->fieldnr - 1])
{
- kp.field->vcol_info = outparam->field[kp.fieldnr - 1]->vcol_info;
+ kp->field->vcol_info= outparam->field[kp->fieldnr - 1]->vcol_info;
}
}
}
@@ -5074,40 +5190,6 @@ rename_file_ext(const char * from,const char * to,const char * ext)
/*
- Allocate string field in MEM_ROOT and return it as String
-
- SYNOPSIS
- get_field()
- mem MEM_ROOT for allocating
- field Field for retrieving of string
- res result String
-
- RETURN VALUES
- 1 string is empty
- 0 all ok
-*/
-
-bool get_field(MEM_ROOT *mem, Field *field, String *res)
-{
- const char *to;
- StringBuffer<MAX_FIELD_WIDTH> str;
- bool rc;
- THD *thd= field->get_thd();
- Sql_mode_instant_remove sms(thd, MODE_PAD_CHAR_TO_FULL_LENGTH);
-
- field->val_str(&str);
- if ((rc= !str.length() ||
- !(to= strmake_root(mem, str.ptr(), str.length()))))
- {
- res->length(0);
- return rc;
- }
- res->set(to, str.length(), field->charset());
- return false;
-}
-
-
-/*
Allocate string field in MEM_ROOT and return it as NULL-terminated string
SYNOPSIS
@@ -5122,10 +5204,12 @@ bool get_field(MEM_ROOT *mem, Field *field, String *res)
char *get_field(MEM_ROOT *mem, Field *field)
{
- String str;
- bool rc= get_field(mem, field, &str);
- DBUG_ASSERT(rc || str.ptr()[str.length()] == '\0');
- return rc ? NullS : (char *) str.ptr();
+ THD *thd= field->get_thd();
+ Sql_mode_instant_remove sms(thd, MODE_PAD_CHAR_TO_FULL_LENGTH);
+ LEX_STRING ls= field->val_lex_string_strmake(mem);
+ DBUG_ASSERT((!ls.str && !ls.length) || ls.str[ls.length] == '\0');
+ // Empty string "" is intentionally returned as NullS
+ return ls.length == 0 ? NullS : ls.str;
}
/*
@@ -5159,61 +5243,17 @@ uint calculate_key_len(TABLE *table, uint key, const uchar *buf,
This is supposed to be used only inside DBUG_ASSERT()
*/
-bool ok_for_lower_case_names(const char *name)
+bool Lex_ident_fs::ok_for_lower_case_names() const
{
- if (!lower_case_table_names || !name)
- return true;
-
- char buf[SAFE_NAME_LEN];
- strmake_buf(buf, name);
- my_casedn_str(files_charset_info, buf);
- return strcmp(name, buf) == 0;
+ return !lower_case_table_names || !str || is_in_lower_case();
}
-#endif
-
-/*
- Check if database name is valid
-
- SYNPOSIS
- check_db_name()
- org_name Name of database
- NOTES
- If lower_case_table_names is set to 1 then database name is converted
- to lower case
-
- RETURN
- 0 ok
- 1 error
-*/
-
-bool check_db_name(LEX_STRING *org_name)
+bool Lex_ident_fs::is_in_lower_case() const
{
- char *name= org_name->str;
- size_t name_length= org_name->length;
- bool check_for_path_chars;
-
- if ((check_for_path_chars= check_mysql50_prefix(name)))
- {
- name+= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
- name_length-= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
- }
-
- if (!name_length || name_length > NAME_LEN)
- return 1;
-
- if (lower_case_table_names == 1 && name != any_db.str)
- {
- org_name->length= name_length= my_casedn_str(files_charset_info, name);
- if (check_for_path_chars)
- org_name->length+= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
- }
- if (db_name_is_in_ignore_db_dirs_list(name))
- return 1;
-
- return check_table_name(name, name_length, check_for_path_chars);
+ DBNameBuffer buf(*this, true);
+ return cmp(*this, buf.to_lex_cstring()) == 0;
}
-
+#endif
/*
Allow anything as a table name, as long as it doesn't contain an
@@ -5221,44 +5261,41 @@ bool check_db_name(LEX_STRING *org_name)
returns 1 on error
*/
-bool check_table_name(const char *name, size_t length, bool check_for_path_chars)
+bool check_table_name(const char *name, size_t length, bool disallow_path_chars)
{
- // name length in symbols
- size_t name_length= 0;
- const char *end= name+length;
-
- if (!check_for_path_chars &&
- (check_for_path_chars= check_mysql50_prefix(name)))
+ if (!disallow_path_chars &&
+ (disallow_path_chars= check_mysql50_prefix(name)))
{
name+= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
length-= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
}
+ return Lex_ident_fs::check_body(name, length, disallow_path_chars);
+}
+
+
+bool Lex_ident_fs::check_body(const char *name, size_t length,
+ bool disallow_path_chars)
+{
if (!length || length > NAME_LEN)
return 1;
-#if defined(USE_MB) && defined(USE_MB_IDENT)
- bool last_char_is_space= FALSE;
-#else
+
+ // name length in symbols
+ size_t char_length= 0;
+ const char *end= name + length;
+
if (name[length-1]==' ')
return 1;
-#endif
- while (name != end)
+ for ( ; name != end ; char_length++)
{
-#if defined(USE_MB) && defined(USE_MB_IDENT)
- last_char_is_space= my_isspace(system_charset_info, *name);
- if (system_charset_info->use_mb())
+ int len= my_ismbchar(&my_charset_utf8mb3_general_ci, name, end);
+ if (len)
{
- int len=my_ismbchar(system_charset_info, name, end);
- if (len)
- {
- name+= len;
- name_length++;
- continue;
- }
+ name+= len;
+ continue;
}
-#endif
- if (check_for_path_chars &&
+ if (disallow_path_chars &&
(*name == '/' || *name == '\\' || *name == '~' || *name == FN_EXTCHAR))
return 1;
/*
@@ -5277,13 +5314,44 @@ bool check_table_name(const char *name, size_t length, bool check_for_path_chars
if (*name == 0x00)
return 1;
name++;
- name_length++;
}
-#if defined(USE_MB) && defined(USE_MB_IDENT)
- return last_char_is_space || (name_length > NAME_CHAR_LEN);
-#else
- return FALSE;
-#endif
+ return char_length > NAME_CHAR_LEN;
+}
+
+
+/**
+ Check if the name is a valid database name
+ @returns false - on success (valid)
+ @returns true - on error (invalid)
+*/
+bool Lex_ident_fs::check_db_name() const
+{
+ DBUG_ASSERT(str);
+ if (check_mysql50_prefix(str))
+ {
+ Lex_ident_fs name(Lex_cstring(str + MYSQL50_TABLE_NAME_PREFIX_LENGTH,
+ length - MYSQL50_TABLE_NAME_PREFIX_LENGTH));
+ return db_name_is_in_ignore_db_dirs_list(name.str) ||
+ check_body(name.str, name.length, true);
+ }
+ return db_name_is_in_ignore_db_dirs_list(str) ||
+ check_body(str, length, false);
+}
+
+
+/**
+ Check if the name is a valid database name
+ and raise an error in case of an invalid name.
+
+ @returns false - on success (valid)
+ @returns true - on error (invalid)
+*/
+bool Lex_ident_fs::check_db_name_with_error() const
+{
+ if (!check_db_name())
+ return false;
+ my_error(ER_WRONG_DB_NAME ,MYF(0), safe_str(str));
+ return true;
}
@@ -5777,6 +5845,13 @@ void TABLE::init(THD *thd, TABLE_LIST *tl)
opt_range_condition_rows=0;
no_cache= false;
initialize_opt_range_structures();
+
+ /*
+ Update optimizer_costs to ensure that a SET STATEMENT of the
+ variables it will work.
+ */
+ file->set_optimizer_costs(thd);
+
#ifdef HAVE_REPLICATION
/* used in RBR Triggers */
master_had_triggers= 0;
@@ -5903,8 +5978,6 @@ TABLE_LIST::TABLE_LIST(THD *thd,
mdl_type= mdl_t;
table_options= table_opts;
updating= table_options & TL_OPTION_UPDATING;
- /* TODO: remove TL_OPTION_FORCE_INDEX as it looks like it's not used */
- force_index= table_options & TL_OPTION_FORCE_INDEX;
ignore_leaves= table_options & TL_OPTION_IGNORE_LEAVES;
sequence= table_options & TL_OPTION_SEQUENCE;
derived= table_ident->sel;
@@ -7271,7 +7344,8 @@ void Field_iterator_table_ref::set_field_iterator()
table_ref->alias.str));
}
/* This is a merge view, so use field_translation. */
- else if (table_ref->is_merged_derived() && table_ref->field_translation)
+ else if (!table_ref->is_materialized_derived() &&
+ table_ref->is_merged_derived() && table_ref->field_translation)
{
field_it= &view_field_it;
DBUG_PRINT("info", ("field_it for '%s' is Field_iterator_view",
@@ -7280,7 +7354,7 @@ void Field_iterator_table_ref::set_field_iterator()
/* This is a base table or stored view. */
else
{
- DBUG_ASSERT(table_ref->table || table_ref->view);
+ DBUG_ASSERT(table_ref->table || table_ref->is_materialized_derived());
field_it= &table_field_it;
DBUG_PRINT("info", ("field_it for '%s' is Field_iterator_table",
table_ref->alias.str));
@@ -7562,9 +7636,9 @@ MY_BITMAP *TABLE::prepare_for_keyread(uint index, MY_BITMAP *map)
{
MY_BITMAP *backup= read_set;
DBUG_ENTER("TABLE::prepare_for_keyread");
- if (!no_keyread)
+ if (!no_keyread && !file->keyread_enabled())
file->ha_start_keyread(index);
- if (map != read_set || !(file->index_flags(index, 0, 1) & HA_CLUSTERED_INDEX))
+ if (map != read_set || !is_clustering_key(index))
{
mark_index_columns(index, map);
column_bitmaps_set(map);
@@ -7718,6 +7792,17 @@ void TABLE::mark_columns_needed_for_delete()
bitmap_set_bit(write_set, s->vers.end_fieldno);
need_signal= true;
}
+#ifdef HAVE_REPLICATION
+ if (s->online_alter_binlog)
+ {
+ /*
+ For online alter we have to read all columns, because we need PK columns
+ in the row event, and we don't know what columns will be in PK after ALTER
+ */
+ bitmap_set_all(read_set);
+ need_signal= true;
+ }
+#endif
if (need_signal)
file->column_bitmaps_signal();
@@ -7804,9 +7889,20 @@ void TABLE::mark_columns_needed_for_update()
For System Versioning we have to read all columns since we store
a copy of previous row with modified row_end back to a table.
*/
- bitmap_union(read_set, &s->all_set);
+ bitmap_set_all(read_set);
+ need_signal= true;
+ }
+#ifdef HAVE_REPLICATION
+ if (s->online_alter_binlog)
+ {
+ /*
+ For online alter we have to read all columns, because we need PK columns
+ in the row event, and we don't know what columns will be in PK after ALTER
+ */
+ bitmap_set_all(read_set);
need_signal= true;
}
+#endif
if (check_constraints)
{
mark_check_constraint_columns_for_read();
@@ -7867,6 +7963,11 @@ void TABLE::mark_columns_needed_for_insert()
if (vfield)
mark_virtual_columns_for_write(TRUE);
mark_columns_per_binlog_row_image();
+
+ /* FULL_NODUP is for replacing FULL mode, insert includes all columns. */
+ if (in_use->variables.binlog_row_image == BINLOG_ROW_IMAGE_FULL_NODUP)
+ rpl_write_set= read_set;
+
if (check_constraints)
mark_check_constraint_columns_for_read();
DBUG_VOID_RETURN;
@@ -7937,6 +8038,11 @@ void TABLE::mark_columns_per_binlog_row_image()
/* Set of columns that should be written (all) */
rpl_write_set= read_set;
break;
+ case BINLOG_ROW_IMAGE_FULL_NODUP:
+ bitmap_set_all(read_set);
+ // TODO: After MDEV-18432 we don't pass history rows, so remove this:
+ rpl_write_set= versioned() ? &s->all_set : write_set;
+ break;
case BINLOG_ROW_IMAGE_NOBLOB:
/* Only write changed columns + not blobs */
rpl_write_set= &def_rpl_write_set;
@@ -8037,7 +8143,7 @@ bool TABLE::mark_virtual_columns_for_write(bool insert_fl
tmp_vfield= *vfield_ptr;
if (bitmap_is_set(write_set, tmp_vfield->field_index))
bitmap_updated|= mark_virtual_column_with_deps(tmp_vfield);
- else if (tmp_vfield->vcol_info->stored_in_db ||
+ else if (tmp_vfield->vcol_info->is_stored() ||
(tmp_vfield->flags & (PART_KEY_FLAG | FIELD_IN_PART_FUNC_FLAG |
PART_INDIRECT_KEY_FLAG)))
{
@@ -8068,7 +8174,7 @@ bool TABLE::check_virtual_columns_marked_for_read()
{
Field *tmp_vfield= *vfield_ptr;
if (bitmap_is_set(read_set, tmp_vfield->field_index) &&
- !tmp_vfield->vcol_info->stored_in_db)
+ !tmp_vfield->vcol_info->is_stored())
return TRUE;
}
}
@@ -8095,7 +8201,7 @@ bool TABLE::check_virtual_columns_marked_for_write()
{
Field *tmp_vfield= *vfield_ptr;
if (bitmap_is_set(write_set, tmp_vfield->field_index) &&
- tmp_vfield->vcol_info->stored_in_db)
+ tmp_vfield->vcol_info->is_stored())
return TRUE;
}
}
@@ -8225,7 +8331,7 @@ void TABLE::remember_blob_values(String *blob_storage)
for (vfield_ptr= vfield; *vfield_ptr; vfield_ptr++)
{
if ((*vfield_ptr)->type() == MYSQL_TYPE_BLOB &&
- !(*vfield_ptr)->vcol_info->stored_in_db)
+ !(*vfield_ptr)->vcol_info->is_stored())
{
Field_blob *blob= ((Field_blob*) *vfield_ptr);
memcpy((void*) blob_storage, (void*) &blob->value, sizeof(blob->value));
@@ -8248,7 +8354,7 @@ void TABLE::restore_blob_values(String *blob_storage)
for (vfield_ptr= vfield; *vfield_ptr; vfield_ptr++)
{
if ((*vfield_ptr)->type() == MYSQL_TYPE_BLOB &&
- !(*vfield_ptr)->vcol_info->stored_in_db)
+ !(*vfield_ptr)->vcol_info->is_stored())
{
Field_blob *blob= ((Field_blob*) *vfield_ptr);
blob->value.free();
@@ -8266,7 +8372,7 @@ void TABLE::restore_blob_values(String *blob_storage)
@param key_count number of keys to allocate additionally
@details
- The function allocates memory to fit additionally 'key_count' keys
+ The function allocates memory to fit additionally 'key_count' keys
for this table.
@return FALSE space was successfully allocated
@@ -8451,18 +8557,25 @@ bool TABLE::add_tmp_key(uint key, uint key_parts,
DBUG_ASSERT(key < max_keys);
char buf[NAME_CHAR_LEN];
- KEY* keyinfo;
+ KEY *keyinfo= key_info + key;
+ KEY_PART_INFO *key_part_info;
Field **reg_field;
uint i;
-
bool key_start= TRUE;
- KEY_PART_INFO* key_part_info=
- (KEY_PART_INFO*) alloc_root(&mem_root, sizeof(KEY_PART_INFO)*key_parts);
- if (!key_part_info)
+
+ keyinfo->name.length= sprintf(buf, "key%i", key);
+
+ if (!multi_alloc_root(&mem_root,
+ &key_part_info, sizeof(KEY_PART_INFO)*key_parts,
+ &keyinfo->rec_per_key,
+ sizeof(key_info->rec_per_key) * key_parts,
+ &keyinfo->name.str, keyinfo->name.length+1,
+ NullS))
return TRUE;
- keyinfo= key_info + key;
keyinfo->key_part= key_part_info;
- keyinfo->usable_key_parts= keyinfo->user_defined_key_parts = key_parts;
+ strmake((char*) keyinfo->name.str, buf, keyinfo->name.length);
+
+ keyinfo->usable_key_parts= keyinfo->user_defined_key_parts= key_parts;
keyinfo->ext_key_parts= keyinfo->user_defined_key_parts;
keyinfo->key_length=0;
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
@@ -8471,14 +8584,6 @@ bool TABLE::add_tmp_key(uint key, uint key_parts,
keyinfo->is_statistics_from_stat_tables= FALSE;
if (unique)
keyinfo->flags|= HA_NOSAME;
- sprintf(buf, "key%i", key);
- keyinfo->name.length= strlen(buf);
- if (!(keyinfo->name.str= strmake_root(&mem_root, buf, keyinfo->name.length)))
- return TRUE;
- keyinfo->rec_per_key= (ulong*) alloc_root(&mem_root,
- sizeof(ulong)*key_parts);
- if (!keyinfo->rec_per_key)
- return TRUE;
bzero(keyinfo->rec_per_key, sizeof(ulong)*key_parts);
keyinfo->read_stats= NULL;
keyinfo->collected_stats= NULL;
@@ -8496,6 +8601,11 @@ bool TABLE::add_tmp_key(uint key, uint key_parts,
key_start= FALSE;
key_part_info++;
}
+ /*
+ We have to cache index_flags here as the table may be used by the
+ optimizer before it's opened.
+ */
+ keyinfo->index_flags= file->index_flags(key, 0, 1);
/*
For the case when there is a derived table that would give distinct rows,
@@ -8519,33 +8629,66 @@ bool TABLE::add_tmp_key(uint key, uint key_parts,
set_if_bigger(s->max_key_length, keyinfo->key_length);
s->keys++;
+ s->ext_key_parts+= keyinfo->ext_key_parts;
+ s->key_parts+= keyinfo->user_defined_key_parts;
return FALSE;
}
/*
@brief
- Drop all indexes except specified one.
+ Drop all indexes except specified one and optionally unique keys.
- @param key_to_save the key to save
+ @param key_to_save The key to save
+ @param map_to_update Bitmap showing some of the table's keys. Update it
+ to show the same keys, if they are not dropped.
+ @param unique_keys Keep unique keys
@details
- Drop all indexes on this table except 'key_to_save'. The saved key becomes
- key #0. Memory occupied by key parts of dropped keys are freed.
- If the 'key_to_save' is negative then all keys are freed.
+ Drop all indexes on this table except 'key_to_save' and unique keys.
+
+ The saved key becomes key #0. If key_to_save=-1 then only unique keys
+ remain.
*/
-void TABLE::use_index(int key_to_save)
+void TABLE::use_index(int key_to_save, key_map *map_to_update)
{
- uint i= 1;
DBUG_ASSERT(!created && key_to_save < (int)s->keys);
- if (key_to_save >= 0)
- /* Save the given key. */
- memmove(key_info, key_info + key_to_save, sizeof(KEY));
- else
- /* Drop all keys; */
- i= 0;
+ uint saved_keys= 0, key_parts= 0;
+ key_map new_bitmap;
+ new_bitmap.clear_all();
- s->keys= i;
+ /*
+ If we have key_to_save, move it to be key#0.
+ */
+ if (key_to_save != -1)
+ {
+ new_bitmap.set_bit(saved_keys);
+
+ KEY tmp_buff= key_info[saved_keys];
+ key_info[saved_keys]= key_info[key_to_save];
+ key_info[key_to_save]= tmp_buff;
+ key_parts= key_info[saved_keys].user_defined_key_parts;
+ saved_keys++;
+ }
+
+ /*
+ Now, move all unique keys to the front.
+ */
+ for (uint i= saved_keys; i < s->keys; i++)
+ {
+ if (key_info[i].flags & HA_NOSAME)
+ {
+ if (map_to_update->is_set(i))
+ new_bitmap.set_bit(saved_keys);
+ if (i != saved_keys)
+ key_info[saved_keys]= key_info[i];
+ key_parts+= key_info[saved_keys].user_defined_key_parts;
+ saved_keys++;
+ }
+ }
+ *map_to_update= new_bitmap;
+ s->keys= saved_keys;
+ s->key_parts= s->ext_key_parts= key_parts;
}
/*
@@ -8815,18 +8958,19 @@ bool TABLE_LIST::process_index_hints(TABLE *tbl)
index_group[INDEX_HINT_USE].merge(index_group[INDEX_HINT_FORCE]);
}
- /*
- TODO: get rid of tbl->force_index (on if any FORCE INDEX is specified)
- and create tbl->force_index_join instead.
- Then use the correct force_index_XX instead of the global one.
- */
- if (!index_join[INDEX_HINT_FORCE].is_clear_all() ||
- tbl->force_index_group || tbl->force_index_order)
+ if (!index_join[INDEX_HINT_FORCE].is_clear_all())
{
- tbl->force_index= TRUE;
+ tbl->force_index_join= TRUE;
index_join[INDEX_HINT_USE].merge(index_join[INDEX_HINT_FORCE]);
}
+ /*
+ TODO: get rid of tbl->force_index (on if any FORCE INDEX is specified)
+ Use the correct force_index_XX in all places instead of the global one.
+ */
+ tbl->force_index= (tbl->force_index_order | tbl->force_index_group |
+ tbl->force_index_join);
+
/* apply USE INDEX */
if (!index_join[INDEX_HINT_USE].is_clear_all() || have_empty_use_join)
tbl->keys_in_use_for_query.intersect(index_join[INDEX_HINT_USE]);
@@ -9035,7 +9179,7 @@ int TABLE::update_virtual_fields(handler *h, enum_vcol_update_mode update_mode)
bool update= 0, swap_values= 0;
switch (update_mode) {
case VCOL_UPDATE_FOR_READ:
- update= (!vcol_info->stored_in_db &&
+ update= (!vcol_info->is_stored() &&
bitmap_is_set(read_set, vf->field_index));
swap_values= 1;
break;
@@ -9044,7 +9188,7 @@ int TABLE::update_virtual_fields(handler *h, enum_vcol_update_mode update_mode)
update= bitmap_is_set(read_set, vf->field_index);
break;
case VCOL_UPDATE_FOR_REPLACE:
- update= ((!vcol_info->stored_in_db &&
+ update= ((!vcol_info->is_stored() &&
(vf->flags & (PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG)) &&
bitmap_is_set(read_set, vf->field_index)) ||
update_all_columns);
@@ -9064,7 +9208,7 @@ int TABLE::update_virtual_fields(handler *h, enum_vcol_update_mode update_mode)
case VCOL_UPDATE_INDEXED:
case VCOL_UPDATE_INDEXED_FOR_UPDATE:
/* Read indexed fields that was not updated in VCOL_UPDATE_FOR_READ */
- update= (!vcol_info->stored_in_db &&
+ update= (!vcol_info->is_stored() &&
(vf->flags & (PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG)) &&
!bitmap_is_set(read_set, vf->field_index));
swap_values= 1;
@@ -9827,6 +9971,9 @@ bool TABLE_LIST::init_derived(THD *thd, bool init_view)
if (!derived_table_optimization_done(this))
{
/* A subquery might be forced to be materialized due to a side-effect. */
+ bool forced_no_merge_for_update_delete=
+ belong_to_view ? belong_to_view->updating :
+ !unit->outer_select()->outer_select();
if (!is_materialized_derived() && unit->can_be_merged() &&
/*
Following is special case of
@@ -9845,8 +9992,15 @@ bool TABLE_LIST::init_derived(THD *thd, bool init_view)
(is_view() ||
optimizer_flag(thd, OPTIMIZER_SWITCH_DERIVED_MERGE)) &&
!thd->lex->can_not_use_merged() &&
- !((thd->lex->sql_command == SQLCOM_UPDATE_MULTI ||
- thd->lex->sql_command == SQLCOM_DELETE_MULTI) && !is_view()) &&
+ !(!is_view() && forced_no_merge_for_update_delete &&
+ (thd->lex->sql_command == SQLCOM_UPDATE_MULTI ||
+ thd->lex->sql_command == SQLCOM_DELETE_MULTI ||
+ (thd->lex->sql_command == SQLCOM_UPDATE &&
+ (((Sql_cmd_update *) thd->lex->m_sql_cmd)->is_multitable() ||
+ thd->lex->query_tables->is_multitable())) ||
+ (thd->lex->sql_command == SQLCOM_DELETE &&
+ (((Sql_cmd_delete *) thd->lex->m_sql_cmd)->is_multitable() ||
+ thd->lex->query_tables->is_multitable())))) &&
!is_recursive_with_table())
set_merged_derived();
else
@@ -10589,7 +10743,7 @@ void Vers_history_point::print(String *str, enum_query_type query_type,
item->print(str, query_type);
}
-Field *TABLE::find_field_by_name(LEX_CSTRING *str) const
+Field *TABLE::find_field_by_name(const LEX_CSTRING *str) const
{
Field **tmp;
size_t length= str->length;
@@ -10644,10 +10798,34 @@ bool TABLE::export_structure(THD *thd, Row_definition_list *defs)
inline void TABLE::initialize_opt_range_structures()
{
TRASH_ALLOC((void*)&opt_range_keys, sizeof(opt_range_keys));
- TRASH_ALLOC(opt_range, s->keys * sizeof(*opt_range));
+ TRASH_ALLOC((void*)opt_range, s->keys * sizeof(*opt_range));
TRASH_ALLOC(const_key_parts, s->keys * sizeof(*const_key_parts));
}
+
+double TABLE::OPT_RANGE::index_only_fetch_cost(TABLE *table)
+{
+ return (table->file->cost(cost.index_cost)+
+ (double) rows * table->s->optimizer_costs.key_copy_cost);
+}
+
+
+/*
+ Convert range cost to ALL_READ_COST
+ Note that the returned cost does not include the WHERE cost
+ (costs.comp_cost).
+*/
+
+void TABLE::OPT_RANGE::get_costs(ALL_READ_COST *res)
+{
+ res->index_cost= cost.index_cost;
+ res->row_cost= cost.row_cost;
+ res->copy_cost= cost.copy_cost;
+ res->max_index_blocks= max_index_blocks;
+ res->max_row_blocks= max_row_blocks;
+}
+
+
/*
Mark table to be reopened after query
*/
diff --git a/sql/table.h b/sql/table.h
index b0b0f032..9921537b 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -66,6 +66,7 @@ struct TABLE_LIST;
class ACL_internal_schema_access;
class ACL_internal_table_access;
class Field;
+class Copy_field;
class Table_statistics;
class With_element;
struct TDC_element;
@@ -79,6 +80,7 @@ class Pushdown_derived;
struct Name_resolution_context;
class Table_function_json_table;
class Open_table_context;
+class MYSQL_LOG;
/*
Used to identify NESTED_JOIN structures within a join (applicable only to
@@ -93,6 +95,7 @@ typedef ulonglong nested_join_map;
#define tmp_file_prefix "#sql" /**< Prefix for tmp tables */
#define tmp_file_prefix_length 4
#define TMP_TABLE_KEY_EXTRA 8
+#define ROCKSDB_DIRECTORY_NAME "#rocksdb"
/**
Enumerate possible types of a table from re-execution
@@ -783,6 +786,7 @@ struct TABLE_SHARE
return is_view ? view_pseudo_hton :
db_plugin ? plugin_hton(db_plugin) : NULL;
}
+ OPTIMIZER_COSTS optimizer_costs; /* Copy of get_optimizer_costs() */
enum row_type row_type; /* How rows are stored */
enum Table_type table_type;
enum tmp_table_type tmp_table;
@@ -821,7 +825,18 @@ struct TABLE_SHARE
uint keys, key_parts;
uint ext_key_parts; /* Total number of key parts in extended keys */
uint max_key_length, max_unique_length;
- uint uniques; /* Number of UNIQUE index */
+
+ /*
+ Older versions had TABLE_SHARE::uniques but now it is replaced with
+ per-index HA_UNIQUE_HASH flag
+ */
+ bool have_unique_constraint() const
+ {
+ for (uint i=0; i < keys; i++)
+ if (key_info[i].flags & HA_UNIQUE_HASH)
+ return true;
+ return false;
+ }
uint db_create_options; /* Create options from database */
uint db_options_in_use; /* Options in use */
uint db_record_offset; /* if HA_REC_IN_SEQ */
@@ -860,6 +875,7 @@ struct TABLE_SHARE
bool long_unique_table;
/* 1 if frm version cannot be updated as part of upgrade */
bool keep_original_mysql_version;
+ bool optimizer_costs_inited;
ulonglong table_map_id; /* for row-based replication */
@@ -888,6 +904,10 @@ struct TABLE_SHARE
plugin_ref default_part_plugin;
#endif
+#ifdef HAVE_REPLICATION
+ Cache_flip_event_log *online_alter_binlog;
+#endif
+
/**
System versioning and application-time periods support.
*/
@@ -1180,6 +1200,7 @@ struct TABLE_SHARE
Item_func_hash *make_long_hash_func(THD *thd,
MEM_ROOT *mem_root,
List<Item> *field_list) const;
+ void update_optimizer_costs(handlerton *hton);
void update_engine_independent_stats(TABLE_STATISTICS_CB *stat);
bool histograms_exists();
};
@@ -1379,13 +1400,18 @@ public:
{
uint key_parts;
uint ranges;
- ha_rows rows;
- double cost;
+ ha_rows rows, max_index_blocks, max_row_blocks;
+ Cost_estimate cost;
+ /* Selectivity, in case of filters */
+ double selectivity;
+ bool first_key_part_has_only_one_value;
+
/*
- If there is a range access by i-th index then the cost of
- index only access for it is stored in index_only_costs[i]
+ Cost of fetching keys with index only read and returning them to the
+ sql level.
*/
- double index_only_cost;
+ double index_only_fetch_cost(TABLE *table);
+ void get_costs(ALL_READ_COST *cost);
} *opt_range;
/*
Bitmaps of key parts that =const for the duration of join execution. If
@@ -1472,6 +1498,9 @@ public:
*/
bool force_index;
+ /* Flag set when the statement contains FORCE INDEX FOR JOIN */
+ bool force_index_join;
+
/**
Flag set when the statement contains FORCE INDEX FOR ORDER BY
See TABLE_LIST::process_index_hints().
@@ -1572,6 +1601,8 @@ public:
Item *notnull_cond;
TABLE_STATISTICS_CB *stats_cb;
+ online_alter_cache_data *online_alter_cache;
+
inline void reset() { bzero((void*)this, sizeof(*this)); }
void init(THD *thd, TABLE_LIST *tl);
bool fill_item_list(List<Item> *item_list) const;
@@ -1657,7 +1688,7 @@ public:
bool unique);
void create_key_part_by_field(KEY_PART_INFO *key_part_info,
Field *field, uint fieldnr);
- void use_index(int key_to_save);
+ void use_index(int key_to_save, key_map *map_to_update);
void set_table_map(table_map map_arg, uint tablenr_arg)
{
map= map_arg;
@@ -1710,6 +1741,12 @@ public:
uint actual_n_key_parts(KEY *keyinfo);
ulong actual_key_flags(KEY *keyinfo);
int update_virtual_field(Field *vf, bool ignore_warnings);
+ inline size_t key_storage_length(uint index)
+ {
+ if (is_clustering_key(index))
+ return s->stored_rec_length;
+ return key_info[index].key_length + file->ref_length;
+ }
int update_virtual_fields(handler *h, enum_vcol_update_mode update_mode);
int update_default_fields(bool ignore_errors);
void evaluate_update_default_function();
@@ -1753,7 +1790,7 @@ public:
bool with_cleanup);
bool vcol_fix_expr(THD *thd);
bool vcol_cleanup_expr(THD *thd);
- Field *find_field_by_name(LEX_CSTRING *str) const;
+ Field *find_field_by_name(const LEX_CSTRING *str) const;
bool export_structure(THD *thd, class Row_definition_list *defs);
bool is_splittable() { return spl_opt_info != NULL; }
void set_spl_opt_info(SplM_opt_info *spl_info);
@@ -1774,10 +1811,12 @@ public:
void prune_range_rowid_filters();
void trace_range_rowid_filters(THD *thd) const;
Range_rowid_filter_cost_info *
- best_range_rowid_filter_for_partial_join(uint access_key_no,
- double records,
- double access_cost_factor);
-
+ best_range_rowid_filter(uint access_key_no,
+ double records,
+ double fetch_cost,
+ double index_only_cost,
+ double prev_records,
+ double *records_out);
/**
System Versioning support
*/
@@ -1830,7 +1869,44 @@ public:
DBUG_ASSERT(s->period.name);
return field[s->period.end_fieldno];
}
+ inline void set_cond_selectivity(double selectivity)
+ {
+ DBUG_ASSERT(selectivity >= 0.0 && selectivity <= 1.0);
+ cond_selectivity= selectivity;
+ DBUG_PRINT("info", ("cond_selectivity: %g", cond_selectivity));
+ }
+ inline void multiply_cond_selectivity(double selectivity)
+ {
+ DBUG_ASSERT(selectivity >= 0.0 && selectivity <= 1.0);
+ cond_selectivity*= selectivity;
+ DBUG_PRINT("info", ("cond_selectivity: %g", cond_selectivity));
+ }
+ inline void set_opt_range_condition_rows(ha_rows rows)
+ {
+ if (opt_range_condition_rows > rows)
+ opt_range_condition_rows= rows;
+ }
+ /* Return true if the key is a clustered key */
+ inline bool is_clustering_key(uint index) const
+ {
+ return key_info[index].index_flags & HA_CLUSTERED_INDEX;
+ }
+
+ /*
+ Return true if we can use rowid filter with this index
+ rowid filter can be used if
+ - filter pushdown is supported by the engine for the index. If this is set then
+ file->ha_table_flags() should not contain HA_NON_COMPARABLE_ROWID!
+ - The index is not a clustered primary index
+ */
+
+ inline bool can_use_rowid_filter(uint index) const
+ {
+ return ((key_info[index].index_flags &
+ (HA_DO_RANGE_FILTER_PUSHDOWN | HA_CLUSTERED_INDEX)) ==
+ HA_DO_RANGE_FILTER_PUSHDOWN);
+ }
ulonglong vers_start_id() const;
ulonglong vers_end_id() const;
@@ -1932,7 +2008,8 @@ class IS_table_read_plan;
#define DTYPE_MERGE 4U
#define DTYPE_MATERIALIZE 8U
#define DTYPE_MULTITABLE 16U
-#define DTYPE_MASK (DTYPE_VIEW|DTYPE_TABLE|DTYPE_MULTITABLE)
+#define DTYPE_IN_PREDICATE 32U
+#define DTYPE_MASK (DTYPE_VIEW|DTYPE_TABLE|DTYPE_MULTITABLE|DTYPE_IN_PREDICATE)
/*
Phases of derived tables/views handling, see sql_derived.cc
@@ -2275,11 +2352,18 @@ struct TABLE_LIST
mdl_type, MDL_TRANSACTION);
}
+ TABLE_LIST(const LEX_CSTRING *db_arg,
+ const LEX_CSTRING *table_name_arg,
+ const LEX_CSTRING *alias_arg,
+ enum thr_lock_type lock_type_arg)
+ {
+ init_one_table(db_arg, table_name_arg, alias_arg, lock_type_arg);
+ }
+
TABLE_LIST(TABLE *table_arg, thr_lock_type lock_type)
+ : TABLE_LIST(&table_arg->s->db, &table_arg->s->table_name, NULL, lock_type)
{
DBUG_ASSERT(table_arg->s);
- init_one_table(&table_arg->s->db, &table_arg->s->table_name,
- NULL, lock_type);
table= table_arg;
vers_conditions.name= table->s->vers.name;
}
@@ -2405,6 +2489,7 @@ struct TABLE_LIST
*/
select_unit *derived_result;
/* Stub used for materialized derived tables. */
+ bool delete_while_scanning;
table_map map; /* ID bit of table (1,2,4,8,16...) */
table_map get_map()
{
@@ -2464,8 +2549,6 @@ struct TABLE_LIST
bool block_handle_derived;
/* The interface employed to materialize the table by a foreign engine */
derived_handler *dt_handler;
- /* The text of the query specifying the derived table */
- LEX_CSTRING derived_spec;
/*
The object used to organize execution of the query that specifies
the derived table by a foreign engine
@@ -2593,9 +2676,8 @@ struct TABLE_LIST
uint outer_join; /* Which join type */
uint shared; /* Used in multi-upd */
bool updatable; /* VIEW/TABLE can be updated now */
- bool straight; /* optimize with prev table */
+ bool straight; /* optimize with prev table */
bool updating; /* for replicate-do/ignore table */
- bool force_index; /* prefer index over table scan */
bool ignore_leaves; /* preload only non-leaf nodes */
bool crashed; /* Table was found crashed */
bool skip_locked; /* Skip locked in view defination */
@@ -3275,7 +3357,6 @@ static inline void dbug_tmp_restore_column_maps(MY_BITMAP **read_set,
#endif
}
-bool ok_for_lower_case_names(const char *names);
enum get_table_share_flags {
GTS_TABLE = 1,
@@ -3309,13 +3390,12 @@ enum open_frm_error open_table_def(THD *thd, TABLE_SHARE *share,
void open_table_error(TABLE_SHARE *share, enum open_frm_error error,
int db_errno);
void update_create_info_from_table(HA_CREATE_INFO *info, TABLE *form);
-bool check_db_name(LEX_STRING *db);
+
bool check_column_name(const char *name);
bool check_period_name(const char *name);
bool check_table_name(const char *name, size_t length, bool check_for_path_chars);
int rename_file_ext(const char * from,const char * to,const char * ext);
char *get_field(MEM_ROOT *mem, Field *field);
-bool get_field(MEM_ROOT *mem, Field *field, class String *res);
bool validate_comment_length(THD *thd, LEX_CSTRING *comment, size_t max_len,
uint err_code, const char *name);
diff --git a/sql/temporary_tables.cc b/sql/temporary_tables.cc
index a018ba5a..cc7bd6c2 100644
--- a/sql/temporary_tables.cc
+++ b/sql/temporary_tables.cc
@@ -627,8 +627,7 @@ bool THD::drop_temporary_table(TABLE *table, bool *is_trans, bool delete_table)
table->s->db.str, table->s->table_name.str));
// close all handlers in case it is statement abort and some can be left
- if (is_error())
- table->file->ha_reset();
+ table->file->ha_reset();
locked= lock_temporary_tables();
@@ -1086,8 +1085,13 @@ TABLE *THD::find_temporary_table(const char *key, uint key_length,
{
share->all_tmp_tables.remove(table);
free_temporary_table(table);
- it.rewind();
- continue;
+ if (share->all_tmp_tables.is_empty())
+ table= open_temporary_table(share, share->table_name.str);
+ else
+ {
+ it.rewind();
+ continue;
+ }
}
result= table;
break;
diff --git a/sql/transaction.cc b/sql/transaction.cc
index f34307ac..1ae0928e 100644
--- a/sql/transaction.cc
+++ b/sql/transaction.cc
@@ -181,7 +181,7 @@ bool trans_begin(THD *thd, uint flags)
}
thd->tx_read_only= false;
/*
- This flags that tx_read_only was set explicitly, rather than
+ This flags that transaction_read_only was set explicitly, rather than
just from the session's default.
*/
#ifndef EMBEDDED_LIBRARY
@@ -583,17 +583,17 @@ bool trans_rollback_stmt(THD *thd)
DBUG_RETURN(FALSE);
}
-/* Find a named savepoint in the current transaction. */
-static SAVEPOINT **
-find_savepoint(THD *thd, LEX_CSTRING name)
+/** Find a savepoint by name in a savepoint list */
+SAVEPOINT** find_savepoint_in_list(THD *thd, LEX_CSTRING name,
+ SAVEPOINT ** const list)
{
- SAVEPOINT **sv= &thd->transaction->savepoints;
+ SAVEPOINT **sv= list;
while (*sv)
{
if (system_charset_info->strnncoll(
- (uchar *) name.str, name.length,
- (uchar *) (*sv)->name, (*sv)->length) == 0)
+ (uchar *) name.str, name.length,
+ (uchar *) (*sv)->name, (*sv)->length) == 0)
break;
sv= &(*sv)->prev;
}
@@ -601,6 +601,43 @@ find_savepoint(THD *thd, LEX_CSTRING name)
return sv;
}
+/* Find a named savepoint in the current transaction. */
+static SAVEPOINT **
+find_savepoint(THD *thd, LEX_CSTRING name)
+{
+ return find_savepoint_in_list(thd, name, &thd->transaction->savepoints);
+}
+
+SAVEPOINT* savepoint_add(THD *thd, LEX_CSTRING name, SAVEPOINT **list,
+ int (*release_old)(THD*, SAVEPOINT*))
+{
+ DBUG_ENTER("savepoint_add");
+
+ SAVEPOINT **sv= find_savepoint_in_list(thd, name, list);
+
+ SAVEPOINT *newsv;
+
+ if (*sv) /* old savepoint of the same name exists */
+ {
+ newsv= *sv;
+ if (release_old){
+ int error= release_old(thd, *sv);
+ if (error)
+ DBUG_RETURN(NULL);
+ }
+ *sv= (*sv)->prev;
+ }
+ else if ((newsv= (SAVEPOINT *) alloc_root(&thd->transaction->mem_root,
+ savepoint_alloc_size)) == NULL)
+ {
+ my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ DBUG_RETURN(NULL);
+ }
+
+ newsv->name= strmake_root(&thd->transaction->mem_root, name.str, name.length);
+ newsv->length= (uint)name.length;
+ DBUG_RETURN(newsv);
+}
/**
Set a named transaction savepoint.
@@ -614,7 +651,6 @@ find_savepoint(THD *thd, LEX_CSTRING name)
bool trans_savepoint(THD *thd, LEX_CSTRING name)
{
- SAVEPOINT **sv, *newsv;
DBUG_ENTER("trans_savepoint");
if (!(thd->in_multi_stmt_transaction_mode() || thd->in_sub_stmt) ||
@@ -624,23 +660,11 @@ bool trans_savepoint(THD *thd, LEX_CSTRING name)
if (thd->transaction->xid_state.check_has_uncommitted_xa())
DBUG_RETURN(TRUE);
- sv= find_savepoint(thd, name);
+ SAVEPOINT *newsv= savepoint_add(thd, name, &thd->transaction->savepoints,
+ ha_release_savepoint);
- if (*sv) /* old savepoint of the same name exists */
- {
- newsv= *sv;
- ha_release_savepoint(thd, *sv);
- *sv= (*sv)->prev;
- }
- else if ((newsv= (SAVEPOINT *) alloc_root(&thd->transaction->mem_root,
- savepoint_alloc_size)) == NULL)
- {
- my_error(ER_OUT_OF_RESOURCES, MYF(0));
+ if (newsv == NULL)
DBUG_RETURN(TRUE);
- }
-
- newsv->name= strmake_root(&thd->transaction->mem_root, name.str, name.length);
- newsv->length= (uint)name.length;
/*
if we'll get an error here, don't add new savepoint to the list.
diff --git a/sql/tztime.cc b/sql/tztime.cc
index e6cebbbd..573dde8a 100644
--- a/sql/tztime.cc
+++ b/sql/tztime.cc
@@ -29,6 +29,7 @@
#pragma implementation // gcc: Class implementation
#endif
+#define VER "1.1"
#include "mariadb.h"
#if !defined(TZINFO2SQL) && !defined(TESTTIME)
#include "sql_priv.h"
@@ -43,6 +44,7 @@
#include <my_getopt.h>
#endif
+#include <welcome_copyright_notice.h>
#include "tztime.h"
#include "tzfile.h"
#include <m_string.h>
@@ -50,30 +52,12 @@
#include <mysql/psi/mysql_file.h>
#include "lock.h" // MYSQL_LOCK_IGNORE_FLUSH,
// MYSQL_LOCK_IGNORE_TIMEOUT
-
-/*
- Now we don't use abbreviations in server but we will do this in future.
-*/
-#if defined(TZINFO2SQL) || defined(TESTTIME)
-#define ABBR_ARE_USED
-#else
-#if !defined(DBUG_OFF)
-/* Let use abbreviations for debug purposes */
-#undef ABBR_ARE_USED
-#define ABBR_ARE_USED
-#endif /* !defined(DBUG_OFF) */
-#endif /* defined(TZINFO2SQL) || defined(TESTTIME) */
-
-#define PROGRAM_VERSION "1.1"
-
/* Structure describing local time type (e.g. Moscow summer time (MSD)) */
typedef struct ttinfo
{
long tt_gmtoff; // Offset from UTC in seconds
uint tt_isdst; // Is daylight saving time or not. Used to set tm_isdst
-#ifdef ABBR_ARE_USED
uint tt_abbrind; // Index of start of abbreviation for this time type.
-#endif
/*
We don't use tt_ttisstd and tt_ttisgmt members of original elsie-code
struct since we don't support POSIX-style TZ descriptions in variables.
@@ -120,10 +104,8 @@ typedef struct st_time_zone_info
my_time_t *ats; // Times of transitions between time types
uchar *types; // Local time types for transitions
TRAN_TYPE_INFO *ttis; // Local time types descriptions
-#ifdef ABBR_ARE_USED
/* Storage for local time types abbreviations. They are stored as ASCIIZ */
char *chars;
-#endif
/*
Leap seconds corrections descriptions, this array is shared by
all time zones who use leap seconds.
@@ -179,9 +161,7 @@ tz_load(const char *name, TIME_ZONE_INFO *sp, MEM_ROOT *storage)
struct tzhead tzhead;
uchar buf[sizeof(struct tzhead) + sizeof(my_time_t) * TZ_MAX_TIMES +
TZ_MAX_TIMES + sizeof(TRAN_TYPE_INFO) * TZ_MAX_TYPES +
-#ifdef ABBR_ARE_USED
MY_MAX(TZ_MAX_CHARS + 1, (2 * (MY_TZNAME_MAX + 1))) +
-#endif
sizeof(LS_INFO) * TZ_MAX_LEAPS];
} u;
uint ttisstdcnt;
@@ -226,9 +206,7 @@ tz_load(const char *name, TIME_ZONE_INFO *sp, MEM_ROOT *storage)
ALIGN_SIZE(sp->timecnt) +
ALIGN_SIZE(sp->typecnt *
sizeof(TRAN_TYPE_INFO)) +
-#ifdef ABBR_ARE_USED
ALIGN_SIZE(sp->charcnt+1) +
-#endif
sp->leapcnt * sizeof(LS_INFO))))
return 1;
@@ -238,10 +216,8 @@ tz_load(const char *name, TIME_ZONE_INFO *sp, MEM_ROOT *storage)
tzinfo_buf+= ALIGN_SIZE(sp->timecnt);
sp->ttis= (TRAN_TYPE_INFO *)tzinfo_buf;
tzinfo_buf+= ALIGN_SIZE(sp->typecnt * sizeof(TRAN_TYPE_INFO));
-#ifdef ABBR_ARE_USED
sp->chars= tzinfo_buf;
tzinfo_buf+= ALIGN_SIZE(sp->charcnt+1);
-#endif
sp->lsis= (LS_INFO *)tzinfo_buf;
for (i= 0; i < sp->timecnt; i++, p+= 4)
@@ -1031,6 +1007,7 @@ public:
virtual my_time_t TIME_to_gmt_sec(const MYSQL_TIME *t, uint *error_code) const;
virtual void gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const;
virtual const String * get_name() const;
+ virtual void get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const;
};
@@ -1098,6 +1075,15 @@ Time_zone_system::gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const
}
+void
+Time_zone_system::get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const
+{
+ uint error;
+ time_t time_sec= TIME_to_gmt_sec(local_TIME, &error);
+ my_tzinfo(time_sec, curr_tz);
+}
+
+
/*
Get name of time zone
@@ -1128,6 +1114,7 @@ public:
uint *error_code) const;
virtual void gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const;
virtual const String * get_name() const;
+ virtual void get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const;
};
@@ -1175,6 +1162,13 @@ Time_zone_utc::gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const
adjust_leap_second(tmp);
}
+void
+Time_zone_utc::get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const
+{
+ strmake_buf(curr_tz->abbreviation, "UTC");
+ curr_tz->seconds_offset= 0;
+}
+
/*
Get name of time zone
@@ -1210,6 +1204,7 @@ public:
virtual my_time_t TIME_to_gmt_sec(const MYSQL_TIME *t, uint *error_code) const;
virtual void gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const;
virtual const String * get_name() const;
+ virtual void get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const;
private:
TIME_ZONE_INFO *tz_info;
const String *tz_name;
@@ -1280,6 +1275,22 @@ Time_zone_db::gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const
adjust_leap_second(tmp);
}
+void
+Time_zone_db::get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const
+{
+ uint error;
+ my_time_t sec_in_utc;
+ const TRAN_TYPE_INFO *ttisp;
+
+ /* Get seconds since epoch. */
+ sec_in_utc= TIME_to_gmt_sec(local_TIME, &error);
+ /* Get local timezone information. */
+ ttisp= find_transition_type(sec_in_utc, tz_info);
+
+ curr_tz->seconds_offset= ttisp->tt_gmtoff;
+ strmake_buf(curr_tz->abbreviation, &(tz_info->chars[ttisp->tt_abbrind]));
+}
+
/*
Get name of time zone
@@ -1309,6 +1320,7 @@ public:
uint *error_code) const;
virtual void gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const;
virtual const String * get_name() const;
+ virtual void get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const;
/*
This have to be public because we want to be able to access it from
my_offset_tzs_get_key() function
@@ -1434,6 +1446,14 @@ Time_zone_offset::get_name() const
return &name;
}
+void
+Time_zone_offset::get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const
+{
+ curr_tz->seconds_offset= offset;
+ const char *name= get_name()->ptr();
+ strmake_buf(curr_tz->abbreviation, name);
+}
+
static Time_zone_utc tz_UTC;
static Time_zone_system tz_SYSTEM;
@@ -1623,6 +1643,8 @@ my_tz_init(THD *org_thd, const char *default_tzname, my_bool bootstrap)
DBUG_RETURN(1);
thd->thread_stack= (char*) &thd;
thd->store_globals();
+ thd->set_query_inner((char*) STRING_WITH_LEN("intern:my_tz_init"),
+ default_charset_info);
/* Init all memory structures that require explicit destruction */
if (my_hash_init(key_memory_tz_storage, &tz_names, &my_charset_latin1, 20, 0,
@@ -1870,15 +1892,14 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
my_time_t ats[TZ_MAX_TIMES];
uchar types[TZ_MAX_TIMES];
TRAN_TYPE_INFO ttis[TZ_MAX_TYPES];
-#ifdef ABBR_ARE_USED
char chars[MY_MAX(TZ_MAX_CHARS + 1, (2 * (MY_TZNAME_MAX + 1)))];
-#endif
/*
Used as a temporary tz_info until we decide that we actually want to
allocate and keep the tz info and tz name in tz_storage.
*/
TIME_ZONE_INFO tmp_tz_info;
memset(&tmp_tz_info, 0, sizeof(TIME_ZONE_INFO));
+ memset(ttis, 0, sizeof(ttis));
DBUG_ENTER("tz_load_from_open_tables");
@@ -1977,7 +1998,6 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
ttis[ttid].tt_gmtoff= (long)table->field[2]->val_int();
ttis[ttid].tt_isdst= (table->field[3]->val_int() > 0);
-#ifdef ABBR_ARE_USED
// FIXME should we do something with duplicates here ?
table->field[4]->val_str(&abbr, &abbr);
if (tmp_tz_info.charcnt + abbr.length() + 1 > sizeof(chars))
@@ -1997,11 +2017,6 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
("time_zone_transition_type table: tz_id=%u tt_id=%u tt_gmtoff=%ld "
"abbr='%s' tt_isdst=%u", tzid, ttid, ttis[ttid].tt_gmtoff,
chars + ttis[ttid].tt_abbrind, ttis[ttid].tt_isdst));
-#else
- DBUG_PRINT("info",
- ("time_zone_transition_type table: tz_id=%u tt_id=%u tt_gmtoff=%ld "
- "tt_isdst=%u", tzid, ttid, ttis[ttid].tt_gmtoff, ttis[ttid].tt_isdst));
-#endif
/* ttid is increasing because we are reading using index */
if (ttid < tmp_tz_info.typecnt)
@@ -2117,9 +2132,7 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
ALIGN_SIZE(sizeof(my_time_t) *
tz_info->timecnt) +
ALIGN_SIZE(tz_info->timecnt) +
-#ifdef ABBR_ARE_USED
ALIGN_SIZE(tz_info->charcnt) +
-#endif
sizeof(TRAN_TYPE_INFO) *
tz_info->typecnt)))
{
@@ -2133,11 +2146,9 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
tz_info->types= (uchar *)alloc_buff;
memcpy(tz_info->types, types, tz_info->timecnt);
alloc_buff+= ALIGN_SIZE(tz_info->timecnt);
-#ifdef ABBR_ARE_USED
tz_info->chars= alloc_buff;
memcpy(tz_info->chars, chars, tz_info->charcnt);
alloc_buff+= ALIGN_SIZE(tz_info->charcnt);
-#endif
tz_info->ttis= (TRAN_TYPE_INFO *)alloc_buff;
memcpy(tz_info->ttis, ttis, tz_info->typecnt * sizeof(TRAN_TYPE_INFO));
@@ -2380,6 +2391,59 @@ void Time_zone::adjust_leap_second(MYSQL_TIME *t)
t->second= 59;
}
+
+/*
+ @brief
+ Check if timestamp<->datetime conversion is guaranteed to be reversible
+ around the given time value.
+*/
+
+bool Time_zone::is_monotone_continuous_around(my_time_t sec) const
+{
+ const my_time_t width= 24 * 60 * 60;
+ /*
+ Let's check that the TIMESTAMP range [sec - width, sec + width]
+ converts back to a DATETIME range [dtmin, dtmax], and the difference
+ (dtmax-dtmin), calculated using DATETIME arithmetics,
+ is also equal to exactly 2*width.
+
+ This should almost guarantee that the TIMESTAMP range around sec
+ is monotone and continuous and thus has no DST changes or leap seconds.
+
+ It's still possible that there are two or more timezone offset changes
+ in the given range. But there are no such time zones according to
+ our knowledge.
+ Note, DST changes and leap seconds do not interfere on a short time_t range:
+ - Leap seconds happen in winter and summer
+ - DST changes happen in spring and fall
+
+ The largest time zone change that ever happened in a single place
+ was 24 hours:
+ - from SST (UTC-11) - the American Samoa Time Zone
+ - to WST (UTC+13) - the Independent State of Samoa Time Zone
+ The Independent State of Samoa used SST until it moved across
+ the International Date Line at the end of 29 December 2011, to WST.
+ It is now 24 hours ahead of American Samoa
+ (and 25 hours in Southern hemisphere summer).
+ Let's use 24 hours as width (48 hours range total).
+ */
+
+ if (sec < width || sec > TIMESTAMP_MAX_VALUE - width)
+ return false;
+
+ MYSQL_TIME dtmin, dtmax;
+ gmt_sec_to_TIME(&dtmin, sec - width);
+ gmt_sec_to_TIME(&dtmax, sec + width);
+
+ ulonglong seconds;
+ ulong useconds;
+ if (calc_time_diff(&dtmax, &dtmin, 1, &seconds, &useconds))
+ return false; // dtmax is smaller than dtmin, should not happen.
+ if (seconds != (ulonglong) width * 2)
+ return false; // Anomalies found (DST changes or leap seconds)
+ return true;
+}
+
#endif /* !defined(TESTTIME) && !defined(TZINFO2SQL) */
@@ -2666,12 +2730,6 @@ static my_bool get_one_option(const struct my_option *, const char *,
const char *);
C_MODE_END
-static void print_version(void)
-{
- printf("%s Ver %s Distrib %s, for %s (%s)\n",my_progname, PROGRAM_VERSION,
- MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
-}
-
static const char *default_timezone_dir= "/usr/share/zoneinfo/";
diff --git a/sql/tztime.h b/sql/tztime.h
index 6d8af62e..7c96f8b9 100644
--- a/sql/tztime.h
+++ b/sql/tztime.h
@@ -33,11 +33,12 @@ class THD;
class THD;
/**
- This class represents abstract time zone and provides
+ This class represents abstract time zone and provides
basic interface for MYSQL_TIME <-> my_time_t conversion.
- Actual time zones which are specified by DB, or via offset
+ Actual time zones which are specified by DB, or via offset
or use system functions are its descendants.
*/
+
class Time_zone: public Sql_alloc
{
public:
@@ -62,12 +63,21 @@ public:
*/
virtual const String * get_name() const = 0;
+ virtual void get_timezone_information(struct my_tz* curr_tz, const MYSQL_TIME *local_TIME) const = 0;
+
/**
We need this only for surpressing warnings, objects of this type are
allocated on MEM_ROOT and should not require destruction.
*/
virtual ~Time_zone() = default;
+ /**
+ Check if the time zone does not have any anomalies around "sec", such as:
+ - DST changes (spring forward, fall back)
+ - leap seconds (the 60-th second)
+ */
+ bool is_monotone_continuous_around(my_time_t sec) const;
+
protected:
static inline void adjust_leap_second(MYSQL_TIME *t);
};
diff --git a/sql/uniques.cc b/sql/uniques.cc
index 572d80f0..36725e80 100644
--- a/sql/uniques.cc
+++ b/sql/uniques.cc
@@ -103,7 +103,7 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg,
if (!max_elements)
max_elements= 1;
- (void) open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE,
+ (void) open_cached_file(&file, mysql_tmpdir, TEMP_PREFIX, DISK_CHUNK_SIZE,
MYF(MY_WME));
}
@@ -156,10 +156,10 @@ inline double log2_n_fact(double x)
the same length, so each of total_buf_size elements will be added to a sort
heap with (n_buffers-1) elements. This gives the comparison cost:
- total_buf_elems* log2(n_buffers) / TIME_FOR_COMPARE_ROWID;
+ total_buf_elems* log2(n_buffers) * ROWID_COMPARE_COST;
*/
-static double get_merge_buffers_cost(uint *buff_elems, uint elem_size,
+static double get_merge_buffers_cost(THD *thd, uint *buff_elems, uint elem_size,
uint *first, uint *last,
double compare_factor)
{
@@ -170,9 +170,9 @@ static double get_merge_buffers_cost(uint *buff_elems, uint elem_size,
size_t n_buffers= last - first + 1;
- /* Using log2(n)=log(n)/log(2) formula */
- return 2*((double)total_buf_elems*elem_size) / IO_SIZE +
- total_buf_elems*log((double) n_buffers) / (compare_factor * M_LN2);
+ return (2*((double)total_buf_elems*elem_size) / IO_SIZE *
+ default_optimizer_costs.disk_read_cost +
+ total_buf_elems*log2((double) n_buffers) * compare_factor);
}
@@ -185,6 +185,7 @@ static double get_merge_buffers_cost(uint *buff_elems, uint elem_size,
SYNOPSIS
get_merge_many_buffs_cost()
+ thd THD, used to get disk_read_cost
buffer buffer space for temporary data, at least
Unique::get_cost_calc_buff_size bytes
maxbuffer # of full buffers
@@ -203,7 +204,8 @@ static double get_merge_buffers_cost(uint *buff_elems, uint elem_size,
Cost of merge in disk seeks.
*/
-static double get_merge_many_buffs_cost(uint *buffer,
+static double get_merge_many_buffs_cost(THD *thd,
+ uint *buffer,
uint maxbuffer, uint max_n_elems,
uint last_n_elems, int elem_size,
double compare_factor)
@@ -231,13 +233,13 @@ static double get_merge_many_buffs_cost(uint *buffer,
uint lastbuff= 0;
for (i = 0; i <= (int) maxbuffer - MERGEBUFF*3/2; i += MERGEBUFF)
{
- total_cost+=get_merge_buffers_cost(buff_elems, elem_size,
+ total_cost+=get_merge_buffers_cost(thd, buff_elems, elem_size,
buff_elems + i,
buff_elems + i + MERGEBUFF-1,
compare_factor);
lastbuff++;
}
- total_cost+=get_merge_buffers_cost(buff_elems, elem_size,
+ total_cost+=get_merge_buffers_cost(thd, buff_elems, elem_size,
buff_elems + i,
buff_elems + maxbuffer,
compare_factor);
@@ -246,7 +248,7 @@ static double get_merge_many_buffs_cost(uint *buffer,
}
/* Simulate final merge_buff call. */
- total_cost += get_merge_buffers_cost(buff_elems, elem_size,
+ total_cost += get_merge_buffers_cost(thd, buff_elems, elem_size,
buff_elems, buff_elems + maxbuffer,
compare_factor);
return total_cost;
@@ -304,7 +306,7 @@ static double get_merge_many_buffs_cost(uint *buffer,
these will be random seeks.
*/
-double Unique::get_use_cost(uint *buffer, size_t nkeys, uint key_size,
+double Unique::get_use_cost(THD *thd, uint *buffer, size_t nkeys, uint key_size,
size_t max_in_memory_size,
double compare_factor,
bool intersect_fl, bool *in_memory)
@@ -312,7 +314,7 @@ double Unique::get_use_cost(uint *buffer, size_t nkeys, uint key_size,
size_t max_elements_in_tree;
size_t last_tree_elems;
size_t n_full_trees; /* number of trees in unique - 1 */
- double result;
+ double result, disk_read_cost;
max_elements_in_tree= ((size_t) max_in_memory_size /
ALIGN_SIZE(sizeof(TREE_ELEMENT)+key_size));
@@ -327,7 +329,7 @@ double Unique::get_use_cost(uint *buffer, size_t nkeys, uint key_size,
result= 2*log2_n_fact(last_tree_elems + 1.0);
if (n_full_trees)
result+= n_full_trees * log2_n_fact(max_elements_in_tree + 1.0);
- result /= compare_factor;
+ result *= compare_factor;
DBUG_PRINT("info",("unique trees sizes: %u=%u*%u + %u", (uint)nkeys,
(uint)n_full_trees,
@@ -345,14 +347,15 @@ double Unique::get_use_cost(uint *buffer, size_t nkeys, uint key_size,
First, add cost of writing all trees to disk, assuming that all disk
writes are sequential.
*/
- result += DISK_SEEK_BASE_COST * n_full_trees *
- ceil(((double) key_size)*max_elements_in_tree / IO_SIZE);
- result += DISK_SEEK_BASE_COST * ceil(((double) key_size)*last_tree_elems / IO_SIZE);
+ disk_read_cost= default_optimizer_costs.disk_read_cost;
+ result += disk_read_cost * n_full_trees *
+ ceil(((double) key_size)*max_elements_in_tree / DISK_CHUNK_SIZE);
+ result += disk_read_cost * ceil(((double) key_size)*last_tree_elems / DISK_CHUNK_SIZE);
/* Cost of merge */
if (intersect_fl)
key_size+= sizeof(element_count);
- double merge_cost= get_merge_many_buffs_cost(buffer, (uint)n_full_trees,
+ double merge_cost= get_merge_many_buffs_cost(thd, buffer, (uint)n_full_trees,
(uint)max_elements_in_tree,
(uint)last_tree_elems, key_size,
compare_factor);
@@ -361,7 +364,7 @@ double Unique::get_use_cost(uint *buffer, size_t nkeys, uint key_size,
Add cost of reading the resulting sequence, assuming there were no
duplicate elements.
*/
- result += ceil((double)key_size*nkeys/IO_SIZE);
+ result+= (ceil((double)key_size*nkeys/IO_SIZE) * disk_read_cost);
return result;
}
@@ -716,12 +719,12 @@ bool Unique::merge(TABLE *table, uchar *buff, size_t buff_size,
/* Open cached file for table records if it isn't open */
if (! my_b_inited(outfile) &&
- open_cached_file(outfile,mysql_tmpdir,TEMP_PREFIX,READ_RECORD_BUFFER,
+ open_cached_file(outfile, mysql_tmpdir, TEMP_PREFIX, DISK_CHUNK_SIZE,
MYF(MY_WME)))
return 1;
bzero((char*) &sort_param,sizeof(sort_param));
- sort_param.max_rows= elements;
+ sort_param.limit_rows= elements;
sort_param.sort_form= table;
sort_param.rec_length= sort_param.sort_length= sort_param.ref_length=
full_size;
diff --git a/sql/uniques.h b/sql/uniques.h
index 7e12a391..ecc49794 100644
--- a/sql/uniques.h
+++ b/sql/uniques.h
@@ -75,10 +75,10 @@ public:
inline static double get_search_cost(ulonglong tree_elems,
double compare_factor)
{
- return log((double) tree_elems) / (compare_factor * M_LN2);
+ return log((double) tree_elems) * compare_factor / M_LN2;
}
- static double get_use_cost(uint *buffer, size_t nkeys, uint key_size,
+ static double get_use_cost(THD *thd, uint *buffer, size_t nkeys, uint key_size,
size_t max_in_memory_size, double compare_factor,
bool intersect_fl, bool *in_memory);
inline static int get_cost_calc_buff_size(size_t nkeys, uint key_size,
diff --git a/sql/unireg.cc b/sql/unireg.cc
index 05a4fbb1..104d7e20 100644
--- a/sql/unireg.cc
+++ b/sql/unireg.cc
@@ -802,7 +802,7 @@ static bool pack_vcols(THD *thd, String *buf, List<Create_field> &create_fields,
{
if (field->vcol_info && field->vcol_info->expr)
if (pack_expression(buf, field->vcol_info, field_nr,
- field->vcol_info->stored_in_db
+ field->vcol_info->is_stored()
? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL))
return 1;
if (field->has_default_expression() && !field->has_default_now_unireg_check())
@@ -930,7 +930,7 @@ static bool pack_header(THD *thd, uchar *forminfo,
hex_length= length * 2;
tmpint->type_lengths[pos]= (uint) hex_length;
tmpint->type_names[pos]= dst= (char*) thd->alloc(hex_length + 1);
- octet2hex(dst, src, length);
+ octet2hex(dst, (uchar*)src, length);
}
}
diff --git a/sql/unireg.h b/sql/unireg.h
index fa657a26..7a7e97c0 100644
--- a/sql/unireg.h
+++ b/sql/unireg.h
@@ -130,6 +130,13 @@
*/
#define OPEN_TRIGGER_ONLY (1 << 21)
+/**
+ This flag is used in information schema to determine if handling funciton
+ can treat open result extensively and provide some user output even if
+ table open fails.
+*/
+#define I_S_EXTENDED_ERROR_HANDLING (1 << 22)
+
/*
Minimum length pattern before Turbo Boyer-Moore is used
for SELECT "text" LIKE "%pattern%", excluding the two
diff --git a/sql/vers_string.h b/sql/vers_string.h
index c5be9c35..93740ea8 100644
--- a/sql/vers_string.h
+++ b/sql/vers_string.h
@@ -57,9 +57,6 @@ public:
Lex_cstring_with_compare(const char *_str, size_t _len) :
Lex_cstring(_str, _len)
{ }
- Lex_cstring_with_compare(const LEX_STRING src) :
- Lex_cstring(src.str, src.length)
- { }
Lex_cstring_with_compare(const LEX_CSTRING src) : Lex_cstring(src.str, src.length)
{ }
Lex_cstring_with_compare(const char *_str) : Lex_cstring(_str, strlen(_str))
diff --git a/sql/win_tzname_data.h b/sql/win_tzname_data.h
deleted file mode 100644
index 8a240118..00000000
--- a/sql/win_tzname_data.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* This file was generated using gen_win_tzname_data.ps1 */
-{L"Dateline Standard Time","Etc/GMT+12"},
-{L"UTC-11","Etc/GMT+11"},
-{L"Aleutian Standard Time","America/Adak"},
-{L"Hawaiian Standard Time","Pacific/Honolulu"},
-{L"Marquesas Standard Time","Pacific/Marquesas"},
-{L"Alaskan Standard Time","America/Anchorage"},
-{L"UTC-09","Etc/GMT+9"},
-{L"Pacific Standard Time (Mexico)","America/Tijuana"},
-{L"UTC-08","Etc/GMT+8"},
-{L"Pacific Standard Time","America/Los_Angeles"},
-{L"US Mountain Standard Time","America/Phoenix"},
-{L"Mountain Standard Time (Mexico)","America/Chihuahua"},
-{L"Mountain Standard Time","America/Denver"},
-{L"Yukon Standard Time","America/Whitehorse"},
-{L"Central America Standard Time","America/Guatemala"},
-{L"Central Standard Time","America/Chicago"},
-{L"Easter Island Standard Time","Pacific/Easter"},
-{L"Central Standard Time (Mexico)","America/Mexico_City"},
-{L"Canada Central Standard Time","America/Regina"},
-{L"SA Pacific Standard Time","America/Bogota"},
-{L"Eastern Standard Time (Mexico)","America/Cancun"},
-{L"Eastern Standard Time","America/New_York"},
-{L"Haiti Standard Time","America/Port-au-Prince"},
-{L"Cuba Standard Time","America/Havana"},
-{L"US Eastern Standard Time","America/Indianapolis"},
-{L"Turks And Caicos Standard Time","America/Grand_Turk"},
-{L"Paraguay Standard Time","America/Asuncion"},
-{L"Atlantic Standard Time","America/Halifax"},
-{L"Venezuela Standard Time","America/Caracas"},
-{L"Central Brazilian Standard Time","America/Cuiaba"},
-{L"SA Western Standard Time","America/La_Paz"},
-{L"Pacific SA Standard Time","America/Santiago"},
-{L"Newfoundland Standard Time","America/St_Johns"},
-{L"Tocantins Standard Time","America/Araguaina"},
-{L"E. South America Standard Time","America/Sao_Paulo"},
-{L"SA Eastern Standard Time","America/Cayenne"},
-{L"Argentina Standard Time","America/Buenos_Aires"},
-{L"Greenland Standard Time","America/Godthab"},
-{L"Montevideo Standard Time","America/Montevideo"},
-{L"Magallanes Standard Time","America/Punta_Arenas"},
-{L"Saint Pierre Standard Time","America/Miquelon"},
-{L"Bahia Standard Time","America/Bahia"},
-{L"UTC-02","Etc/GMT+2"},
-{L"Azores Standard Time","Atlantic/Azores"},
-{L"Cape Verde Standard Time","Atlantic/Cape_Verde"},
-{L"UTC","Etc/UTC"},
-{L"GMT Standard Time","Europe/London"},
-{L"Greenwich Standard Time","Atlantic/Reykjavik"},
-{L"Sao Tome Standard Time","Africa/Sao_Tome"},
-{L"Morocco Standard Time","Africa/Casablanca"},
-{L"W. Europe Standard Time","Europe/Berlin"},
-{L"Central Europe Standard Time","Europe/Budapest"},
-{L"Romance Standard Time","Europe/Paris"},
-{L"Central European Standard Time","Europe/Warsaw"},
-{L"W. Central Africa Standard Time","Africa/Lagos"},
-{L"Jordan Standard Time","Asia/Amman"},
-{L"GTB Standard Time","Europe/Bucharest"},
-{L"Middle East Standard Time","Asia/Beirut"},
-{L"Egypt Standard Time","Africa/Cairo"},
-{L"E. Europe Standard Time","Europe/Chisinau"},
-{L"Syria Standard Time","Asia/Damascus"},
-{L"West Bank Standard Time","Asia/Hebron"},
-{L"South Africa Standard Time","Africa/Johannesburg"},
-{L"FLE Standard Time","Europe/Kiev"},
-{L"Israel Standard Time","Asia/Jerusalem"},
-{L"South Sudan Standard Time","Africa/Juba"},
-{L"Kaliningrad Standard Time","Europe/Kaliningrad"},
-{L"Sudan Standard Time","Africa/Khartoum"},
-{L"Libya Standard Time","Africa/Tripoli"},
-{L"Namibia Standard Time","Africa/Windhoek"},
-{L"Arabic Standard Time","Asia/Baghdad"},
-{L"Turkey Standard Time","Europe/Istanbul"},
-{L"Arab Standard Time","Asia/Riyadh"},
-{L"Belarus Standard Time","Europe/Minsk"},
-{L"Russian Standard Time","Europe/Moscow"},
-{L"E. Africa Standard Time","Africa/Nairobi"},
-{L"Iran Standard Time","Asia/Tehran"},
-{L"Arabian Standard Time","Asia/Dubai"},
-{L"Astrakhan Standard Time","Europe/Astrakhan"},
-{L"Azerbaijan Standard Time","Asia/Baku"},
-{L"Russia Time Zone 3","Europe/Samara"},
-{L"Mauritius Standard Time","Indian/Mauritius"},
-{L"Saratov Standard Time","Europe/Saratov"},
-{L"Georgian Standard Time","Asia/Tbilisi"},
-{L"Volgograd Standard Time","Europe/Volgograd"},
-{L"Caucasus Standard Time","Asia/Yerevan"},
-{L"Afghanistan Standard Time","Asia/Kabul"},
-{L"West Asia Standard Time","Asia/Tashkent"},
-{L"Ekaterinburg Standard Time","Asia/Yekaterinburg"},
-{L"Pakistan Standard Time","Asia/Karachi"},
-{L"Qyzylorda Standard Time","Asia/Qyzylorda"},
-{L"India Standard Time","Asia/Calcutta"},
-{L"Sri Lanka Standard Time","Asia/Colombo"},
-{L"Nepal Standard Time","Asia/Katmandu"},
-{L"Central Asia Standard Time","Asia/Almaty"},
-{L"Bangladesh Standard Time","Asia/Dhaka"},
-{L"Omsk Standard Time","Asia/Omsk"},
-{L"Myanmar Standard Time","Asia/Rangoon"},
-{L"SE Asia Standard Time","Asia/Bangkok"},
-{L"Altai Standard Time","Asia/Barnaul"},
-{L"W. Mongolia Standard Time","Asia/Hovd"},
-{L"North Asia Standard Time","Asia/Krasnoyarsk"},
-{L"N. Central Asia Standard Time","Asia/Novosibirsk"},
-{L"Tomsk Standard Time","Asia/Tomsk"},
-{L"China Standard Time","Asia/Shanghai"},
-{L"North Asia East Standard Time","Asia/Irkutsk"},
-{L"Singapore Standard Time","Asia/Singapore"},
-{L"W. Australia Standard Time","Australia/Perth"},
-{L"Taipei Standard Time","Asia/Taipei"},
-{L"Ulaanbaatar Standard Time","Asia/Ulaanbaatar"},
-{L"Aus Central W. Standard Time","Australia/Eucla"},
-{L"Transbaikal Standard Time","Asia/Chita"},
-{L"Tokyo Standard Time","Asia/Tokyo"},
-{L"North Korea Standard Time","Asia/Pyongyang"},
-{L"Korea Standard Time","Asia/Seoul"},
-{L"Yakutsk Standard Time","Asia/Yakutsk"},
-{L"Cen. Australia Standard Time","Australia/Adelaide"},
-{L"AUS Central Standard Time","Australia/Darwin"},
-{L"E. Australia Standard Time","Australia/Brisbane"},
-{L"AUS Eastern Standard Time","Australia/Sydney"},
-{L"West Pacific Standard Time","Pacific/Port_Moresby"},
-{L"Tasmania Standard Time","Australia/Hobart"},
-{L"Vladivostok Standard Time","Asia/Vladivostok"},
-{L"Lord Howe Standard Time","Australia/Lord_Howe"},
-{L"Bougainville Standard Time","Pacific/Bougainville"},
-{L"Russia Time Zone 10","Asia/Srednekolymsk"},
-{L"Magadan Standard Time","Asia/Magadan"},
-{L"Norfolk Standard Time","Pacific/Norfolk"},
-{L"Sakhalin Standard Time","Asia/Sakhalin"},
-{L"Central Pacific Standard Time","Pacific/Guadalcanal"},
-{L"Russia Time Zone 11","Asia/Kamchatka"},
-{L"New Zealand Standard Time","Pacific/Auckland"},
-{L"UTC+12","Etc/GMT-12"},
-{L"Fiji Standard Time","Pacific/Fiji"},
-{L"Chatham Islands Standard Time","Pacific/Chatham"},
-{L"UTC+13","Etc/GMT-13"},
-{L"Tonga Standard Time","Pacific/Tongatapu"},
-{L"Samoa Standard Time","Pacific/Apia"},
-{L"Line Islands Standard Time","Pacific/Kiritimati"},
diff --git a/sql/winservice.c b/sql/winservice.c
index d4e3bb09..c5fba810 100644
--- a/sql/winservice.c
+++ b/sql/winservice.c
@@ -305,19 +305,19 @@ int get_mysql_service_properties(const wchar_t *bin_path,
}
/*
- If version could not be determined so far, try mysql_upgrade_info in
+ If version could not be determined so far, try mariadb_upgrade_info in
database directory.
*/
if(props->version_major == 0)
{
char buf[MAX_PATH];
- FILE *mysql_upgrade_info;
+ FILE *mariadb_upgrade_info;
- sprintf_s(buf, MAX_PATH, "%s\\mysql_upgrade_info", props->datadir);
- mysql_upgrade_info= fopen(buf, "r");
- if(mysql_upgrade_info)
+ sprintf_s(buf, MAX_PATH, "%s\\mariadb_upgrade_info", props->datadir);
+ mariadb_upgrade_info= fopen(buf, "r");
+ if(mariadb_upgrade_info)
{
- if (fgets(buf, MAX_PATH, mysql_upgrade_info))
+ if (fgets(buf, MAX_PATH, mariadb_upgrade_info))
{
int major,minor,patch;
if (sscanf(buf, "%d.%d.%d", &major, &minor, &patch) == 3)
diff --git a/sql/wsrep_binlog.cc b/sql/wsrep_binlog.cc
index 84392fac..61836fbf 100644
--- a/sql/wsrep_binlog.cc
+++ b/sql/wsrep_binlog.cc
@@ -236,7 +236,9 @@ void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf,
File file;
IO_CACHE cache;
- Log_event_writer writer(&cache, 0);
+ enum_binlog_checksum_alg checksum_alg=
+ (enum_binlog_checksum_alg) binlog_checksum_options;
+ Log_event_writer writer(&cache, 0, checksum_alg, NULL);
Format_description_log_event *ev= 0;
longlong thd_trx_seqno= (long long)wsrep_thd_trx_seqno(thd);
@@ -288,7 +290,7 @@ void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf,
to the dump file).
*/
ev= (thd->wsrep_applier) ? wsrep_get_apply_format(thd) :
- (new Format_description_log_event(4));
+ (new Format_description_log_event(4, NULL, checksum_alg));
if (writer.write(ev) || my_b_write(&cache, (uchar*)rbr_buf, buf_len) ||
flush_io_cache(&cache))
diff --git a/sql/wsrep_check_opts.cc b/sql/wsrep_check_opts.cc
index b17a5f16..f35bda38 100644
--- a/sql/wsrep_check_opts.cc
+++ b/sql/wsrep_check_opts.cc
@@ -85,7 +85,7 @@ int wsrep_check_opts()
}
}
- if (strcasecmp(wsrep_provider, "NONE"))
+ if (strcasecmp(wsrep_provider, WSREP_NONE))
{
if (global_system_variables.binlog_format != BINLOG_FORMAT_ROW)
{
diff --git a/sql/wsrep_client_service.cc b/sql/wsrep_client_service.cc
index e26cac50..4c172d88 100644
--- a/sql/wsrep_client_service.cc
+++ b/sql/wsrep_client_service.cc
@@ -243,7 +243,8 @@ size_t Wsrep_client_service::bytes_generated() const
if (cache)
{
size_t pending_rows_event_length= 0;
- if (Rows_log_event* ev= m_thd->binlog_get_pending_rows_event(true))
+ auto *cache_mngr= m_thd->binlog_get_cache_mngr();
+ if (auto* ev= binlog_get_pending_rows_event(cache_mngr, true))
{
pending_rows_event_length= ev->get_data_size();
}
diff --git a/sql/wsrep_event_service.cc b/sql/wsrep_event_service.cc
new file mode 100644
index 00000000..a4fea6d4
--- /dev/null
+++ b/sql/wsrep_event_service.cc
@@ -0,0 +1,23 @@
+/* Copyright 2021-2022 Codership Oy <info@codership.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+#include "wsrep_event_service.h"
+
+wsrep::event_service*
+Wsrep_event_service::instance()
+{
+ static Wsrep_event_service instance;
+ return &instance;
+}
diff --git a/sql/wsrep_event_service.h b/sql/wsrep_event_service.h
new file mode 100644
index 00000000..e28ffeec
--- /dev/null
+++ b/sql/wsrep_event_service.h
@@ -0,0 +1,49 @@
+/* Copyright 2021-2022 Codership Oy <info@codership.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+#ifndef WSREP_EVENT_SERVICE_H
+#define WSREP_EVENT_SERVICE_H
+
+/* wsrep-lib */
+#include "wsrep/event_service.hpp"
+
+/* implementation */
+#include "wsrep_status.h"
+
+class Wsrep_event_service : public wsrep::event_service
+{
+public:
+
+ void process_event(const std::string& name, const std::string& value)
+ override
+ {
+ if (name == "progress")
+ {
+ Wsrep_status::report_progress(value);
+ }
+ else if (name == "event")
+ {
+ Wsrep_status::report_event(value);
+ }
+ else
+ {
+ // not interested in the event
+ }
+ }
+
+ static wsrep::event_service* instance();
+};
+
+#endif /* WSREP_EVENT_SERVICE_H */
diff --git a/sql/wsrep_high_priority_service.cc b/sql/wsrep_high_priority_service.cc
index 7eb3f078..8c301267 100644
--- a/sql/wsrep_high_priority_service.cc
+++ b/sql/wsrep_high_priority_service.cc
@@ -30,6 +30,7 @@
#define NUMBER_OF_FIELDS_TO_IDENTIFY_WORKER 2
#include "slave.h"
#include "rpl_mi.h"
+#include "rpl_constants.h"
namespace
{
@@ -70,7 +71,7 @@ static rpl_group_info* wsrep_relay_group_init(THD* thd, const char* log_fname)
if (!rli->relay_log.description_event_for_exec)
{
rli->relay_log.description_event_for_exec=
- new Format_description_log_event(4);
+ new Format_description_log_event(4, 0, BINLOG_CHECKSUM_ALG_OFF);
}
static LEX_CSTRING connection_name= { STRING_WITH_LEN("wsrep") };
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 5c2e0cb9..db70fbe6 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -57,7 +57,6 @@
#include <sstream>
/* wsrep-lib */
-Wsrep_server_state* Wsrep_server_state::m_instance;
my_bool wsrep_emulate_bin_log= FALSE; // activating parts of binlog interface
my_bool wsrep_preordered_opt= FALSE;
@@ -871,12 +870,13 @@ int wsrep_init()
wsrep_init_position();
wsrep_sst_auth_init();
- if (strlen(wsrep_provider)== 0 ||
- !strcmp(wsrep_provider, WSREP_NONE))
+ if (!*wsrep_provider ||
+ !strcasecmp(wsrep_provider, WSREP_NONE))
{
// enable normal operation in case no provider is specified
global_system_variables.wsrep_on= 0;
- int err= Wsrep_server_state::instance().load_provider(wsrep_provider, wsrep_provider_options ? wsrep_provider_options : "");
+ int err= Wsrep_server_state::init_provider(
+ wsrep_provider, wsrep_provider_options ? wsrep_provider_options : "");
if (err)
{
DBUG_PRINT("wsrep",("wsrep::init() failed: %d", err));
@@ -918,14 +918,14 @@ int wsrep_init()
"wsrep_trx_fragment_size to 0 or use wsrep_provider that "
"supports streaming replication.",
wsrep_provider, global_system_variables.wsrep_trx_fragment_size);
- Wsrep_server_state::instance().unload_provider();
+ Wsrep_server_state::instance().deinit_provider();
Wsrep_server_state::deinit_provider_services();
return 1;
}
/* Now WSREP is fully initialized */
global_system_variables.wsrep_on= 1;
- WSREP_ON_= wsrep_provider && strcmp(wsrep_provider, WSREP_NONE);
+ WSREP_ON_= wsrep_provider && *wsrep_provider && strcasecmp(wsrep_provider, WSREP_NONE);
wsrep_service_started= 1;
wsrep_init_provider_status_variables();
@@ -934,7 +934,6 @@ int wsrep_init()
WSREP_DEBUG("SR storage init for: %s",
(wsrep_SR_store_type == WSREP_SR_STORE_TABLE) ? "table" : "void");
-
return 0;
}
@@ -995,7 +994,8 @@ void wsrep_init_startup (bool sst_first)
wsrep_plugins_pre_init();
/* Skip replication start if dummy wsrep provider is loaded */
- if (!strcmp(wsrep_provider, WSREP_NONE)) return;
+ if (!wsrep_provider || !*wsrep_provider ||
+ !strcasecmp(wsrep_provider, WSREP_NONE)) return;
/* Skip replication start if no cluster address */
if (!wsrep_cluster_address_exists()) return;
@@ -1009,6 +1009,11 @@ void wsrep_init_startup (bool sst_first)
wsrep_create_rollbacker();
wsrep_create_appliers(1);
+ if (Wsrep_server_state::init_options())
+ {
+ WSREP_WARN("Failed to initialize provider options");
+ }
+
Wsrep_server_state& server_state= Wsrep_server_state::instance();
/*
If the SST happens before server initialization, wait until the server
@@ -1040,7 +1045,7 @@ void wsrep_deinit(bool free_options)
DBUG_ASSERT(wsrep_inited == 1);
WSREP_DEBUG("wsrep_deinit");
- Wsrep_server_state::instance().unload_provider();
+ Wsrep_server_state::deinit_provider();
Wsrep_server_state::deinit_provider_services();
provider_name[0]= '\0';
@@ -1596,7 +1601,7 @@ bool wsrep_sync_wait (THD* thd, uint mask)
{
case wsrep::e_not_supported_error:
msg= "synchronous reads by wsrep backend. "
- "Please unset wsrep_causal_reads variable.";
+ "Please unset wsrep_sync_wait variable.";
err= ER_NOT_SUPPORTED_YET;
break;
default:
@@ -2191,16 +2196,16 @@ int wsrep_to_buf_helper(
THD* thd, const char *query, uint query_len, uchar** buf, size_t* buf_len)
{
IO_CACHE tmp_io_cache;
- Log_event_writer writer(&tmp_io_cache, 0);
+ enum_binlog_checksum_alg current_binlog_check_alg=
+ (enum_binlog_checksum_alg) binlog_checksum_options;
+ Log_event_writer writer(&tmp_io_cache, NULL, current_binlog_check_alg, NULL);
if (open_cached_file(&tmp_io_cache, mysql_tmpdir, TEMP_PREFIX,
65536, MYF(MY_WME)))
return 1;
int ret(0);
- enum enum_binlog_checksum_alg current_binlog_check_alg=
- (enum_binlog_checksum_alg) binlog_checksum_options;
- Format_description_log_event *tmp_fd= new Format_description_log_event(4);
- tmp_fd->checksum_alg= current_binlog_check_alg;
+ Format_description_log_event *tmp_fd=
+ new Format_description_log_event(4, NULL, current_binlog_check_alg);
writer.write(tmp_fd);
delete tmp_fd;
@@ -2249,7 +2254,6 @@ int wsrep_to_buf_helper(
Query_log_event ev(thd, thd->wsrep_TOI_pre_query,
thd->wsrep_TOI_pre_query_len,
FALSE, FALSE, FALSE, 0);
- ev.checksum_alg= current_binlog_check_alg;
if (writer.write(&ev)) ret= 1;
}
@@ -2258,7 +2262,6 @@ int wsrep_to_buf_helper(
/* WSREP GTID mode, we need to change server_id */
if (wsrep_gtid_mode && !thd->variables.gtid_seq_no)
ev.server_id= wsrep_gtid_server.server_id;
- ev.checksum_alg= current_binlog_check_alg;
if (!ret && writer.write(&ev)) ret= 1;
if (!ret && wsrep_write_cache_buf(&tmp_io_cache, buf, buf_len)) ret= 1;
close_cached_file(&tmp_io_cache);
@@ -3543,7 +3546,7 @@ ignore_error:
WSREP_WARN("Ignoring error '%s' on query. "
"Default database: '%s'. Query: '%s', Error_code: %d",
thd->get_stmt_da()->message(),
- print_slave_db_safe(thd->db.str),
+ safe_str(thd->db.str),
thd->query(),
error);
return 1;
diff --git a/sql/wsrep_plugin.cc b/sql/wsrep_plugin.cc
index 63bdc0a4..644dc921 100644
--- a/sql/wsrep_plugin.cc
+++ b/sql/wsrep_plugin.cc
@@ -1,4 +1,4 @@
-/* Copyright 2016 Codership Oy <http://www.codership.com>
+/* Copyright 2016-2021 Codership Oy <http://www.codership.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,11 +13,329 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */
-#include "wsrep_trans_observer.h"
-#include "wsrep_mysqld.h"
+/*
+ Wsrep plugin comes in two parts, wsrep_plugin and wsrep_provider_plugin.
+
+ If plugin-wsrep-provider=ON, wsrep_provider_options variable is disabled,
+ in favor of single options which are initialized from provider.
+*/
+
+#include "sql_plugin.h"
+#include "sql_priv.h"
+#include "sql_class.h"
+#include "set_var.h"
+#include "my_global.h"
+#include "mysqld_error.h"
#include <mysql/plugin.h>
+#include "wsrep_mysqld.h"
+#include "wsrep/provider_options.hpp"
+#include "wsrep_server_state.h"
+#include "wsrep_var.h" // wsrep_refresh_provider_options()
+
+#ifdef WITH_WSREP
+static bool provider_plugin_enabled= false;
+
+/* Prototype for provider system variables */
+static char *dummy_str= 0;
+__attribute__((unused))
+static MYSQL_SYSVAR_STR(proto_string, dummy_str, 0, 0, 0, 0, "");
+
+
+bool wsrep_provider_plugin_enabled()
+{
+ return provider_plugin_enabled;
+}
+
+/* Returns the name of the variable without prefix */
+static const char *sysvar_name(struct st_mysql_sys_var *var)
+{
+ const char *var_name= ((decltype(mysql_sysvar_proto_string) *) var)->name;
+ long unsigned int prefix_len= sizeof("wsrep_provider_") - 1;
+ return &var_name[prefix_len];
+}
+
+/* Returns option corresponding to the given sysvar */
+static const wsrep::provider_options::option *
+sysvar_to_option(struct st_mysql_sys_var *var)
+{
+ auto options= Wsrep_server_state::get_options();
+ if (!options)
+ {
+ return nullptr;
+ }
+ return options->get_option(sysvar_name(var));
+}
+
+/* Make a boolean option value */
+static std::unique_ptr<wsrep::provider_options::option_value>
+make_option_value(my_bool value)
+{
+ return std::unique_ptr<wsrep::provider_options::option_value>(
+ new wsrep::provider_options::option_value_bool(value));
+}
+
+/* Make a string option value */
+static std::unique_ptr<wsrep::provider_options::option_value>
+make_option_value(const char *value)
+{
+ return std::unique_ptr<wsrep::provider_options::option_value>(
+ new wsrep::provider_options::option_value_string(value));
+}
+
+/* Make a integer option value */
+static std::unique_ptr<wsrep::provider_options::option_value>
+make_option_value(long long value)
+{
+ return std::unique_ptr<wsrep::provider_options::option_value>(
+ new wsrep::provider_options::option_value_int(value));
+}
+
+/* Make a double option value */
+static std::unique_ptr<wsrep::provider_options::option_value>
+make_option_value(double value)
+{
+ return std::unique_ptr<wsrep::provider_options::option_value>(
+ new wsrep::provider_options::option_value_double(value));
+}
+
+/* Helper to get the actual value out of option_value */
+template <class T>
+static T get_option_value(wsrep::provider_options::option_value *value)
+{
+ return *((T *) value->get_ptr());
+}
+
+/* Same as above, specialized for strings */
+template <>
+char *get_option_value(wsrep::provider_options::option_value *value)
+{
+ return (char *) value->get_ptr();
+}
+
+/* Update function for sysvars */
+template <class T>
+static void wsrep_provider_sysvar_update(THD *thd,
+ struct st_mysql_sys_var *var,
+ void *var_ptr, const void *save)
+{
+ auto opt= sysvar_to_option(var);
+ if (!opt)
+ {
+ WSREP_ERROR("Could not match var to option");
+ my_error(ER_UNKNOWN_ERROR, MYF(0));
+ return;
+ }
+
+ T new_value= *((T *) save);
+
+ auto options= Wsrep_server_state::get_options();
+ if (options->set(opt->name(), make_option_value(new_value)))
+ {
+ my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), opt->name(),
+ make_option_value(new_value)->as_string());
+ return;
+ }
+
+ *((T *) var_ptr)= get_option_value<T>(opt->value());
+
+ wsrep_refresh_provider_options();
+}
+
+/* Convert option flags to corresponding sysvar flags */
+static int map_option_flags_to_sysvar(wsrep::provider_options::option *opt)
+{
+ int flags= 0;
+ if (opt->flags() & wsrep::provider_options::flag::readonly)
+ flags|= PLUGIN_VAR_READONLY;
+ if (opt->flags() & wsrep::provider_options::flag::deprecated)
+ flags|= PLUGIN_VAR_DEPRECATED;
+ return flags;
+}
+
+/* Helper to construct a sysvar of type string for the given option */
+static struct st_mysql_sys_var *
+make_sysvar_for_string_option(wsrep::provider_options::option *opt)
+{
+ char *dummy= 0;
+ MYSQL_SYSVAR_STR(proto_string,
+ dummy,
+ map_option_flags_to_sysvar(opt),
+ "Wsrep provider option",
+ 0,
+ wsrep_provider_sysvar_update<char *>,
+ get_option_value<char *>(opt->default_value()));
+ mysql_sysvar_proto_string.name= opt->name();
+ char **val= (char **) my_malloc(PSI_NOT_INSTRUMENTED, sizeof(char *), MYF(0));
+ *val= get_option_value<char *>(opt->value());
+ mysql_sysvar_proto_string.value= val;
+ struct st_mysql_sys_var *var= (struct st_mysql_sys_var *) my_malloc(
+ PSI_NOT_INSTRUMENTED, sizeof(mysql_sysvar_proto_string), MYF(0));
+ memcpy(var, &mysql_sysvar_proto_string, sizeof(mysql_sysvar_proto_string));
+ return var;
+}
+
+/* Helper to construct a sysvar of type boolean for the given option */
+static struct st_mysql_sys_var *
+make_sysvar_for_bool_option(wsrep::provider_options::option *opt)
+{
+ my_bool dummy= 0;
+ MYSQL_SYSVAR_BOOL(proto_bool,
+ dummy,
+ map_option_flags_to_sysvar(opt),
+ "Wsrep provider option",
+ 0,
+ wsrep_provider_sysvar_update<my_bool>,
+ get_option_value<my_bool>(opt->default_value()));
+ mysql_sysvar_proto_bool.name= opt->name();
+ char *val= (char *) my_malloc(PSI_NOT_INSTRUMENTED, sizeof(char), MYF(0));
+ *val= get_option_value<bool>(opt->value());
+ mysql_sysvar_proto_bool.value= val;
+ struct st_mysql_sys_var *var= (struct st_mysql_sys_var *) my_malloc(
+ PSI_NOT_INSTRUMENTED, sizeof(mysql_sysvar_proto_bool), MYF(0));
+ memcpy(var, &mysql_sysvar_proto_bool, sizeof(mysql_sysvar_proto_bool));
+ return var;
+}
+
+/* Helper to construct a integer sysvar for the given option */
+static struct st_mysql_sys_var *
+make_sysvar_for_integer_option(wsrep::provider_options::option *opt)
+{
+ long long dummy= 0;
+ MYSQL_SYSVAR_LONGLONG(proto_longlong,
+ dummy,
+ map_option_flags_to_sysvar(opt),
+ "Wsrep provider option",
+ 0,
+ wsrep_provider_sysvar_update<long long>,
+ get_option_value<long long>(opt->default_value()),
+ std::numeric_limits<long long>::min(),
+ std::numeric_limits<long long>::max(),
+ 0);
+ mysql_sysvar_proto_longlong.name= opt->name();
+ long long *val= (long long *) my_malloc(PSI_NOT_INSTRUMENTED, sizeof(long long), MYF(0));
+ *val= get_option_value<long long>(opt->value());
+ mysql_sysvar_proto_longlong.value= val;
+ struct st_mysql_sys_var *var= (struct st_mysql_sys_var *) my_malloc(
+ PSI_NOT_INSTRUMENTED, sizeof(mysql_sysvar_proto_longlong), MYF(0));
+ memcpy(var, &mysql_sysvar_proto_longlong, sizeof(mysql_sysvar_proto_longlong));
+ return var;
+}
+
+/* Helper to construct a sysvar of type double for the given option */
+static struct st_mysql_sys_var *
+make_sysvar_for_double_option(wsrep::provider_options::option *opt)
+{
+ double dummy= 0;
+ MYSQL_SYSVAR_DOUBLE(proto_double,
+ dummy,
+ map_option_flags_to_sysvar(opt),
+ "Wsrep provider option",
+ 0,
+ wsrep_provider_sysvar_update<double>,
+ get_option_value<double>(opt->default_value()),
+ std::numeric_limits<double>::min(),
+ std::numeric_limits<double>::max(),
+ 0);
+ mysql_sysvar_proto_double.name= opt->name();
+ double *val= (double *) my_malloc(PSI_NOT_INSTRUMENTED, sizeof(double), MYF(0));
+ *val= get_option_value<double>(opt->value());
+ mysql_sysvar_proto_double.value= val;
+ struct st_mysql_sys_var *var= (struct st_mysql_sys_var *) my_malloc(
+ PSI_NOT_INSTRUMENTED, sizeof(mysql_sysvar_proto_double), MYF(0));
+ memcpy(var, &mysql_sysvar_proto_double, sizeof(mysql_sysvar_proto_double));
+ return var;
+}
+
+/* Construct a sysvar corresponding to the given provider option */
+struct st_mysql_sys_var *
+wsrep_make_sysvar_for_option(wsrep::provider_options::option *opt)
+{
+ const int type_flag= opt->flags() & wsrep::provider_options::flag_type_mask;
+ switch (type_flag)
+ {
+ case wsrep::provider_options::flag::type_bool:
+ return make_sysvar_for_bool_option(opt);
+ case wsrep::provider_options::flag::type_integer:
+ return make_sysvar_for_integer_option(opt);
+ case wsrep::provider_options::flag::type_double:
+ return make_sysvar_for_double_option(opt);
+ default:
+ assert(type_flag == 0);
+ return make_sysvar_for_string_option(opt);
+ };
+}
+
+/* Free a sysvar */
+void wsrep_destroy_sysvar(struct st_mysql_sys_var *var)
+{
+ char **var_value= ((decltype(mysql_sysvar_proto_string) *) var)->value;
+ my_free(var_value);
+ my_free(var);
+}
+
+static int wsrep_provider_plugin_init(void *p)
+{
+ WSREP_DEBUG("wsrep_provider_plugin_init()");
+
+ if (!WSREP_ON)
+ {
+ sql_print_information("Plugin '%s' is disabled.", "wsrep-provider");
+ return 0;
+ }
+
+ provider_plugin_enabled= true;
+
+ // When plugin-wsrep-provider is enabled we set
+ // wsrep_provider_options parameter as READ_ONLY
+ sys_var *my_var= find_sys_var(current_thd, "wsrep_provider_options");
+ int flags= my_var->get_flags();
+ my_var->update_flags(flags |= (int)sys_var::READONLY);
+ return 0;
+}
+
+static int wsrep_provider_plugin_deinit(void *p)
+{
+ WSREP_DEBUG("wsrep_provider_plugin_deinit()");
+ sys_var *my_var= find_sys_var(current_thd, "wsrep_provider_options");
+ int flags= my_var->get_flags();
+ my_var->update_flags(flags &= (int)~sys_var::READONLY);
+ return 0;
+}
+
+struct Mysql_replication wsrep_provider_plugin = {
+ MYSQL_REPLICATION_INTERFACE_VERSION
+};
+
+maria_declare_plugin(wsrep_provider)
+{
+ MYSQL_REPLICATION_PLUGIN,
+ &wsrep_provider_plugin,
+ "wsrep_provider",
+ "Codership Oy",
+ "Wsrep provider plugin",
+ PLUGIN_LICENSE_GPL,
+ wsrep_provider_plugin_init,
+ wsrep_provider_plugin_deinit,
+ 0x0100,
+ NULL, /* Status variables */
+ /* System variables, this will be assigned by wsrep plugin below. */
+ NULL,
+ "1.0", /* Version (string) */
+ MariaDB_PLUGIN_MATURITY_ALPHA /* Maturity */
+}
+maria_declare_plugin_end;
+
+void wsrep_provider_plugin_set_sysvars(st_mysql_sys_var** vars)
+{
+ builtin_maria_wsrep_provider_plugin->system_vars= vars;
+}
+
+/*
+ Wsrep plugin
+*/
+
struct Mysql_replication wsrep_plugin= {
MYSQL_REPLICATION_INTERFACE_VERSION
};
@@ -39,3 +357,5 @@ maria_declare_plugin(wsrep)
MariaDB_PLUGIN_MATURITY_STABLE /* Maturity */
}
maria_declare_plugin_end;
+
+#endif /* WITH_WSREP */
diff --git a/sql/wsrep_plugin.h b/sql/wsrep_plugin.h
new file mode 100644
index 00000000..531d1d26
--- /dev/null
+++ b/sql/wsrep_plugin.h
@@ -0,0 +1,36 @@
+/* Copyright 2022 Codership Oy <info@codership.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+#ifndef WSREP_PLUGIN_H
+#define WSREP_PLUGIN_H
+
+class option;
+struct st_mysql_sys_var;
+
+/* Returns true if provider plugin was initialized and is active */
+bool wsrep_provider_plugin_enabled();
+
+/* Set the given sysvars array for provider plugin.
+ Must be called before the plugin is initialized. */
+void wsrep_provider_plugin_set_sysvars(st_mysql_sys_var **);
+
+/* Construct a sysvar corresponding to the given provider option */
+struct st_mysql_sys_var *
+wsrep_make_sysvar_for_option(wsrep::provider_options::option *);
+
+/* Destroy a sysvar created by make_sysvar_for_option */
+void wsrep_destroy_sysvar(struct st_mysql_sys_var *);
+
+#endif /* WSREP_PLUGIN_H */
diff --git a/sql/wsrep_server_state.cc b/sql/wsrep_server_state.cc
index e1730423..f80320fe 100644
--- a/sql/wsrep_server_state.cc
+++ b/sql/wsrep_server_state.cc
@@ -1,4 +1,4 @@
-/* Copyright 2018 Codership Oy <info@codership.com>
+/* Copyright 2018-2022 Codership Oy <info@codership.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,9 @@
#include "wsrep_api.h"
#include "wsrep_server_state.h"
#include "wsrep_allowlist_service.h"
+#include "wsrep_event_service.h"
#include "wsrep_binlog.h" /* init/deinit group commit */
+#include "wsrep_plugin.h" /* make/destroy sysvar helpers */
mysql_mutex_t LOCK_wsrep_server_state;
mysql_cond_t COND_wsrep_server_state;
@@ -29,6 +31,10 @@ PSI_cond_key key_COND_wsrep_server_state;
wsrep::provider::services Wsrep_server_state::m_provider_services;
+Wsrep_server_state* Wsrep_server_state::m_instance;
+std::unique_ptr<wsrep::provider_options> Wsrep_server_state::m_options;
+std::vector<st_mysql_sys_var*> Wsrep_server_state::m_sysvars;
+
Wsrep_server_state::Wsrep_server_state(const std::string& name,
const std::string& incoming_address,
const std::string& address,
@@ -74,6 +80,48 @@ void Wsrep_server_state::init_once(const std::string& name,
}
}
+int Wsrep_server_state::init_provider(const std::string& provider,
+ const std::string& options)
+{
+ DBUG_ASSERT(m_instance);
+ int ret= m_instance->load_provider(provider, options);
+ if (ret)
+ {
+ WSREP_ERROR("Failed to load provider %s with options %s",
+ provider.c_str(), options.c_str());
+ return ret;
+ }
+ return 0;
+}
+
+int Wsrep_server_state::init_options()
+{
+ if (!m_instance) return 1;
+ m_options= std::unique_ptr<wsrep::provider_options>(
+ new wsrep::provider_options(m_instance->provider()));
+ int ret= m_options->initial_options();
+ if (ret)
+ {
+ WSREP_ERROR("Failed to initialize provider options");
+ m_options = nullptr;
+ m_instance->unload_provider();
+ return ret;
+ }
+ m_options->for_each([](wsrep::provider_options::option *opt) {
+ struct st_mysql_sys_var *var= wsrep_make_sysvar_for_option(opt);
+ m_sysvars.push_back(var);
+ });
+ m_sysvars.push_back(nullptr);
+ wsrep_provider_plugin_set_sysvars(&m_sysvars[0]);
+ return 0;
+}
+
+void Wsrep_server_state::deinit_provider()
+{
+ m_options = nullptr;
+ m_instance->unload_provider();
+}
+
void Wsrep_server_state::destroy()
{
if (m_instance)
@@ -82,12 +130,21 @@ void Wsrep_server_state::destroy()
m_instance= 0;
mysql_mutex_destroy(&LOCK_wsrep_server_state);
mysql_cond_destroy(&COND_wsrep_server_state);
+ for (auto var : m_sysvars)
+ {
+ if (var)
+ {
+ wsrep_destroy_sysvar(var);
+ }
+ }
+ m_sysvars.clear();
}
}
void Wsrep_server_state::init_provider_services()
{
m_provider_services.allowlist_service= wsrep_allowlist_service_init();
+ m_provider_services.event_service= Wsrep_event_service::instance();
}
void Wsrep_server_state::deinit_provider_services()
diff --git a/sql/wsrep_server_state.h b/sql/wsrep_server_state.h
index 8759f7a9..d169e5b2 100644
--- a/sql/wsrep_server_state.h
+++ b/sql/wsrep_server_state.h
@@ -1,4 +1,4 @@
-/* Copyright 2018 Codership Oy <info@codership.com>
+/* Copyright 2018-2021 Codership Oy <info@codership.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,6 +19,7 @@
/* wsrep-lib */
#include "wsrep/server_state.hpp"
#include "wsrep/provider.hpp"
+#include "wsrep/provider_options.hpp"
/* implementation */
#include "wsrep_server_service.h"
@@ -34,6 +35,10 @@ public:
const std::string& working_dir,
const wsrep::gtid& initial_position,
int max_protocol_version);
+ static int init_provider(const std::string& provider,
+ const std::string& options);
+ static int init_options();
+ static void deinit_provider();
static void destroy();
static Wsrep_server_state& instance()
@@ -51,6 +56,11 @@ public:
return instance().provider();
}
+ static wsrep::provider_options* get_options()
+ {
+ return m_options.get();
+ }
+
static bool has_capability(int capability)
{
return (get_provider().capabilities() & capability);
@@ -77,7 +87,11 @@ private:
Wsrep_server_service m_service;
static wsrep::provider::services m_provider_services;
static Wsrep_server_state* m_instance;
-
+ static std::unique_ptr<wsrep::provider_options> m_options;
+ // Sysvars for provider plugin. We keep these here because
+ // they are allocated dynamically and must be freed at some
+ // point during shutdown (after the plugin is deinitialized).
+ static std::vector<st_mysql_sys_var *> m_sysvars;
};
#endif // WSREP_SERVER_STATE_H
diff --git a/sql/wsrep_sst.cc b/sql/wsrep_sst.cc
index 573aa70c..75bff992 100644
--- a/sql/wsrep_sst.cc
+++ b/sql/wsrep_sst.cc
@@ -359,7 +359,8 @@ bool wsrep_sst_donor_update (sys_var *self, THD* thd, enum_var_type type)
bool wsrep_before_SE()
{
- return (wsrep_provider != NULL
+ return (wsrep_provider
+ && *wsrep_provider
&& strcmp (wsrep_provider, WSREP_NONE)
&& strcmp (wsrep_sst_method, WSREP_SST_SKIP)
&& strcmp (wsrep_sst_method, WSREP_SST_MYSQLDUMP));
diff --git a/sql/wsrep_status.h b/sql/wsrep_status.h
index dd83dda2..8d9291ab 100644
--- a/sql/wsrep_status.h
+++ b/sql/wsrep_status.h
@@ -42,6 +42,13 @@ public:
Wsrep_status::m_instance->report_progress(progress);
}
+ static void report_event(const std::string& event)
+ {
+ if (!Wsrep_status::m_instance) return;
+
+ Wsrep_status::m_instance->report_event(event);
+ }
+
static void report_log_msg(wsrep::reporter::log_level level,
const char* tag, size_t tag_len,
const char* buf, size_t buf_len,
diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc
index d4af7a95..c55d713e 100644
--- a/sql/wsrep_var.cc
+++ b/sql/wsrep_var.cc
@@ -27,6 +27,7 @@
#include <cstdlib>
#include "wsrep_trans_observer.h"
#include "wsrep_server_state.h"
+#include "wsrep_plugin.h" /* wsrep_provider_plugin_is_enabled() */
ulong wsrep_reject_queries;
@@ -93,12 +94,17 @@ static bool refresh_provider_options()
}
}
+bool wsrep_refresh_provider_options()
+{
+ return refresh_provider_options();
+}
+
void wsrep_set_wsrep_on(THD* thd)
{
if (thd)
thd->wsrep_was_on= WSREP_ON_;
- WSREP_PROVIDER_EXISTS_= wsrep_provider &&
- strncasecmp(wsrep_provider, WSREP_NONE, FN_REFLEN);
+ WSREP_PROVIDER_EXISTS_= wsrep_provider && *wsrep_provider &&
+ strcasecmp(wsrep_provider, WSREP_NONE);
WSREP_ON_= global_system_variables.wsrep_on && WSREP_PROVIDER_EXISTS_;
}
@@ -108,10 +114,14 @@ bool wsrep_on_update (sys_var *self, THD* thd, enum_var_type var_type)
{
my_bool saved_wsrep_on= global_system_variables.wsrep_on;
- thd->variables.wsrep_on= global_system_variables.wsrep_on;
+ thd->variables.wsrep_on= saved_wsrep_on;
// If wsrep has not been inited we need to do it now
- if (global_system_variables.wsrep_on && wsrep_provider && !wsrep_inited)
+ if (!wsrep_inited &&
+ saved_wsrep_on &&
+ wsrep_provider &&
+ *wsrep_provider &&
+ strcasecmp(wsrep_provider, WSREP_NONE))
{
// wsrep_init() rewrites provide if it fails
char* tmp= strdup(wsrep_provider);
@@ -198,36 +208,6 @@ bool wsrep_on_check(sys_var *self, THD* thd, set_var* var)
return false;
}
-bool wsrep_causal_reads_update (sys_var *self, THD* thd, enum_var_type var_type)
-{
- if (thd->variables.wsrep_causal_reads) {
- thd->variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
- } else {
- thd->variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
- }
-
- // update global settings too.
- if (global_system_variables.wsrep_causal_reads) {
- global_system_variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
- } else {
- global_system_variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
- }
-
- return false;
-}
-
-bool wsrep_sync_wait_update (sys_var* self, THD* thd, enum_var_type var_type)
-{
- thd->variables.wsrep_causal_reads= thd->variables.wsrep_sync_wait &
- WSREP_SYNC_WAIT_BEFORE_READ;
-
- // update global settings too
- global_system_variables.wsrep_causal_reads= global_system_variables.wsrep_sync_wait &
- WSREP_SYNC_WAIT_BEFORE_READ;
-
- return false;
-}
-
template<typename T>
static T parse_value(char** startptr, char** endptr)
{
@@ -447,6 +427,12 @@ static int wsrep_provider_verify (const char* provider_str)
bool wsrep_provider_check (sys_var *self, THD* thd, set_var* var)
{
+ if (wsrep_provider_plugin_enabled())
+ {
+ my_error(ER_INCORRECT_GLOBAL_LOCAL_VAR, MYF(0), var->var->name.str, "read only");
+ return true;
+ }
+
char wsrep_provider_buf[FN_REFLEN];
if ((! var->save_result.string_value.str) ||
@@ -538,6 +524,11 @@ bool wsrep_provider_options_check(sys_var *self, THD* thd, set_var* var)
my_message(ER_WRONG_ARGUMENTS, "WSREP (galera) not started", MYF(0));
return true;
}
+ if (wsrep_provider_plugin_enabled())
+ {
+ my_error(ER_INCORRECT_GLOBAL_LOCAL_VAR, MYF(0), var->var->name.str, "read only");
+ return true;
+ }
return false;
}
diff --git a/sql/wsrep_var.h b/sql/wsrep_var.h
index 4939b097..6b10530a 100644
--- a/sql/wsrep_var.h
+++ b/sql/wsrep_var.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2021 Codership Oy <info@codership.com>
+/* Copyright (C) 2013-2022 Codership Oy <info@codership.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -38,16 +38,15 @@ class THD;
int wsrep_init_vars();
void wsrep_set_wsrep_on(THD *thd);
void wsrep_free_status_vars();
+bool wsrep_refresh_provider_options();
#define CHECK_ARGS (sys_var *self, THD* thd, set_var *var)
#define UPDATE_ARGS (sys_var *self, THD* thd, enum_var_type type)
#define DEFAULT_ARGS (THD* thd, enum_var_type var_type)
#define INIT_ARGS (const char* opt)
-extern bool wsrep_causal_reads_update UPDATE_ARGS;
extern bool wsrep_on_check CHECK_ARGS;
extern bool wsrep_on_update UPDATE_ARGS;
-extern bool wsrep_sync_wait_update UPDATE_ARGS;
extern bool wsrep_start_position_check CHECK_ARGS;
extern bool wsrep_start_position_update UPDATE_ARGS;
extern bool wsrep_start_position_init INIT_ARGS;
diff --git a/sql/xa.cc b/sql/xa.cc
index 49be7fb5..51375cae 100644
--- a/sql/xa.cc
+++ b/sql/xa.cc
@@ -78,7 +78,7 @@ public:
/* Error reported by the Resource Manager (RM) to the Transaction Manager. */
uint rm_error;
enum xa_states xa_state;
- XID xid;
+ XA_data xid;
bool is_set(int32_t flag)
{ return m_state.load(std::memory_order_relaxed) & flag; }
void set(int32_t flag)
@@ -140,6 +140,7 @@ public:
{
XID_cache_element *element= (XID_cache_element*) (ptr + LF_HASH_OVERHEAD);
element->m_state= 0;
+ new(&element->xid) XA_data();
}
static void lf_alloc_destructor(uchar *ptr)
{
@@ -179,6 +180,11 @@ void XID_STATE::set_error(uint error)
xid_cache_element->rm_error= error;
}
+void XID_STATE::set_online_alter_cache(Online_alter_cache_list *cache)
+{
+ if (is_explicit_XA())
+ xid_cache_element->xid.online_alter_cache= cache;
+}
void XID_STATE::er_xaer_rmfail() const
{
@@ -646,7 +652,7 @@ bool trans_xa_commit(THD *thd)
DBUG_ASSERT(!xid_state.xid_cache_element);
xid_state.xid_cache_element= xs;
- ha_commit_or_rollback_by_xid(thd->lex->xid, !res);
+ ha_commit_or_rollback_by_xid(&xs->xid, !res);
if (!res && thd->is_error())
{
// hton completion error retains xs/xid in the cache,
@@ -826,7 +832,7 @@ bool trans_xa_rollback(THD *thd)
DBUG_ASSERT(!xid_state.xid_cache_element);
xid_state.xid_cache_element= xs;
- ha_commit_or_rollback_by_xid(thd->lex->xid, 0);
+ ha_commit_or_rollback_by_xid(&xs->xid, 0);
if (!res && thd->is_error())
{
goto _end_external_xid;
diff --git a/sql/xa.h b/sql/xa.h
index a9b06e42..7c23b8c7 100644
--- a/sql/xa.h
+++ b/sql/xa.h
@@ -34,6 +34,7 @@ struct XID_STATE {
bool check_has_uncommitted_xa() const;
bool is_explicit_XA() const { return xid_cache_element != 0; }
void set_error(uint error);
+ void set_online_alter_cache(Online_alter_cache_list *);
void er_xaer_rmfail() const;
XID *get_xid() const;
enum xa_states get_state_code() const;
diff --git a/sql/yy_mariadb.cc b/sql/yy_mariadb.cc
index 0223e459..1bcd517e 100644
--- a/sql/yy_mariadb.cc
+++ b/sql/yy_mariadb.cc
@@ -94,6 +94,7 @@
#include "lex_symbol.h"
#include "item_create.h"
#include "sp_head.h"
+#include "sp_instr.h" // classes sp_instr,...
#include "sp_rcontext.h"
#include "sp.h"
#include "sql_show.h"
@@ -120,6 +121,8 @@
#include "my_base.h"
#include "sql_type_json.h"
#include "json_table.h"
+#include "sql_update.h"
+#include "sql_delete.h"
/* this is to get the bison compilation windows warnings out */
#ifdef _MSC_VER
@@ -240,7 +243,7 @@ void _CONCAT_UNDERSCORED(turn_parser_debug_on,yyparse)()
-#line 244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 247 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -947,1380 +950,1428 @@ enum yysymbol_kind_t
YYSYMBOL_SONAME_SYM = 676, /* SONAME_SYM */
YYSYMBOL_SOUNDS_SYM = 677, /* SOUNDS_SYM */
YYSYMBOL_SOURCE_SYM = 678, /* SOURCE_SYM */
- YYSYMBOL_SQL_BUFFER_RESULT = 679, /* SQL_BUFFER_RESULT */
- YYSYMBOL_SQL_CACHE_SYM = 680, /* SQL_CACHE_SYM */
- YYSYMBOL_SQL_CALC_FOUND_ROWS = 681, /* SQL_CALC_FOUND_ROWS */
- YYSYMBOL_SQL_NO_CACHE_SYM = 682, /* SQL_NO_CACHE_SYM */
- YYSYMBOL_SQL_THREAD = 683, /* SQL_THREAD */
- YYSYMBOL_STAGE_SYM = 684, /* STAGE_SYM */
- YYSYMBOL_STARTS_SYM = 685, /* STARTS_SYM */
- YYSYMBOL_START_SYM = 686, /* START_SYM */
- YYSYMBOL_STATEMENT_SYM = 687, /* STATEMENT_SYM */
- YYSYMBOL_STATUS_SYM = 688, /* STATUS_SYM */
- YYSYMBOL_STOP_SYM = 689, /* STOP_SYM */
- YYSYMBOL_STORAGE_SYM = 690, /* STORAGE_SYM */
- YYSYMBOL_STORED_SYM = 691, /* STORED_SYM */
- YYSYMBOL_STRING_SYM = 692, /* STRING_SYM */
- YYSYMBOL_SUBCLASS_ORIGIN_SYM = 693, /* SUBCLASS_ORIGIN_SYM */
- YYSYMBOL_SUBDATE_SYM = 694, /* SUBDATE_SYM */
- YYSYMBOL_SUBJECT_SYM = 695, /* SUBJECT_SYM */
- YYSYMBOL_SUBPARTITIONS_SYM = 696, /* SUBPARTITIONS_SYM */
- YYSYMBOL_SUBPARTITION_SYM = 697, /* SUBPARTITION_SYM */
- YYSYMBOL_SUPER_SYM = 698, /* SUPER_SYM */
- YYSYMBOL_SUSPEND_SYM = 699, /* SUSPEND_SYM */
- YYSYMBOL_SWAPS_SYM = 700, /* SWAPS_SYM */
- YYSYMBOL_SWITCHES_SYM = 701, /* SWITCHES_SYM */
- YYSYMBOL_SYSTEM = 702, /* SYSTEM */
- YYSYMBOL_SYSTEM_TIME_SYM = 703, /* SYSTEM_TIME_SYM */
- YYSYMBOL_TABLES = 704, /* TABLES */
- YYSYMBOL_TABLESPACE = 705, /* TABLESPACE */
- YYSYMBOL_TABLE_CHECKSUM_SYM = 706, /* TABLE_CHECKSUM_SYM */
- YYSYMBOL_TABLE_NAME_SYM = 707, /* TABLE_NAME_SYM */
- YYSYMBOL_TEMPORARY = 708, /* TEMPORARY */
- YYSYMBOL_TEMPTABLE_SYM = 709, /* TEMPTABLE_SYM */
- YYSYMBOL_TEXT_SYM = 710, /* TEXT_SYM */
- YYSYMBOL_THAN_SYM = 711, /* THAN_SYM */
- YYSYMBOL_TIES_SYM = 712, /* TIES_SYM */
- YYSYMBOL_TIMESTAMP = 713, /* TIMESTAMP */
- YYSYMBOL_TIMESTAMP_ADD = 714, /* TIMESTAMP_ADD */
- YYSYMBOL_TIMESTAMP_DIFF = 715, /* TIMESTAMP_DIFF */
- YYSYMBOL_TIME_SYM = 716, /* TIME_SYM */
- YYSYMBOL_TRANSACTION_SYM = 717, /* TRANSACTION_SYM */
- YYSYMBOL_TRANSACTIONAL_SYM = 718, /* TRANSACTIONAL_SYM */
- YYSYMBOL_THREADS_SYM = 719, /* THREADS_SYM */
- YYSYMBOL_TRIGGERS_SYM = 720, /* TRIGGERS_SYM */
- YYSYMBOL_TRIM_ORACLE = 721, /* TRIM_ORACLE */
- YYSYMBOL_TRUNCATE_SYM = 722, /* TRUNCATE_SYM */
- YYSYMBOL_TYPE_SYM = 723, /* TYPE_SYM */
- YYSYMBOL_UDF_RETURNS_SYM = 724, /* UDF_RETURNS_SYM */
- YYSYMBOL_UNBOUNDED_SYM = 725, /* UNBOUNDED_SYM */
- YYSYMBOL_UNCOMMITTED_SYM = 726, /* UNCOMMITTED_SYM */
- YYSYMBOL_UNDEFINED_SYM = 727, /* UNDEFINED_SYM */
- YYSYMBOL_UNDOFILE_SYM = 728, /* UNDOFILE_SYM */
- YYSYMBOL_UNDO_BUFFER_SIZE_SYM = 729, /* UNDO_BUFFER_SIZE_SYM */
- YYSYMBOL_UNICODE_SYM = 730, /* UNICODE_SYM */
- YYSYMBOL_UNINSTALL_SYM = 731, /* UNINSTALL_SYM */
- YYSYMBOL_UNKNOWN_SYM = 732, /* UNKNOWN_SYM */
- YYSYMBOL_UNTIL_SYM = 733, /* UNTIL_SYM */
- YYSYMBOL_UPGRADE_SYM = 734, /* UPGRADE_SYM */
- YYSYMBOL_USER_SYM = 735, /* USER_SYM */
- YYSYMBOL_USE_FRM = 736, /* USE_FRM */
- YYSYMBOL_VALUE_SYM = 737, /* VALUE_SYM */
- YYSYMBOL_VARCHAR2_MARIADB_SYM = 738, /* VARCHAR2_MARIADB_SYM */
- YYSYMBOL_VARCHAR2_ORACLE_SYM = 739, /* VARCHAR2_ORACLE_SYM */
- YYSYMBOL_VARIABLES = 740, /* VARIABLES */
- YYSYMBOL_VERSIONING_SYM = 741, /* VERSIONING_SYM */
- YYSYMBOL_VIA_SYM = 742, /* VIA_SYM */
- YYSYMBOL_VIEW_SYM = 743, /* VIEW_SYM */
- YYSYMBOL_VISIBLE_SYM = 744, /* VISIBLE_SYM */
- YYSYMBOL_VIRTUAL_SYM = 745, /* VIRTUAL_SYM */
- YYSYMBOL_WAIT_SYM = 746, /* WAIT_SYM */
- YYSYMBOL_WARNINGS = 747, /* WARNINGS */
- YYSYMBOL_WEEK_SYM = 748, /* WEEK_SYM */
- YYSYMBOL_WEIGHT_STRING_SYM = 749, /* WEIGHT_STRING_SYM */
- YYSYMBOL_WINDOW_SYM = 750, /* WINDOW_SYM */
- YYSYMBOL_WITHIN = 751, /* WITHIN */
- YYSYMBOL_WITHOUT = 752, /* WITHOUT */
- YYSYMBOL_WORK_SYM = 753, /* WORK_SYM */
- YYSYMBOL_WRAPPER_SYM = 754, /* WRAPPER_SYM */
- YYSYMBOL_WRITE_SYM = 755, /* WRITE_SYM */
- YYSYMBOL_X509_SYM = 756, /* X509_SYM */
- YYSYMBOL_XA_SYM = 757, /* XA_SYM */
- YYSYMBOL_XML_SYM = 758, /* XML_SYM */
- YYSYMBOL_YEAR_SYM = 759, /* YEAR_SYM */
- YYSYMBOL_CONDITIONLESS_JOIN = 760, /* CONDITIONLESS_JOIN */
- YYSYMBOL_ON_SYM = 761, /* ON_SYM */
- YYSYMBOL_PREC_BELOW_NOT = 762, /* PREC_BELOW_NOT */
- YYSYMBOL_763_ = 763, /* '=' */
- YYSYMBOL_764_ = 764, /* '>' */
- YYSYMBOL_765_ = 765, /* '<' */
- YYSYMBOL_766_ = 766, /* '|' */
- YYSYMBOL_767_ = 767, /* '&' */
- YYSYMBOL_768_ = 768, /* '-' */
- YYSYMBOL_769_ = 769, /* '+' */
- YYSYMBOL_770_ = 770, /* '*' */
- YYSYMBOL_771_ = 771, /* '/' */
- YYSYMBOL_772_ = 772, /* '%' */
- YYSYMBOL_773_ = 773, /* '^' */
- YYSYMBOL_774_ = 774, /* '~' */
- YYSYMBOL_SUBQUERY_AS_EXPR = 775, /* SUBQUERY_AS_EXPR */
- YYSYMBOL_PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 776, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
- YYSYMBOL_USER = 777, /* USER */
- YYSYMBOL_PREC_BELOW_CONTRACTION_TOKEN2 = 778, /* PREC_BELOW_CONTRACTION_TOKEN2 */
- YYSYMBOL_779_ = 779, /* '(' */
- YYSYMBOL_780_ = 780, /* ')' */
- YYSYMBOL_EMPTY_FROM_CLAUSE = 781, /* EMPTY_FROM_CLAUSE */
- YYSYMBOL_782_ = 782, /* ',' */
- YYSYMBOL_783_ = 783, /* '!' */
- YYSYMBOL_784_ = 784, /* '{' */
- YYSYMBOL_785_ = 785, /* '}' */
- YYSYMBOL_786_ = 786, /* ';' */
- YYSYMBOL_787_ = 787, /* '.' */
- YYSYMBOL_788_ = 788, /* ':' */
- YYSYMBOL_YYACCEPT = 789, /* $accept */
- YYSYMBOL_query = 790, /* query */
- YYSYMBOL_791_1 = 791, /* $@1 */
- YYSYMBOL_opt_end_of_input = 792, /* opt_end_of_input */
- YYSYMBOL_directly_executable_statement = 793, /* directly_executable_statement */
- YYSYMBOL_verb_clause = 794, /* verb_clause */
- YYSYMBOL_deallocate = 795, /* deallocate */
- YYSYMBOL_deallocate_or_drop = 796, /* deallocate_or_drop */
- YYSYMBOL_prepare = 797, /* prepare */
- YYSYMBOL_798_2 = 798, /* $@2 */
- YYSYMBOL_execute = 799, /* execute */
- YYSYMBOL_800_3 = 800, /* $@3 */
- YYSYMBOL_801_4 = 801, /* $@4 */
- YYSYMBOL_execute_using = 802, /* execute_using */
- YYSYMBOL_803_5 = 803, /* $@5 */
- YYSYMBOL_execute_params = 804, /* execute_params */
- YYSYMBOL_help = 805, /* help */
- YYSYMBOL_806_6 = 806, /* $@6 */
- YYSYMBOL_change = 807, /* change */
- YYSYMBOL_808_7 = 808, /* $@7 */
- YYSYMBOL_master_defs = 809, /* master_defs */
- YYSYMBOL_master_def = 810, /* master_def */
- YYSYMBOL_ignore_server_id_list = 811, /* ignore_server_id_list */
- YYSYMBOL_ignore_server_id = 812, /* ignore_server_id */
- YYSYMBOL_do_domain_id_list = 813, /* do_domain_id_list */
- YYSYMBOL_do_domain_id = 814, /* do_domain_id */
- YYSYMBOL_ignore_domain_id_list = 815, /* ignore_domain_id_list */
- YYSYMBOL_ignore_domain_id = 816, /* ignore_domain_id */
- YYSYMBOL_master_file_def = 817, /* master_file_def */
- YYSYMBOL_optional_connection_name = 818, /* optional_connection_name */
- YYSYMBOL_connection_name = 819, /* connection_name */
- YYSYMBOL_optional_for_channel = 820, /* optional_for_channel */
- YYSYMBOL_for_channel = 821, /* for_channel */
- YYSYMBOL_create = 822, /* create */
- YYSYMBOL_823_8 = 823, /* $@8 */
- YYSYMBOL_824_9 = 824, /* $@9 */
- YYSYMBOL_825_10 = 825, /* $@10 */
- YYSYMBOL_826_11 = 826, /* $@11 */
- YYSYMBOL_827_12 = 827, /* $@12 */
- YYSYMBOL_828_13 = 828, /* $@13 */
- YYSYMBOL_829_14 = 829, /* $@14 */
- YYSYMBOL_830_15 = 830, /* $@15 */
- YYSYMBOL_831_16 = 831, /* $@16 */
- YYSYMBOL_832_17 = 832, /* $@17 */
- YYSYMBOL_833_18 = 833, /* $@18 */
- YYSYMBOL_834_19 = 834, /* $@19 */
- YYSYMBOL_835_20 = 835, /* $@20 */
- YYSYMBOL_836_21 = 836, /* $@21 */
- YYSYMBOL_837_22 = 837, /* $@22 */
- YYSYMBOL_838_23 = 838, /* $@23 */
- YYSYMBOL_839_24 = 839, /* $@24 */
- YYSYMBOL_opt_sequence = 840, /* opt_sequence */
- YYSYMBOL_sequence_defs = 841, /* sequence_defs */
- YYSYMBOL_sequence_def = 842, /* sequence_def */
- YYSYMBOL_force_lookahead = 843, /* force_lookahead */
- YYSYMBOL_server_def = 844, /* server_def */
- YYSYMBOL_845_25 = 845, /* $@25 */
- YYSYMBOL_server_options_list = 846, /* server_options_list */
- YYSYMBOL_server_option = 847, /* server_option */
- YYSYMBOL_event_tail = 848, /* event_tail */
- YYSYMBOL_849_26 = 849, /* $@26 */
- YYSYMBOL_ev_schedule_time = 850, /* ev_schedule_time */
- YYSYMBOL_851_27 = 851, /* $@27 */
- YYSYMBOL_opt_ev_status = 852, /* opt_ev_status */
- YYSYMBOL_ev_starts = 853, /* ev_starts */
- YYSYMBOL_ev_ends = 854, /* ev_ends */
- YYSYMBOL_opt_ev_on_completion = 855, /* opt_ev_on_completion */
- YYSYMBOL_ev_on_completion = 856, /* ev_on_completion */
- YYSYMBOL_opt_ev_comment = 857, /* opt_ev_comment */
- YYSYMBOL_ev_sql_stmt = 858, /* ev_sql_stmt */
- YYSYMBOL_859_28 = 859, /* $@28 */
- YYSYMBOL_clear_privileges = 860, /* clear_privileges */
- YYSYMBOL_opt_aggregate = 861, /* opt_aggregate */
- YYSYMBOL_sp_handler = 862, /* sp_handler */
- YYSYMBOL_sp_name = 863, /* sp_name */
- YYSYMBOL_sp_a_chistics = 864, /* sp_a_chistics */
- YYSYMBOL_sp_c_chistics = 865, /* sp_c_chistics */
- YYSYMBOL_sp_chistic = 866, /* sp_chistic */
- YYSYMBOL_sp_c_chistic = 867, /* sp_c_chistic */
- YYSYMBOL_sp_suid = 868, /* sp_suid */
- YYSYMBOL_call = 869, /* call */
- YYSYMBOL_870_29 = 870, /* $@29 */
- YYSYMBOL_871_30 = 871, /* $@30 */
- YYSYMBOL_872_31 = 872, /* $@31 */
- YYSYMBOL_opt_sp_cparam_list = 873, /* opt_sp_cparam_list */
- YYSYMBOL_opt_sp_cparams = 874, /* opt_sp_cparams */
- YYSYMBOL_sp_cparams = 875, /* sp_cparams */
- YYSYMBOL_sp_fdparam_list = 876, /* sp_fdparam_list */
- YYSYMBOL_877_32 = 877, /* $@32 */
- YYSYMBOL_sp_fdparams = 878, /* sp_fdparams */
- YYSYMBOL_sp_param_name = 879, /* sp_param_name */
- YYSYMBOL_sp_pdparam_list = 880, /* sp_pdparam_list */
- YYSYMBOL_sp_pdparams = 881, /* sp_pdparams */
- YYSYMBOL_sp_parameter_type = 882, /* sp_parameter_type */
- YYSYMBOL_sp_parenthesized_pdparam_list = 883, /* sp_parenthesized_pdparam_list */
- YYSYMBOL_884_33 = 884, /* $@33 */
- YYSYMBOL_sp_parenthesized_fdparam_list = 885, /* sp_parenthesized_fdparam_list */
- YYSYMBOL_sp_proc_stmts = 886, /* sp_proc_stmts */
- YYSYMBOL_sp_proc_stmts1 = 887, /* sp_proc_stmts1 */
- YYSYMBOL_optionally_qualified_column_ident = 888, /* optionally_qualified_column_ident */
- YYSYMBOL_row_field_definition = 889, /* row_field_definition */
- YYSYMBOL_row_field_definition_list = 890, /* row_field_definition_list */
- YYSYMBOL_row_type_body = 891, /* row_type_body */
- YYSYMBOL_sp_decl_idents_init_vars = 892, /* sp_decl_idents_init_vars */
- YYSYMBOL_sp_decl_variable_list = 893, /* sp_decl_variable_list */
- YYSYMBOL_894_34 = 894, /* $@34 */
- YYSYMBOL_sp_decl_handler = 895, /* sp_decl_handler */
- YYSYMBOL_896_35 = 896, /* $@35 */
- YYSYMBOL_opt_parenthesized_cursor_formal_parameters = 897, /* opt_parenthesized_cursor_formal_parameters */
- YYSYMBOL_sp_cursor_stmt_lex = 898, /* sp_cursor_stmt_lex */
- YYSYMBOL_sp_cursor_stmt = 899, /* sp_cursor_stmt */
- YYSYMBOL_900_36 = 900, /* $@36 */
- YYSYMBOL_sp_handler_type = 901, /* sp_handler_type */
- YYSYMBOL_sp_hcond_list = 902, /* sp_hcond_list */
- YYSYMBOL_sp_hcond_element = 903, /* sp_hcond_element */
- YYSYMBOL_sp_cond = 904, /* sp_cond */
- YYSYMBOL_sqlstate = 905, /* sqlstate */
- YYSYMBOL_opt_value = 906, /* opt_value */
- YYSYMBOL_sp_hcond = 907, /* sp_hcond */
- YYSYMBOL_raise_stmt_oracle = 908, /* raise_stmt_oracle */
- YYSYMBOL_signal_stmt = 909, /* signal_stmt */
- YYSYMBOL_signal_value = 910, /* signal_value */
- YYSYMBOL_opt_signal_value = 911, /* opt_signal_value */
- YYSYMBOL_opt_set_signal_information = 912, /* opt_set_signal_information */
- YYSYMBOL_signal_information_item_list = 913, /* signal_information_item_list */
- YYSYMBOL_signal_allowed_expr = 914, /* signal_allowed_expr */
- YYSYMBOL_signal_condition_information_item_name = 915, /* signal_condition_information_item_name */
- YYSYMBOL_resignal_stmt = 916, /* resignal_stmt */
- YYSYMBOL_get_diagnostics = 917, /* get_diagnostics */
- YYSYMBOL_which_area = 918, /* which_area */
- YYSYMBOL_diagnostics_information = 919, /* diagnostics_information */
- YYSYMBOL_statement_information = 920, /* statement_information */
- YYSYMBOL_statement_information_item = 921, /* statement_information_item */
- YYSYMBOL_simple_target_specification = 922, /* simple_target_specification */
- YYSYMBOL_statement_information_item_name = 923, /* statement_information_item_name */
- YYSYMBOL_condition_number = 924, /* condition_number */
- YYSYMBOL_condition_information = 925, /* condition_information */
- YYSYMBOL_condition_information_item = 926, /* condition_information_item */
- YYSYMBOL_condition_information_item_name = 927, /* condition_information_item_name */
- YYSYMBOL_sp_decl_ident = 928, /* sp_decl_ident */
- YYSYMBOL_sp_decl_idents = 929, /* sp_decl_idents */
- YYSYMBOL_sp_proc_stmt_if = 930, /* sp_proc_stmt_if */
- YYSYMBOL_931_37 = 931, /* $@37 */
- YYSYMBOL_sp_proc_stmt_statement = 932, /* sp_proc_stmt_statement */
- YYSYMBOL_933_38 = 933, /* $@38 */
- YYSYMBOL_RETURN_ALLMODES_SYM = 934, /* RETURN_ALLMODES_SYM */
- YYSYMBOL_sp_proc_stmt_return = 935, /* sp_proc_stmt_return */
- YYSYMBOL_936_39 = 936, /* $@39 */
- YYSYMBOL_sp_proc_stmt_exit_oracle = 937, /* sp_proc_stmt_exit_oracle */
- YYSYMBOL_938_40 = 938, /* $@40 */
- YYSYMBOL_939_41 = 939, /* $@41 */
- YYSYMBOL_sp_proc_stmt_continue_oracle = 940, /* sp_proc_stmt_continue_oracle */
- YYSYMBOL_941_42 = 941, /* $@42 */
- YYSYMBOL_942_43 = 942, /* $@43 */
- YYSYMBOL_sp_proc_stmt_leave = 943, /* sp_proc_stmt_leave */
- YYSYMBOL_sp_proc_stmt_iterate = 944, /* sp_proc_stmt_iterate */
- YYSYMBOL_sp_proc_stmt_goto_oracle = 945, /* sp_proc_stmt_goto_oracle */
- YYSYMBOL_expr_lex = 946, /* expr_lex */
- YYSYMBOL_947_44 = 947, /* @44 */
- YYSYMBOL_assignment_source_lex = 948, /* assignment_source_lex */
- YYSYMBOL_assignment_source_expr = 949, /* assignment_source_expr */
- YYSYMBOL_950_45 = 950, /* $@45 */
- YYSYMBOL_for_loop_bound_expr = 951, /* for_loop_bound_expr */
- YYSYMBOL_952_46 = 952, /* $@46 */
- YYSYMBOL_cursor_actual_parameters = 953, /* cursor_actual_parameters */
- YYSYMBOL_opt_parenthesized_cursor_actual_parameters = 954, /* opt_parenthesized_cursor_actual_parameters */
- YYSYMBOL_sp_proc_stmt_with_cursor = 955, /* sp_proc_stmt_with_cursor */
- YYSYMBOL_sp_proc_stmt_open = 956, /* sp_proc_stmt_open */
- YYSYMBOL_sp_proc_stmt_fetch_head = 957, /* sp_proc_stmt_fetch_head */
- YYSYMBOL_sp_proc_stmt_fetch = 958, /* sp_proc_stmt_fetch */
- YYSYMBOL_sp_proc_stmt_close = 959, /* sp_proc_stmt_close */
- YYSYMBOL_sp_fetch_list = 960, /* sp_fetch_list */
- YYSYMBOL_sp_if = 961, /* sp_if */
- YYSYMBOL_962_47 = 962, /* $@47 */
- YYSYMBOL_963_48 = 963, /* $@48 */
- YYSYMBOL_sp_elseifs = 964, /* sp_elseifs */
- YYSYMBOL_case_stmt_specification = 965, /* case_stmt_specification */
- YYSYMBOL_966_49 = 966, /* $@49 */
- YYSYMBOL_case_stmt_body = 967, /* case_stmt_body */
- YYSYMBOL_968_50 = 968, /* $@50 */
- YYSYMBOL_simple_when_clause_list = 969, /* simple_when_clause_list */
- YYSYMBOL_searched_when_clause_list = 970, /* searched_when_clause_list */
- YYSYMBOL_simple_when_clause = 971, /* simple_when_clause */
- YYSYMBOL_972_51 = 972, /* $@51 */
- YYSYMBOL_searched_when_clause = 973, /* searched_when_clause */
- YYSYMBOL_974_52 = 974, /* $@52 */
- YYSYMBOL_else_clause_opt = 975, /* else_clause_opt */
- YYSYMBOL_sp_opt_label = 976, /* sp_opt_label */
- YYSYMBOL_opt_sp_for_loop_direction = 977, /* opt_sp_for_loop_direction */
- YYSYMBOL_sp_for_loop_index_and_bounds = 978, /* sp_for_loop_index_and_bounds */
- YYSYMBOL_sp_for_loop_bounds = 979, /* sp_for_loop_bounds */
- YYSYMBOL_loop_body = 980, /* loop_body */
- YYSYMBOL_repeat_body = 981, /* repeat_body */
- YYSYMBOL_pop_sp_loop_label = 982, /* pop_sp_loop_label */
- YYSYMBOL_sp_labeled_control = 983, /* sp_labeled_control */
- YYSYMBOL_984_53 = 984, /* $@53 */
- YYSYMBOL_985_54 = 985, /* $@54 */
- YYSYMBOL_986_55 = 986, /* $@55 */
- YYSYMBOL_987_56 = 987, /* $@56 */
- YYSYMBOL_988_57 = 988, /* $@57 */
- YYSYMBOL_989_58 = 989, /* $@58 */
- YYSYMBOL_sp_unlabeled_control = 990, /* sp_unlabeled_control */
- YYSYMBOL_991_59 = 991, /* $@59 */
- YYSYMBOL_992_60 = 992, /* $@60 */
- YYSYMBOL_993_61 = 993, /* $@61 */
- YYSYMBOL_994_62 = 994, /* $@62 */
- YYSYMBOL_995_63 = 995, /* $@63 */
- YYSYMBOL_trg_action_time = 996, /* trg_action_time */
- YYSYMBOL_trg_event = 997, /* trg_event */
- YYSYMBOL_create_body = 998, /* create_body */
- YYSYMBOL_999_64 = 999, /* $@64 */
- YYSYMBOL_create_like = 1000, /* create_like */
- YYSYMBOL_opt_create_select = 1001, /* opt_create_select */
- YYSYMBOL_create_select_query_expression = 1002, /* create_select_query_expression */
- YYSYMBOL_opt_create_partitioning = 1003, /* opt_create_partitioning */
- YYSYMBOL_opt_partitioning = 1004, /* opt_partitioning */
- YYSYMBOL_partitioning = 1005, /* partitioning */
- YYSYMBOL_1006_65 = 1006, /* $@65 */
- YYSYMBOL_have_partitioning = 1007, /* have_partitioning */
- YYSYMBOL_partition_entry = 1008, /* partition_entry */
- YYSYMBOL_1009_66 = 1009, /* $@66 */
- YYSYMBOL_partition = 1010, /* partition */
- YYSYMBOL_1011_67 = 1011, /* $@67 */
- YYSYMBOL_part_type_def = 1012, /* part_type_def */
- YYSYMBOL_1013_68 = 1013, /* $@68 */
- YYSYMBOL_1014_69 = 1014, /* $@69 */
- YYSYMBOL_1015_70 = 1015, /* $@70 */
- YYSYMBOL_opt_linear = 1016, /* opt_linear */
- YYSYMBOL_opt_key_algo = 1017, /* opt_key_algo */
- YYSYMBOL_part_field_list = 1018, /* part_field_list */
- YYSYMBOL_part_field_item_list = 1019, /* part_field_item_list */
- YYSYMBOL_part_field_item = 1020, /* part_field_item */
- YYSYMBOL_part_column_list = 1021, /* part_column_list */
- YYSYMBOL_part_func = 1022, /* part_func */
- YYSYMBOL_sub_part_func = 1023, /* sub_part_func */
- YYSYMBOL_opt_num_parts = 1024, /* opt_num_parts */
- YYSYMBOL_opt_sub_part = 1025, /* opt_sub_part */
- YYSYMBOL_1026_71 = 1026, /* $@71 */
- YYSYMBOL_1027_72 = 1027, /* $@72 */
- YYSYMBOL_sub_part_field_list = 1028, /* sub_part_field_list */
- YYSYMBOL_sub_part_field_item = 1029, /* sub_part_field_item */
- YYSYMBOL_part_func_expr = 1030, /* part_func_expr */
- YYSYMBOL_opt_num_subparts = 1031, /* opt_num_subparts */
- YYSYMBOL_part_defs = 1032, /* part_defs */
- YYSYMBOL_part_def_list = 1033, /* part_def_list */
- YYSYMBOL_opt_partition = 1034, /* opt_partition */
- YYSYMBOL_part_definition = 1035, /* part_definition */
- YYSYMBOL_1036_73 = 1036, /* $@73 */
- YYSYMBOL_part_name = 1037, /* part_name */
- YYSYMBOL_opt_part_values = 1038, /* opt_part_values */
- YYSYMBOL_1039_74 = 1039, /* $@74 */
- YYSYMBOL_1040_75 = 1040, /* $@75 */
- YYSYMBOL_part_func_max = 1041, /* part_func_max */
- YYSYMBOL_part_values_in = 1042, /* part_values_in */
- YYSYMBOL_part_value_list = 1043, /* part_value_list */
- YYSYMBOL_part_value_item = 1044, /* part_value_item */
- YYSYMBOL_1045_76 = 1045, /* $@76 */
- YYSYMBOL_1046_77 = 1046, /* $@77 */
- YYSYMBOL_part_value_item_list = 1047, /* part_value_item_list */
- YYSYMBOL_part_value_expr_item = 1048, /* part_value_expr_item */
- YYSYMBOL_opt_sub_partition = 1049, /* opt_sub_partition */
- YYSYMBOL_sub_part_list = 1050, /* sub_part_list */
- YYSYMBOL_sub_part_definition = 1051, /* sub_part_definition */
- YYSYMBOL_1052_78 = 1052, /* $@78 */
- YYSYMBOL_sub_name = 1053, /* sub_name */
- YYSYMBOL_opt_part_options = 1054, /* opt_part_options */
- YYSYMBOL_part_option_list = 1055, /* part_option_list */
- YYSYMBOL_part_option = 1056, /* part_option */
- YYSYMBOL_opt_subpart_options = 1057, /* opt_subpart_options */
- YYSYMBOL_subpart_option_list = 1058, /* subpart_option_list */
- YYSYMBOL_server_part_option = 1059, /* server_part_option */
- YYSYMBOL_opt_versioning_rotation = 1060, /* opt_versioning_rotation */
- YYSYMBOL_1061_79 = 1061, /* $@79 */
- YYSYMBOL_opt_versioning_interval_start = 1062, /* opt_versioning_interval_start */
- YYSYMBOL_opt_vers_auto_part = 1063, /* opt_vers_auto_part */
- YYSYMBOL_opt_as = 1064, /* opt_as */
- YYSYMBOL_opt_create_database_options = 1065, /* opt_create_database_options */
- YYSYMBOL_create_database_options = 1066, /* create_database_options */
- YYSYMBOL_create_database_option = 1067, /* create_database_option */
- YYSYMBOL_opt_if_not_exists_table_element = 1068, /* opt_if_not_exists_table_element */
- YYSYMBOL_opt_if_not_exists = 1069, /* opt_if_not_exists */
- YYSYMBOL_create_or_replace = 1070, /* create_or_replace */
- YYSYMBOL_opt_create_table_options = 1071, /* opt_create_table_options */
- YYSYMBOL_create_table_options_space_separated = 1072, /* create_table_options_space_separated */
- YYSYMBOL_create_table_options = 1073, /* create_table_options */
- YYSYMBOL_create_table_option = 1074, /* create_table_option */
- YYSYMBOL_1075_80 = 1075, /* $@80 */
- YYSYMBOL_engine_defined_option = 1076, /* engine_defined_option */
- YYSYMBOL_opt_versioning_option = 1077, /* opt_versioning_option */
- YYSYMBOL_versioning_option = 1078, /* versioning_option */
- YYSYMBOL_default_charset = 1079, /* default_charset */
- YYSYMBOL_default_collation = 1080, /* default_collation */
- YYSYMBOL_storage_engines = 1081, /* storage_engines */
- YYSYMBOL_known_storage_engines = 1082, /* known_storage_engines */
- YYSYMBOL_row_types = 1083, /* row_types */
- YYSYMBOL_merge_insert_types = 1084, /* merge_insert_types */
- YYSYMBOL_udf_type = 1085, /* udf_type */
- YYSYMBOL_create_field_list = 1086, /* create_field_list */
- YYSYMBOL_create_field_list_parens = 1087, /* create_field_list_parens */
- YYSYMBOL_field_list = 1088, /* field_list */
- YYSYMBOL_field_list_item = 1089, /* field_list_item */
- YYSYMBOL_column_def = 1090, /* column_def */
- YYSYMBOL_key_def = 1091, /* key_def */
- YYSYMBOL_1092_81 = 1092, /* $@81 */
- YYSYMBOL_1093_82 = 1093, /* $@82 */
- YYSYMBOL_1094_83 = 1094, /* $@83 */
- YYSYMBOL_1095_84 = 1095, /* $@84 */
- YYSYMBOL_1096_85 = 1096, /* $@85 */
- YYSYMBOL_1097_86 = 1097, /* $@86 */
- YYSYMBOL_1098_87 = 1098, /* $@87 */
- YYSYMBOL_constraint_def = 1099, /* constraint_def */
- YYSYMBOL_period_for_system_time = 1100, /* period_for_system_time */
- YYSYMBOL_period_for_application_time = 1101, /* period_for_application_time */
- YYSYMBOL_opt_check_constraint = 1102, /* opt_check_constraint */
- YYSYMBOL_check_constraint = 1103, /* check_constraint */
- YYSYMBOL_opt_constraint_no_id = 1104, /* opt_constraint_no_id */
- YYSYMBOL_opt_constraint = 1105, /* opt_constraint */
- YYSYMBOL_constraint = 1106, /* constraint */
- YYSYMBOL_field_spec = 1107, /* field_spec */
- YYSYMBOL_1108_88 = 1108, /* @88 */
- YYSYMBOL_field_type_or_serial = 1109, /* field_type_or_serial */
- YYSYMBOL_1110_89 = 1110, /* $@89 */
- YYSYMBOL_1111_90 = 1111, /* $@90 */
- YYSYMBOL_opt_serial_attribute = 1112, /* opt_serial_attribute */
- YYSYMBOL_opt_serial_attribute_list = 1113, /* opt_serial_attribute_list */
- YYSYMBOL_opt_asrow_attribute = 1114, /* opt_asrow_attribute */
- YYSYMBOL_opt_asrow_attribute_list = 1115, /* opt_asrow_attribute_list */
- YYSYMBOL_field_def = 1116, /* field_def */
- YYSYMBOL_1117_91 = 1117, /* $@91 */
- YYSYMBOL_opt_generated_always = 1118, /* opt_generated_always */
- YYSYMBOL_vcol_opt_specifier = 1119, /* vcol_opt_specifier */
- YYSYMBOL_vcol_opt_attribute = 1120, /* vcol_opt_attribute */
- YYSYMBOL_vcol_opt_attribute_list = 1121, /* vcol_opt_attribute_list */
- YYSYMBOL_vcol_attribute = 1122, /* vcol_attribute */
- YYSYMBOL_parse_vcol_expr = 1123, /* parse_vcol_expr */
- YYSYMBOL_1124_92 = 1124, /* $@92 */
- YYSYMBOL_parenthesized_expr = 1125, /* parenthesized_expr */
- YYSYMBOL_virtual_column_func = 1126, /* virtual_column_func */
- YYSYMBOL_expr_or_literal = 1127, /* expr_or_literal */
- YYSYMBOL_column_default_expr = 1128, /* column_default_expr */
- YYSYMBOL_field_type = 1129, /* field_type */
- YYSYMBOL_qualified_field_type = 1130, /* qualified_field_type */
- YYSYMBOL_udt_name = 1131, /* udt_name */
- YYSYMBOL_field_type_all = 1132, /* field_type_all */
- YYSYMBOL_field_type_numeric = 1133, /* field_type_numeric */
- YYSYMBOL_opt_binary_and_compression = 1134, /* opt_binary_and_compression */
- YYSYMBOL_field_type_string = 1135, /* field_type_string */
- YYSYMBOL_field_type_temporal = 1136, /* field_type_temporal */
- YYSYMBOL_field_type_lob = 1137, /* field_type_lob */
- YYSYMBOL_field_type_misc = 1138, /* field_type_misc */
- YYSYMBOL_char = 1139, /* char */
- YYSYMBOL_nchar = 1140, /* nchar */
- YYSYMBOL_varchar = 1141, /* varchar */
- YYSYMBOL_nvarchar = 1142, /* nvarchar */
- YYSYMBOL_int_type = 1143, /* int_type */
- YYSYMBOL_real_type = 1144, /* real_type */
- YYSYMBOL_srid_option = 1145, /* srid_option */
- YYSYMBOL_float_options = 1146, /* float_options */
- YYSYMBOL_precision = 1147, /* precision */
- YYSYMBOL_field_options = 1148, /* field_options */
- YYSYMBOL_last_field_options = 1149, /* last_field_options */
- YYSYMBOL_field_length_str = 1150, /* field_length_str */
- YYSYMBOL_field_length = 1151, /* field_length */
- YYSYMBOL_field_scale = 1152, /* field_scale */
- YYSYMBOL_opt_field_length = 1153, /* opt_field_length */
- YYSYMBOL_opt_field_scale = 1154, /* opt_field_scale */
- YYSYMBOL_opt_precision = 1155, /* opt_precision */
- YYSYMBOL_attribute_list = 1156, /* attribute_list */
- YYSYMBOL_attribute = 1157, /* attribute */
- YYSYMBOL_opt_compression_method = 1158, /* opt_compression_method */
- YYSYMBOL_opt_compressed = 1159, /* opt_compressed */
- YYSYMBOL_opt_enable = 1160, /* opt_enable */
- YYSYMBOL_compressed = 1161, /* compressed */
- YYSYMBOL_compressed_deprecated_data_type_attribute = 1162, /* compressed_deprecated_data_type_attribute */
- YYSYMBOL_compressed_deprecated_column_attribute = 1163, /* compressed_deprecated_column_attribute */
- YYSYMBOL_asrow_attribute = 1164, /* asrow_attribute */
- YYSYMBOL_serial_attribute = 1165, /* serial_attribute */
- YYSYMBOL_with_or_without_system = 1166, /* with_or_without_system */
- YYSYMBOL_charset = 1167, /* charset */
- YYSYMBOL_charset_name = 1168, /* charset_name */
- YYSYMBOL_charset_name_or_default = 1169, /* charset_name_or_default */
- YYSYMBOL_opt_load_data_charset = 1170, /* opt_load_data_charset */
- YYSYMBOL_old_or_new_charset_name = 1171, /* old_or_new_charset_name */
- YYSYMBOL_old_or_new_charset_name_or_default = 1172, /* old_or_new_charset_name_or_default */
- YYSYMBOL_collation_name = 1173, /* collation_name */
- YYSYMBOL_collation_name_or_default = 1174, /* collation_name_or_default */
- YYSYMBOL_opt_default = 1175, /* opt_default */
- YYSYMBOL_charset_or_alias = 1176, /* charset_or_alias */
- YYSYMBOL_opt_binary = 1177, /* opt_binary */
- YYSYMBOL_binary = 1178, /* binary */
- YYSYMBOL_opt_bin_mod = 1179, /* opt_bin_mod */
- YYSYMBOL_ws_nweights = 1180, /* ws_nweights */
- YYSYMBOL_1181_93 = 1181, /* $@93 */
- YYSYMBOL_ws_level_flag_desc = 1182, /* ws_level_flag_desc */
- YYSYMBOL_ws_level_flag_reverse = 1183, /* ws_level_flag_reverse */
- YYSYMBOL_ws_level_flags = 1184, /* ws_level_flags */
- YYSYMBOL_ws_level_number = 1185, /* ws_level_number */
- YYSYMBOL_ws_level_list_item = 1186, /* ws_level_list_item */
- YYSYMBOL_ws_level_list = 1187, /* ws_level_list */
- YYSYMBOL_ws_level_range = 1188, /* ws_level_range */
- YYSYMBOL_ws_level_list_or_range = 1189, /* ws_level_list_or_range */
- YYSYMBOL_opt_ws_levels = 1190, /* opt_ws_levels */
- YYSYMBOL_opt_primary = 1191, /* opt_primary */
- YYSYMBOL_references = 1192, /* references */
- YYSYMBOL_opt_ref_list = 1193, /* opt_ref_list */
- YYSYMBOL_ref_list = 1194, /* ref_list */
- YYSYMBOL_opt_match_clause = 1195, /* opt_match_clause */
- YYSYMBOL_opt_on_update_delete = 1196, /* opt_on_update_delete */
- YYSYMBOL_delete_option = 1197, /* delete_option */
- YYSYMBOL_constraint_key_type = 1198, /* constraint_key_type */
- YYSYMBOL_key_or_index = 1199, /* key_or_index */
- YYSYMBOL_opt_key_or_index = 1200, /* opt_key_or_index */
- YYSYMBOL_keys_or_index = 1201, /* keys_or_index */
- YYSYMBOL_fulltext = 1202, /* fulltext */
- YYSYMBOL_spatial = 1203, /* spatial */
- YYSYMBOL_normal_key_options = 1204, /* normal_key_options */
- YYSYMBOL_fulltext_key_options = 1205, /* fulltext_key_options */
- YYSYMBOL_spatial_key_options = 1206, /* spatial_key_options */
- YYSYMBOL_normal_key_opts = 1207, /* normal_key_opts */
- YYSYMBOL_spatial_key_opts = 1208, /* spatial_key_opts */
- YYSYMBOL_fulltext_key_opts = 1209, /* fulltext_key_opts */
- YYSYMBOL_opt_USING_key_algorithm = 1210, /* opt_USING_key_algorithm */
- YYSYMBOL_opt_key_algorithm_clause = 1211, /* opt_key_algorithm_clause */
- YYSYMBOL_key_using_alg = 1212, /* key_using_alg */
- YYSYMBOL_all_key_opt = 1213, /* all_key_opt */
- YYSYMBOL_normal_key_opt = 1214, /* normal_key_opt */
- YYSYMBOL_spatial_key_opt = 1215, /* spatial_key_opt */
- YYSYMBOL_fulltext_key_opt = 1216, /* fulltext_key_opt */
- YYSYMBOL_btree_or_rtree = 1217, /* btree_or_rtree */
- YYSYMBOL_ignorability = 1218, /* ignorability */
- YYSYMBOL_key_list = 1219, /* key_list */
- YYSYMBOL_opt_without_overlaps = 1220, /* opt_without_overlaps */
- YYSYMBOL_key_part = 1221, /* key_part */
- YYSYMBOL_opt_ident = 1222, /* opt_ident */
- YYSYMBOL_string_list = 1223, /* string_list */
- YYSYMBOL_alter = 1224, /* alter */
- YYSYMBOL_1225_94 = 1225, /* $@94 */
- YYSYMBOL_1226_95 = 1226, /* $@95 */
- YYSYMBOL_1227_96 = 1227, /* $@96 */
- YYSYMBOL_1228_97 = 1228, /* $@97 */
- YYSYMBOL_1229_98 = 1229, /* $@98 */
- YYSYMBOL_1230_99 = 1230, /* $@99 */
- YYSYMBOL_1231_100 = 1231, /* $@100 */
- YYSYMBOL_1232_101 = 1232, /* $@101 */
- YYSYMBOL_1233_102 = 1233, /* $@102 */
- YYSYMBOL_1234_103 = 1234, /* $@103 */
- YYSYMBOL_1235_104 = 1235, /* $@104 */
- YYSYMBOL_1236_105 = 1236, /* $@105 */
- YYSYMBOL_1237_106 = 1237, /* $@106 */
- YYSYMBOL_account_locking_option = 1238, /* account_locking_option */
- YYSYMBOL_opt_password_expire_option = 1239, /* opt_password_expire_option */
- YYSYMBOL_opt_account_locking_and_opt_password_expiration = 1240, /* opt_account_locking_and_opt_password_expiration */
- YYSYMBOL_ev_alter_on_schedule_completion = 1241, /* ev_alter_on_schedule_completion */
- YYSYMBOL_opt_ev_rename_to = 1242, /* opt_ev_rename_to */
- YYSYMBOL_opt_ev_sql_stmt = 1243, /* opt_ev_sql_stmt */
- YYSYMBOL_ident_or_empty = 1244, /* ident_or_empty */
- YYSYMBOL_alter_commands = 1245, /* alter_commands */
- YYSYMBOL_1246_107 = 1246, /* $@107 */
- YYSYMBOL_1247_108 = 1247, /* $@108 */
- YYSYMBOL_1248_109 = 1248, /* $@109 */
- YYSYMBOL_1249_110 = 1249, /* $@110 */
- YYSYMBOL_remove_partitioning = 1250, /* remove_partitioning */
- YYSYMBOL_all_or_alt_part_name_list = 1251, /* all_or_alt_part_name_list */
- YYSYMBOL_add_partition_rule = 1252, /* add_partition_rule */
- YYSYMBOL_1253_111 = 1253, /* $@111 */
- YYSYMBOL_add_part_extra = 1254, /* add_part_extra */
- YYSYMBOL_reorg_partition_rule = 1255, /* reorg_partition_rule */
- YYSYMBOL_1256_112 = 1256, /* $@112 */
- YYSYMBOL_reorg_parts_rule = 1257, /* reorg_parts_rule */
- YYSYMBOL_1258_113 = 1258, /* $@113 */
- YYSYMBOL_alt_part_name_list = 1259, /* alt_part_name_list */
- YYSYMBOL_alt_part_name_item = 1260, /* alt_part_name_item */
- YYSYMBOL_alter_list = 1261, /* alter_list */
- YYSYMBOL_add_column = 1262, /* add_column */
- YYSYMBOL_alter_list_item = 1263, /* alter_list_item */
- YYSYMBOL_opt_index_lock_algorithm = 1264, /* opt_index_lock_algorithm */
- YYSYMBOL_alter_algorithm_option = 1265, /* alter_algorithm_option */
- YYSYMBOL_alter_lock_option = 1266, /* alter_lock_option */
- YYSYMBOL_opt_column = 1267, /* opt_column */
- YYSYMBOL_opt_ignore = 1268, /* opt_ignore */
- YYSYMBOL_alter_options = 1269, /* alter_options */
- YYSYMBOL_1270_114 = 1270, /* $@114 */
- YYSYMBOL_alter_options_part2 = 1271, /* alter_options_part2 */
- YYSYMBOL_alter_option_list = 1272, /* alter_option_list */
- YYSYMBOL_alter_option = 1273, /* alter_option */
- YYSYMBOL_opt_restrict = 1274, /* opt_restrict */
- YYSYMBOL_opt_place = 1275, /* opt_place */
- YYSYMBOL_opt_to = 1276, /* opt_to */
- YYSYMBOL_slave = 1277, /* slave */
- YYSYMBOL_1278_115 = 1278, /* $@115 */
- YYSYMBOL_1279_116 = 1279, /* $@116 */
- YYSYMBOL_start = 1280, /* start */
- YYSYMBOL_opt_start_transaction_option_list = 1281, /* opt_start_transaction_option_list */
- YYSYMBOL_start_transaction_option_list = 1282, /* start_transaction_option_list */
- YYSYMBOL_start_transaction_option = 1283, /* start_transaction_option */
- YYSYMBOL_slave_thread_opts = 1284, /* slave_thread_opts */
- YYSYMBOL_1285_117 = 1285, /* $@117 */
- YYSYMBOL_slave_thread_opt_list = 1286, /* slave_thread_opt_list */
- YYSYMBOL_slave_thread_opt = 1287, /* slave_thread_opt */
- YYSYMBOL_slave_until = 1288, /* slave_until */
- YYSYMBOL_slave_until_opts = 1289, /* slave_until_opts */
- YYSYMBOL_checksum = 1290, /* checksum */
- YYSYMBOL_1291_118 = 1291, /* $@118 */
- YYSYMBOL_opt_checksum_type = 1292, /* opt_checksum_type */
- YYSYMBOL_repair_table_or_view = 1293, /* repair_table_or_view */
- YYSYMBOL_1294_119 = 1294, /* $@119 */
- YYSYMBOL_repair = 1295, /* repair */
- YYSYMBOL_1296_120 = 1296, /* $@120 */
- YYSYMBOL_opt_mi_repair_type = 1297, /* opt_mi_repair_type */
- YYSYMBOL_mi_repair_types = 1298, /* mi_repair_types */
- YYSYMBOL_mi_repair_type = 1299, /* mi_repair_type */
- YYSYMBOL_opt_view_repair_type = 1300, /* opt_view_repair_type */
- YYSYMBOL_analyze = 1301, /* analyze */
- YYSYMBOL_1302_121 = 1302, /* $@121 */
- YYSYMBOL_analyze_table_list = 1303, /* analyze_table_list */
- YYSYMBOL_analyze_table_elem_spec = 1304, /* analyze_table_elem_spec */
- YYSYMBOL_opt_persistent_stat_clause = 1305, /* opt_persistent_stat_clause */
- YYSYMBOL_persistent_stat_spec = 1306, /* persistent_stat_spec */
- YYSYMBOL_persistent_column_stat_spec = 1307, /* persistent_column_stat_spec */
- YYSYMBOL_1308_122 = 1308, /* $@122 */
- YYSYMBOL_persistent_index_stat_spec = 1309, /* persistent_index_stat_spec */
- YYSYMBOL_1310_123 = 1310, /* $@123 */
- YYSYMBOL_table_column_list = 1311, /* table_column_list */
- YYSYMBOL_table_index_list = 1312, /* table_index_list */
- YYSYMBOL_table_index_name = 1313, /* table_index_name */
- YYSYMBOL_binlog_base64_event = 1314, /* binlog_base64_event */
- YYSYMBOL_check_view_or_table = 1315, /* check_view_or_table */
- YYSYMBOL_1316_124 = 1316, /* $@124 */
- YYSYMBOL_check = 1317, /* check */
- YYSYMBOL_1318_125 = 1318, /* $@125 */
- YYSYMBOL_opt_mi_check_type = 1319, /* opt_mi_check_type */
- YYSYMBOL_mi_check_types = 1320, /* mi_check_types */
- YYSYMBOL_mi_check_type = 1321, /* mi_check_type */
- YYSYMBOL_opt_view_check_type = 1322, /* opt_view_check_type */
- YYSYMBOL_optimize = 1323, /* optimize */
- YYSYMBOL_1324_126 = 1324, /* $@126 */
- YYSYMBOL_opt_no_write_to_binlog = 1325, /* opt_no_write_to_binlog */
- YYSYMBOL_rename = 1326, /* rename */
- YYSYMBOL_1327_127 = 1327, /* $@127 */
- YYSYMBOL_rename_list = 1328, /* rename_list */
- YYSYMBOL_table_to_table_list = 1329, /* table_to_table_list */
- YYSYMBOL_table_to_table = 1330, /* table_to_table */
- YYSYMBOL_keycache = 1331, /* keycache */
- YYSYMBOL_1332_128 = 1332, /* $@128 */
- YYSYMBOL_keycache_list_or_parts = 1333, /* keycache_list_or_parts */
- YYSYMBOL_keycache_list = 1334, /* keycache_list */
- YYSYMBOL_assign_to_keycache = 1335, /* assign_to_keycache */
- YYSYMBOL_assign_to_keycache_parts = 1336, /* assign_to_keycache_parts */
- YYSYMBOL_key_cache_name = 1337, /* key_cache_name */
- YYSYMBOL_preload = 1338, /* preload */
- YYSYMBOL_1339_129 = 1339, /* $@129 */
- YYSYMBOL_preload_list_or_parts = 1340, /* preload_list_or_parts */
- YYSYMBOL_preload_list = 1341, /* preload_list */
- YYSYMBOL_preload_keys = 1342, /* preload_keys */
- YYSYMBOL_preload_keys_parts = 1343, /* preload_keys_parts */
- YYSYMBOL_adm_partition = 1344, /* adm_partition */
- YYSYMBOL_1345_130 = 1345, /* $@130 */
- YYSYMBOL_cache_keys_spec = 1346, /* cache_keys_spec */
- YYSYMBOL_1347_131 = 1347, /* $@131 */
- YYSYMBOL_cache_key_list_or_empty = 1348, /* cache_key_list_or_empty */
- YYSYMBOL_opt_ignore_leaves = 1349, /* opt_ignore_leaves */
- YYSYMBOL_select = 1350, /* select */
- YYSYMBOL_1351_132 = 1351, /* $@132 */
- YYSYMBOL_1352_133 = 1352, /* $@133 */
- YYSYMBOL_select_into = 1353, /* select_into */
- YYSYMBOL_1354_134 = 1354, /* $@134 */
- YYSYMBOL_1355_135 = 1355, /* $@135 */
- YYSYMBOL_simple_table = 1356, /* simple_table */
- YYSYMBOL_table_value_constructor = 1357, /* table_value_constructor */
- YYSYMBOL_1358_136 = 1358, /* $@136 */
- YYSYMBOL_query_specification_start = 1359, /* query_specification_start */
- YYSYMBOL_1360_137 = 1360, /* $@137 */
- YYSYMBOL_1361_138 = 1361, /* $@138 */
- YYSYMBOL_query_specification = 1362, /* query_specification */
- YYSYMBOL_select_into_query_specification = 1363, /* select_into_query_specification */
- YYSYMBOL_query_expression = 1364, /* query_expression */
- YYSYMBOL_query_expression_no_with_clause = 1365, /* query_expression_no_with_clause */
- YYSYMBOL_query_expression_body_ext = 1366, /* query_expression_body_ext */
- YYSYMBOL_1367_139 = 1367, /* $@139 */
- YYSYMBOL_1368_140 = 1368, /* $@140 */
- YYSYMBOL_query_expression_body_ext_parens = 1369, /* query_expression_body_ext_parens */
- YYSYMBOL_query_expression_body = 1370, /* query_expression_body */
- YYSYMBOL_1371_141 = 1371, /* $@141 */
- YYSYMBOL_query_primary = 1372, /* query_primary */
- YYSYMBOL_query_simple = 1373, /* query_simple */
- YYSYMBOL_subselect = 1374, /* subselect */
- YYSYMBOL_subquery = 1375, /* subquery */
- YYSYMBOL_opt_from_clause = 1376, /* opt_from_clause */
- YYSYMBOL_from_clause = 1377, /* from_clause */
- YYSYMBOL_table_reference_list = 1378, /* table_reference_list */
- YYSYMBOL_select_options = 1379, /* select_options */
- YYSYMBOL_opt_history_unit = 1380, /* opt_history_unit */
- YYSYMBOL_history_point = 1381, /* history_point */
- YYSYMBOL_for_portion_of_time_clause = 1382, /* for_portion_of_time_clause */
- YYSYMBOL_opt_for_portion_of_time_clause = 1383, /* opt_for_portion_of_time_clause */
- YYSYMBOL_opt_for_system_time_clause = 1384, /* opt_for_system_time_clause */
- YYSYMBOL_system_time_expr = 1385, /* system_time_expr */
- YYSYMBOL_select_option_list = 1386, /* select_option_list */
- YYSYMBOL_select_option = 1387, /* select_option */
- YYSYMBOL_select_lock_type = 1388, /* select_lock_type */
- YYSYMBOL_opt_select_lock_type = 1389, /* opt_select_lock_type */
- YYSYMBOL_opt_lock_wait_timeout_new = 1390, /* opt_lock_wait_timeout_new */
- YYSYMBOL_select_item_list = 1391, /* select_item_list */
- YYSYMBOL_select_item = 1392, /* select_item */
- YYSYMBOL_remember_tok_start = 1393, /* remember_tok_start */
- YYSYMBOL_remember_name = 1394, /* remember_name */
- YYSYMBOL_remember_end = 1395, /* remember_end */
- YYSYMBOL_select_alias = 1396, /* select_alias */
- YYSYMBOL_opt_default_time_precision = 1397, /* opt_default_time_precision */
- YYSYMBOL_opt_time_precision = 1398, /* opt_time_precision */
- YYSYMBOL_optional_braces = 1399, /* optional_braces */
- YYSYMBOL_expr = 1400, /* expr */
- YYSYMBOL_boolean_test = 1401, /* boolean_test */
- YYSYMBOL_predicate = 1402, /* predicate */
- YYSYMBOL_bit_expr = 1403, /* bit_expr */
- YYSYMBOL_or = 1404, /* or */
- YYSYMBOL_and = 1405, /* and */
- YYSYMBOL_not = 1406, /* not */
- YYSYMBOL_not2 = 1407, /* not2 */
- YYSYMBOL_comp_op = 1408, /* comp_op */
- YYSYMBOL_all_or_any = 1409, /* all_or_any */
- YYSYMBOL_opt_dyncol_type = 1410, /* opt_dyncol_type */
- YYSYMBOL_dyncol_type = 1411, /* dyncol_type */
- YYSYMBOL_numeric_dyncol_type = 1412, /* numeric_dyncol_type */
- YYSYMBOL_temporal_dyncol_type = 1413, /* temporal_dyncol_type */
- YYSYMBOL_string_dyncol_type = 1414, /* string_dyncol_type */
- YYSYMBOL_dyncall_create_element = 1415, /* dyncall_create_element */
- YYSYMBOL_dyncall_create_list = 1416, /* dyncall_create_list */
- YYSYMBOL_plsql_cursor_attr = 1417, /* plsql_cursor_attr */
- YYSYMBOL_explicit_cursor_attr = 1418, /* explicit_cursor_attr */
- YYSYMBOL_trim_operands = 1419, /* trim_operands */
- YYSYMBOL_trim_operands_regular = 1420, /* trim_operands_regular */
- YYSYMBOL_trim_operands_special = 1421, /* trim_operands_special */
- YYSYMBOL_column_default_non_parenthesized_expr = 1422, /* column_default_non_parenthesized_expr */
- YYSYMBOL_primary_expr = 1423, /* primary_expr */
- YYSYMBOL_string_factor_expr = 1424, /* string_factor_expr */
- YYSYMBOL_simple_expr = 1425, /* simple_expr */
- YYSYMBOL_mysql_concatenation_expr = 1426, /* mysql_concatenation_expr */
- YYSYMBOL_function_call_keyword_timestamp = 1427, /* function_call_keyword_timestamp */
- YYSYMBOL_function_call_keyword = 1428, /* function_call_keyword */
- YYSYMBOL_substring_operands = 1429, /* substring_operands */
- YYSYMBOL_substring_operands_regular = 1430, /* substring_operands_regular */
- YYSYMBOL_substring_operands_special = 1431, /* substring_operands_special */
- YYSYMBOL_function_call_nonkeyword = 1432, /* function_call_nonkeyword */
- YYSYMBOL_function_call_conflict = 1433, /* function_call_conflict */
- YYSYMBOL_function_call_generic = 1434, /* function_call_generic */
- YYSYMBOL_1435_142 = 1435, /* @142 */
- YYSYMBOL_fulltext_options = 1436, /* fulltext_options */
- YYSYMBOL_opt_natural_language_mode = 1437, /* opt_natural_language_mode */
- YYSYMBOL_opt_query_expansion = 1438, /* opt_query_expansion */
- YYSYMBOL_opt_udf_expr_list = 1439, /* opt_udf_expr_list */
- YYSYMBOL_udf_expr_list = 1440, /* udf_expr_list */
- YYSYMBOL_udf_expr = 1441, /* udf_expr */
- YYSYMBOL_sum_expr = 1442, /* sum_expr */
- YYSYMBOL_1443_143 = 1443, /* $@143 */
- YYSYMBOL_1444_144 = 1444, /* $@144 */
- YYSYMBOL_1445_145 = 1445, /* $@145 */
- YYSYMBOL_1446_146 = 1446, /* $@146 */
- YYSYMBOL_1447_147 = 1447, /* $@147 */
- YYSYMBOL_window_func_expr = 1448, /* window_func_expr */
- YYSYMBOL_window_func = 1449, /* window_func */
- YYSYMBOL_simple_window_func = 1450, /* simple_window_func */
- YYSYMBOL_inverse_distribution_function = 1451, /* inverse_distribution_function */
- YYSYMBOL_percentile_function = 1452, /* percentile_function */
- YYSYMBOL_1453_148 = 1453, /* $@148 */
- YYSYMBOL_inverse_distribution_function_def = 1454, /* inverse_distribution_function_def */
- YYSYMBOL_order_by_single_element_list = 1455, /* order_by_single_element_list */
- YYSYMBOL_window_name = 1456, /* window_name */
- YYSYMBOL_variable = 1457, /* variable */
- YYSYMBOL_1458_149 = 1458, /* $@149 */
- YYSYMBOL_variable_aux = 1459, /* variable_aux */
- YYSYMBOL_opt_distinct = 1460, /* opt_distinct */
- YYSYMBOL_opt_gconcat_separator = 1461, /* opt_gconcat_separator */
- YYSYMBOL_opt_gorder_clause = 1462, /* opt_gorder_clause */
- YYSYMBOL_gorder_list = 1463, /* gorder_list */
- YYSYMBOL_opt_glimit_clause = 1464, /* opt_glimit_clause */
- YYSYMBOL_glimit_clause = 1465, /* glimit_clause */
- YYSYMBOL_glimit_options = 1466, /* glimit_options */
- YYSYMBOL_in_sum_expr = 1467, /* in_sum_expr */
- YYSYMBOL_1468_150 = 1468, /* $@150 */
- YYSYMBOL_cast_type = 1469, /* cast_type */
- YYSYMBOL_cast_type_numeric = 1470, /* cast_type_numeric */
- YYSYMBOL_cast_type_temporal = 1471, /* cast_type_temporal */
- YYSYMBOL_opt_expr_list = 1472, /* opt_expr_list */
- YYSYMBOL_expr_list = 1473, /* expr_list */
- YYSYMBOL_ident_list_arg = 1474, /* ident_list_arg */
- YYSYMBOL_ident_list = 1475, /* ident_list */
- YYSYMBOL_when_list = 1476, /* when_list */
- YYSYMBOL_when_list_opt_else = 1477, /* when_list_opt_else */
- YYSYMBOL_table_ref = 1478, /* table_ref */
- YYSYMBOL_json_text_literal = 1479, /* json_text_literal */
- YYSYMBOL_json_text_literal_or_num = 1480, /* json_text_literal_or_num */
- YYSYMBOL_join_table_list = 1481, /* join_table_list */
- YYSYMBOL_json_table_columns_clause = 1482, /* json_table_columns_clause */
- YYSYMBOL_json_table_columns_list = 1483, /* json_table_columns_list */
- YYSYMBOL_json_table_column = 1484, /* json_table_column */
- YYSYMBOL_1485_151 = 1485, /* $@151 */
- YYSYMBOL_1486_152 = 1486, /* $@152 */
- YYSYMBOL_json_table_column_type = 1487, /* json_table_column_type */
- YYSYMBOL_json_table_field_type = 1488, /* json_table_field_type */
- YYSYMBOL_json_opt_on_empty_or_error = 1489, /* json_opt_on_empty_or_error */
- YYSYMBOL_json_on_response = 1490, /* json_on_response */
- YYSYMBOL_json_on_error_response = 1491, /* json_on_error_response */
- YYSYMBOL_json_on_empty_response = 1492, /* json_on_empty_response */
- YYSYMBOL_table_function = 1493, /* table_function */
- YYSYMBOL_1494_153 = 1494, /* $@153 */
- YYSYMBOL_1495_154 = 1495, /* $@154 */
- YYSYMBOL_esc_table_ref = 1496, /* esc_table_ref */
- YYSYMBOL_derived_table_list = 1497, /* derived_table_list */
- YYSYMBOL_join_table = 1498, /* join_table */
- YYSYMBOL_1499_155 = 1499, /* $@155 */
- YYSYMBOL_1500_156 = 1500, /* $@156 */
- YYSYMBOL_1501_157 = 1501, /* $@157 */
- YYSYMBOL_1502_158 = 1502, /* $@158 */
- YYSYMBOL_1503_159 = 1503, /* $@159 */
- YYSYMBOL_1504_160 = 1504, /* $@160 */
- YYSYMBOL_inner_join = 1505, /* inner_join */
- YYSYMBOL_normal_join = 1506, /* normal_join */
- YYSYMBOL_opt_use_partition = 1507, /* opt_use_partition */
- YYSYMBOL_use_partition = 1508, /* use_partition */
- YYSYMBOL_table_factor = 1509, /* table_factor */
- YYSYMBOL_table_primary_ident_opt_parens = 1510, /* table_primary_ident_opt_parens */
- YYSYMBOL_table_primary_derived_opt_parens = 1511, /* table_primary_derived_opt_parens */
- YYSYMBOL_table_reference_list_parens = 1512, /* table_reference_list_parens */
- YYSYMBOL_nested_table_reference_list = 1513, /* nested_table_reference_list */
- YYSYMBOL_join_table_parens = 1514, /* join_table_parens */
- YYSYMBOL_table_primary_ident = 1515, /* table_primary_ident */
- YYSYMBOL_table_primary_derived = 1516, /* table_primary_derived */
- YYSYMBOL_opt_outer = 1517, /* opt_outer */
- YYSYMBOL_index_hint_clause = 1518, /* index_hint_clause */
- YYSYMBOL_index_hint_type = 1519, /* index_hint_type */
- YYSYMBOL_index_hint_definition = 1520, /* index_hint_definition */
- YYSYMBOL_1521_161 = 1521, /* $@161 */
- YYSYMBOL_1522_162 = 1522, /* $@162 */
- YYSYMBOL_index_hints_list = 1523, /* index_hints_list */
- YYSYMBOL_opt_index_hints_list = 1524, /* opt_index_hints_list */
- YYSYMBOL_1525_163 = 1525, /* $@163 */
- YYSYMBOL_opt_key_definition = 1526, /* opt_key_definition */
- YYSYMBOL_1527_164 = 1527, /* $@164 */
- YYSYMBOL_opt_key_usage_list = 1528, /* opt_key_usage_list */
- YYSYMBOL_key_usage_element = 1529, /* key_usage_element */
- YYSYMBOL_key_usage_list = 1530, /* key_usage_list */
- YYSYMBOL_using_list = 1531, /* using_list */
- YYSYMBOL_interval = 1532, /* interval */
- YYSYMBOL_interval_time_stamp = 1533, /* interval_time_stamp */
- YYSYMBOL_date_time_type = 1534, /* date_time_type */
- YYSYMBOL_table_alias = 1535, /* table_alias */
- YYSYMBOL_opt_table_alias_clause = 1536, /* opt_table_alias_clause */
- YYSYMBOL_table_alias_clause = 1537, /* table_alias_clause */
- YYSYMBOL_opt_all = 1538, /* opt_all */
- YYSYMBOL_opt_where_clause = 1539, /* opt_where_clause */
- YYSYMBOL_1540_165 = 1540, /* $@165 */
- YYSYMBOL_opt_having_clause = 1541, /* opt_having_clause */
- YYSYMBOL_1542_166 = 1542, /* $@166 */
- YYSYMBOL_opt_group_clause = 1543, /* opt_group_clause */
- YYSYMBOL_group_list = 1544, /* group_list */
- YYSYMBOL_olap_opt = 1545, /* olap_opt */
- YYSYMBOL_opt_window_clause = 1546, /* opt_window_clause */
- YYSYMBOL_window_def_list = 1547, /* window_def_list */
- YYSYMBOL_window_def = 1548, /* window_def */
- YYSYMBOL_window_spec = 1549, /* window_spec */
- YYSYMBOL_1550_167 = 1550, /* $@167 */
- YYSYMBOL_opt_window_ref = 1551, /* opt_window_ref */
- YYSYMBOL_opt_window_partition_clause = 1552, /* opt_window_partition_clause */
- YYSYMBOL_opt_window_order_clause = 1553, /* opt_window_order_clause */
- YYSYMBOL_opt_window_frame_clause = 1554, /* opt_window_frame_clause */
- YYSYMBOL_window_frame_units = 1555, /* window_frame_units */
- YYSYMBOL_window_frame_extent = 1556, /* window_frame_extent */
- YYSYMBOL_window_frame_start = 1557, /* window_frame_start */
- YYSYMBOL_window_frame_bound = 1558, /* window_frame_bound */
- YYSYMBOL_opt_window_frame_exclusion = 1559, /* opt_window_frame_exclusion */
- YYSYMBOL_alter_order_clause = 1560, /* alter_order_clause */
- YYSYMBOL_alter_order_list = 1561, /* alter_order_list */
- YYSYMBOL_alter_order_item = 1562, /* alter_order_item */
- YYSYMBOL_opt_order_clause = 1563, /* opt_order_clause */
- YYSYMBOL_order_clause = 1564, /* order_clause */
- YYSYMBOL_1565_168 = 1565, /* $@168 */
- YYSYMBOL_order_list = 1566, /* order_list */
- YYSYMBOL_order_dir = 1567, /* order_dir */
- YYSYMBOL_opt_limit_clause = 1568, /* opt_limit_clause */
- YYSYMBOL_limit_clause = 1569, /* limit_clause */
- YYSYMBOL_fetch_first_clause = 1570, /* fetch_first_clause */
- YYSYMBOL_first_or_next = 1571, /* first_or_next */
- YYSYMBOL_row_or_rows = 1572, /* row_or_rows */
- YYSYMBOL_only_or_with_ties = 1573, /* only_or_with_ties */
- YYSYMBOL_opt_global_limit_clause = 1574, /* opt_global_limit_clause */
- YYSYMBOL_limit_options = 1575, /* limit_options */
- YYSYMBOL_limit_option = 1576, /* limit_option */
- YYSYMBOL_limit_rows_option = 1577, /* limit_rows_option */
- YYSYMBOL_delete_limit_clause = 1578, /* delete_limit_clause */
- YYSYMBOL_order_limit_lock = 1579, /* order_limit_lock */
- YYSYMBOL_opt_order_limit_lock = 1580, /* opt_order_limit_lock */
- YYSYMBOL_query_expression_tail = 1581, /* query_expression_tail */
- YYSYMBOL_opt_query_expression_tail = 1582, /* opt_query_expression_tail */
- YYSYMBOL_opt_procedure_or_into = 1583, /* opt_procedure_or_into */
- YYSYMBOL_order_or_limit = 1584, /* order_or_limit */
- YYSYMBOL_opt_plus = 1585, /* opt_plus */
- YYSYMBOL_int_num = 1586, /* int_num */
- YYSYMBOL_ulong_num = 1587, /* ulong_num */
- YYSYMBOL_real_ulong_num = 1588, /* real_ulong_num */
- YYSYMBOL_longlong_num = 1589, /* longlong_num */
- YYSYMBOL_ulonglong_num = 1590, /* ulonglong_num */
- YYSYMBOL_real_ulonglong_num = 1591, /* real_ulonglong_num */
- YYSYMBOL_dec_num_error = 1592, /* dec_num_error */
- YYSYMBOL_dec_num = 1593, /* dec_num */
- YYSYMBOL_choice = 1594, /* choice */
- YYSYMBOL_bool = 1595, /* bool */
- YYSYMBOL_procedure_clause = 1596, /* procedure_clause */
- YYSYMBOL_1597_169 = 1597, /* $@169 */
- YYSYMBOL_procedure_list = 1598, /* procedure_list */
- YYSYMBOL_procedure_list2 = 1599, /* procedure_list2 */
- YYSYMBOL_procedure_item = 1600, /* procedure_item */
- YYSYMBOL_select_var_list_init = 1601, /* select_var_list_init */
- YYSYMBOL_1602_170 = 1602, /* $@170 */
- YYSYMBOL_select_var_list = 1603, /* select_var_list */
- YYSYMBOL_select_var_ident = 1604, /* select_var_ident */
- YYSYMBOL_select_outvar = 1605, /* select_outvar */
- YYSYMBOL_into = 1606, /* into */
- YYSYMBOL_into_destination = 1607, /* into_destination */
- YYSYMBOL_1608_171 = 1608, /* $@171 */
- YYSYMBOL_1609_172 = 1609, /* $@172 */
- YYSYMBOL_do = 1610, /* do */
- YYSYMBOL_1611_173 = 1611, /* $@173 */
- YYSYMBOL_drop = 1612, /* drop */
- YYSYMBOL_1613_174 = 1613, /* $@174 */
- YYSYMBOL_1614_175 = 1614, /* $@175 */
- YYSYMBOL_1615_176 = 1615, /* $@176 */
- YYSYMBOL_1616_177 = 1616, /* $@177 */
- YYSYMBOL_table_list = 1617, /* table_list */
- YYSYMBOL_table_name = 1618, /* table_name */
- YYSYMBOL_table_name_with_opt_use_partition = 1619, /* table_name_with_opt_use_partition */
- YYSYMBOL_table_alias_ref_list = 1620, /* table_alias_ref_list */
- YYSYMBOL_table_alias_ref = 1621, /* table_alias_ref */
- YYSYMBOL_opt_if_exists_table_element = 1622, /* opt_if_exists_table_element */
- YYSYMBOL_opt_if_exists = 1623, /* opt_if_exists */
- YYSYMBOL_opt_temporary = 1624, /* opt_temporary */
- YYSYMBOL_insert = 1625, /* insert */
- YYSYMBOL_1626_178 = 1626, /* $@178 */
- YYSYMBOL_1627_179 = 1627, /* $@179 */
- YYSYMBOL_replace = 1628, /* replace */
- YYSYMBOL_1629_180 = 1629, /* $@180 */
- YYSYMBOL_1630_181 = 1630, /* $@181 */
- YYSYMBOL_insert_start = 1631, /* insert_start */
- YYSYMBOL_stmt_end = 1632, /* stmt_end */
- YYSYMBOL_insert_lock_option = 1633, /* insert_lock_option */
- YYSYMBOL_replace_lock_option = 1634, /* replace_lock_option */
- YYSYMBOL_insert_replace_option = 1635, /* insert_replace_option */
- YYSYMBOL_opt_into = 1636, /* opt_into */
- YYSYMBOL_insert_table = 1637, /* insert_table */
- YYSYMBOL_1638_182 = 1638, /* $@182 */
- YYSYMBOL_insert_field_spec = 1639, /* insert_field_spec */
- YYSYMBOL_1640_183 = 1640, /* $@183 */
- YYSYMBOL_insert_field_list = 1641, /* insert_field_list */
- YYSYMBOL_opt_fields = 1642, /* opt_fields */
- YYSYMBOL_fields = 1643, /* fields */
- YYSYMBOL_insert_values = 1644, /* insert_values */
- YYSYMBOL_values_list = 1645, /* values_list */
- YYSYMBOL_ident_eq_list = 1646, /* ident_eq_list */
- YYSYMBOL_ident_eq_value = 1647, /* ident_eq_value */
- YYSYMBOL_equal = 1648, /* equal */
- YYSYMBOL_opt_equal = 1649, /* opt_equal */
- YYSYMBOL_opt_with = 1650, /* opt_with */
- YYSYMBOL_opt_by = 1651, /* opt_by */
- YYSYMBOL_no_braces = 1652, /* no_braces */
- YYSYMBOL_1653_184 = 1653, /* $@184 */
- YYSYMBOL_no_braces_with_names = 1654, /* no_braces_with_names */
- YYSYMBOL_1655_185 = 1655, /* $@185 */
- YYSYMBOL_opt_values = 1656, /* opt_values */
- YYSYMBOL_opt_values_with_names = 1657, /* opt_values_with_names */
- YYSYMBOL_values = 1658, /* values */
- YYSYMBOL_values_with_names = 1659, /* values_with_names */
- YYSYMBOL_expr_or_ignore = 1660, /* expr_or_ignore */
- YYSYMBOL_expr_or_ignore_or_default = 1661, /* expr_or_ignore_or_default */
- YYSYMBOL_opt_insert_update = 1662, /* opt_insert_update */
- YYSYMBOL_1663_186 = 1663, /* $@186 */
- YYSYMBOL_1664_187 = 1664, /* $@187 */
- YYSYMBOL_update_table_list = 1665, /* update_table_list */
- YYSYMBOL_update = 1666, /* update */
- YYSYMBOL_1667_188 = 1667, /* $@188 */
- YYSYMBOL_1668_189 = 1668, /* $@189 */
- YYSYMBOL_1669_190 = 1669, /* $@190 */
- YYSYMBOL_update_list = 1670, /* update_list */
- YYSYMBOL_update_elem = 1671, /* update_elem */
- YYSYMBOL_insert_update_list = 1672, /* insert_update_list */
- YYSYMBOL_insert_update_elem = 1673, /* insert_update_elem */
- YYSYMBOL_opt_low_priority = 1674, /* opt_low_priority */
- YYSYMBOL_delete = 1675, /* delete */
- YYSYMBOL_1676_191 = 1676, /* $@191 */
- YYSYMBOL_opt_delete_system_time = 1677, /* opt_delete_system_time */
- YYSYMBOL_delete_part2 = 1678, /* delete_part2 */
- YYSYMBOL_delete_single_table = 1679, /* delete_single_table */
- YYSYMBOL_delete_single_table_for_period = 1680, /* delete_single_table_for_period */
- YYSYMBOL_single_multi = 1681, /* single_multi */
- YYSYMBOL_1682_192 = 1682, /* $@192 */
- YYSYMBOL_1683_193 = 1683, /* $@193 */
- YYSYMBOL_1684_194 = 1684, /* $@194 */
- YYSYMBOL_1685_195 = 1685, /* $@195 */
- YYSYMBOL_opt_returning = 1686, /* opt_returning */
- YYSYMBOL_1687_196 = 1687, /* $@196 */
- YYSYMBOL_table_wild_list = 1688, /* table_wild_list */
- YYSYMBOL_table_wild_one = 1689, /* table_wild_one */
- YYSYMBOL_opt_wild = 1690, /* opt_wild */
- YYSYMBOL_opt_delete_options = 1691, /* opt_delete_options */
- YYSYMBOL_opt_delete_option = 1692, /* opt_delete_option */
- YYSYMBOL_truncate = 1693, /* truncate */
- YYSYMBOL_1694_197 = 1694, /* $@197 */
- YYSYMBOL_1695_198 = 1695, /* $@198 */
- YYSYMBOL_opt_table_sym = 1696, /* opt_table_sym */
- YYSYMBOL_opt_profile_defs = 1697, /* opt_profile_defs */
- YYSYMBOL_profile_defs = 1698, /* profile_defs */
- YYSYMBOL_profile_def = 1699, /* profile_def */
- YYSYMBOL_opt_profile_args = 1700, /* opt_profile_args */
- YYSYMBOL_show = 1701, /* show */
- YYSYMBOL_1702_199 = 1702, /* $@199 */
- YYSYMBOL_show_param = 1703, /* show_param */
- YYSYMBOL_1704_200 = 1704, /* $@200 */
- YYSYMBOL_1705_201 = 1705, /* $@201 */
- YYSYMBOL_show_engine_param = 1706, /* show_engine_param */
- YYSYMBOL_master_or_binary = 1707, /* master_or_binary */
- YYSYMBOL_opt_storage = 1708, /* opt_storage */
- YYSYMBOL_opt_db = 1709, /* opt_db */
- YYSYMBOL_opt_full = 1710, /* opt_full */
- YYSYMBOL_from_or_in = 1711, /* from_or_in */
- YYSYMBOL_binlog_in = 1712, /* binlog_in */
- YYSYMBOL_binlog_from = 1713, /* binlog_from */
- YYSYMBOL_wild_and_where = 1714, /* wild_and_where */
- YYSYMBOL_describe = 1715, /* describe */
- YYSYMBOL_1716_202 = 1716, /* $@202 */
- YYSYMBOL_1717_203 = 1717, /* $@203 */
- YYSYMBOL_explainable_command = 1718, /* explainable_command */
- YYSYMBOL_describe_command = 1719, /* describe_command */
- YYSYMBOL_analyze_stmt_command = 1720, /* analyze_stmt_command */
- YYSYMBOL_opt_extended_describe = 1721, /* opt_extended_describe */
- YYSYMBOL_opt_format_json = 1722, /* opt_format_json */
- YYSYMBOL_opt_describe_column = 1723, /* opt_describe_column */
- YYSYMBOL_explain_for_connection = 1724, /* explain_for_connection */
- YYSYMBOL_flush = 1725, /* flush */
- YYSYMBOL_1726_204 = 1726, /* $@204 */
- YYSYMBOL_flush_options = 1727, /* flush_options */
- YYSYMBOL_1728_205 = 1728, /* $@205 */
- YYSYMBOL_opt_flush_lock = 1729, /* opt_flush_lock */
- YYSYMBOL_flush_lock = 1730, /* flush_lock */
- YYSYMBOL_1731_206 = 1731, /* $@206 */
- YYSYMBOL_flush_options_list = 1732, /* flush_options_list */
- YYSYMBOL_flush_option = 1733, /* flush_option */
- YYSYMBOL_opt_table_list = 1734, /* opt_table_list */
- YYSYMBOL_backup = 1735, /* backup */
- YYSYMBOL_backup_statements = 1736, /* backup_statements */
- YYSYMBOL_1737_207 = 1737, /* $@207 */
- YYSYMBOL_opt_delete_gtid_domain = 1738, /* opt_delete_gtid_domain */
- YYSYMBOL_delete_domain_id_list = 1739, /* delete_domain_id_list */
- YYSYMBOL_delete_domain_id = 1740, /* delete_domain_id */
- YYSYMBOL_optional_flush_tables_arguments = 1741, /* optional_flush_tables_arguments */
- YYSYMBOL_reset = 1742, /* reset */
- YYSYMBOL_1743_208 = 1743, /* $@208 */
- YYSYMBOL_reset_options = 1744, /* reset_options */
- YYSYMBOL_reset_option = 1745, /* reset_option */
- YYSYMBOL_1746_209 = 1746, /* $@209 */
- YYSYMBOL_1747_210 = 1747, /* $@210 */
- YYSYMBOL_slave_reset_options = 1748, /* slave_reset_options */
- YYSYMBOL_master_reset_options = 1749, /* master_reset_options */
- YYSYMBOL_purge = 1750, /* purge */
- YYSYMBOL_1751_211 = 1751, /* $@211 */
- YYSYMBOL_kill = 1752, /* kill */
- YYSYMBOL_1753_212 = 1753, /* $@212 */
- YYSYMBOL_kill_type = 1754, /* kill_type */
- YYSYMBOL_kill_option = 1755, /* kill_option */
- YYSYMBOL_opt_connection = 1756, /* opt_connection */
- YYSYMBOL_kill_expr = 1757, /* kill_expr */
- YYSYMBOL_shutdown = 1758, /* shutdown */
- YYSYMBOL_1759_213 = 1759, /* $@213 */
- YYSYMBOL_shutdown_option = 1760, /* shutdown_option */
- YYSYMBOL_use = 1761, /* use */
- YYSYMBOL_load = 1762, /* load */
- YYSYMBOL_1763_214 = 1763, /* $@214 */
- YYSYMBOL_1764_215 = 1764, /* $@215 */
- YYSYMBOL_1765_216 = 1765, /* $@216 */
- YYSYMBOL_1766_217 = 1766, /* $@217 */
- YYSYMBOL_data_or_xml = 1767, /* data_or_xml */
- YYSYMBOL_opt_local = 1768, /* opt_local */
- YYSYMBOL_load_data_lock = 1769, /* load_data_lock */
- YYSYMBOL_opt_duplicate = 1770, /* opt_duplicate */
- YYSYMBOL_opt_field_term = 1771, /* opt_field_term */
- YYSYMBOL_field_term_list = 1772, /* field_term_list */
- YYSYMBOL_field_term = 1773, /* field_term */
- YYSYMBOL_opt_line_term = 1774, /* opt_line_term */
- YYSYMBOL_line_term_list = 1775, /* line_term_list */
- YYSYMBOL_line_term = 1776, /* line_term */
- YYSYMBOL_opt_xml_rows_identified_by = 1777, /* opt_xml_rows_identified_by */
- YYSYMBOL_opt_ignore_lines = 1778, /* opt_ignore_lines */
- YYSYMBOL_lines_or_rows = 1779, /* lines_or_rows */
- YYSYMBOL_opt_field_or_var_spec = 1780, /* opt_field_or_var_spec */
- YYSYMBOL_fields_or_vars = 1781, /* fields_or_vars */
- YYSYMBOL_field_or_var = 1782, /* field_or_var */
- YYSYMBOL_opt_load_data_set_spec = 1783, /* opt_load_data_set_spec */
- YYSYMBOL_load_data_set_list = 1784, /* load_data_set_list */
- YYSYMBOL_load_data_set_elem = 1785, /* load_data_set_elem */
- YYSYMBOL_text_literal = 1786, /* text_literal */
- YYSYMBOL_text_string = 1787, /* text_string */
- YYSYMBOL_hex_or_bin_String = 1788, /* hex_or_bin_String */
- YYSYMBOL_param_marker = 1789, /* param_marker */
- YYSYMBOL_signed_literal = 1790, /* signed_literal */
- YYSYMBOL_literal = 1791, /* literal */
- YYSYMBOL_NUM_literal = 1792, /* NUM_literal */
- YYSYMBOL_temporal_literal = 1793, /* temporal_literal */
- YYSYMBOL_with_clause = 1794, /* with_clause */
- YYSYMBOL_1795_218 = 1795, /* $@218 */
- YYSYMBOL_opt_recursive = 1796, /* opt_recursive */
- YYSYMBOL_with_list = 1797, /* with_list */
- YYSYMBOL_with_list_element = 1798, /* with_list_element */
- YYSYMBOL_opt_cycle = 1799, /* opt_cycle */
- YYSYMBOL_1800_219 = 1800, /* $@219 */
- YYSYMBOL_opt_with_column_list = 1801, /* opt_with_column_list */
- YYSYMBOL_with_column_list = 1802, /* with_column_list */
- YYSYMBOL_ident_sys_alloc = 1803, /* ident_sys_alloc */
- YYSYMBOL_comma_separated_ident_list = 1804, /* comma_separated_ident_list */
- YYSYMBOL_with_element_head = 1805, /* with_element_head */
- YYSYMBOL_insert_ident = 1806, /* insert_ident */
- YYSYMBOL_table_wild = 1807, /* table_wild */
- YYSYMBOL_select_sublist_qualified_asterisk = 1808, /* select_sublist_qualified_asterisk */
- YYSYMBOL_order_ident = 1809, /* order_ident */
- YYSYMBOL_simple_ident = 1810, /* simple_ident */
- YYSYMBOL_simple_ident_nospvar = 1811, /* simple_ident_nospvar */
- YYSYMBOL_field_ident = 1812, /* field_ident */
- YYSYMBOL_table_ident = 1813, /* table_ident */
- YYSYMBOL_table_ident_opt_wild = 1814, /* table_ident_opt_wild */
- YYSYMBOL_table_ident_nodb = 1815, /* table_ident_nodb */
- YYSYMBOL_IDENT_cli = 1816, /* IDENT_cli */
- YYSYMBOL_ident_cli = 1817, /* ident_cli */
- YYSYMBOL_IDENT_sys = 1818, /* IDENT_sys */
- YYSYMBOL_ident_cli_func = 1819, /* ident_cli_func */
- YYSYMBOL_ident_func = 1820, /* ident_func */
- YYSYMBOL_TEXT_STRING_sys = 1821, /* TEXT_STRING_sys */
- YYSYMBOL_TEXT_STRING_literal = 1822, /* TEXT_STRING_literal */
- YYSYMBOL_TEXT_STRING_filesystem = 1823, /* TEXT_STRING_filesystem */
- YYSYMBOL_ident_table_alias = 1824, /* ident_table_alias */
- YYSYMBOL_ident_cli_set_usual_case = 1825, /* ident_cli_set_usual_case */
- YYSYMBOL_ident_sysvar_name = 1826, /* ident_sysvar_name */
- YYSYMBOL_ident = 1827, /* ident */
- YYSYMBOL_label_ident = 1828, /* label_ident */
- YYSYMBOL_ident_or_text = 1829, /* ident_or_text */
- YYSYMBOL_user_maybe_role = 1830, /* user_maybe_role */
- YYSYMBOL_user_or_role = 1831, /* user_or_role */
- YYSYMBOL_user = 1832, /* user */
- YYSYMBOL_keyword_table_alias = 1833, /* keyword_table_alias */
- YYSYMBOL_keyword_ident = 1834, /* keyword_ident */
- YYSYMBOL_keyword_sysvar_name = 1835, /* keyword_sysvar_name */
- YYSYMBOL_keyword_set_usual_case = 1836, /* keyword_set_usual_case */
- YYSYMBOL_non_reserved_keyword_udt = 1837, /* non_reserved_keyword_udt */
- YYSYMBOL_keyword_sp_var_not_label = 1838, /* keyword_sp_var_not_label */
- YYSYMBOL_keyword_sp_head = 1839, /* keyword_sp_head */
- YYSYMBOL_keyword_verb_clause = 1840, /* keyword_verb_clause */
- YYSYMBOL_keyword_set_special_case = 1841, /* keyword_set_special_case */
- YYSYMBOL_keyword_sysvar_type = 1842, /* keyword_sysvar_type */
- YYSYMBOL_keyword_data_type = 1843, /* keyword_data_type */
- YYSYMBOL_keyword_cast_type = 1844, /* keyword_cast_type */
- YYSYMBOL_keyword_func_sp_var_and_label = 1845, /* keyword_func_sp_var_and_label */
- YYSYMBOL_keyword_func_sp_var_not_label = 1846, /* keyword_func_sp_var_not_label */
- YYSYMBOL_keyword_sp_var_and_label = 1847, /* keyword_sp_var_and_label */
- YYSYMBOL_reserved_keyword_udt_not_param_type = 1848, /* reserved_keyword_udt_not_param_type */
- YYSYMBOL_set = 1849, /* set */
- YYSYMBOL_1850_220 = 1850, /* $@220 */
- YYSYMBOL_set_param = 1851, /* set_param */
- YYSYMBOL_1852_221 = 1852, /* $@221 */
- YYSYMBOL_1853_222 = 1853, /* $@222 */
- YYSYMBOL_1854_223 = 1854, /* $@223 */
- YYSYMBOL_set_stmt_option_list = 1855, /* set_stmt_option_list */
- YYSYMBOL_start_option_value_list_following_option_type = 1856, /* start_option_value_list_following_option_type */
- YYSYMBOL_1857_224 = 1857, /* $@224 */
- YYSYMBOL_option_value_list = 1858, /* option_value_list */
- YYSYMBOL_option_value = 1859, /* option_value */
- YYSYMBOL_1860_225 = 1860, /* $@225 */
- YYSYMBOL_option_type = 1861, /* option_type */
- YYSYMBOL_opt_var_type = 1862, /* opt_var_type */
- YYSYMBOL_opt_var_ident_type = 1863, /* opt_var_ident_type */
- YYSYMBOL_set_stmt_option = 1864, /* set_stmt_option */
- YYSYMBOL_1865_226 = 1865, /* $@226 */
- YYSYMBOL_1866_227 = 1866, /* $@227 */
- YYSYMBOL_1867_228 = 1867, /* $@228 */
- YYSYMBOL_option_value_following_option_type = 1868, /* option_value_following_option_type */
- YYSYMBOL_1869_229 = 1869, /* $@229 */
- YYSYMBOL_1870_230 = 1870, /* $@230 */
- YYSYMBOL_1871_231 = 1871, /* $@231 */
- YYSYMBOL_option_value_no_option_type = 1872, /* option_value_no_option_type */
- YYSYMBOL_1873_232 = 1873, /* $@232 */
- YYSYMBOL_1874_233 = 1874, /* $@233 */
- YYSYMBOL_1875_234 = 1875, /* $@234 */
- YYSYMBOL_1876_235 = 1876, /* $@235 */
- YYSYMBOL_1877_236 = 1877, /* $@236 */
- YYSYMBOL_1878_237 = 1878, /* $@237 */
- YYSYMBOL_1879_238 = 1879, /* $@238 */
- YYSYMBOL_1880_239 = 1880, /* $@239 */
- YYSYMBOL_1881_240 = 1881, /* $@240 */
- YYSYMBOL_1882_241 = 1882, /* $@241 */
- YYSYMBOL_transaction_characteristics = 1883, /* transaction_characteristics */
- YYSYMBOL_transaction_access_mode = 1884, /* transaction_access_mode */
- YYSYMBOL_isolation_level = 1885, /* isolation_level */
- YYSYMBOL_transaction_access_mode_types = 1886, /* transaction_access_mode_types */
- YYSYMBOL_isolation_types = 1887, /* isolation_types */
- YYSYMBOL_text_or_password = 1888, /* text_or_password */
- YYSYMBOL_set_expr_or_default = 1889, /* set_expr_or_default */
- YYSYMBOL_lock = 1890, /* lock */
- YYSYMBOL_1891_242 = 1891, /* $@242 */
- YYSYMBOL_opt_lock_wait_timeout = 1892, /* opt_lock_wait_timeout */
- YYSYMBOL_table_or_tables = 1893, /* table_or_tables */
- YYSYMBOL_table_lock_list = 1894, /* table_lock_list */
- YYSYMBOL_table_lock = 1895, /* table_lock */
- YYSYMBOL_lock_option = 1896, /* lock_option */
- YYSYMBOL_unlock = 1897, /* unlock */
- YYSYMBOL_1898_243 = 1898, /* $@243 */
- YYSYMBOL_handler = 1899, /* handler */
- YYSYMBOL_1900_244 = 1900, /* $@244 */
- YYSYMBOL_handler_tail = 1901, /* handler_tail */
- YYSYMBOL_1902_245 = 1902, /* $@245 */
- YYSYMBOL_handler_read_or_scan = 1903, /* handler_read_or_scan */
- YYSYMBOL_handler_scan_function = 1904, /* handler_scan_function */
- YYSYMBOL_handler_rkey_function = 1905, /* handler_rkey_function */
- YYSYMBOL_1906_246 = 1906, /* $@246 */
- YYSYMBOL_handler_rkey_mode = 1907, /* handler_rkey_mode */
- YYSYMBOL_revoke = 1908, /* revoke */
- YYSYMBOL_revoke_command = 1909, /* revoke_command */
- YYSYMBOL_admin_option_for_role = 1910, /* admin_option_for_role */
- YYSYMBOL_grant = 1911, /* grant */
- YYSYMBOL_grant_command = 1912, /* grant_command */
- YYSYMBOL_opt_with_admin = 1913, /* opt_with_admin */
- YYSYMBOL_opt_with_admin_option = 1914, /* opt_with_admin_option */
- YYSYMBOL_role_list = 1915, /* role_list */
- YYSYMBOL_current_role = 1916, /* current_role */
- YYSYMBOL_role_name = 1917, /* role_name */
- YYSYMBOL_grant_role = 1918, /* grant_role */
- YYSYMBOL_opt_table = 1919, /* opt_table */
- YYSYMBOL_grant_privileges = 1920, /* grant_privileges */
- YYSYMBOL_opt_privileges = 1921, /* opt_privileges */
- YYSYMBOL_object_privilege_list = 1922, /* object_privilege_list */
- YYSYMBOL_column_list_privilege = 1923, /* column_list_privilege */
- YYSYMBOL_column_privilege = 1924, /* column_privilege */
- YYSYMBOL_object_privilege = 1925, /* object_privilege */
- YYSYMBOL_opt_and = 1926, /* opt_and */
- YYSYMBOL_require_list = 1927, /* require_list */
- YYSYMBOL_require_list_element = 1928, /* require_list_element */
- YYSYMBOL_grant_ident = 1929, /* grant_ident */
- YYSYMBOL_user_list = 1930, /* user_list */
- YYSYMBOL_grant_list = 1931, /* grant_list */
- YYSYMBOL_user_and_role_list = 1932, /* user_and_role_list */
- YYSYMBOL_via_or_with = 1933, /* via_or_with */
- YYSYMBOL_using_or_as = 1934, /* using_or_as */
- YYSYMBOL_grant_user = 1935, /* grant_user */
- YYSYMBOL_auth_expression = 1936, /* auth_expression */
- YYSYMBOL_auth_token = 1937, /* auth_token */
- YYSYMBOL_opt_auth_str = 1938, /* opt_auth_str */
- YYSYMBOL_opt_require_clause = 1939, /* opt_require_clause */
- YYSYMBOL_resource_option = 1940, /* resource_option */
- YYSYMBOL_resource_option_list = 1941, /* resource_option_list */
- YYSYMBOL_opt_resource_options = 1942, /* opt_resource_options */
- YYSYMBOL_opt_grant_options = 1943, /* opt_grant_options */
- YYSYMBOL_opt_grant_option = 1944, /* opt_grant_option */
- YYSYMBOL_grant_option_list = 1945, /* grant_option_list */
- YYSYMBOL_grant_option = 1946, /* grant_option */
- YYSYMBOL_begin_stmt_mariadb = 1947, /* begin_stmt_mariadb */
- YYSYMBOL_1948_247 = 1948, /* $@247 */
- YYSYMBOL_compound_statement = 1949, /* compound_statement */
- YYSYMBOL_opt_not = 1950, /* opt_not */
- YYSYMBOL_opt_work = 1951, /* opt_work */
- YYSYMBOL_opt_chain = 1952, /* opt_chain */
- YYSYMBOL_opt_release = 1953, /* opt_release */
- YYSYMBOL_commit = 1954, /* commit */
- YYSYMBOL_rollback = 1955, /* rollback */
- YYSYMBOL_savepoint = 1956, /* savepoint */
- YYSYMBOL_release = 1957, /* release */
- YYSYMBOL_unit_type_decl = 1958, /* unit_type_decl */
- YYSYMBOL_union_option = 1959, /* union_option */
- YYSYMBOL_query_expression_option = 1960, /* query_expression_option */
- YYSYMBOL_definer_opt = 1961, /* definer_opt */
- YYSYMBOL_no_definer = 1962, /* no_definer */
- YYSYMBOL_definer = 1963, /* definer */
- YYSYMBOL_view_algorithm = 1964, /* view_algorithm */
- YYSYMBOL_opt_view_suid = 1965, /* opt_view_suid */
- YYSYMBOL_view_suid = 1966, /* view_suid */
- YYSYMBOL_view_list_opt = 1967, /* view_list_opt */
- YYSYMBOL_view_list = 1968, /* view_list */
- YYSYMBOL_view_select = 1969, /* view_select */
- YYSYMBOL_1970_248 = 1970, /* $@248 */
- YYSYMBOL_view_check_option = 1971, /* view_check_option */
- YYSYMBOL_trigger_action_order = 1972, /* trigger_action_order */
- YYSYMBOL_trigger_follows_precedes_clause = 1973, /* trigger_follows_precedes_clause */
- YYSYMBOL_trigger_tail = 1974, /* trigger_tail */
- YYSYMBOL_1975_249 = 1975, /* $@249 */
- YYSYMBOL_1976_250 = 1976, /* $@250 */
- YYSYMBOL_1977_251 = 1977, /* $@251 */
- YYSYMBOL_1978_252 = 1978, /* $@252 */
- YYSYMBOL_1979_253 = 1979, /* $@253 */
- YYSYMBOL_sf_return_type = 1980, /* sf_return_type */
- YYSYMBOL_1981_254 = 1981, /* $@254 */
- YYSYMBOL_xa = 1982, /* xa */
- YYSYMBOL_opt_format_xid = 1983, /* opt_format_xid */
- YYSYMBOL_xid = 1984, /* xid */
- YYSYMBOL_begin_or_start = 1985, /* begin_or_start */
- YYSYMBOL_opt_join_or_resume = 1986, /* opt_join_or_resume */
- YYSYMBOL_opt_one_phase = 1987, /* opt_one_phase */
- YYSYMBOL_opt_suspend = 1988, /* opt_suspend */
- YYSYMBOL_1989_255 = 1989, /* $@255 */
- YYSYMBOL_opt_migrate = 1990, /* opt_migrate */
- YYSYMBOL_install = 1991, /* install */
- YYSYMBOL_uninstall = 1992, /* uninstall */
- YYSYMBOL_keep_gcc_happy = 1993, /* keep_gcc_happy */
- YYSYMBOL__empty = 1994, /* _empty */
- YYSYMBOL_statement = 1995, /* statement */
- YYSYMBOL_sp_statement = 1996, /* sp_statement */
- YYSYMBOL_sp_if_then_statements = 1997, /* sp_if_then_statements */
- YYSYMBOL_sp_case_then_statements = 1998, /* sp_case_then_statements */
- YYSYMBOL_reserved_keyword_udt_param_type = 1999, /* reserved_keyword_udt_param_type */
- YYSYMBOL_reserved_keyword_udt = 2000, /* reserved_keyword_udt */
- YYSYMBOL_keyword_sp_block_section = 2001, /* keyword_sp_block_section */
- YYSYMBOL_keyword_label = 2002, /* keyword_label */
- YYSYMBOL_keyword_sp_decl = 2003, /* keyword_sp_decl */
- YYSYMBOL_opt_truncate_table_storage_clause = 2004, /* opt_truncate_table_storage_clause */
- YYSYMBOL_ident_for_loop_index = 2005, /* ident_for_loop_index */
- YYSYMBOL_row_field_name = 2006, /* row_field_name */
- YYSYMBOL_while_body = 2007, /* while_body */
- YYSYMBOL_2008_256 = 2008, /* $@256 */
- YYSYMBOL_for_loop_statements = 2009, /* for_loop_statements */
- YYSYMBOL_sp_label = 2010, /* sp_label */
- YYSYMBOL_sp_control_label = 2011, /* sp_control_label */
- YYSYMBOL_sp_block_label = 2012, /* sp_block_label */
- YYSYMBOL_sp_opt_default = 2013, /* sp_opt_default */
- YYSYMBOL_sp_decl_variable_list_anchored = 2014, /* sp_decl_variable_list_anchored */
- YYSYMBOL_sp_param_name_and_mode = 2015, /* sp_param_name_and_mode */
- YYSYMBOL_sp_param = 2016, /* sp_param */
- YYSYMBOL_sp_param_anchored = 2017, /* sp_param_anchored */
- YYSYMBOL_sf_c_chistics_and_body_standalone = 2018, /* sf_c_chistics_and_body_standalone */
- YYSYMBOL_2019_257 = 2019, /* $@257 */
- YYSYMBOL_sp_tail_standalone = 2020, /* sp_tail_standalone */
- YYSYMBOL_2021_258 = 2021, /* $@258 */
- YYSYMBOL_2022_259 = 2022, /* $@259 */
- YYSYMBOL_drop_routine = 2023, /* drop_routine */
- YYSYMBOL_create_routine = 2024, /* create_routine */
- YYSYMBOL_2025_260 = 2025, /* $@260 */
- YYSYMBOL_2026_261 = 2026, /* $@261 */
- YYSYMBOL_2027_262 = 2027, /* $@262 */
- YYSYMBOL_sp_decls = 2028, /* sp_decls */
- YYSYMBOL_sp_decl = 2029, /* sp_decl */
- YYSYMBOL_sp_decl_body = 2030, /* sp_decl_body */
- YYSYMBOL_2031_263 = 2031, /* $@263 */
- YYSYMBOL_sp_proc_stmt_in_returns_clause = 2032, /* sp_proc_stmt_in_returns_clause */
- YYSYMBOL_sp_proc_stmt = 2033, /* sp_proc_stmt */
- YYSYMBOL_sp_proc_stmt_compound_ok = 2034, /* sp_proc_stmt_compound_ok */
- YYSYMBOL_sp_labeled_block = 2035, /* sp_labeled_block */
- YYSYMBOL_2036_264 = 2036, /* $@264 */
- YYSYMBOL_sp_unlabeled_block = 2037, /* sp_unlabeled_block */
- YYSYMBOL_2038_265 = 2038, /* $@265 */
- YYSYMBOL_sp_unlabeled_block_not_atomic = 2039, /* sp_unlabeled_block_not_atomic */
- YYSYMBOL_2040_266 = 2040 /* $@266 */
+ YYSYMBOL_SQL_AFTER_GTIDS_SYM = 679, /* SQL_AFTER_GTIDS_SYM */
+ YYSYMBOL_SQL_BEFORE_GTIDS_SYM = 680, /* SQL_BEFORE_GTIDS_SYM */
+ YYSYMBOL_SQL_BUFFER_RESULT = 681, /* SQL_BUFFER_RESULT */
+ YYSYMBOL_SQL_CACHE_SYM = 682, /* SQL_CACHE_SYM */
+ YYSYMBOL_SQL_CALC_FOUND_ROWS = 683, /* SQL_CALC_FOUND_ROWS */
+ YYSYMBOL_SQL_NO_CACHE_SYM = 684, /* SQL_NO_CACHE_SYM */
+ YYSYMBOL_SQL_THREAD = 685, /* SQL_THREAD */
+ YYSYMBOL_STAGE_SYM = 686, /* STAGE_SYM */
+ YYSYMBOL_STARTS_SYM = 687, /* STARTS_SYM */
+ YYSYMBOL_START_SYM = 688, /* START_SYM */
+ YYSYMBOL_STATEMENT_SYM = 689, /* STATEMENT_SYM */
+ YYSYMBOL_STATUS_SYM = 690, /* STATUS_SYM */
+ YYSYMBOL_STOP_SYM = 691, /* STOP_SYM */
+ YYSYMBOL_STORAGE_SYM = 692, /* STORAGE_SYM */
+ YYSYMBOL_STORED_SYM = 693, /* STORED_SYM */
+ YYSYMBOL_STRING_SYM = 694, /* STRING_SYM */
+ YYSYMBOL_SUBCLASS_ORIGIN_SYM = 695, /* SUBCLASS_ORIGIN_SYM */
+ YYSYMBOL_SUBDATE_SYM = 696, /* SUBDATE_SYM */
+ YYSYMBOL_SUBJECT_SYM = 697, /* SUBJECT_SYM */
+ YYSYMBOL_SUBPARTITIONS_SYM = 698, /* SUBPARTITIONS_SYM */
+ YYSYMBOL_SUBPARTITION_SYM = 699, /* SUBPARTITION_SYM */
+ YYSYMBOL_SUPER_SYM = 700, /* SUPER_SYM */
+ YYSYMBOL_SUSPEND_SYM = 701, /* SUSPEND_SYM */
+ YYSYMBOL_SWAPS_SYM = 702, /* SWAPS_SYM */
+ YYSYMBOL_SWITCHES_SYM = 703, /* SWITCHES_SYM */
+ YYSYMBOL_SYSTEM = 704, /* SYSTEM */
+ YYSYMBOL_SYSTEM_TIME_SYM = 705, /* SYSTEM_TIME_SYM */
+ YYSYMBOL_TABLES = 706, /* TABLES */
+ YYSYMBOL_TABLESPACE = 707, /* TABLESPACE */
+ YYSYMBOL_TABLE_CHECKSUM_SYM = 708, /* TABLE_CHECKSUM_SYM */
+ YYSYMBOL_TABLE_NAME_SYM = 709, /* TABLE_NAME_SYM */
+ YYSYMBOL_TEMPORARY = 710, /* TEMPORARY */
+ YYSYMBOL_TEMPTABLE_SYM = 711, /* TEMPTABLE_SYM */
+ YYSYMBOL_TEXT_SYM = 712, /* TEXT_SYM */
+ YYSYMBOL_THAN_SYM = 713, /* THAN_SYM */
+ YYSYMBOL_TIES_SYM = 714, /* TIES_SYM */
+ YYSYMBOL_TIMESTAMP = 715, /* TIMESTAMP */
+ YYSYMBOL_TIMESTAMP_ADD = 716, /* TIMESTAMP_ADD */
+ YYSYMBOL_TIMESTAMP_DIFF = 717, /* TIMESTAMP_DIFF */
+ YYSYMBOL_TIME_SYM = 718, /* TIME_SYM */
+ YYSYMBOL_TRANSACTION_SYM = 719, /* TRANSACTION_SYM */
+ YYSYMBOL_TRANSACTIONAL_SYM = 720, /* TRANSACTIONAL_SYM */
+ YYSYMBOL_THREADS_SYM = 721, /* THREADS_SYM */
+ YYSYMBOL_TRIGGERS_SYM = 722, /* TRIGGERS_SYM */
+ YYSYMBOL_TRIM_ORACLE = 723, /* TRIM_ORACLE */
+ YYSYMBOL_TRUNCATE_SYM = 724, /* TRUNCATE_SYM */
+ YYSYMBOL_TYPE_SYM = 725, /* TYPE_SYM */
+ YYSYMBOL_UDF_RETURNS_SYM = 726, /* UDF_RETURNS_SYM */
+ YYSYMBOL_UNBOUNDED_SYM = 727, /* UNBOUNDED_SYM */
+ YYSYMBOL_UNCOMMITTED_SYM = 728, /* UNCOMMITTED_SYM */
+ YYSYMBOL_UNDEFINED_SYM = 729, /* UNDEFINED_SYM */
+ YYSYMBOL_UNDOFILE_SYM = 730, /* UNDOFILE_SYM */
+ YYSYMBOL_UNDO_BUFFER_SIZE_SYM = 731, /* UNDO_BUFFER_SIZE_SYM */
+ YYSYMBOL_UNICODE_SYM = 732, /* UNICODE_SYM */
+ YYSYMBOL_UNINSTALL_SYM = 733, /* UNINSTALL_SYM */
+ YYSYMBOL_UNKNOWN_SYM = 734, /* UNKNOWN_SYM */
+ YYSYMBOL_UNTIL_SYM = 735, /* UNTIL_SYM */
+ YYSYMBOL_UPGRADE_SYM = 736, /* UPGRADE_SYM */
+ YYSYMBOL_USER_SYM = 737, /* USER_SYM */
+ YYSYMBOL_USE_FRM = 738, /* USE_FRM */
+ YYSYMBOL_VALIDATION_SYM = 739, /* VALIDATION_SYM */
+ YYSYMBOL_VALUE_SYM = 740, /* VALUE_SYM */
+ YYSYMBOL_VARCHAR2_MARIADB_SYM = 741, /* VARCHAR2_MARIADB_SYM */
+ YYSYMBOL_VARCHAR2_ORACLE_SYM = 742, /* VARCHAR2_ORACLE_SYM */
+ YYSYMBOL_VARIABLES = 743, /* VARIABLES */
+ YYSYMBOL_VERSIONING_SYM = 744, /* VERSIONING_SYM */
+ YYSYMBOL_VIA_SYM = 745, /* VIA_SYM */
+ YYSYMBOL_VIEW_SYM = 746, /* VIEW_SYM */
+ YYSYMBOL_VISIBLE_SYM = 747, /* VISIBLE_SYM */
+ YYSYMBOL_VIRTUAL_SYM = 748, /* VIRTUAL_SYM */
+ YYSYMBOL_WAIT_SYM = 749, /* WAIT_SYM */
+ YYSYMBOL_WARNINGS = 750, /* WARNINGS */
+ YYSYMBOL_WEEK_SYM = 751, /* WEEK_SYM */
+ YYSYMBOL_WEIGHT_STRING_SYM = 752, /* WEIGHT_STRING_SYM */
+ YYSYMBOL_WINDOW_SYM = 753, /* WINDOW_SYM */
+ YYSYMBOL_WITHIN = 754, /* WITHIN */
+ YYSYMBOL_WITHOUT = 755, /* WITHOUT */
+ YYSYMBOL_WORK_SYM = 756, /* WORK_SYM */
+ YYSYMBOL_WRAPPER_SYM = 757, /* WRAPPER_SYM */
+ YYSYMBOL_WRITE_SYM = 758, /* WRITE_SYM */
+ YYSYMBOL_X509_SYM = 759, /* X509_SYM */
+ YYSYMBOL_XA_SYM = 760, /* XA_SYM */
+ YYSYMBOL_XML_SYM = 761, /* XML_SYM */
+ YYSYMBOL_YEAR_SYM = 762, /* YEAR_SYM */
+ YYSYMBOL_CONDITIONLESS_JOIN = 763, /* CONDITIONLESS_JOIN */
+ YYSYMBOL_ON_SYM = 764, /* ON_SYM */
+ YYSYMBOL_PREC_BELOW_NOT = 765, /* PREC_BELOW_NOT */
+ YYSYMBOL_766_ = 766, /* '=' */
+ YYSYMBOL_767_ = 767, /* '>' */
+ YYSYMBOL_768_ = 768, /* '<' */
+ YYSYMBOL_769_ = 769, /* '|' */
+ YYSYMBOL_770_ = 770, /* '&' */
+ YYSYMBOL_771_ = 771, /* '-' */
+ YYSYMBOL_772_ = 772, /* '+' */
+ YYSYMBOL_773_ = 773, /* '*' */
+ YYSYMBOL_774_ = 774, /* '/' */
+ YYSYMBOL_775_ = 775, /* '%' */
+ YYSYMBOL_776_ = 776, /* '^' */
+ YYSYMBOL_777_ = 777, /* '~' */
+ YYSYMBOL_SUBQUERY_AS_EXPR = 778, /* SUBQUERY_AS_EXPR */
+ YYSYMBOL_PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 779, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
+ YYSYMBOL_USER = 780, /* USER */
+ YYSYMBOL_PREC_BELOW_SP_OBJECT_TYPE = 781, /* PREC_BELOW_SP_OBJECT_TYPE */
+ YYSYMBOL_PREC_BELOW_CONTRACTION_TOKEN2 = 782, /* PREC_BELOW_CONTRACTION_TOKEN2 */
+ YYSYMBOL_783_ = 783, /* '(' */
+ YYSYMBOL_784_ = 784, /* ')' */
+ YYSYMBOL_EMPTY_FROM_CLAUSE = 785, /* EMPTY_FROM_CLAUSE */
+ YYSYMBOL_786_ = 786, /* ',' */
+ YYSYMBOL_787_ = 787, /* '!' */
+ YYSYMBOL_788_ = 788, /* '{' */
+ YYSYMBOL_789_ = 789, /* '}' */
+ YYSYMBOL_790_ = 790, /* ';' */
+ YYSYMBOL_791_ = 791, /* '.' */
+ YYSYMBOL_792_ = 792, /* ':' */
+ YYSYMBOL_YYACCEPT = 793, /* $accept */
+ YYSYMBOL_query = 794, /* query */
+ YYSYMBOL_795_1 = 795, /* $@1 */
+ YYSYMBOL_opt_end_of_input = 796, /* opt_end_of_input */
+ YYSYMBOL_directly_executable_statement = 797, /* directly_executable_statement */
+ YYSYMBOL_verb_clause = 798, /* verb_clause */
+ YYSYMBOL_deallocate = 799, /* deallocate */
+ YYSYMBOL_deallocate_or_drop = 800, /* deallocate_or_drop */
+ YYSYMBOL_prepare = 801, /* prepare */
+ YYSYMBOL_802_2 = 802, /* $@2 */
+ YYSYMBOL_execute = 803, /* execute */
+ YYSYMBOL_804_3 = 804, /* $@3 */
+ YYSYMBOL_805_4 = 805, /* $@4 */
+ YYSYMBOL_execute_using = 806, /* execute_using */
+ YYSYMBOL_807_5 = 807, /* $@5 */
+ YYSYMBOL_execute_params = 808, /* execute_params */
+ YYSYMBOL_help = 809, /* help */
+ YYSYMBOL_810_6 = 810, /* $@6 */
+ YYSYMBOL_change = 811, /* change */
+ YYSYMBOL_812_7 = 812, /* $@7 */
+ YYSYMBOL_master_defs = 813, /* master_defs */
+ YYSYMBOL_master_def = 814, /* master_def */
+ YYSYMBOL_ignore_server_id_list = 815, /* ignore_server_id_list */
+ YYSYMBOL_ignore_server_id = 816, /* ignore_server_id */
+ YYSYMBOL_do_domain_id_list = 817, /* do_domain_id_list */
+ YYSYMBOL_do_domain_id = 818, /* do_domain_id */
+ YYSYMBOL_ignore_domain_id_list = 819, /* ignore_domain_id_list */
+ YYSYMBOL_ignore_domain_id = 820, /* ignore_domain_id */
+ YYSYMBOL_master_file_def = 821, /* master_file_def */
+ YYSYMBOL_optional_connection_name = 822, /* optional_connection_name */
+ YYSYMBOL_connection_name = 823, /* connection_name */
+ YYSYMBOL_optional_for_channel = 824, /* optional_for_channel */
+ YYSYMBOL_for_channel = 825, /* for_channel */
+ YYSYMBOL_create = 826, /* create */
+ YYSYMBOL_827_8 = 827, /* $@8 */
+ YYSYMBOL_828_9 = 828, /* $@9 */
+ YYSYMBOL_829_10 = 829, /* $@10 */
+ YYSYMBOL_830_11 = 830, /* $@11 */
+ YYSYMBOL_831_12 = 831, /* $@12 */
+ YYSYMBOL_832_13 = 832, /* $@13 */
+ YYSYMBOL_833_14 = 833, /* $@14 */
+ YYSYMBOL_834_15 = 834, /* $@15 */
+ YYSYMBOL_835_16 = 835, /* $@16 */
+ YYSYMBOL_836_17 = 836, /* $@17 */
+ YYSYMBOL_837_18 = 837, /* $@18 */
+ YYSYMBOL_838_19 = 838, /* $@19 */
+ YYSYMBOL_839_20 = 839, /* $@20 */
+ YYSYMBOL_840_21 = 840, /* $@21 */
+ YYSYMBOL_841_22 = 841, /* $@22 */
+ YYSYMBOL_842_23 = 842, /* $@23 */
+ YYSYMBOL_843_24 = 843, /* $@24 */
+ YYSYMBOL_opt_sequence = 844, /* opt_sequence */
+ YYSYMBOL_sequence_defs = 845, /* sequence_defs */
+ YYSYMBOL_sequence_def = 846, /* sequence_def */
+ YYSYMBOL_force_lookahead = 847, /* force_lookahead */
+ YYSYMBOL_server_def = 848, /* server_def */
+ YYSYMBOL_849_25 = 849, /* $@25 */
+ YYSYMBOL_server_options_list = 850, /* server_options_list */
+ YYSYMBOL_server_option = 851, /* server_option */
+ YYSYMBOL_event_tail = 852, /* event_tail */
+ YYSYMBOL_853_26 = 853, /* $@26 */
+ YYSYMBOL_ev_schedule_time = 854, /* ev_schedule_time */
+ YYSYMBOL_855_27 = 855, /* $@27 */
+ YYSYMBOL_opt_ev_status = 856, /* opt_ev_status */
+ YYSYMBOL_ev_starts = 857, /* ev_starts */
+ YYSYMBOL_ev_ends = 858, /* ev_ends */
+ YYSYMBOL_opt_ev_on_completion = 859, /* opt_ev_on_completion */
+ YYSYMBOL_ev_on_completion = 860, /* ev_on_completion */
+ YYSYMBOL_opt_ev_comment = 861, /* opt_ev_comment */
+ YYSYMBOL_ev_sql_stmt = 862, /* ev_sql_stmt */
+ YYSYMBOL_863_28 = 863, /* $@28 */
+ YYSYMBOL_clear_privileges = 864, /* clear_privileges */
+ YYSYMBOL_opt_aggregate = 865, /* opt_aggregate */
+ YYSYMBOL_sp_handler = 866, /* sp_handler */
+ YYSYMBOL_sp_handler_package_spec = 867, /* sp_handler_package_spec */
+ YYSYMBOL_sp_handler_package_body = 868, /* sp_handler_package_body */
+ YYSYMBOL_drop_routine = 869, /* drop_routine */
+ YYSYMBOL_sp_name = 870, /* sp_name */
+ YYSYMBOL_sp_a_chistics = 871, /* sp_a_chistics */
+ YYSYMBOL_sp_c_chistics = 872, /* sp_c_chistics */
+ YYSYMBOL_sp_chistic = 873, /* sp_chistic */
+ YYSYMBOL_sp_c_chistic = 874, /* sp_c_chistic */
+ YYSYMBOL_sp_suid = 875, /* sp_suid */
+ YYSYMBOL_call = 876, /* call */
+ YYSYMBOL_877_29 = 877, /* $@29 */
+ YYSYMBOL_878_30 = 878, /* $@30 */
+ YYSYMBOL_879_31 = 879, /* $@31 */
+ YYSYMBOL_opt_sp_cparam_list = 880, /* opt_sp_cparam_list */
+ YYSYMBOL_opt_sp_cparams = 881, /* opt_sp_cparams */
+ YYSYMBOL_sp_cparams = 882, /* sp_cparams */
+ YYSYMBOL_sp_fdparam_list = 883, /* sp_fdparam_list */
+ YYSYMBOL_884_32 = 884, /* $@32 */
+ YYSYMBOL_sp_fdparams = 885, /* sp_fdparams */
+ YYSYMBOL_sp_param_name = 886, /* sp_param_name */
+ YYSYMBOL_sp_pdparam_list = 887, /* sp_pdparam_list */
+ YYSYMBOL_sp_pdparams = 888, /* sp_pdparams */
+ YYSYMBOL_sp_parameter_type = 889, /* sp_parameter_type */
+ YYSYMBOL_sp_parenthesized_pdparam_list = 890, /* sp_parenthesized_pdparam_list */
+ YYSYMBOL_891_33 = 891, /* $@33 */
+ YYSYMBOL_sp_parenthesized_fdparam_list = 892, /* sp_parenthesized_fdparam_list */
+ YYSYMBOL_sp_proc_stmts = 893, /* sp_proc_stmts */
+ YYSYMBOL_sp_proc_stmts1 = 894, /* sp_proc_stmts1 */
+ YYSYMBOL_optionally_qualified_column_ident = 895, /* optionally_qualified_column_ident */
+ YYSYMBOL_row_field_definition = 896, /* row_field_definition */
+ YYSYMBOL_row_field_definition_list = 897, /* row_field_definition_list */
+ YYSYMBOL_row_type_body = 898, /* row_type_body */
+ YYSYMBOL_sp_decl_idents_init_vars = 899, /* sp_decl_idents_init_vars */
+ YYSYMBOL_sp_decl_variable_list = 900, /* sp_decl_variable_list */
+ YYSYMBOL_901_34 = 901, /* $@34 */
+ YYSYMBOL_sp_decl_handler = 902, /* sp_decl_handler */
+ YYSYMBOL_903_35 = 903, /* $@35 */
+ YYSYMBOL_opt_parenthesized_cursor_formal_parameters = 904, /* opt_parenthesized_cursor_formal_parameters */
+ YYSYMBOL_sp_cursor_stmt_lex = 905, /* sp_cursor_stmt_lex */
+ YYSYMBOL_sp_cursor_stmt = 906, /* sp_cursor_stmt */
+ YYSYMBOL_907_36 = 907, /* $@36 */
+ YYSYMBOL_sp_handler_type = 908, /* sp_handler_type */
+ YYSYMBOL_sp_hcond_list = 909, /* sp_hcond_list */
+ YYSYMBOL_sp_hcond_element = 910, /* sp_hcond_element */
+ YYSYMBOL_sp_cond = 911, /* sp_cond */
+ YYSYMBOL_sqlstate = 912, /* sqlstate */
+ YYSYMBOL_opt_value = 913, /* opt_value */
+ YYSYMBOL_sp_hcond = 914, /* sp_hcond */
+ YYSYMBOL_raise_stmt_oracle = 915, /* raise_stmt_oracle */
+ YYSYMBOL_signal_stmt = 916, /* signal_stmt */
+ YYSYMBOL_signal_value = 917, /* signal_value */
+ YYSYMBOL_opt_signal_value = 918, /* opt_signal_value */
+ YYSYMBOL_opt_set_signal_information = 919, /* opt_set_signal_information */
+ YYSYMBOL_signal_information_item_list = 920, /* signal_information_item_list */
+ YYSYMBOL_signal_allowed_expr = 921, /* signal_allowed_expr */
+ YYSYMBOL_signal_condition_information_item_name = 922, /* signal_condition_information_item_name */
+ YYSYMBOL_resignal_stmt = 923, /* resignal_stmt */
+ YYSYMBOL_get_diagnostics = 924, /* get_diagnostics */
+ YYSYMBOL_which_area = 925, /* which_area */
+ YYSYMBOL_diagnostics_information = 926, /* diagnostics_information */
+ YYSYMBOL_statement_information = 927, /* statement_information */
+ YYSYMBOL_statement_information_item = 928, /* statement_information_item */
+ YYSYMBOL_simple_target_specification = 929, /* simple_target_specification */
+ YYSYMBOL_statement_information_item_name = 930, /* statement_information_item_name */
+ YYSYMBOL_condition_number = 931, /* condition_number */
+ YYSYMBOL_condition_information = 932, /* condition_information */
+ YYSYMBOL_condition_information_item = 933, /* condition_information_item */
+ YYSYMBOL_condition_information_item_name = 934, /* condition_information_item_name */
+ YYSYMBOL_sp_decl_ident = 935, /* sp_decl_ident */
+ YYSYMBOL_sp_decl_idents = 936, /* sp_decl_idents */
+ YYSYMBOL_sp_proc_stmt_if = 937, /* sp_proc_stmt_if */
+ YYSYMBOL_938_37 = 938, /* $@37 */
+ YYSYMBOL_sp_proc_stmt_statement = 939, /* sp_proc_stmt_statement */
+ YYSYMBOL_940_38 = 940, /* $@38 */
+ YYSYMBOL_RETURN_ALLMODES_SYM = 941, /* RETURN_ALLMODES_SYM */
+ YYSYMBOL_sp_proc_stmt_return = 942, /* sp_proc_stmt_return */
+ YYSYMBOL_943_39 = 943, /* $@39 */
+ YYSYMBOL_sp_proc_stmt_exit_oracle = 944, /* sp_proc_stmt_exit_oracle */
+ YYSYMBOL_945_40 = 945, /* $@40 */
+ YYSYMBOL_946_41 = 946, /* $@41 */
+ YYSYMBOL_sp_proc_stmt_continue_oracle = 947, /* sp_proc_stmt_continue_oracle */
+ YYSYMBOL_948_42 = 948, /* $@42 */
+ YYSYMBOL_949_43 = 949, /* $@43 */
+ YYSYMBOL_sp_proc_stmt_leave = 950, /* sp_proc_stmt_leave */
+ YYSYMBOL_sp_proc_stmt_iterate = 951, /* sp_proc_stmt_iterate */
+ YYSYMBOL_sp_proc_stmt_goto_oracle = 952, /* sp_proc_stmt_goto_oracle */
+ YYSYMBOL_expr_lex = 953, /* expr_lex */
+ YYSYMBOL_954_44 = 954, /* @44 */
+ YYSYMBOL_assignment_source_lex = 955, /* assignment_source_lex */
+ YYSYMBOL_assignment_source_expr = 956, /* assignment_source_expr */
+ YYSYMBOL_957_45 = 957, /* $@45 */
+ YYSYMBOL_for_loop_bound_expr = 958, /* for_loop_bound_expr */
+ YYSYMBOL_959_46 = 959, /* $@46 */
+ YYSYMBOL_cursor_actual_parameters = 960, /* cursor_actual_parameters */
+ YYSYMBOL_opt_parenthesized_cursor_actual_parameters = 961, /* opt_parenthesized_cursor_actual_parameters */
+ YYSYMBOL_sp_proc_stmt_with_cursor = 962, /* sp_proc_stmt_with_cursor */
+ YYSYMBOL_sp_proc_stmt_open = 963, /* sp_proc_stmt_open */
+ YYSYMBOL_sp_proc_stmt_fetch_head = 964, /* sp_proc_stmt_fetch_head */
+ YYSYMBOL_sp_proc_stmt_fetch = 965, /* sp_proc_stmt_fetch */
+ YYSYMBOL_sp_proc_stmt_close = 966, /* sp_proc_stmt_close */
+ YYSYMBOL_sp_fetch_list = 967, /* sp_fetch_list */
+ YYSYMBOL_sp_if = 968, /* sp_if */
+ YYSYMBOL_969_47 = 969, /* $@47 */
+ YYSYMBOL_970_48 = 970, /* $@48 */
+ YYSYMBOL_sp_elseifs = 971, /* sp_elseifs */
+ YYSYMBOL_case_stmt_specification = 972, /* case_stmt_specification */
+ YYSYMBOL_973_49 = 973, /* $@49 */
+ YYSYMBOL_case_stmt_body = 974, /* case_stmt_body */
+ YYSYMBOL_975_50 = 975, /* $@50 */
+ YYSYMBOL_simple_when_clause_list = 976, /* simple_when_clause_list */
+ YYSYMBOL_searched_when_clause_list = 977, /* searched_when_clause_list */
+ YYSYMBOL_simple_when_clause = 978, /* simple_when_clause */
+ YYSYMBOL_979_51 = 979, /* $@51 */
+ YYSYMBOL_searched_when_clause = 980, /* searched_when_clause */
+ YYSYMBOL_981_52 = 981, /* $@52 */
+ YYSYMBOL_else_clause_opt = 982, /* else_clause_opt */
+ YYSYMBOL_sp_opt_label = 983, /* sp_opt_label */
+ YYSYMBOL_opt_sp_for_loop_direction = 984, /* opt_sp_for_loop_direction */
+ YYSYMBOL_sp_for_loop_index_and_bounds = 985, /* sp_for_loop_index_and_bounds */
+ YYSYMBOL_sp_for_loop_bounds = 986, /* sp_for_loop_bounds */
+ YYSYMBOL_loop_body = 987, /* loop_body */
+ YYSYMBOL_repeat_body = 988, /* repeat_body */
+ YYSYMBOL_pop_sp_loop_label = 989, /* pop_sp_loop_label */
+ YYSYMBOL_sp_labeled_control = 990, /* sp_labeled_control */
+ YYSYMBOL_991_53 = 991, /* $@53 */
+ YYSYMBOL_992_54 = 992, /* $@54 */
+ YYSYMBOL_993_55 = 993, /* $@55 */
+ YYSYMBOL_994_56 = 994, /* $@56 */
+ YYSYMBOL_995_57 = 995, /* $@57 */
+ YYSYMBOL_996_58 = 996, /* $@58 */
+ YYSYMBOL_sp_unlabeled_control = 997, /* sp_unlabeled_control */
+ YYSYMBOL_998_59 = 998, /* $@59 */
+ YYSYMBOL_999_60 = 999, /* $@60 */
+ YYSYMBOL_1000_61 = 1000, /* $@61 */
+ YYSYMBOL_1001_62 = 1001, /* $@62 */
+ YYSYMBOL_1002_63 = 1002, /* $@63 */
+ YYSYMBOL_trg_action_time = 1003, /* trg_action_time */
+ YYSYMBOL_trg_event = 1004, /* trg_event */
+ YYSYMBOL_create_body = 1005, /* create_body */
+ YYSYMBOL_1006_64 = 1006, /* $@64 */
+ YYSYMBOL_create_like = 1007, /* create_like */
+ YYSYMBOL_opt_create_select = 1008, /* opt_create_select */
+ YYSYMBOL_create_select_query_expression = 1009, /* create_select_query_expression */
+ YYSYMBOL_opt_create_partitioning = 1010, /* opt_create_partitioning */
+ YYSYMBOL_opt_partitioning = 1011, /* opt_partitioning */
+ YYSYMBOL_partitioning = 1012, /* partitioning */
+ YYSYMBOL_1013_65 = 1013, /* $@65 */
+ YYSYMBOL_have_partitioning = 1014, /* have_partitioning */
+ YYSYMBOL_partition_entry = 1015, /* partition_entry */
+ YYSYMBOL_1016_66 = 1016, /* $@66 */
+ YYSYMBOL_partition = 1017, /* partition */
+ YYSYMBOL_1018_67 = 1018, /* $@67 */
+ YYSYMBOL_part_type_def = 1019, /* part_type_def */
+ YYSYMBOL_1020_68 = 1020, /* $@68 */
+ YYSYMBOL_1021_69 = 1021, /* $@69 */
+ YYSYMBOL_1022_70 = 1022, /* $@70 */
+ YYSYMBOL_opt_linear = 1023, /* opt_linear */
+ YYSYMBOL_opt_key_algo = 1024, /* opt_key_algo */
+ YYSYMBOL_part_field_list = 1025, /* part_field_list */
+ YYSYMBOL_part_field_item_list = 1026, /* part_field_item_list */
+ YYSYMBOL_part_field_item = 1027, /* part_field_item */
+ YYSYMBOL_part_column_list = 1028, /* part_column_list */
+ YYSYMBOL_part_func = 1029, /* part_func */
+ YYSYMBOL_sub_part_func = 1030, /* sub_part_func */
+ YYSYMBOL_opt_num_parts = 1031, /* opt_num_parts */
+ YYSYMBOL_opt_sub_part = 1032, /* opt_sub_part */
+ YYSYMBOL_1033_71 = 1033, /* $@71 */
+ YYSYMBOL_1034_72 = 1034, /* $@72 */
+ YYSYMBOL_sub_part_field_list = 1035, /* sub_part_field_list */
+ YYSYMBOL_sub_part_field_item = 1036, /* sub_part_field_item */
+ YYSYMBOL_part_func_expr = 1037, /* part_func_expr */
+ YYSYMBOL_opt_num_subparts = 1038, /* opt_num_subparts */
+ YYSYMBOL_part_defs = 1039, /* part_defs */
+ YYSYMBOL_part_def_list = 1040, /* part_def_list */
+ YYSYMBOL_opt_partition = 1041, /* opt_partition */
+ YYSYMBOL_part_definition = 1042, /* part_definition */
+ YYSYMBOL_1043_73 = 1043, /* $@73 */
+ YYSYMBOL_part_name = 1044, /* part_name */
+ YYSYMBOL_opt_part_values = 1045, /* opt_part_values */
+ YYSYMBOL_1046_74 = 1046, /* $@74 */
+ YYSYMBOL_1047_75 = 1047, /* $@75 */
+ YYSYMBOL_part_func_max = 1048, /* part_func_max */
+ YYSYMBOL_part_values_in = 1049, /* part_values_in */
+ YYSYMBOL_part_value_list = 1050, /* part_value_list */
+ YYSYMBOL_part_value_item = 1051, /* part_value_item */
+ YYSYMBOL_1052_76 = 1052, /* $@76 */
+ YYSYMBOL_1053_77 = 1053, /* $@77 */
+ YYSYMBOL_part_value_item_list = 1054, /* part_value_item_list */
+ YYSYMBOL_part_value_expr_item = 1055, /* part_value_expr_item */
+ YYSYMBOL_opt_sub_partition = 1056, /* opt_sub_partition */
+ YYSYMBOL_sub_part_list = 1057, /* sub_part_list */
+ YYSYMBOL_sub_part_definition = 1058, /* sub_part_definition */
+ YYSYMBOL_1059_78 = 1059, /* $@78 */
+ YYSYMBOL_sub_name = 1060, /* sub_name */
+ YYSYMBOL_opt_part_options = 1061, /* opt_part_options */
+ YYSYMBOL_part_option_list = 1062, /* part_option_list */
+ YYSYMBOL_part_option = 1063, /* part_option */
+ YYSYMBOL_opt_subpart_options = 1064, /* opt_subpart_options */
+ YYSYMBOL_subpart_option_list = 1065, /* subpart_option_list */
+ YYSYMBOL_server_part_option = 1066, /* server_part_option */
+ YYSYMBOL_opt_versioning_rotation = 1067, /* opt_versioning_rotation */
+ YYSYMBOL_1068_79 = 1068, /* $@79 */
+ YYSYMBOL_opt_versioning_interval_start = 1069, /* opt_versioning_interval_start */
+ YYSYMBOL_opt_vers_auto_part = 1070, /* opt_vers_auto_part */
+ YYSYMBOL_opt_as = 1071, /* opt_as */
+ YYSYMBOL_opt_create_database_options = 1072, /* opt_create_database_options */
+ YYSYMBOL_create_database_options = 1073, /* create_database_options */
+ YYSYMBOL_create_database_option = 1074, /* create_database_option */
+ YYSYMBOL_opt_if_not_exists_table_element = 1075, /* opt_if_not_exists_table_element */
+ YYSYMBOL_opt_if_not_exists = 1076, /* opt_if_not_exists */
+ YYSYMBOL_create_or_replace = 1077, /* create_or_replace */
+ YYSYMBOL_opt_create_table_options = 1078, /* opt_create_table_options */
+ YYSYMBOL_create_table_options_space_separated = 1079, /* create_table_options_space_separated */
+ YYSYMBOL_create_table_options = 1080, /* create_table_options */
+ YYSYMBOL_create_table_option = 1081, /* create_table_option */
+ YYSYMBOL_1082_80 = 1082, /* $@80 */
+ YYSYMBOL_engine_defined_option = 1083, /* engine_defined_option */
+ YYSYMBOL_ident_options = 1084, /* ident_options */
+ YYSYMBOL_keyword_options = 1085, /* keyword_options */
+ YYSYMBOL_opt_versioning_option = 1086, /* opt_versioning_option */
+ YYSYMBOL_versioning_option = 1087, /* versioning_option */
+ YYSYMBOL_default_charset = 1088, /* default_charset */
+ YYSYMBOL_default_collation = 1089, /* default_collation */
+ YYSYMBOL_storage_engines = 1090, /* storage_engines */
+ YYSYMBOL_known_storage_engines = 1091, /* known_storage_engines */
+ YYSYMBOL_row_types = 1092, /* row_types */
+ YYSYMBOL_merge_insert_types = 1093, /* merge_insert_types */
+ YYSYMBOL_udf_type = 1094, /* udf_type */
+ YYSYMBOL_create_field_list = 1095, /* create_field_list */
+ YYSYMBOL_create_field_list_parens = 1096, /* create_field_list_parens */
+ YYSYMBOL_field_list = 1097, /* field_list */
+ YYSYMBOL_field_list_item = 1098, /* field_list_item */
+ YYSYMBOL_column_def = 1099, /* column_def */
+ YYSYMBOL_key_def = 1100, /* key_def */
+ YYSYMBOL_1101_81 = 1101, /* $@81 */
+ YYSYMBOL_1102_82 = 1102, /* $@82 */
+ YYSYMBOL_1103_83 = 1103, /* $@83 */
+ YYSYMBOL_1104_84 = 1104, /* $@84 */
+ YYSYMBOL_1105_85 = 1105, /* $@85 */
+ YYSYMBOL_1106_86 = 1106, /* $@86 */
+ YYSYMBOL_1107_87 = 1107, /* $@87 */
+ YYSYMBOL_constraint_def = 1108, /* constraint_def */
+ YYSYMBOL_period_for_system_time = 1109, /* period_for_system_time */
+ YYSYMBOL_period_for_application_time = 1110, /* period_for_application_time */
+ YYSYMBOL_opt_check_constraint = 1111, /* opt_check_constraint */
+ YYSYMBOL_check_constraint = 1112, /* check_constraint */
+ YYSYMBOL_opt_constraint_no_id = 1113, /* opt_constraint_no_id */
+ YYSYMBOL_opt_constraint = 1114, /* opt_constraint */
+ YYSYMBOL_constraint = 1115, /* constraint */
+ YYSYMBOL_field_spec = 1116, /* field_spec */
+ YYSYMBOL_1117_88 = 1117, /* @88 */
+ YYSYMBOL_field_type_or_serial = 1118, /* field_type_or_serial */
+ YYSYMBOL_1119_89 = 1119, /* $@89 */
+ YYSYMBOL_1120_90 = 1120, /* $@90 */
+ YYSYMBOL_opt_serial_attribute = 1121, /* opt_serial_attribute */
+ YYSYMBOL_opt_serial_attribute_list = 1122, /* opt_serial_attribute_list */
+ YYSYMBOL_opt_asrow_attribute = 1123, /* opt_asrow_attribute */
+ YYSYMBOL_opt_asrow_attribute_list = 1124, /* opt_asrow_attribute_list */
+ YYSYMBOL_field_def = 1125, /* field_def */
+ YYSYMBOL_1126_91 = 1126, /* $@91 */
+ YYSYMBOL_opt_generated_always = 1127, /* opt_generated_always */
+ YYSYMBOL_vcol_opt_specifier = 1128, /* vcol_opt_specifier */
+ YYSYMBOL_vcol_opt_attribute = 1129, /* vcol_opt_attribute */
+ YYSYMBOL_vcol_opt_attribute_list = 1130, /* vcol_opt_attribute_list */
+ YYSYMBOL_vcol_attribute = 1131, /* vcol_attribute */
+ YYSYMBOL_parse_vcol_expr = 1132, /* parse_vcol_expr */
+ YYSYMBOL_1133_92 = 1133, /* $@92 */
+ YYSYMBOL_parenthesized_expr = 1134, /* parenthesized_expr */
+ YYSYMBOL_virtual_column_func = 1135, /* virtual_column_func */
+ YYSYMBOL_expr_or_literal = 1136, /* expr_or_literal */
+ YYSYMBOL_column_default_expr = 1137, /* column_default_expr */
+ YYSYMBOL_field_type = 1138, /* field_type */
+ YYSYMBOL_qualified_field_type = 1139, /* qualified_field_type */
+ YYSYMBOL_udt_name = 1140, /* udt_name */
+ YYSYMBOL_field_type_all = 1141, /* field_type_all */
+ YYSYMBOL_field_type_numeric = 1142, /* field_type_numeric */
+ YYSYMBOL_opt_binary_and_compression = 1143, /* opt_binary_and_compression */
+ YYSYMBOL_field_type_string = 1144, /* field_type_string */
+ YYSYMBOL_field_type_temporal = 1145, /* field_type_temporal */
+ YYSYMBOL_field_type_lob = 1146, /* field_type_lob */
+ YYSYMBOL_field_type_misc = 1147, /* field_type_misc */
+ YYSYMBOL_char = 1148, /* char */
+ YYSYMBOL_nchar = 1149, /* nchar */
+ YYSYMBOL_varchar = 1150, /* varchar */
+ YYSYMBOL_nvarchar = 1151, /* nvarchar */
+ YYSYMBOL_int_type = 1152, /* int_type */
+ YYSYMBOL_real_type = 1153, /* real_type */
+ YYSYMBOL_srid_option = 1154, /* srid_option */
+ YYSYMBOL_float_options = 1155, /* float_options */
+ YYSYMBOL_precision = 1156, /* precision */
+ YYSYMBOL_field_options = 1157, /* field_options */
+ YYSYMBOL_last_field_options = 1158, /* last_field_options */
+ YYSYMBOL_field_length_str = 1159, /* field_length_str */
+ YYSYMBOL_field_length = 1160, /* field_length */
+ YYSYMBOL_field_scale = 1161, /* field_scale */
+ YYSYMBOL_opt_field_length = 1162, /* opt_field_length */
+ YYSYMBOL_opt_field_scale = 1163, /* opt_field_scale */
+ YYSYMBOL_opt_precision = 1164, /* opt_precision */
+ YYSYMBOL_attribute_list = 1165, /* attribute_list */
+ YYSYMBOL_attribute = 1166, /* attribute */
+ YYSYMBOL_opt_compression_method = 1167, /* opt_compression_method */
+ YYSYMBOL_opt_compressed = 1168, /* opt_compressed */
+ YYSYMBOL_opt_enable = 1169, /* opt_enable */
+ YYSYMBOL_compressed = 1170, /* compressed */
+ YYSYMBOL_compressed_deprecated_data_type_attribute = 1171, /* compressed_deprecated_data_type_attribute */
+ YYSYMBOL_compressed_deprecated_column_attribute = 1172, /* compressed_deprecated_column_attribute */
+ YYSYMBOL_asrow_attribute = 1173, /* asrow_attribute */
+ YYSYMBOL_serial_attribute = 1174, /* serial_attribute */
+ YYSYMBOL_with_or_without_system = 1175, /* with_or_without_system */
+ YYSYMBOL_charset = 1176, /* charset */
+ YYSYMBOL_charset_name = 1177, /* charset_name */
+ YYSYMBOL_charset_name_or_default = 1178, /* charset_name_or_default */
+ YYSYMBOL_opt_load_data_charset = 1179, /* opt_load_data_charset */
+ YYSYMBOL_old_or_new_charset_name = 1180, /* old_or_new_charset_name */
+ YYSYMBOL_old_or_new_charset_name_or_default = 1181, /* old_or_new_charset_name_or_default */
+ YYSYMBOL_collation_name = 1182, /* collation_name */
+ YYSYMBOL_collation_name_or_default = 1183, /* collation_name_or_default */
+ YYSYMBOL_opt_default = 1184, /* opt_default */
+ YYSYMBOL_charset_or_alias = 1185, /* charset_or_alias */
+ YYSYMBOL_opt_binary = 1186, /* opt_binary */
+ YYSYMBOL_binary = 1187, /* binary */
+ YYSYMBOL_opt_bin_mod = 1188, /* opt_bin_mod */
+ YYSYMBOL_ws_nweights = 1189, /* ws_nweights */
+ YYSYMBOL_1190_93 = 1190, /* $@93 */
+ YYSYMBOL_ws_level_flag_desc = 1191, /* ws_level_flag_desc */
+ YYSYMBOL_ws_level_flag_reverse = 1192, /* ws_level_flag_reverse */
+ YYSYMBOL_ws_level_flags = 1193, /* ws_level_flags */
+ YYSYMBOL_ws_level_number = 1194, /* ws_level_number */
+ YYSYMBOL_ws_level_list_item = 1195, /* ws_level_list_item */
+ YYSYMBOL_ws_level_list = 1196, /* ws_level_list */
+ YYSYMBOL_ws_level_range = 1197, /* ws_level_range */
+ YYSYMBOL_ws_level_list_or_range = 1198, /* ws_level_list_or_range */
+ YYSYMBOL_opt_ws_levels = 1199, /* opt_ws_levels */
+ YYSYMBOL_opt_primary = 1200, /* opt_primary */
+ YYSYMBOL_references = 1201, /* references */
+ YYSYMBOL_opt_ref_list = 1202, /* opt_ref_list */
+ YYSYMBOL_ref_list = 1203, /* ref_list */
+ YYSYMBOL_opt_match_clause = 1204, /* opt_match_clause */
+ YYSYMBOL_opt_on_update_delete = 1205, /* opt_on_update_delete */
+ YYSYMBOL_delete_option = 1206, /* delete_option */
+ YYSYMBOL_constraint_key_type = 1207, /* constraint_key_type */
+ YYSYMBOL_key_or_index = 1208, /* key_or_index */
+ YYSYMBOL_opt_key_or_index = 1209, /* opt_key_or_index */
+ YYSYMBOL_keys_or_index = 1210, /* keys_or_index */
+ YYSYMBOL_fulltext = 1211, /* fulltext */
+ YYSYMBOL_spatial = 1212, /* spatial */
+ YYSYMBOL_normal_key_options = 1213, /* normal_key_options */
+ YYSYMBOL_fulltext_key_options = 1214, /* fulltext_key_options */
+ YYSYMBOL_spatial_key_options = 1215, /* spatial_key_options */
+ YYSYMBOL_normal_key_opts = 1216, /* normal_key_opts */
+ YYSYMBOL_spatial_key_opts = 1217, /* spatial_key_opts */
+ YYSYMBOL_fulltext_key_opts = 1218, /* fulltext_key_opts */
+ YYSYMBOL_opt_USING_key_algorithm = 1219, /* opt_USING_key_algorithm */
+ YYSYMBOL_opt_key_algorithm_clause = 1220, /* opt_key_algorithm_clause */
+ YYSYMBOL_key_using_alg = 1221, /* key_using_alg */
+ YYSYMBOL_all_key_opt = 1222, /* all_key_opt */
+ YYSYMBOL_normal_key_opt = 1223, /* normal_key_opt */
+ YYSYMBOL_spatial_key_opt = 1224, /* spatial_key_opt */
+ YYSYMBOL_fulltext_key_opt = 1225, /* fulltext_key_opt */
+ YYSYMBOL_btree_or_rtree = 1226, /* btree_or_rtree */
+ YYSYMBOL_ignorability = 1227, /* ignorability */
+ YYSYMBOL_key_list = 1228, /* key_list */
+ YYSYMBOL_opt_without_overlaps = 1229, /* opt_without_overlaps */
+ YYSYMBOL_key_part = 1230, /* key_part */
+ YYSYMBOL_opt_ident = 1231, /* opt_ident */
+ YYSYMBOL_string_list = 1232, /* string_list */
+ YYSYMBOL_alter = 1233, /* alter */
+ YYSYMBOL_1234_94 = 1234, /* $@94 */
+ YYSYMBOL_1235_95 = 1235, /* $@95 */
+ YYSYMBOL_1236_96 = 1236, /* $@96 */
+ YYSYMBOL_1237_97 = 1237, /* $@97 */
+ YYSYMBOL_1238_98 = 1238, /* $@98 */
+ YYSYMBOL_1239_99 = 1239, /* $@99 */
+ YYSYMBOL_1240_100 = 1240, /* $@100 */
+ YYSYMBOL_1241_101 = 1241, /* $@101 */
+ YYSYMBOL_1242_102 = 1242, /* $@102 */
+ YYSYMBOL_1243_103 = 1243, /* $@103 */
+ YYSYMBOL_1244_104 = 1244, /* $@104 */
+ YYSYMBOL_1245_105 = 1245, /* $@105 */
+ YYSYMBOL_1246_106 = 1246, /* $@106 */
+ YYSYMBOL_account_locking_option = 1247, /* account_locking_option */
+ YYSYMBOL_opt_password_expire_option = 1248, /* opt_password_expire_option */
+ YYSYMBOL_opt_account_locking_and_opt_password_expiration = 1249, /* opt_account_locking_and_opt_password_expiration */
+ YYSYMBOL_ev_alter_on_schedule_completion = 1250, /* ev_alter_on_schedule_completion */
+ YYSYMBOL_opt_ev_rename_to = 1251, /* opt_ev_rename_to */
+ YYSYMBOL_opt_ev_sql_stmt = 1252, /* opt_ev_sql_stmt */
+ YYSYMBOL_ident_or_empty = 1253, /* ident_or_empty */
+ YYSYMBOL_alter_commands = 1254, /* alter_commands */
+ YYSYMBOL_1255_107 = 1255, /* $@107 */
+ YYSYMBOL_1256_108 = 1256, /* $@108 */
+ YYSYMBOL_1257_109 = 1257, /* $@109 */
+ YYSYMBOL_1258_110 = 1258, /* $@110 */
+ YYSYMBOL_remove_partitioning = 1259, /* remove_partitioning */
+ YYSYMBOL_all_or_alt_part_name_list = 1260, /* all_or_alt_part_name_list */
+ YYSYMBOL_add_partition_rule = 1261, /* add_partition_rule */
+ YYSYMBOL_1262_111 = 1262, /* $@111 */
+ YYSYMBOL_add_part_extra = 1263, /* add_part_extra */
+ YYSYMBOL_reorg_partition_rule = 1264, /* reorg_partition_rule */
+ YYSYMBOL_1265_112 = 1265, /* $@112 */
+ YYSYMBOL_reorg_parts_rule = 1266, /* reorg_parts_rule */
+ YYSYMBOL_1267_113 = 1267, /* $@113 */
+ YYSYMBOL_alt_part_name_list = 1268, /* alt_part_name_list */
+ YYSYMBOL_alt_part_name_item = 1269, /* alt_part_name_item */
+ YYSYMBOL_alter_list = 1270, /* alter_list */
+ YYSYMBOL_add_column = 1271, /* add_column */
+ YYSYMBOL_alter_list_item = 1272, /* alter_list_item */
+ YYSYMBOL_opt_without_validation = 1273, /* opt_without_validation */
+ YYSYMBOL_opt_index_lock_algorithm = 1274, /* opt_index_lock_algorithm */
+ YYSYMBOL_alter_algorithm_option = 1275, /* alter_algorithm_option */
+ YYSYMBOL_alter_lock_option = 1276, /* alter_lock_option */
+ YYSYMBOL_opt_column = 1277, /* opt_column */
+ YYSYMBOL_opt_ignore = 1278, /* opt_ignore */
+ YYSYMBOL_alter_options = 1279, /* alter_options */
+ YYSYMBOL_1280_114 = 1280, /* $@114 */
+ YYSYMBOL_alter_options_part2 = 1281, /* alter_options_part2 */
+ YYSYMBOL_alter_option_list = 1282, /* alter_option_list */
+ YYSYMBOL_alter_option = 1283, /* alter_option */
+ YYSYMBOL_opt_restrict = 1284, /* opt_restrict */
+ YYSYMBOL_opt_place = 1285, /* opt_place */
+ YYSYMBOL_opt_to = 1286, /* opt_to */
+ YYSYMBOL_slave = 1287, /* slave */
+ YYSYMBOL_1288_115 = 1288, /* $@115 */
+ YYSYMBOL_1289_116 = 1289, /* $@116 */
+ YYSYMBOL_start = 1290, /* start */
+ YYSYMBOL_opt_start_transaction_option_list = 1291, /* opt_start_transaction_option_list */
+ YYSYMBOL_start_transaction_option_list = 1292, /* start_transaction_option_list */
+ YYSYMBOL_start_transaction_option = 1293, /* start_transaction_option */
+ YYSYMBOL_slave_thread_opts = 1294, /* slave_thread_opts */
+ YYSYMBOL_1295_117 = 1295, /* $@117 */
+ YYSYMBOL_slave_thread_opt_list = 1296, /* slave_thread_opt_list */
+ YYSYMBOL_slave_thread_opt = 1297, /* slave_thread_opt */
+ YYSYMBOL_slave_until = 1298, /* slave_until */
+ YYSYMBOL_slave_until_opts = 1299, /* slave_until_opts */
+ YYSYMBOL_checksum = 1300, /* checksum */
+ YYSYMBOL_1301_118 = 1301, /* $@118 */
+ YYSYMBOL_opt_checksum_type = 1302, /* opt_checksum_type */
+ YYSYMBOL_repair_table_or_view = 1303, /* repair_table_or_view */
+ YYSYMBOL_1304_119 = 1304, /* $@119 */
+ YYSYMBOL_repair = 1305, /* repair */
+ YYSYMBOL_1306_120 = 1306, /* $@120 */
+ YYSYMBOL_opt_mi_repair_type = 1307, /* opt_mi_repair_type */
+ YYSYMBOL_mi_repair_types = 1308, /* mi_repair_types */
+ YYSYMBOL_mi_repair_type = 1309, /* mi_repair_type */
+ YYSYMBOL_opt_view_repair_type = 1310, /* opt_view_repair_type */
+ YYSYMBOL_analyze = 1311, /* analyze */
+ YYSYMBOL_1312_121 = 1312, /* $@121 */
+ YYSYMBOL_analyze_table_list = 1313, /* analyze_table_list */
+ YYSYMBOL_analyze_table_elem_spec = 1314, /* analyze_table_elem_spec */
+ YYSYMBOL_opt_persistent_stat_clause = 1315, /* opt_persistent_stat_clause */
+ YYSYMBOL_persistent_stat_spec = 1316, /* persistent_stat_spec */
+ YYSYMBOL_persistent_column_stat_spec = 1317, /* persistent_column_stat_spec */
+ YYSYMBOL_1318_122 = 1318, /* $@122 */
+ YYSYMBOL_persistent_index_stat_spec = 1319, /* persistent_index_stat_spec */
+ YYSYMBOL_1320_123 = 1320, /* $@123 */
+ YYSYMBOL_table_column_list = 1321, /* table_column_list */
+ YYSYMBOL_table_index_list = 1322, /* table_index_list */
+ YYSYMBOL_table_index_name = 1323, /* table_index_name */
+ YYSYMBOL_binlog_base64_event = 1324, /* binlog_base64_event */
+ YYSYMBOL_check_view_or_table = 1325, /* check_view_or_table */
+ YYSYMBOL_1326_124 = 1326, /* $@124 */
+ YYSYMBOL_check = 1327, /* check */
+ YYSYMBOL_1328_125 = 1328, /* $@125 */
+ YYSYMBOL_opt_mi_check_type = 1329, /* opt_mi_check_type */
+ YYSYMBOL_mi_check_types = 1330, /* mi_check_types */
+ YYSYMBOL_mi_check_type = 1331, /* mi_check_type */
+ YYSYMBOL_opt_view_check_type = 1332, /* opt_view_check_type */
+ YYSYMBOL_optimize = 1333, /* optimize */
+ YYSYMBOL_1334_126 = 1334, /* $@126 */
+ YYSYMBOL_opt_no_write_to_binlog = 1335, /* opt_no_write_to_binlog */
+ YYSYMBOL_rename = 1336, /* rename */
+ YYSYMBOL_1337_127 = 1337, /* $@127 */
+ YYSYMBOL_rename_list = 1338, /* rename_list */
+ YYSYMBOL_table_to_table_list = 1339, /* table_to_table_list */
+ YYSYMBOL_table_to_table = 1340, /* table_to_table */
+ YYSYMBOL_keycache = 1341, /* keycache */
+ YYSYMBOL_1342_128 = 1342, /* $@128 */
+ YYSYMBOL_keycache_list_or_parts = 1343, /* keycache_list_or_parts */
+ YYSYMBOL_keycache_list = 1344, /* keycache_list */
+ YYSYMBOL_assign_to_keycache = 1345, /* assign_to_keycache */
+ YYSYMBOL_assign_to_keycache_parts = 1346, /* assign_to_keycache_parts */
+ YYSYMBOL_key_cache_name = 1347, /* key_cache_name */
+ YYSYMBOL_preload = 1348, /* preload */
+ YYSYMBOL_1349_129 = 1349, /* $@129 */
+ YYSYMBOL_preload_list_or_parts = 1350, /* preload_list_or_parts */
+ YYSYMBOL_preload_list = 1351, /* preload_list */
+ YYSYMBOL_preload_keys = 1352, /* preload_keys */
+ YYSYMBOL_preload_keys_parts = 1353, /* preload_keys_parts */
+ YYSYMBOL_adm_partition = 1354, /* adm_partition */
+ YYSYMBOL_1355_130 = 1355, /* $@130 */
+ YYSYMBOL_cache_keys_spec = 1356, /* cache_keys_spec */
+ YYSYMBOL_1357_131 = 1357, /* $@131 */
+ YYSYMBOL_cache_key_list_or_empty = 1358, /* cache_key_list_or_empty */
+ YYSYMBOL_opt_ignore_leaves = 1359, /* opt_ignore_leaves */
+ YYSYMBOL_select = 1360, /* select */
+ YYSYMBOL_1361_132 = 1361, /* $@132 */
+ YYSYMBOL_1362_133 = 1362, /* $@133 */
+ YYSYMBOL_select_into = 1363, /* select_into */
+ YYSYMBOL_1364_134 = 1364, /* $@134 */
+ YYSYMBOL_1365_135 = 1365, /* $@135 */
+ YYSYMBOL_simple_table = 1366, /* simple_table */
+ YYSYMBOL_table_value_constructor = 1367, /* table_value_constructor */
+ YYSYMBOL_1368_136 = 1368, /* $@136 */
+ YYSYMBOL_query_specification_start = 1369, /* query_specification_start */
+ YYSYMBOL_1370_137 = 1370, /* $@137 */
+ YYSYMBOL_1371_138 = 1371, /* $@138 */
+ YYSYMBOL_query_specification = 1372, /* query_specification */
+ YYSYMBOL_select_into_query_specification = 1373, /* select_into_query_specification */
+ YYSYMBOL_query_expression = 1374, /* query_expression */
+ YYSYMBOL_query_expression_no_with_clause = 1375, /* query_expression_no_with_clause */
+ YYSYMBOL_query_expression_body_ext = 1376, /* query_expression_body_ext */
+ YYSYMBOL_1377_139 = 1377, /* $@139 */
+ YYSYMBOL_1378_140 = 1378, /* $@140 */
+ YYSYMBOL_query_expression_body_ext_parens = 1379, /* query_expression_body_ext_parens */
+ YYSYMBOL_query_expression_body = 1380, /* query_expression_body */
+ YYSYMBOL_1381_141 = 1381, /* $@141 */
+ YYSYMBOL_query_primary = 1382, /* query_primary */
+ YYSYMBOL_query_simple = 1383, /* query_simple */
+ YYSYMBOL_subselect = 1384, /* subselect */
+ YYSYMBOL_subquery = 1385, /* subquery */
+ YYSYMBOL_opt_from_clause = 1386, /* opt_from_clause */
+ YYSYMBOL_from_clause = 1387, /* from_clause */
+ YYSYMBOL_table_reference_list = 1388, /* table_reference_list */
+ YYSYMBOL_select_options = 1389, /* select_options */
+ YYSYMBOL_opt_history_unit = 1390, /* opt_history_unit */
+ YYSYMBOL_history_point = 1391, /* history_point */
+ YYSYMBOL_for_portion_of_time_clause = 1392, /* for_portion_of_time_clause */
+ YYSYMBOL_opt_for_portion_of_time_clause = 1393, /* opt_for_portion_of_time_clause */
+ YYSYMBOL_opt_for_system_time_clause = 1394, /* opt_for_system_time_clause */
+ YYSYMBOL_system_time_expr = 1395, /* system_time_expr */
+ YYSYMBOL_select_option_list = 1396, /* select_option_list */
+ YYSYMBOL_select_option = 1397, /* select_option */
+ YYSYMBOL_select_lock_type = 1398, /* select_lock_type */
+ YYSYMBOL_opt_select_lock_type = 1399, /* opt_select_lock_type */
+ YYSYMBOL_opt_lock_wait_timeout_new = 1400, /* opt_lock_wait_timeout_new */
+ YYSYMBOL_select_item_list = 1401, /* select_item_list */
+ YYSYMBOL_select_item = 1402, /* select_item */
+ YYSYMBOL_remember_tok_start = 1403, /* remember_tok_start */
+ YYSYMBOL_remember_name = 1404, /* remember_name */
+ YYSYMBOL_remember_end = 1405, /* remember_end */
+ YYSYMBOL_remember_cpp_ptr = 1406, /* remember_cpp_ptr */
+ YYSYMBOL_remember_start_opt = 1407, /* remember_start_opt */
+ YYSYMBOL_remember_end_opt = 1408, /* remember_end_opt */
+ YYSYMBOL_remember_lex = 1409, /* remember_lex */
+ YYSYMBOL_select_alias = 1410, /* select_alias */
+ YYSYMBOL_opt_default_time_precision = 1411, /* opt_default_time_precision */
+ YYSYMBOL_opt_time_precision = 1412, /* opt_time_precision */
+ YYSYMBOL_optional_braces = 1413, /* optional_braces */
+ YYSYMBOL_expr = 1414, /* expr */
+ YYSYMBOL_boolean_test = 1415, /* boolean_test */
+ YYSYMBOL_predicate = 1416, /* predicate */
+ YYSYMBOL_bit_expr = 1417, /* bit_expr */
+ YYSYMBOL_or = 1418, /* or */
+ YYSYMBOL_and = 1419, /* and */
+ YYSYMBOL_not = 1420, /* not */
+ YYSYMBOL_not2 = 1421, /* not2 */
+ YYSYMBOL_comp_op = 1422, /* comp_op */
+ YYSYMBOL_all_or_any = 1423, /* all_or_any */
+ YYSYMBOL_opt_dyncol_type = 1424, /* opt_dyncol_type */
+ YYSYMBOL_dyncol_type = 1425, /* dyncol_type */
+ YYSYMBOL_numeric_dyncol_type = 1426, /* numeric_dyncol_type */
+ YYSYMBOL_temporal_dyncol_type = 1427, /* temporal_dyncol_type */
+ YYSYMBOL_string_dyncol_type = 1428, /* string_dyncol_type */
+ YYSYMBOL_dyncall_create_element = 1429, /* dyncall_create_element */
+ YYSYMBOL_dyncall_create_list = 1430, /* dyncall_create_list */
+ YYSYMBOL_plsql_cursor_attr = 1431, /* plsql_cursor_attr */
+ YYSYMBOL_explicit_cursor_attr = 1432, /* explicit_cursor_attr */
+ YYSYMBOL_trim_operands = 1433, /* trim_operands */
+ YYSYMBOL_trim_operands_regular = 1434, /* trim_operands_regular */
+ YYSYMBOL_trim_operands_special = 1435, /* trim_operands_special */
+ YYSYMBOL_column_default_non_parenthesized_expr = 1436, /* column_default_non_parenthesized_expr */
+ YYSYMBOL_primary_expr = 1437, /* primary_expr */
+ YYSYMBOL_string_factor_expr = 1438, /* string_factor_expr */
+ YYSYMBOL_simple_expr = 1439, /* simple_expr */
+ YYSYMBOL_mysql_concatenation_expr = 1440, /* mysql_concatenation_expr */
+ YYSYMBOL_function_call_keyword_timestamp = 1441, /* function_call_keyword_timestamp */
+ YYSYMBOL_function_call_keyword = 1442, /* function_call_keyword */
+ YYSYMBOL_substring_operands = 1443, /* substring_operands */
+ YYSYMBOL_substring_operands_regular = 1444, /* substring_operands_regular */
+ YYSYMBOL_substring_operands_special = 1445, /* substring_operands_special */
+ YYSYMBOL_function_call_nonkeyword = 1446, /* function_call_nonkeyword */
+ YYSYMBOL_function_call_conflict = 1447, /* function_call_conflict */
+ YYSYMBOL_function_call_generic = 1448, /* function_call_generic */
+ YYSYMBOL_1449_142 = 1449, /* @142 */
+ YYSYMBOL_fulltext_options = 1450, /* fulltext_options */
+ YYSYMBOL_opt_natural_language_mode = 1451, /* opt_natural_language_mode */
+ YYSYMBOL_opt_query_expansion = 1452, /* opt_query_expansion */
+ YYSYMBOL_opt_udf_expr_list = 1453, /* opt_udf_expr_list */
+ YYSYMBOL_udf_expr_list = 1454, /* udf_expr_list */
+ YYSYMBOL_udf_expr = 1455, /* udf_expr */
+ YYSYMBOL_sum_expr = 1456, /* sum_expr */
+ YYSYMBOL_1457_143 = 1457, /* $@143 */
+ YYSYMBOL_1458_144 = 1458, /* $@144 */
+ YYSYMBOL_1459_145 = 1459, /* $@145 */
+ YYSYMBOL_1460_146 = 1460, /* $@146 */
+ YYSYMBOL_1461_147 = 1461, /* $@147 */
+ YYSYMBOL_window_func_expr = 1462, /* window_func_expr */
+ YYSYMBOL_window_func = 1463, /* window_func */
+ YYSYMBOL_simple_window_func = 1464, /* simple_window_func */
+ YYSYMBOL_inverse_distribution_function = 1465, /* inverse_distribution_function */
+ YYSYMBOL_percentile_function = 1466, /* percentile_function */
+ YYSYMBOL_1467_148 = 1467, /* $@148 */
+ YYSYMBOL_inverse_distribution_function_def = 1468, /* inverse_distribution_function_def */
+ YYSYMBOL_order_by_single_element_list = 1469, /* order_by_single_element_list */
+ YYSYMBOL_window_name = 1470, /* window_name */
+ YYSYMBOL_variable = 1471, /* variable */
+ YYSYMBOL_1472_149 = 1472, /* $@149 */
+ YYSYMBOL_variable_aux = 1473, /* variable_aux */
+ YYSYMBOL_opt_distinct = 1474, /* opt_distinct */
+ YYSYMBOL_opt_gconcat_separator = 1475, /* opt_gconcat_separator */
+ YYSYMBOL_opt_gorder_clause = 1476, /* opt_gorder_clause */
+ YYSYMBOL_gorder_list = 1477, /* gorder_list */
+ YYSYMBOL_opt_glimit_clause = 1478, /* opt_glimit_clause */
+ YYSYMBOL_glimit_clause = 1479, /* glimit_clause */
+ YYSYMBOL_glimit_options = 1480, /* glimit_options */
+ YYSYMBOL_in_sum_expr = 1481, /* in_sum_expr */
+ YYSYMBOL_1482_150 = 1482, /* $@150 */
+ YYSYMBOL_cast_type = 1483, /* cast_type */
+ YYSYMBOL_cast_type_numeric = 1484, /* cast_type_numeric */
+ YYSYMBOL_cast_type_temporal = 1485, /* cast_type_temporal */
+ YYSYMBOL_opt_expr_list = 1486, /* opt_expr_list */
+ YYSYMBOL_expr_list = 1487, /* expr_list */
+ YYSYMBOL_ident_list_arg = 1488, /* ident_list_arg */
+ YYSYMBOL_ident_list = 1489, /* ident_list */
+ YYSYMBOL_when_list = 1490, /* when_list */
+ YYSYMBOL_when_list_opt_else = 1491, /* when_list_opt_else */
+ YYSYMBOL_table_ref = 1492, /* table_ref */
+ YYSYMBOL_json_text_literal = 1493, /* json_text_literal */
+ YYSYMBOL_json_text_literal_or_num = 1494, /* json_text_literal_or_num */
+ YYSYMBOL_join_table_list = 1495, /* join_table_list */
+ YYSYMBOL_json_table_columns_clause = 1496, /* json_table_columns_clause */
+ YYSYMBOL_json_table_columns_list = 1497, /* json_table_columns_list */
+ YYSYMBOL_json_table_column = 1498, /* json_table_column */
+ YYSYMBOL_1499_151 = 1499, /* $@151 */
+ YYSYMBOL_1500_152 = 1500, /* $@152 */
+ YYSYMBOL_json_table_column_type = 1501, /* json_table_column_type */
+ YYSYMBOL_json_table_field_type = 1502, /* json_table_field_type */
+ YYSYMBOL_json_opt_on_empty_or_error = 1503, /* json_opt_on_empty_or_error */
+ YYSYMBOL_json_on_response = 1504, /* json_on_response */
+ YYSYMBOL_json_on_error_response = 1505, /* json_on_error_response */
+ YYSYMBOL_json_on_empty_response = 1506, /* json_on_empty_response */
+ YYSYMBOL_table_function = 1507, /* table_function */
+ YYSYMBOL_1508_153 = 1508, /* $@153 */
+ YYSYMBOL_1509_154 = 1509, /* $@154 */
+ YYSYMBOL_esc_table_ref = 1510, /* esc_table_ref */
+ YYSYMBOL_derived_table_list = 1511, /* derived_table_list */
+ YYSYMBOL_join_table = 1512, /* join_table */
+ YYSYMBOL_1513_155 = 1513, /* $@155 */
+ YYSYMBOL_1514_156 = 1514, /* $@156 */
+ YYSYMBOL_1515_157 = 1515, /* $@157 */
+ YYSYMBOL_1516_158 = 1516, /* $@158 */
+ YYSYMBOL_1517_159 = 1517, /* $@159 */
+ YYSYMBOL_1518_160 = 1518, /* $@160 */
+ YYSYMBOL_inner_join = 1519, /* inner_join */
+ YYSYMBOL_normal_join = 1520, /* normal_join */
+ YYSYMBOL_opt_use_partition = 1521, /* opt_use_partition */
+ YYSYMBOL_use_partition = 1522, /* use_partition */
+ YYSYMBOL_table_factor = 1523, /* table_factor */
+ YYSYMBOL_table_primary_ident_opt_parens = 1524, /* table_primary_ident_opt_parens */
+ YYSYMBOL_table_primary_derived_opt_parens = 1525, /* table_primary_derived_opt_parens */
+ YYSYMBOL_table_reference_list_parens = 1526, /* table_reference_list_parens */
+ YYSYMBOL_nested_table_reference_list = 1527, /* nested_table_reference_list */
+ YYSYMBOL_join_table_parens = 1528, /* join_table_parens */
+ YYSYMBOL_table_primary_ident = 1529, /* table_primary_ident */
+ YYSYMBOL_table_primary_derived = 1530, /* table_primary_derived */
+ YYSYMBOL_opt_outer = 1531, /* opt_outer */
+ YYSYMBOL_index_hint_clause = 1532, /* index_hint_clause */
+ YYSYMBOL_index_hint_type = 1533, /* index_hint_type */
+ YYSYMBOL_index_hint_definition = 1534, /* index_hint_definition */
+ YYSYMBOL_1535_161 = 1535, /* $@161 */
+ YYSYMBOL_1536_162 = 1536, /* $@162 */
+ YYSYMBOL_index_hints_list = 1537, /* index_hints_list */
+ YYSYMBOL_opt_index_hints_list = 1538, /* opt_index_hints_list */
+ YYSYMBOL_1539_163 = 1539, /* $@163 */
+ YYSYMBOL_opt_key_definition = 1540, /* opt_key_definition */
+ YYSYMBOL_1541_164 = 1541, /* $@164 */
+ YYSYMBOL_opt_key_usage_list = 1542, /* opt_key_usage_list */
+ YYSYMBOL_key_usage_element = 1543, /* key_usage_element */
+ YYSYMBOL_key_usage_list = 1544, /* key_usage_list */
+ YYSYMBOL_using_list = 1545, /* using_list */
+ YYSYMBOL_interval = 1546, /* interval */
+ YYSYMBOL_interval_time_stamp = 1547, /* interval_time_stamp */
+ YYSYMBOL_date_time_type = 1548, /* date_time_type */
+ YYSYMBOL_table_alias = 1549, /* table_alias */
+ YYSYMBOL_opt_table_alias_clause = 1550, /* opt_table_alias_clause */
+ YYSYMBOL_table_alias_clause = 1551, /* table_alias_clause */
+ YYSYMBOL_opt_all = 1552, /* opt_all */
+ YYSYMBOL_opt_where_clause = 1553, /* opt_where_clause */
+ YYSYMBOL_1554_165 = 1554, /* $@165 */
+ YYSYMBOL_opt_having_clause = 1555, /* opt_having_clause */
+ YYSYMBOL_1556_166 = 1556, /* $@166 */
+ YYSYMBOL_opt_group_clause = 1557, /* opt_group_clause */
+ YYSYMBOL_group_list = 1558, /* group_list */
+ YYSYMBOL_olap_opt = 1559, /* olap_opt */
+ YYSYMBOL_opt_window_clause = 1560, /* opt_window_clause */
+ YYSYMBOL_window_def_list = 1561, /* window_def_list */
+ YYSYMBOL_window_def = 1562, /* window_def */
+ YYSYMBOL_window_spec = 1563, /* window_spec */
+ YYSYMBOL_1564_167 = 1564, /* $@167 */
+ YYSYMBOL_opt_window_ref = 1565, /* opt_window_ref */
+ YYSYMBOL_opt_window_partition_clause = 1566, /* opt_window_partition_clause */
+ YYSYMBOL_opt_window_order_clause = 1567, /* opt_window_order_clause */
+ YYSYMBOL_opt_window_frame_clause = 1568, /* opt_window_frame_clause */
+ YYSYMBOL_window_frame_units = 1569, /* window_frame_units */
+ YYSYMBOL_window_frame_extent = 1570, /* window_frame_extent */
+ YYSYMBOL_window_frame_start = 1571, /* window_frame_start */
+ YYSYMBOL_window_frame_bound = 1572, /* window_frame_bound */
+ YYSYMBOL_opt_window_frame_exclusion = 1573, /* opt_window_frame_exclusion */
+ YYSYMBOL_alter_order_clause = 1574, /* alter_order_clause */
+ YYSYMBOL_alter_order_list = 1575, /* alter_order_list */
+ YYSYMBOL_alter_order_item = 1576, /* alter_order_item */
+ YYSYMBOL_opt_order_clause = 1577, /* opt_order_clause */
+ YYSYMBOL_order_clause = 1578, /* order_clause */
+ YYSYMBOL_1579_168 = 1579, /* $@168 */
+ YYSYMBOL_order_list = 1580, /* order_list */
+ YYSYMBOL_order_dir = 1581, /* order_dir */
+ YYSYMBOL_opt_limit_clause = 1582, /* opt_limit_clause */
+ YYSYMBOL_limit_clause = 1583, /* limit_clause */
+ YYSYMBOL_fetch_first_clause = 1584, /* fetch_first_clause */
+ YYSYMBOL_first_or_next = 1585, /* first_or_next */
+ YYSYMBOL_row_or_rows = 1586, /* row_or_rows */
+ YYSYMBOL_only_or_with_ties = 1587, /* only_or_with_ties */
+ YYSYMBOL_opt_global_limit_clause = 1588, /* opt_global_limit_clause */
+ YYSYMBOL_limit_options = 1589, /* limit_options */
+ YYSYMBOL_limit_option = 1590, /* limit_option */
+ YYSYMBOL_limit_rows_option = 1591, /* limit_rows_option */
+ YYSYMBOL_delete_limit_clause = 1592, /* delete_limit_clause */
+ YYSYMBOL_order_limit_lock = 1593, /* order_limit_lock */
+ YYSYMBOL_opt_order_limit_lock = 1594, /* opt_order_limit_lock */
+ YYSYMBOL_query_expression_tail = 1595, /* query_expression_tail */
+ YYSYMBOL_opt_query_expression_tail = 1596, /* opt_query_expression_tail */
+ YYSYMBOL_opt_procedure_or_into = 1597, /* opt_procedure_or_into */
+ YYSYMBOL_order_or_limit = 1598, /* order_or_limit */
+ YYSYMBOL_opt_plus = 1599, /* opt_plus */
+ YYSYMBOL_int_num = 1600, /* int_num */
+ YYSYMBOL_ulong_num = 1601, /* ulong_num */
+ YYSYMBOL_real_ulong_num = 1602, /* real_ulong_num */
+ YYSYMBOL_longlong_num = 1603, /* longlong_num */
+ YYSYMBOL_ulonglong_num = 1604, /* ulonglong_num */
+ YYSYMBOL_real_ulonglong_num = 1605, /* real_ulonglong_num */
+ YYSYMBOL_dec_num_error = 1606, /* dec_num_error */
+ YYSYMBOL_dec_num = 1607, /* dec_num */
+ YYSYMBOL_choice = 1608, /* choice */
+ YYSYMBOL_bool = 1609, /* bool */
+ YYSYMBOL_procedure_clause = 1610, /* procedure_clause */
+ YYSYMBOL_1611_169 = 1611, /* $@169 */
+ YYSYMBOL_procedure_list = 1612, /* procedure_list */
+ YYSYMBOL_procedure_list2 = 1613, /* procedure_list2 */
+ YYSYMBOL_procedure_item = 1614, /* procedure_item */
+ YYSYMBOL_select_var_list_init = 1615, /* select_var_list_init */
+ YYSYMBOL_1616_170 = 1616, /* $@170 */
+ YYSYMBOL_select_var_list = 1617, /* select_var_list */
+ YYSYMBOL_select_var_ident = 1618, /* select_var_ident */
+ YYSYMBOL_select_outvar = 1619, /* select_outvar */
+ YYSYMBOL_into = 1620, /* into */
+ YYSYMBOL_into_destination = 1621, /* into_destination */
+ YYSYMBOL_1622_171 = 1622, /* $@171 */
+ YYSYMBOL_1623_172 = 1623, /* $@172 */
+ YYSYMBOL_do = 1624, /* do */
+ YYSYMBOL_1625_173 = 1625, /* $@173 */
+ YYSYMBOL_drop = 1626, /* drop */
+ YYSYMBOL_1627_174 = 1627, /* $@174 */
+ YYSYMBOL_1628_175 = 1628, /* $@175 */
+ YYSYMBOL_1629_176 = 1629, /* $@176 */
+ YYSYMBOL_1630_177 = 1630, /* $@177 */
+ YYSYMBOL_table_list = 1631, /* table_list */
+ YYSYMBOL_table_name = 1632, /* table_name */
+ YYSYMBOL_table_name_with_opt_use_partition = 1633, /* table_name_with_opt_use_partition */
+ YYSYMBOL_table_alias_ref_list = 1634, /* table_alias_ref_list */
+ YYSYMBOL_table_alias_ref = 1635, /* table_alias_ref */
+ YYSYMBOL_opt_if_exists_table_element = 1636, /* opt_if_exists_table_element */
+ YYSYMBOL_opt_if_exists = 1637, /* opt_if_exists */
+ YYSYMBOL_opt_temporary = 1638, /* opt_temporary */
+ YYSYMBOL_insert = 1639, /* insert */
+ YYSYMBOL_1640_178 = 1640, /* $@178 */
+ YYSYMBOL_1641_179 = 1641, /* $@179 */
+ YYSYMBOL_replace = 1642, /* replace */
+ YYSYMBOL_1643_180 = 1643, /* $@180 */
+ YYSYMBOL_1644_181 = 1644, /* $@181 */
+ YYSYMBOL_insert_start = 1645, /* insert_start */
+ YYSYMBOL_stmt_end = 1646, /* stmt_end */
+ YYSYMBOL_insert_lock_option = 1647, /* insert_lock_option */
+ YYSYMBOL_replace_lock_option = 1648, /* replace_lock_option */
+ YYSYMBOL_insert_replace_option = 1649, /* insert_replace_option */
+ YYSYMBOL_opt_into = 1650, /* opt_into */
+ YYSYMBOL_insert_table = 1651, /* insert_table */
+ YYSYMBOL_1652_182 = 1652, /* $@182 */
+ YYSYMBOL_insert_field_spec = 1653, /* insert_field_spec */
+ YYSYMBOL_1654_183 = 1654, /* $@183 */
+ YYSYMBOL_insert_field_list = 1655, /* insert_field_list */
+ YYSYMBOL_opt_fields = 1656, /* opt_fields */
+ YYSYMBOL_fields = 1657, /* fields */
+ YYSYMBOL_insert_values = 1658, /* insert_values */
+ YYSYMBOL_values_list = 1659, /* values_list */
+ YYSYMBOL_ident_eq_list = 1660, /* ident_eq_list */
+ YYSYMBOL_ident_eq_value = 1661, /* ident_eq_value */
+ YYSYMBOL_equal = 1662, /* equal */
+ YYSYMBOL_opt_equal = 1663, /* opt_equal */
+ YYSYMBOL_opt_with = 1664, /* opt_with */
+ YYSYMBOL_opt_by = 1665, /* opt_by */
+ YYSYMBOL_no_braces = 1666, /* no_braces */
+ YYSYMBOL_1667_184 = 1667, /* $@184 */
+ YYSYMBOL_no_braces_with_names = 1668, /* no_braces_with_names */
+ YYSYMBOL_1669_185 = 1669, /* $@185 */
+ YYSYMBOL_opt_values = 1670, /* opt_values */
+ YYSYMBOL_opt_values_with_names = 1671, /* opt_values_with_names */
+ YYSYMBOL_values = 1672, /* values */
+ YYSYMBOL_values_with_names = 1673, /* values_with_names */
+ YYSYMBOL_expr_or_ignore = 1674, /* expr_or_ignore */
+ YYSYMBOL_expr_or_ignore_or_default = 1675, /* expr_or_ignore_or_default */
+ YYSYMBOL_opt_insert_update = 1676, /* opt_insert_update */
+ YYSYMBOL_1677_186 = 1677, /* $@186 */
+ YYSYMBOL_1678_187 = 1678, /* $@187 */
+ YYSYMBOL_update_table_list = 1679, /* update_table_list */
+ YYSYMBOL_update = 1680, /* update */
+ YYSYMBOL_1681_188 = 1681, /* $@188 */
+ YYSYMBOL_1682_189 = 1682, /* $@189 */
+ YYSYMBOL_1683_190 = 1683, /* $@190 */
+ YYSYMBOL_update_list = 1684, /* update_list */
+ YYSYMBOL_update_elem = 1685, /* update_elem */
+ YYSYMBOL_insert_update_list = 1686, /* insert_update_list */
+ YYSYMBOL_insert_update_elem = 1687, /* insert_update_elem */
+ YYSYMBOL_opt_low_priority = 1688, /* opt_low_priority */
+ YYSYMBOL_delete = 1689, /* delete */
+ YYSYMBOL_1690_191 = 1690, /* $@191 */
+ YYSYMBOL_opt_delete_system_time = 1691, /* opt_delete_system_time */
+ YYSYMBOL_delete_part2 = 1692, /* delete_part2 */
+ YYSYMBOL_1693_192 = 1693, /* $@192 */
+ YYSYMBOL_delete_single_table = 1694, /* delete_single_table */
+ YYSYMBOL_delete_single_table_for_period = 1695, /* delete_single_table_for_period */
+ YYSYMBOL_single_multi = 1696, /* single_multi */
+ YYSYMBOL_1697_193 = 1697, /* $@193 */
+ YYSYMBOL_1698_194 = 1698, /* $@194 */
+ YYSYMBOL_1699_195 = 1699, /* $@195 */
+ YYSYMBOL_1700_196 = 1700, /* $@196 */
+ YYSYMBOL_1701_197 = 1701, /* $@197 */
+ YYSYMBOL_opt_returning = 1702, /* opt_returning */
+ YYSYMBOL_1703_198 = 1703, /* $@198 */
+ YYSYMBOL_opt_wild = 1704, /* opt_wild */
+ YYSYMBOL_opt_delete_options = 1705, /* opt_delete_options */
+ YYSYMBOL_opt_delete_option = 1706, /* opt_delete_option */
+ YYSYMBOL_truncate = 1707, /* truncate */
+ YYSYMBOL_1708_199 = 1708, /* $@199 */
+ YYSYMBOL_1709_200 = 1709, /* $@200 */
+ YYSYMBOL_opt_table_sym = 1710, /* opt_table_sym */
+ YYSYMBOL_opt_profile_defs = 1711, /* opt_profile_defs */
+ YYSYMBOL_profile_defs = 1712, /* profile_defs */
+ YYSYMBOL_profile_def = 1713, /* profile_def */
+ YYSYMBOL_opt_profile_args = 1714, /* opt_profile_args */
+ YYSYMBOL_show = 1715, /* show */
+ YYSYMBOL_1716_201 = 1716, /* $@201 */
+ YYSYMBOL_show_param = 1717, /* show_param */
+ YYSYMBOL_1718_202 = 1718, /* $@202 */
+ YYSYMBOL_1719_203 = 1719, /* $@203 */
+ YYSYMBOL_show_engine_param = 1720, /* show_engine_param */
+ YYSYMBOL_master_or_binary = 1721, /* master_or_binary */
+ YYSYMBOL_opt_storage = 1722, /* opt_storage */
+ YYSYMBOL_opt_db = 1723, /* opt_db */
+ YYSYMBOL_opt_full = 1724, /* opt_full */
+ YYSYMBOL_from_or_in = 1725, /* from_or_in */
+ YYSYMBOL_binlog_in = 1726, /* binlog_in */
+ YYSYMBOL_binlog_from = 1727, /* binlog_from */
+ YYSYMBOL_wild_and_where = 1728, /* wild_and_where */
+ YYSYMBOL_describe = 1729, /* describe */
+ YYSYMBOL_1730_204 = 1730, /* $@204 */
+ YYSYMBOL_1731_205 = 1731, /* $@205 */
+ YYSYMBOL_explainable_command = 1732, /* explainable_command */
+ YYSYMBOL_describe_command = 1733, /* describe_command */
+ YYSYMBOL_analyze_stmt_command = 1734, /* analyze_stmt_command */
+ YYSYMBOL_opt_extended_describe = 1735, /* opt_extended_describe */
+ YYSYMBOL_opt_format_json = 1736, /* opt_format_json */
+ YYSYMBOL_opt_describe_column = 1737, /* opt_describe_column */
+ YYSYMBOL_explain_for_connection = 1738, /* explain_for_connection */
+ YYSYMBOL_flush = 1739, /* flush */
+ YYSYMBOL_1740_206 = 1740, /* $@206 */
+ YYSYMBOL_flush_options = 1741, /* flush_options */
+ YYSYMBOL_1742_207 = 1742, /* $@207 */
+ YYSYMBOL_opt_flush_lock = 1743, /* opt_flush_lock */
+ YYSYMBOL_flush_lock = 1744, /* flush_lock */
+ YYSYMBOL_1745_208 = 1745, /* $@208 */
+ YYSYMBOL_flush_options_list = 1746, /* flush_options_list */
+ YYSYMBOL_flush_option = 1747, /* flush_option */
+ YYSYMBOL_opt_table_list = 1748, /* opt_table_list */
+ YYSYMBOL_backup = 1749, /* backup */
+ YYSYMBOL_backup_statements = 1750, /* backup_statements */
+ YYSYMBOL_1751_209 = 1751, /* $@209 */
+ YYSYMBOL_opt_delete_gtid_domain = 1752, /* opt_delete_gtid_domain */
+ YYSYMBOL_delete_domain_id_list = 1753, /* delete_domain_id_list */
+ YYSYMBOL_delete_domain_id = 1754, /* delete_domain_id */
+ YYSYMBOL_optional_flush_tables_arguments = 1755, /* optional_flush_tables_arguments */
+ YYSYMBOL_reset = 1756, /* reset */
+ YYSYMBOL_1757_210 = 1757, /* $@210 */
+ YYSYMBOL_reset_options = 1758, /* reset_options */
+ YYSYMBOL_reset_option = 1759, /* reset_option */
+ YYSYMBOL_1760_211 = 1760, /* $@211 */
+ YYSYMBOL_1761_212 = 1761, /* $@212 */
+ YYSYMBOL_slave_reset_options = 1762, /* slave_reset_options */
+ YYSYMBOL_master_reset_options = 1763, /* master_reset_options */
+ YYSYMBOL_purge = 1764, /* purge */
+ YYSYMBOL_1765_213 = 1765, /* $@213 */
+ YYSYMBOL_kill = 1766, /* kill */
+ YYSYMBOL_1767_214 = 1767, /* $@214 */
+ YYSYMBOL_kill_type = 1768, /* kill_type */
+ YYSYMBOL_kill_option = 1769, /* kill_option */
+ YYSYMBOL_opt_connection = 1770, /* opt_connection */
+ YYSYMBOL_kill_expr = 1771, /* kill_expr */
+ YYSYMBOL_shutdown = 1772, /* shutdown */
+ YYSYMBOL_1773_215 = 1773, /* $@215 */
+ YYSYMBOL_shutdown_option = 1774, /* shutdown_option */
+ YYSYMBOL_use = 1775, /* use */
+ YYSYMBOL_load = 1776, /* load */
+ YYSYMBOL_1777_216 = 1777, /* $@216 */
+ YYSYMBOL_1778_217 = 1778, /* $@217 */
+ YYSYMBOL_1779_218 = 1779, /* $@218 */
+ YYSYMBOL_1780_219 = 1780, /* $@219 */
+ YYSYMBOL_data_or_xml = 1781, /* data_or_xml */
+ YYSYMBOL_opt_local = 1782, /* opt_local */
+ YYSYMBOL_load_data_lock = 1783, /* load_data_lock */
+ YYSYMBOL_opt_duplicate = 1784, /* opt_duplicate */
+ YYSYMBOL_opt_field_term = 1785, /* opt_field_term */
+ YYSYMBOL_field_term_list = 1786, /* field_term_list */
+ YYSYMBOL_field_term = 1787, /* field_term */
+ YYSYMBOL_opt_line_term = 1788, /* opt_line_term */
+ YYSYMBOL_line_term_list = 1789, /* line_term_list */
+ YYSYMBOL_line_term = 1790, /* line_term */
+ YYSYMBOL_opt_xml_rows_identified_by = 1791, /* opt_xml_rows_identified_by */
+ YYSYMBOL_opt_ignore_lines = 1792, /* opt_ignore_lines */
+ YYSYMBOL_lines_or_rows = 1793, /* lines_or_rows */
+ YYSYMBOL_opt_field_or_var_spec = 1794, /* opt_field_or_var_spec */
+ YYSYMBOL_fields_or_vars = 1795, /* fields_or_vars */
+ YYSYMBOL_field_or_var = 1796, /* field_or_var */
+ YYSYMBOL_opt_load_data_set_spec = 1797, /* opt_load_data_set_spec */
+ YYSYMBOL_load_data_set_list = 1798, /* load_data_set_list */
+ YYSYMBOL_load_data_set_elem = 1799, /* load_data_set_elem */
+ YYSYMBOL_text_literal = 1800, /* text_literal */
+ YYSYMBOL_text_string = 1801, /* text_string */
+ YYSYMBOL_hex_or_bin_String = 1802, /* hex_or_bin_String */
+ YYSYMBOL_param_marker = 1803, /* param_marker */
+ YYSYMBOL_signed_literal = 1804, /* signed_literal */
+ YYSYMBOL_literal = 1805, /* literal */
+ YYSYMBOL_NUM_literal = 1806, /* NUM_literal */
+ YYSYMBOL_temporal_literal = 1807, /* temporal_literal */
+ YYSYMBOL_with_clause = 1808, /* with_clause */
+ YYSYMBOL_1809_220 = 1809, /* $@220 */
+ YYSYMBOL_opt_recursive = 1810, /* opt_recursive */
+ YYSYMBOL_with_list = 1811, /* with_list */
+ YYSYMBOL_with_list_element = 1812, /* with_list_element */
+ YYSYMBOL_opt_cycle = 1813, /* opt_cycle */
+ YYSYMBOL_1814_221 = 1814, /* $@221 */
+ YYSYMBOL_opt_with_column_list = 1815, /* opt_with_column_list */
+ YYSYMBOL_with_column_list = 1816, /* with_column_list */
+ YYSYMBOL_ident_sys_alloc = 1817, /* ident_sys_alloc */
+ YYSYMBOL_comma_separated_ident_list = 1818, /* comma_separated_ident_list */
+ YYSYMBOL_with_element_head = 1819, /* with_element_head */
+ YYSYMBOL_insert_ident = 1820, /* insert_ident */
+ YYSYMBOL_table_wild = 1821, /* table_wild */
+ YYSYMBOL_select_sublist_qualified_asterisk = 1822, /* select_sublist_qualified_asterisk */
+ YYSYMBOL_order_ident = 1823, /* order_ident */
+ YYSYMBOL_simple_ident = 1824, /* simple_ident */
+ YYSYMBOL_simple_ident_nospvar = 1825, /* simple_ident_nospvar */
+ YYSYMBOL_field_ident = 1826, /* field_ident */
+ YYSYMBOL_table_ident = 1827, /* table_ident */
+ YYSYMBOL_table_ident_opt_wild = 1828, /* table_ident_opt_wild */
+ YYSYMBOL_table_ident_nodb = 1829, /* table_ident_nodb */
+ YYSYMBOL_IDENT_cli = 1830, /* IDENT_cli */
+ YYSYMBOL_ident_cli = 1831, /* ident_cli */
+ YYSYMBOL_IDENT_sys = 1832, /* IDENT_sys */
+ YYSYMBOL_ident_cli_func = 1833, /* ident_cli_func */
+ YYSYMBOL_ident_func = 1834, /* ident_func */
+ YYSYMBOL_TEXT_STRING_sys = 1835, /* TEXT_STRING_sys */
+ YYSYMBOL_TEXT_STRING_literal = 1836, /* TEXT_STRING_literal */
+ YYSYMBOL_TEXT_STRING_filesystem = 1837, /* TEXT_STRING_filesystem */
+ YYSYMBOL_ident_table_alias = 1838, /* ident_table_alias */
+ YYSYMBOL_ident_cli_set_usual_case = 1839, /* ident_cli_set_usual_case */
+ YYSYMBOL_ident_sysvar_name = 1840, /* ident_sysvar_name */
+ YYSYMBOL_ident = 1841, /* ident */
+ YYSYMBOL_label_ident = 1842, /* label_ident */
+ YYSYMBOL_ident_or_text = 1843, /* ident_or_text */
+ YYSYMBOL_user_maybe_role = 1844, /* user_maybe_role */
+ YYSYMBOL_user_or_role = 1845, /* user_or_role */
+ YYSYMBOL_user = 1846, /* user */
+ YYSYMBOL_keyword_table_alias = 1847, /* keyword_table_alias */
+ YYSYMBOL_keyword_ident = 1848, /* keyword_ident */
+ YYSYMBOL_keyword_sysvar_name = 1849, /* keyword_sysvar_name */
+ YYSYMBOL_keyword_set_usual_case = 1850, /* keyword_set_usual_case */
+ YYSYMBOL_non_reserved_keyword_udt = 1851, /* non_reserved_keyword_udt */
+ YYSYMBOL_keyword_sp_var_not_label = 1852, /* keyword_sp_var_not_label */
+ YYSYMBOL_keyword_sp_head = 1853, /* keyword_sp_head */
+ YYSYMBOL_keyword_verb_clause = 1854, /* keyword_verb_clause */
+ YYSYMBOL_keyword_set_special_case = 1855, /* keyword_set_special_case */
+ YYSYMBOL_keyword_sysvar_type = 1856, /* keyword_sysvar_type */
+ YYSYMBOL_keyword_data_type = 1857, /* keyword_data_type */
+ YYSYMBOL_keyword_cast_type = 1858, /* keyword_cast_type */
+ YYSYMBOL_keyword_func_sp_var_and_label = 1859, /* keyword_func_sp_var_and_label */
+ YYSYMBOL_keyword_func_sp_var_not_label = 1860, /* keyword_func_sp_var_not_label */
+ YYSYMBOL_keyword_sp_var_and_label = 1861, /* keyword_sp_var_and_label */
+ YYSYMBOL_reserved_keyword_udt_not_param_type = 1862, /* reserved_keyword_udt_not_param_type */
+ YYSYMBOL_set = 1863, /* set */
+ YYSYMBOL_1864_222 = 1864, /* $@222 */
+ YYSYMBOL_set_param = 1865, /* set_param */
+ YYSYMBOL_1866_223 = 1866, /* $@223 */
+ YYSYMBOL_1867_224 = 1867, /* $@224 */
+ YYSYMBOL_1868_225 = 1868, /* $@225 */
+ YYSYMBOL_set_stmt_option_list = 1869, /* set_stmt_option_list */
+ YYSYMBOL_start_option_value_list_following_option_type = 1870, /* start_option_value_list_following_option_type */
+ YYSYMBOL_1871_226 = 1871, /* $@226 */
+ YYSYMBOL_option_value_list = 1872, /* option_value_list */
+ YYSYMBOL_option_value = 1873, /* option_value */
+ YYSYMBOL_1874_227 = 1874, /* $@227 */
+ YYSYMBOL_option_type = 1875, /* option_type */
+ YYSYMBOL_opt_var_type = 1876, /* opt_var_type */
+ YYSYMBOL_opt_var_ident_type = 1877, /* opt_var_ident_type */
+ YYSYMBOL_set_stmt_option = 1878, /* set_stmt_option */
+ YYSYMBOL_1879_228 = 1879, /* $@228 */
+ YYSYMBOL_1880_229 = 1880, /* $@229 */
+ YYSYMBOL_1881_230 = 1881, /* $@230 */
+ YYSYMBOL_option_value_following_option_type = 1882, /* option_value_following_option_type */
+ YYSYMBOL_1883_231 = 1883, /* $@231 */
+ YYSYMBOL_1884_232 = 1884, /* $@232 */
+ YYSYMBOL_1885_233 = 1885, /* $@233 */
+ YYSYMBOL_option_value_no_option_type = 1886, /* option_value_no_option_type */
+ YYSYMBOL_1887_234 = 1887, /* $@234 */
+ YYSYMBOL_1888_235 = 1888, /* $@235 */
+ YYSYMBOL_1889_236 = 1889, /* $@236 */
+ YYSYMBOL_1890_237 = 1890, /* $@237 */
+ YYSYMBOL_1891_238 = 1891, /* $@238 */
+ YYSYMBOL_1892_239 = 1892, /* $@239 */
+ YYSYMBOL_1893_240 = 1893, /* $@240 */
+ YYSYMBOL_1894_241 = 1894, /* $@241 */
+ YYSYMBOL_1895_242 = 1895, /* $@242 */
+ YYSYMBOL_1896_243 = 1896, /* $@243 */
+ YYSYMBOL_transaction_characteristics = 1897, /* transaction_characteristics */
+ YYSYMBOL_transaction_access_mode = 1898, /* transaction_access_mode */
+ YYSYMBOL_isolation_level = 1899, /* isolation_level */
+ YYSYMBOL_transaction_access_mode_types = 1900, /* transaction_access_mode_types */
+ YYSYMBOL_isolation_types = 1901, /* isolation_types */
+ YYSYMBOL_text_or_password = 1902, /* text_or_password */
+ YYSYMBOL_set_expr_or_default = 1903, /* set_expr_or_default */
+ YYSYMBOL_set_expr_misc = 1904, /* set_expr_misc */
+ YYSYMBOL_lock = 1905, /* lock */
+ YYSYMBOL_1906_244 = 1906, /* $@244 */
+ YYSYMBOL_opt_lock_wait_timeout = 1907, /* opt_lock_wait_timeout */
+ YYSYMBOL_table_or_tables = 1908, /* table_or_tables */
+ YYSYMBOL_table_lock_list = 1909, /* table_lock_list */
+ YYSYMBOL_table_lock = 1910, /* table_lock */
+ YYSYMBOL_lock_option = 1911, /* lock_option */
+ YYSYMBOL_unlock = 1912, /* unlock */
+ YYSYMBOL_1913_245 = 1913, /* $@245 */
+ YYSYMBOL_handler = 1914, /* handler */
+ YYSYMBOL_1915_246 = 1915, /* $@246 */
+ YYSYMBOL_handler_tail = 1916, /* handler_tail */
+ YYSYMBOL_1917_247 = 1917, /* $@247 */
+ YYSYMBOL_handler_read_or_scan = 1918, /* handler_read_or_scan */
+ YYSYMBOL_handler_scan_function = 1919, /* handler_scan_function */
+ YYSYMBOL_handler_rkey_function = 1920, /* handler_rkey_function */
+ YYSYMBOL_1921_248 = 1921, /* $@248 */
+ YYSYMBOL_handler_rkey_mode = 1922, /* handler_rkey_mode */
+ YYSYMBOL_revoke = 1923, /* revoke */
+ YYSYMBOL_revoke_command = 1924, /* revoke_command */
+ YYSYMBOL_admin_option_for_role = 1925, /* admin_option_for_role */
+ YYSYMBOL_grant = 1926, /* grant */
+ YYSYMBOL_grant_command = 1927, /* grant_command */
+ YYSYMBOL_opt_with_admin = 1928, /* opt_with_admin */
+ YYSYMBOL_opt_with_admin_option = 1929, /* opt_with_admin_option */
+ YYSYMBOL_role_list = 1930, /* role_list */
+ YYSYMBOL_current_role = 1931, /* current_role */
+ YYSYMBOL_role_name = 1932, /* role_name */
+ YYSYMBOL_grant_role = 1933, /* grant_role */
+ YYSYMBOL_opt_table = 1934, /* opt_table */
+ YYSYMBOL_grant_privileges = 1935, /* grant_privileges */
+ YYSYMBOL_opt_privileges = 1936, /* opt_privileges */
+ YYSYMBOL_object_privilege_list = 1937, /* object_privilege_list */
+ YYSYMBOL_column_list_privilege = 1938, /* column_list_privilege */
+ YYSYMBOL_column_privilege = 1939, /* column_privilege */
+ YYSYMBOL_object_privilege = 1940, /* object_privilege */
+ YYSYMBOL_opt_and = 1941, /* opt_and */
+ YYSYMBOL_require_list = 1942, /* require_list */
+ YYSYMBOL_require_list_element = 1943, /* require_list_element */
+ YYSYMBOL_grant_ident = 1944, /* grant_ident */
+ YYSYMBOL_user_list = 1945, /* user_list */
+ YYSYMBOL_grant_list = 1946, /* grant_list */
+ YYSYMBOL_user_and_role_list = 1947, /* user_and_role_list */
+ YYSYMBOL_via_or_with = 1948, /* via_or_with */
+ YYSYMBOL_using_or_as = 1949, /* using_or_as */
+ YYSYMBOL_grant_user = 1950, /* grant_user */
+ YYSYMBOL_auth_expression = 1951, /* auth_expression */
+ YYSYMBOL_auth_token = 1952, /* auth_token */
+ YYSYMBOL_opt_auth_str = 1953, /* opt_auth_str */
+ YYSYMBOL_opt_require_clause = 1954, /* opt_require_clause */
+ YYSYMBOL_resource_option = 1955, /* resource_option */
+ YYSYMBOL_resource_option_list = 1956, /* resource_option_list */
+ YYSYMBOL_opt_resource_options = 1957, /* opt_resource_options */
+ YYSYMBOL_opt_grant_options = 1958, /* opt_grant_options */
+ YYSYMBOL_opt_grant_option = 1959, /* opt_grant_option */
+ YYSYMBOL_grant_option_list = 1960, /* grant_option_list */
+ YYSYMBOL_grant_option = 1961, /* grant_option */
+ YYSYMBOL_begin_stmt_mariadb = 1962, /* begin_stmt_mariadb */
+ YYSYMBOL_1963_249 = 1963, /* $@249 */
+ YYSYMBOL_compound_statement = 1964, /* compound_statement */
+ YYSYMBOL_opt_not = 1965, /* opt_not */
+ YYSYMBOL_opt_work = 1966, /* opt_work */
+ YYSYMBOL_opt_chain = 1967, /* opt_chain */
+ YYSYMBOL_opt_release = 1968, /* opt_release */
+ YYSYMBOL_commit = 1969, /* commit */
+ YYSYMBOL_rollback = 1970, /* rollback */
+ YYSYMBOL_savepoint = 1971, /* savepoint */
+ YYSYMBOL_release = 1972, /* release */
+ YYSYMBOL_unit_type_decl = 1973, /* unit_type_decl */
+ YYSYMBOL_union_option = 1974, /* union_option */
+ YYSYMBOL_query_expression_option = 1975, /* query_expression_option */
+ YYSYMBOL_definer_opt = 1976, /* definer_opt */
+ YYSYMBOL_no_definer = 1977, /* no_definer */
+ YYSYMBOL_definer = 1978, /* definer */
+ YYSYMBOL_view_algorithm = 1979, /* view_algorithm */
+ YYSYMBOL_opt_view_suid = 1980, /* opt_view_suid */
+ YYSYMBOL_view_suid = 1981, /* view_suid */
+ YYSYMBOL_view_list_opt = 1982, /* view_list_opt */
+ YYSYMBOL_view_list = 1983, /* view_list */
+ YYSYMBOL_view_select = 1984, /* view_select */
+ YYSYMBOL_1985_250 = 1985, /* $@250 */
+ YYSYMBOL_view_check_option = 1986, /* view_check_option */
+ YYSYMBOL_trigger_action_order = 1987, /* trigger_action_order */
+ YYSYMBOL_trigger_follows_precedes_clause = 1988, /* trigger_follows_precedes_clause */
+ YYSYMBOL_trigger_tail = 1989, /* trigger_tail */
+ YYSYMBOL_1990_251 = 1990, /* $@251 */
+ YYSYMBOL_1991_252 = 1991, /* $@252 */
+ YYSYMBOL_1992_253 = 1992, /* $@253 */
+ YYSYMBOL_1993_254 = 1993, /* $@254 */
+ YYSYMBOL_1994_255 = 1994, /* $@255 */
+ YYSYMBOL_sf_return_type = 1995, /* sf_return_type */
+ YYSYMBOL_1996_256 = 1996, /* $@256 */
+ YYSYMBOL_create_package_chistic = 1997, /* create_package_chistic */
+ YYSYMBOL_create_package_chistics = 1998, /* create_package_chistics */
+ YYSYMBOL_opt_create_package_chistics = 1999, /* opt_create_package_chistics */
+ YYSYMBOL_opt_create_package_chistics_init = 2000, /* opt_create_package_chistics_init */
+ YYSYMBOL_2001_257 = 2001, /* $@257 */
+ YYSYMBOL_xa = 2002, /* xa */
+ YYSYMBOL_opt_format_xid = 2003, /* opt_format_xid */
+ YYSYMBOL_xid = 2004, /* xid */
+ YYSYMBOL_begin_or_start = 2005, /* begin_or_start */
+ YYSYMBOL_opt_join_or_resume = 2006, /* opt_join_or_resume */
+ YYSYMBOL_opt_one_phase = 2007, /* opt_one_phase */
+ YYSYMBOL_opt_suspend = 2008, /* opt_suspend */
+ YYSYMBOL_2009_258 = 2009, /* $@258 */
+ YYSYMBOL_opt_migrate = 2010, /* opt_migrate */
+ YYSYMBOL_install = 2011, /* install */
+ YYSYMBOL_uninstall = 2012, /* uninstall */
+ YYSYMBOL_keep_gcc_happy = 2013, /* keep_gcc_happy */
+ YYSYMBOL__empty = 2014, /* _empty */
+ YYSYMBOL_statement = 2015, /* statement */
+ YYSYMBOL_sp_statement = 2016, /* sp_statement */
+ YYSYMBOL_sp_if_then_statements = 2017, /* sp_if_then_statements */
+ YYSYMBOL_sp_case_then_statements = 2018, /* sp_case_then_statements */
+ YYSYMBOL_sp_tail_is = 2019, /* sp_tail_is */
+ YYSYMBOL_sp_package_function_body = 2020, /* sp_package_function_body */
+ YYSYMBOL_sp_package_procedure_body = 2021, /* sp_package_procedure_body */
+ YYSYMBOL_opt_trailing_sp_name = 2022, /* opt_trailing_sp_name */
+ YYSYMBOL_opt_package_routine_end_name = 2023, /* opt_package_routine_end_name */
+ YYSYMBOL_sf_parameters = 2024, /* sf_parameters */
+ YYSYMBOL_sp_parameters = 2025, /* sp_parameters */
+ YYSYMBOL_sf_returned_type_clause = 2026, /* sf_returned_type_clause */
+ YYSYMBOL_package_implementation_item_declaration = 2027, /* package_implementation_item_declaration */
+ YYSYMBOL_package_implementation_declare_section_list = 2028, /* package_implementation_declare_section_list */
+ YYSYMBOL_package_implementation_declare_section = 2029, /* package_implementation_declare_section */
+ YYSYMBOL_package_implementation_executable_section = 2030, /* package_implementation_executable_section */
+ YYSYMBOL_reserved_keyword_udt_param_type = 2031, /* reserved_keyword_udt_param_type */
+ YYSYMBOL_reserved_keyword_udt = 2032, /* reserved_keyword_udt */
+ YYSYMBOL_keyword_sp_block_section = 2033, /* keyword_sp_block_section */
+ YYSYMBOL_keyword_label = 2034, /* keyword_label */
+ YYSYMBOL_keyword_sp_decl = 2035, /* keyword_sp_decl */
+ YYSYMBOL_opt_truncate_table_storage_clause = 2036, /* opt_truncate_table_storage_clause */
+ YYSYMBOL_ident_for_loop_index = 2037, /* ident_for_loop_index */
+ YYSYMBOL_row_field_name = 2038, /* row_field_name */
+ YYSYMBOL_while_body = 2039, /* while_body */
+ YYSYMBOL_2040_259 = 2040, /* $@259 */
+ YYSYMBOL_for_loop_statements = 2041, /* for_loop_statements */
+ YYSYMBOL_sp_label = 2042, /* sp_label */
+ YYSYMBOL_sp_control_label = 2043, /* sp_control_label */
+ YYSYMBOL_sp_block_label = 2044, /* sp_block_label */
+ YYSYMBOL_sp_opt_default = 2045, /* sp_opt_default */
+ YYSYMBOL_sp_decl_variable_list_anchored = 2046, /* sp_decl_variable_list_anchored */
+ YYSYMBOL_sp_param_name_and_mode = 2047, /* sp_param_name_and_mode */
+ YYSYMBOL_sp_param = 2048, /* sp_param */
+ YYSYMBOL_sp_param_anchored = 2049, /* sp_param_anchored */
+ YYSYMBOL_sf_c_chistics_and_body_standalone = 2050, /* sf_c_chistics_and_body_standalone */
+ YYSYMBOL_2051_260 = 2051, /* $@260 */
+ YYSYMBOL_sp_tail_standalone = 2052, /* sp_tail_standalone */
+ YYSYMBOL_2053_261 = 2053, /* $@261 */
+ YYSYMBOL_2054_262 = 2054, /* $@262 */
+ YYSYMBOL_sp_decls = 2055, /* sp_decls */
+ YYSYMBOL_sp_decl = 2056, /* sp_decl */
+ YYSYMBOL_sp_decl_body = 2057, /* sp_decl_body */
+ YYSYMBOL_2058_263 = 2058, /* $@263 */
+ YYSYMBOL_sp_proc_stmt_in_returns_clause = 2059, /* sp_proc_stmt_in_returns_clause */
+ YYSYMBOL_sp_proc_stmt = 2060, /* sp_proc_stmt */
+ YYSYMBOL_sp_proc_stmt_compound_ok = 2061, /* sp_proc_stmt_compound_ok */
+ YYSYMBOL_sp_labeled_block = 2062, /* sp_labeled_block */
+ YYSYMBOL_2063_264 = 2063, /* $@264 */
+ YYSYMBOL_sp_unlabeled_block = 2064, /* sp_unlabeled_block */
+ YYSYMBOL_2065_265 = 2065, /* $@265 */
+ YYSYMBOL_sp_unlabeled_block_not_atomic = 2066, /* sp_unlabeled_block_not_atomic */
+ YYSYMBOL_2067_266 = 2067, /* $@266 */
+ YYSYMBOL_package_implementation_declare_section_list1 = 2068, /* package_implementation_declare_section_list1 */
+ YYSYMBOL_package_implementation_declare_section_list2 = 2069, /* package_implementation_declare_section_list2 */
+ YYSYMBOL_package_specification_function = 2070, /* package_specification_function */
+ YYSYMBOL_2071_267 = 2071, /* $@267 */
+ YYSYMBOL_package_specification_procedure = 2072, /* package_specification_procedure */
+ YYSYMBOL_2073_268 = 2073, /* $@268 */
+ YYSYMBOL_package_implementation_routine_definition = 2074, /* package_implementation_routine_definition */
+ YYSYMBOL_package_implementation_function_body = 2075, /* package_implementation_function_body */
+ YYSYMBOL_2076_269 = 2076, /* $@269 */
+ YYSYMBOL_package_implementation_procedure_body = 2077, /* package_implementation_procedure_body */
+ YYSYMBOL_2078_270 = 2078, /* $@270 */
+ YYSYMBOL_opt_package_specification_element_list = 2079, /* opt_package_specification_element_list */
+ YYSYMBOL_package_specification_element_list = 2080, /* package_specification_element_list */
+ YYSYMBOL_package_specification_element = 2081, /* package_specification_element */
+ YYSYMBOL_create_routine = 2082, /* create_routine */
+ YYSYMBOL_2083_271 = 2083, /* $@271 */
+ YYSYMBOL_2084_272 = 2084, /* $@272 */
+ YYSYMBOL_2085_273 = 2085, /* $@273 */
+ YYSYMBOL_2086_274 = 2086, /* $@274 */
+ YYSYMBOL_2087_275 = 2087, /* $@275 */
+ YYSYMBOL_2088_276 = 2088 /* $@276 */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
/* Second part of user prologue. */
-#line 330 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 338 "/home/buildbot/git/sql/sql_yacc.yy"
/* avoid unintentional %union size increases, it's what a parser stack made of */
static_assert(sizeof(YYSTYPE) == sizeof(void*)*2+8, "%union size check");
bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
-#line 2324 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 2375 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
#ifdef short
@@ -2642,21 +2693,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 740
+#define YYFINAL 746
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 112981
+#define YYLAST 113010
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 789
+#define YYNTOKENS 793
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 1252
+#define YYNNTS 1296
/* YYNRULES -- Number of rules. */
-#define YYNRULES 3718
+#define YYNRULES 3784
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 6225
+#define YYNSTATES 6350
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 1021
+#define YYMAXUTOK 1025
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -2673,16 +2724,16 @@ static const yytype_int16 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, 783, 2, 2, 2, 772, 767, 2,
- 779, 780, 770, 769, 782, 768, 787, 771, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 788, 786,
- 765, 763, 764, 2, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 787, 2, 2, 2, 775, 770, 2,
+ 783, 784, 773, 772, 786, 771, 791, 774, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 792, 790,
+ 768, 766, 767, 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, 773, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 776, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 784, 766, 785, 774, 2, 2, 2,
+ 2, 2, 2, 788, 769, 789, 777, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2771,386 +2822,393 @@ static const yytype_int16 yytranslate[] =
726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
- 756, 757, 758, 759, 760, 761, 762, 775, 776, 777,
- 778, 781
+ 756, 757, 758, 759, 760, 761, 762, 763, 764, 765,
+ 778, 779, 780, 781, 782, 785
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 1975, 1975, 1985, 1984, 2009, 2016, 2018, 2022, 2023,
- 2024, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037,
- 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047,
- 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057,
- 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067,
- 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077,
- 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
- 2088, 2092, 2099, 2100, 2105, 2104, 2115, 2121, 2123, 2120,
- 2132, 2134, 2133, 2143, 2148, 2160, 2159, 2176, 2175, 2185,
- 2186, 2190, 2194, 2198, 2202, 2206, 2210, 2220, 2225, 2229,
- 2233, 2237, 2241, 2245, 2250, 2254, 2259, 2287, 2291, 2295,
- 2300, 2303, 2305, 2306, 2310, 2316, 2318, 2319, 2323, 2329,
- 2331, 2332, 2336, 2343, 2347, 2362, 2366, 2372, 2378, 2384,
- 2390, 2398, 2402, 2406, 2418, 2421, 2426, 2448, 2460, 2447,
- 2483, 2482, 2538, 2545, 2537, 2557, 2564, 2556, 2577, 2583,
- 2576, 2595, 2601, 2594, 2613, 2612, 2626, 2624, 2640, 2638,
- 2652, 2651, 2662, 2661, 2671, 2678, 2685, 2685, 2688, 2692,
- 2693, 2697, 2698, 2702, 2707, 2713, 2719, 2727, 2733, 2739,
- 2747, 2755, 2763, 2771, 2779, 2787, 2799, 2815, 2815, 2819,
- 2818, 2830, 2831, 2835, 2840, 2845, 2850, 2855, 2860, 2865,
- 2873, 2872, 2905, 2904, 2911, 2918, 2919, 2925, 2931, 2941,
- 2947, 2953, 2955, 2962, 2963, 2967, 2977, 2978, 2986, 2986,
- 3028, 3037, 3038, 3043, 3044, 3045, 3046, 3051, 3056, 3064,
- 3065, 3069, 3070, 3075, 3077, 3079, 3081, 3083, 3085, 3087,
- 3093, 3094, 3098, 3099, 3104, 3103, 3114, 3113, 3124, 3123,
- 3136, 3138, 3141, 3143, 3147, 3151, 3160, 3165, 3165, 3175,
- 3176, 3180, 3188, 3190, 3194, 3195, 3199, 3200, 3201, 3206,
- 3205, 3217, 3221, 3222, 3226, 3227, 3232, 3238, 3244, 3254,
- 3262, 3267, 3275, 3279, 3288, 3286, 3300, 3308, 3313, 3312,
- 3326, 3328, 3333, 3343, 3342, 3361, 3362, 3363, 3364, 3369,
- 3371, 3376, 3391, 3399, 3403, 3423, 3424, 3428, 3432, 3438,
- 3444, 3450, 3456, 3466, 3471, 3479, 3487, 3492, 3498, 3499,
- 3505, 3508, 3512, 3520, 3537, 3539, 3557, 3563, 3565, 3567,
- 3569, 3571, 3573, 3575, 3577, 3579, 3581, 3583, 3585, 3587,
- 3592, 3600, 3616, 3617, 3622, 3628, 3637, 3644, 3653, 3662,
- 3667, 3681, 3683, 3685, 3694, 3699, 3706, 3715, 3724, 3726,
- 3728, 3730, 3732, 3734, 3736, 3738, 3740, 3742, 3744, 3746,
- 3748, 3750, 3755, 3756, 3764, 3776, 3792, 3791, 3802, 3802,
- 3824, 3825, 3830, 3829, 3837, 3848, 3853, 3859, 3858, 3865,
- 3864, 3873, 3878, 3884, 3883, 3890, 3889, 3899, 3907, 3915,
- 3924, 3924, 3947, 3957, 3956, 3977, 3976, 3996, 4002, 4010,
- 4011, 4015, 4016, 4017, 4021, 4029, 4034, 4039, 4047, 4048,
- 4056, 4074, 4090, 4110, 4115, 4109, 4127, 4129, 4130, 4131,
- 4136, 4135, 4206, 4205, 4212, 4217, 4218, 4222, 4223, 4228,
- 4227, 4243, 4242, 4257, 4267, 4271, 4272, 4277, 4278, 4282,
- 4290, 4295, 4302, 4311, 4325, 4333, 4342, 4341, 4349, 4348,
- 4356, 4361, 4368, 4355, 4378, 4377, 4388, 4387, 4397, 4396,
- 4406, 4413, 4405, 4428, 4427, 4439, 4441, 4446, 4448, 4450,
- 4456, 4455, 4458, 4459, 4473, 4474, 4478, 4479, 4489, 4494,
- 4505, 4542, 4543, 4548, 4547, 4563, 4578, 4577, 4599, 4598,
- 4604, 4612, 4611, 4614, 4616, 4619, 4618, 4627, 4630, 4629,
- 4638, 4639, 4645, 4646, 4663, 4664, 4668, 4669, 4673, 4687,
- 4697, 4708, 4717, 4718, 4731, 4733, 4732, 4737, 4735, 4746,
- 4747, 4751, 4765, 4777, 4778, 4791, 4800, 4822, 4823, 4826,
- 4828, 4833, 4832, 4856, 4868, 4884, 4883, 4898, 4897, 4911,
- 4918, 4925, 4945, 4963, 4967, 4994, 5006, 5007, 5012, 5021,
- 5011, 5046, 5047, 5051, 5062, 5081, 5094, 5120, 5121, 5126,
- 5125, 5162, 5171, 5172, 5176, 5177, 5181, 5182, 5190, 5191,
- 5195, 5196, 5200, 5202, 5208, 5214, 5216, 5218, 5220, 5222,
- 5224, 5229, 5230, 5230, 5239, 5251, 5254, 5262, 5265, 5275,
- 5276, 5280, 5281, 5285, 5286, 5290, 5291, 5292, 5301, 5304,
- 5312, 5315, 5322, 5326, 5332, 5334, 5338, 5339, 5343, 5344,
- 5345, 5349, 5364, 5369, 5374, 5379, 5384, 5389, 5394, 5409,
- 5415, 5430, 5435, 5450, 5456, 5474, 5479, 5484, 5489, 5494,
- 5499, 5505, 5504, 5530, 5531, 5532, 5537, 5542, 5547, 5549,
- 5551, 5553, 5559, 5564, 5569, 5573, 5578, 5582, 5589, 5596,
- 5601, 5608, 5610, 5614, 5633, 5641, 5650, 5660, 5671, 5672,
- 5673, 5674, 5675, 5676, 5677, 5681, 5682, 5683, 5687, 5688,
- 5689, 5690, 5695, 5702, 5709, 5710, 5714, 5715, 5716, 5717,
- 5718, 5722, 5724, 5735, 5734, 5742, 5741, 5749, 5748, 5756,
- 5755, 5765, 5762, 5773, 5771, 5780, 5779, 5798, 5806, 5814,
- 5822, 5823, 5827, 5837, 5838, 5842, 5843, 5847, 5852, 5851,
- 5890, 5889, 5902, 5901, 5912, 5913, 5917, 5918, 5922, 5923,
- 5927, 5928, 5932, 5933, 5934, 5935, 5941, 5940, 5948, 5954,
- 5963, 5964, 5969, 5972, 5976, 5980, 5987, 5988, 5992, 5993,
- 5997, 6003, 6009, 6010, 6018, 6017, 6039, 6040, 6050, 6058,
- 6070, 6070, 6073, 6074, 6081, 6088, 6092, 6100, 6101, 6102,
- 6106, 6107, 6108, 6109, 6110, 6111, 6119, 6123, 6124, 6138,
- 6142, 6146, 6150, 6152, 6159, 6161, 6167, 6168, 6169, 6170,
- 6174, 6178, 6183, 6187, 6191, 6195, 6200, 6204, 6211, 6227,
- 6228, 6235, 6242, 6250, 6254, 6258, 6262, 6266, 6270, 6274,
- 6278, 6280, 6282, 6284, 6286, 6288, 6290, 6292, 6299, 6301,
- 6306, 6310, 6311, 6315, 6316, 6320, 6321, 6322, 6323, 6324,
- 6328, 6329, 6330, 6331, 6332, 6336, 6342, 6343, 6348, 6350,
- 6357, 6358, 6359, 6363, 6367, 6368, 6369, 6370, 6371, 6372,
- 6376, 6380, 6381, 6382, 6383, 6386, 6390, 6395, 6396, 6400,
- 6401, 6405, 6406, 6411, 6416, 6420, 6426, 6431, 6439, 6440,
- 6447, 6451, 6455, 6456, 6460, 6461, 6465, 6466, 6470, 6478,
- 6486, 6495, 6499, 6505, 6509, 6510, 6514, 6527, 6533, 6543,
- 6544, 6548, 6555, 6559, 6560, 6564, 6565, 6569, 6578, 6582,
- 6583, 6587, 6595, 6596, 6600, 6601, 6605, 6606, 6607, 6615,
- 6616, 6620, 6624, 6628, 6633, 6634, 6639, 6643, 6649, 6653,
- 6660, 6661, 6666, 6665, 6678, 6679, 6683, 6686, 6687, 6688,
- 6689, 6693, 6701, 6708, 6709, 6713, 6723, 6724, 6728, 6729,
- 6732, 6734, 6738, 6750, 6751, 6755, 6762, 6775, 6776, 6778,
- 6780, 6786, 6791, 6797, 6803, 6810, 6820, 6821, 6822, 6823,
- 6824, 6828, 6829, 6833, 6834, 6838, 6839, 6843, 6844, 6845,
- 6849, 6853, 6865, 6866, 6870, 6871, 6875, 6876, 6880, 6881,
- 6885, 6886, 6890, 6891, 6895, 6896, 6901, 6902, 6903, 6907,
- 6909, 6914, 6919, 6921, 6925, 6929, 6936, 6937, 6941, 6945,
- 6946, 6956, 6957, 6958, 6962, 6963, 6967, 6972, 6980, 6981,
- 6989, 6995, 7007, 7008, 7012, 7014, 7024, 7040, 7023, 7063,
- 7062, 7079, 7078, 7093, 7102, 7101, 7109, 7108, 7116, 7115,
- 7129, 7123, 7137, 7136, 7176, 7175, 7182, 7189, 7197, 7207,
- 7188, 7216, 7220, 7228, 7231, 7235, 7239, 7247, 7249, 7250,
- 7251, 7252, 7256, 7257, 7258, 7259, 7263, 7264, 7276, 7277,
- 7282, 7283, 7286, 7288, 7296, 7304, 7306, 7308, 7309, 7317,
- 7318, 7324, 7333, 7331, 7344, 7357, 7356, 7369, 7367, 7380,
- 7387, 7397, 7398, 7404, 7416, 7415, 7455, 7462, 7466, 7472,
- 7470, 7487, 7489, 7494, 7502, 7501, 7515, 7519, 7518, 7530,
- 7531, 7535, 7548, 7549, 7553, 7557, 7564, 7569, 7573, 7580,
- 7587, 7591, 7596, 7604, 7612, 7622, 7633, 7643, 7654, 7664,
- 7670, 7676, 7683, 7693, 7698, 7704, 7709, 7719, 7724, 7730,
- 7735, 7739, 7744, 7745, 7746, 7751, 7756, 7760, 7770, 7772,
- 7773, 7774, 7775, 7779, 7784, 7792, 7797, 7805, 7806, 7810,
- 7811, 7815, 7815, 7818, 7820, 7824, 7825, 7829, 7830, 7838,
- 7839, 7840, 7844, 7845, 7850, 7859, 7860, 7861, 7862, 7867,
- 7866, 7876, 7875, 7883, 7890, 7900, 7917, 7920, 7927, 7931,
- 7938, 7942, 7946, 7953, 7953, 7959, 7960, 7964, 7965, 7966,
- 7970, 7971, 7980, 7987, 7988, 7993, 7992, 8004, 8005, 8006,
- 8010, 8012, 8011, 8018, 8017, 8038, 8039, 8043, 8044, 8048,
- 8049, 8050, 8054, 8055, 8056, 8061, 8060, 8081, 8082, 8086,
- 8091, 8092, 8099, 8101, 8106, 8108, 8107, 8120, 8122, 8121,
- 8135, 8136, 8141, 8150, 8151, 8152, 8156, 8163, 8173, 8181,
- 8190, 8192, 8191, 8197, 8196, 8219, 8220, 8224, 8225, 8229,
- 8230, 8231, 8232, 8233, 8234, 8238, 8239, 8244, 8243, 8264,
- 8265, 8266, 8271, 8270, 8281, 8288, 8294, 8303, 8304, 8308,
- 8324, 8323, 8336, 8337, 8341, 8342, 8346, 8357, 8368, 8369,
- 8374, 8373, 8388, 8389, 8393, 8394, 8398, 8409, 8421, 8420,
- 8428, 8428, 8437, 8438, 8443, 8444, 8454, 8453, 8468, 8467,
- 8486, 8485, 8502, 8500, 8521, 8522, 8527, 8526, 8540, 8549,
- 8539, 8559, 8571, 8635, 8640, 8655, 8656, 8671, 8670, 8686,
- 8685, 8698, 8700, 8715, 8723, 8721, 8736, 8754, 8756, 8766,
- 8770, 8811, 8820, 8830, 8831, 8835, 8839, 8845, 8852, 8854,
- 8863, 8867, 8871, 8878, 8887, 8891, 8898, 8915, 8918, 8926,
- 8929, 8936, 8940, 8944, 8948, 8955, 8956, 8960, 8961, 8970,
- 8983, 8989, 9000, 9003, 9011, 9014, 9020, 9026, 9035, 9036,
- 9037, 9057, 9062, 9084, 9090, 9096, 9102, 9103, 9104, 9105,
- 9106, 9110, 9111, 9112, 9116, 9117, 9118, 9122, 9123, 9128,
- 9179, 9186, 9229, 9235, 9239, 9245, 9251, 9257, 9263, 9269,
- 9275, 9281, 9287, 9293, 9299, 9305, 9309, 9315, 9324, 9330,
- 9338, 9344, 9353, 9359, 9367, 9377, 9383, 9390, 9397, 9405,
- 9411, 9420, 9424, 9430, 9436, 9442, 9448, 9455, 9461, 9467,
- 9473, 9479, 9486, 9492, 9498, 9504, 9510, 9516, 9522, 9528,
- 9534, 9538, 9539, 9543, 9544, 9548, 9549, 9553, 9554, 9558,
- 9559, 9560, 9561, 9562, 9563, 9567, 9568, 9573, 9576, 9580,
- 9581, 9582, 9586, 9587, 9588, 9589, 9590, 9591, 9595, 9596,
- 9597, 9601, 9606, 9613, 9635, 9642, 9651, 9652, 9653, 9654,
- 9658, 9667, 9668, 9672, 9676, 9677, 9678, 9679, 9680, 9681,
- 9682, 9714, 9715, 9716, 9717, 9718, 9719, 9720, 9721, 9722,
- 9730, 9738, 9739, 9746, 9752, 9757, 9767, 9772, 9777, 9783,
- 9788, 9794, 9805, 9812, 9817, 9822, 9827, 9832, 9837, 9842,
- 9850, 9851, 9852, 9853, 9861, 9862, 9871, 9872, 9878, 9882,
- 9888, 9894, 9903, 9904, 9913, 9920, 9934, 9940, 9946, 9955,
- 9964, 9970, 9976, 9982, 9988, 10003, 10014, 10020, 10026, 10032,
- 10038, 10044, 10052, 10059, 10063, 10069, 10077, 10086, 10087, 10091,
- 10095, 10102, 10106, 10126, 10133, 10139, 10146, 10153, 10159, 10165,
- 10171, 10177, 10184, 10190, 10201, 10208, 10214, 10227, 10232, 10237,
- 10243, 10249, 10254, 10261, 10268, 10276, 10283, 10290, 10297, 10312,
- 10318, 10324, 10333, 10344, 10351, 10357, 10365, 10371, 10377, 10383,
- 10389, 10397, 10409, 10429, 10428, 10504, 10510, 10516, 10522, 10527,
- 10532, 10537, 10542, 10547, 10552, 10572, 10574, 10579, 10580, 10584,
- 10585, 10589, 10590, 10594, 10601, 10609, 10636, 10642, 10648, 10654,
- 10660, 10666, 10675, 10682, 10684, 10681, 10691, 10702, 10708, 10714,
- 10720, 10726, 10732, 10738, 10744, 10750, 10757, 10756, 10777, 10776,
- 10807, 10806, 10820, 10829, 10847, 10849, 10851, 10866, 10873, 10880,
- 10887, 10894, 10901, 10908, 10915, 10922, 10929, 10940, 10947, 10958,
- 10969, 10989, 10988, 10994, 11011, 11017, 11026, 11035, 11045, 11044,
- 11056, 11071, 11084, 11089, 11097, 11098, 11103, 11108, 11111, 11113,
- 11117, 11122, 11130, 11131, 11136, 11143, 11153, 11152, 11169, 11171,
- 11177, 11183, 11189, 11193, 11194, 11195, 11203, 11204, 11205, 11206,
- 11207, 11208, 11209, 11210, 11214, 11215, 11216, 11217, 11224, 11225,
- 11229, 11234, 11242, 11243, 11247, 11254, 11262, 11271, 11281, 11282,
- 11293, 11294, 11306, 11310, 11314, 11322, 11323, 11327, 11331, 11335,
- 11342, 11346, 11351, 11352, 11358, 11357, 11386, 11385, 11401, 11410,
- 11422, 11434, 11435, 11436, 11437, 11442, 11443, 11444, 11445, 11446,
- 11450, 11454, 11458, 11468, 11475, 11483, 11489, 11482, 11535, 11536,
- 11542, 11547, 11561, 11569, 11567, 11587, 11585, 11598, 11610, 11608,
- 11628, 11627, 11639, 11652, 11650, 11671, 11670, 11683, 11697, 11698,
- 11699, 11703, 11704, 11712, 11713, 11717, 11726, 11727, 11728, 11733,
- 11734, 11738, 11739, 11743, 11744, 11748, 11749, 11757, 11765, 11773,
- 11774, 11787, 11803, 11822, 11823, 11828, 11832, 11833, 11834, 11838,
- 11839, 11844, 11843, 11849, 11848, 11856, 11857, 11860, 11862, 11862,
- 11866, 11866, 11871, 11872, 11876, 11878, 11883, 11884, 11888, 11899,
- 11913, 11914, 11915, 11916, 11917, 11918, 11919, 11920, 11921, 11922,
- 11923, 11924, 11928, 11929, 11930, 11931, 11932, 11933, 11934, 11935,
- 11936, 11940, 11941, 11942, 11943, 11946, 11948, 11949, 11953, 11954,
- 11958, 11966, 11968, 11972, 11974, 11973, 11987, 11990, 11989, 12007,
- 12009, 12013, 12018, 12026, 12027, 12044, 12067, 12068, 12074, 12075,
- 12079, 12092, 12091, 12100, 12101, 12110, 12111, 12115, 12116, 12120,
- 12121, 12135, 12136, 12140, 12150, 12159, 12166, 12173, 12183, 12184,
- 12191, 12201, 12202, 12204, 12206, 12208, 12210, 12219, 12223, 12224,
- 12228, 12242, 12243, 12249, 12248, 12259, 12265, 12274, 12275, 12276,
- 12282, 12283, 12288, 12295, 12301, 12306, 12317, 12327, 12338, 12345,
- 12353, 12363, 12364, 12368, 12369, 12373, 12374, 12379, 12386, 12393,
- 12400, 12410, 12415, 12420, 12424, 12430, 12436, 12445, 12453, 12457,
- 12464, 12465, 12469, 12474, 12479, 12492, 12496, 12500, 12504, 12509,
- 12512, 12516, 12530, 12538, 12549, 12551, 12555, 12556, 12560, 12561,
- 12562, 12563, 12564, 12565, 12569, 12570, 12571, 12572, 12573, 12577,
- 12578, 12579, 12580, 12584, 12585, 12586, 12587, 12588, 12592, 12593,
- 12594, 12595, 12596, 12600, 12605, 12606, 12610, 12611, 12615, 12616,
- 12617, 12622, 12621, 12653, 12654, 12658, 12659, 12663, 12673, 12673,
- 12685, 12686, 12689, 12709, 12719, 12724, 12732, 12738, 12749, 12737,
- 12751, 12766, 12778, 12777, 12800, 12799, 12809, 12808, 12831, 12837,
- 12841, 12846, 12845, 12854, 12859, 12865, 12872, 12870, 12881, 12885,
- 12886, 12890, 12902, 12915, 12916, 12920, 12934, 12938, 12947, 12950,
- 12957, 12958, 12966, 12973, 12965, 12986, 12993, 12985, 13004, 13013,
- 13022, 13030, 13031, 13035, 13036, 13040, 13041, 13049, 13049, 13052,
- 13052, 13065, 13066, 13068, 13067, 13080, 13086, 13088, 13092, 13094,
- 13100, 13104, 13105, 13109, 13110, 13114, 13124, 13125, 13129, 13130,
- 13134, 13135, 13139, 13140, 13145, 13144, 13161, 13160, 13176, 13177,
- 13181, 13182, 13186, 13191, 13199, 13207, 13218, 13219, 13228, 13229,
- 13237, 13239, 13241, 13239, 13251, 13263, 13270, 13280, 13299, 13269,
- 13306, 13307, 13311, 13318, 13326, 13327, 13331, 13341, 13342, 13349,
- 13348, 13369, 13372, 13379, 13380, 13390, 13405, 13413, 13426, 13432,
- 13425, 13437, 13443, 13436, 13451, 13455, 13454, 13488, 13489, 13493,
- 13508, 13526, 13527, 13531, 13532, 13536, 13537, 13538, 13543, 13554,
- 13542, 13564, 13566, 13569, 13571, 13574, 13575, 13578, 13582, 13586,
- 13590, 13594, 13598, 13602, 13606, 13610, 13618, 13621, 13631, 13630,
- 13649, 13656, 13664, 13672, 13680, 13688, 13696, 13703, 13710, 13716,
- 13718, 13720, 13729, 13733, 13738, 13737, 13744, 13743, 13750, 13759,
- 13766, 13771, 13776, 13781, 13786, 13791, 13793, 13795, 13797, 13804,
- 13812, 13814, 13822, 13829, 13836, 13844, 13850, 13855, 13863, 13871,
- 13879, 13883, 13887, 13894, 13901, 13908, 13915, 13921, 13927, 13933,
- 13939, 13945, 13953, 13958, 13965, 13972, 13979, 13986, 13993, 14000,
- 14005, 14010, 14015, 14020, 14025, 14037, 14045, 14067, 14069, 14071,
- 14076, 14077, 14080, 14082, 14086, 14087, 14091, 14092, 14096, 14097,
- 14101, 14102, 14106, 14107, 14111, 14112, 14121, 14133, 14132, 14151,
- 14150, 14160, 14161, 14162, 14163, 14164, 14165, 14169, 14170, 14174,
- 14181, 14182, 14184, 14185, 14189, 14190, 14203, 14204, 14205, 14221,
- 14245, 14244, 14256, 14255, 14267, 14272, 14273, 14286, 14289, 14288,
- 14301, 14302, 14307, 14309, 14311, 14313, 14315, 14317, 14325, 14327,
- 14329, 14331, 14336, 14338, 14346, 14348, 14350, 14352, 14354, 14356,
- 14373, 14374, 14378, 14382, 14395, 14394, 14409, 14419, 14420, 14423,
- 14425, 14426, 14430, 14446, 14447, 14452, 14451, 14461, 14462, 14466,
- 14466, 14471, 14470, 14476, 14480, 14481, 14485, 14486, 14493, 14498,
- 14497, 14512, 14511, 14526, 14527, 14528, 14532, 14533, 14534, 14543,
- 14544, 14548, 14552, 14560, 14560, 14565, 14566, 14575, 14587, 14601,
- 14612, 14625, 14586, 14636, 14637, 14641, 14642, 14646, 14647, 14655,
- 14659, 14660, 14661, 14664, 14666, 14670, 14671, 14675, 14680, 14687,
- 14692, 14699, 14701, 14705, 14706, 14710, 14715, 14723, 14724, 14728,
- 14730, 14738, 14739, 14743, 14744, 14745, 14749, 14751, 14756, 14757,
- 14772, 14773, 14777, 14778, 14782, 14795, 14800, 14805, 14810, 14818,
- 14826, 14831, 14839, 14847, 14862, 14869, 14875, 14885, 14886, 14894,
- 14895, 14896, 14897, 14911, 14917, 14923, 14929, 14935, 14941, 14962,
- 14972, 14982, 14988, 14995, 15005, 15012, 15019, 15030, 15029, 15054,
- 15055, 15060, 15061, 15066, 15090, 15093, 15092, 15108, 15112, 15117,
- 15121, 15128, 15134, 15143, 15161, 15162, 15166, 15171, 15179, 15184,
- 15192, 15197, 15202, 15207, 15213, 15218, 15226, 15231, 15236, 15241,
- 15247, 15255, 15256, 15267, 15275, 15279, 15285, 15291, 15301, 15307,
- 15316, 15326, 15327, 15331, 15332, 15333, 15337, 15345, 15346, 15347,
- 15348, 15352, 15361, 15369, 15377, 15385, 15386, 15394, 15395, 15399,
- 15400, 15405, 15414, 15415, 15423, 15424, 15432, 15433, 15434, 15438,
- 15449, 15478, 15487, 15487, 15489, 15499, 15500, 15501, 15502, 15503,
- 15504, 15505, 15506, 15507, 15508, 15509, 15510, 15515, 15516, 15517,
- 15518, 15519, 15520, 15521, 15522, 15523, 15524, 15525, 15526, 15527,
- 15531, 15532, 15533, 15534, 15535, 15536, 15537, 15538, 15539, 15540,
- 15541, 15542, 15543, 15547, 15548, 15549, 15550, 15551, 15552, 15553,
- 15554, 15555, 15556, 15557, 15558, 15559, 15563, 15564, 15565, 15566,
- 15567, 15568, 15569, 15570, 15583, 15584, 15585, 15586, 15587, 15588,
- 15589, 15590, 15591, 15592, 15593, 15594, 15595, 15596, 15597, 15598,
- 15599, 15600, 15601, 15602, 15603, 15604, 15605, 15606, 15607, 15608,
- 15609, 15610, 15611, 15612, 15613, 15614, 15615, 15616, 15617, 15618,
- 15619, 15620, 15621, 15622, 15623, 15624, 15625, 15626, 15627, 15628,
- 15629, 15630, 15631, 15632, 15633, 15634, 15635, 15676, 15677, 15678,
- 15679, 15680, 15681, 15692, 15693, 15694, 15695, 15696, 15697, 15698,
- 15699, 15700, 15701, 15705, 15706, 15707, 15711, 15712, 15713, 15722,
- 15723, 15724, 15725, 15726, 15727, 15728, 15729, 15730, 15731, 15732,
- 15733, 15734, 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742,
- 15743, 15744, 15745, 15746, 15747, 15752, 15757, 15758, 15759, 15760,
- 15761, 15762, 15763, 15764, 15765, 15766, 15767, 15768, 15769, 15770,
- 15771, 15772, 15773, 15774, 15775, 15776, 15777, 15778, 15779, 15780,
- 15781, 15782, 15783, 15784, 15785, 15786, 15787, 15788, 15789, 15790,
- 15791, 15792, 15793, 15794, 15795, 15796, 15797, 15798, 15799, 15800,
- 15805, 15806, 15807, 15808, 15809, 15810, 15811, 15812, 15813, 15814,
- 15815, 15816, 15817, 15818, 15819, 15820, 15821, 15822, 15823, 15824,
- 15825, 15826, 15827, 15828, 15829, 15830, 15831, 15832, 15833, 15834,
- 15835, 15836, 15837, 15838, 15839, 15840, 15841, 15842, 15843, 15844,
- 15845, 15846, 15847, 15848, 15849, 15850, 15851, 15852, 15853, 15854,
- 15855, 15856, 15857, 15858, 15859, 15860, 15861, 15862, 15863, 15864,
- 15865, 15866, 15867, 15868, 15869, 15870, 15871, 15872, 15873, 15874,
- 15875, 15876, 15877, 15878, 15879, 15880, 15881, 15882, 15883, 15884,
- 15885, 15886, 15887, 15888, 15889, 15890, 15891, 15892, 15893, 15894,
- 15895, 15896, 15897, 15898, 15899, 15900, 15901, 15902, 15903, 15904,
- 15905, 15906, 15907, 15908, 15909, 15910, 15911, 15912, 15913, 15914,
- 15915, 15917, 15919, 15920, 15921, 15922, 15923, 15924, 15925, 15926,
+ 0, 2006, 2006, 2016, 2015, 2040, 2047, 2049, 2053, 2054,
+ 2055, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
+ 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
+ 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088,
+ 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098,
+ 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108,
+ 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118,
+ 2119, 2123, 2130, 2131, 2136, 2135, 2146, 2152, 2154, 2151,
+ 2163, 2165, 2164, 2174, 2179, 2191, 2190, 2207, 2206, 2216,
+ 2217, 2221, 2225, 2229, 2233, 2237, 2241, 2251, 2256, 2260,
+ 2264, 2268, 2272, 2276, 2281, 2285, 2290, 2318, 2322, 2326,
+ 2331, 2334, 2336, 2337, 2341, 2347, 2349, 2350, 2354, 2360,
+ 2362, 2363, 2367, 2374, 2378, 2393, 2397, 2403, 2409, 2415,
+ 2421, 2429, 2433, 2437, 2449, 2452, 2457, 2479, 2491, 2478,
+ 2514, 2513, 2569, 2576, 2568, 2588, 2595, 2587, 2608, 2614,
+ 2607, 2626, 2632, 2625, 2644, 2643, 2657, 2655, 2671, 2669,
+ 2683, 2682, 2693, 2692, 2702, 2709, 2716, 2716, 2719, 2723,
+ 2724, 2728, 2729, 2733, 2738, 2744, 2750, 2758, 2764, 2770,
+ 2778, 2786, 2794, 2802, 2810, 2818, 2830, 2846, 2846, 2850,
+ 2849, 2861, 2862, 2866, 2871, 2876, 2881, 2886, 2891, 2896,
+ 2904, 2903, 2936, 2935, 2942, 2949, 2950, 2956, 2962, 2972,
+ 2978, 2984, 2986, 2993, 2994, 2998, 3008, 3009, 3017, 3017,
+ 3059, 3068, 3069, 3074, 3075, 3076, 3077, 3081, 3082, 3086,
+ 3087, 3091, 3096, 3105, 3110, 3118, 3119, 3123, 3124, 3129,
+ 3131, 3133, 3135, 3137, 3139, 3141, 3147, 3148, 3152, 3153,
+ 3158, 3157, 3168, 3167, 3178, 3177, 3190, 3192, 3195, 3197,
+ 3201, 3205, 3214, 3219, 3219, 3229, 3230, 3234, 3242, 3244,
+ 3248, 3249, 3253, 3254, 3255, 3260, 3259, 3271, 3275, 3276,
+ 3280, 3281, 3286, 3292, 3298, 3308, 3316, 3321, 3329, 3333,
+ 3342, 3340, 3355, 3365, 3370, 3369, 3383, 3385, 3390, 3400,
+ 3399, 3428, 3429, 3430, 3431, 3436, 3438, 3443, 3458, 3466,
+ 3470, 3490, 3491, 3495, 3499, 3505, 3511, 3517, 3523, 3533,
+ 3538, 3546, 3554, 3559, 3565, 3566, 3572, 3575, 3579, 3587,
+ 3604, 3606, 3624, 3630, 3632, 3634, 3636, 3638, 3640, 3642,
+ 3644, 3646, 3648, 3650, 3652, 3654, 3659, 3667, 3683, 3684,
+ 3689, 3695, 3704, 3711, 3720, 3729, 3734, 3748, 3750, 3752,
+ 3761, 3766, 3773, 3782, 3791, 3793, 3795, 3797, 3799, 3801,
+ 3803, 3805, 3807, 3809, 3811, 3813, 3815, 3817, 3822, 3823,
+ 3831, 3843, 3859, 3858, 3869, 3869, 3891, 3892, 3897, 3896,
+ 3904, 3915, 3920, 3927, 3926, 3934, 3933, 3943, 3948, 3954,
+ 3953, 3960, 3959, 3969, 3977, 3985, 3994, 3994, 4027, 4037,
+ 4036, 4067, 4066, 4096, 4102, 4110, 4111, 4115, 4116, 4117,
+ 4121, 4129, 4134, 4139, 4147, 4148, 4156, 4174, 4190, 4210,
+ 4215, 4209, 4227, 4229, 4230, 4231, 4236, 4235, 4306, 4305,
+ 4312, 4317, 4318, 4322, 4323, 4328, 4327, 4343, 4342, 4357,
+ 4367, 4371, 4372, 4377, 4378, 4382, 4390, 4395, 4402, 4411,
+ 4425, 4433, 4442, 4441, 4449, 4448, 4456, 4461, 4468, 4455,
+ 4478, 4477, 4488, 4487, 4497, 4496, 4506, 4513, 4505, 4528,
+ 4527, 4539, 4541, 4546, 4548, 4550, 4556, 4555, 4558, 4559,
+ 4573, 4574, 4578, 4579, 4589, 4594, 4605, 4642, 4643, 4648,
+ 4647, 4663, 4678, 4677, 4699, 4698, 4704, 4712, 4711, 4714,
+ 4716, 4719, 4718, 4727, 4730, 4729, 4738, 4739, 4745, 4746,
+ 4763, 4764, 4768, 4769, 4773, 4787, 4797, 4808, 4817, 4818,
+ 4831, 4833, 4832, 4837, 4835, 4846, 4847, 4851, 4865, 4877,
+ 4878, 4891, 4900, 4922, 4923, 4926, 4928, 4933, 4932, 4956,
+ 4968, 4984, 4983, 4998, 4997, 5011, 5018, 5025, 5045, 5063,
+ 5067, 5094, 5106, 5107, 5112, 5121, 5111, 5146, 5147, 5151,
+ 5162, 5181, 5194, 5220, 5221, 5226, 5225, 5262, 5271, 5272,
+ 5276, 5277, 5281, 5282, 5290, 5291, 5295, 5296, 5300, 5302,
+ 5308, 5314, 5316, 5318, 5320, 5322, 5324, 5329, 5330, 5330,
+ 5339, 5351, 5354, 5362, 5365, 5375, 5376, 5380, 5381, 5385,
+ 5386, 5390, 5391, 5392, 5401, 5404, 5411, 5415, 5422, 5426,
+ 5432, 5434, 5438, 5439, 5443, 5444, 5445, 5449, 5464, 5469,
+ 5474, 5479, 5484, 5489, 5494, 5509, 5515, 5530, 5535, 5550,
+ 5556, 5574, 5579, 5584, 5589, 5594, 5599, 5605, 5604, 5630,
+ 5631, 5632, 5637, 5642, 5647, 5649, 5651, 5653, 5659, 5664,
+ 5669, 5673, 5678, 5682, 5689, 5696, 5701, 5709, 5710, 5721,
+ 5722, 5725, 5727, 5731, 5750, 5759, 5769, 5779, 5790, 5791,
+ 5792, 5793, 5794, 5795, 5796, 5800, 5801, 5802, 5806, 5807,
+ 5808, 5809, 5814, 5821, 5828, 5829, 5833, 5834, 5835, 5836,
+ 5837, 5841, 5843, 5854, 5853, 5861, 5860, 5868, 5867, 5875,
+ 5874, 5884, 5881, 5892, 5890, 5899, 5898, 5917, 5925, 5933,
+ 5941, 5942, 5946, 5956, 5957, 5961, 5962, 5966, 5971, 5970,
+ 6009, 6008, 6024, 6023, 6034, 6035, 6039, 6040, 6044, 6045,
+ 6049, 6050, 6054, 6055, 6056, 6057, 6064, 6063, 6071, 6077,
+ 6086, 6087, 6092, 6095, 6099, 6103, 6110, 6111, 6115, 6116,
+ 6120, 6126, 6132, 6133, 6141, 6140, 6162, 6163, 6173, 6181,
+ 6193, 6193, 6196, 6197, 6204, 6211, 6215, 6223, 6224, 6225,
+ 6229, 6230, 6231, 6232, 6233, 6234, 6242, 6246, 6247, 6261,
+ 6265, 6269, 6273, 6275, 6282, 6284, 6290, 6291, 6292, 6293,
+ 6297, 6301, 6306, 6310, 6314, 6318, 6323, 6327, 6334, 6347,
+ 6348, 6355, 6362, 6370, 6374, 6378, 6382, 6386, 6390, 6394,
+ 6398, 6400, 6402, 6404, 6406, 6408, 6410, 6412, 6419, 6421,
+ 6426, 6430, 6431, 6435, 6436, 6440, 6441, 6442, 6443, 6444,
+ 6448, 6449, 6450, 6451, 6452, 6456, 6462, 6463, 6468, 6470,
+ 6477, 6478, 6479, 6483, 6487, 6488, 6489, 6490, 6491, 6492,
+ 6496, 6500, 6501, 6502, 6503, 6506, 6510, 6515, 6516, 6520,
+ 6521, 6525, 6526, 6531, 6537, 6541, 6547, 6552, 6560, 6561,
+ 6568, 6572, 6576, 6577, 6581, 6582, 6586, 6587, 6591, 6599,
+ 6607, 6616, 6620, 6626, 6630, 6631, 6635, 6648, 6654, 6664,
+ 6665, 6669, 6676, 6680, 6681, 6685, 6686, 6690, 6699, 6703,
+ 6704, 6708, 6716, 6717, 6721, 6722, 6726, 6727, 6728, 6736,
+ 6737, 6741, 6745, 6749, 6754, 6755, 6760, 6767, 6776, 6780,
+ 6787, 6788, 6793, 6792, 6805, 6806, 6810, 6813, 6814, 6815,
+ 6816, 6820, 6828, 6835, 6836, 6840, 6850, 6851, 6855, 6856,
+ 6859, 6861, 6865, 6877, 6878, 6882, 6889, 6902, 6903, 6905,
+ 6907, 6913, 6918, 6924, 6930, 6937, 6947, 6948, 6949, 6950,
+ 6951, 6955, 6956, 6960, 6961, 6965, 6966, 6970, 6971, 6972,
+ 6976, 6980, 6992, 6993, 6997, 6998, 7002, 7003, 7007, 7008,
+ 7012, 7013, 7017, 7018, 7022, 7023, 7028, 7029, 7030, 7034,
+ 7036, 7041, 7046, 7048, 7052, 7056, 7063, 7064, 7068, 7072,
+ 7073, 7083, 7084, 7085, 7089, 7090, 7094, 7099, 7107, 7108,
+ 7116, 7122, 7134, 7135, 7139, 7141, 7151, 7167, 7150, 7190,
+ 7189, 7206, 7205, 7220, 7229, 7228, 7236, 7235, 7243, 7242,
+ 7256, 7250, 7264, 7263, 7303, 7302, 7309, 7316, 7324, 7334,
+ 7315, 7343, 7347, 7355, 7358, 7362, 7366, 7374, 7376, 7377,
+ 7378, 7379, 7383, 7384, 7385, 7386, 7390, 7391, 7403, 7404,
+ 7409, 7410, 7413, 7415, 7423, 7432, 7434, 7436, 7437, 7445,
+ 7446, 7452, 7461, 7459, 7472, 7485, 7484, 7497, 7495, 7508,
+ 7515, 7525, 7526, 7532, 7544, 7543, 7583, 7590, 7594, 7600,
+ 7598, 7615, 7617, 7622, 7630, 7629, 7643, 7647, 7646, 7658,
+ 7659, 7663, 7676, 7677, 7681, 7685, 7692, 7697, 7701, 7708,
+ 7715, 7719, 7724, 7732, 7740, 7750, 7761, 7771, 7782, 7792,
+ 7798, 7804, 7811, 7821, 7826, 7832, 7837, 7847, 7853, 7860,
+ 7865, 7869, 7874, 7875, 7876, 7881, 7886, 7890, 7900, 7902,
+ 7906, 7912, 7914, 7915, 7916, 7917, 7921, 7926, 7934, 7939,
+ 7947, 7948, 7952, 7953, 7957, 7957, 7960, 7962, 7966, 7967,
+ 7971, 7972, 7980, 7981, 7982, 7986, 7987, 7992, 8001, 8002,
+ 8003, 8004, 8009, 8008, 8018, 8017, 8025, 8032, 8042, 8059,
+ 8062, 8069, 8073, 8080, 8084, 8088, 8095, 8095, 8101, 8102,
+ 8106, 8107, 8108, 8112, 8113, 8122, 8127, 8132, 8140, 8141,
+ 8146, 8145, 8157, 8158, 8159, 8163, 8165, 8164, 8171, 8170,
+ 8191, 8192, 8196, 8197, 8201, 8202, 8203, 8207, 8208, 8209,
+ 8214, 8213, 8234, 8235, 8239, 8244, 8245, 8252, 8254, 8259,
+ 8261, 8260, 8273, 8275, 8274, 8288, 8289, 8294, 8303, 8304,
+ 8305, 8309, 8316, 8326, 8334, 8343, 8345, 8344, 8350, 8349,
+ 8372, 8373, 8377, 8378, 8382, 8383, 8384, 8385, 8386, 8387,
+ 8391, 8392, 8397, 8396, 8417, 8418, 8419, 8424, 8423, 8434,
+ 8441, 8447, 8456, 8457, 8461, 8477, 8476, 8489, 8490, 8494,
+ 8495, 8499, 8510, 8521, 8522, 8527, 8526, 8541, 8542, 8546,
+ 8547, 8551, 8562, 8574, 8573, 8581, 8581, 8590, 8591, 8596,
+ 8597, 8607, 8606, 8621, 8620, 8639, 8638, 8655, 8653, 8674,
+ 8675, 8680, 8679, 8693, 8702, 8692, 8712, 8724, 8788, 8793,
+ 8808, 8809, 8824, 8823, 8839, 8838, 8851, 8853, 8868, 8876,
+ 8874, 8889, 8907, 8909, 8919, 8923, 8964, 8973, 8983, 8984,
+ 8988, 8992, 8998, 9005, 9007, 9016, 9020, 9024, 9031, 9040,
+ 9044, 9051, 9068, 9071, 9079, 9082, 9089, 9093, 9097, 9101,
+ 9108, 9109, 9113, 9114, 9123, 9136, 9142, 9153, 9156, 9164,
+ 9167, 9173, 9179, 9188, 9189, 9190, 9210, 9215, 9237, 9243,
+ 9249, 9255, 9261, 9270, 9279, 9285, 9286, 9287, 9288, 9289,
+ 9293, 9294, 9295, 9299, 9300, 9301, 9305, 9306, 9311, 9362,
+ 9369, 9412, 9418, 9422, 9428, 9434, 9440, 9446, 9452, 9458,
+ 9464, 9470, 9476, 9482, 9488, 9492, 9498, 9507, 9513, 9521,
+ 9527, 9536, 9542, 9550, 9560, 9566, 9573, 9580, 9588, 9594,
+ 9603, 9607, 9613, 9619, 9625, 9631, 9638, 9644, 9650, 9656,
+ 9662, 9669, 9675, 9681, 9687, 9693, 9699, 9705, 9711, 9717,
+ 9721, 9722, 9726, 9727, 9731, 9732, 9736, 9737, 9741, 9742,
+ 9743, 9744, 9745, 9746, 9750, 9751, 9756, 9759, 9763, 9764,
+ 9765, 9769, 9770, 9771, 9772, 9773, 9774, 9778, 9779, 9780,
+ 9784, 9791, 9798, 9820, 9827, 9836, 9837, 9838, 9839, 9843,
+ 9852, 9853, 9857, 9861, 9862, 9863, 9864, 9865, 9866, 9867,
+ 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9915,
+ 9923, 9924, 9931, 9937, 9942, 9952, 9957, 9962, 9968, 9973,
+ 9981, 9992, 9999, 10004, 10009, 10014, 10019, 10024, 10029, 10037,
+ 10038, 10039, 10040, 10048, 10049, 10058, 10059, 10065, 10069, 10075,
+ 10081, 10090, 10091, 10100, 10107, 10121, 10127, 10135, 10144, 10153,
+ 10160, 10166, 10172, 10178, 10193, 10204, 10210, 10216, 10223, 10229,
+ 10235, 10243, 10250, 10254, 10260, 10268, 10278, 10279, 10283, 10287,
+ 10294, 10298, 10318, 10325, 10331, 10338, 10345, 10351, 10357, 10363,
+ 10369, 10376, 10382, 10393, 10400, 10406, 10419, 10424, 10429, 10435,
+ 10441, 10446, 10453, 10460, 10468, 10475, 10482, 10489, 10504, 10510,
+ 10516, 10525, 10536, 10543, 10549, 10557, 10563, 10569, 10575, 10581,
+ 10589, 10601, 10621, 10620, 10696, 10702, 10708, 10714, 10719, 10724,
+ 10729, 10734, 10739, 10744, 10764, 10766, 10771, 10772, 10776, 10777,
+ 10781, 10782, 10786, 10793, 10801, 10828, 10834, 10840, 10846, 10852,
+ 10858, 10867, 10874, 10876, 10873, 10883, 10894, 10900, 10906, 10912,
+ 10918, 10924, 10930, 10936, 10942, 10949, 10948, 10969, 10968, 10999,
+ 10998, 11012, 11021, 11039, 11041, 11043, 11058, 11065, 11072, 11079,
+ 11086, 11093, 11100, 11107, 11114, 11121, 11132, 11139, 11150, 11161,
+ 11181, 11180, 11186, 11203, 11209, 11218, 11227, 11237, 11236, 11248,
+ 11263, 11276, 11281, 11289, 11290, 11295, 11300, 11303, 11305, 11309,
+ 11314, 11322, 11323, 11328, 11335, 11345, 11344, 11361, 11363, 11370,
+ 11377, 11384, 11388, 11389, 11390, 11398, 11399, 11400, 11401, 11402,
+ 11403, 11404, 11405, 11409, 11410, 11411, 11412, 11419, 11420, 11424,
+ 11429, 11437, 11438, 11442, 11449, 11457, 11466, 11476, 11477, 11488,
+ 11489, 11501, 11505, 11509, 11517, 11518, 11522, 11526, 11530, 11537,
+ 11541, 11546, 11547, 11553, 11552, 11581, 11580, 11596, 11605, 11617,
+ 11629, 11630, 11631, 11632, 11637, 11638, 11639, 11640, 11641, 11645,
+ 11649, 11653, 11663, 11670, 11678, 11684, 11677, 11730, 11731, 11737,
+ 11742, 11756, 11764, 11762, 11782, 11780, 11793, 11805, 11803, 11823,
+ 11822, 11834, 11847, 11845, 11866, 11865, 11878, 11892, 11893, 11894,
+ 11898, 11899, 11907, 11908, 11912, 11921, 11922, 11923, 11928, 11929,
+ 11933, 11934, 11938, 11939, 11943, 11944, 11952, 11960, 11968, 11969,
+ 11982, 11998, 12017, 12018, 12023, 12027, 12028, 12029, 12033, 12034,
+ 12039, 12038, 12044, 12043, 12051, 12052, 12055, 12057, 12057, 12061,
+ 12061, 12066, 12067, 12071, 12073, 12078, 12079, 12083, 12094, 12108,
+ 12109, 12110, 12111, 12112, 12113, 12114, 12115, 12116, 12117, 12118,
+ 12119, 12123, 12124, 12125, 12126, 12127, 12128, 12129, 12130, 12131,
+ 12135, 12136, 12137, 12138, 12141, 12143, 12144, 12148, 12149, 12153,
+ 12161, 12163, 12167, 12169, 12168, 12182, 12185, 12184, 12202, 12204,
+ 12208, 12213, 12221, 12222, 12239, 12262, 12263, 12269, 12270, 12274,
+ 12287, 12286, 12295, 12296, 12305, 12306, 12310, 12311, 12315, 12316,
+ 12330, 12331, 12335, 12345, 12354, 12361, 12368, 12378, 12379, 12386,
+ 12396, 12397, 12399, 12401, 12403, 12405, 12414, 12418, 12419, 12423,
+ 12437, 12438, 12444, 12443, 12454, 12460, 12469, 12470, 12471, 12477,
+ 12478, 12483, 12490, 12496, 12501, 12512, 12522, 12533, 12540, 12548,
+ 12558, 12559, 12563, 12564, 12568, 12569, 12574, 12581, 12588, 12595,
+ 12605, 12610, 12615, 12619, 12625, 12631, 12640, 12648, 12652, 12659,
+ 12660, 12664, 12669, 12674, 12687, 12691, 12695, 12699, 12704, 12707,
+ 12711, 12720, 12728, 12739, 12741, 12745, 12746, 12750, 12751, 12752,
+ 12753, 12754, 12755, 12759, 12760, 12761, 12762, 12763, 12767, 12768,
+ 12769, 12770, 12774, 12775, 12776, 12777, 12778, 12782, 12783, 12784,
+ 12785, 12786, 12790, 12795, 12796, 12800, 12801, 12805, 12806, 12807,
+ 12812, 12811, 12843, 12844, 12848, 12849, 12853, 12863, 12863, 12875,
+ 12876, 12879, 12899, 12909, 12914, 12922, 12928, 12940, 12927, 12942,
+ 12957, 12970, 12969, 12992, 12991, 13001, 13000, 13023, 13029, 13033,
+ 13038, 13037, 13046, 13051, 13057, 13064, 13062, 13073, 13077, 13078,
+ 13082, 13094, 13107, 13108, 13112, 13126, 13130, 13138, 13142, 13149,
+ 13150, 13158, 13165, 13157, 13178, 13185, 13177, 13196, 13205, 13214,
+ 13222, 13223, 13227, 13228, 13232, 13233, 13241, 13241, 13244, 13244,
+ 13257, 13258, 13260, 13259, 13272, 13278, 13280, 13284, 13286, 13292,
+ 13296, 13297, 13301, 13302, 13306, 13316, 13317, 13321, 13322, 13326,
+ 13327, 13331, 13332, 13337, 13336, 13353, 13352, 13368, 13369, 13373,
+ 13374, 13378, 13383, 13391, 13399, 13410, 13411, 13420, 13421, 13429,
+ 13431, 13433, 13431, 13443, 13455, 13462, 13472, 13499, 13461, 13506,
+ 13507, 13511, 13518, 13526, 13527, 13531, 13541, 13542, 13549, 13548,
+ 13568, 13571, 13578, 13580, 13579, 13595, 13625, 13638, 13633, 13651,
+ 13662, 13650, 13667, 13678, 13666, 13686, 13690, 13689, 13723, 13724,
+ 13728, 13729, 13733, 13734, 13735, 13740, 13751, 13739, 13761, 13763,
+ 13766, 13768, 13771, 13772, 13775, 13779, 13783, 13787, 13791, 13795,
+ 13799, 13803, 13807, 13815, 13818, 13828, 13827, 13846, 13853, 13861,
+ 13869, 13877, 13885, 13893, 13900, 13907, 13913, 13915, 13917, 13926,
+ 13930, 13935, 13934, 13941, 13940, 13947, 13956, 13963, 13968, 13973,
+ 13978, 13983, 13988, 13990, 13992, 13994, 14001, 14009, 14011, 14019,
+ 14026, 14033, 14041, 14047, 14052, 14060, 14068, 14076, 14080, 14084,
+ 14091, 14098, 14105, 14112, 14118, 14124, 14130, 14136, 14142, 14150,
+ 14155, 14162, 14169, 14176, 14183, 14190, 14197, 14202, 14207, 14212,
+ 14217, 14222, 14234, 14242, 14264, 14266, 14268, 14273, 14274, 14277,
+ 14279, 14283, 14284, 14288, 14289, 14293, 14294, 14298, 14299, 14303,
+ 14304, 14308, 14309, 14318, 14330, 14329, 14348, 14347, 14357, 14358,
+ 14359, 14360, 14361, 14362, 14366, 14367, 14371, 14378, 14379, 14381,
+ 14382, 14386, 14387, 14400, 14401, 14402, 14418, 14442, 14441, 14453,
+ 14452, 14464, 14469, 14470, 14483, 14486, 14485, 14498, 14499, 14504,
+ 14506, 14508, 14510, 14512, 14514, 14522, 14524, 14526, 14528, 14533,
+ 14535, 14543, 14545, 14547, 14549, 14551, 14553, 14570, 14571, 14575,
+ 14579, 14592, 14591, 14606, 14616, 14617, 14620, 14622, 14623, 14627,
+ 14643, 14644, 14649, 14648, 14658, 14659, 14663, 14663, 14668, 14667,
+ 14673, 14677, 14678, 14682, 14683, 14690, 14695, 14694, 14709, 14708,
+ 14723, 14724, 14725, 14729, 14730, 14731, 14740, 14741, 14745, 14749,
+ 14757, 14757, 14762, 14763, 14772, 14784, 14798, 14809, 14822, 14783,
+ 14833, 14834, 14838, 14839, 14843, 14844, 14852, 14856, 14857, 14858,
+ 14861, 14863, 14867, 14868, 14872, 14877, 14884, 14889, 14896, 14898,
+ 14902, 14903, 14907, 14912, 14920, 14921, 14925, 14927, 14935, 14936,
+ 14940, 14941, 14942, 14946, 14948, 14953, 14954, 14969, 14970, 14974,
+ 14975, 14979, 14992, 14997, 15002, 15009, 15017, 15025, 15030, 15038,
+ 15046, 15061, 15068, 15074, 15084, 15085, 15093, 15094, 15095, 15096,
+ 15110, 15116, 15122, 15128, 15134, 15140, 15163, 15173, 15183, 15189,
+ 15196, 15206, 15213, 15220, 15231, 15230, 15255, 15256, 15261, 15262,
+ 15267, 15291, 15294, 15293, 15309, 15313, 15318, 15322, 15329, 15335,
+ 15344, 15362, 15363, 15367, 15372, 15380, 15385, 15393, 15398, 15403,
+ 15408, 15414, 15419, 15427, 15432, 15437, 15442, 15448, 15456, 15457,
+ 15468, 15476, 15480, 15486, 15492, 15502, 15508, 15517, 15527, 15528,
+ 15532, 15533, 15534, 15538, 15546, 15547, 15548, 15549, 15553, 15562,
+ 15570, 15578, 15586, 15587, 15595, 15596, 15600, 15601, 15606, 15615,
+ 15616, 15624, 15625, 15633, 15634, 15635, 15639, 15650, 15679, 15688,
+ 15688, 15690, 15700, 15701, 15702, 15703, 15704, 15705, 15706, 15707,
+ 15708, 15709, 15710, 15711, 15716, 15717, 15718, 15719, 15720, 15721,
+ 15722, 15723, 15724, 15725, 15726, 15727, 15728, 15732, 15733, 15734,
+ 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742, 15743, 15744,
+ 15748, 15749, 15750, 15751, 15752, 15753, 15754, 15755, 15756, 15757,
+ 15758, 15759, 15760, 15764, 15765, 15766, 15767, 15768, 15769, 15770,
+ 15771, 15784, 15785, 15786, 15787, 15788, 15789, 15790, 15791, 15792,
+ 15793, 15794, 15795, 15796, 15797, 15798, 15799, 15800, 15801, 15802,
+ 15803, 15804, 15805, 15806, 15807, 15808, 15809, 15810, 15811, 15812,
+ 15813, 15814, 15815, 15816, 15817, 15818, 15819, 15820, 15821, 15822,
+ 15823, 15824, 15825, 15826, 15827, 15828, 15829, 15830, 15831, 15832,
+ 15833, 15834, 15835, 15836, 15877, 15878, 15879, 15880, 15881, 15882,
+ 15893, 15894, 15895, 15896, 15897, 15898, 15899, 15900, 15901, 15902,
+ 15906, 15907, 15908, 15912, 15913, 15914, 15923, 15924, 15925, 15926,
15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934, 15935, 15936,
15937, 15938, 15939, 15940, 15941, 15942, 15943, 15944, 15945, 15946,
- 15947, 15948, 15949, 15950, 15951, 15952, 15953, 15954, 15955, 15956,
- 15957, 15958, 15959, 15960, 15961, 15962, 15963, 15964, 15965, 15966,
- 15967, 15968, 15969, 15970, 15971, 15972, 15973, 15974, 15975, 15976,
- 15977, 15978, 15979, 15980, 15981, 15982, 15983, 15984, 15985, 15986,
- 15987, 15988, 15989, 15990, 15991, 15992, 15993, 15994, 15995, 15996,
- 15997, 15998, 15999, 16000, 16001, 16002, 16003, 16004, 16005, 16006,
- 16007, 16008, 16009, 16010, 16011, 16012, 16013, 16014, 16015, 16016,
- 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026,
- 16027, 16028, 16029, 16030, 16031, 16032, 16033, 16034, 16035, 16036,
- 16037, 16038, 16039, 16040, 16041, 16042, 16043, 16044, 16045, 16046,
- 16047, 16048, 16049, 16050, 16051, 16052, 16053, 16054, 16055, 16056,
- 16057, 16058, 16059, 16060, 16061, 16062, 16063, 16064, 16068, 16069,
- 16075, 16076, 16077, 16078, 16079, 16080, 16081, 16082, 16083, 16084,
- 16085, 16086, 16087, 16088, 16089, 16091, 16093, 16094, 16095, 16096,
- 16098, 16100, 16101, 16102, 16103, 16104, 16105, 16110, 16111, 16112,
- 16113, 16114, 16115, 16116, 16117, 16118, 16119, 16120, 16121, 16122,
- 16123, 16124, 16125, 16126, 16127, 16128, 16129, 16130, 16131, 16132,
- 16133, 16134, 16135, 16136, 16137, 16138, 16139, 16140, 16141, 16142,
- 16143, 16144, 16145, 16146, 16147, 16148, 16149, 16150, 16151, 16152,
- 16153, 16154, 16155, 16156, 16157, 16158, 16159, 16160, 16161, 16162,
- 16163, 16164, 16165, 16166, 16167, 16168, 16169, 16170, 16171, 16172,
- 16173, 16174, 16175, 16176, 16177, 16178, 16179, 16180, 16181, 16182,
- 16183, 16184, 16185, 16186, 16187, 16188, 16189, 16190, 16191, 16192,
- 16193, 16194, 16195, 16196, 16197, 16198, 16199, 16200, 16201, 16202,
- 16203, 16204, 16205, 16206, 16207, 16208, 16209, 16210, 16211, 16212,
- 16213, 16214, 16215, 16216, 16217, 16218, 16219, 16220, 16221, 16222,
- 16223, 16224, 16225, 16226, 16227, 16228, 16229, 16233, 16234, 16235,
- 16236, 16237, 16238, 16239, 16240, 16241, 16242, 16243, 16244, 16245,
- 16246, 16247, 16248, 16249, 16250, 16251, 16252, 16253, 16254, 16255,
- 16256, 16257, 16258, 16259, 16260, 16261, 16262, 16263, 16264, 16265,
- 16266, 16267, 16268, 16269, 16270, 16271, 16272, 16273, 16274, 16275,
- 16276, 16277, 16278, 16279, 16280, 16281, 16282, 16283, 16284, 16285,
- 16286, 16287, 16288, 16289, 16290, 16291, 16292, 16293, 16294, 16295,
- 16296, 16297, 16298, 16299, 16300, 16301, 16302, 16303, 16304, 16305,
- 16306, 16307, 16308, 16309, 16310, 16311, 16312, 16313, 16314, 16315,
- 16316, 16317, 16318, 16319, 16320, 16321, 16322, 16323, 16324, 16325,
- 16326, 16327, 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
- 16336, 16337, 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345,
- 16346, 16347, 16359, 16358, 16371, 16372, 16374, 16373, 16385, 16384,
- 16391, 16389, 16409, 16410, 16415, 16416, 16418, 16417, 16431, 16432,
- 16438, 16437, 16442, 16446, 16447, 16448, 16452, 16453, 16454, 16455,
- 16459, 16460, 16461, 16462, 16471, 16470, 16484, 16483, 16498, 16497,
- 16515, 16514, 16528, 16527, 16541, 16540, 16556, 16555, 16569, 16568,
- 16582, 16581, 16594, 16593, 16611, 16610, 16622, 16621, 16633, 16632,
- 16643, 16661, 16672, 16679, 16688, 16710, 16726, 16738, 16737, 16751,
- 16750, 16762, 16761, 16775, 16776, 16777, 16778, 16782, 16801, 16819,
- 16820, 16824, 16825, 16826, 16827, 16832, 16837, 16842, 16853, 16854,
- 16855, 16861, 16867, 16879, 16878, 16892, 16893, 16899, 16908, 16909,
- 16913, 16914, 16918, 16937, 16938, 16939, 16944, 16945, 16950, 16949,
- 16967, 16966, 16978, 16987, 16997, 16996, 17039, 17040, 17044, 17045,
- 17049, 17050, 17051, 17052, 17054, 17053, 17066, 17067, 17068, 17069,
- 17070, 17076, 17081, 17086, 17091, 17095, 17100, 17109, 17111, 17116,
- 17121, 17127, 17133, 17138, 17150, 17151, 17155, 17156, 17160, 17165,
- 17173, 17182, 17203, 17203, 17205, 17207, 17211, 17212, 17219, 17221,
- 17225, 17230, 17237, 17241, 17250, 17257, 17258, 17259, 17260, 17264,
- 17265, 17266, 17267, 17268, 17269, 17270, 17271, 17272, 17273, 17274,
- 17275, 17276, 17277, 17278, 17279, 17280, 17281, 17282, 17283, 17284,
- 17285, 17286, 17287, 17288, 17289, 17290, 17291, 17292, 17293, 17294,
- 17295, 17296, 17297, 17298, 17299, 17300, 17301, 17302, 17303, 17304,
- 17305, 17309, 17310, 17314, 17315, 17319, 17326, 17333, 17343, 17352,
- 17358, 17365, 17373, 17378, 17386, 17391, 17399, 17404, 17411, 17411,
- 17412, 17412, 17415, 17421, 17427, 17432, 17439, 17445, 17452, 17461,
- 17465, 17471, 17479, 17481, 17485, 17489, 17493, 17500, 17505, 17510,
- 17515, 17520, 17528, 17529, 17533, 17534, 17539, 17540, 17544, 17545,
- 17549, 17550, 17554, 17555, 17560, 17559, 17569, 17578, 17579, 17583,
- 17584, 17589, 17590, 17591, 17596, 17597, 17598, 17602, 17614, 17623,
- 17629, 17638, 17647, 17660, 17662, 17664, 17672, 17673, 17674, 17678,
- 17679, 17685, 17686, 17687, 17688, 17689, 17690, 17691, 17701, 17702,
- 17707, 17720, 17734, 17735, 17736, 17740, 17741, 17745, 17746, 17751,
- 17752, 17756, 17762, 17771, 17771, 17785, 17786, 17787, 17788, 17798,
- 17800, 17806, 17812, 17822, 17831, 17837, 17842, 17846, 17820, 17895,
- 17895, 17910, 17914, 17918, 17922, 17926, 17930, 17938, 17939, 17955,
- 17962, 17969, 17982, 17983, 17984, 17988, 17989, 17990, 17994, 17995,
- 18000, 18002, 18001, 18007, 18008, 18012, 18017, 18024, 18029, 18038,
- 18044, 18052, 18056, 18060, 18064, 18068, 18069, 18070, 18074, 18075,
- 18080, 18081, 18087, 18088, 18089, 18090, 18091, 18092, 18093, 18097,
- 18098, 18099, 18100, 18101, 18102, 18103, 18104, 18105, 18106, 18107,
- 18108, 18112, 18117, 18121, 18130, 18129, 18142, 18147, 18151, 18155,
- 18164, 18165, 18169, 18177, 18188, 18193, 18197, 18202, 18207, 18211,
- 18218, 18224, 18229, 18239, 18238, 18253, 18261, 18252, 18273, 18278,
- 18283, 18293, 18292, 18303, 18301, 18315, 18313, 18325, 18336, 18340,
- 18352, 18357, 18358, 18365, 18367, 18366, 18394, 18395, 18396, 18397,
- 18398, 18402, 18403, 18404, 18405, 18406, 18407, 18408, 18409, 18413,
- 18414, 18415, 18416, 18423, 18421, 18438, 18437, 18452, 18451
+ 15947, 15948, 15953, 15958, 15959, 15960, 15961, 15962, 15963, 15964,
+ 15965, 15966, 15967, 15968, 15969, 15970, 15971, 15972, 15973, 15974,
+ 15975, 15976, 15977, 15978, 15979, 15980, 15981, 15982, 15983, 15984,
+ 15985, 15986, 15987, 15988, 15989, 15990, 15991, 15992, 15993, 15994,
+ 15995, 15996, 15997, 15998, 15999, 16000, 16001, 16006, 16007, 16008,
+ 16009, 16010, 16011, 16012, 16013, 16014, 16015, 16016, 16017, 16018,
+ 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026, 16027, 16028,
+ 16029, 16030, 16031, 16032, 16033, 16034, 16035, 16036, 16037, 16038,
+ 16039, 16040, 16041, 16042, 16043, 16044, 16045, 16046, 16047, 16048,
+ 16049, 16050, 16051, 16052, 16053, 16054, 16055, 16056, 16057, 16058,
+ 16059, 16060, 16061, 16062, 16063, 16064, 16065, 16066, 16067, 16068,
+ 16069, 16070, 16071, 16072, 16073, 16074, 16075, 16076, 16077, 16078,
+ 16079, 16080, 16081, 16082, 16083, 16084, 16085, 16086, 16087, 16088,
+ 16089, 16090, 16091, 16092, 16093, 16094, 16095, 16096, 16097, 16098,
+ 16099, 16100, 16101, 16102, 16103, 16104, 16105, 16106, 16107, 16108,
+ 16109, 16110, 16111, 16112, 16113, 16114, 16115, 16116, 16118, 16120,
+ 16121, 16122, 16123, 16124, 16125, 16126, 16127, 16128, 16129, 16130,
+ 16131, 16132, 16133, 16134, 16135, 16136, 16137, 16138, 16139, 16140,
+ 16141, 16142, 16143, 16144, 16145, 16146, 16147, 16148, 16149, 16150,
+ 16151, 16152, 16153, 16154, 16155, 16156, 16157, 16158, 16159, 16160,
+ 16161, 16162, 16163, 16164, 16165, 16166, 16167, 16168, 16169, 16170,
+ 16171, 16172, 16173, 16174, 16175, 16176, 16177, 16178, 16179, 16180,
+ 16181, 16182, 16183, 16184, 16185, 16186, 16187, 16188, 16189, 16190,
+ 16191, 16192, 16193, 16194, 16195, 16196, 16197, 16198, 16199, 16200,
+ 16201, 16202, 16203, 16204, 16205, 16206, 16207, 16208, 16209, 16210,
+ 16211, 16212, 16213, 16214, 16215, 16216, 16217, 16218, 16219, 16220,
+ 16221, 16222, 16223, 16224, 16225, 16226, 16227, 16228, 16229, 16230,
+ 16231, 16232, 16233, 16234, 16235, 16236, 16237, 16238, 16239, 16240,
+ 16241, 16242, 16243, 16244, 16245, 16246, 16247, 16248, 16249, 16250,
+ 16251, 16252, 16253, 16254, 16255, 16256, 16257, 16258, 16259, 16260,
+ 16261, 16262, 16263, 16264, 16265, 16266, 16270, 16271, 16277, 16278,
+ 16279, 16280, 16281, 16282, 16283, 16284, 16285, 16286, 16287, 16288,
+ 16289, 16290, 16291, 16293, 16295, 16296, 16297, 16298, 16300, 16302,
+ 16303, 16304, 16305, 16306, 16307, 16312, 16313, 16314, 16315, 16316,
+ 16317, 16318, 16319, 16320, 16321, 16322, 16323, 16324, 16325, 16326,
+ 16327, 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335, 16336,
+ 16337, 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345, 16346,
+ 16347, 16348, 16349, 16350, 16351, 16352, 16353, 16354, 16355, 16356,
+ 16357, 16358, 16359, 16360, 16361, 16362, 16363, 16364, 16365, 16366,
+ 16367, 16368, 16369, 16370, 16371, 16372, 16373, 16374, 16375, 16376,
+ 16377, 16378, 16379, 16380, 16381, 16382, 16383, 16384, 16385, 16386,
+ 16387, 16388, 16389, 16390, 16391, 16392, 16393, 16394, 16395, 16396,
+ 16397, 16398, 16399, 16400, 16401, 16402, 16403, 16404, 16405, 16406,
+ 16407, 16408, 16409, 16410, 16411, 16412, 16413, 16414, 16415, 16416,
+ 16417, 16418, 16419, 16420, 16421, 16422, 16423, 16424, 16425, 16426,
+ 16427, 16428, 16429, 16430, 16431, 16435, 16436, 16437, 16438, 16439,
+ 16440, 16441, 16442, 16443, 16444, 16445, 16446, 16447, 16448, 16449,
+ 16450, 16451, 16452, 16453, 16454, 16455, 16456, 16457, 16458, 16459,
+ 16460, 16461, 16462, 16463, 16464, 16465, 16466, 16467, 16468, 16469,
+ 16470, 16471, 16472, 16473, 16474, 16475, 16476, 16477, 16478, 16479,
+ 16480, 16481, 16482, 16483, 16484, 16485, 16486, 16487, 16488, 16489,
+ 16490, 16491, 16492, 16493, 16494, 16495, 16496, 16497, 16498, 16499,
+ 16500, 16501, 16502, 16503, 16504, 16505, 16506, 16507, 16508, 16509,
+ 16510, 16511, 16512, 16513, 16514, 16515, 16516, 16517, 16518, 16519,
+ 16520, 16521, 16522, 16523, 16524, 16525, 16526, 16527, 16528, 16529,
+ 16530, 16531, 16532, 16533, 16534, 16535, 16536, 16537, 16538, 16539,
+ 16540, 16541, 16542, 16543, 16544, 16545, 16546, 16547, 16548, 16549,
+ 16561, 16560, 16573, 16574, 16576, 16575, 16587, 16586, 16593, 16591,
+ 16611, 16612, 16617, 16618, 16620, 16619, 16633, 16634, 16640, 16639,
+ 16644, 16648, 16649, 16650, 16654, 16655, 16656, 16657, 16661, 16662,
+ 16663, 16664, 16673, 16672, 16687, 16686, 16701, 16700, 16718, 16717,
+ 16732, 16731, 16746, 16745, 16762, 16761, 16776, 16775, 16790, 16789,
+ 16803, 16802, 16828, 16827, 16839, 16838, 16851, 16850, 16861, 16879,
+ 16890, 16901, 16911, 16933, 16949, 16961, 16960, 16975, 16974, 16986,
+ 16985, 16999, 17000, 17001, 17002, 17006, 17025, 17043, 17044, 17048,
+ 17049, 17050, 17051, 17056, 17061, 17066, 17077, 17090, 17096, 17103,
+ 17104, 17105, 17112, 17111, 17125, 17126, 17132, 17141, 17142, 17146,
+ 17147, 17151, 17170, 17171, 17172, 17177, 17178, 17183, 17182, 17200,
+ 17199, 17211, 17220, 17230, 17229, 17272, 17273, 17277, 17278, 17282,
+ 17283, 17284, 17285, 17287, 17286, 17299, 17300, 17301, 17302, 17303,
+ 17309, 17314, 17319, 17324, 17328, 17333, 17342, 17344, 17349, 17354,
+ 17360, 17366, 17371, 17383, 17384, 17388, 17389, 17393, 17398, 17406,
+ 17415, 17436, 17436, 17439, 17440, 17444, 17445, 17452, 17454, 17458,
+ 17463, 17470, 17474, 17483, 17490, 17491, 17492, 17493, 17497, 17498,
+ 17499, 17500, 17501, 17502, 17503, 17504, 17505, 17506, 17507, 17508,
+ 17509, 17510, 17511, 17512, 17513, 17514, 17515, 17516, 17517, 17518,
+ 17519, 17520, 17521, 17522, 17523, 17524, 17525, 17526, 17527, 17528,
+ 17529, 17530, 17531, 17532, 17533, 17534, 17535, 17536, 17537, 17538,
+ 17539, 17543, 17544, 17548, 17549, 17553, 17560, 17567, 17577, 17586,
+ 17592, 17599, 17607, 17612, 17620, 17625, 17633, 17638, 17645, 17645,
+ 17646, 17646, 17649, 17655, 17661, 17666, 17673, 17679, 17686, 17695,
+ 17699, 17705, 17713, 17715, 17719, 17723, 17727, 17734, 17739, 17744,
+ 17749, 17754, 17762, 17763, 17767, 17768, 17773, 17774, 17778, 17779,
+ 17783, 17784, 17788, 17789, 17794, 17793, 17803, 17812, 17813, 17817,
+ 17818, 17823, 17824, 17825, 17830, 17831, 17832, 17836, 17848, 17857,
+ 17863, 17872, 17881, 17894, 17896, 17898, 17906, 17907, 17908, 17912,
+ 17913, 17919, 17920, 17921, 17922, 17923, 17924, 17925, 17935, 17936,
+ 17941, 17954, 17968, 17969, 17970, 17974, 17975, 17979, 17980, 17985,
+ 17986, 17990, 17996, 18005, 18005, 18019, 18020, 18021, 18022, 18032,
+ 18034, 18040, 18046, 18056, 18065, 18071, 18076, 18080, 18054, 18129,
+ 18129, 18142, 18144, 18149, 18150, 18154, 18155, 18159, 18159, 18166,
+ 18170, 18174, 18178, 18182, 18186, 18194, 18195, 18211, 18218, 18225,
+ 18238, 18239, 18240, 18244, 18245, 18246, 18250, 18251, 18256, 18258,
+ 18257, 18263, 18264, 18268, 18273, 18280, 18285, 18294, 18300, 18308,
+ 18312, 18316, 18320, 18324, 18328, 18332, 18336, 18340, 18341, 18345,
+ 18349, 18353, 18357, 18364, 18365, 18366, 18372, 18376, 18384, 18385,
+ 18386, 18390, 18391, 18396, 18397, 18403, 18404, 18405, 18406, 18407,
+ 18408, 18409, 18413, 18414, 18415, 18416, 18417, 18418, 18419, 18420,
+ 18421, 18422, 18423, 18424, 18428, 18433, 18437, 18446, 18445, 18458,
+ 18463, 18467, 18471, 18480, 18481, 18497, 18506, 18518, 18523, 18527,
+ 18532, 18537, 18541, 18548, 18554, 18559, 18569, 18568, 18583, 18591,
+ 18582, 18604, 18608, 18620, 18625, 18626, 18633, 18635, 18634, 18662,
+ 18663, 18664, 18665, 18666, 18670, 18671, 18672, 18673, 18674, 18675,
+ 18676, 18677, 18681, 18682, 18683, 18684, 18691, 18689, 18706, 18705,
+ 18720, 18719, 19178, 19179, 19185, 19186, 19194, 19193, 19214, 19213,
+ 19233, 19242, 19251, 19257, 19256, 19276, 19275, 19295, 19296, 19300,
+ 19301, 19305, 19312, 19433, 19432, 19443, 19441, 19457, 19455, 19469,
+ 19478, 19476, 19496, 19509, 19494
};
#endif
@@ -3318,20 +3376,21 @@ static const char *const yytname[] =
"SERIAL_SYM", "SESSION_SYM", "SERVER_SYM", "SETVAL_SYM", "SHARE_SYM",
"SHUTDOWN", "SIGNED_SYM", "SIMPLE_SYM", "SKIP_SYM", "SLAVE", "SLAVES",
"SLAVE_POS_SYM", "SLOW", "SNAPSHOT_SYM", "SOCKET_SYM", "SOFT_SYM",
- "SONAME_SYM", "SOUNDS_SYM", "SOURCE_SYM", "SQL_BUFFER_RESULT",
- "SQL_CACHE_SYM", "SQL_CALC_FOUND_ROWS", "SQL_NO_CACHE_SYM", "SQL_THREAD",
- "STAGE_SYM", "STARTS_SYM", "START_SYM", "STATEMENT_SYM", "STATUS_SYM",
- "STOP_SYM", "STORAGE_SYM", "STORED_SYM", "STRING_SYM",
- "SUBCLASS_ORIGIN_SYM", "SUBDATE_SYM", "SUBJECT_SYM", "SUBPARTITIONS_SYM",
- "SUBPARTITION_SYM", "SUPER_SYM", "SUSPEND_SYM", "SWAPS_SYM",
- "SWITCHES_SYM", "SYSTEM", "SYSTEM_TIME_SYM", "TABLES", "TABLESPACE",
- "TABLE_CHECKSUM_SYM", "TABLE_NAME_SYM", "TEMPORARY", "TEMPTABLE_SYM",
- "TEXT_SYM", "THAN_SYM", "TIES_SYM", "TIMESTAMP", "TIMESTAMP_ADD",
- "TIMESTAMP_DIFF", "TIME_SYM", "TRANSACTION_SYM", "TRANSACTIONAL_SYM",
- "THREADS_SYM", "TRIGGERS_SYM", "TRIM_ORACLE", "TRUNCATE_SYM", "TYPE_SYM",
- "UDF_RETURNS_SYM", "UNBOUNDED_SYM", "UNCOMMITTED_SYM", "UNDEFINED_SYM",
- "UNDOFILE_SYM", "UNDO_BUFFER_SIZE_SYM", "UNICODE_SYM", "UNINSTALL_SYM",
- "UNKNOWN_SYM", "UNTIL_SYM", "UPGRADE_SYM", "USER_SYM", "USE_FRM",
+ "SONAME_SYM", "SOUNDS_SYM", "SOURCE_SYM", "SQL_AFTER_GTIDS_SYM",
+ "SQL_BEFORE_GTIDS_SYM", "SQL_BUFFER_RESULT", "SQL_CACHE_SYM",
+ "SQL_CALC_FOUND_ROWS", "SQL_NO_CACHE_SYM", "SQL_THREAD", "STAGE_SYM",
+ "STARTS_SYM", "START_SYM", "STATEMENT_SYM", "STATUS_SYM", "STOP_SYM",
+ "STORAGE_SYM", "STORED_SYM", "STRING_SYM", "SUBCLASS_ORIGIN_SYM",
+ "SUBDATE_SYM", "SUBJECT_SYM", "SUBPARTITIONS_SYM", "SUBPARTITION_SYM",
+ "SUPER_SYM", "SUSPEND_SYM", "SWAPS_SYM", "SWITCHES_SYM", "SYSTEM",
+ "SYSTEM_TIME_SYM", "TABLES", "TABLESPACE", "TABLE_CHECKSUM_SYM",
+ "TABLE_NAME_SYM", "TEMPORARY", "TEMPTABLE_SYM", "TEXT_SYM", "THAN_SYM",
+ "TIES_SYM", "TIMESTAMP", "TIMESTAMP_ADD", "TIMESTAMP_DIFF", "TIME_SYM",
+ "TRANSACTION_SYM", "TRANSACTIONAL_SYM", "THREADS_SYM", "TRIGGERS_SYM",
+ "TRIM_ORACLE", "TRUNCATE_SYM", "TYPE_SYM", "UDF_RETURNS_SYM",
+ "UNBOUNDED_SYM", "UNCOMMITTED_SYM", "UNDEFINED_SYM", "UNDOFILE_SYM",
+ "UNDO_BUFFER_SIZE_SYM", "UNICODE_SYM", "UNINSTALL_SYM", "UNKNOWN_SYM",
+ "UNTIL_SYM", "UPGRADE_SYM", "USER_SYM", "USE_FRM", "VALIDATION_SYM",
"VALUE_SYM", "VARCHAR2_MARIADB_SYM", "VARCHAR2_ORACLE_SYM", "VARIABLES",
"VERSIONING_SYM", "VIA_SYM", "VIEW_SYM", "VISIBLE_SYM", "VIRTUAL_SYM",
"WAIT_SYM", "WARNINGS", "WEEK_SYM", "WEIGHT_STRING_SYM", "WINDOW_SYM",
@@ -3340,51 +3399,52 @@ static const char *const yytname[] =
"PREC_BELOW_NOT", "'='", "'>'", "'<'", "'|'", "'&'", "'-'", "'+'", "'*'",
"'/'", "'%'", "'^'", "'~'", "SUBQUERY_AS_EXPR",
"PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE", "USER",
- "PREC_BELOW_CONTRACTION_TOKEN2", "'('", "')'", "EMPTY_FROM_CLAUSE",
- "','", "'!'", "'{'", "'}'", "';'", "'.'", "':'", "$accept", "query",
- "$@1", "opt_end_of_input", "directly_executable_statement",
- "verb_clause", "deallocate", "deallocate_or_drop", "prepare", "$@2",
- "execute", "$@3", "$@4", "execute_using", "$@5", "execute_params",
- "help", "$@6", "change", "$@7", "master_defs", "master_def",
- "ignore_server_id_list", "ignore_server_id", "do_domain_id_list",
- "do_domain_id", "ignore_domain_id_list", "ignore_domain_id",
- "master_file_def", "optional_connection_name", "connection_name",
- "optional_for_channel", "for_channel", "create", "$@8", "$@9", "$@10",
- "$@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "$@18", "$@19",
- "$@20", "$@21", "$@22", "$@23", "$@24", "opt_sequence", "sequence_defs",
- "sequence_def", "force_lookahead", "server_def", "$@25",
- "server_options_list", "server_option", "event_tail", "$@26",
- "ev_schedule_time", "$@27", "opt_ev_status", "ev_starts", "ev_ends",
- "opt_ev_on_completion", "ev_on_completion", "opt_ev_comment",
- "ev_sql_stmt", "$@28", "clear_privileges", "opt_aggregate", "sp_handler",
- "sp_name", "sp_a_chistics", "sp_c_chistics", "sp_chistic",
- "sp_c_chistic", "sp_suid", "call", "$@29", "$@30", "$@31",
- "opt_sp_cparam_list", "opt_sp_cparams", "sp_cparams", "sp_fdparam_list",
- "$@32", "sp_fdparams", "sp_param_name", "sp_pdparam_list", "sp_pdparams",
- "sp_parameter_type", "sp_parenthesized_pdparam_list", "$@33",
- "sp_parenthesized_fdparam_list", "sp_proc_stmts", "sp_proc_stmts1",
- "optionally_qualified_column_ident", "row_field_definition",
- "row_field_definition_list", "row_type_body", "sp_decl_idents_init_vars",
- "sp_decl_variable_list", "$@34", "sp_decl_handler", "$@35",
- "opt_parenthesized_cursor_formal_parameters", "sp_cursor_stmt_lex",
- "sp_cursor_stmt", "$@36", "sp_handler_type", "sp_hcond_list",
- "sp_hcond_element", "sp_cond", "sqlstate", "opt_value", "sp_hcond",
- "raise_stmt_oracle", "signal_stmt", "signal_value", "opt_signal_value",
- "opt_set_signal_information", "signal_information_item_list",
- "signal_allowed_expr", "signal_condition_information_item_name",
- "resignal_stmt", "get_diagnostics", "which_area",
- "diagnostics_information", "statement_information",
- "statement_information_item", "simple_target_specification",
- "statement_information_item_name", "condition_number",
- "condition_information", "condition_information_item",
- "condition_information_item_name", "sp_decl_ident", "sp_decl_idents",
- "sp_proc_stmt_if", "$@37", "sp_proc_stmt_statement", "$@38",
- "RETURN_ALLMODES_SYM", "sp_proc_stmt_return", "$@39",
- "sp_proc_stmt_exit_oracle", "$@40", "$@41",
- "sp_proc_stmt_continue_oracle", "$@42", "$@43", "sp_proc_stmt_leave",
- "sp_proc_stmt_iterate", "sp_proc_stmt_goto_oracle", "expr_lex", "@44",
- "assignment_source_lex", "assignment_source_expr", "$@45",
- "for_loop_bound_expr", "$@46", "cursor_actual_parameters",
+ "PREC_BELOW_SP_OBJECT_TYPE", "PREC_BELOW_CONTRACTION_TOKEN2", "'('",
+ "')'", "EMPTY_FROM_CLAUSE", "','", "'!'", "'{'", "'}'", "';'", "'.'",
+ "':'", "$accept", "query", "$@1", "opt_end_of_input",
+ "directly_executable_statement", "verb_clause", "deallocate",
+ "deallocate_or_drop", "prepare", "$@2", "execute", "$@3", "$@4",
+ "execute_using", "$@5", "execute_params", "help", "$@6", "change", "$@7",
+ "master_defs", "master_def", "ignore_server_id_list", "ignore_server_id",
+ "do_domain_id_list", "do_domain_id", "ignore_domain_id_list",
+ "ignore_domain_id", "master_file_def", "optional_connection_name",
+ "connection_name", "optional_for_channel", "for_channel", "create",
+ "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16",
+ "$@17", "$@18", "$@19", "$@20", "$@21", "$@22", "$@23", "$@24",
+ "opt_sequence", "sequence_defs", "sequence_def", "force_lookahead",
+ "server_def", "$@25", "server_options_list", "server_option",
+ "event_tail", "$@26", "ev_schedule_time", "$@27", "opt_ev_status",
+ "ev_starts", "ev_ends", "opt_ev_on_completion", "ev_on_completion",
+ "opt_ev_comment", "ev_sql_stmt", "$@28", "clear_privileges",
+ "opt_aggregate", "sp_handler", "sp_handler_package_spec",
+ "sp_handler_package_body", "drop_routine", "sp_name", "sp_a_chistics",
+ "sp_c_chistics", "sp_chistic", "sp_c_chistic", "sp_suid", "call", "$@29",
+ "$@30", "$@31", "opt_sp_cparam_list", "opt_sp_cparams", "sp_cparams",
+ "sp_fdparam_list", "$@32", "sp_fdparams", "sp_param_name",
+ "sp_pdparam_list", "sp_pdparams", "sp_parameter_type",
+ "sp_parenthesized_pdparam_list", "$@33", "sp_parenthesized_fdparam_list",
+ "sp_proc_stmts", "sp_proc_stmts1", "optionally_qualified_column_ident",
+ "row_field_definition", "row_field_definition_list", "row_type_body",
+ "sp_decl_idents_init_vars", "sp_decl_variable_list", "$@34",
+ "sp_decl_handler", "$@35", "opt_parenthesized_cursor_formal_parameters",
+ "sp_cursor_stmt_lex", "sp_cursor_stmt", "$@36", "sp_handler_type",
+ "sp_hcond_list", "sp_hcond_element", "sp_cond", "sqlstate", "opt_value",
+ "sp_hcond", "raise_stmt_oracle", "signal_stmt", "signal_value",
+ "opt_signal_value", "opt_set_signal_information",
+ "signal_information_item_list", "signal_allowed_expr",
+ "signal_condition_information_item_name", "resignal_stmt",
+ "get_diagnostics", "which_area", "diagnostics_information",
+ "statement_information", "statement_information_item",
+ "simple_target_specification", "statement_information_item_name",
+ "condition_number", "condition_information",
+ "condition_information_item", "condition_information_item_name",
+ "sp_decl_ident", "sp_decl_idents", "sp_proc_stmt_if", "$@37",
+ "sp_proc_stmt_statement", "$@38", "RETURN_ALLMODES_SYM",
+ "sp_proc_stmt_return", "$@39", "sp_proc_stmt_exit_oracle", "$@40",
+ "$@41", "sp_proc_stmt_continue_oracle", "$@42", "$@43",
+ "sp_proc_stmt_leave", "sp_proc_stmt_iterate", "sp_proc_stmt_goto_oracle",
+ "expr_lex", "@44", "assignment_source_lex", "assignment_source_expr",
+ "$@45", "for_loop_bound_expr", "$@46", "cursor_actual_parameters",
"opt_parenthesized_cursor_actual_parameters", "sp_proc_stmt_with_cursor",
"sp_proc_stmt_open", "sp_proc_stmt_fetch_head", "sp_proc_stmt_fetch",
"sp_proc_stmt_close", "sp_fetch_list", "sp_if", "$@47", "$@48",
@@ -3417,30 +3477,30 @@ static const char *const yytname[] =
"create_database_option", "opt_if_not_exists_table_element",
"opt_if_not_exists", "create_or_replace", "opt_create_table_options",
"create_table_options_space_separated", "create_table_options",
- "create_table_option", "$@80", "engine_defined_option",
- "opt_versioning_option", "versioning_option", "default_charset",
- "default_collation", "storage_engines", "known_storage_engines",
- "row_types", "merge_insert_types", "udf_type", "create_field_list",
- "create_field_list_parens", "field_list", "field_list_item",
- "column_def", "key_def", "$@81", "$@82", "$@83", "$@84", "$@85", "$@86",
- "$@87", "constraint_def", "period_for_system_time",
- "period_for_application_time", "opt_check_constraint",
- "check_constraint", "opt_constraint_no_id", "opt_constraint",
- "constraint", "field_spec", "@88", "field_type_or_serial", "$@89",
- "$@90", "opt_serial_attribute", "opt_serial_attribute_list",
- "opt_asrow_attribute", "opt_asrow_attribute_list", "field_def", "$@91",
- "opt_generated_always", "vcol_opt_specifier", "vcol_opt_attribute",
- "vcol_opt_attribute_list", "vcol_attribute", "parse_vcol_expr", "$@92",
- "parenthesized_expr", "virtual_column_func", "expr_or_literal",
- "column_default_expr", "field_type", "qualified_field_type", "udt_name",
- "field_type_all", "field_type_numeric", "opt_binary_and_compression",
- "field_type_string", "field_type_temporal", "field_type_lob",
- "field_type_misc", "char", "nchar", "varchar", "nvarchar", "int_type",
- "real_type", "srid_option", "float_options", "precision",
- "field_options", "last_field_options", "field_length_str",
- "field_length", "field_scale", "opt_field_length", "opt_field_scale",
- "opt_precision", "attribute_list", "attribute", "opt_compression_method",
- "opt_compressed", "opt_enable", "compressed",
+ "create_table_option", "$@80", "engine_defined_option", "ident_options",
+ "keyword_options", "opt_versioning_option", "versioning_option",
+ "default_charset", "default_collation", "storage_engines",
+ "known_storage_engines", "row_types", "merge_insert_types", "udf_type",
+ "create_field_list", "create_field_list_parens", "field_list",
+ "field_list_item", "column_def", "key_def", "$@81", "$@82", "$@83",
+ "$@84", "$@85", "$@86", "$@87", "constraint_def",
+ "period_for_system_time", "period_for_application_time",
+ "opt_check_constraint", "check_constraint", "opt_constraint_no_id",
+ "opt_constraint", "constraint", "field_spec", "@88",
+ "field_type_or_serial", "$@89", "$@90", "opt_serial_attribute",
+ "opt_serial_attribute_list", "opt_asrow_attribute",
+ "opt_asrow_attribute_list", "field_def", "$@91", "opt_generated_always",
+ "vcol_opt_specifier", "vcol_opt_attribute", "vcol_opt_attribute_list",
+ "vcol_attribute", "parse_vcol_expr", "$@92", "parenthesized_expr",
+ "virtual_column_func", "expr_or_literal", "column_default_expr",
+ "field_type", "qualified_field_type", "udt_name", "field_type_all",
+ "field_type_numeric", "opt_binary_and_compression", "field_type_string",
+ "field_type_temporal", "field_type_lob", "field_type_misc", "char",
+ "nchar", "varchar", "nvarchar", "int_type", "real_type", "srid_option",
+ "float_options", "precision", "field_options", "last_field_options",
+ "field_length_str", "field_length", "field_scale", "opt_field_length",
+ "opt_field_scale", "opt_precision", "attribute_list", "attribute",
+ "opt_compression_method", "opt_compressed", "opt_enable", "compressed",
"compressed_deprecated_data_type_attribute",
"compressed_deprecated_column_attribute", "asrow_attribute",
"serial_attribute", "with_or_without_system", "charset", "charset_name",
@@ -3469,7 +3529,7 @@ static const char *const yytname[] =
"remove_partitioning", "all_or_alt_part_name_list", "add_partition_rule",
"$@111", "add_part_extra", "reorg_partition_rule", "$@112",
"reorg_parts_rule", "$@113", "alt_part_name_list", "alt_part_name_item",
- "alter_list", "add_column", "alter_list_item",
+ "alter_list", "add_column", "alter_list_item", "opt_without_validation",
"opt_index_lock_algorithm", "alter_algorithm_option",
"alter_lock_option", "opt_column", "opt_ignore", "alter_options",
"$@114", "alter_options_part2", "alter_option_list", "alter_option",
@@ -3507,23 +3567,24 @@ static const char *const yytname[] =
"opt_for_system_time_clause", "system_time_expr", "select_option_list",
"select_option", "select_lock_type", "opt_select_lock_type",
"opt_lock_wait_timeout_new", "select_item_list", "select_item",
- "remember_tok_start", "remember_name", "remember_end", "select_alias",
- "opt_default_time_precision", "opt_time_precision", "optional_braces",
- "expr", "boolean_test", "predicate", "bit_expr", "or", "and", "not",
- "not2", "comp_op", "all_or_any", "opt_dyncol_type", "dyncol_type",
- "numeric_dyncol_type", "temporal_dyncol_type", "string_dyncol_type",
- "dyncall_create_element", "dyncall_create_list", "plsql_cursor_attr",
- "explicit_cursor_attr", "trim_operands", "trim_operands_regular",
- "trim_operands_special", "column_default_non_parenthesized_expr",
- "primary_expr", "string_factor_expr", "simple_expr",
- "mysql_concatenation_expr", "function_call_keyword_timestamp",
- "function_call_keyword", "substring_operands",
- "substring_operands_regular", "substring_operands_special",
- "function_call_nonkeyword", "function_call_conflict",
- "function_call_generic", "@142", "fulltext_options",
- "opt_natural_language_mode", "opt_query_expansion", "opt_udf_expr_list",
- "udf_expr_list", "udf_expr", "sum_expr", "$@143", "$@144", "$@145",
- "$@146", "$@147", "window_func_expr", "window_func",
+ "remember_tok_start", "remember_name", "remember_end",
+ "remember_cpp_ptr", "remember_start_opt", "remember_end_opt",
+ "remember_lex", "select_alias", "opt_default_time_precision",
+ "opt_time_precision", "optional_braces", "expr", "boolean_test",
+ "predicate", "bit_expr", "or", "and", "not", "not2", "comp_op",
+ "all_or_any", "opt_dyncol_type", "dyncol_type", "numeric_dyncol_type",
+ "temporal_dyncol_type", "string_dyncol_type", "dyncall_create_element",
+ "dyncall_create_list", "plsql_cursor_attr", "explicit_cursor_attr",
+ "trim_operands", "trim_operands_regular", "trim_operands_special",
+ "column_default_non_parenthesized_expr", "primary_expr",
+ "string_factor_expr", "simple_expr", "mysql_concatenation_expr",
+ "function_call_keyword_timestamp", "function_call_keyword",
+ "substring_operands", "substring_operands_regular",
+ "substring_operands_special", "function_call_nonkeyword",
+ "function_call_conflict", "function_call_generic", "@142",
+ "fulltext_options", "opt_natural_language_mode", "opt_query_expansion",
+ "opt_udf_expr_list", "udf_expr_list", "udf_expr", "sum_expr", "$@143",
+ "$@144", "$@145", "$@146", "$@147", "window_func_expr", "window_func",
"simple_window_func", "inverse_distribution_function",
"percentile_function", "$@148", "inverse_distribution_function_def",
"order_by_single_element_list", "window_name", "variable", "$@149",
@@ -3585,26 +3646,26 @@ static const char *const yytname[] =
"update_table_list", "update", "$@188", "$@189", "$@190", "update_list",
"update_elem", "insert_update_list", "insert_update_elem",
"opt_low_priority", "delete", "$@191", "opt_delete_system_time",
- "delete_part2", "delete_single_table", "delete_single_table_for_period",
- "single_multi", "$@192", "$@193", "$@194", "$@195", "opt_returning",
- "$@196", "table_wild_list", "table_wild_one", "opt_wild",
- "opt_delete_options", "opt_delete_option", "truncate", "$@197", "$@198",
+ "delete_part2", "$@192", "delete_single_table",
+ "delete_single_table_for_period", "single_multi", "$@193", "$@194",
+ "$@195", "$@196", "$@197", "opt_returning", "$@198", "opt_wild",
+ "opt_delete_options", "opt_delete_option", "truncate", "$@199", "$@200",
"opt_table_sym", "opt_profile_defs", "profile_defs", "profile_def",
- "opt_profile_args", "show", "$@199", "show_param", "$@200", "$@201",
+ "opt_profile_args", "show", "$@201", "show_param", "$@202", "$@203",
"show_engine_param", "master_or_binary", "opt_storage", "opt_db",
"opt_full", "from_or_in", "binlog_in", "binlog_from", "wild_and_where",
- "describe", "$@202", "$@203", "explainable_command", "describe_command",
+ "describe", "$@204", "$@205", "explainable_command", "describe_command",
"analyze_stmt_command", "opt_extended_describe", "opt_format_json",
- "opt_describe_column", "explain_for_connection", "flush", "$@204",
- "flush_options", "$@205", "opt_flush_lock", "flush_lock", "$@206",
+ "opt_describe_column", "explain_for_connection", "flush", "$@206",
+ "flush_options", "$@207", "opt_flush_lock", "flush_lock", "$@208",
"flush_options_list", "flush_option", "opt_table_list", "backup",
- "backup_statements", "$@207", "opt_delete_gtid_domain",
+ "backup_statements", "$@209", "opt_delete_gtid_domain",
"delete_domain_id_list", "delete_domain_id",
- "optional_flush_tables_arguments", "reset", "$@208", "reset_options",
- "reset_option", "$@209", "$@210", "slave_reset_options",
- "master_reset_options", "purge", "$@211", "kill", "$@212", "kill_type",
- "kill_option", "opt_connection", "kill_expr", "shutdown", "$@213",
- "shutdown_option", "use", "load", "$@214", "$@215", "$@216", "$@217",
+ "optional_flush_tables_arguments", "reset", "$@210", "reset_options",
+ "reset_option", "$@211", "$@212", "slave_reset_options",
+ "master_reset_options", "purge", "$@213", "kill", "$@214", "kill_type",
+ "kill_option", "opt_connection", "kill_expr", "shutdown", "$@215",
+ "shutdown_option", "use", "load", "$@216", "$@217", "$@218", "$@219",
"data_or_xml", "opt_local", "load_data_lock", "opt_duplicate",
"opt_field_term", "field_term_list", "field_term", "opt_line_term",
"line_term_list", "line_term", "opt_xml_rows_identified_by",
@@ -3612,8 +3673,8 @@ static const char *const yytname[] =
"fields_or_vars", "field_or_var", "opt_load_data_set_spec",
"load_data_set_list", "load_data_set_elem", "text_literal",
"text_string", "hex_or_bin_String", "param_marker", "signed_literal",
- "literal", "NUM_literal", "temporal_literal", "with_clause", "$@218",
- "opt_recursive", "with_list", "with_list_element", "opt_cycle", "$@219",
+ "literal", "NUM_literal", "temporal_literal", "with_clause", "$@220",
+ "opt_recursive", "with_list", "with_list_element", "opt_cycle", "$@221",
"opt_with_column_list", "with_column_list", "ident_sys_alloc",
"comma_separated_ident_list", "with_element_head", "insert_ident",
"table_wild", "select_sublist_qualified_asterisk", "order_ident",
@@ -3629,21 +3690,21 @@ static const char *const yytname[] =
"keyword_set_special_case", "keyword_sysvar_type", "keyword_data_type",
"keyword_cast_type", "keyword_func_sp_var_and_label",
"keyword_func_sp_var_not_label", "keyword_sp_var_and_label",
- "reserved_keyword_udt_not_param_type", "set", "$@220", "set_param",
- "$@221", "$@222", "$@223", "set_stmt_option_list",
- "start_option_value_list_following_option_type", "$@224",
- "option_value_list", "option_value", "$@225", "option_type",
- "opt_var_type", "opt_var_ident_type", "set_stmt_option", "$@226",
- "$@227", "$@228", "option_value_following_option_type", "$@229", "$@230",
- "$@231", "option_value_no_option_type", "$@232", "$@233", "$@234",
- "$@235", "$@236", "$@237", "$@238", "$@239", "$@240", "$@241",
+ "reserved_keyword_udt_not_param_type", "set", "$@222", "set_param",
+ "$@223", "$@224", "$@225", "set_stmt_option_list",
+ "start_option_value_list_following_option_type", "$@226",
+ "option_value_list", "option_value", "$@227", "option_type",
+ "opt_var_type", "opt_var_ident_type", "set_stmt_option", "$@228",
+ "$@229", "$@230", "option_value_following_option_type", "$@231", "$@232",
+ "$@233", "option_value_no_option_type", "$@234", "$@235", "$@236",
+ "$@237", "$@238", "$@239", "$@240", "$@241", "$@242", "$@243",
"transaction_characteristics", "transaction_access_mode",
"isolation_level", "transaction_access_mode_types", "isolation_types",
- "text_or_password", "set_expr_or_default", "lock", "$@242",
- "opt_lock_wait_timeout", "table_or_tables", "table_lock_list",
- "table_lock", "lock_option", "unlock", "$@243", "handler", "$@244",
- "handler_tail", "$@245", "handler_read_or_scan", "handler_scan_function",
- "handler_rkey_function", "$@246", "handler_rkey_mode", "revoke",
+ "text_or_password", "set_expr_or_default", "set_expr_misc", "lock",
+ "$@244", "opt_lock_wait_timeout", "table_or_tables", "table_lock_list",
+ "table_lock", "lock_option", "unlock", "$@245", "handler", "$@246",
+ "handler_tail", "$@247", "handler_read_or_scan", "handler_scan_function",
+ "handler_rkey_function", "$@248", "handler_rkey_mode", "revoke",
"revoke_command", "admin_option_for_role", "grant", "grant_command",
"opt_with_admin", "opt_with_admin_option", "role_list", "current_role",
"role_name", "grant_role", "opt_table", "grant_privileges",
@@ -3654,31 +3715,49 @@ static const char *const yytname[] =
"auth_expression", "auth_token", "opt_auth_str", "opt_require_clause",
"resource_option", "resource_option_list", "opt_resource_options",
"opt_grant_options", "opt_grant_option", "grant_option_list",
- "grant_option", "begin_stmt_mariadb", "$@247", "compound_statement",
+ "grant_option", "begin_stmt_mariadb", "$@249", "compound_statement",
"opt_not", "opt_work", "opt_chain", "opt_release", "commit", "rollback",
"savepoint", "release", "unit_type_decl", "union_option",
"query_expression_option", "definer_opt", "no_definer", "definer",
"view_algorithm", "opt_view_suid", "view_suid", "view_list_opt",
- "view_list", "view_select", "$@248", "view_check_option",
+ "view_list", "view_select", "$@250", "view_check_option",
"trigger_action_order", "trigger_follows_precedes_clause",
- "trigger_tail", "$@249", "$@250", "$@251", "$@252", "$@253",
- "sf_return_type", "$@254", "xa", "opt_format_xid", "xid",
- "begin_or_start", "opt_join_or_resume", "opt_one_phase", "opt_suspend",
- "$@255", "opt_migrate", "install", "uninstall", "keep_gcc_happy",
- "_empty", "statement", "sp_statement", "sp_if_then_statements",
- "sp_case_then_statements", "reserved_keyword_udt_param_type",
- "reserved_keyword_udt", "keyword_sp_block_section", "keyword_label",
- "keyword_sp_decl", "opt_truncate_table_storage_clause",
- "ident_for_loop_index", "row_field_name", "while_body", "$@256",
- "for_loop_statements", "sp_label", "sp_control_label", "sp_block_label",
- "sp_opt_default", "sp_decl_variable_list_anchored",
- "sp_param_name_and_mode", "sp_param", "sp_param_anchored",
- "sf_c_chistics_and_body_standalone", "$@257", "sp_tail_standalone",
- "$@258", "$@259", "drop_routine", "create_routine", "$@260", "$@261",
- "$@262", "sp_decls", "sp_decl", "sp_decl_body", "$@263",
- "sp_proc_stmt_in_returns_clause", "sp_proc_stmt",
- "sp_proc_stmt_compound_ok", "sp_labeled_block", "$@264",
- "sp_unlabeled_block", "$@265", "sp_unlabeled_block_not_atomic", "$@266", YY_NULLPTR
+ "trigger_tail", "$@251", "$@252", "$@253", "$@254", "$@255",
+ "sf_return_type", "$@256", "create_package_chistic",
+ "create_package_chistics", "opt_create_package_chistics",
+ "opt_create_package_chistics_init", "$@257", "xa", "opt_format_xid",
+ "xid", "begin_or_start", "opt_join_or_resume", "opt_one_phase",
+ "opt_suspend", "$@258", "opt_migrate", "install", "uninstall",
+ "keep_gcc_happy", "_empty", "statement", "sp_statement",
+ "sp_if_then_statements", "sp_case_then_statements", "sp_tail_is",
+ "sp_package_function_body", "sp_package_procedure_body",
+ "opt_trailing_sp_name", "opt_package_routine_end_name", "sf_parameters",
+ "sp_parameters", "sf_returned_type_clause",
+ "package_implementation_item_declaration",
+ "package_implementation_declare_section_list",
+ "package_implementation_declare_section",
+ "package_implementation_executable_section",
+ "reserved_keyword_udt_param_type", "reserved_keyword_udt",
+ "keyword_sp_block_section", "keyword_label", "keyword_sp_decl",
+ "opt_truncate_table_storage_clause", "ident_for_loop_index",
+ "row_field_name", "while_body", "$@259", "for_loop_statements",
+ "sp_label", "sp_control_label", "sp_block_label", "sp_opt_default",
+ "sp_decl_variable_list_anchored", "sp_param_name_and_mode", "sp_param",
+ "sp_param_anchored", "sf_c_chistics_and_body_standalone", "$@260",
+ "sp_tail_standalone", "$@261", "$@262", "sp_decls", "sp_decl",
+ "sp_decl_body", "$@263", "sp_proc_stmt_in_returns_clause",
+ "sp_proc_stmt", "sp_proc_stmt_compound_ok", "sp_labeled_block", "$@264",
+ "sp_unlabeled_block", "$@265", "sp_unlabeled_block_not_atomic", "$@266",
+ "package_implementation_declare_section_list1",
+ "package_implementation_declare_section_list2",
+ "package_specification_function", "$@267",
+ "package_specification_procedure", "$@268",
+ "package_implementation_routine_definition",
+ "package_implementation_function_body", "$@269",
+ "package_implementation_procedure_body", "$@270",
+ "opt_package_specification_element_list",
+ "package_specification_element_list", "package_specification_element",
+ "create_routine", "$@271", "$@272", "$@273", "$@274", "$@275", "$@276", YY_NULLPTR
};
static const char *
@@ -3688,12 +3767,12 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-5341)
+#define YYPACT_NINF (-5651)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-3660)
+#define YYTABLE_NINF (-3703)
#define yytable_value_is_error(Yyn) \
0
@@ -3702,629 +3781,641 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const int yypact[] =
{
- 7647, -5341, -5341, 2971, 1711, 93552, -5341, 116, -5341, 1031,
- -5341, -5341, -5341, 3395, -5341, -5341, -5341, -5341, -5341, 198,
- 463, -5341, 326, -5341, -5341, 353, 80214, 634, 580, -5341,
- 83178, -5341, -5341, -5341, -5341, 83178, -5341, -5341, 93552, -5341,
- -5341, 1436, -5341, 172, 1568, 2263, 1565, 463, 1074, -5341,
- -5341, 94293, 326, 1603, -5341, -5341, 1251, 93552, 326, -5341,
- 1074, 93552, -5341, 313, 279, -5341, 1342, 4371, 133, 2180,
- 2197, -5341, -5341, 1640, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 4703, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 1891, -5341, -5341, -5341,
- -5341, 4408, 1835, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, 45266, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 133, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 95034, 93552, 1543, 1584,
- 93552, 2226, 80955, 2226, -5341, 126, -5341, -5341, 1971, -5341,
- 1630, -5341, 463, 2744, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, 1718, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 2204, 2508,
- 536, 2237, 278, 2226, -5341, 2226, 2226, 2226, 2226, 2226,
- 2226, -5341, 2226, 2226, 943, 93552, 67617, -5341, -5341, 108,
- 2417, -5341, -5341, -5341, -5341, -5341, -5341,108132, 463, 23317,
- 2512, -5341, -5341, 2074, 3711, 1871, -5341, 2356, -5341, -5341,
- 93552, -5341, 2226,108132, -5341, 2356, 68358, 3781, 49723, 7733,
- 2356, 463, 2453, -5341, 1882, -5341, -5341, -5341, -5341, -5341,
- -5341, 93552, -5341, -5341, -5341, 2338, 1074, 80955, -5341, -5341,
- -5341, -5341, -5341, 2625, 23317, 243, 2385, -5341, -5341, 2304,
- 46007, 80955, 2583, 2508, 2606, -5341, 1528, 572, -5341, 1998,
- 2077, 2508, 1514, 2091, 2508, 2497, 2226, 2226, -5341, -5341,
- 3364, 3364, 3364, 2333, 3364, -5341, 3364, 2673, 2022, 447,
- -5341, -5341, 2028, 93552, 2583, -5341, 2583, -5341, 2668, 2583,
- 2583, 2166, 2682, 2695, 160, 1531, 187, 187, 1971, 40820,
- 1148, 2531, -5341, 2673, 2078, 1905, 2119, 2119, 2119, 2078,
- 133, 2078, -5341, 2861, 1630, 2895, 93552, -5341, 2729, -5341,
- 2070, -5341, -5341, 239, -5341, 2133, -5341, 2092, 1415, 69840,
- -5341, 2763, -5341, -5341, -5341, -5341, -5341, -5341, 2589, 259,
- 2235, 2457, 2161, -5341, 2642, 80955, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 93552, 2132, -5341, -5341, 23317, 2801,
- 2204, -5341, 2632, -5341, -5341, -5341, -5341, 46007, -5341, -5341,
- -5341, 2800, -5341, -5341, 83919, 663, 93552, 2813, 93552, 93552,
- 93552, 93552, -5341, 80955, -5341, -5341, 2226, 2226, -5341, -5341,
- 2795, 2350, 2316, 1553, 2203, 2511, -5341, 2399, -5341, 2210,
- 2289, 2420, 2227, 2230, 2283, 211, -5341, 2242, -5341, 929,
- 2692, 146, 154, 2696, 162, 424, 2847, 2705, 454, 971,
- 466, 2503, 470, -5341, -5341, -5341, -5341, 2780, 2867, 2309,
- -5341, 2323, -5341, 2812, 2646, 1149, -5341, -5341, 895, 2748,
- 1213, 46007,110200, 81696,111492, -5341,111492,111492, -5341, 245,
- -5341, 1568, 93552,110846, -5341, 93552,103866, -5341, 11694, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 93552, -5341,
- -5341, -5341, -5341, -5341, 2321, -5341, -5341, -5341, -5341, -5341,
- 2765, 2247, 2772, -5341, 2345, -5341, -5341, -5341, -5341, -5341,
- 84660, -5341, 190, 205, 3475, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 29469, 2357, 2360, 2363,
- 18703, 2366, 2372, 2376, 2390, 2394, 2203, 2203, 2203, 2395,
- 2400, 2414, 2422, 2423, 2434, 2477, -5341, 2478, 2482, 2506,
- 2518, 2527, 2551, 24086, 2555, 2560, 2561, 37103, 2567, 2568,
- 2578, 2579, 23317, 2395, 2610, 2622, -5341, 2629, 2644, 2657,
- 2674, 2693, 2711, 2720, 2726, 3149, 2730, 2738, 2745, 2746,
- -5341, 2203, 2395, 2395, 2755, 2758, 2759, 2773, 2776, 2781,
- 2788, 2799, 2811, 2830, 2833, 2844, 2845, 2853, 2855, 201,
- 2859, 2866, 2868, 2869, 2872, 2873, 2875, 2461, 2884, 2886,
- 2887, 2504, 2888, 2889, 2891, 2899, 206, 2902, 2903, 210,
- 2904, 2908, 2910, 2913, 2914, 2920, 2921, 30238, 31007, 29469,
- 16396, -5341, 93552, 95775, -5341, -5341, 4197, 1112, 3315, 2082,
- 29469, -5341, -5341, -5341, 3126, -5341, 3243, -5341, -5341, -5341,
- -5341, 3077, 3097, -5341, 3108, -5341, -5341, 3138, 2660, -5341,
- 3448, -5341, -5341, -5341, -5341, -5341, 2721, -5341, 2926, 3514,
- 3536, 2933, 2934, -5341, -5341, 479, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 2792,
- 2864, -5341, 3448, -5341, -5341, 72804, -5341,108843, -5341, -5341,
- 2350, 3007, 3413, -5341, 3518, -5341, 3452, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 3781,
- -5341, -5341, 51227, 3458, -105, -5341, -5341, 186, -5341, 196,
- 240, 63171, -5341, 305, 63912, 260, 85401, 949, -5341, 70581,
- -5341, 316, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 2935, -5341, 3051, 3262, 2944, 3317, 1571, -5341,
- -5341, 384, 537, 3038, 115, -5341, 62, -5341, 1571, -5341,
- 73545, 725, 2169, -5341, 801, -5341, 3601, -5341, -5341, 3043,
- 3029, 3059, -5341, 3276, -5341, 2508, -5341, 539, -5341, 725,
- 1571, 2169, -5341, 3226, 3308, 1383, 3262, -5341, 1084, -5341,
- -5341, -5341, 3597, -5341, 2959, -5341, 3321, -5341, 93552, 1217,
- 46007, -5341, -5341, -5341, 2963, 46007, 46007, 1221, 299, 4197,
- 2965, 23317, -5341, -5341, 4092, 53483, 3166, 368, 1085, -5341,
- -5341, 1568, 93552, -5341, -5341, 624, -5341, 3389, -5341, 2968,
- -5341, 96516, 299, 3628, -5341, -5341, -5341, 774, 3362, -5341,
- 2977, -5341, -5341, -5341, -5341, 46007, 93552, 2508, -5341, -5341,
- -5341, -5341, 2979, -5341, -5341, 3183, 3065, -5341, 3003, -5341,
- -5341, 225, -5341, -5341, 3761, -5341, 93552, -5341, 2583, -5341,
- -5341, 2583, -5341, -5341, -5341, 2583, 2583, 2583, -5341, -5341,
- 3031, -5341, 3313, 3314, 2642, -5341, 3002, 40079, 93552, 3777,
- -5341, 3572, -5341, -5341, -5341, 3009, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 3575, 3762, 3762, -5341, 51979, -5341,
- -5341, 3660, 2531, 1589, 3501, 54987, 3649, 3737, 57243, -5341,
- 725, -5341, -5341, -5341, -5341, 2249, 93552, -5341, 2249, 2249,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 133, -5341, -5341, 2744, 3410, 71322, 93552, 2078,
- 1905, -5341, -5341, -5341, 2508, 369, 3406, -5341, 93552, -5341,
- -5341, -5341, 2203, 3812, -5341, -5341, -5341, -5341, -5341, 46007,
- 3235, 69840, 2226, -5341, -5341, -5341, 259, -5341, 1596, 93552,
- 46007, 3076, -5341, 46007, 3037, 23317, -5341, -5341, 3515, 4197,
- 108132, 3398, -5341, -5341, 46007, 1686, -5341, -5341, 46007, 3773,
- 46007, 3707, 2531, -5341, 3053, -5341, 3052, -5341, -5341, 3721,
- 93552, -5341, -5341, -5341, 3055, 74286, -5341, 72804, 46007, -5341,
- -5341, 3424, 3205, -5341, -5341, -5341, -5341, -5341, -5341, 3146,
- -5341, -5341, 3071, -5341, -5341, -5341, -5341, 3519, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 72804, -5341, -5341, 3520,
- 3523, -5341, 69840, 1506, 5228, 95775, -5341, 3718, -5341, -5341,
- -5341, 3597, -5341, -5341, 24855, -5341, 25624, -5341, -5341, -5341,
- 3354, 549, 1062, -5341, -5341, 3550, 93552, 3301, 3746, 3725,
- -5341, -5341, -5341, -5341, -5341, -5341, 3569, 3102, 3706, 3099,
- -5341, -5341, -5341, 3104, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 46007, 52731, -5341, -5341, -5341, 3110, -5341, -5341,
- -5341, 3116, 29469, 29469, -5341, 3842, 3842, 3842, 23317, 2919,
- 396, 3471, 23317, 23317, 23317, 2143, 3123, -5341, -5341, -5341,
- 284, -5341, 23317, 23317, 37850, 3150, 987, 5096, 23317, 3820,
- 3820, -5341, 23317, 23317, 16396, 3454, 23317, 23317, 23317, 95775,
- 37850, 3595, 3152, -5341, 3156, 2151, 23317, 2184, 23317, -5341,
- -5341, 23317, 23317, 23317, 23317, 3155, 31776, 3159, 23317, 23317,
- 3169, 3303, 3842, 3842, 2277, 293, -5341, -5341, -5341, 3842,
- 3842, 3177, 23317, 23317, 17165, 23317, 23317, 2291, 23317, 23317,
- 23317, 23317, 23317, 23317, -5341, 23317, 23317, 1009, 23317, 23317,
- 46007, 23317, 23317, 3831, 46007, 23317, 23317, 3832, 23317, 23317,
- 46007, 23317, -5341, 23317, 3942, 3942, -5341, 23317, 17165, 23317,
- 3184, 38597, 23317, 23317, 23317, 24086, -5341, 24086, -5341, -5341,
- 3188, 3393, 355, 133, 23317, 3178, -5341, -5341, -5341, -5341,
- 23317, 23317, 23317, 31776, -5341, -5341, -5341, 432, -5341, -5341,
- -5341, 26393, 31776, 3193, 31776, 31776, 3806, 2112, 31776, 31776,
- 31776, 31776, 31776, 31776, 31776, 32545, 33314, 31776, 31776, 31776,
- 31776, -5341, 80955, 29469, 48971, 3199, 3845, -5341, 75027, -5341,
- 1591, 645, -5341, 2508, 3711, 34852, -5341, 3206, -5341, 3703,
- 46007, 3203, 3211, 3868, 72804, 69840, 1506, 3229, -5341, 1300,
- 234, -5341, 74286, 93552, -5341, -5341, -5341, 3928, 23317, -5341,
- -5341, -5341, -5341, -5341, 3222, 383, 3230, -5341, 1040, -5341,
- -5341, -5341, -5341, -5341, 93552, -5341, 86142, 50475, 3333, 3892,
- 3252, 2583, 86883, 93552, 46007, 93552, 97257, 93552, 93552, 46007,
- 72804, 46007, -5341, -5341, -5341, 818, 1571, 93552, 1571, 2169,
- 852, 1571, 3874, -5341, -5341, 937, 937, -5341, -5341, -5341,
- -5341, -5341, -5341, 1571, 93552, 93552, 1571, 69840, -5341, 2169,
- 1479, -5341, 3539, 3330, -5341, -5341, -5341, 3581, -5341, -5341,
- 3907, 3254, -5341, 3603, -5341, 3352, -5341, -5341, 46007, -5341,
- -5341, 2169, -5341, 2169, 2169, 3919, 1571, 1571, 1571, -5341,
- 41561, 3275, 3280, -5341, 3282, -5341, 3283, -5341, 3911, -5341,
- -5341, -5341, 4064, 3924, 3289, -5341, -5341, 3859, 890, -5341,
- 3715, -5341, 3840, -5341, 23317, 4197, 19472, 3570, -5341, -5341,
- 3573, 3577, 3583, -5341, -5341, -5341, -5341, 3722, 3585, -5341,
- 2508, 3587, -5341, -5341, -5341, 3319, -5341, -5341, -5341, 80955,
- 34852, -5341, 3322, -5341, 3336, -5341, 208, -5341, -5341, 3989,
- 3437, 23317, -5341, -5341, 46007, 3835, -5341, 2508, 1528, 93552,
- -5341, -5341, 4072, -5341, 1440, 3999, -5341, -5341, 3460, 1514,
- -5341, 3999, -21, -5341, -5341, 3364, 3531, -5341, -5341, -5341,
- 80955, -5341, -5341, -5341, -5341, -5341, -5341, 93552, -5341, 74286,
- 69840, 80955, 2583, 2583, -5341, 46007, -5341, -5341, -5341, 2583,
- 2583, 2583, 3388, -5341, 2876, 3361, 3365, 3366, 3370, 2027,
- 3371, 42302, 2341, 291, 3976, 3994, -5341, 3945, 2700, 3945,
- -5341, -5341, 42302, 41561, 3377, 3777, -5341, -5341, -5341, -5341,
- 80955, 3375, -5341, -5341, 3374, -5341, 23317, 4097, 4021, 3660,
- -5341, -5341, 55739, 1465, 84660, -5341, -5341, -5341, 3729, 3913,
- 1166, -5341, 3383, 3510, -5341, 444, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 23317, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, 234, 229, -5341, -5341, -5341, 1397, 3767,
- 2573, -5341, -5341, 80955, 2573, -5341, 3407, 3713, -5341, 3716,
- 122, -5341, 46007, -5341, -5341, -5341, -5341, -5341, 46007, 3405,
- -5341, 3596, 93552, 2132, 3420, 3421, 4197, 3918, -5341, 3515,
- -5341,103155, -5341, 4136, 5255, 139, 3472, -5341, -5341, -5341,
- -5341, -5341, 46007, -5341, -5341, 338, 3575, 3504, -5341, 3427,
- -5341, -5341, 563, 4007, -5341, -5341, 4005, 93552, 4107, 58725,
- -5341, -5341, 4040, 93552, 3462, -5341, -5341, 3466, 193, 46007,
- 46007,108132, -5341, -5341, 3470, -5341, -5341, -5341, 3971, -5341,
- -5341, 68, 4198, -5341, -5341, -5341, 43043, 43043, 929, 2692,
- -5341, -5341, 2696, -5341, -5341, 2705, -5341, 971, -5341, 2503,
- -5341, -5341, -5341, -5341, 2083, -5341,108132, -5341, 3911, 23317,
- 48230, 4197, -5341, -5341, 46007, -5341, 4116, -5341, -5341,100221,
- 185, -5341, -5341, 230, 46007, -5341, -5341, -5341, 4111, 3618,
- 93552, -5341, -5341, 4171, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 93552, 93552,108132,108132, -5341, -5341, 1091, 1300, -5341,
- 4229, 95775, 23317, -5341, 3497, -5341, 3499, 3500, 2972, 3858,
- 23317, 23317, -5341, 2925, 67, 309, -5341, 3506, 3517, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, 3509, -5341, -5341,
- 379, 413, 3513, -5341, -5341, -5341, 3516, 133, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 4162, -5341,
- 263, -5341, -5341, -5341, 23317, 493, 511, 612, 3528, 417,
- 455, 931, 3110, 2095, 3522, 37850, 95775, 3842, 3524, 378,
- 3842, 3525, 1329, 1461, 515, 766, 893, -5341, 348, -5341,
- 1483, 1516, -5341, -5341, 3526, 3527, 3842, 3529, -5341, 3532,
- 3533, 3534, -5341, 1520, 296, 3537, -5341, -5341, 20241, 21010,
- 21779, 3185, 3538, -5341, -5341, 1526, 905, 3842, 3540, 1188,
- 1580, 1610, -5341, 2106, 1624, 1712, 3543, 2965, 1536, 1878,
- -5341, -5341, -5341, -5341, 3542, 1966, 2120, 3544, 3552, 2123,
- 2272, 46007, 3556, 3560, 2294, 46007, 1793, 2332, 3548, 1813,
- 813, 3559, 3561, 2398, 3562, 1860, -5341, 95775, 93552, 3564,
- 3511, 298, 3565, 2480, 3454, 3454, -5341, 23317, 3566, 274,
- 95775, 581, 1323, -5341, 3315, -5341, -5341, -5341, -5341, 458,
- -5341, 3568, 3315, 3576, 3112, 16396, -5341, 1382, 1568, 31776,
- 31776, 3578, 31776, 31776, 809, 354, 354, 3586, 3586, 488,
- 446, 24086, 809, 24086, 809, 3586, 3586, 3586, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 4083, 3584, 3589, 3591,
- 3592, -144, 3574, -5341, -5341, -5341, -5341, -5341, -5341, 40,
- 3933, -5341, 3757, 450, 23317, -5341, 3553, 4271, 4325, 4329,
- -5341, -5341, -5341, -5341, 72804, 72804, 3579, -5341, -21, 3937,
- 4243, 74286, 4247, -5341, 3598, 43043, 43043, -5341, 3599, -5341,
- 23317, 3590, 3600, 3604, 97998, -5341, 4251, 234, 75768, 4197,
- 72804, 618, 17934, 93552, 93552, -5341, 85401, 4252, 855, 3879,
- -5341, 3606, 3610, -5341, 234, 17934, 3612, 1140, 400, -5341,
- 3611, 3615, -5341, -5341, -5341, -5341, 23317, 3621, 93552, 93552,
- -5341, -5341, -5341, -5341, 93552, -5341, -5341, -5341, -5341, -5341,
- -5341, 2508, 23317, 93552, 1571, -5341, -5341, -5341, 1571, 93552,
- 1571, -5341, 2508, 4258, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 1571, -5341, -5341, -5341, -5341, -5341,
- 3790, 725, 3276, 3874, 3999, 2169, 46007, 1571, 1571, 23317,
- -5341, -5341, -5341, -5341, 4150, 3575, 19472, 3632, 3631, -5341,
- -5341,108132, 93552, 95775, 4363, -5341, -5341, 4171, 80955, 87624,
- 46007, -5341, -5341, -5341, 2218, -5341, -5341, -5341, -5341, -5341,
- 4197, 2385, 2422, -5341, 3635, 4197, -5341, -5341, 4322, -5341,
- -5341, -5341, -5341, 2508, -5341, -5341, 4217, -5341, 46007, -5341,
- -5341, 54235, 54235, 1763, -5341, 98739, -5341, 2508, 4197, 46007,
- 1151, 230, -5341, 4376, -5341, -5341, 3756, -5341, -5341, -5341,
- 3642, -5341, 4066, -5341, -5341, -5341, -5341, -5341, -5341, 3653,
- -5341, 4309, -5341, 1597, 212, 93552, 90, 122, -5341, 93552,
- 93552, 46007, -5341, 93552, 2583, -5341, -5341, 2583, 46007, 93552,
- 93552, 2583, 23317, 42302, -5341, -5341, -5341, -5341, -5341, 42302,
- -5341, 2966, -5341, 3861, 1812, 1812, -5341, -5341, -5341, -5341,
- -5341, 4280, 3945, 3945, 42302, 4281, 4248, -5341, 93552, 6410,
- 545, -5341, 51979, 93552, 4197, 23317, -5341, 3690, 4021, -5341,
- 215, 783, 444, -5341, 3936, 230, -5341, -5341, 57243, 4009,
- 57243, 57243, 95775, 3897, 23317, -5341, 4326, 3675, 4197, 1597,
- 2508, -5341, 234, 234, 3895, 4187, 4188, 3800, 2508, 4190,
- 4196, 4200, -5341, -5341, -5341, -5341, -5341, 3663, 1055, 315,
- 1019, 69840, 4151, -21, 4266, 3692, -5341, 46007, 4345, -5341,
- -5341, -5341, -5341, 23317,108132, -5341, -5341, -5341, 3710, 3712,
- 3714, 3717, 3726, 3730, 3740, 3741, 3742, 3743, 3744, 3755,
- 3758, 3760, 3763, 3765, 3766, 3770, 3775, 3779, 3785, 3788,
- 3789, 3796, 3798, 157, -5341, -5341, 3750, -5341, -5341, -5341,
- -5341, -5341, 1812, 93552, 4186, 58725, -5341, 3916, 4328, -5341,
- -5341, 41561, -5341, 3732, 46007, -5341, 74286, 72804, -5341, -5341,
- -5341, 3764, 1091,104577, -5341, -5341, 4502, 69840, 4207, -5341,
- -5341, 3778, -5341, 3780, 4277, 4279, -5341, 95775,102444, -5341,
- -5341, 4197, -5341, -5341, 3771, -5341, -5341, 3859, 3762, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 3816, 4069, 4180, -5341, -5341, -5341,
- 3160, -5341, -5341, -5341, -5341, -5341, -5341, 4423, 76509,105288,
- 3792, -5341, -5341, -5341, -5341, 2165, -5341, -5341,111492,111492,
- 111492, 4171, -5341,100962, 23317, -5341, 1872, -5341, 23317, -5341,
- -5341, 23317, -5341, 4197, 3822,112223, 77250, -5341, 77250,112223,
- 23317, -5341, 3799, -5341, 4427, 4430, -5341, -5341, -5341, 23317,
- -5341, 23317, 23317, 1932, 23317, 23317, 23317, 23317, -5341, 23317,
- -5341, 23317, 23317, -5341, 31776, -5341, 3797, 3807, -5341, -5341,
- 3808, -5341, 23317, 23317, -5341, -5341, -5341, 23317, 23317, 23317,
- -5341, -5341, 3810, -5341, -5341, -5341, -5341, 23317, 23317, 23317,
- -5341, 23317, 3486, 23317, 3521, 23317, 4020, 23317, -5341, 27162,
- -5341, 3811, -5341, -5341, 23317, 23317, -5341, 23317, 23317, 23317,
- -5341, -5341, -5341, 23317, -5341, 4379, 23317, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, 23317, -5341, 302, 27931, -5341,
- 23317, 23317, 23317, -5341, -5341, 23317, 3809, 3813, -5341, 93552,
- 2435, 3843, 230, 3815, -5341, -5341, 3824, 3830, 2965, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 987, 31776, 827, 31776,
- 1568, 3733, 16396, -5341, 1431, 1568, 3454, 3454, 93552, 4536,
- 3826, -5341, 23317, 23317, 17165, 23317, 95775, 23317, 3828, 3836,
- -5341, 3834, 31776, -5341, -5341, 3838, -5341, 2299, 3843, 3929,
- 4283, -5341, 4197, 34852, 4338, -5341, 46007, 4340, 4387, 4045,
- -5341, 72804, 69840, 4503, 4507, -5341, 4197, -5341, 3850, -5341,
- -5341, -5341, 3851, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 402, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 23317, 72804, -5341, -5341, -5341, -5341, 234, -5341, 3860, 3862,
- -5341, -5341, 29469, 2422, -5341, 4197, -5341, 234, 234, 17934,
- -5341, 8887, -5341, -5341, 1021, 4138, 4410, -5341, -5341, 93552,
- 1040, 93552, -5341, 50475, 50475, 88365, 4197, 143, -5341, -5341,
- -5341, -5341, 4197, -5341, -5341, -5341, -5341, -5341, -5341, 3875,
- -5341, -5341, -5341, 4613, -5341, -5341, 4258, -5341, 2531, 2169,
- -5341, -5341, 4197, 38597, 564, -5341, -5341, -5341, 19472,105999,
- -5341, 3866, 3869, 3873, -5341, 46007,106710, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, 3878, -5341, -5341,
- 19472, 3885, -5341, 3999, -5341, 3764, 1412, 3890, 3872, -5341,
- -5341, -5341, -5341, -5341, -5341, 233, 248, 1915, 2531, -5341,
- -5341, 287, -5341, -5341, -5341, -5341, -5341, 878, -5341, -5341,
- 3999, -5341, 1440, 2508, 3927, -5341, 230, 4118, -5341, -5341,
- 1597, 1165, 1165, 4458, 212, 4331, -5341, 4151, 4540, 4464,
- 4466, -5341, 3663, -5341, -5341, -5341, 93552, -5341, -5341, 1068,
- -5341, 46007, 1947, 3572, 3572, -5341, 1812, 227, -5341, 31776,
- 4620, -5341, 4384, 42302, 4514, 4516, -5341, 42302, -5341, -5341,
- 2173, -5341, -5341, 72063, -5341, -5341, -5341, 4197, 195, 2178,
- 23317, 93552, -5341, 3690, 3963, -5341, -5341, 783, -5341, -5341,
- -5341, -5341, 57243, -5341, -5341, -5341, 1465, 3896, 2178, 1589,
- 3899, -5341, -5341, 75768, 72063, -5341, 4269, 4272, 1659, -5341,
- -5341, -5341, -5341, 234, 234, -5341, 311, 234, -5341, -5341,
- 518, -5341, -5341, 1688, 337, 3663, -5341, 2508, 2508, 2508,
- 2508, 230, 2508, 2508, 2190, -5341, 321, -5341, -5341, 80955,
- -5341, 4651, 4652, -5341, 4653, -5341, -5341, 841, -5341, 2778,
- 933, -5341, 961, -5341, 4446, 93552, 4635, 3692, -5341, 461,
- 2132, 4197, -5341, 4404, 3910, 3912, 230, 3917, 230, 230,
- 2508, 2508, 3875, 2508, 230, 2508, 2508, 2508, 2508, 2508,
- 2508, 2508, 230, 2508, 1486, 3754, 414, 2508, 230, 5255,
- -5341, -5341, -5341, -5341, 3908, 41561, 633, -5341, 56491, 4452,
- 2531, 3932, -5341, -21, -5341, -5341, 434, 4572, -5341, 3923,
- 23317, -5341, 113, 4120, 3938, 59466, 69840, 69840, -5341, 2594,
- -5341, 46007, -5341, 4564, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 65394, -5341, -5341, 4241, 1782, 3931, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 3934, -5341, -5341, 23317, -5341, -5341, 3424, -5341,
- -5341, -5341, -5341, -5341,107421, 3930, 4197, 23317, 4197, 4197,
- 23317, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 3939, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 3939, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 3940, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 3947,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 4626, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 4569, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, 3939, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, 3939, -5341, 3939,
- -5341, 4575, 3939, 3939, -5341, 3952, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 3953, 3954, 3955, 2965, -5341, 23317, 23317, 2491, 169, 169,
- 23317, 2008, 2056, 838, -5341, 2493, 2509, 2572, 2311, 95775,
- -5341, -5341, 2612, 2623, 2624, 2652, 2653, -5341, 2060, 3286,
- 2096, 4197, 23317, 4197, 23317, 4197, 23317, 4197, 24086, 2753,
- -5341, 2219, 4130, -5341, 2250, 4219, 2784, 2789, 2253, -5341,
- 2805, 4706, 2264, 24086, 2796, 2831, 2102, 2158, 2835, 95775,
- 93552, 3951, 3960, 3960, 194, -5341, 3958, -5341, -5341, -5341,
- 3959, -5341, 23317, 23317, 3966, 3315, -5341, 23317, 1568, 31776,
- 1025, 31776, -5341, -5341, 4083, -5341, 23317, -5341, 4538, 3967,
- 4164, 3969, 3970, 3185, 3972, 3975, 3977, 3983, 4197, -5341,
- -5341, 93552, 3985, 2082, -5341, 3875, -5341, 4598, -5341, 4701,
- 3991, 4011, 3993, 3838, -5341, 72804, -5341, 46007, -5341, 4648,
- 3466, -5341, 69840, 69840, -5341, 82437, -5341, 57984, 93552, 93552,
- -5341, 4197, -5341, 17934, 618, 4747, 4750, -5341, -5341, -5341,
- -5341, 72, 4550, -5341, -5341, -5341, -5341, 17934, 234, -5341,
- 234, 17934, 3615, -5341, -5341, -5341, -5341, 4093, -5341, 725,
- -5341, -5341, -5341, 1571, 4001, -5341, 234, 1344, -5341, 19472,
- 4006, 4003, -5341, 4475, -5341, 987, 283, -5341, 3575, -5341,
- 4016, 89106, -5341, 4018, -5341, -5341, 4558, -5341, -5341, 4649,
- 54235, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 725, 4065, 4246, -5341, -5341, -5341, -5341, -5341,
- 2174, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 46007, 4602, 69840, 933, 4393, 46007, 46007, 6731, 9105,
- 3663, 4027, 93552, -5341, 3692, 4028, 481, 4028, -5341, -5341,
- -5341, -5341, 2082, 1812, 1812, 3125, 4509, 42302, 42302, 3605,
- 4510, 23317, 4031, -5341, 93552, -5341, 1083, -5341, 4434, -5341,
- -5341, 23317, -5341, -5341, -5341, -5341, 4197, 4761, 4033, -5341,
- -5341, -5341, -5341, -5341, -5341, 23317, -5341, 55739, 23317, 4037,
- 4038, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 302, 302,
- -5341, -5341, 302, 302, -5341, -5341, -5341, -5341, 302, 302,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 1055, -5341, 4788, 474, -5341, 4614, -5341, -5341, -5341, -5341,
- 118, 230, 230, 230, 3754, 1727, -5341, 2778, 1685, 4375,
- -5341, 6390, 1568, 1654, 4537, 1759, -5341, 2273, -5341, 4772,
- -5341, 200, -5341, -5341,108132, 218, 238, -5341, 257, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 58725, 2531, -5341, 93552,
- 4388, 4577, -5341, -5341, -5341, -5341, -5341, -5341, 987, -5341,
- 4197, -5341, 4695, -5341, -5341, -5341, -5341, 122, 122, -5341,
- 108132, -5341, -5341, 283, -5341, -5341, 4564, 4327, -5341, 1384,
- -5341, 3939, 3939, 48, -5341, 3940, 4607, 3940, -5341, -5341,
- 4443, 3148, 2220, 4443, -5341, 2220, 3940, -5341, 4058, -5341,
- 4443, -5341, 2220, 3939, -5341, 3939, -5341, -5341, 2220, 3939,
- -5341, 4059, 3940, 4443, 1355, 2330, 3940, -5341, 3939, 1499,
- 3939, 3939, 3939, 4260, 3939, 3939, -5341, 3940, -5341, -5341,
- -5341, -5341, -5341, -5341, 138, 3939, 3939, 3939, 3939, 3947,
- 4712, 4715, -5341, 93552, -5341, 4197, -5341, -5341,111492, 93552,
- 838, 4197, 3090, -5341, -5341, -5341, 604, 3246, -5341, -5341,
- -5341, 4814, -5341, -5341, 3939, -5341, 604, -5341, -5341, -5341,
- -5341, -5341, -5341, 604, -5341, -5341, -5341, -5341, 4070, 3454,
- 3454, -5341, 4780, 4590, 4683, 2856, 23317, 23317, -5341, 23317,
- -5341, -5341, -5341, 1350, 4073, 4541, -5341, -5341, -5341, -5341,
- -5341, -5341, 23317, 23317, 23317, 4197, 4197, 4197, 3454, -5341,
- -5341, 4057, -5341, -5341,112223, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 414, 3454, -5341, -5341, 23317, 23317, -5341, -5341,
- -5341, 93552, 3843, 4077, 4348, -5341, -5341, -5341, 3843, 4215,
- -5341, -5341, 3843, 230, -5341, -5341, -5341, 2280, 3315, -5341,
- 23317, 1568, 4655, 4078, 4799, 4085, -5341, -5341, -5341, -5341,
- -5341, -5341, 23317, 82437, -5341, 4086, 4089, -5341, -5341, -5341,
- 4521, 23317, 4705, 4658, -5341, 3843, 93552, -5341, -5341, -5341,
- 69840, 3598, 3598, 89847, -5341, -5341, -5341, -5341, 680, 234,
- 234, 17934, -5341, -5341, 4096, 4099, 17934, 17934, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 725, -5341, 38597, 2531, 22548, -5341, -5341, -5341, 19472,
- -5341, 4104, 38597, 4563, -5341, -5341, -5341, 4452, 189, -5341,
- -5341, 90588, -5341, 4110, -5341, 4090, -5341, 1809, 4440, 4718,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 4113, -5341, -5341, -5341,
- 4131, -5341, 4115, -5341, 46007, -5341, -5341, 4139, -5341, -5341,
- 39338, 4728, 4157, 4482, 46007, 234, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 4483, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 234, 1653, 93552, 234, 234,
- -5341, -5341, 4685, -5341, 6520, -5341, -5341, -5341, -5341, -5341,
- 234, -5341, -5341, -5341, 847, 4704, 4851, 4132, 4270, -5341,
- -5341, -5341, -5341, 4237, 4273, 3692, 2468, -5341, -5341, -5341,
- 4616, -5341, -5341, -5341, 4617, 4197, 93552, -5341, -5341, -5341,
- 1163, 2066, 4748, 2178, 4142, 93552, 2178, 783, 444, 4197,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, 551, -5341, 80955, -5341, -5341, -5341, -5341,
- -5341, 4887, 4892, -5341, -5341, -5341, -5341, 4330, 632, 4372,
- 1370, 4709, 4544, 4713, 2053, 3582, 234, 4716, 4867, -5341,
- 459, 234, 4717, 4776, 4235, 4782, 4725, -5341, 4239, 4544,
- 4729, 4355, 4731, 4733, 4735, -5341, -5341, 9105, -5341, -5341,
- -5341, -5341, 420, 43784, -5341, -5341, -5341, -5341, -5341, 4350,
- 23317, 23317, 4752, 93552, 4753, -5341, 4571, -5341, 93552, -5341,
- 987, -5341, -5341, -5341, 4476, -5341, 2281, -5341, -5341, 2339,
- -5341, -5341, 2374, -5341, -5341, 3732, -5341, 4834, -5341, 4524,
- 3229, -5341, -5341, 133, 4383, 4660, 4660, -5341, -5341, -5341,
- 4765, -5341, -5341, -5341, -5341, 4815, -5341, 4443, 234, 4443,
- -5341, -5341, 158, -5341, 158, -5341, 217, 3458, 77991, 4443,
- -5341, -5341, -5341, -5341, 4662, 2220, 604, 77250, 1629, 4584,
- -5341, -5341, -5341, 158, 3364, -5341, -5341, 4443, -5341, -5341,
- -5341, 3364, 158, -5341, 4668, -5341, -5341, -5341, 158, 4443,
- 4405, 93552, 4884, 2220, -5341, -5341,101703, 2220, 158, 4884,
- 4749, -5341, 604, 4930, 2220, 4443, 158, 158, -5341, 197,
- 4209, -5341,111492, -5341, -5341, 4213, 4214, 4218, 4220, -5341,
- -5341, 2383, 4221, -5341, -5341, -5341, -5341, 4222, 4225, 23317,
- 3364, 4683, 57243, 4226, -5341, -5341, 2857, 2162, 2432, 4491,
- 4448, -5341, 4382, -5341, 2879, 4197, 4197, 1769, 3940, -5341,
- -5341, -5341, -5341, 4846, 3939, -5341, 4936, -5341, 3939, 604,
- -5341, -5341, -5341, -5341, -5341, 4232, 2442, 1776, 2880, 2881,
- -5341, -5341, -5341, 4234, -5341, -5341, 418, -5341, 4227, -5341,
- 2445, 4950, 2110, 23317, -5341, 4240, -5341, -5341, 93552, -5341,
- -5341, 3454, 1118, -5341, 2449, -5341, -5341, -5341, 4244, 3598,
- -5341, -5341, 60207, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 17934, 17934, 3999, -5341, 4005, 2422, -5341, -5341, -5341, -5341,
- 4611, 4245, 4249, -5341, -5341, -5341, 4236, 133, 38597, -5341,
- -5341, -5341, 4253, 4250, -5341, -5341, -5341, 89106, -5341, 2462,
- -5341, -5341, 4971, 19472, 2508, 2628, 4256, -5341, 80955, 4257,
- 4259, 46748, 1625, 93552, 2484, -5341, -5341, -5341, -5341, -5341,
- 1463, -5341, 484, 2583, 2218, 2218, -5341, 4255, 46007, -5341,
- 234, -5341, 273, 275, 294, 335, -5341, 3875, 230, 230,
- 2508, 2508, 234, 230, 80955, 1708, 230, 3875, 3875, 387,
- 2508, 2329, 273, -5341, -5341, -5341, 230, 273, 265, -5341,
- -5341, 4495, -5341, 9105, 69099, 78732, 3783, -5341, -5341, 1592,
- 4373, -5341, 4267, 78732, -5341, 2508, -5341, 4984, 5008, -5341,
- -5341, 4670, 23317, 4261, 23317, 4274, 2502, -5341, 2218, -5341,
- 2218, -5341, 1163, 4985, 4986, 4932, 4987, 2066, -5341, 2240,
- -5341, -5341, -5341, -5341, -5341, -5341, 783, -5341, -5341, 4276,
- -5341, -5341, -5341, -5341, 4612, -5341, 5030, -5341, 4730, 44525,
- 2583, -5341, 1739, 4321, -5341, -5341, -5341, 4924, 2813, 2813,
- 326, 2813, 90588, 93552, 46007, 545, 443, 4907, 2226, 1869,
- 4332, 4845, 2813, 2813, 91329, 326, 38597, -5341, -5341, -5341,
- 2813, -5341, 2813, 46007, 92070, 326, -5341, -5341, -5341, 93552,
- -5341, 2813, 326, -5341, 326, 326, 90588, -5341, 10320, -5341,
- -5341, 39338, 1406, -5341, 4197, 3454, 4682, -5341, -5341, 4406,
- 2508, 4656, -5341, -5341, 4762, -5341, 93552, 226, -5341, 230,
- -5341, 230, -5341, 230, -5341, 31776, -5341, 3599, -5341, -5341,
- 2065, -5341, -5341, 4657, 4452, 4802, -5341, -5341, 93552, -5341,
- 4763, 4789, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 79473, 234, -5341, -5341, 2516, -5341,
- -5341, 2523, -5341, -5341, -5341, -5341,101703, -5341, 2542, -5341,
- 66876, 23317, -5341, -5341, -5341, 4884, 4298, -5341, -5341, -5341,
- 4323, -5341, -5341, -5341, -5341, -5341, 4930, -5341, -5341, 62430,
- -5341, -5341, -5341, 78732, 4960, -5341, -5341, -5341, -5341, -5341,
- 5059, -5341, -5341, 4308, 2178, -5341, 4311, -5341, -5341, -5341,
- -5341, 23317, -5341, 4543, -5341, 4650, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 3875, -5341, -5341, -5341,
- 4313, -5341, 230, -5341, 23317, -5341, -5341, 4314, 3419, 2178,
- -5341, -5341, 4411, 4283, 4318, -5341, 4658, 93552, -5341, -5341,
- 17934, 17934, -5341, -5341, -5341, 4328, -5341, -5341, -5341, 38597,
- 60948, 4319, 4316, -5341, 234, -5341, -5341, 93552, -5341, -5341,
- 3875, 4681, -5341, 2553, -5341, -5341, 93552, 4324, 4518, 93552,
- 93552, -5341, -5341, 4333, 93552, -5341, -5341, -5341, 39338, 4334,
- 4942, 4944, 2218, -5341, 2583, 4869, 46748, -5341, 2583, 2583,
- 64653, 93552, 4335, 2508, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, 4339, -5341, -5341, -5341, -5341, -5341, 2508,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 5053, -5341, 4685, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 4341, 4337, 93552, -5341, 66135, -5341, -5341, -5341, -5341, 5002,
- 108132, -5341, -5341, -5341, 4905, 1654, -5341, -5341, 4342, -5341,
- -5341, 66876, -5341, -5341, -5341, -5341, 4344, 4346, 4197, 93552,
- 4197, 93552, -5341, 4982, 4982, -5341, 3364, 3364, 5049, 3364,
- -5341, 5055, 5060, 2240, -5341, -5341, 5097, 632, 4719, 1685,
- 1568, 326, 1568, 5000, -5341, -5341, 93552, 46748, 90588, 46748,
- -5341, 4842, -5341, 72063, 46748, 2813, 93552, -5341, 5004, -5341,
- 4972, 46748, 46748, -5341, -5341, 90588, 4351, -5341, 2178, 2512,
- 93552, 46748, -5341, -5341, -5341, 3843, 4822, 46748, 90588, -5341,
- 90588, -5341, 4634, 4850, 3331, -5341, 4358, 4357, 93552, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 846, -5341, -5341, 2574,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 1346, 4557,
- -5341, 2065, -5341, -5341, -5341, 46007, -5341, -5341, -5341, -5341,
- -5341, -5341, 604, 3364, 604, 4884, -5341, 93552, -5341, 4197,
- -5341, 93552, 5113, -5341, -5341, -5341, -5341, 47489, -5341, -5341,
- -5341, 4684, -5341, 2581, -5341, 4367, 23317, -5341, -5341, 2892,
- -5341, -5341, 4368, -5341, 4369, 3896, -5341, 3557, 4501, 4271,
- 4325, 4329, 4551, 4720, -5341, 4555, -5341, 4193, 4521, 4378,
- 31776, -5341, -5341, 1600, -5341, -5341, -5341, -5341, 95775, -5341,
- -5341, 4374, -5341, 38597, 19472, -5341, -5341, 4795, -5341, 2597,
- 2178, 4385, 93552, 4386, 2603, 2617, 93552, 4389, -5341, 23317,
- 2583, -5341, -5341, 46748, 46007, -5341, 4868, 708, 46748, 46748,
- 4392, 1381, 4394, 4396, 2550, 1663, 4397, 4059, 1687, 58,
- 1355, 462, 1765, 4399, 1785, 4400, 1801, 1831, 1840, 1862,
- 1864, 4409, 5094, -5341, -5341, 4412, 4415, 4416, 4418, 4419,
- 4420, 4421, 4422, 4424, -5341, -5341, 46007, -5341, -5341, 189,
- 265, -5341, 78732, -5341, 1714, 4593, -5341, -5341, 5164, -5341,
- 4752, 78732, 3783, -5341, -5341, -5341, -5341, 99480, 6991, 2648,
- 2649, 2241, -5341, -5341, -5341, -5341, 3364, -5341, 3364, 3364,
- -5341, 4413, -5341, -5341, -5341, 5052, -5341, 5054, -5341, 2071,
- 1501, -5341, 46748, 338, 4899, 4886, 5122, -5341, 46748, 4250,
- 93552, -5341, -5341, 434, -5341, 38597, -5341, -5341, 4910, 4911,
- -5341, 4929, 1406, -5341, 93552, -5341, -5341, -5341, 4527, -5341,
- 108132, 4630, 5143, 5144, -5341, 93552, 92811, 31776, -5341, -5341,
- 5058, -5341, 3575, -5341, -5341, -5341, -5341, -5341, 4439, -5341,
- 62430, -5341, -5341, -5341, -5341, -5341, 2178, -5341, -5341, -5341,
- 151, -5341, 5171, 1546, -5341, -5341, 253, -5341, -5341, -5341,
- -5341, 93552, 4447, 4533, -5341, -5341, 4519, -5341, -5341, 2945,
- -5341, 137, 61689, -5341, -5341, -5341, -21, 93552, -5341, 5201,
- 4450, 1055, -21, -21, 4451, 93552, 2893, 46748, 4868, 1289,
- 4459, 1165, -5341, 1165, -5341, -5341, 3008, 66876, -5341, -5341,
- 3325, 93552, 4460, 5221, -5341, -5341, 4665, -5341, 93552, -5341,
- -5341, -5341, 1759, -5341, -5341,109554, 5024, 2655, -5341, -5341,
- -5341, -5341, -5341, 5178, -5341, 5179, 4467, 4468, -5341, -5341,
- -5341, -5341, 46748, -98, -5341, -5341, 5101, -5341, 5149, 5151,
- 1406, -5341, 46007, 5036, 75768, -5341, -5341, -5341, 326, -5341,
- 93552, 46748, 46007, -5341, -5341, 4250, 878, 23317, 4826, 5164,
- -5341, 4671, 4672, -5341, -5341, 2676, -5341, -5341, 2082, 4961,
- -5341, 93552, -5341, -5341, -5341, 3557, -5341, -5341, 4609, 360,
- -5341, 2679, -5341, -5341, -5341, 3843, -5341, 4481, -5341, 4843,
- 234, 234, 4844, 234, 234, 234, 234, 4484, 2945, -5341,
- -5341, -5341, 4835, -5341, -5341, -5341, 2752, 2178, 4487, 93552,
- 4489, 2687, 1675, 2791, 93552, 4488, -5341, -5341, -5341, 1165,
- 93552, 5091, -5341, 4493, -5341, 4494, 4496, -5341, -5341, 5114,
- 2508, -5341, 4576, -5341, -5341, 3008, -5341, -5341, -5341, 4539,
- 5119, 5080, -5341, 80955, 34083, -5341, 4988, -5341, 4943, 5184,
- -5341, 5234, 3793, -5341, -5341, -5341, -5341, -5341, -5341, 93552,
- 4508, 46007, 4571, 5164, 2468, -5341, 99480, 9273, -5341, -5341,
- 89106, 89106, 5094, 3843, 4658, -5341, -5341, -5341, 34083, -5341,
- -5341, 4658, -5341, -5341, -5341, -5341, -5341, 5134, -5341, 4197,
- 23317, -5341, -5341, -5341, -5341, -5341, 92811, -5341, 545, -5341,
- -5341, -5341, -5341, -5341, -5341, 93552, -5341, 4511, -5341, -5341,
- 188, 234, 2508, 2508, 234, 3920, 3920, 3843, 80955, 4603,
- -5341, -5341, 234, 1165, 2508, 234, 1165, -5341, -5341, 1256,
- 2752, -5341, -5341, -5341, -5341, -5341, -5341, 1612, -21, -5341,
- 4714, 1256, 1675, -5341, -5341, 1256, 2791, -5341, -5341, 4522,
- 93552, 4526, 4530, -5341, 2691, -5341, 1088, 5108, 93552, 4535,
- 93552, 93552, -5341, -5341, -5341, -5341, -5341, -5341, 4891, -5341,
- 4542, 4545, 3754, 3754, 16396, -5341, -5341, -5341, -5341, -5341,
- -5341, 5120, -5341, 4582, 849, 234, -5341, 3964, 4525, 93552,
- 5193, 4904, -5341, -5341, -5341, 5121, -5341, -5341, -5341, -5341,
- -5341, 2000, 4547, 2706, -5341, -5341, 2733, -5341, -5341, -5341,
- -5341, 4552, 4197, -5341, 38597, -5341, 4533, -5341, -5341, 2750,
- -5341, 28700, -5341, -5341, -5341, 2508, -5341, -5341, 2508, -5341,
- -5341, -5341, -5341, -5341, 2762, -5341, 80955, -5341, -5341, 230,
- -5341, -5341, 5157, 4994, -5341, 4754, 2752, 2650, -5341, -5341,
- -5341, -5341, -5341, 4554, 93552, 93552, 4556, -5341, 93552, -5341,
- -5341, -5341, 1363, -5341, 2790, 93552, 2815, 2820, -5341, -5341,
- -5341, -5341, 4561, 4565, -5341, 24, -5341, -5341, 3964, 93552,
- 4559, -5341, -5341, 4670, -5341, 5130, 2468, -5341, -5341, -5341,
- 4658, 4568, -5341, 234, 5086, -5341, -5341, 4511, -5341, 4570,
- -5341, 2082, -5341, -5341, 80955, -5341, 4603, -5341, -5341, -5341,
- -5341, -5341, -5341, 1256, -5341, -5341, 2825, 4450, 93552, -5341,
- 600, 600, 2752, 2828, 1675, 2791, -5341, 308, -5341, 1644,
- 1644, 1326, -5341, 93552, -5341, -5341, -5341, 2468, 346, 2837,
- 38597, 19472, 4873, 4434, -5341, 28700, 4586, 4177, -5341, -5341,
- -5341, 4869, 4587, 4450, -5341, -5341, 1599, 5023, 5154, 5159,
- -5341, 2752, -5341, -5341, -5341, 4588, -5341, 1644, -5341, -5341,
- -5341, -5341, -5341, 1758, -5341, 5252, -5341, 3673, -5341, -5341,
- -5341, 5166, 346, 346, -5341, -5341, -5341, 5305, 4748, -5341,
- -5341, -5341, 4177, -5341, -5341, 2752, 4591, -5341, -5341, -5341,
- 5078, 5274, -5341, -5341, -5341, -5341, 1758, -5341, 4732, -5341,
- -5341, -5341, -5341, -5341, -5341, 391, 5174, -5341, 5176, -5341,
- 3364, 5237, -5341, -5341, 2752, 600, 600, -5341, -5341, -5341,
- -5341, 5266, 4951, -5341, 5354, 4606, -5341, -5341, -5341, 1413,
- 421, 35604, 5129, -5341, -5341, 80955, -5341, -5341, -5341, -5341,
- 80955, -5341, 2848, -5341, -5341, 38597, -5341, -5341,108132, -5341,
- -5341, 36356, 4608, -5341, 234, -5341, 5164, -5341, 38597, -5341,
- -5341, -5341, 19472, -5341, -5341
+ 6560, -5651, -5651, 3890, 1172, 92605, -5651, 842, -5651, 458,
+ -5651, -5651, -5651, 3323, -5651, -5651, -5651, -5651, -5651, 386,
+ 477, -5651, 1202, -5651, -5651, 462, 79213, 1090, 432, -5651,
+ 82189, -5651, -5651, -5651, -5651, 82189, -5651, -5651, 92605, -5651,
+ -5651, 1658, -5651, 196, 2073, 601, 1808, 477, 1221, -5651,
+ -5651, 93349, 1202, 1792, -5651, -5651, -32, 92605, 1202, -5651,
+ 1221, 92605, -5651, 252, 266, -5651, -24, 3625, 101, 2214,
+ 2331, -5651, -5651, 1664, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 3627,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 505, -5651, -5651,
+ -5651, -5651, 3585, 2030, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 44868, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 101, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 94093, 92605, 1603, 1625,
+ 92605, 2274, 79957, 2274, -5651, 126, -5651, -5651, 2113, -5651,
+ 1781, -5651, 477, 2957, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 1774, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 2273,
+ 2591, 107, 2297, 1053, 2274, -5651, 2565, -5651, 2274, 2342,
+ 2274, -5651, 2274, 2274, -5651, 2274, 2274, 2274, -5651, -5651,
+ 1022, 92605, 66565, -5651, -5651, 1088, 2509, -5651, -5651, -5651,
+ -5651, -5651, -5651,107950, 477, 22862, 2611, -5651, -5651, 2156,
+ 4340, 1974, -5651, 2467, -5651, -5651, 92605, -5651, 2274,107950,
+ -5651, 2467, 67309, 3764, 48599, 13008, 2467, 477, 2553, -5651,
+ 1959, -5651, -5651, -5651, -5651, -5651, -5651, 92605, -5651, -5651,
+ -5651, 2412, 1221, 79957, -5651, -5651, -5651, -5651, -5651, 2711,
+ 22862, 225, 2480, -5651, -5651, 2368, 45612, 79957, 2655, 2591,
+ 2679, -5651, 1534, 1211, -5651, 2062, 2146, 2591, 1911, 2157,
+ 2591, 2556, 2274, 2274, -5651, -5651, 2941, 2941, 2941, 2389,
+ 2941, -5651, 2941, 2735, 2082, 335, -5651, -5651, 2108, 92605,
+ 2655, -5651, 2655, -5651, 2734, 2655, 2655, 2242, 2763, 2769,
+ 162, 1805, 205, 205, 2113, 40404, 1114, 2606, -5651, 2735,
+ 1465, 427, 1408, 1408, 1408, 1465, 101, 1465, -5651, 3010,
+ 1781, 3189, 92605, -5651, 2815, -5651, 2155, -5651, -5651, 374,
+ -5651, 2222, -5651, 2159, 1421, 68797, -5651, 2849, -5651, -5651,
+ -5651, -5651, -5651, -5651, 2693, 384, 2329, 2581, 2243, -5651,
+ 2733, 79957, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 92605, 2268, -5651, -5651, -5651, 2907, 2273, -5651, 2774, -5651,
+ -5651, -5651, -5651, 45612, -5651, -5651, -5651, 2928, -5651, -5651,
+ 82933, 622, 92605, 2924, -5651, 92605, -5651, 92605, -5651, 79957,
+ -5651, -5651, 92605, 2274, 2274, -5651, -5651, 2939, 2463, 2432,
+ 2245, 2314, 2630, -5651, 2532, -5651, 2375, 2421, 2574, 2388,
+ 2399, 2427, 395, -5651, 2403, -5651, 138, 2863, 124, 170,
+ 2867, 283, 334, 3004, 2890, 364, 1406, 366, 2675, 382,
+ -5651, -5651, -5651, -5651, 2943, 3054, 2493, -5651, 2500, -5651,
+ 3012, 2874, 1368, -5651, -5651, 1094, 2950, 1352, 45612,110089,
+ 80701,111515, -5651,111515,111515, -5651, 240, -5651, 2073, 92605,
+ 110802, -5651, 92605,102959, -5651, 13068, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 92605, -5651, -5651, -5651, -5651,
+ -5651, 2522, -5651, -5651, -5651, -5651, -5651, 2971, 1950, 2983,
+ -5651, 2554, -5651, -5651, -5651, -5651, -5651, 83677, -5651, 189,
+ 191, 2976, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 29022, 2572, 2587, 2602, 18242, 2609, 2613,
+ 2616, 2620, 2626, 2314, 2314, 2314, 2631, 2634, 2646, 2652,
+ 2656, 2665, 2674, -5651, 2681, 2701, 2746, 2749, 2751, 2755,
+ 23632, 2756, 2757, 2762, 36672, 2765, 2771, 2777, 2781, 22862,
+ 2631, 2792, 2794, -5651, 2795, 2796, 2800, 2801, 2802, 2803,
+ 2804, 2805, 3344, 2814, 2817, 2820, 2821, -5651, 2314, 2631,
+ 2631, 2823, 2824, 2827, 2830, 2831, 2834, 2835, 2838, 2845,
+ 2852, 2854, 2857, 2858, 2860, 2862, 204, 2865, 2868, 2872,
+ 2875, 2876, 2877, 2878, 2683, 2879, 2880, 2884, 2766, 2885,
+ 2886, 2887, 2888, 219, 2889, 2893, 239, 2896, 2901, 2912,
+ 2930, 2933, 2935, 2940, 29792, 30562, 29022, 15932, -5651, 92605,
+ 94837, -5651, -5651, 3165, 2318, 640, 353, 29022, -5651, -5651,
+ -5651, 3402, -5651, 3478, -5651, -5651, -5651, -5651, 3283, 3337,
+ -5651, 3367, -5651, -5651, 3385, 2847, -5651, 3615, -5651, -5651,
+ -5651, -5651, -5651, 2916, -5651, 2942, 3665, 3666, 2944, 2949,
+ -5651, -5651, 475, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 2925, 2967, -5651, 3615,
+ -5651, -5651, 71773, -5651,108663, -5651, -5651, 2463, 3150, 3533,
+ -5651, 3610, -5651, 3538, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 3764, -5651, -5651, 50109,
+ 3485, -103, -5651, -5651, 179, -5651, 210, 261, 62101, -5651,
+ 263, 62845, 294, 84421, 186, -5651, 69541, -5651, 299, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 2958,
+ -5651, 3077, 3289, 2977, 3748, 367, -5651, -5651, 206, 862,
+ 3064, 129, -5651, 1016, -5651, 367, -5651, 72517, 1141, 1775,
+ -5651, 878, -5651, 3638, -5651, -5651, 3071, 3060, 3091, -5651,
+ 2931, -5651, 2591, -5651, 399, -5651, 1141, 367, 1775, -5651,
+ 3259, 3341, 1364, 3289, -5651, 730, -5651, -5651, -5651, 3628,
+ -5651, 2987, -5651, 3355, -5651, 92605, 1279, 45612, -5651, -5651,
+ -5651, 2992, 45612, 45612, 1186, 970, 3165, 2994, 22862, -5651,
+ -5651, 5080, 52374, 3200, 1480, 726, -5651, -5651, 2073, 92605,
+ -5651, -5651, 904, -5651, 3424, -5651, 3003, -5651, 95581, 970,
+ 3668, -5651, -5651, -5651, 1237, 3405, -5651, 3014, -5651, -5651,
+ -5651, -5651, 45612, 92605, 2591, -5651, -5651, -5651, -5651, 3016,
+ -5651, -5651, 3217, 3105, -5651, 3041, -5651, -5651, 184, -5651,
+ -5651, 3801, -5651, 92605, -5651, 2655, -5651, -5651, 2655, -5651,
+ -5651, -5651, 2655, 2655, 2655, -5651, -5651, 2655, 2655, 3063,
+ -5651, 3349, 3354, 2733, -5651, 3039, 39660, 92605, 3808, -5651,
+ 4507, -5651, -5651, -5651, 3037, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 3609, 3796, 3796, -5651, 50864, -5651, -5651,
+ 3692, 2606, 100, 3535, 53884, 3678, 3772, 56149, -5651, 1141,
+ -5651, -5651, -5651, -5651, 1785, 92605, -5651, 1785, 1785, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 101, -5651, -5651, 2957, 3446, 70285, 92605, 1465, 427,
+ -5651, -5651, -5651, 2591, 369, 3433, -5651, 92605, -5651, -5651,
+ -5651, 2314, 3839, -5651, -5651, -5651, -5651, -5651, 45612, 3260,
+ 68797, 2274, -5651, -5651, -5651, 384, -5651, 1405, 92605, 45612,
+ 3103, -5651, 45612, 3059, 22862, -5651, -5651, 3542, 22862,107950,
+ 3427, -5651, -5651, 45612, 309, -5651, -5651, 45612, 3802, 45612,
+ 3073, -5651, 3733, 2606, -5651, -5651, 3070, -5651, -5651, 3746,
+ 92605, -5651, -5651, 73261, -5651, 71773, 45612, 3076, -5651, -5651,
+ 3449, 3225, -5651, -5651, -5651, -5651, -5651, -5651, 3167, -5651,
+ -5651, 3090, -5651, -5651, -5651, -5651, 3543, -5651, 3228, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 71773, -5651, -5651, 3550,
+ 3551, -5651, 68797, 2410, 6732, 94837, -5651, 3744, -5651, -5651,
+ -5651, 3628, -5651, -5651, 24402, -5651, 25172, -5651, -5651, -5651,
+ 3384, 452, -62, -5651, -5651, 3581, 92605, 3335, 3769, 3747,
+ -5651, -5651, -5651, -5651, -5651, -5651, 3595, 3130, 3738, 3128,
+ -5651, -5651, -5651, 3133, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, 45612, 51619, -5651, -5651, -5651, 3131, -5651, -5651,
+ -5651, 3140, 29022, 29022, -5651, 3879, 3879, 3879, 22862, 2240,
+ 1436, 3504, 22862, 22862, 22862, 2116, 3148, -5651, -5651, -5651,
+ 232, -5651, 22862, 22862, 37422, 3151, 1058, 3740, 22862, 3832,
+ 3832, -5651, 22862, 22862, 15932, 4506, 22862, 22862, 22862, 94837,
+ 37422, 3601, 3155, -5651, 3153, 2317, 22862, 2354, 22862, -5651,
+ -5651, 22862, 22862, 22862, 22862, 3162, 31332, 3163, 22862, 22862,
+ 3164, 3309, 3879, 3879, 2405, 270, -5651, -5651, -5651, 3879,
+ 3879, 3180, 22862, 22862, 16702, 22862, 22862, 2476, 22862, 22862,
+ 22862, 22862, 22862, 22862, -5651, 22862, 22862, 1116, 22862, 22862,
+ 45612, 22862, 22862, 3841, 45612, 22862, 22862, 3844, 22862, 22862,
+ 45612, 22862, -5651, 22862, 3471, 3471, -5651, 22862, 16702, 22862,
+ 3182, 38172, 22862, 22862, 22862, 23632, -5651, 23632, -5651, -5651,
+ 3195, 3340, 376, 101, 22862, 3191, -5651, -5651, -5651, -5651,
+ 22862, 22862, 22862, 31332, -5651, -5651, -5651, 339, -5651, -5651,
+ -5651, 25942, 31332, 3190, 31332, 31332, 3813, 2352, 31332, 31332,
+ 31332, 31332, 31332, 31332, 31332, 32102, 32872, 31332, 31332, 31332,
+ 31332, -5651, 79957, 29022, 47844, 3208, 3858, -5651, 74005, -5651,
+ 1643, 1018, -5651, 2591, 4340, 34412, -5651, 3210, -5651, 3710,
+ 45612, 3218, 3223, 3885, 71773, 68797, 2410, 3241, -5651, 1572,
+ 344, -5651, 73261, 92605, -5651, -5651, -5651, 3946, 22862, -5651,
+ -5651, -5651, -5651, -5651, 3230, 301, 3236, -5651, 275, -5651,
+ -5651, -5651, -5651, -5651, 92605, -5651, 85165, 49354, 3334, 3898,
+ 3253, 2655, 85909, 92605, 45612, 92605, 96325, 92605, 92605, 45612,
+ 71773, 45612, -5651, -5651, -5651, 940, 367, 92605, 367, 1775,
+ 967, 367, 3876, -5651, -5651, 1313, 1313, -5651, -5651, -5651,
+ -5651, -5651, -5651, 367, 92605, 92605, 367, 68797, -5651, 1775,
+ 1464, -5651, 3546, 3339, -5651, -5651, -5651, 3587, -5651, -5651,
+ 3916, 3267, -5651, 3611, -5651, 3368, -5651, -5651, 45612, -5651,
+ -5651, 1775, -5651, 1775, 1775, 3918, 367, 367, 367, -5651,
+ 41148, 3277, 3281, -5651, 3279, -5651, 3288, -5651, 3921, -5651,
+ -5651, -5651, 4074, 3927, 3293, -5651, -5651, 3864, 998, -5651,
+ 3724, -5651, 3850, -5651, 22862, 3165, 19012, 3582, -5651, -5651,
+ 3586, 3591, 3592, -5651, -5651, -5651, -5651, 3743, 3597, -5651,
+ 2591, 3598, -5651, -5651, -5651, 3319, -5651, -5651, -5651, 79957,
+ 34412, -5651, 3325, -5651, 3346, -5651, 218, -5651, -5651, 3999,
+ 3447, 22862, -5651, -5651, 45612, 3835, -5651, 2591, 1534, 92605,
+ -5651, -5651, 4079, -5651, 1258, 4001, -5651, -5651, 3461, 1911,
+ -5651, 4001, 1353, -5651, -5651, 2941, 3541, -5651, -5651, -5651,
+ 79957, -5651, -5651, -5651, -5651, -5651, -5651, 92605, -5651, 73261,
+ 68797, 79957, 2655, 2655, -5651, 45612, -5651, -5651, -5651, 92605,
+ 92605, 2655, 2655, 2655, 3392, -5651, 3118, 3358, 3365, 3371,
+ 3373, 699, 3375, 41892, 2558, 212, 3981, 4003, -5651, 3954,
+ 2590, 3954, -5651, -5651, 41892, 41148, 3382, 3808, -5651, -5651,
+ -5651, -5651, 79957, 3381, -5651, -5651, 3379, -5651, 22862, 4107,
+ 4036, 3692, -5651, -5651, 54639, 1790, 83677, -5651, -5651, -5651,
+ 3736, 3928, 1096, -5651, 3387, 3516, -5651, 125, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 22862, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 344, 221, -5651, -5651, -5651,
+ 465, 3763, 1897, -5651, -5651, 79957, 1897, -5651, 3399, 3705,
+ -5651, 3706, 77, -5651, 45612, -5651, -5651, -5651, -5651, -5651,
+ 45612, 3401, -5651, 3593, 92605, 2268, 3407, 3408, 3165, 3910,
+ -5651, 3542, -5651, 3165,102246, -5651, 4131, 5701, 164, 3465,
+ -5651, -5651, -5651, -5651, -5651, 45612, -5651, -5651, 1653, 3609,
+ 3498, -5651, 3073, 38, 92605, 4076, 3983, -5651, -5651, 4000,
+ 57637, -5651, -5651, 4007, 3429, -5651, -5651, 3431, 277, 92605,
+ 45612, 45612,107950, -5651, -5651, 3436, -5651, -5651, -5651, -5651,
+ 3938, -5651, -5651, 73, -5651, 42636, 42636, 138, 2863, -5651,
+ -5651, 2867, -5651, -5651, 2890, -5651, 1406, -5651, 2675, -5651,
+ -5651, -5651, -5651, 1988, -5651,107950, -5651, 3921, 22862, 47100,
+ 3165, -5651, -5651, 45612, -5651, 4083, -5651, -5651, 99301, 160,
+ -5651, -5651, 305, 45612, -5651, -5651, -5651, 4077, 3583, 92605,
+ -5651, -5651, 4137, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 92605, 92605,107950,107950, -5651, -5651, 1201, 1572, -5651, 4194,
+ 94837, 22862, -5651, 3453, -5651, 3455, 3457, 2048, 3815, 22862,
+ 22862, -5651, 3134, 485, 247, -5651, 3459, 3472, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 3462, -5651, -5651, 575,
+ 593, 3463, -5651, -5651, -5651, 3464, 101, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 4122, -5651, 348,
+ -5651, -5651, -5651, 22862, 631, 927, 955, 3481, 234, 307,
+ 1025, 3131, 2072, 3473, 37422, 94837, 3879, 3470, 387, 3879,
+ 3474, 1115, 1269, 1178, 1606, 1689, -5651, 419, -5651, 1554,
+ 1561, -5651, -5651, 3476, 3479, 3879, 3480, -5651, 3483, 3489,
+ 3492, -5651, 1620, 381, 3495, -5651, -5651, 19782, 20552, 21322,
+ 3735, 3497, -5651, -5651, 1627, 1715, 3879, 3499, 2138, 1631,
+ 1669, -5651, 2101, 1705, 1720, 3506, 2994, 2165, 2238, -5651,
+ -5651, -5651, -5651, 3482, 2253, 2276, 3488, 3509, 2280, 2308,
+ 45612, 3510, 3512, 2377, 45612, 1818, 2378, 3496, 1824, 371,
+ 3515, 3518, 2381, 3521, 1829, -5651, 94837, 92605, 3522, 3466,
+ 350, 3530, 2444, 4506, 4506, -5651, 22862, 3531, 268, 94837,
+ 2544, 1301, -5651, 640, -5651, -5651, -5651, -5651, 258, -5651,
+ 3486, 640, 3519, 2810, 15932, -5651, 1251, 2073, 31332, 31332,
+ 3524, 31332, 31332, 513, 426, 426, 3536, 3536, 331, 264,
+ 23632, 513, 23632, 513, 3536, 3536, 3536, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 4048, 3534, 3539, 3545, 3547,
+ 1734, 3532, -5651, -5651, -5651, -5651, -5651, -5651, 783, 3940,
+ -5651, 3730, 1151, 22862, -5651, 3559, 4298, 4300, 4301, -5651,
+ -5651, -5651, -5651, 71773, 71773, 3548, -5651, 1353, 3908, 4205,
+ 73261, 4210, -5651, 3553, 42636, 42636, -5651, 3555, -5651, 22862,
+ 3557, 3564, 3565, 97069, -5651, 4223, 344, 74749, 3165, 71773,
+ 636, -5651, 92605, 92605, -5651, 84421, 4230, 1379, 3854, -5651,
+ 3573, 3574, -5651, 344, -5651, 3570, 988, 322, -5651, 3577,
+ 3580, -5651, -5651, -5651, -5651, 22862, 3561, 92605, 92605, -5651,
+ -5651, -5651, -5651, 92605, -5651, -5651, -5651, -5651, -5651, -5651,
+ 2591, 22862, 92605, 367, -5651, -5651, -5651, 367, 92605, 367,
+ -5651, 2591, 4240, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 367, -5651, -5651, -5651, -5651, -5651, 3756,
+ 1141, 2931, 3876, 4001, 1775, 45612, 367, 367, 22862, -5651,
+ -5651, -5651, -5651, 4114, 3609, 19012, 3589, 3588, -5651, -5651,
+ 107950, 92605, 94837, 4322, -5651, -5651, 4137, 79957, 86653, 45612,
+ -5651, -5651, -5651, 464, -5651, -5651, -5651, -5651, -5651, 3165,
+ 2480, 2652, -5651, 3594, 3165, -5651, -5651, 4278, -5651, -5651,
+ -5651, -5651, 2591, -5651, -5651, 5084, -5651, 45612, -5651, -5651,
+ 53129, 53129, 1639, -5651, 97813, -5651, 2591, 3165, 45612, 1152,
+ 305, -5651, 4336, -5651, -5651, 3717, -5651, -5651, -5651, 3602,
+ -5651, 4024, -5651, -5651, -5651, -5651, -5651, -5651, 3605, -5651,
+ 4265, -5651, 2527, 102, 92605, 81, 77, -5651, 92605, 92605,
+ 45612, -5651, 92605, 2655, -5651, -5651, 2655, -5651, -5651, 45612,
+ 92605, 92605, 2655, 22862, 41892, -5651, -5651, -5651, -5651, -5651,
+ 41892, -5651, 1567, -5651, 3825, 1928, 1928, -5651, -5651, -5651,
+ -5651, -5651, 4244, 3954, 3954, 41892, 4247, 4218, -5651, 92605,
+ 3963, 1288, -5651, 50864, 92605, 3165, 22862, -5651, 3656, 4036,
+ -5651, 908, 965, 125, -5651, 3905, 305, -5651, -5651, 56149,
+ 3974, 56149, 56149, 94837, 3871, 22862, -5651, 4302, 3640, 3165,
+ 2527, 2591, -5651, 344, 344, 3870, 4160, 4161, 3773, 2591,
+ 4163, 4164, 4168, -5651, -5651, -5651, -5651, -5651, 3251, 708,
+ 188, 1351, 68797, 4123, 1353, 4235, 3658, -5651, 45612, 4324,
+ -5651, -5651, -5651, -5651, 22862,107950, -5651, -5651, -5651, -5651,
+ 3683, 3687, 3689, 3694, 3695, 3697, 3698, 3699, 3700, 3703,
+ 3704, 3713, 3714, 3715, 3718, 3720, 3722, 3726, 3727, 3731,
+ 3737, 3739, 3741, 3742, 3745, 292, -5651, -5651, 3754, -5651,
+ -5651, -5651, -5651, -5651, 1928, -5651, 4177, 57637, -5651, 41148,
+ 3882, 4315, -5651, -5651, 3719, 45612, 73261, 71773, -5651, -5651,
+ -5651, -5651, 3723, 1201,103672, -5651, -5651, 4462, 68797, 4173,
+ -5651, 3721, -5651, 3725, 4214, 4226, -5651, 94837,101533, -5651,
+ -5651, 3165, -5651, -5651, 3734, -5651, -5651, 3864, 3796, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 3761, 4015, 4133, -5651, -5651, -5651,
+ 3388, -5651, -5651, -5651, -5651, -5651, -5651, 4369, 75493,104385,
+ 3751, -5651, -5651, -5651, -5651, 2135, -5651, -5651,111515,111515,
+ 111515, 4137, -5651,100045, 22862, -5651, 1830, -5651, 22862, -5651,
+ -5651, 22862, -5651, 3165, 2516,112249, 76237, -5651, 76237,112249,
+ 22862, -5651, 3749, -5651, 4373, 4377, -5651, -5651, -5651, 22862,
+ -5651, 22862, 22862, 1831, 22862, 22862, 22862, 22862, -5651, 22862,
+ -5651, 22862, 22862, -5651, 31332, -5651, 3752, 3750, -5651, -5651,
+ 3753, -5651, 22862, 22862, -5651, -5651, -5651, 22862, 22862, 22862,
+ -5651, -5651, 3758, -5651, -5651, -5651, -5651, 22862, 22862, 22862,
+ -5651, 22862, 3831, 22862, 3883, 22862, 4102, 22862, -5651, 26712,
+ -5651, 3762, -5651, -5651, 22862, 22862, -5651, 22862, 22862, 22862,
+ -5651, -5651, -5651, 22862, -5651, 4319, 22862, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 22862, -5651, 226, 27482, -5651,
+ 22862, 22862, 22862, -5651, -5651, 22862, 3759, 3760, -5651, 92605,
+ 2501, 3184, 305, 3770, -5651, -5651, 3781, 3783, 2994, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 1058, 31332, 391, 31332,
+ 2073, 3053, 15932, -5651, 1317, 2073, 4506, 4506, 92605, 4470,
+ 3774, -5651, 22862, 22862, 16702, 22862, 94837, 22862, 3775, 3771,
+ -5651, 3778, 31332, -5651, -5651, 3791, -5651, 2219, 3184, 3878,
+ 4237, -5651, 3165, 34412, 4291, -5651, 45612, 4292, 4339, 3997,
+ -5651, 71773, 68797, 4456, 4458, -5651, 3165, -5651, 3800, -5651,
+ -5651, -5651, 3803, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 351, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 71773, -5651, -5651, -5651, -5651, 344, -5651, 3804, 3810,
+ -5651, 17472, -5651, 344, 344, -5651, -5651, 12055, -5651, -5651,
+ 1050, 4104, 4365, -5651, -5651, 92605, 275, 92605, -5651, 49354,
+ 49354, 87397, 3165, 772, -5651, -5651, -5651, -5651, 3165, -5651,
+ -5651, -5651, -5651, -5651, -5651, 3833, -5651, -5651, -5651, 4573,
+ -5651, -5651, 4240, -5651, 2606, 1775, -5651, -5651, 3165, 38172,
+ 2075, -5651, -5651, -5651, 19012,105098, -5651, 3820, 3826, 3828,
+ -5651, 45612,105811, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 3834, -5651, -5651, 19012, 3848, -5651, 4001,
+ -5651, 3723, 1760, 3852, 3836, -5651, -5651, -5651, -5651, -5651,
+ -5651, 216, 231, 752, 2606, -5651, -5651, 194, -5651, -5651,
+ -5651, -5651, -5651, 1333, -5651, -5651, 4001, -5651, 1258, 2591,
+ 3884, -5651, 305, 4075, -5651, -5651, 2527, 121, 121, 4418,
+ 102, 4290, -5651, 4123, 4498, 4422, 4423, -5651, 3251, -5651,
+ -5651, -5651, 92605, -5651, 1884, -5651, -5651, -5651, -90, -5651,
+ 45612, 1889, 4507, 4507, -5651, 1928, 241, -5651, 31332, 4579,
+ -5651, 4343, 41892, 4473, 4474, -5651, 41892, -5651, -5651, 2179,
+ -5651, -5651, 71029, -5651, -5651, -5651, 3165, 223, 2124, 22862,
+ 92605, -5651, 3656, 3919, -5651, -5651, 965, -5651, -5651, -5651,
+ -5651, 56149, -5651, -5651, -5651, 1790, 3849, 2124, 100, 3855,
+ -5651, -5651, 74749, 71029, -5651, 4233, 4234, 1798, -5651, -5651,
+ -5651, -5651, 344, 344, -5651, 343, 344, -5651, -5651, 584,
+ -5651, -5651, 573, 385, 3251, -5651, 2591, 2591, 2591, 2591,
+ 305, 2591, 2591, 2234, -5651, 540, -5651, -5651, 79957, -5651,
+ 4603, 4616, -5651, 4617, -5651, -5651, 893, -5651, 2635, 1069,
+ -5651, 900, -5651, 4409, 92605, 4597, 3658, -5651, 517, 2268,
+ 3165, -5651, 4368, 3872, 3873, 305, 3875, 305, 305, 2591,
+ 2591, 3833, 2591, 305, 2591, 2591, 2591, 2591, 2591, 2591,
+ 2591, 305, 2591, 1028, 3458, 260, 2591, 305, 5701, -5651,
+ -5651, -5651, -5651, 41148, 47, 2606, -5651, 55394, 4414, 3887,
+ -5651, 1353, -5651, -5651, 1913, 4536, -5651, 3886, -5651, -5651,
+ 120, 4084, 3896, 58381, 68797, 68797, -5651, 2897, -5651, 45612,
+ -5651, 4528, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 64333, -5651, -5651, 4206, 2110, 3891, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 3888, -5651, -5651, -5651, -5651, -5651, 3449, -5651, -5651, -5651,
+ -5651, -5651,106524, 3889, 3165, 22862, 3165, 3165, 22862, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 3899, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, 3899, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 3904, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 3906, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 4591, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 4537, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 3899, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 3899, -5651, 3899, -5651, 4544,
+ 3899, 3899, -5651, 3909, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 3922, 3923,
+ 3924, 2994, -5651, 22862, 22862, 2504, 233, 233, 22862, 1961,
+ 2008, 431, -5651, 2528, 2621, 2647, 1608, 94837, -5651, -5651,
+ 2682, 2689, 2721, 2737, 2767, -5651, 2046, 4018, 2084, 3165,
+ 22862, 3165, 22862, 3165, 22862, 3165, 23632, 2768, -5651, 2256,
+ 3901, -5651, 2259, 4100, 2772, 2773, 2305, -5651, 3068, 4679,
+ 2344, 23632, 2797, 2807, 2085, 2120, 2811, 94837, 92605, 3926,
+ 3929, 3929, 407, -5651, 3932, -5651, -5651, -5651, 3933, -5651,
+ 22862, 22862, 3931, 640, -5651, 22862, 2073, 31332, 489, 31332,
+ -5651, -5651, 4048, -5651, 22862, -5651, 4516, 3939, 4159, 3942,
+ 3944, 3735, 3950, 3958, 3959, 3930, 3165, -5651, -5651, 92605,
+ 3962, 353, -5651, 3833, -5651, 4571, -5651, 4673, 3965, 3984,
+ 3968, 3791, -5651, 71773, -5651, 45612, -5651, 4626, 3431, -5651,
+ 68797, 68797, -5651, 81445, -5651, 56893, 92605, 92605, -5651, 22862,
+ -5651, -5651, 636, 4724, 4727, -5651, 29022, 2652, -5651, 3165,
+ -5651, -5651, -5651, -5651, -5651, 24, 4529, -5651, -5651, -5651,
+ -5651, -5651, 344, -5651, 344, -5651, 3580, -5651, -5651, -5651,
+ -5651, 3490, -5651, 1141, -5651, -5651, -5651, 367, 3978, -5651,
+ 344, 1474, -5651, 19012, 3982, 3979, -5651, 4447, -5651, 1058,
+ 190, -5651, 3609, -5651, 3985, 88141, -5651, 3986, -5651, -5651,
+ 4530, -5651, -5651, 4335, 53129, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 1141, 4031, 4216, -5651,
+ -5651, -5651, -5651, -5651, 3903, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 45612, 4568, 68797, 1069, 4364,
+ 45612, 45612, 10240, 9256, 3251, 3991, 92605, -5651, -5651, 2591,
+ -5651, -5651, 1884, -5651, -5651, 3658, 3992, 527, 3992, -5651,
+ -5651, -5651, -5651, 353, 1928, 1928, 3389, 4477, 41892, 41892,
+ 4296, 4480, 22862, 4002, -5651, 92605, -5651, 1272, -5651, 4402,
+ -5651, -5651, 22862, -5651, -5651, -5651, -5651, 3165, 4729, 4004,
+ -5651, -5651, -5651, -5651, -5651, -5651, 22862, -5651, 54639, 22862,
+ 4005, 4008, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 226,
+ 226, -5651, -5651, 226, 226, -5651, -5651, -5651, -5651, 226,
+ 226, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 708, -5651, 4752, 1320, -5651, 4578, -5651, -5651, -5651,
+ -5651, 1070, 305, 305, 305, 3458, 1707, -5651, 2635, 2035,
+ 4341, -5651, 8829, 2073, 211, 4504, 2161, -5651, 2355, -5651,
+ 4740, -5651, 230, -5651, -5651,107950, 207, 242, -5651, 284,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 2606, -5651, 92605,
+ 4356, 4545, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 22862,
+ -5651, 4666, -5651, -5651, -5651, -5651, 77, 77, -5651,107950,
+ -5651, -5651, 190, -5651, -5651, 4528, 4297, -5651, 1101, -5651,
+ 3899, 3899, -14, -5651, 3904, 4574, 3904, -5651, -5651, 4411,
+ 3422, 2594, 4411, -5651, 2594, 3904, -5651, 4025, -5651, 4411,
+ -5651, 2594, 3899, -5651, 3899, -5651, -5651, 2594, 3899, -5651,
+ 4026, 3904, 4411, 519, 2041, 3904, -5651, 3899, 1492, 3899,
+ 3899, 3899, 4238, 3899, 3899, -5651, 3904, -5651, -5651, -5651,
+ -5651, -5651, -5651, 156, 3899, 3899, 3899, 3899, 3906, 4683,
+ 4684, -5651, 92605, -5651, 22862, -5651, -5651,111515, 92605, 431,
+ 3165, 2848, -5651, -5651, -5651, 2009, 2968, -5651, -5651, -5651,
+ 4786, -5651, -5651, 3899, -5651, 2009, -5651, -5651, -5651, -5651,
+ -5651, -5651, 2009, -5651, -5651, -5651, -5651, 4033, 4506, 4506,
+ -5651, 4753, 4569, 4656, 2818, 22862, 22862, -5651, 22862, -5651,
+ -5651, -5651, 1799, 4044, 4518, -5651, -5651, -5651, -5651, -5651,
+ -5651, 22862, 22862, 22862, 3165, 3165, 3165, 4506, -5651, -5651,
+ 3336, -5651, -5651,112249, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 260, 4506, -5651, -5651, 22862, 22862, -5651, -5651, -5651,
+ 92605, 3184, 4049, 4333, -5651, -5651, -5651, 3184, 4196, -5651,
+ -5651, 3184, 305, -5651, -5651, -5651, 2366, 640, -5651, 22862,
+ 2073, 4638, 4060, 4782, 4064, -5651, -5651, -5651, -5651, -5651,
+ -5651, 22862, 81445, -5651, 4065, 4066, -5651, -5651, -5651, 4503,
+ 22862, 4686, 4636, -5651, 3184, 92605, -5651, -5651, -5651, 68797,
+ 3553, 3553, 88885, -5651, -5651, -5651, -5651, 1873, 344, 344,
+ -5651, 3165, -5651, -5651, 4078, 4080, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 1141, -5651, 38172, 2606, 22092, -5651,
+ -5651, -5651, 19012, -5651, 4081, 38172, 4546, -5651, -5651, -5651,
+ 4414, 198, -5651, -5651, 89629, -5651, 4082, -5651, 4072, -5651,
+ 1932, 4416, 4688, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 4085,
+ -5651, -5651, -5651, 4101, 4103, 4106, -5651, 4087, -5651, 45612,
+ -5651, -5651, 4113, -5651, -5651, 38916, 4707, 4138, 4457, 45612,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 4459, 344, 344, 344, 344, 344, 344, 344, 344, -5651,
+ 344, 344, 1773, 92605, 344, 344, -5651, -5651, -5651, 4664,
+ -5651, 8206, -5651, 344, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 1159, 4681, 1195, -5651, -5651, 1238, 4832,
+ 4108, -5651, 4245, -5651, -5651, -5651, -5651, 4212, 4245, 3658,
+ 2744, -5651, -5651, -5651, 4592, -5651, -5651, -5651, 4594, 3165,
+ 92605, -5651, -5651, -5651, 1609, 2060, 4726, 2124, 4111, 92605,
+ 2124, 965, 125, 3165, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 579, -5651, 79957,
+ -5651, -5651, -5651, -5651, -5651, 4867, 4868, -5651, -5651, -5651,
+ -5651, 4306, 664, 4225, 1638, 4687, 4517, 4690, 2315, 2376,
+ 344, 4692, 4835, -5651, 510, 344, 4693, 4744, 4198, 4754,
+ 4694, -5651, 4207, 4517, 4695, 4323, 4699, 4701, 4703, -5651,
+ -5651, 9256, -5651, -5651, -5651, -5651, 151, 43380, -5651, -5651,
+ -5651, -5651, -5651, 4318, 22862, 22862, 4725, 92605, 4731, -5651,
+ 4541, -5651, 92605, -5651, 1058, -5651, -5651, -5651, 4445, -5651,
+ 2373, -5651, -5651, 2394, -5651, -5651, 2407, -5651, -5651, -5651,
+ -5651, 4807, -5651, 4497, 3241, -5651, 1058, 3165, 4353, 4624,
+ 4624, -5651, -5651, -5651, 4736, -5651, -5651, -5651, -5651, 4787,
+ -5651, 4411, 344, 4411, -5651, -5651, 1060, -5651, 1060, -5651,
+ 484, 3485, 76981, 4411, -5651, -5651, -5651, -5651, 4630, 2594,
+ 2009, 76237, 555, 4551, -5651, -5651, -5651, 1060, 2941, -5651,
+ -5651, 4411, -5651, -5651, -5651, 2941, 1060, -5651, 4634, -5651,
+ -5651, -5651, 1060, 4411, 4370, 92605, 4846, 2594, -5651, -5651,
+ 100789, 2594, 1060, 4846, 4710, -5651, 2009, 4891, 2594, 4411,
+ 1060, 1060, -5651, 290, 4166, -5651, 3165,111515, -5651, -5651,
+ 4167, 4169, 4170, 4171, -5651, -5651, 2408, 4174, -5651, -5651,
+ -5651, -5651, 4172, 4175, 22862, 2941, 4656, 56149, 4178, -5651,
+ -5651, 2836, 2126, 2419, 4454, 4408, -5651, 4348, -5651, 2841,
+ 3165, 3165, 1632, 3904, -5651, -5651, -5651, -5651, 4808, 3899,
+ -5651, 4893, -5651, 3899, 2009, -5651, -5651, -5651, -5651, -5651,
+ 4181, 2435, 1858, 2855, 2866, -5651, -5651, -5651, 4182, -5651,
+ -5651, 440, -5651, 4183, -5651, 2438, 4902, 368, 22862, -5651,
+ 4184, -5651, -5651, 92605, -5651, -5651, 4506, 1194, -5651, 2449,
+ -5651, -5651, -5651, 4186, 3553, -5651, -5651, 59125, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 4001, -5651,
+ 4000, 2652, -5651, -5651, -5651, -5651, 4565, 4188, 4187, -5651,
+ -5651, -5651, 4185, 101, 38172, -5651, -5651, -5651, 4190, 4191,
+ -5651, -5651, -5651, 88141, -5651, 2452, -5651, -5651, 4928, 19012,
+ 2591, 2591, 2591, 2441, 4197, -5651, 79957, 4199, 4200, 46356,
+ 2099, 92605, 2464, -5651, -5651, -5651, -5651, -5651, 2083, -5651,
+ 1778, 2655, 464, 464, -5651, 4195, 45612, -5651, 344, -5651,
+ 308, 324, 326, 336, -5651, 3833, 305, 305, 2591, 2591,
+ 344, 305, 79957, 2089, 305, 3833, 3833, 346, 2591, 2936,
+ 308, -5651, -5651, -5651, 305, 308, 192, -5651, -5651, 7589,
+ -5651, 68053, 9256, 77725, 3634, -5651, -5651, 2040, 4327, -5651,
+ -5651, -5651, 4558, 1195, -5651,100789, -5651, -5651, -5651, -5651,
+ -5651, 1238, 1277, -5651, -5651, -5651, 4203, 77725, -5651, -5651,
+ 2591, -5651, 4935, 4958, -5651, -5651, 4613, 22862, 4213, 22862,
+ 4215, 2472, -5651, 464, -5651, 464, -5651, 1609, 4932, 4934,
+ 4884, 4937, 2060, -5651, 2387, -5651, -5651, -5651, -5651, -5651,
+ -5651, 965, -5651, -5651, 4220, -5651, -5651, -5651, -5651, 4559,
+ -5651, 4977, -5651, 4678, 44124, 2655, -5651, 2096, 4266, -5651,
+ -5651, -5651, 4870, 2924, 2924, 1202, 2924, 89629, 92605, 45612,
+ 1288, 424, 4852, 2274, 2141, 4271, 4791, 2924, 2924, 90373,
+ 1202, 38172, -5651, -5651, -5651, 2924, -5651, 2924, 45612, 91117,
+ 1202, -5651, -5651, -5651, 92605, -5651, 2924, 1202, -5651, 1202,
+ 1202, 89629, -5651, 12082, -5651, -5651, 38916, 1765, -5651, 3165,
+ 4506, 4627, -5651, -5651, 4349, 2591, 4598, -5651, -5651, 4708,
+ -5651, 92605, 265, -5651, 305, -5651, 305, -5651, 305, -5651,
+ -5651, 31332, -5651, 3555, -5651, -5651, 101, -5651, -5651, 1887,
+ -5651, -5651, 4600, 4414, 4746, -5651, -5651, 92605, -5651, 4704,
+ 4730, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 78469, 344, -5651, -5651, 2477, -5651, -5651,
+ 2483, -5651, -5651, -5651, -5651,100789, -5651, 2484, -5651, 65821,
+ -5651, -5651, -5651, -5651, 4846, 4241, -5651, -5651, -5651, 4262,
+ -5651, -5651, -5651, -5651, -5651, 4891, -5651, -5651, 61357, -5651,
+ -5651, -5651, 77725, 4907, -5651, -5651, -5651, -5651, -5651, -5651,
+ 4999, -5651, -5651, 4251, 2124, -5651, 4254, -5651, -5651, -5651,
+ -5651, 22862, -5651, 4490, -5651, 4596, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 3833, -5651, -5651, -5651,
+ 4261, -5651, 305, -5651, 22862, -5651, -5651, 4263, 4540, 2124,
+ -5651, -5651, 4366, 4237, 4268, -5651, 4636, 92605, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 4315, -5651, -5651, -5651, 38172,
+ 59869, 4270, 4269, -5651, 344, -5651, -5651, 92605, -5651, -5651,
+ 3833, 4640, -5651, 2488, -5651, -5651, -5651, -5651, 92605, 4274,
+ 4478, 92605, 92605, -5651, -5651, 4277, 92605, -5651, -5651, -5651,
+ 38916, 4279, 4903, 4904, 464, -5651, 2655, 4829, 46356, -5651,
+ 2655, 2655, 63589, 92605, 4282, 2591, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 4286, -5651, -5651, -5651, -5651,
+ -5651, 2591, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 5017, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 4664, -5651, -5651,
+ -5651, -5651, 4287, 4288, 92605, -5651, 65077, -5651, -5651, -5651,
+ -5651, 4970,107950, -5651, -5651, -5651, 4873, 211, 92605, 4289,
+ 92605, 4294, -5651, -5651, 4295, -5651, 4289, 4294,107237, -5651,
+ -5651, 1277, -5651, -5651, -5651, 4303, -5651, -5651, 65821, 3634,
+ -5651, -5651, -5651, -5651, -5651, 4308, 4309, 3165, 92605, 3165,
+ 92605, -5651, 4959, 4959, -5651, 2941, 2941, 5027, 2941, -5651,
+ 5029, 5030, 2387, -5651, -5651, 5065, 664, 4691, 2035, 2073,
+ 1202, 2073, 4971, -5651, -5651, 92605, 46356, 89629, 46356, -5651,
+ 4810, -5651, 71029, 46356, 2924, 92605, -5651, 4974, -5651, 4945,
+ 46356, 46356, -5651, -5651, 89629, 4321, -5651, 2124, 2611, 92605,
+ 46356, -5651, -5651, -5651, 3184, 4794, 46356, 89629, -5651, 89629,
+ -5651, 4538, 4822, 2321, -5651, 4326, 4328, 92605, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 1265, -5651, -5651, 2489, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 802, -5651, 4531,
+ -5651, 1887, -5651, -5651, -5651, 45612, -5651, -5651, -5651, -5651,
+ -5651, -5651, 2009, 2941, 2009, 4846, -5651, 92605, -5651, 22862,
+ -5651, 92605, 5082, -5651, -5651, -5651, -5651, 14905, -5651, -5651,
+ -5651, 4655, -5651, 2496, -5651, 4337, 22862, -5651, -5651, 2870,
+ -5651, -5651, 4338, -5651, 4344, 3849, -5651, 3976, 4468, 4298,
+ 4300, 4301, 4523, 4685, -5651, 4532, -5651, 3352, 4503, 4346,
+ 31332, -5651, -5651, 1994, -5651, -5651, -5651, -5651, 94837, -5651,
+ -5651, 4345, -5651, 38172, 19012, -5651, -5651, 4763, -5651, 2503,
+ 2124, 4351, 92605, 4355, 2521, 2533, 92605, 4357, -5651, 22862,
+ 2655, -5651, -5651, 46356, 45612, -5651, 4820, 1456, 46356, 46356,
+ 4352, 1918, 4354, 4358, 502, 1966, 4360, 4026, 1985, 60,
+ 519, 412, 2029, 4362, 2045, 4363, 2050, 2071, 2111, 2118,
+ 2134, 4367, 5059, -5651, -5651, 4372, 4374, 4375, 4376, 4378,
+ 4379, 4380, 4381, 4382, -5651, -5651, 45612, -5651, -5651, 198,
+ 192, -5651, 77725, -5651, 1619, 4563, -5651, -5651, 5138, -5651,
+ 4725, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 4371, -5651,
+ 4384, -5651, -5651, 77725, -5651,109376, -5651, -5651, -5651, 98557,
+ 5287, 2534, 2537, 444, -5651, -5651, -5651, -5651, 2941, -5651,
+ 2941, 2941, -5651, 4391, -5651, -5651, -5651, 5026, -5651, 5028,
+ -5651, 473, 1806, -5651, 46356, 1653, 4866, 4869, 5086, -5651,
+ 46356, 4191, 92605, -5651, -5651, 1913, -5651, 38172, -5651, -5651,
+ 4877, 4881, -5651, 4874, 1765, -5651, 92605, -5651, -5651, -5651,
+ 4489, -5651,107950, 4576, 5085, 5105, -5651, 92605, 91861, 31332,
+ -5651, -5651, 5018, -5651, 3609, -5651, -5651, -5651, -5651, -5651,
+ 3165, 4388, -5651, 61357, -5651, -5651, -5651, -5651, -5651, 2124,
+ -5651, -5651, -5651, 1367, -5651, 5130, 1372, -5651, -5651, 1217,
+ -5651, -5651, -5651, -5651, 92605, 4397, 4485, -5651, -5651, 4471,
+ -5651, -5651, 2601, -5651, 70, 60613, -5651, -5651, -5651, 1353,
+ 92605, -5651, 5155, 4400, 708, 1353, 1353, 4401, 92605, 2898,
+ 46356, 4820, 1527, 4405, 121, -5651, 121, -5651, -5651, 3035,
+ 65821, -5651, -5651, 3523, 92605, 4407, 5171, -5651, -5651, 4620,
+ -5651, 92605, -5651, -5651, -5651, 2161, -5651, 3991, 3992, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 5138, 4975, 2547, -5651,
+ -5651, -5651, -5651, -5651, 5127, -5651, 5132, 4415, 4417, -5651,
+ -5651, -5651, -5651, 46356, 1144, -5651, -5651, 5055, -5651, 5102,
+ 5106, 1765, -5651, 45612, 4989, 74749, -5651, -5651, -5651, 1202,
+ -5651, 92605, 46356, 45612, -5651, -5651, 4191, 1333, 22862, 4780,
+ 5138, -5651, 4625, 4628, -5651, -5651, 2551, -5651, -5651, 353,
+ 4914, -5651, -5651, 92605, -5651, -5651, -5651, 3976, -5651, -5651,
+ 4562, 352, -5651, 2568, -5651, -5651, -5651, 3184, -5651, 4431,
+ -5651, 4801, 344, 344, 4804, 344, 344, 344, 344, 4440,
+ 2601, -5651, -5651, -5651, 4796, -5651, -5651, -5651, 1813, 2124,
+ 4443, 92605, 4444, 2576, 2918, 729, 92605, 4438, -5651, -5651,
+ -5651, 121, 92605, 5049, -5651, 4448, -5651, 4449, 4452, -5651,
+ -5651, 5070, 2591, -5651, 4533, -5651, -5651, 3035, -5651, -5651,
+ -5651, 4495, 5081, 5039, -5651, 79957, 33642, -5651, 4947, -5651,
+ 4905, 5146, -5651, 5193, 3554, -5651, -5651, -5651, -5651, -5651,
+ -5651, 92605, 4460, 45612, 4541, -5651, -5651, 4245,107950,109376,
+ -5651, -5651, 2744, -5651, 98557, 10428, -5651, -5651, 88141, 88141,
+ 5059, 3184, 4636, -5651, -5651, -5651, 33642, -5651, 321, 4636,
+ -5651, -5651, -5651, -5651, 321, 5094, -5651, 3165, 22862, -5651,
+ -5651, -5651, -5651, -5651, 91861, -5651, 1288, -5651, -5651, -5651,
+ -5651, -5651, -5651, 92605, -5651, 4466, -5651, -5651, 133, 344,
+ 2591, 2591, 344, 3376, 3376, 3184, 79957, 4555, -5651, -5651,
+ 344, 121, 2591, 344, 121, -5651, -5651, 345, 1813, -5651,
+ -5651, -5651, -5651, -5651, -5651, 1418, 1353, -5651, 4661, 345,
+ 2918, -5651, -5651, 345, 729, -5651, -5651, 4472, 92605, 4476,
+ 4479, -5651, 2579, -5651, 1645, 5057, 92605, 4481, 92605, 92605,
+ -5651, -5651, -5651, -5651, -5651, -5651, 4837, -5651, 4482, 4483,
+ 3458, 3458, 15932, -5651, -5651, -5651, -5651, -5651, -5651, 5063,
+ -5651, 4534, 1491, 344, -5651, 3702, 4484, 92605, 5142, 4848,
+ 3634, -5651, 5266, -5651, 5266, -5651, -5651, -5651, 5066, -5651,
+ -5651, -5651, -5651, -5651, 2067, 4492, 2585, -5651, -5651, 2640,
+ -5651, 4539, 4543, -5651, 321, -5651, 4494, 3165, -5651, 38172,
+ -5651, 4485, -5651, -5651, 2644, -5651, 28252, -5651, -5651, -5651,
+ 2591, -5651, -5651, 2591, -5651, -5651, -5651, -5651, -5651, 2658,
+ -5651, 79957, -5651, -5651, 305, -5651, -5651, 5110, 4941, -5651,
+ 4700, 1813, 2589, -5651, -5651, -5651, -5651, -5651, 4500, 92605,
+ 92605, 4505, -5651, 92605, -5651, -5651, -5651, 1395, -5651, 2672,
+ 92605, 2685, 2692, -5651, -5651, -5651, -5651, 4502, 4508, -5651,
+ 55, -5651, -5651, 3702, 92605, 4496, -5651, -5651, 3634, -5651,
+ -5651, -5651, 4613, -5651, 5071, 2744, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 4636, 4509, -5651, 344, 5041, -5651,
+ -5651, 4466, -5651, 4511, -5651, 353, -5651, -5651, 79957, -5651,
+ 4555, -5651, -5651, -5651, -5651, -5651, -5651, 345, -5651, -5651,
+ 2713, 4400, 92605, -5651, 1200, 1200, 1813, 2718, 2918, 729,
+ -5651, 300, -5651, 1677, 1677, 1770, -5651, 92605, -5651, -5651,
+ -5651, 2744, 1332, -5651, 2723, 38172, 19012, 4818, 4402, -5651,
+ 28252, 4519, 3528, -5651, -5651, -5651, 4829, 4520, 4400, -5651,
+ -5651, 461, 4968, 5087, 5099, -5651, 1813, -5651, -5651, -5651,
+ 4522, -5651, 1677, -5651, -5651, -5651, -5651, -5651, 1613, -5651,
+ 5195, -5651, 3537, -5651, -5651, -5651, 5107, 1332, 1332, -5651,
+ -5651, -5651, 5243, 4726, -5651, -5651, -5651, 3528, -5651, -5651,
+ 1813, 4525, -5651, -5651, -5651, 5015, 5211, -5651, -5651, -5651,
+ -5651, 1613, -5651, 4665, -5651, -5651, -5651, -5651, -5651, -5651,
+ 313, 5113, -5651, 5114, -5651, 2941, 5175, -5651, -5651, 1813,
+ 1200, 1200, -5651, -5651, -5651, -5651, 5203, 4888, -5651, 5291,
+ 4542, -5651, -5651, -5651, 1454, 1273, 35167, 5064, -5651, -5651,
+ 79957, -5651, -5651, -5651, -5651, 79957, -5651, 2739, -5651, -5651,
+ 38172, -5651, -5651,107950, -5651, -5651, 35922, 4548, -5651, 344,
+ -5651, 5138, -5651, 38172, -5651, -5651, -5651, 19012, -5651, -5651
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -4332,891 +4423,911 @@ static const int yypact[] =
means the default is an error. */
static const yytype_int16 yydefact[] =
{
- 0, 3619, 2, 1016, 2294, 0, 430, 0, 1243, 612,
- 2139, 2288, 2287, 2060, 470, 220, 376, 2062, 2361, 0,
- 0, 466, 1259, 754, 496, 0, 320, 0, 0, 473,
- 318, 220, 1308, 3262, 2188, 0, 3368, 2126, 0, 1306,
- 468, 2459, 2065, 0, 3524, 0, 0, 0, 3529, 72,
- 2032, 0, 1259, 342, 3370, 85, 0, 0, 1259, 2345,
- 3529, 0, 2373, 0, 0, 2168, 0, 0, 0, 0,
- 3, 3621, 22, 0, 45, 27, 33, 17, 21, 16,
- 47, 60, 53, 30, 3709, 3710, 3712, 43, 3560, 42,
- 11, 63, 64, 19, 50, 12, 15, 18, 41, 49,
- 37, 44, 57, 58, 1329, 1305, 1333, 1304, 1300, 1296,
- 1315, 1316, 1317, 1323, 25, 26, 34, 51, 68, 23,
- 65, 61, 24, 2294, 13, 28, 29, 14, 52, 46,
- 38, 62, 69, 39, 0, 59, 40, 67, 32, 54,
- 31, 9, 10, 20, 55, 56, 48, 70, 35, 66,
- 36, 8, 2048, 168, 3526, 3711, 1060, 0, 0, 0,
- 0, 2058, 0, 2058, 1151, 1374, 3558, 3559, 3560, 1260,
- 0, 1261, 0, 0, 2501, 2502, 2744, 2759, 2807, 2559,
- 2851, 2861, 2878, 2885, 3020, 2712, 2757, 2758, 2558, 2787,
- 2620, 2879, 2902, 2930, 3015, 2697, 2696, 2698, 3001, 2699,
- 2700, 2701, 2702, 2703, 3002, 2595, 2704, 2705, 2706, 2708,
- 2707, 2709, 2710, 3003, 2596, 3630, 2597, 2669, 2711, 2671,
- 2670, 2713, 2598, 2599, 2714, 2715, 2716, 2718, 2717, 2650,
- 2601, 2600, 2719, 2721, 2720, 2672, 2673, 2653, 2722, 3004,
- 2723, 2725, 2602, 2999, 2603, 2604, 2605, 2724, 2606, 2726,
- 2654, 2727, 2728, 2607, 2729, 2730, 2731, 2732, 2734, 2733,
- 2647, 2735, 2736, 2738, 2739, 2740, 2737, 2741, 2742, 2745,
- 2743, 2675, 2674, 3005, 2608, 2746, 2747, 2748, 2749, 2751,
- 2752, 2750, 2753, 2655, 2754, 2755, 2756, 2764, 3631, 2765,
- 2767, 2766, 2676, 2768, 2769, 2770, 2772, 2771, 2773, 2775,
- 2609, 2610, 2611, 2774, 2776, 2760, 2761, 2762, 2763, 2778,
- 2777, 2779, 2780, 2781, 2677, 2612, 2651, 2613, 2998, 2782,
- 2783, 2556, 2784, 2785, 3006, 2614, 2666, 2786, 2656, 2789,
- 2788, 2615, 2790, 2616, 2791, 3007, 3008, 2792, 2793, 2795,
- 2797, 2794, 2798, 2799, 2805, 2617, 2796, 2800, 2801, 2802,
- 2803, 2804, 2806, 2678, 2808, 2648, 2809, 3009, 3010, 2810,
- 2811, 2812, 2813, 2667, 2814, 2815, 2816, 2817, 2830, 2831,
- 2821, 2822, 2824, 2825, 2828, 2823, 2829, 2834, 2833, 2835,
- 2836, 2837, 2838, 2839, 2832, 2819, 2826, 2827, 2820, 2840,
- 2841, 2818, 2842, 2844, 2843, 2845, 2679, 2846, 2847, 2848,
- 2849, 2850, 3011, 2852, 2853, 2855, 2854, 2856, 3012, 2857,
- 2858, 2859, 2663, 2860, 2680, 2681, 2862, 2863, 3013, 2864,
- 2865, 2870, 2871, 2872, 2649, 2867, 2866, 2868, 2869, 2682,
- 2683, 2684, 2873, 2874, 2875, 2877, 2876, 2657, 2619, 2618,
- 3014, 2621, 2880, 2881, 2622, 2882, 2884, 2883, 2665, 2623,
- 2886, 2887, 2889, 2888, 2624, 2652, 2625, 2626, 2890, 2891,
- 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901,
- 2685, 2686, 2903, 2904, 2905, 2907, 2906, 2908, 2909, 2913,
- 2910, 2911, 2912, 2914, 2627, 2915, 2658, 2916, 2917, 2918,
- 2628, 2920, 2919, 2629, 2921, 2922, 2923, 2924, 2925, 2664,
- 2659, 2926, 2927, 2929, 2687, 2928, 2931, 2932, 2660, 2933,
- 2934, 3016, 2630, 2935, 2936, 2688, 2668, 2631, 3017, 2938,
- 2661, 2695, 2937, 2939, 2633, 2634, 2940, 2941, 2942, 2632,
- 2943, 2635, 3018, 2944, 2946, 2945, 2947, 2948, 2949, 2950,
- 2636, 2951, 2952, 2637, 2953, 2638, 2954, 2955, 3019, 2956,
- 2958, 2957, 2959, 2960, 2961, 2962, 2963, 2964, 2966, 2968,
- 2967, 2965, 2969, 2970, 2689, 2971, 2639, 2690, 3022, 3023,
- 2691, 2972, 2973, 2974, 2975, 3021, 2662, 2976, 2977, 2642,
- 2978, 2979, 2981, 2980, 2640, 2641, 2982, 2983, 2646, 3024,
- 2984, 3025, 2692, 2693, 2985, 2986, 2996, 2987, 2989, 2988,
- 2991, 2990, 2997, 3026, 2557, 2643, 2992, 2993, 2644, 2994,
- 2645, 2995, 2694, 2506, 2522, 244, 2523, 2553, 2551, 2555,
- 2549, 2554, 2547, 2548, 3000, 2594, 2552, 2550, 400, 131,
- 0, 0, 2163, 2058, 2036, 2058, 2058, 2058, 2058, 2058,
- 2058, 2061, 2058, 2058, 0, 0, 0, 400, 2068, 2363,
- 0, 2383, 2384, 2378, 3358, 3359, 3353, 378, 0, 0,
- 0, 2261, 2260, 0, 0, 305, 317, 320, 313, 316,
- 0, 220, 2058, 378, 319, 320, 0, 1338, 0, 2266,
- 320, 0, 2137, 2377, 0, 400, 2460, 2457, 2068, 2334,
- 2336, 0, 2332, 1446, 1445, 0, 3529, 0, 2512, 1238,
- 1270, 1195, 3530, 3531, 0, 77, 80, 2300, 343, 0,
- 0, 0, 610, 0, 0, 1203, 0, 3531, 3541, 2375,
- 0, 131, 1176, 0, 131, 2171, 2058, 2058, 3602, 3603,
- 0, 0, 0, 3597, 0, 3604, 0, 1333, 0, 1319,
- 1, 5, 0, 0, 610, 970, 610, 971, 0, 610,
- 610, 0, 0, 0, 0, 3565, 3558, 3559, 3560, 0,
- 2018, 1873, 1334, 1333, 1965, 1969, 3546, 3546, 3546, 0,
- 0, 1965, 1324, 2762, 2998, 2884, 0, 2279, 2293, 2277,
- 2495, 1302, 1298, 2606, 1019, 1061, 1024, 228, 0, 0,
- 1026, 0, 1037, 2528, 2527, 2526, 1034, 220, 0, 1153,
- 0, 0, 0, 3566, 3565, 0, 1215, 2281, 2282, 2283,
- 2284, 2285, 2286, 2289, 0, 250, 400, 432, 0, 443,
- 434, 437, 0, 132, 133, 1241, 1244, 0, 613, 2167,
- 2166, 0, 2165, 2140, 0, 2163, 0, 2056, 0, 0,
- 0, 0, 220, 0, 220, 2041, 2058, 2058, 471, 3652,
- 0, 3418, 3436, 3437, 1387, 3433, 3438, 0, 3435, 3430,
- 0, 0, 3432, 3429, 0, 0, 3457, 3431, 3434, 2597,
- 2730, 2771, 2611, 2779, 2780, 2894, 2898, 2903, 2914, 2918,
- 2661, 2633, 2959, 3411, 3399, 3413, 3412, 0, 0, 3416,
- 3421, 0, 3420, 0, 0, 2070, 2364, 2365, 2369, 0,
- 2387, 0, 391, 0, 0, 3638, 0, 0, 380, 381,
- 3637, 3715, 0, 385, 3636, 0, 378, 3702, 0, 400,
- 3696, 3704, 3703, 3705, 3706, 3707, 3708, 411, 0, 412,
- 413, 467, 3699, 2524, 0, 3633, 3635, 3632, 3634, 2525,
- 3658, 0, 0, 3701, 0, 3700, 3697, 3698, 1257, 1678,
- 0, 2434, 2503, 2504, 0, 2447, 2452, 2453, 2445, 2446,
- 2450, 2426, 2449, 2425, 2451, 1448, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1387, 1387, 1387, 1384,
- 0, 0, 0, 0, 0, 0, 2443, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1384, 0, 0, 2442, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3020,
- 2444, 1387, 1384, 1384, 0, 0, 3015, 0, 0, 0,
- 3001, 2595, 3003, 2650, 2602, 2603, 2604, 2605, 2647, 2674,
- 3005, 3006, 3007, 3009, 3010, 3011, 3012, 2863, 3013, 3014,
- 2665, 2892, 2687, 3016, 3017, 3019, 2690, 3022, 3023, 2691,
- 3021, 2662, 3024, 3025, 3026, 2643, 2694, 0, 0, 0,
- 0, 1447, 0, 0, 1331, 1523, 755, 1393, 1405, 1421,
- 0, 1521, 1520, 1524, 1526, 1532, 1440, 1553, 1492, 1493,
- 1495, 1494, 1499, 1500, 0, 1654, 1501, 0, 0, 1498,
- 2439, 1497, 1496, 2440, 2441, 1491, 2481, 2511, 0, 0,
- 2505, 3000, 2594, 498, 497, 0, 339, 332, 327, 335,
- 329, 331, 330, 336, 337, 338, 333, 328, 334, 321,
- 0, 306, 0, 314, 3542, 0, 1262, 378, 474, 340,
- 3418, 2698, 2898, 3391, 0, 3398, 0, 3557, 3551, 3554,
- 3553, 3549, 3552, 3550, 3555, 1359, 3556, 1358, 1309, 1339,
- 1356, 1357, 0, 0, 0, 2584, 2583, 890, 2581, 3283,
- 3284, 0, 2585, 0, 0, 3285, 2951, 2972, 2582, 0,
- 2517, 0, 2518, 2578, 2576, 2580, 2579, 2573, 2574, 2577,
- 3263, 3268, 3264, 2575, 0, 2294, 0, 0, 2274, 968,
- 967, 0, 0, 0, 0, 2210, 0, 890, 2274, 2211,
- 0, 1930, 2264, 2267, 0, 3287, 2224, 969, 3288, 2260,
- 0, 2196, 2212, 2173, 2217, 131, 3289, 131, 2263, 1930,
- 2274, 0, 2189, 0, 0, 0, 2294, 1373, 0, 315,
- 3369, 2138, 1149, 2106, 1307, 2092, 0, 469, 0, 2073,
- 0, 2333, 3717, 3525, 0, 0, 0, 0, 3534, 1720,
- 2033, 0, 81, 76, 0, 0, 0, 0, 2500, 3371,
- 86, 0, 0, 3616, 74, 0, 2351, 0, 2349, 2346,
- 2348, 0, 3534, 0, 2374, 1183, 1183, 0, 0, 1175,
- 1177, 1178, 1183, 1183, 2172, 0, 0, 0, 2433, 2431,
- 2432, 2513, 3599, 2430, 2429, 3608, 3610, 3593, 0, 3596,
- 3595, 3605, 1322, 1321, 6, 71, 0, 142, 610, 220,
- 220, 610, 167, 148, 151, 610, 610, 610, 160, 162,
- 0, 222, 0, 0, 3565, 1337, 2807, 0, 0, 1349,
- 1335, 1768, 1336, 1800, 1770, 1740, 1731, 1730, 1796, 1797,
- 1799, 1798, 1801, 1803, 1793, 0, 0, 2031, 0, 2026,
- 1874, 1879, 1873, 0, 0, 0, 0, 0, 0, 1964,
- 1930, 1973, 1935, 1966, 1301, 1962, 0, 1297, 1362, 1362,
- 3548, 3547, 3545, 3544, 3543, 1967, 1320, 1328, 1326, 1327,
- 1968, 1318, 0, 2291, 2497, 0, 0, 2296, 0, 1965,
- 1969, 2097, 2096, 2099, 0, 904, 0, 229, 0, 3563,
- 3564, 3562, 1387, 2529, 2532, 3561, 2533, 229, 2059, 0,
- 0, 0, 2058, 1157, 1158, 1152, 1154, 1156, 0, 0,
- 0, 0, 2295, 0, 246, 252, 245, 441, 0, 401,
- 378, 0, 438, 87, 0, 1245, 2049, 2051, 0, 2141,
- 0, 1347, 1873, 2143, 2148, 2157, 2161, 2164, 2038, 0,
- 0, 3680, 2044, 2043, 3679, 0, 2045, 0, 0, 2046,
- 2034, 0, 447, 449, 3419, 3417, 3454, 3453, 3458, 0,
- 3455, 3451, 0, 3410, 3459, 3444, 3448, 0, 3460, 3445,
- 3452, 3466, 3465, 3467, 3462, 3461, 0, 3464, 3450, 0,
- 3449, 3470, 0, 3414, 0, 0, 423, 0, 2075, 2076,
- 2072, 1149, 2071, 2370, 0, 2362, 0, 1280, 2389, 2388,
- 2385, 1865, 3355, 3360, 400, 392, 0, 0, 2863, 0,
- 399, 398, 397, 3620, 420, 400, 386, 409, 0, 0,
- 3622, 379, 382, 418, 421, 3657, 460, 456, 464, 458,
- 3713, 274, 0, 0, 2503, 2504, 2436, 2435, 2505, 2427,
- 2448, 0, 0, 0, 1527, 1871, 1871, 1871, 0, 0,
- 1728, 0, 0, 0, 0, 1871, 0, 1565, 1539, 1538,
- 0, 1566, 0, 0, 0, 0, 0, 0, 0, 1684,
- 1684, 1650, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1722, 1724, 2481, 1871, 0, 1871, 0, 1392,
- 1571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1871, 1871, 1871, 0, 1582, 1584, 1583, 1871,
- 1871, 0, 0, 0, 0, 0, 0, 1871, 0, 0,
- 0, 0, 0, 1718, 2454, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1718, 0, 0, 0, 0,
- 0, 0, 2456, 0, 0, 0, 2455, 0, 0, 0,
- 0, 0, 0, 1718, 0, 0, 1529, 0, 1528, 1530,
- 0, 1331, 756, 0, 0, 0, 1444, 1442, 1443, 1441,
- 0, 0, 0, 0, 1450, 1452, 1454, 0, 1449, 1451,
- 1453, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1531, 0, 0, 0, 0, 0, 2428, 0, 1603,
- 0, 510, 2359, 0, 0, 0, 304, 1264, 2534, 0,
- 0, 400, 3417, 0, 0, 0, 3414, 1374, 1355, 3290,
- 0, 889, 0, 0, 892, 894, 893, 3322, 0, 891,
- 3331, 3329, 3327, 3326, 0, 0, 3270, 3272, 0, 898,
- 900, 899, 3320, 897, 0, 3306, 0, 0, 0, 0,
- 0, 610, 0, 0, 0, 0, 0, 0, 0, 0,
- 2241, 0, 1373, 1373, 2190, 0, 2274, 0, 2274, 2264,
- 0, 2274, 2270, 2230, 2223, 0, 0, 667, 1947, 1931,
- 2216, 2268, 2269, 2274, 0, 0, 2274, 0, 2231, 2264,
- 2274, 2185, 0, 0, 2177, 2182, 2178, 0, 2184, 2183,
- 2186, 2174, 2175, 0, 2203, 0, 2215, 2222, 0, 2202,
- 2209, 0, 2220, 2264, 2264, 0, 2274, 2274, 2274, 1150,
- 0, 1374, 0, 3654, 2458, 2461, 2467, 2473, 2077, 2074,
- 2335, 3620, 0, 0, 1272, 1274, 1273, 1290, 1197, 3533,
- 0, 3535, 0, 3537, 0, 78, 0, 0, 2327, 2325,
- 0, 0, 0, 2319, 2321, 2324, 2320, 0, 0, 2326,
- 131, 0, 2322, 2328, 2301, 2304, 2311, 1373, 2302, 0,
- 0, 341, 344, 346, 0, 349, 1865, 3374, 3373, 0,
- 0, 0, 1201, 1204, 0, 2356, 2353, 131, 0, 2660,
- 3540, 3538, 0, 1171, 1187, 134, 1181, 1182, 0, 0,
- 1174, 134, 3355, 3617, 3618, 0, 0, 3594, 3611, 3592,
- 0, 3606, 3607, 3591, 7, 4, 154, 0, 145, 0,
- 0, 0, 610, 610, 137, 0, 3681, 1374, 1374, 610,
- 610, 610, 0, 1765, 0, 1731, 1796, 1797, 1799, 0,
- 1798, 0, 0, 1865, 0, 0, 1788, 1813, 0, 1813,
- 1790, 1791, 0, 0, 0, 1349, 1794, 2514, 2027, 2030,
- 0, 2019, 2021, 2022, 2526, 2024, 0, 0, 1876, 1879,
- 1941, 1942, 0, 1364, 0, 1955, 1956, 1954, 0, 1932,
- 1948, 1953, 1951, 0, 1923, 0, 1972, 1963, 2011, 1363,
- 1970, 1971, 1325, 2280, 0, 2278, 2297, 2298, 2496, 1303,
- 1299, 1021, 905, 2098, 904, 603, 606, 605, 0, 0,
- 2069, 227, 2531, 0, 2069, 1038, 0, 2532, 3495, 0,
- 3502, 3484, 0, 1155, 3567, 3568, 1032, 1030, 0, 1216,
- 1217, 1220, 0, 250, 0, 253, 255, 0, 400, 433,
- 435, 378, 444, 0, 0, 1255, 0, 1253, 1252, 1250,
- 1251, 1249, 0, 1240, 1246, 1247, 1793, 0, 2144, 2151,
- 2053, 2055, 2495, 0, 1348, 2146, 1921, 0, 0, 0,
- 2159, 2057, 0, 0, 2040, 3408, 3482, 2039, 1159, 0,
- 0, 378, 472, 448, 402, 3447, 1388, 3463, 0, 3468,
- 3469, 3406, 225, 224, 3415, 223, 0, 0, 0, 0,
- 3456, 3439, 0, 3443, 3442, 0, 3440, 0, 3441, 0,
- 3446, 3423, 3422, 2471, 0, 2470, 378, 377, 2077, 3008,
- 3024, 2371, 2367, 2366, 0, 2386, 0, 1866, 1867, 0,
- 0, 1869, 3357, 1974, 0, 3354, 393, 400, 0, 0,
- 0, 415, 3688, 272, 387, 400, 402, 414, 453, 275,
- 383, 0, 0, 378, 378, 400, 3620, 3355, 3290, 1679,
- 1681, 0, 0, 1872, 0, 1696, 0, 0, 0, 0,
- 0, 0, 1507, 0, 0, 0, 1633, 0, 1696, 1661,
- 2004, 2005, 1985, 1986, 1984, 1987, 1385, 0, 1988, 2003,
- 0, 0, 0, 1659, 1330, 1313, 0, 0, 1841, 1842,
- 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852,
- 1854, 1859, 1855, 1856, 1857, 1858, 1853, 1860, 0, 1840,
- 0, 1685, 1646, 1648, 0, 0, 0, 756, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1871, 0, 0,
- 1871, 0, 0, 0, 0, 0, 0, 1660, 0, 1658,
- 0, 0, 1657, 1551, 0, 0, 1871, 0, 1577, 0,
- 0, 0, 1573, 0, 0, 0, 1557, 1558, 0, 0,
- 0, 1483, 0, 1481, 1482, 0, 0, 1871, 0, 0,
- 0, 0, 1474, 0, 0, 0, 0, 1719, 0, 0,
- 1863, 1861, 1864, 1862, 0, 0, 1720, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1555, 0, 0, 0,
- 2486, 938, 0, 0, 0, 0, 1522, 0, 0, 0,
- 0, 1390, 1389, 1391, 1402, 1396, 1400, 1394, 1398, 0,
- 1455, 3002, 1403, 0, 0, 0, 1406, 1415, 1419, 0,
- 0, 0, 0, 0, 1426, 1424, 1425, 1437, 1438, 1422,
- 1423, 0, 1428, 0, 1427, 1434, 1435, 1436, 1439, 1525,
- 901, 1533, 1891, 1652, 1653, 1677, 1895, 0, 0, 0,
- 0, 2482, 1374, 1477, 1476, 1478, 1479, 1480, 511, 0,
- 505, 508, 522, 0, 0, 2358, 0, 2674, 2690, 2691,
- 322, 325, 324, 326, 0, 0, 1263, 1267, 3355, 0,
- 0, 0, 0, 3486, 3396, 0, 0, 1370, 1310, 1369,
- 0, 0, 0, 0, 0, 3312, 3324, 0, 0, 3321,
- 0, 0, 0, 0, 0, 3294, 0, 0, 0, 0,
- 3267, 3333, 3334, 3337, 0, 0, 0, 2972, 0, 3269,
- 3274, 3265, 3278, 3280, 3282, 2232, 0, 0, 0, 0,
- 2237, 2234, 2227, 2240, 2712, 2236, 2253, 2235, 2229, 2242,
- 2228, 0, 0, 0, 2274, 2246, 2249, 2243, 2274, 0,
- 2274, 2245, 0, 2272, 2259, 2258, 2257, 2200, 2199, 2193,
- 2265, 2250, 2244, 220, 2274, 2198, 2197, 2179, 2180, 2181,
- 0, 1930, 0, 2270, 134, 2264, 0, 2274, 2274, 0,
- 2256, 2219, 2221, 2125, 0, 1793, 0, 0, 2111, 2104,
- 2091, 378, 0, 0, 0, 2078, 2079, 272, 0, 0,
- 0, 495, 1290, 1276, 1292, 1199, 1198, 1196, 3532, 3536,
- 1721, 80, 2119, 2117, 82, 2116, 2118, 83, 2337, 2313,
- 2312, 2314, 2318, 131, 2323, 2315, 0, 2329, 2330, 350,
- 354, 0, 0, 0, 3372, 0, 611, 0, 75, 0,
- 1205, 1974, 2352, 2354, 2347, 3539, 0, 1172, 1189, 1188,
- 1184, 1185, 0, 1169, 135, 1180, 1179, 1173, 2169, 3600,
- 3609, 3613, 3598, 601, 986, 0, 3404, 3502, 189, 0,
- 0, 0, 140, 0, 610, 161, 163, 610, 0, 0,
- 0, 610, 0, 0, 1810, 1802, 1804, 1805, 1806, 0,
- 1809, 0, 1352, 0, 1340, 1340, 1350, 1812, 1792, 1789,
- 1814, 0, 1813, 1813, 0, 0, 1772, 1771, 0, 1865,
- 895, 2023, 0, 0, 1875, 0, 1877, 1886, 1876, 1944,
- 2687, 0, 0, 1366, 0, 1974, 1360, 2435, 0, 0,
- 0, 0, 0, 0, 0, 1943, 1940, 0, 2299, 601,
- 0, 604, 2098, 2098, 0, 0, 0, 0, 0, 0,
- 0, 0, 230, 239, 1025, 2530, 1027, 0, 0, 0,
- 0, 0, 3514, 3355, 1052, 3569, 1028, 0, 0, 1219,
- 248, 247, 251, 0, 378, 439, 436, 431, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 134, 89, 110, 0, 1242, 1254, 2050,
- 1248, 2145, 1340, 0, 0, 0, 2498, 0, 1958, 1922,
- 2158, 0, 2162, 2161, 0, 3678, 0, 0, 1161, 1160,
- 2042, 2047, 3355, 378, 292, 405, 451, 0, 0, 3403,
- 226, 3478, 3481, 2495, 0, 0, 3424, 0, 378, 424,
- 2079, 2368, 2372, 1281, 1283, 1284, 1282, 1290, 0, 2546,
- 2545, 2544, 2515, 1870, 2516, 2541, 2539, 2543, 2537, 2542,
- 2535, 2536, 2540, 2538, 0, 3363, 3364, 3362, 1979, 1975,
- 0, 3356, 3361, 394, 395, 416, 419, 0, 0, 378,
- 0, 388, 389, 403, 407, 0, 422, 461, 445, 445,
- 445, 272, 1258, 0, 0, 2485, 0, 1628, 0, 1629,
- 1630, 0, 1508, 1729, 0, 0, 0, 1536, 0, 0,
- 0, 1632, 0, 1386, 0, 0, 1511, 1503, 1314, 0,
- 1663, 0, 0, 0, 0, 0, 0, 0, 1668, 0,
- 1666, 0, 0, 1723, 0, 1725, 2482, 0, 1638, 1673,
- 0, 1636, 0, 0, 1662, 1674, 1675, 0, 0, 0,
- 1642, 1640, 0, 1644, 1578, 1641, 1643, 0, 0, 0,
- 1576, 0, 0, 0, 0, 0, 0, 0, 1554, 0,
- 1589, 0, 1626, 1590, 0, 0, 1587, 0, 0, 0,
- 1605, 1540, 1541, 0, 1542, 1592, 0, 1516, 1547, 1548,
- 1513, 1514, 1606, 1595, 1515, 0, 1550, 1974, 0, 1534,
- 0, 0, 0, 1552, 1581, 0, 0, 0, 1512, 0,
- 0, 0, 1974, 0, 1607, 1556, 0, 0, 757, 1332,
- 1504, 2483, 1397, 1401, 1395, 1399, 0, 0, 0, 0,
- 1414, 0, 0, 1407, 1417, 1420, 0, 0, 1893, 0,
- 0, 1671, 1718, 1718, 1718, 1718, 0, 0, 0, 1622,
- 1623, 0, 0, 504, 503, 0, 507, 591, 0, 524,
- 512, 501, 2360, 0, 0, 1265, 0, 0, 0, 0,
- 3397, 0, 0, 0, 0, 1374, 1375, 1375, 2481, 3291,
- 3292, 3293, 0, 2571, 2570, 2568, 2572, 2569, 2519, 2521,
- 0, 2520, 2566, 2564, 2567, 2562, 2560, 2561, 2565, 2563,
- 0, 0, 3310, 903, 902, 3323, 0, 3345, 0, 0,
- 3330, 3351, 3352, 3349, 3350, 3348, 3328, 0, 0, 0,
- 3273, 0, 3339, 3340, 0, 0, 0, 3308, 3307, 0,
- 0, 0, 3300, 0, 0, 0, 2255, 0, 2226, 2239,
- 2238, 2275, 2276, 2252, 2248, 2194, 2251, 2247, 2271, 1974,
- 2204, 2225, 2195, 0, 2218, 2176, 2272, 2233, 1873, 2264,
- 2191, 2192, 2254, 0, 1349, 1375, 2107, 1374, 2108, 378,
- 2462, 0, 2469, 0, 2066, 0, 378, 1239, 1279, 1271,
- 1278, 1275, 1290, 1288, 1277, 964, 963, 0, 1291, 79,
- 0, 0, 2316, 134, 2310, 2331, 2305, 0, 345, 355,
- 347, 351, 352, 353, 348, 2781, 2863, 0, 1873, 3376,
- 3615, 1212, 1210, 1209, 1211, 1200, 1206, 1207, 2357, 2355,
- 134, 2376, 1187, 0, 1190, 3620, 1974, 0, 3612, 155,
- 602, 0, 0, 0, 986, 0, 165, 3514, 0, 0,
- 0, 138, 169, 3675, 3682, 3583, 0, 156, 3685, 228,
- 3683, 0, 0, 1807, 1808, 1769, 1340, 1342, 1341, 0,
- 0, 1344, 0, 0, 0, 0, 1777, 0, 1773, 1775,
- 0, 1838, 1830, 0, 2028, 2020, 2025, 2480, 1883, 1927,
- 0, 0, 1311, 1886, 0, 1945, 1936, 0, 1367, 1365,
- 1957, 1934, 0, 1950, 1949, 1952, 1364, 1924, 1927, 0,
- 1374, 1022, 607, 0, 0, 1023, 0, 0, 0, 233,
- 236, 234, 235, 2098, 2098, 183, 2098, 2098, 182, 184,
- 0, 178, 175, 185, 2098, 1039, 171, 0, 0, 0,
- 0, 1974, 0, 0, 0, 191, 0, 3489, 3488, 0,
- 3504, 0, 0, 3506, 0, 3505, 3503, 3474, 3485, 0,
- 1047, 1017, 0, 1054, 1056, 0, 0, 3569, 1218, 0,
- 250, 254, 442, 0, 0, 0, 1974, 0, 1974, 1974,
- 0, 0, 1974, 0, 1974, 0, 0, 0, 0, 0,
- 0, 0, 1974, 0, 0, 0, 1974, 0, 1974, 0,
- 88, 1256, 2142, 2054, 2161, 0, 2496, 1373, 0, 2154,
- 1873, 0, 2160, 3355, 3409, 3483, 1159, 0, 293, 0,
- 0, 402, 3518, 0, 0, 0, 0, 0, 2472, 426,
- 2063, 0, 1290, 1294, 2379, 3366, 3367, 3365, 1982, 1983,
- 1980, 1978, 1981, 396, 417, 296, 298, 3650, 295, 297,
- 3648, 3649, 0, 3691, 3693, 0, 374, 283, 372, 3645,
- 3643, 3647, 3641, 3646, 3639, 3640, 3644, 3642, 373, 287,
- 3690, 3716, 0, 3689, 390, 0, 410, 402, 0, 455,
- 457, 446, 465, 459, 378, 1682, 1680, 0, 1697, 1726,
- 0, 3027, 3028, 3029, 3030, 3031, 3032, 3034, 3035, 3033,
- 3036, 3037, 857, 3038, 3039, 3040, 3041, 3042, 3043, 3044,
- 3045, 3046, 3047, 3048, 857, 3049, 3050, 3051, 3052, 3053,
- 3054, 3055, 3056, 3057, 3058, 3059, 3061, 3060, 3062, 3063,
- 3064, 3065, 3066, 3067, 3068, 3069, 840, 3070, 3071, 3072,
- 3073, 3074, 3075, 3077, 3076, 3078, 3079, 3080, 3081, 861,
- 3082, 3083, 3084, 3086, 3085, 3087, 3088, 3089, 3090, 3091,
- 3092, 3093, 3094, 3095, 1712, 3096, 3097, 3098, 3099, 3100,
- 3102, 3101, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112,
- 3113, 3114, 3115, 3625, 3116, 3117, 3626, 3118, 3119, 3120,
- 1706, 3121, 3122, 3123, 3124, 3125, 3126, 3103, 3127, 3104,
- 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137,
- 3138, 3139, 3140, 3141, 3142, 3143, 3146, 3144, 3145, 3147,
- 3148, 3149, 3150, 3151, 3153, 3152, 3156, 3154, 3155, 3157,
- 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3627, 3165, 3166,
- 3167, 3168, 3169, 3171, 3172, 3170, 3173, 3174, 3175, 3176,
- 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3187,
- 3186, 3188, 3189, 3190, 3191, 3193, 3194, 3195, 3196, 3197,
- 3198, 3199, 3200, 3203, 3201, 3202, 3204, 3205, 3206, 3207,
- 3208, 3209, 3210, 3211, 3212, 3216, 3213, 3217, 3214, 3218,
- 3215, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3228,
- 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3237, 3238, 3239,
- 3240, 3241, 1709, 3242, 3243, 3244, 3245, 3246, 3247, 3248,
- 3250, 3251, 3249, 0, 3252, 3254, 3253, 3255, 3256, 3257,
- 3258, 3259, 3260, 3261, 3192, 3227, 3236, 859, 1714, 857,
- 2593, 1707, 859, 0, 1705, 0, 1703, 1704, 767, 769,
- 2586, 2587, 2588, 2589, 2591, 2592, 3628, 3629, 768, 2590,
- 0, 0, 0, 1634, 1631, 0, 0, 0, 1688, 1688,
- 0, 0, 0, 0, 1431, 0, 0, 0, 1617, 0,
- 1639, 1637, 0, 0, 0, 0, 0, 1645, 0, 1562,
- 1560, 1489, 0, 1487, 0, 1488, 0, 1490, 0, 0,
- 1627, 0, 1457, 1475, 0, 0, 0, 1721, 0, 1990,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2487, 0, 0, 927, 933, 936, 937, 939, 931,
- 0, 1599, 0, 0, 0, 1412, 1408, 0, 1416, 0,
- 0, 0, 1430, 1429, 1895, 1894, 0, 1670, 0, 0,
- 1720, 0, 0, 1720, 0, 0, 0, 2484, 1375, 1604,
- 1374, 514, 0, 532, 506, 1974, 509, 0, 523, 0,
- 535, 0, 0, 0, 323, 0, 1268, 0, 454, 0,
- 3395, 3487, 0, 0, 1368, 1376, 1371, 0, 0, 0,
- 3314, 3313, 3325, 0, 0, 0, 0, 3298, 3296, 3295,
- 3271, 0, 0, 3344, 3338, 3335, 3336, 0, 0, 3277,
- 0, 0, 3275, 3279, 3281, 2214, 2213, 0, 2273, 1930,
- 2187, 2206, 2208, 2274, 2127, 2131, 0, 1865, 2115, 0,
- 0, 2109, 2113, 0, 2468, 0, 0, 2080, 1793, 3718,
- 0, 1832, 84, 0, 2317, 2308, 0, 2303, 2306, 0,
- 0, 3387, 3388, 3380, 3383, 3381, 3382, 3386, 3389, 3390,
- 3377, 3384, 1930, 0, 0, 1202, 1208, 2350, 1186, 136,
- 0, 1170, 3651, 2170, 3601, 3614, 1001, 1003, 1002, 987,
- 988, 0, 0, 0, 1047, 0, 0, 0, 614, 614,
- 170, 0, 0, 200, 3569, 0, 0, 0, 158, 1766,
- 1351, 1343, 1345, 1340, 1340, 0, 1730, 0, 0, 0,
- 1730, 0, 0, 495, 0, 1811, 1827, 896, 2393, 1884,
- 1885, 0, 1880, 1928, 1929, 1882, 1878, 0, 1887, 1889,
- 1312, 1946, 1938, 1933, 1361, 0, 1926, 0, 0, 0,
- 2014, 2016, 665, 664, 238, 237, 242, 243, 1974, 1974,
- 2103, 2102, 1974, 1974, 177, 174, 2101, 2100, 1974, 1974,
- 172, 2069, 195, 194, 196, 197, 199, 198, 193, 1035,
- 0, 3492, 0, 3499, 3494, 3497, 3477, 3476, 3475, 3472,
- 0, 1974, 1974, 1974, 0, 1974, 3513, 3515, 0, 0,
- 1036, 904, 3527, 0, 0, 205, 3571, 0, 3573, 0,
- 1222, 0, 1221, 249, 378, 1974, 1974, 103, 1974, 95,
- 96, 91, 123, 124, 93, 94, 99, 98, 100, 101,
- 104, 105, 102, 97, 92, 127, 129, 128, 106, 2010,
- 2009, 2008, 130, 125, 126, 90, 0, 1873, 2499, 0,
- 0, 1959, 2155, 2147, 2149, 2037, 2035, 3656, 0, 452,
- 406, 450, 0, 3402, 3407, 3480, 3479, 3502, 3502, 400,
- 378, 400, 425, 0, 1285, 1290, 1294, 0, 1286, 2390,
- 834, 857, 857, 874, 820, 840, 836, 840, 3119, 830,
- 874, 786, 786, 874, 833, 786, 840, 835, 0, 832,
- 874, 831, 786, 857, 824, 857, 780, 781, 786, 857,
- 799, 0, 840, 874, 0, 821, 840, 826, 857, 0,
- 857, 857, 857, 2976, 857, 857, 284, 840, 764, 770,
- 772, 771, 773, 774, 857, 857, 857, 857, 857, 861,
- 0, 0, 3694, 0, 273, 404, 408, 462, 445, 0,
- 0, 1727, 0, 855, 858, 1698, 909, 0, 1711, 842,
- 841, 0, 862, 1713, 0, 1710, 909, 856, 860, 1716,
- 1702, 1708, 1715, 909, 1506, 1537, 1510, 1509, 0, 0,
- 0, 1569, 0, 1686, 1692, 0, 0, 0, 1544, 0,
- 1669, 1667, 1546, 0, 0, 1619, 2484, 1594, 1665, 1572,
- 1596, 1549, 0, 0, 0, 1486, 1484, 1485, 0, 1563,
- 1585, 0, 1473, 1586, 0, 1570, 1593, 1502, 1992, 1991,
- 1989, 1517, 1974, 0, 1574, 1535, 0, 0, 1598, 2488,
- 2489, 0, 0, 0, 938, 924, 925, 926, 0, 928,
- 930, 932, 0, 1974, 1433, 1432, 1404, 0, 1413, 1410,
- 0, 1418, 1897, 1896, 0, 0, 1610, 1612, 1611, 1614,
- 1613, 1608, 1718, 1376, 1624, 0, 515, 516, 518, 520,
- 597, 0, 510, 539, 499, 0, 514, 502, 1266, 1269,
- 0, 3393, 3392, 0, 1372, 1380, 1379, 2478, 2482, 0,
- 0, 0, 3311, 3332, 0, 0, 0, 0, 3342, 3341,
- 3343, 3309, 3304, 3302, 3301, 1996, 1997, 1995, 1993, 1994,
- 2205, 1930, 2201, 0, 1873, 0, 1830, 1375, 2105, 0,
- 3655, 0, 2086, 0, 2083, 2090, 488, 2154, 0, 2081,
- 2052, 0, 1835, 0, 1836, 1833, 1834, 1974, 0, 0,
- 371, 363, 358, 366, 360, 362, 361, 367, 368, 369,
- 370, 364, 359, 365, 357, 356, 0, 3375, 1213, 1214,
- 0, 1193, 1191, 143, 0, 3405, 164, 0, 149, 152,
- 715, 0, 0, 0, 0, 2098, 2098, 2098, 2098, 2098,
- 2098, 2098, 2098, 2098, 2098, 0, 2098, 2098, 2098, 2098,
- 2098, 2098, 2098, 2098, 2098, 2098, 0, 0, 2098, 2098,
- 139, 483, 491, 615, 618, 654, 656, 643, 644, 480,
- 0, 141, 269, 231, 0, 0, 0, 257, 0, 680,
- 681, 679, 678, 0, 0, 3569, 0, 1354, 1353, 1778,
- 0, 1782, 1787, 1783, 0, 1774, 0, 1795, 1839, 1831,
- 0, 0, 2401, 1927, 0, 0, 1927, 0, 0, 1375,
- 2012, 1374, 176, 181, 180, 173, 186, 179, 1040, 192,
- 3493, 3491, 3490, 0, 3498, 0, 3473, 3509, 3507, 3508,
- 3511, 0, 0, 3510, 3512, 1041, 1042, 1048, 1043, 1147,
- 1147, 0, 1147, 0, 0, 1147, 2098, 0, 0, 495,
- 1165, 2098, 0, 0, 0, 0, 0, 1130, 0, 1147,
- 0, 0, 0, 0, 0, 1068, 1129, 616, 1018, 1067,
- 1069, 1081, 491, 0, 1102, 1132, 1133, 1131, 3528, 0,
- 0, 0, 1053, 0, 208, 206, 216, 3570, 0, 2069,
- 0, 3573, 1224, 1225, 0, 440, 0, 116, 118, 0,
- 120, 122, 0, 112, 114, 2161, 2152, 0, 1960, 0,
- 1374, 2069, 294, 0, 0, 3516, 3516, 427, 429, 428,
- 2120, 1287, 1295, 2392, 2391, 0, 792, 874, 872, 874,
- 806, 875, 844, 837, 844, 808, 914, 820, 0, 874,
- 907, 911, 908, 816, 0, 786, 909, 0, 912, 787,
- 814, 807, 813, 844, 0, 803, 811, 874, 779, 815,
- 802, 0, 844, 817, 822, 825, 827, 829, 844, 874,
- 0, 0, 3620, 786, 801, 800, 0, 786, 844, 3620,
- 838, 823, 909, 920, 786, 874, 844, 844, 288, 1974,
- 290, 375, 445, 3714, 1683, 0, 0, 0, 0, 1699,
- 910, 0, 0, 1717, 1700, 1701, 1635, 0, 0, 0,
- 0, 1692, 0, 0, 1693, 1651, 0, 0, 0, 0,
- 0, 1505, 0, 1615, 0, 1561, 1559, 0, 840, 1464,
- 1466, 1462, 1465, 0, 859, 1468, 0, 821, 859, 909,
- 1472, 1458, 1459, 1460, 1461, 0, 0, 0, 0, 0,
- 2490, 922, 1601, 0, 935, 929, 927, 934, 0, 1409,
- 0, 0, 1899, 0, 1672, 0, 1625, 519, 0, 598,
- 594, 0, 0, 540, 0, 541, 537, 513, 0, 3394,
- 1378, 1377, 0, 3318, 3316, 3315, 3347, 3346, 3299, 3297,
- 0, 0, 134, 2130, 1921, 2132, 2133, 2124, 2114, 2112,
- 2464, 0, 2087, 2089, 2475, 2474, 2486, 0, 0, 2069,
- 2082, 1087, 0, 1088, 1099, 1101, 1293, 0, 2342, 0,
- 2340, 2309, 2343, 0, 0, 0, 0, 146, 0, 0,
- 0, 1012, 2623, 0, 0, 684, 686, 687, 688, 689,
- 0, 716, 691, 610, 965, 965, 718, 2491, 0, 663,
- 2098, 484, 1974, 1974, 1974, 1974, 641, 1974, 1974, 1974,
- 0, 0, 2098, 1974, 0, 0, 1974, 1974, 1974, 1974,
- 0, 0, 1974, 649, 650, 648, 1974, 1974, 2390, 490,
- 492, 904, 619, 614, 0, 262, 3676, 475, 476, 0,
- 0, 3573, 0, 0, 3589, 0, 3589, 0, 0, 1733,
- 1732, 0, 0, 0, 0, 0, 0, 1820, 0, 1819,
- 0, 1825, 1829, 0, 0, 0, 0, 2394, 2396, 0,
- 2029, 1881, 1890, 1888, 1925, 1937, 0, 2017, 2015, 0,
- 3500, 3496, 1977, 1976, 0, 1045, 0, 1044, 1049, 1012,
- 610, 1148, 608, 0, 1106, 1110, 1107, 608, 2056, 2056,
- 1259, 2056, 0, 0, 0, 0, 2056, 0, 2058, 2056,
- 0, 0, 2056, 2056, 0, 1259, 0, 493, 1168, 1166,
- 2056, 1167, 2056, 0, 0, 1259, 1119, 1063, 1120, 0,
- 1064, 2056, 1259, 1086, 1259, 1259, 0, 617, 904, 1065,
- 1066, 715, 1162, 215, 204, 0, 0, 1055, 1057, 0,
- 0, 1058, 3572, 1031, 3575, 2069, 1230, 0, 108, 1974,
- 109, 1974, 107, 1974, 2069, 0, 1961, 2156, 2150, 3519,
- 0, 3401, 3400, 0, 2154, 0, 804, 878, 0, 805,
- 846, 847, 845, 850, 782, 778, 915, 919, 918, 809,
- 810, 789, 906, 913, 0, 872, 788, 784, 0, 1014,
- 796, 0, 785, 828, 783, 797, 0, 280, 0, 3653,
- 0, 0, 3660, 286, 812, 3620, 276, 794, 798, 285,
- 0, 775, 790, 921, 791, 793, 920, 776, 777, 1974,
- 3692, 303, 302, 0, 0, 463, 853, 851, 854, 852,
- 0, 1567, 1568, 1689, 1927, 1687, 0, 1694, 1695, 1649,
- 1591, 0, 1545, 0, 1616, 0, 1597, 1564, 1467, 1463,
- 1470, 822, 1469, 1471, 1588, 1518, 1974, 1575, 1579, 1580,
- 0, 1600, 1974, 1411, 0, 1902, 1901, 0, 0, 1927,
- 1609, 517, 595, 512, 0, 536, 539, 0, 500, 2479,
- 0, 0, 3305, 3303, 2207, 1958, 2465, 2463, 2085, 0,
- 0, 0, 2084, 2094, 0, 2067, 1289, 0, 1837, 2338,
- 1974, 0, 2307, 0, 1192, 1194, 0, 0, 0, 0,
- 0, 717, 1013, 0, 0, 690, 2494, 683, 715, 0,
- 0, 0, 965, 707, 610, 0, 1012, 966, 610, 610,
- 0, 0, 0, 0, 2007, 2006, 638, 631, 630, 633,
- 632, 635, 634, 0, 627, 624, 636, 626, 651, 0,
- 639, 621, 676, 677, 675, 645, 652, 622, 623, 629,
- 628, 625, 668, 673, 671, 670, 669, 674, 672, 640,
- 655, 637, 653, 482, 599, 620, 491, 2000, 2001, 1998,
- 1999, 660, 659, 2002, 657, 658, 268, 266, 267, 3665,
- 0, 263, 0, 261, 0, 265, 3668, 240, 232, 0,
- 378, 479, 477, 478, 0, 0, 157, 271, 258, 260,
- 231, 0, 3687, 231, 3573, 1734, 0, 0, 1779, 0,
- 1784, 0, 1776, 1815, 1815, 1826, 0, 0, 0, 0,
- 2395, 0, 0, 2402, 2404, 1939, 0, 1043, 0, 0,
- 0, 1259, 0, 0, 1134, 1104, 0, 0, 0, 0,
- 1075, 0, 1084, 0, 0, 2056, 0, 1136, 0, 1135,
- 0, 0, 0, 1145, 1146, 0, 1917, 1919, 1927, 0,
- 0, 0, 1124, 1143, 1144, 0, 0, 0, 0, 1094,
- 0, 1080, 1147, 0, 1147, 1103, 0, 682, 0, 1164,
- 1105, 202, 207, 217, 218, 1033, 0, 3574, 1029, 0,
- 1231, 1227, 1228, 1223, 117, 121, 113, 2153, 0, 0,
- 3523, 3517, 3521, 2121, 2069, 0, 873, 848, 849, 916,
- 917, 879, 909, 0, 909, 3620, 282, 0, 279, 3661,
- 3662, 0, 0, 795, 312, 311, 309, 378, 299, 307,
- 301, 0, 308, 0, 292, 0, 0, 1691, 1647, 0,
- 1618, 1620, 0, 923, 0, 1898, 1892, 0, 0, 0,
- 0, 0, 0, 1911, 1903, 0, 1676, 0, 597, 0,
- 0, 525, 538, 544, 543, 3319, 3317, 2128, 0, 2088,
- 2476, 2487, 489, 0, 0, 1100, 2341, 0, 3385, 0,
- 1927, 1010, 0, 0, 0, 0, 0, 0, 685, 0,
- 610, 961, 962, 1012, 0, 692, 984, 2491, 1012, 1012,
- 3112, 857, 780, 781, 786, 857, 799, 2676, 840, 874,
- 2680, 821, 840, 826, 857, 722, 857, 857, 857, 857,
- 857, 0, 710, 720, 765, 767, 2586, 2587, 2588, 2589,
- 2591, 2592, 2590, 2493, 485, 647, 2330, 646, 600, 0,
- 2390, 270, 0, 3664, 0, 2976, 3666, 241, 187, 1374,
- 213, 0, 3673, 3686, 3590, 3684, 159, 0, 1865, 0,
- 0, 0, 1823, 1821, 2399, 2400, 0, 2397, 0, 0,
- 2403, 0, 1050, 1046, 1051, 0, 1089, 0, 1108, 0,
- 0, 1074, 0, 1245, 0, 0, 1127, 1115, 0, 1070,
- 0, 1117, 1118, 1159, 1072, 0, 1920, 494, 0, 0,
- 1079, 0, 1162, 1071, 1096, 1077, 1109, 1163, 209, 1059,
- 378, 0, 0, 0, 1226, 0, 1233, 0, 3522, 3520,
- 0, 2064, 1793, 819, 1015, 818, 3663, 281, 277, 839,
- 1974, 289, 310, 291, 3695, 843, 1927, 1543, 1519, 1602,
- 0, 1908, 0, 0, 1906, 1905, 0, 1900, 1907, 596,
- 593, 0, 0, 533, 551, 547, 0, 549, 550, 572,
- 2069, 0, 0, 2093, 2095, 2344, 3355, 0, 1007, 0,
- 1008, 0, 3355, 3355, 0, 0, 0, 1012, 984, 2491,
- 943, 0, 693, 0, 697, 699, 724, 0, 719, 711,
- 732, 0, 0, 661, 481, 264, 0, 3667, 0, 188,
- 3677, 3584, 205, 214, 259, 0, 2861, 0, 1742, 1744,
- 1767, 1781, 1786, 0, 1816, 0, 0, 0, 2398, 2406,
- 2405, 3501, 0, 1091, 609, 1004, 0, 1122, 0, 0,
- 1162, 1076, 0, 0, 0, 1116, 1137, 1114, 1259, 1918,
- 0, 0, 0, 1113, 1095, 1097, 1205, 0, 211, 187,
- 3576, 0, 0, 1232, 1237, 0, 1234, 1236, 1346, 0,
- 2380, 0, 300, 1690, 1909, 0, 1910, 1913, 0, 0,
- 1914, 0, 529, 531, 521, 0, 526, 0, 545, 0,
- 2098, 2098, 0, 2098, 2098, 2098, 2098, 565, 573, 575,
- 576, 577, 0, 2129, 2466, 2477, 972, 1927, 0, 0,
- 0, 0, 974, 976, 0, 0, 712, 705, 701, 0,
- 0, 947, 985, 0, 695, 0, 0, 887, 941, 750,
- 0, 753, 0, 885, 723, 725, 883, 884, 727, 0,
- 0, 0, 766, 0, 0, 865, 0, 868, 0, 0,
- 721, 0, 733, 864, 871, 2492, 642, 487, 662, 0,
- 0, 0, 216, 187, 0, 1741, 0, 0, 1818, 1817,
- 1832, 0, 0, 0, 539, 1090, 1005, 1123, 0, 1112,
- 495, 539, 1128, 1073, 1125, 1126, 495, 0, 1078, 210,
- 0, 203, 219, 3577, 3578, 1229, 0, 2122, 895, 278,
- 1904, 1912, 1916, 1915, 527, 0, 534, 558, 548, 554,
- 0, 2098, 0, 0, 2098, 0, 0, 0, 0, 0,
- 542, 574, 2098, 0, 0, 2098, 0, 993, 995, 1138,
- 973, 997, 996, 978, 994, 1006, 1011, 1010, 3355, 190,
- 0, 1138, 975, 999, 982, 1138, 977, 998, 980, 0,
- 0, 0, 0, 703, 0, 946, 0, 951, 0, 0,
- 0, 0, 751, 752, 888, 726, 886, 882, 876, 870,
- 2503, 2504, 0, 0, 0, 762, 763, 866, 759, 760,
- 761, 0, 741, 0, 0, 872, 863, 734, 3671, 0,
- 0, 0, 3674, 1746, 1743, 0, 1751, 1753, 1752, 1754,
- 1745, 0, 0, 0, 1111, 1093, 0, 1121, 1083, 1085,
- 1082, 0, 212, 1235, 0, 2381, 533, 530, 558, 0,
- 556, 0, 552, 546, 553, 0, 590, 584, 0, 586,
- 587, 585, 582, 569, 0, 567, 0, 989, 992, 1974,
- 990, 144, 1140, 1139, 979, 0, 972, 0, 150, 983,
- 153, 981, 708, 0, 0, 0, 0, 944, 0, 948,
- 949, 950, 0, 942, 0, 0, 0, 0, 877, 881,
- 2438, 2437, 0, 1381, 869, 0, 736, 880, 735, 0,
- 3669, 1374, 218, 0, 1748, 0, 0, 1824, 1822, 1092,
- 539, 2123, 2135, 0, 2407, 528, 555, 0, 563, 559,
- 561, 564, 589, 588, 0, 566, 0, 583, 666, 991,
- 1142, 1141, 1009, 1138, 1000, 709, 0, 1008, 0, 945,
- 0, 0, 972, 0, 974, 976, 758, 0, 867, 728,
- 728, 742, 3672, 0, 3585, 201, 1747, 0, 1755, 0,
- 0, 0, 0, 2393, 557, 0, 0, 578, 571, 568,
- 147, 0, 0, 1008, 957, 956, 0, 0, 953, 952,
- 694, 972, 698, 700, 1382, 0, 739, 729, 731, 738,
- 744, 745, 743, 746, 3670, 0, 1750, 0, 1761, 1760,
- 1749, 0, 1756, 1758, 1098, 2134, 2136, 0, 2401, 562,
- 560, 570, 579, 581, 706, 972, 0, 960, 958, 959,
- 0, 0, 696, 1383, 730, 737, 747, 749, 0, 1738,
- 1739, 1737, 1736, 1735, 1762, 0, 0, 1757, 0, 1759,
- 0, 2409, 580, 702, 972, 0, 0, 748, 3586, 1764,
- 1763, 0, 0, 2408, 0, 2413, 704, 955, 954, 3581,
- 0, 0, 2420, 3579, 3580, 0, 3587, 2411, 2412, 2410,
- 0, 2415, 0, 2417, 2418, 0, 2069, 3582, 378, 2419,
- 2414, 0, 2421, 2423, 0, 2382, 187, 2416, 0, 1374,
- 3588, 2422, 0, 1375, 2424
+ 0, 3647, 2, 1026, 2311, 0, 436, 0, 1258, 618,
+ 2158, 2305, 2304, 2079, 476, 220, 382, 2081, 2378, 0,
+ 0, 472, 1274, 764, 502, 0, 326, 0, 0, 479,
+ 324, 220, 1323, 3280, 2205, 0, 3387, 2145, 0, 1321,
+ 474, 2476, 2084, 0, 3544, 0, 0, 0, 3549, 72,
+ 2051, 0, 1274, 348, 3389, 85, 0, 0, 1274, 2362,
+ 3549, 0, 2390, 0, 0, 2185, 0, 0, 0, 0,
+ 3, 3649, 22, 0, 45, 27, 33, 17, 21, 2067,
+ 16, 47, 60, 53, 30, 3742, 3743, 3745, 43, 3580,
+ 42, 11, 63, 64, 19, 50, 12, 15, 18, 41,
+ 49, 37, 44, 57, 58, 1344, 1320, 1348, 1319, 1315,
+ 1311, 1330, 1331, 1332, 1338, 25, 26, 34, 51, 68,
+ 23, 65, 61, 24, 2311, 13, 28, 29, 14, 52,
+ 46, 38, 62, 69, 39, 0, 59, 40, 67, 32,
+ 54, 31, 9, 10, 20, 55, 56, 48, 70, 35,
+ 66, 36, 8, 3546, 3744, 168, 1070, 0, 0, 0,
+ 0, 2077, 0, 2077, 1164, 1389, 3578, 3579, 3580, 1275,
+ 0, 1276, 0, 0, 2518, 2519, 2761, 2776, 2824, 2576,
+ 2868, 2878, 2895, 2902, 3038, 2729, 2774, 2775, 2575, 2804,
+ 2637, 2896, 2919, 2947, 3033, 2714, 2713, 2715, 3019, 2716,
+ 2717, 2718, 2719, 2720, 3020, 2612, 2721, 2722, 2723, 2725,
+ 2724, 2726, 2727, 3021, 2613, 3673, 2614, 2686, 2728, 2688,
+ 2687, 2730, 2615, 2616, 2731, 2732, 2733, 2735, 2734, 2667,
+ 2618, 2617, 2736, 2738, 2737, 2689, 2690, 2670, 2739, 3022,
+ 2740, 2742, 2619, 3017, 2620, 2621, 2622, 2741, 2623, 2743,
+ 2671, 2744, 2745, 2624, 2746, 2747, 2748, 2749, 2751, 2750,
+ 2664, 2752, 2753, 2755, 2756, 2757, 2754, 2758, 2759, 2762,
+ 2760, 2692, 2691, 3023, 2625, 2763, 2764, 2765, 2766, 2768,
+ 2769, 2767, 2770, 2672, 2771, 2772, 2773, 2781, 3674, 2782,
+ 2784, 2783, 2693, 2785, 2786, 2787, 2789, 2788, 2790, 2792,
+ 2626, 2627, 2628, 2791, 2793, 2777, 2778, 2779, 2780, 2795,
+ 2794, 2796, 2797, 2798, 2694, 2629, 2668, 2630, 3016, 2799,
+ 2800, 2573, 2801, 2802, 3024, 2631, 2683, 2803, 2673, 2806,
+ 2805, 2632, 2807, 2633, 2808, 3025, 3026, 2809, 2810, 2812,
+ 2814, 2811, 2815, 2816, 2822, 2634, 2813, 2817, 2818, 2819,
+ 2820, 2821, 2823, 2695, 2825, 2665, 2826, 3027, 3028, 2827,
+ 2828, 2829, 2830, 2684, 2831, 2832, 2833, 2834, 2847, 2848,
+ 2838, 2839, 2841, 2842, 2845, 2840, 2846, 2851, 2850, 2852,
+ 2853, 2854, 2855, 2856, 2849, 2836, 2843, 2844, 2837, 2857,
+ 2858, 2835, 2859, 2861, 2860, 2862, 2696, 2863, 2864, 2865,
+ 2866, 2867, 3029, 2869, 2870, 2872, 2871, 2873, 3030, 2874,
+ 2875, 2876, 2680, 2877, 2697, 2698, 2879, 2880, 3031, 2881,
+ 2882, 2887, 2888, 2889, 2666, 2884, 2883, 2885, 2886, 2699,
+ 2700, 2701, 2890, 2891, 2892, 2894, 2893, 2674, 2636, 2635,
+ 3032, 2638, 2897, 2898, 2639, 2899, 2901, 2900, 2682, 2640,
+ 2903, 2904, 2906, 2905, 2641, 2669, 2642, 2643, 2907, 2908,
+ 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918,
+ 2702, 2703, 2920, 2921, 2922, 2924, 2923, 2925, 2926, 2930,
+ 2927, 2928, 2929, 2931, 2644, 2932, 2675, 2933, 2934, 2935,
+ 2645, 2937, 2936, 2646, 2938, 2939, 2940, 2941, 2942, 2681,
+ 2676, 2943, 2944, 2946, 2704, 2945, 2948, 2949, 2677, 2950,
+ 2951, 3034, 2647, 2952, 2953, 2705, 2685, 2648, 3035, 2955,
+ 2678, 2712, 2954, 2956, 2650, 2651, 2957, 2958, 2959, 2649,
+ 2960, 2652, 3036, 2961, 2963, 2962, 2964, 2965, 2966, 2967,
+ 2653, 2968, 2969, 2654, 2970, 2655, 2971, 2972, 3037, 2973,
+ 2975, 2974, 2976, 2977, 2978, 2979, 2980, 2981, 2983, 2985,
+ 2984, 2982, 2986, 2987, 2706, 2988, 2656, 2707, 3040, 3041,
+ 2708, 2989, 2990, 2991, 2992, 3039, 2679, 2993, 2994, 2659,
+ 2995, 2996, 2998, 2997, 2657, 2658, 2999, 3000, 2663, 3042,
+ 3001, 3007, 3043, 2709, 2710, 3002, 3003, 3014, 3004, 3006,
+ 3005, 3009, 3008, 3015, 3044, 2574, 2660, 3010, 3011, 2661,
+ 3012, 2662, 3013, 2711, 2523, 2539, 250, 2540, 2570, 2568,
+ 2572, 2566, 2571, 2564, 2565, 3018, 2611, 2569, 2567, 406,
+ 131, 0, 0, 2180, 2077, 2055, 227, 224, 2077, 228,
+ 2077, 223, 2077, 2077, 2080, 2077, 2077, 2077, 225, 226,
+ 0, 0, 0, 406, 2087, 2380, 0, 2400, 2401, 2395,
+ 3377, 3378, 3372, 384, 0, 0, 0, 2278, 2277, 0,
+ 0, 311, 323, 326, 319, 322, 0, 220, 2077, 384,
+ 325, 326, 0, 1353, 0, 2283, 326, 0, 2156, 2394,
+ 0, 406, 2477, 2474, 2087, 2351, 2353, 0, 2349, 1465,
+ 1464, 0, 3549, 0, 2529, 1253, 1285, 1210, 3550, 3551,
+ 0, 77, 80, 2317, 349, 0, 0, 0, 616, 0,
+ 0, 1218, 0, 3551, 3561, 2392, 0, 131, 1189, 0,
+ 131, 2188, 2077, 2077, 3630, 3631, 0, 0, 0, 3625,
+ 0, 3632, 0, 1348, 0, 1334, 1, 5, 0, 0,
+ 616, 980, 616, 981, 0, 616, 616, 0, 0, 0,
+ 0, 3585, 3578, 3579, 3580, 0, 2037, 1892, 1349, 1348,
+ 1984, 1988, 3566, 3566, 3566, 0, 0, 1984, 1339, 2779,
+ 3016, 2901, 0, 2296, 2310, 2294, 2512, 1317, 1313, 2623,
+ 1029, 1071, 1034, 234, 0, 0, 1036, 0, 1047, 2545,
+ 2544, 2543, 1044, 220, 0, 1166, 0, 0, 0, 3586,
+ 3585, 0, 1230, 2298, 2299, 2300, 2301, 2302, 2303, 2306,
+ 0, 256, 406, 438, 1392, 449, 440, 443, 0, 132,
+ 133, 1256, 1259, 0, 619, 2184, 2183, 0, 2182, 2159,
+ 0, 2180, 0, 2075, 229, 0, 230, 0, 220, 0,
+ 220, 2060, 0, 2077, 2077, 477, 3695, 0, 3437, 3455,
+ 3456, 1406, 3452, 3457, 0, 3454, 3449, 0, 0, 3451,
+ 3448, 0, 0, 3476, 3450, 3453, 2614, 2747, 2788, 2628,
+ 2796, 2797, 2911, 2915, 2920, 2931, 2935, 2678, 2650, 2976,
+ 3430, 3418, 3432, 3431, 0, 0, 3435, 3440, 0, 3439,
+ 0, 0, 2089, 2381, 2382, 2386, 0, 2404, 0, 397,
+ 0, 0, 3681, 0, 0, 386, 387, 3680, 3748, 0,
+ 391, 3679, 0, 384, 3735, 0, 406, 3729, 3737, 3736,
+ 3738, 3739, 3740, 3741, 417, 0, 418, 419, 473, 3732,
+ 2541, 0, 3676, 3678, 3675, 3677, 2542, 3701, 0, 0,
+ 3734, 0, 3733, 3730, 3731, 1272, 1697, 0, 2451, 2520,
+ 2521, 0, 2464, 2469, 2470, 2462, 2463, 2467, 2443, 2466,
+ 2442, 2468, 1467, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1406, 1406, 1406, 1403, 0, 0, 0,
+ 0, 0, 0, 2460, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1403, 0, 0, 2459, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3038, 2461, 1406, 1403,
+ 1403, 0, 0, 3033, 0, 0, 0, 3019, 2612, 3021,
+ 2667, 2619, 2620, 2621, 2622, 2664, 2691, 3023, 3024, 3025,
+ 3027, 3028, 3029, 3030, 2880, 3031, 3032, 2682, 2909, 2704,
+ 3034, 3035, 3037, 2707, 3040, 3041, 2708, 3039, 2679, 3042,
+ 3043, 3044, 2660, 2711, 0, 0, 0, 0, 1466, 0,
+ 0, 1346, 1542, 765, 1412, 1424, 1440, 0, 1540, 1539,
+ 1543, 1545, 1551, 1459, 1572, 1511, 1512, 1514, 1513, 1518,
+ 1519, 0, 1673, 1520, 0, 0, 1517, 2456, 1516, 1515,
+ 2457, 2458, 1510, 2498, 2528, 0, 0, 2522, 3018, 2611,
+ 504, 503, 0, 345, 338, 333, 341, 335, 337, 336,
+ 342, 343, 344, 339, 334, 340, 327, 0, 312, 0,
+ 320, 3562, 0, 1277, 384, 480, 346, 3437, 2715, 2915,
+ 3410, 0, 3417, 0, 3577, 3571, 3574, 3573, 3569, 3572,
+ 3570, 3575, 1374, 3576, 1373, 1324, 1354, 1371, 1372, 0,
+ 0, 0, 2601, 2600, 900, 2598, 3301, 3302, 0, 2602,
+ 0, 0, 3303, 2968, 2989, 2599, 0, 2534, 0, 2535,
+ 2595, 2593, 2597, 2596, 2590, 2591, 2594, 3281, 3286, 3282,
+ 2592, 0, 2311, 0, 0, 2291, 978, 977, 0, 0,
+ 0, 0, 2227, 0, 900, 2291, 2228, 0, 1949, 2281,
+ 2284, 0, 3305, 2241, 979, 3306, 2277, 0, 2213, 2229,
+ 2190, 2234, 131, 3307, 131, 2280, 1949, 2291, 0, 2206,
+ 0, 0, 0, 2311, 1388, 0, 321, 3388, 2157, 1162,
+ 2125, 1322, 2111, 0, 475, 0, 2092, 0, 2350, 3750,
+ 3545, 0, 0, 0, 0, 3554, 1739, 2052, 0, 81,
+ 76, 0, 0, 0, 0, 2517, 3390, 86, 0, 0,
+ 3644, 74, 0, 2368, 0, 2366, 2363, 2365, 0, 3554,
+ 0, 2391, 1196, 1196, 0, 0, 1188, 1190, 1191, 1196,
+ 1196, 2189, 0, 0, 0, 2450, 2448, 2449, 2530, 3627,
+ 2447, 2446, 3636, 3638, 3621, 0, 3624, 3623, 3633, 1337,
+ 1336, 6, 71, 0, 142, 616, 220, 220, 616, 167,
+ 148, 151, 616, 616, 616, 160, 162, 616, 616, 0,
+ 222, 0, 0, 3585, 1352, 2824, 0, 0, 1364, 1350,
+ 1787, 1351, 1819, 1789, 1759, 1750, 1749, 1815, 1816, 1818,
+ 1817, 1820, 1822, 1812, 0, 0, 2050, 0, 2045, 1893,
+ 1898, 1892, 0, 0, 0, 0, 0, 0, 1983, 1949,
+ 1992, 1954, 1985, 1316, 1981, 0, 1312, 1377, 1377, 3568,
+ 3567, 3565, 3564, 3563, 1986, 1335, 1343, 1341, 1342, 1987,
+ 1333, 0, 2308, 2514, 0, 0, 2313, 0, 1984, 1988,
+ 2116, 2115, 2118, 0, 914, 0, 235, 0, 3583, 3584,
+ 3582, 1406, 2546, 2549, 3581, 2550, 235, 2078, 0, 0,
+ 0, 2077, 1170, 1171, 1165, 1167, 1169, 0, 0, 0,
+ 0, 2312, 0, 252, 258, 251, 447, 0, 0, 384,
+ 0, 444, 87, 0, 1260, 2068, 2070, 0, 2160, 0,
+ 2169, 2072, 1362, 1892, 2162, 2074, 2178, 2181, 2057, 0,
+ 0, 2063, 2062, 0, 2064, 0, 0, 232, 2065, 2053,
+ 0, 453, 455, 3438, 3436, 3473, 3472, 3477, 0, 3474,
+ 3470, 0, 3429, 3478, 3463, 3467, 0, 3479, 0, 3464,
+ 3471, 3485, 3484, 3486, 3481, 3480, 0, 3483, 3469, 0,
+ 3468, 3489, 0, 3433, 0, 0, 429, 0, 2094, 2095,
+ 2091, 1162, 2090, 2387, 0, 2379, 0, 1295, 2406, 2405,
+ 2402, 1884, 3374, 3379, 406, 398, 0, 0, 2880, 0,
+ 405, 404, 403, 3648, 426, 406, 392, 415, 0, 0,
+ 3650, 385, 388, 424, 427, 3700, 466, 462, 470, 464,
+ 3746, 280, 0, 0, 2520, 2521, 2453, 2452, 2522, 2444,
+ 2465, 0, 0, 0, 1546, 1890, 1890, 1890, 0, 0,
+ 1747, 0, 0, 0, 0, 1890, 0, 1584, 1558, 1557,
+ 0, 1585, 0, 0, 0, 0, 0, 0, 0, 1703,
+ 1703, 1669, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1741, 1743, 2498, 1890, 0, 1890, 0, 1411,
+ 1590, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1890, 1890, 1890, 0, 1601, 1603, 1602, 1890,
+ 1890, 0, 0, 0, 0, 0, 0, 1890, 0, 0,
+ 0, 0, 0, 1737, 2471, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1737, 0, 0, 0, 0,
+ 0, 0, 2473, 0, 0, 0, 2472, 0, 0, 0,
+ 0, 0, 0, 1737, 0, 0, 1548, 0, 1547, 1549,
+ 0, 1346, 766, 0, 0, 0, 1463, 1461, 1462, 1460,
+ 0, 0, 0, 0, 1469, 1471, 1473, 0, 1468, 1470,
+ 1472, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1550, 0, 0, 0, 0, 0, 2445, 0, 1622,
+ 0, 516, 2376, 0, 0, 0, 310, 1279, 2551, 0,
+ 0, 406, 3436, 0, 0, 0, 3433, 1389, 1370, 3308,
+ 0, 899, 0, 0, 902, 904, 903, 3340, 0, 901,
+ 3349, 3347, 3345, 3344, 0, 0, 3288, 3290, 0, 908,
+ 910, 909, 3338, 907, 0, 3324, 0, 0, 0, 0,
+ 0, 616, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2258, 0, 1388, 1388, 2207, 0, 2291, 0, 2291, 2281,
+ 0, 2291, 2287, 2247, 2240, 0, 0, 677, 1966, 1950,
+ 2233, 2285, 2286, 2291, 0, 0, 2291, 0, 2248, 2281,
+ 2291, 2202, 0, 0, 2194, 2199, 2195, 0, 2201, 2200,
+ 2203, 2191, 2192, 0, 2220, 0, 2232, 2239, 0, 2219,
+ 2226, 0, 2237, 2281, 2281, 0, 2291, 2291, 2291, 1163,
+ 0, 1389, 0, 3697, 2475, 2478, 2484, 2490, 2096, 2093,
+ 2352, 3648, 0, 0, 1287, 1289, 1288, 1305, 1212, 3553,
+ 0, 3555, 0, 3557, 0, 78, 0, 0, 2344, 2342,
+ 0, 0, 0, 2336, 2338, 2341, 2337, 0, 0, 2343,
+ 131, 0, 2339, 2345, 2318, 2321, 2328, 1388, 2319, 0,
+ 0, 347, 350, 352, 0, 355, 1884, 3393, 3392, 0,
+ 0, 0, 1216, 1219, 0, 2373, 2370, 131, 0, 2677,
+ 3560, 3558, 0, 1184, 1200, 134, 1194, 1195, 0, 0,
+ 1187, 134, 3374, 3645, 3646, 0, 0, 3622, 3639, 3620,
+ 0, 3634, 3635, 3619, 7, 4, 154, 0, 145, 0,
+ 0, 0, 616, 616, 137, 0, 3773, 1389, 1389, 0,
+ 0, 616, 616, 616, 0, 1784, 0, 1750, 1815, 1816,
+ 1818, 0, 1817, 0, 0, 1884, 0, 0, 1807, 1832,
+ 0, 1832, 1809, 1810, 0, 0, 0, 1364, 1813, 2531,
+ 2046, 2049, 0, 2038, 2040, 2041, 2543, 2043, 0, 0,
+ 1895, 1898, 1960, 1961, 0, 1379, 0, 1974, 1975, 1973,
+ 0, 1951, 1967, 1972, 1970, 0, 1942, 0, 1991, 1982,
+ 2030, 1378, 1989, 1990, 1340, 2297, 0, 2295, 2314, 2315,
+ 2513, 1318, 1314, 1031, 915, 2117, 914, 609, 612, 611,
+ 0, 0, 2088, 233, 2548, 0, 2088, 1048, 0, 2549,
+ 3515, 0, 3522, 3504, 0, 1168, 3587, 3588, 1042, 1040,
+ 0, 1231, 1232, 1235, 0, 256, 0, 259, 261, 0,
+ 406, 439, 441, 1390, 384, 450, 0, 0, 1270, 0,
+ 1268, 1267, 1265, 1266, 1264, 0, 1255, 1261, 1262, 1812,
+ 0, 2163, 2172, 2512, 0, 0, 0, 1363, 2166, 1940,
+ 0, 2515, 2076, 0, 2059, 3427, 3502, 2058, 1172, 0,
+ 0, 0, 384, 478, 454, 408, 3466, 1407, 3482, 3490,
+ 0, 3487, 3488, 3425, 3434, 0, 0, 0, 0, 3475,
+ 3458, 0, 3462, 3461, 0, 3459, 0, 3460, 0, 3465,
+ 3442, 3441, 2488, 0, 2487, 384, 383, 2096, 3026, 3042,
+ 2388, 2384, 2383, 0, 2403, 0, 1885, 1886, 0, 0,
+ 1888, 3376, 1993, 0, 3373, 399, 406, 0, 0, 0,
+ 421, 3721, 278, 393, 406, 408, 420, 459, 281, 389,
+ 0, 0, 384, 384, 406, 3648, 3374, 3308, 1698, 1700,
+ 0, 0, 1891, 0, 1715, 0, 0, 0, 0, 0,
+ 0, 1526, 0, 0, 0, 1652, 0, 1715, 1680, 2023,
+ 2024, 2004, 2005, 2003, 2006, 1404, 0, 2007, 2022, 0,
+ 0, 0, 1678, 1345, 1328, 0, 0, 1860, 1861, 1862,
+ 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1873,
+ 1878, 1874, 1875, 1876, 1877, 1872, 1879, 0, 1859, 0,
+ 1704, 1665, 1667, 0, 0, 0, 766, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1890, 0, 0, 1890,
+ 0, 0, 0, 0, 0, 0, 1679, 0, 1677, 0,
+ 0, 1676, 1570, 0, 0, 1890, 0, 1596, 0, 0,
+ 0, 1592, 0, 0, 0, 1576, 1577, 0, 0, 0,
+ 1502, 0, 1500, 1501, 0, 0, 1890, 0, 0, 0,
+ 0, 1493, 0, 0, 0, 0, 1738, 0, 0, 1882,
+ 1880, 1883, 1881, 0, 0, 1739, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1574, 0, 0, 0, 2503,
+ 948, 0, 0, 0, 0, 1541, 0, 0, 0, 0,
+ 1409, 1408, 1410, 1421, 1415, 1419, 1413, 1417, 0, 1474,
+ 3020, 1422, 0, 0, 0, 1425, 1434, 1438, 0, 0,
+ 0, 0, 0, 1445, 1443, 1444, 1456, 1457, 1441, 1442,
+ 0, 1447, 0, 1446, 1453, 1454, 1455, 1458, 1544, 911,
+ 1552, 1910, 1671, 1672, 1696, 1914, 0, 0, 0, 0,
+ 2499, 1389, 1496, 1495, 1497, 1498, 1499, 517, 0, 511,
+ 514, 528, 0, 0, 2375, 0, 2691, 2707, 2708, 328,
+ 331, 330, 332, 0, 0, 1278, 1282, 3374, 0, 0,
+ 0, 0, 3506, 3415, 0, 0, 1385, 1325, 1384, 0,
+ 0, 0, 0, 0, 3330, 3342, 0, 0, 3339, 0,
+ 0, 1391, 0, 0, 3312, 0, 0, 0, 0, 3285,
+ 3351, 3352, 3355, 0, 1391, 0, 2989, 0, 3287, 3292,
+ 3283, 3296, 3298, 3300, 2249, 0, 0, 0, 0, 2254,
+ 2251, 2244, 2257, 2729, 2253, 2270, 2252, 2246, 2259, 2245,
+ 0, 0, 0, 2291, 2263, 2266, 2260, 2291, 0, 2291,
+ 2262, 0, 2289, 2276, 2275, 2274, 2217, 2216, 2210, 2282,
+ 2267, 2261, 220, 2291, 2215, 2214, 2196, 2197, 2198, 0,
+ 1949, 0, 2287, 134, 2281, 0, 2291, 2291, 0, 2273,
+ 2236, 2238, 2144, 0, 1812, 0, 0, 2130, 2123, 2110,
+ 384, 0, 0, 0, 2097, 2098, 278, 0, 0, 0,
+ 501, 1305, 1291, 1307, 1214, 1213, 1211, 3552, 3556, 1740,
+ 80, 2138, 2136, 82, 2135, 2137, 83, 2354, 2330, 2329,
+ 2331, 2335, 131, 2340, 2332, 0, 2346, 2347, 356, 360,
+ 0, 0, 0, 3391, 0, 617, 0, 75, 0, 1220,
+ 1993, 2369, 2371, 2364, 3559, 0, 1185, 1202, 1201, 1197,
+ 1198, 0, 1182, 135, 1193, 1192, 1186, 2186, 3628, 3637,
+ 3641, 3626, 607, 996, 0, 3423, 3522, 189, 0, 0,
+ 0, 140, 0, 616, 161, 163, 616, 3617, 3617, 0,
+ 0, 0, 616, 0, 0, 1829, 1821, 1823, 1824, 1825,
+ 0, 1828, 0, 1367, 0, 1355, 1355, 1365, 1831, 1811,
+ 1808, 1833, 0, 1832, 1832, 0, 0, 1791, 1790, 0,
+ 1884, 905, 2042, 0, 0, 1894, 0, 1896, 1905, 1895,
+ 1963, 2704, 0, 0, 1381, 0, 1993, 1375, 2452, 0,
+ 0, 0, 0, 0, 0, 0, 1962, 1959, 0, 2316,
+ 607, 0, 610, 2117, 2117, 0, 0, 0, 0, 0,
+ 0, 0, 0, 236, 245, 1035, 2547, 1037, 0, 0,
+ 0, 0, 0, 3534, 3374, 1062, 3589, 1038, 0, 0,
+ 1234, 254, 253, 257, 0, 384, 445, 442, 407, 437,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 134, 89, 110, 0, 1257,
+ 1269, 2069, 1263, 2165, 1355, 2088, 0, 0, 2073, 0,
+ 0, 1977, 1941, 2179, 2178, 0, 0, 0, 1174, 1173,
+ 2061, 231, 2066, 3374, 384, 298, 411, 457, 0, 0,
+ 3422, 3498, 3501, 2512, 0, 0, 3443, 0, 384, 430,
+ 2098, 2385, 2389, 1296, 1298, 1299, 1297, 1305, 0, 2563,
+ 2562, 2561, 2532, 1889, 2533, 2558, 2556, 2560, 2554, 2559,
+ 2552, 2553, 2557, 2555, 0, 3382, 3383, 3381, 1998, 1994,
+ 0, 3375, 3380, 400, 401, 422, 425, 0, 0, 384,
+ 0, 394, 395, 409, 413, 0, 428, 467, 451, 451,
+ 451, 278, 1273, 0, 0, 2502, 0, 1647, 0, 1648,
+ 1649, 0, 1527, 1748, 0, 0, 0, 1555, 0, 0,
+ 0, 1651, 0, 1405, 0, 0, 1530, 1522, 1329, 0,
+ 1682, 0, 0, 0, 0, 0, 0, 0, 1687, 0,
+ 1685, 0, 0, 1742, 0, 1744, 2499, 0, 1657, 1692,
+ 0, 1655, 0, 0, 1681, 1693, 1694, 0, 0, 0,
+ 1661, 1659, 0, 1663, 1597, 1660, 1662, 0, 0, 0,
+ 1595, 0, 0, 0, 0, 0, 0, 0, 1573, 0,
+ 1608, 0, 1645, 1609, 0, 0, 1606, 0, 0, 0,
+ 1624, 1559, 1560, 0, 1561, 1611, 0, 1535, 1566, 1567,
+ 1532, 1533, 1625, 1614, 1534, 0, 1569, 1993, 0, 1553,
+ 0, 0, 0, 1571, 1600, 0, 0, 0, 1531, 0,
+ 0, 0, 1993, 0, 1626, 1575, 0, 0, 767, 1347,
+ 1523, 2500, 1416, 1420, 1414, 1418, 0, 0, 0, 0,
+ 1433, 0, 0, 1426, 1436, 1439, 0, 0, 1912, 0,
+ 0, 1690, 1737, 1737, 1737, 1737, 0, 0, 0, 1641,
+ 1642, 0, 0, 510, 509, 0, 513, 597, 0, 530,
+ 518, 507, 2377, 0, 0, 1280, 0, 0, 0, 0,
+ 3416, 0, 0, 0, 0, 1389, 1390, 1390, 2498, 3309,
+ 3310, 3311, 0, 2588, 2587, 2585, 2589, 2586, 2536, 2538,
+ 0, 2537, 2583, 2581, 2584, 2579, 2577, 2578, 2582, 2580,
+ 1391, 0, 3328, 913, 912, 3341, 0, 3363, 0, 0,
+ 3348, 0, 3346, 0, 0, 1391, 3291, 0, 3357, 3358,
+ 0, 0, 0, 3326, 3325, 0, 0, 0, 3318, 0,
+ 0, 0, 2272, 0, 2243, 2256, 2255, 2292, 2293, 2269,
+ 2265, 2211, 2268, 2264, 2288, 1993, 2221, 2242, 2212, 0,
+ 2235, 2193, 2289, 2250, 1892, 2281, 2208, 2209, 2271, 0,
+ 1364, 1390, 2126, 1389, 2127, 384, 2479, 0, 2486, 0,
+ 2085, 0, 384, 1254, 1294, 1286, 1293, 1290, 1305, 1303,
+ 1292, 974, 973, 0, 1306, 79, 0, 0, 2333, 134,
+ 2327, 2348, 2322, 0, 351, 361, 353, 357, 358, 359,
+ 354, 2798, 2880, 0, 1892, 3395, 3643, 1227, 1225, 1224,
+ 1226, 1215, 1221, 1222, 2374, 2372, 134, 2393, 1200, 0,
+ 1203, 3648, 1993, 0, 3640, 155, 608, 0, 0, 0,
+ 996, 0, 165, 3534, 0, 0, 0, 138, 169, 3718,
+ 3774, 3603, 0, 3780, 3615, 3782, 156, 3777, 234, 3775,
+ 0, 0, 1826, 1827, 1788, 1355, 1357, 1356, 0, 0,
+ 1359, 0, 0, 0, 0, 1796, 0, 1792, 1794, 0,
+ 1857, 1849, 0, 2047, 2039, 2044, 2497, 1902, 1946, 0,
+ 0, 1326, 1905, 0, 1964, 1955, 0, 1382, 1380, 1976,
+ 1953, 0, 1969, 1968, 1971, 1379, 1943, 1946, 0, 1389,
+ 1032, 613, 0, 0, 1033, 0, 0, 0, 239, 242,
+ 240, 241, 2117, 2117, 183, 2117, 2117, 182, 184, 0,
+ 178, 175, 185, 2117, 1049, 171, 0, 0, 0, 0,
+ 1993, 0, 0, 0, 191, 0, 3509, 3508, 0, 3524,
+ 0, 0, 3526, 0, 3525, 3523, 3494, 3505, 0, 1057,
+ 1027, 0, 1064, 1066, 0, 0, 3589, 1233, 0, 256,
+ 260, 448, 0, 0, 0, 1993, 0, 1993, 1993, 0,
+ 0, 1993, 0, 1993, 0, 0, 0, 0, 0, 0,
+ 0, 1993, 0, 0, 0, 1993, 0, 1993, 0, 88,
+ 1271, 2161, 2164, 0, 2513, 1892, 1388, 0, 2175, 0,
+ 2516, 3374, 3428, 3503, 1172, 0, 299, 0, 1391, 408,
+ 3538, 0, 0, 0, 0, 0, 2489, 432, 2082, 0,
+ 1305, 1309, 2396, 3385, 3386, 3384, 2001, 2002, 1999, 1997,
+ 2000, 402, 423, 302, 304, 3693, 301, 303, 3691, 3692,
+ 0, 3724, 3726, 0, 380, 289, 378, 3688, 3686, 3690,
+ 3684, 3689, 3682, 3683, 3687, 3685, 379, 293, 3723, 3749,
+ 0, 3722, 396, 1391, 416, 408, 0, 461, 463, 452,
+ 471, 465, 384, 1701, 1699, 0, 1716, 1745, 0, 3045,
+ 3046, 3047, 3048, 3049, 3050, 3052, 3053, 3051, 3054, 3055,
+ 867, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064,
+ 3065, 3066, 867, 3067, 3068, 3069, 3070, 3071, 3072, 3073,
+ 3074, 3075, 3076, 3077, 3079, 3078, 3080, 3081, 3082, 3083,
+ 3084, 3085, 3086, 3087, 850, 3088, 3089, 3090, 3091, 3092,
+ 3093, 3095, 3094, 3096, 3097, 3098, 3099, 871, 3100, 3101,
+ 3102, 3104, 3103, 3105, 3106, 3107, 3108, 3109, 3110, 3111,
+ 3112, 3113, 1731, 3114, 3115, 3116, 3117, 3118, 3120, 3119,
+ 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132,
+ 3133, 3668, 3134, 3135, 3669, 3136, 3137, 3138, 1725, 3139,
+ 3140, 3141, 3142, 3143, 3144, 3121, 3145, 3122, 3146, 3147,
+ 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157,
+ 3158, 3159, 3160, 3161, 3164, 3162, 3163, 3165, 3166, 3167,
+ 3168, 3169, 3171, 3170, 3174, 3172, 3173, 3175, 3176, 3177,
+ 3178, 3179, 3180, 3181, 3182, 3670, 3183, 3184, 3185, 3186,
+ 3187, 3189, 3190, 3188, 3191, 3192, 3193, 3194, 3195, 3196,
+ 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3205, 3204, 3206,
+ 3207, 3208, 3209, 3211, 3212, 3213, 3214, 3215, 3216, 3217,
+ 3218, 3221, 3219, 3220, 3222, 3223, 3224, 3225, 3226, 3227,
+ 3228, 3229, 3230, 3234, 3231, 3235, 3232, 3236, 3233, 3237,
+ 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3246, 3247, 3248,
+ 3249, 3250, 3251, 3252, 3253, 3255, 3256, 3257, 3258, 3259,
+ 1728, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3268, 3269,
+ 3267, 0, 3270, 3272, 3271, 3273, 3274, 3275, 3276, 3277,
+ 3278, 3279, 3210, 3245, 3254, 869, 1733, 867, 2610, 1726,
+ 869, 0, 1724, 0, 1722, 1723, 777, 779, 2603, 2604,
+ 2605, 2606, 2608, 2609, 3671, 3672, 778, 2607, 0, 0,
+ 0, 1653, 1650, 0, 0, 0, 1707, 1707, 0, 0,
+ 0, 0, 1450, 0, 0, 0, 1636, 0, 1658, 1656,
+ 0, 0, 0, 0, 0, 1664, 0, 1581, 1579, 1508,
+ 0, 1506, 0, 1507, 0, 1509, 0, 0, 1646, 0,
+ 1476, 1494, 0, 0, 0, 1740, 0, 2009, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2504,
+ 0, 0, 937, 943, 946, 947, 949, 941, 0, 1618,
+ 0, 0, 0, 1431, 1427, 0, 1435, 0, 0, 0,
+ 1449, 1448, 1914, 1913, 0, 1689, 0, 0, 1739, 0,
+ 0, 1739, 0, 0, 0, 2501, 1390, 1623, 1389, 520,
+ 0, 538, 512, 1993, 515, 0, 529, 0, 541, 0,
+ 0, 0, 329, 0, 1283, 0, 460, 0, 3414, 3507,
+ 0, 0, 1383, 1395, 1386, 0, 0, 0, 3332, 0,
+ 3343, 1391, 0, 0, 0, 3370, 3371, 1390, 3369, 1390,
+ 1390, 3316, 3314, 3313, 3289, 0, 0, 3362, 3356, 3353,
+ 3354, 1391, 0, 3295, 0, 1391, 3293, 3297, 3299, 2231,
+ 2230, 0, 2290, 1949, 2204, 2223, 2225, 2291, 2146, 2150,
+ 0, 1884, 2134, 0, 0, 2128, 2132, 0, 2485, 0,
+ 0, 2099, 1812, 3751, 0, 1851, 84, 0, 2334, 2325,
+ 0, 2320, 2323, 0, 0, 3406, 3407, 3399, 3402, 3400,
+ 3401, 3405, 3408, 3409, 3396, 3403, 1949, 0, 0, 1217,
+ 1223, 2367, 1199, 136, 0, 1183, 3694, 2187, 3629, 3642,
+ 1011, 1013, 1012, 997, 998, 0, 0, 0, 1057, 0,
+ 0, 0, 620, 620, 170, 0, 0, 200, 3653, 0,
+ 3612, 3613, 3616, 3618, 3653, 3589, 0, 0, 0, 158,
+ 1785, 1366, 1358, 1360, 1355, 1355, 0, 1749, 0, 0,
+ 0, 1749, 0, 0, 501, 0, 1830, 1846, 906, 2410,
+ 1903, 1904, 0, 1899, 1947, 1948, 1901, 1897, 0, 1906,
+ 1908, 1327, 1965, 1957, 1952, 1376, 0, 1945, 0, 0,
+ 0, 2033, 2035, 675, 674, 244, 243, 248, 249, 1993,
+ 1993, 2122, 2121, 1993, 1993, 177, 174, 2120, 2119, 1993,
+ 1993, 172, 2088, 195, 194, 196, 197, 199, 198, 193,
+ 1045, 0, 3512, 0, 3519, 3514, 3517, 3497, 3496, 3495,
+ 3492, 0, 1993, 1993, 1993, 0, 1993, 3533, 3535, 0,
+ 0, 1046, 914, 3547, 0, 0, 205, 3591, 0, 3593,
+ 0, 1237, 0, 1236, 255, 384, 1993, 1993, 103, 1993,
+ 95, 96, 91, 123, 124, 93, 94, 99, 98, 100,
+ 101, 104, 105, 102, 97, 92, 127, 129, 128, 106,
+ 2029, 2028, 2027, 130, 125, 126, 90, 1892, 2170, 0,
+ 0, 1978, 2176, 2167, 2056, 2054, 3699, 1389, 458, 0,
+ 456, 0, 3421, 3426, 3500, 3499, 3522, 3522, 406, 384,
+ 406, 431, 0, 1300, 1305, 1309, 0, 1301, 2407, 844,
+ 867, 867, 884, 830, 850, 846, 850, 3137, 840, 884,
+ 796, 796, 884, 843, 796, 850, 845, 0, 842, 884,
+ 841, 796, 867, 834, 867, 790, 791, 796, 867, 809,
+ 0, 850, 884, 0, 831, 850, 836, 867, 0, 867,
+ 867, 867, 2993, 867, 867, 290, 850, 774, 780, 782,
+ 781, 783, 784, 867, 867, 867, 867, 867, 871, 0,
+ 0, 3727, 0, 279, 0, 414, 468, 451, 0, 0,
+ 1746, 0, 865, 868, 1717, 919, 0, 1730, 852, 851,
+ 0, 872, 1732, 0, 1729, 919, 866, 870, 1735, 1721,
+ 1727, 1734, 919, 1525, 1556, 1529, 1528, 0, 0, 0,
+ 1588, 0, 1705, 1711, 0, 0, 0, 1563, 0, 1688,
+ 1686, 1565, 0, 0, 1638, 2501, 1613, 1684, 1591, 1615,
+ 1568, 0, 0, 0, 1505, 1503, 1504, 0, 1582, 1604,
+ 0, 1492, 1605, 0, 1589, 1612, 1521, 2011, 2010, 2008,
+ 1536, 1993, 0, 1593, 1554, 0, 0, 1617, 2505, 2506,
+ 0, 0, 0, 948, 934, 935, 936, 0, 938, 940,
+ 942, 0, 1993, 1452, 1451, 1423, 0, 1432, 1429, 0,
+ 1437, 1916, 1915, 0, 0, 1629, 1631, 1630, 1633, 1632,
+ 1627, 1737, 1395, 1643, 0, 521, 522, 524, 526, 603,
+ 0, 516, 545, 505, 0, 520, 508, 1281, 1284, 0,
+ 3412, 3411, 0, 1387, 1399, 1398, 2495, 2499, 0, 0,
+ 1391, 1390, 3329, 3350, 0, 0, 3368, 3366, 3367, 1391,
+ 1391, 3360, 3359, 3361, 3327, 3322, 3320, 3319, 2015, 2016,
+ 2014, 2012, 2013, 2222, 1949, 2218, 0, 1892, 0, 1849,
+ 1390, 2124, 0, 3698, 0, 2105, 0, 2102, 2109, 494,
+ 2175, 0, 2100, 2071, 0, 1854, 0, 1855, 1852, 1853,
+ 1993, 0, 0, 377, 369, 364, 372, 366, 368, 367,
+ 373, 374, 375, 376, 370, 365, 371, 363, 362, 0,
+ 3394, 1228, 1229, 0, 0, 0, 1208, 1204, 143, 0,
+ 3424, 164, 0, 149, 152, 725, 0, 0, 0, 0,
+ 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117,
+ 0, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 669,
+ 2117, 2117, 0, 0, 2117, 2117, 670, 139, 489, 497,
+ 621, 624, 660, 0, 668, 662, 649, 650, 486, 667,
+ 141, 275, 237, 0, 0, 3648, 3611, 3614, 0, 0,
+ 263, 3659, 0, 690, 691, 689, 688, 0, 0, 3589,
+ 0, 1369, 1368, 1797, 0, 1801, 1806, 1802, 0, 1793,
+ 0, 1814, 1858, 1850, 0, 0, 2418, 1946, 0, 0,
+ 1946, 0, 0, 1390, 2031, 1389, 176, 181, 180, 173,
+ 186, 179, 1050, 192, 3513, 3511, 3510, 0, 3518, 0,
+ 3493, 3529, 3527, 3528, 3531, 0, 0, 3530, 3532, 1051,
+ 1052, 1058, 1053, 1160, 1160, 0, 1160, 0, 0, 1160,
+ 2117, 0, 0, 501, 1178, 2117, 0, 0, 0, 0,
+ 0, 1140, 0, 1160, 0, 0, 0, 0, 0, 1078,
+ 1139, 622, 1028, 1077, 1079, 1091, 497, 0, 1112, 1142,
+ 1143, 1141, 3548, 0, 0, 0, 1063, 0, 208, 206,
+ 216, 3590, 0, 2088, 0, 3593, 1239, 1240, 0, 446,
+ 0, 116, 118, 0, 120, 122, 0, 112, 114, 2173,
+ 2088, 0, 1979, 0, 1389, 2088, 0, 1390, 0, 3536,
+ 3536, 433, 435, 434, 2139, 1302, 1310, 2409, 2408, 0,
+ 802, 884, 882, 884, 816, 885, 854, 847, 854, 818,
+ 924, 830, 0, 884, 917, 921, 918, 826, 0, 796,
+ 919, 0, 922, 797, 824, 817, 823, 854, 0, 813,
+ 821, 884, 789, 825, 812, 0, 854, 827, 832, 835,
+ 837, 839, 854, 884, 0, 0, 3648, 796, 811, 810,
+ 0, 796, 854, 3648, 848, 833, 919, 930, 796, 884,
+ 854, 854, 294, 1993, 296, 381, 1390, 451, 3747, 1702,
+ 0, 0, 0, 0, 1718, 920, 0, 0, 1736, 1719,
+ 1720, 1654, 0, 0, 0, 0, 1711, 0, 0, 1712,
+ 1670, 0, 0, 0, 0, 0, 1524, 0, 1634, 0,
+ 1580, 1578, 0, 850, 1483, 1485, 1481, 1484, 0, 869,
+ 1487, 0, 831, 869, 919, 1491, 1477, 1478, 1479, 1480,
+ 0, 0, 0, 0, 0, 2507, 932, 1620, 0, 945,
+ 939, 937, 944, 0, 1428, 0, 0, 1918, 0, 1691,
+ 0, 1644, 525, 0, 604, 600, 0, 0, 546, 0,
+ 547, 543, 519, 0, 3413, 1397, 1396, 0, 3336, 3334,
+ 3333, 3331, 3365, 3364, 3317, 3315, 1391, 1391, 134, 2149,
+ 1940, 2151, 2152, 2143, 2133, 2131, 2481, 0, 2106, 2108,
+ 2492, 2491, 2503, 0, 0, 2088, 2101, 1097, 0, 1098,
+ 1109, 1111, 1308, 0, 2359, 0, 2357, 2326, 2360, 0,
+ 0, 0, 0, 0, 0, 146, 0, 0, 0, 1022,
+ 2640, 0, 0, 694, 696, 697, 698, 699, 0, 726,
+ 701, 616, 975, 975, 728, 2508, 0, 673, 2117, 490,
+ 1993, 1993, 1993, 1993, 647, 1993, 1993, 1993, 0, 0,
+ 2117, 1993, 0, 0, 1993, 1993, 1993, 1993, 0, 0,
+ 1993, 655, 656, 654, 1993, 1993, 2407, 496, 498, 914,
+ 625, 0, 620, 268, 3719, 481, 482, 0, 0, 1394,
+ 1394, 3767, 0, 3768, 3769, 0, 1394, 1394, 3752, 3666,
+ 278, 3663, 3664, 3754, 3762, 3593, 0, 0, 3609, 237,
+ 0, 237, 0, 0, 1752, 1751, 0, 0, 0, 0,
+ 0, 0, 1839, 0, 1838, 0, 1844, 1848, 0, 0,
+ 0, 0, 2411, 2413, 0, 2048, 1900, 1909, 1907, 1944,
+ 1956, 0, 2036, 2034, 0, 3520, 3516, 1996, 1995, 0,
+ 1055, 0, 1054, 1059, 1022, 616, 1161, 614, 0, 1116,
+ 1120, 1117, 614, 2075, 2075, 1274, 2075, 0, 0, 0,
+ 0, 2075, 0, 2077, 2075, 0, 0, 2075, 2075, 0,
+ 1274, 0, 499, 1181, 1179, 2075, 1180, 2075, 0, 0,
+ 1274, 1129, 1073, 1130, 0, 1074, 2075, 1274, 1096, 1274,
+ 1274, 0, 623, 914, 1075, 1076, 725, 1175, 215, 204,
+ 0, 0, 1065, 1067, 0, 0, 1068, 3592, 1041, 3595,
+ 2088, 1245, 0, 108, 1993, 109, 1993, 107, 1993, 2088,
+ 2171, 0, 1980, 2177, 2168, 1390, 0, 412, 3539, 0,
+ 3420, 3419, 0, 2175, 0, 814, 888, 0, 815, 856,
+ 857, 855, 860, 792, 788, 925, 929, 928, 819, 820,
+ 799, 916, 923, 0, 882, 798, 794, 0, 1024, 806,
+ 0, 795, 838, 793, 807, 0, 286, 0, 3696, 0,
+ 1391, 3703, 292, 822, 3648, 282, 804, 808, 291, 0,
+ 785, 800, 931, 801, 803, 930, 786, 787, 1993, 3725,
+ 309, 308, 0, 0, 410, 469, 863, 861, 864, 862,
+ 0, 1586, 1587, 1708, 1946, 1706, 0, 1713, 1714, 1668,
+ 1610, 0, 1564, 0, 1635, 0, 1616, 1583, 1486, 1482,
+ 1489, 832, 1488, 1490, 1607, 1537, 1993, 1594, 1598, 1599,
+ 0, 1619, 1993, 1430, 0, 1921, 1920, 0, 0, 1946,
+ 1628, 523, 601, 518, 0, 542, 545, 0, 506, 2496,
+ 1391, 1391, 3323, 3321, 2224, 1977, 2482, 2480, 2104, 0,
+ 0, 0, 2103, 2113, 0, 2086, 1304, 0, 1856, 2355,
+ 1993, 0, 2324, 0, 1205, 1206, 1207, 1209, 0, 0,
+ 0, 0, 0, 727, 1023, 0, 0, 700, 2511, 693,
+ 725, 0, 0, 0, 975, 717, 616, 0, 1022, 976,
+ 616, 616, 0, 0, 0, 0, 2026, 2025, 644, 637,
+ 636, 639, 638, 641, 640, 0, 633, 630, 642, 632,
+ 657, 0, 645, 627, 686, 687, 685, 651, 658, 628,
+ 629, 635, 634, 631, 678, 683, 681, 680, 679, 684,
+ 682, 646, 661, 643, 659, 488, 605, 626, 2019, 2020,
+ 2017, 2018, 666, 665, 2021, 663, 664, 497, 274, 272,
+ 273, 3708, 0, 269, 0, 267, 0, 271, 3711, 246,
+ 238, 0, 384, 485, 483, 484, 0, 0, 0, 0,
+ 0, 0, 1393, 3770, 0, 380, 3653, 3653, 384, 3783,
+ 3753, 3665, 3755, 157, 277, 264, 266, 3661, 0, 3716,
+ 3656, 3779, 3656, 3593, 1753, 0, 0, 1798, 0, 1803,
+ 0, 1795, 1834, 1834, 1845, 0, 0, 0, 0, 2412,
+ 0, 0, 2419, 2421, 1958, 0, 1053, 0, 0, 0,
+ 1274, 0, 0, 1144, 1114, 0, 0, 0, 0, 1085,
+ 0, 1094, 0, 0, 2075, 0, 1146, 0, 1145, 0,
+ 0, 0, 1158, 1159, 0, 1936, 1938, 1946, 0, 0,
+ 0, 1134, 1156, 1157, 0, 0, 0, 0, 1104, 0,
+ 1090, 1160, 0, 1160, 1113, 0, 692, 0, 1177, 1115,
+ 202, 207, 217, 218, 1043, 0, 3594, 1039, 0, 1246,
+ 1242, 1243, 1238, 117, 121, 113, 2174, 0, 300, 0,
+ 3543, 3537, 3541, 2140, 2088, 0, 883, 858, 859, 926,
+ 927, 889, 919, 0, 919, 3648, 288, 0, 285, 0,
+ 3705, 0, 0, 805, 318, 317, 315, 384, 305, 313,
+ 307, 0, 314, 0, 298, 0, 0, 1710, 1666, 0,
+ 1637, 1639, 0, 933, 0, 1917, 1911, 0, 0, 0,
+ 0, 0, 0, 1930, 1922, 0, 1695, 0, 603, 0,
+ 0, 531, 544, 550, 549, 3337, 3335, 2147, 0, 2107,
+ 2493, 2504, 495, 0, 0, 1110, 2358, 0, 3404, 0,
+ 1946, 1020, 0, 0, 0, 0, 0, 0, 695, 0,
+ 616, 971, 972, 1022, 0, 702, 994, 2508, 1022, 1022,
+ 3130, 867, 790, 791, 796, 867, 809, 2693, 850, 884,
+ 2697, 831, 850, 836, 867, 732, 867, 867, 867, 867,
+ 867, 0, 720, 730, 775, 777, 2603, 2604, 2605, 2606,
+ 2608, 2609, 2607, 2510, 491, 653, 2347, 652, 606, 0,
+ 2407, 276, 0, 3707, 0, 2993, 3709, 247, 187, 1389,
+ 213, 3758, 3772, 3756, 3771, 3656, 3662, 1394, 0, 1394,
+ 0, 3667, 1393, 0, 3610, 0, 3778, 3776, 159, 0,
+ 1884, 0, 0, 0, 1842, 1840, 2416, 2417, 0, 2414,
+ 0, 0, 2420, 0, 1060, 1056, 1061, 0, 1099, 0,
+ 1118, 0, 0, 1084, 0, 1260, 0, 0, 1137, 1125,
+ 0, 1080, 0, 1127, 1128, 1172, 1082, 0, 1939, 500,
+ 0, 0, 1089, 0, 1175, 1081, 1106, 1087, 1119, 1176,
+ 209, 1069, 384, 0, 0, 0, 1241, 0, 1248, 0,
+ 3542, 3540, 0, 2083, 1812, 829, 1025, 828, 3706, 287,
+ 1390, 283, 849, 1993, 295, 316, 297, 3728, 853, 1946,
+ 1562, 1538, 1621, 0, 1927, 0, 0, 1925, 1924, 0,
+ 1919, 1926, 602, 599, 0, 0, 539, 557, 553, 0,
+ 555, 556, 578, 2088, 0, 0, 2112, 2114, 2361, 3374,
+ 0, 1017, 0, 1018, 0, 3374, 3374, 0, 0, 0,
+ 1022, 994, 2508, 953, 0, 703, 0, 707, 709, 734,
+ 0, 729, 721, 742, 0, 0, 671, 487, 270, 0,
+ 3710, 0, 188, 3720, 3604, 205, 214, 0, 0, 3781,
+ 3765, 3761, 3763, 3760, 3656, 265, 187, 2878, 0, 1761,
+ 1763, 1786, 1800, 1805, 0, 1835, 0, 0, 0, 2415,
+ 2423, 2422, 3521, 0, 1101, 615, 1014, 0, 1132, 0,
+ 0, 1175, 1086, 0, 0, 0, 1126, 1147, 1124, 1274,
+ 1937, 0, 0, 0, 1123, 1105, 1107, 1220, 0, 211,
+ 187, 3596, 0, 0, 1247, 1252, 0, 1249, 1251, 1361,
+ 0, 2397, 3704, 0, 306, 1709, 1928, 0, 1929, 1932,
+ 0, 0, 1933, 0, 535, 537, 527, 0, 532, 0,
+ 551, 0, 2117, 2117, 0, 2117, 2117, 2117, 2117, 571,
+ 579, 581, 582, 583, 0, 2148, 2483, 2494, 982, 1946,
+ 0, 0, 0, 0, 984, 986, 0, 0, 722, 715,
+ 711, 0, 0, 957, 995, 0, 705, 0, 0, 897,
+ 951, 760, 0, 763, 0, 895, 733, 735, 893, 894,
+ 737, 0, 0, 0, 776, 0, 0, 875, 0, 878,
+ 0, 0, 731, 0, 743, 874, 881, 2509, 648, 493,
+ 672, 0, 0, 0, 216, 3660, 237, 0, 384, 0,
+ 3784, 3717, 0, 1760, 0, 0, 1837, 1836, 1851, 0,
+ 0, 0, 545, 1100, 1015, 1133, 0, 1122, 1148, 545,
+ 1138, 1083, 1135, 1136, 1148, 0, 1088, 210, 0, 203,
+ 219, 3597, 3598, 1244, 0, 2141, 905, 284, 1923, 1931,
+ 1935, 1934, 533, 0, 540, 564, 554, 560, 0, 2117,
+ 0, 0, 2117, 0, 0, 0, 0, 0, 548, 580,
+ 2117, 0, 0, 2117, 0, 1003, 1005, 1151, 983, 1007,
+ 1006, 988, 1004, 1016, 1021, 1020, 3374, 190, 0, 1151,
+ 985, 1009, 992, 1151, 987, 1008, 990, 0, 0, 0,
+ 0, 713, 0, 956, 0, 961, 0, 0, 0, 0,
+ 761, 762, 898, 736, 896, 892, 886, 880, 2520, 2521,
+ 0, 0, 0, 772, 773, 876, 769, 770, 771, 0,
+ 751, 0, 0, 882, 873, 744, 3714, 0, 0, 0,
+ 3759, 237, 3657, 3655, 3657, 3654, 1765, 1762, 0, 1770,
+ 1772, 1771, 1773, 1764, 0, 0, 0, 1121, 1103, 0,
+ 1131, 0, 0, 501, 1148, 501, 0, 212, 1250, 0,
+ 2398, 539, 536, 564, 0, 562, 0, 558, 552, 559,
+ 0, 596, 590, 0, 592, 593, 591, 588, 575, 0,
+ 573, 0, 999, 1002, 1993, 1000, 144, 1153, 1152, 989,
+ 0, 982, 0, 150, 993, 153, 991, 718, 0, 0,
+ 0, 0, 954, 0, 958, 959, 960, 0, 952, 0,
+ 0, 0, 0, 887, 891, 2455, 2454, 0, 1400, 879,
+ 0, 746, 890, 745, 0, 3712, 1389, 218, 3757, 3658,
+ 3766, 3764, 0, 1767, 0, 0, 1843, 1841, 1102, 1149,
+ 1150, 1093, 501, 1092, 545, 2142, 2154, 0, 2424, 534,
+ 561, 0, 569, 565, 567, 570, 595, 594, 0, 572,
+ 0, 589, 676, 1001, 1155, 1154, 1019, 1151, 1010, 719,
+ 0, 1018, 0, 955, 0, 0, 982, 0, 984, 986,
+ 768, 0, 877, 738, 738, 752, 3715, 0, 3605, 201,
+ 1766, 0, 1774, 1095, 0, 0, 0, 0, 2410, 563,
+ 0, 0, 584, 577, 574, 147, 0, 0, 1018, 967,
+ 966, 0, 0, 963, 962, 704, 982, 708, 710, 1401,
+ 0, 749, 739, 741, 748, 754, 755, 753, 756, 3713,
+ 0, 1769, 0, 1780, 1779, 1768, 0, 1775, 1777, 1108,
+ 2153, 2155, 0, 2418, 568, 566, 576, 585, 587, 716,
+ 982, 0, 970, 968, 969, 0, 0, 706, 1402, 740,
+ 747, 757, 759, 0, 1757, 1758, 1756, 1755, 1754, 1781,
+ 0, 0, 1776, 0, 1778, 0, 2426, 586, 712, 982,
+ 0, 0, 758, 3606, 1783, 1782, 0, 0, 2425, 0,
+ 2430, 714, 965, 964, 3601, 0, 0, 2437, 3599, 3600,
+ 0, 3607, 2428, 2429, 2427, 0, 2432, 0, 2434, 2435,
+ 0, 2088, 3602, 384, 2436, 2431, 0, 2438, 2440, 0,
+ 2399, 187, 2433, 0, 1389, 3608, 2439, 0, 1390, 2441
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -5341, -5341, -5341, -5341, 2297, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, 2818, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 2032, -5341, 389, -5341, 394, -5341, 393, -3726, -593,
- -5341, -1880, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 2183, -2922, -5340, -5341, -5341, -235, 1368, -5341,
- -5341, 144, -5341, -262, -5341, -5341, -5341, -4405, -410, -629,
- -5341, 45, 4647, 3659, -82, 3990, 945, -4381, -5341, -5341,
- -5341, -5341, -5341, -5341, -1919, -5341, -5341, -5341, -5341, 333,
- 167, -5341, -5341, -5341, -5341, -5341, 1453, -2126, -628, 367,
- 37, -5341, -89, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 22, -5341, -5341, -5341, -173, 739, -4505, -5341, -5341, -5341,
- -5341, 2419, -5341, 1834, -5341, -1747, 3685, -5341, -5341, -5341,
- -5341, -5341, 2829, -2466, -5341, -5341, -5341, 1510, -5341, -2790,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -301, -5341, -2031,
- 1985, -5341, 2042, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -1220, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 3355, -5341, 4605, -5341, -5341, 1228, -5341, 3245,
- -5341, 3247, 3248, -2766, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -71, -68, 207, 873, 1385, -5341, -3887, -5341,
- -5341, 120, -5341, -5341, -5341, -5341, -5341, 1120, 317, 1117,
- -5341, 686, 3025, -2825, -5341, -5341, -5341, -5341, -5341, -5341,
- -409, 27, -516, -5341, -4382, -5341, -4835, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -4018, -5341, -5341, -5341, -644,
- -5341, -5341, -604, -5341, -5341, -5341, -5341, -293, -5341, -5341,
- -3828, -5341, -5341, -5341, 38, -5341, 2760, 4052, -1887, 521,
- -679, -5341, -3767, 904, -3962, -3891, -5341, -3849, -5341, -191,
- -1300, -1294, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 482,
- 297, 903, -4323, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -4322, -4320, 174, -5341, -5030, -5341, 636, -5341, -4857, -5341,
- -5341, -5341, -5341, -5341, -5341, -611, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -3864, -5341, -5341, -454, -461, -5341, -354,
- -3414, -5341, -2742, -4795, -342, -1415, -341, -340, -339, -5341,
- -2110, 1218, 1339, -5341, -5341, -5341, -5341, -3372, -3229, -5341,
- -2076, -3524, -3280, 1269, -3076, -3540, 1295, -452, -4346, -4849,
- -575, -5341, -3899, -5341, -5341, -3636, -4034, -5341, -670, -2770,
- -3171, -360, -5341, -5341, -1705, -3212, -5341, 863, -4055, -4074,
- 426, 1707, -5341, -5341, 1204, -5341, -1642, 1202, -5341, -5341,
- -5341, 1211, -5341, -605, -5341, -5341, -5341, -5341, -4097, -5341,
- -2475, -4344, -5341, 5410, 5411, -2786, -574, -573, -5341, -5341,
- -5341, -137, 2300, -5341, -3080, -377, -387, -384, -3133, -29,
- -4870, -3687, -4250, -3722, 860, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 224,
- 228, 1570, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 954, -1966, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -4785, -3009, -5341, -5341, 540, -5301, -3967, -3964, -4301, 4008,
- -5341, -5341, -5341, -5341, 4094, -3312, -4244, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 3593, 1439, -5341, -5341, 2331, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -180, 2340,
- -5341, -5341, -5341, -5341, -5341, 2802, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -318, -5341, -5341, -5341, -5341, -5341,
- -13, 3446, -5341, -5341, -5341, -5341, 5, -5341, -5341, -5341,
- -5341, 2496, -5341, -5341, -5341, -5341, 2973, -5341, -5341, -5341,
- -5341, -5341, -5341, 2144, -5341, 2717, -5341, -2450, -5341, -5341,
- 1410, -153, -5341, -5341, -19, -5341, -5341, -5341, -5341, -5341,
- 35, -5341, -5341, -5341, 5404, -1539, 7, -66, -5341, -5341,
- 6, -5341, -5341, 4147, -435, 2544, -717, 4778, -5341, -5341,
- -5341, -5341, -2485, 2408, -5341, 4205, -5341, -5341, 4395, 1641,
- 4167, 2282, 947, 2507, -1670, -164, -3006, 1238, -5341, 1423,
- 596, 10618, -5341, -1480, -1521, -5341, -5341, -41, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 2608, 2609, -5341, -5341,
- 3888, -5341, 2543, -3755, -5341, -5341, -850, -5341, -2479, -5341,
- -5341, -5341, 2545, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, 1740, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, 3837, -1597, -5341,
- -5341, 3973, -5341, 1833, -5341, 864, -5341, -5341, 1670, -5341,
- -2759, -5341, -5341, -1538, -636, -5341, 3978, -5341, 3995, -1191,
- -4064, -5341, -1749, -467, -5341, -249, -5341, -5341, -5341, -5341,
- -5341, -3437, -561, -559, -5341, -5341, -5341, 3594, -5341, 4238,
- -5341, -5341, -5341, -5341, -5341, -5341, 3602, -5341, -2060, -5341,
- -2534, 4242, 4254, 4262, -5341, 4263, -5341, -5341, -1522, 310,
- -5341, 674, -5341, -5341, -5341, -5341, -5341, 1216, -5341, -237,
- 779, -234, -4276, -1558, 1092, -5341, -5341, -1892, 3617, 4013,
- -1271, -5341, 2915, -5341, 3608, 1786, -5341, 2342, -5341, 1099,
- 1103, -5341, -5341, 1794, -5341, -5341, -5341, -5341, 483, -123,
- -5341, -5341, -5341, 53, 819, -2046, -5341, 496, -3188, 4264,
- -168, -5341, 2344, -1961, -3142, -1174, 909, -1278, 2352, 480,
- 4847, -449, -5341, -5341, 4223, -5341, -2833, -5341, -603, -1540,
- -1028, -3036, -3077, -4711, -5341, -2250, 1347, -5341, -5341, -5341,
- -5341, 1124, -5341, -5341, -5341, 2946, -5341, 5520, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -701, -1176,
- -5341, -5341, 2854, -936, -159, 5541, -17, -5341, -5341, -15,
- -5341, -5341, 4945, -2016, -5341, -5341, 4390, 3483, 2826, -5341,
- 1512, -5341, -5341, -5341, -5341, 1259, -5341, -5341, 216, -1158,
- -521, 2347, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 825,
- -5341, 1278, -1857, -5341, -5341, -5341, -5341, -9, -5341, -5341,
- -5341, -5341, 1281, -5341, -445, -5341, -8, -5341, -5341, -5341,
- 4816, -5341, -5341, -5341, -5341, -5341, -5341, -4085, -5341, -5341,
- 3558, -1425, 4819, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- 3127, -5341, -5341, -5341, -5341, -5341, -5341, 3852, 4978, 4981,
- -1660, -5341, -926, 3128, 2536, -1087, -5341, -5341, -5341, 4268,
- 4989, -5341, -5341, 49, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 3079, 170, -5341, -5341, -5341, -5341,
- -5341, 520, -5341, -5341, -5341, -5341, 3753, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 4156, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 1544, -419, -5341, 768, -462, -5341, 395, -5341, -5341,
- -5341, -5341, -5341, -532, -5341, -5341, -536, -5341, -1386, 4734,
- -1306, -5341, -1697, -3307, -5341, 12, -5341, -5341, -5341, 3131,
- -5341, -5341, -5341, -5341, 2877, -2504, -5341, 547, -5341, -5341,
- -2651, -924, -1661, -3990, 231, -5341, -5341, -586, 1742, 9697,
- -5341, -5341, 69, -474, -1243, -5341, -5341, 2827, -5, -825,
- -126, -757, -767, -1060, -5341, 4654, -5341, -5341, -5341, -625,
- -576, -568, -388, -507, 946, -618, 7026, 8611, -639, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, 2588,
- 2590, -5341, 5014, -5341, 3505, 3232, -5341, -5341, -5341, 2595,
- -5341, -5341, -5341, 5021, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, 2602, 2611, 2614, -5341, -5341, 1850,
- -2371, -5341, -5341, -1908, 250, -5341, 3541, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -5341, 3768, -580, 4532, -549,
- 3965, 5034, 4573, -5341, 4208, -5341, 4210, -5341, 1678, -5341,
- -858, 2678, -1393, -3465, -5341, -5341, 2994, 1205, -5341, -5341,
- -2520, -3086, -5341, 2519, 1119, -5341, -5341, 370, -5341, -5341,
- -5341, 1676, 440, 5012, 4453, -5341, -5341, -5341, -5341, 5618,
- 2030, -5341, 267, 5644, 5645, 5649, -414, -5341, -3150, -5341,
- -4306, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341,
- -5341, 854, -5341, -5341, -5341, 2087, -5341, -5341, -5341, -5341,
- -5341, -5341, -5341, -5341, -5341, -1435, 4820, -5341, 1621, -2598,
- -5341, -5341, -530, -5341, -5341, -5341, -5341, -5341, 3563, -5341,
- 2305, -5341, -5341, -5341, -4358, -5341, -5341, -4340, -5341, 486,
- -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -5341, -1399,
- -5341, -5341, -5341, 80, -911, 44, -5341, -5341, -5341, -5341,
- -5341, -5341
+ -5651, -5651, -5651, -5651, 2226, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, 2747, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 1956, -5651, 271, -5651, 272, -5651, 274, -3753, -594,
+ -5651, -1892, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, 2114, -2957, -5481, -5651, -5651, -396, 1284, -5651,
+ -5651, 19, -5651, -418, -5651, -5651, -5651, -4436, -576, -808,
+ -5651, 49, 4581, -1040, 4580, 4585, -5651, -109, 3925, -4372,
+ 746, -5651, -3008, -5651, -5651, -5651, -5651, -1929, -5651, -5651,
+ -5651, -5651, 215, 44, -5651, -5651, -5651, -408, -5651, -5651,
+ -2493, -650, 248, -105, -5651, -229, -5651, 433, -5651, -5651,
+ -5651, -5651, -5651, -118, -5651, -5651, -5651, -326, 647, -4534,
+ -5651, -5651, -5651, -5651, 2577, -5651, 1933, -5651, -1744, 3618,
+ -5651, -5651, -5651, -5651, -5651, 2764, -2455, -5651, -5651, -5651,
+ 1439, -5651, -2783, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -473, -5651, -2031, 1919, -5651, 1977, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -612, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, 3286, -5651, 4549, -5651, -5651,
+ 1157, -5651, 3178, -5651, 3187, 3183, -2777, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -199, -197, 87, 791, 1316,
+ -5651, -3913, -5651, -5651, -8, -5651, -5651, -5651, -5651, -5651,
+ 1051, 208, 1048, -5651, 603, 2969, -2838, -5651, -5651, -5651,
+ -5651, -5651, -5651, -566, -101, -681, -5651, -4363, -5651, -4973,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -4190, -5651,
+ -5651, -5651, -817, -5651, -5651, -775, -5651, -5651, -5651, -5651,
+ -443, -5651, -5651, -5631, -5651, -5651, -5651, -89, -5651, 2698,
+ 4006, -1882, 421, -463, -5651, -3782, 820, -4068, -3888, -5651,
+ -3062, -5651, -5651, -5651, -330, -1317, -1274, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 390, 187, 821, -4370, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -4369, -4367, 56, -5651, -5197,
+ -5651, 551, -5651, -4893, -5651, -5651, -5651, -5651, -5651, -5651,
+ -777, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5650, -5651,
+ -5651, -603, -611, -5651, -506, -3310, -5651, -2736, -4793, -493,
+ -1674, -492, -490, -489, -5651, -1937, 1158, 1282, -5651, -5651,
+ -5651, -5651, -3386, -3266, -5651, -1087, -3491, -3241, 1204, -753,
+ -3524, 1235, -599, -5396, -4904, -533, -5651, -3916, -5651, -5651,
+ -3837, -5167, -5651, -676, -2787, -3161, -512, -5651, -5651, -1721,
+ -3228, -5651, 787, -4064, -3872, 323, 1659, -5651, -5651, 1143,
+ -5651, -1613, 1138, -5651, -5651, -5651, 1154, -5651, -772, -5651,
+ -5651, -5651, -5651, -3660, -5651, -2513, -4357, -5651, 5369, 5370,
+ -3726, -737, -736, -5651, -5651, -5651, -269, 2254, -5651, -4386,
+ -523, -538, -532, -3160, -162, -5033, -4806, -5168, -4359, 785,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 103, 106, 1515, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 879, -2254, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -4905, -3115, -5651, -5651, 441,
+ -3796, -4111, -3988, -3984, -4349, 3956, -5651, -5651, -5651, -5651,
+ 4043, -3308, -3808, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 3540, 1445, -5651, -5651, 2283, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -325, 2290, -5651, -5651, -5651, -5651,
+ -5651, 2748, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -470, -5651, -5651, -5651, -5651, -5651, -150, 3390, -5651, -5651,
+ -5651, -5651, 13, -5651, -5651, -5651, -5651, 2443, -5651, -5651,
+ -5651, -5651, 2922, -5651, -5651, -5651, -5651, -5651, -5651, 2088,
+ -5651, 2667, -5651, -2469, -5651, -5651, 1350, -163, -5651, -5651,
+ -23, -5651, -5651, -5651, -5651, -5651, 34, -5651, -5651, -5651,
+ 5362, -1564, 7, -65, -5651, -5651, 2, -5651, -5651, 4097,
+ -503, 2495, -746, 4733, -5651, -5651, -5651, -5651, -2518, 2359,
+ -5651, 4155, -5651, -5651, 4359, 1556, 4116, 2230, 872, 2454,
+ -1671, -164, -3012, -2986, -5651, -95, -4453, 1179, -5651, 1485,
+ 824, 10029, -5651, -1503, -1614, -5651, -5651, -38, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 2561, 2566, -5651, -5651,
+ 3837, -5651, 2498, -5291, -5651, -5651, -915, -5651, -2424, -5651,
+ -5651, -5651, 2507, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, 1691, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 3789, -1587, -5651,
+ -5651, 3935, -5651, 1787, -5651, 790, -5651, -5651, 1612, -5651,
+ -2748, -5651, -5651, -1562, -642, -5651, 3917, -5651, 3952, -1219,
+ -4562, -5651, -1736, -615, -5651, -386, -5651, -5651, -5651, -5651,
+ -5651, -3324, -718, -716, -5651, -5651, -5651, 3552, -5651, 4204,
+ -5651, -5651, -5651, -5651, -5651, -5651, 3556, -5651, -2085, -5651,
+ -2507, 4209, 4217, 4219, -5651, 4224, -5651, -5651, -1712, 199,
+ -5651, 585, -5651, -5651, -5651, -5651, -5651, 1160, -5651, -385,
+ 710, -378, -4325, -1542, 1398, -5651, -5651, -1893, 3571, 3973,
+ -1328, -5651, 2871, -5651, 3558, 1745, -5651, 2300, -5651, 1037,
+ 1044, -5651, -5651, 1761, -5651, -5651, -5651, -5651, 396, -252,
+ -5651, -5651, -5651, -71, 758, -2062, -5651, 406, -3200, 4208,
+ -292, -5651, 2304, -1961, -3166, -1208, 846, -1305, 2313, 393,
+ 4814, -496, -5651, -5651, 4176, -5651, -2774, -5651, -1762, -1549,
+ -1001, -3047, -2864, -4728, -5651, -2205, 1300, -5651, -5651, -5651,
+ -5651, 1057, -5651, -5651, -5651, 2910, -5651, 5488, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -671, -1159,
+ -5651, 4141, 3493, -181, -146, 5507, -6, -5651, -5651, 1,
+ -5651, -5651, 4908, -1982, -5651, -5651, 4347, 3448, 2787, -5651,
+ 1467, -5651, -5651, -5651, -5651, 1209, -5651, -5651, 98, -1119,
+ -765, 2310, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 765,
+ -5651, 1228, -1870, -5651, -5651, -5651, -5651, 3, -5651, -5651,
+ -5651, -5651, 1231, -5651, -597, -5651, 9, -5651, -5651, -5651,
+ -5651, 4779, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -4110,
+ -5651, -2280, 4781, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ 3079, -5651, -5651, -5651, -5651, -5651, -5651, 3805, 4938, 4939,
+ -1624, -5651, -882, 3083, 2494, -904, -5651, -5651, -5651, 4227,
+ 4942, -5651, -5651, 41, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 3033, 54, -5651, -5651, -5651, -5651,
+ -5651, 422, -5651, -5651, -5651, -5651, 3708, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 4112, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, 1486, -585, -5651, 678, -622, -5651, 281, -5651, -5651,
+ -5651, -5651, -5651, -692, -5651, -5651, -697, -5651, -1369, 4689,
+ -1310, -5651, -1723, -3311, -5651, 4, -5651, -5651, -5651, 3086,
+ -5651, -5651, -5651, -5651, 2832, -2520, -5651, 449, -5651, -5651,
+ -2650, -879, -1655, -3390, 235, -5651, -5651, -601, 4535, 8318,
+ -5651, -5651, -9, 1413, -1239, -5651, -5651, 2780, -5, -824,
+ -135, -756, -780, -1060, -5651, 4757, -5651, -5651, -5651, -653,
+ -634, -627, 5711, 642, 3484, -666, 6429, 8408, -186, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, 2545,
+ 2546, -5651, 4973, -5651, 3467, 3186, -5651, -5651, -5651, 2548,
+ -5651, -5651, -5651, 4981, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 2549, 2564, 2557, -5651, -5651, 1807,
+ -2345, -5651, -5651, -5651, -1922, 145, -5651, 3494, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, -5651, 3709, -535, 4491,
+ -554, 3914, 4991, 4524, -5651, 4165, -5651, 4180, -5651, 1614,
+ -5651, -814, 2623, -1382, -3237, -5651, -5651, 2951, 1132, -5651,
+ -5651, -2502, -3079, -5651, 2469, 1045, -5651, -5651, 243, -5651,
+ -5651, -5651, 1615, 246, 4964, 4403, -5651, -5651, -5651, -5651,
+ 5576, 2371, -5651, 193, 5602, 5606, 5607, -173, -5651, -3173,
+ -5651, -4339, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -5651, -5651, -5651, 1726, -5651, -5651, 3052, -5651, -5651,
+ -5651, 2190, -5651, -5651, -5651, -5651, -5651, -5651, -5651, -5651,
+ -5651, -1505, 4777, -5651, 1565, -2601, -3836, -5651, -5651, -4028,
+ -348, -3883, -5651, -4385, 777, -5651, -5651, -5651, -5651, -5651,
+ -605, -5651, -5651, -5651, -5651, -5651, 3517, -5651, 2263, -5651,
+ -5651, -5651, -4460, -5651, -5651, -4654, -5651, 771, -5651, -5651,
+ -5651, -5651, -1365, -5651, -5651, -5651, -4274, -918, 40, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651, 782, 789, -5651, 793,
+ -5651, -4467, -5651, -5651, -5651, -5651, -5651, -5651, -3765, -5651,
+ -5651, -5651, -5651, -5651, -5651, -5651
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 69, 742, 1945, 70, 71, 72, 73, 74, 1911,
- 75, 1261, 2571, 1263, 1876, 2574, 76, 711, 77, 2074,
- 2763, 2764, 4592, 4593, 4586, 4587, 4589, 4590, 2765, 822,
- 823, 2613, 2614, 78, 2631, 3948, 3212, 1947, 4816, 2625,
- 5157, 1952, 4819, 1953, 4820, 2623, 3954, 4475, 1957, 1958,
- 751, 3949, 3295, 3296, 5660, 1322, 3208, 3304, 3305, 2636,
- 4465, 4572, 5568, 4576, 5708, 5841, 5662, 3323, 4991, 5569,
- 5570, 646, 1332, 2126, 786, 2040, 5512, 2712, 5248, 2713,
- 79, 815, 2063, 3330, 1436, 2064, 2065, 4882, 4883, 5258,
- 5239, 5240, 5241, 5242, 4463, 4875, 4468, 2849, 2071, 5055,
- 5047, 5048, 4662, 3412, 3413, 4669, 3414, 5069, 5074, 3378,
- 3379, 4108, 3415, 5387, 5388, 5389, 666, 1132, 5390, 80,
- 81, 667, 675, 668, 1129, 2430, 1130, 82, 83, 709,
- 1901, 1902, 1903, 1904, 3174, 2591, 3168, 3169, 4404, 5056,
- 3417, 84, 647, 917, 918, 919, 920, 2180, 921, 2851,
- 3434, 922, 2843, 3403, 923, 924, 925, 893, 818, 2795,
- 2854, 3435, 2796, 3380, 2855, 2177, 926, 927, 928, 929,
- 930, 1543, 894, 2146, 3389, 4122, 85, 628, 819, 1438,
- 2069, 820, 2070, 3333, 821, 2067, 1441, 3439, 2114, 848,
- 1473, 931, 1138, 3440, 932, 2183, 2185, 2182, 3438, 4682,
- 2184, 86, 657, 685, 645, 1471, 673, 4879, 5254, 4450,
- 4873, 4451, 5223, 4375, 4868, 4869, 4870, 5319, 3153, 87,
- 660, 1114, 1731, 2422, 3833, 3025, 3027, 2423, 3832, 4315,
- 4316, 4317, 3023, 3024, 5421, 3029, 3830, 5613, 5966, 5731,
- 5732, 3822, 5736, 4324, 4764, 4765, 4766, 5127, 5423, 5619,
- 5860, 5737, 5973, 5858, 5969, 5859, 5971, 6096, 6049, 6050,
- 5870, 5984, 5985, 6054, 6097, 5747, 5748, 5749, 6141, 6142,
- 5750, 3826, 3827, 5418, 4760, 5499, 3199, 3200, 2035, 5293,
- 1272, 88, 4452, 4556, 4453, 4454, 5193, 5878, 5807, 4456,
- 4457, 4458, 6057, 1806, 5219, 5205, 4473, 5336, 4459, 4824,
- 4825, 4826, 4827, 5773, 5909, 5775, 5776, 5902, 6006, 5901,
- 4828, 4829, 5165, 5648, 5173, 4951, 4830, 4831, 4832, 5180,
- 5482, 5650, 5646, 5784, 5785, 6116, 6117, 5800, 6081, 5801,
- 6123, 6155, 6156, 5786, 89, 659, 1680, 5925, 5926, 5927,
- 4176, 5483, 4177, 4178, 4179, 4649, 4180, 4181, 4182, 4183,
- 4184, 4185, 4186, 4187, 4188, 4189, 5061, 4652, 4209, 5023,
- 5024, 4203, 4204, 4218, 4648, 4219, 4213, 5802, 5803, 5017,
- 4653, 6019, 4621, 5036, 5937, 5787, 5804, 5789, 4637, 1756,
- 1757, 3244, 1771, 1772, 3074, 3075, 2038, 4638, 4689, 4639,
- 5064, 4283, 5110, 4289, 4290, 4291, 3784, 3785, 3786, 3787,
- 3788, 2983, 5790, 5455, 5771, 5904, 5907, 6013, 6108, 5174,
- 4833, 5178, 1231, 4834, 4835, 5879, 5891, 5895, 5880, 5896,
- 5892, 5642, 3203, 5881, 5882, 5883, 5898, 5894, 3939, 5884,
- 5439, 5760, 5440, 5161, 5038, 90, 164, 4051, 1405, 2699,
- 1407, 1417, 3327, 2725, 2724, 1420, 1419, 2717, 4021, 4527,
- 4928, 4050, 3324, 4055, 5345, 784, 4558, 5698, 5543, 5706,
- 5545, 4559, 4802, 4560, 5683, 5825, 4561, 5564, 5704, 5837,
- 4803, 4804, 4562, 4563, 4564, 5991, 5992, 5993, 4937, 1850,
- 798, 799, 1425, 1426, 1427, 2790, 5340, 4963, 91, 3194,
- 2607, 92, 1289, 1290, 1291, 1923, 1924, 2610, 2611, 3931,
- 4412, 93, 1256, 2567, 1913, 2599, 94, 1275, 3185, 3186,
- 3187, 3925, 95, 1433, 2059, 2060, 2729, 4062, 4584, 4996,
- 5353, 5576, 5349, 5715, 5716, 96, 826, 1444, 97, 630,
- 2083, 2084, 2085, 2767, 98, 1552, 172, 99, 1740, 1737,
- 2436, 2437, 100, 1255, 1863, 1864, 1865, 1866, 3149, 101,
- 2154, 2813, 2814, 2815, 2816, 2562, 3900, 2563, 2564, 3158,
- 4128, 102, 765, 1400, 103, 764, 1399, 104, 105, 684,
- 737, 677, 1747, 107, 108, 4376, 2225, 110, 771, 769,
- 1074, 112, 1392, 1388, 113, 2226, 1075, 761, 762, 1340,
- 1158, 3229, 3230, 2094, 2095, 2669, 2656, 1159, 1160, 1369,
- 2020, 2686, 2448, 2449, 1846, 2450, 3845, 4334, 6078, 1581,
- 1483, 1259, 1077, 1078, 1079, 1691, 1692, 1707, 1080, 1701,
- 2373, 4262, 4731, 4732, 4733, 4734, 2312, 2313, 2417, 1081,
- 2302, 2303, 2304, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
- 2295, 2296, 2297, 1089, 1090, 1091, 2412, 4244, 4245, 4713,
- 3018, 3019, 3020, 1092, 2880, 4228, 2891, 2892, 2254, 1093,
- 1094, 1095, 1096, 1097, 3808, 1098, 4305, 3987, 1099, 1553,
- 2189, 2252, 4701, 4233, 5083, 4703, 4704, 5087, 2194, 2868,
- 3705, 3706, 3707, 2316, 2317, 1601, 1602, 1570, 1571, 1341,
- 4891, 6164, 1342, 5267, 5667, 5668, 5817, 6033, 5950, 5951,
- 6130, 6131, 6132, 6133, 1343, 2642, 4476, 1344, 1345, 1346,
- 3971, 3972, 4892, 4480, 4894, 4484, 1981, 1982, 1985, 1986,
- 1347, 1348, 1349, 1350, 1969, 1351, 1352, 1353, 2661, 5522,
- 4900, 4901, 5677, 5676, 4902, 4489, 4490, 3975, 3976, 4383,
- 4384, 4385, 3240, 2248, 2249, 2324, 2159, 2160, 2161, 2195,
- 1361, 1996, 2677, 3250, 1998, 3248, 3982, 3252, 3988, 3989,
- 2404, 3008, 3804, 3010, 4752, 5117, 5118, 5413, 5601, 5602,
- 5607, 4567, 5316, 5317, 2778, 1370, 2694, 3267, 3985, 1808,
- 1809, 1372, 2002, 2681, 3256, 1810, 2009, 2010, 3261, 3369,
- 1373, 1374, 1386, 1391, 1377, 1375, 2840, 4523, 5072, 3789,
- 3772, 4808, 5232, 2218, 2219, 5186, 4092, 1378, 2697, 3999,
- 4000, 4001, 1357, 1358, 1991, 1992, 1993, 1379, 1359, 2670,
- 3978, 114, 704, 115, 2110, 837, 1468, 2109, 3165, 1446,
- 3897, 2089, 2090, 1460, 792, 644, 116, 648, 4123, 117,
- 688, 3896, 895, 2714, 1511, 1858, 1512, 2556, 3144, 3145,
- 4377, 4798, 4378, 4791, 4792, 4379, 1244, 5142, 5143, 1403,
- 4017, 4018, 4012, 2550, 3138, 1245, 1851, 3890, 2547, 3891,
- 2548, 2576, 3892, 5014, 5580, 5964, 2544, 118, 682, 4364,
- 5620, 3884, 3885, 6041, 6042, 1242, 119, 632, 2088, 833,
- 1449, 1452, 1453, 2098, 4601, 2774, 5004, 4103, 4600, 1454,
- 1455, 2776, 834, 835, 120, 725, 3195, 1295, 1830, 1831,
- 1832, 2531, 121, 679, 1232, 3879, 4361, 2517, 663, 5752,
- 1813, 1235, 1814, 2513, 3120, 1794, 122, 1397, 1395, 813,
- 123, 124, 777, 173, 2025, 125, 126, 1264, 1894, 2588,
- 3907, 3908, 4388, 1895, 1896, 3166, 127, 692, 1250, 3162,
- 4809, 4810, 5152, 128, 716, 1279, 1280, 1917, 1915, 3190,
- 2602, 129, 2424, 130, 649, 898, 1515, 1516, 2152, 131,
- 719, 1284, 132, 133, 900, 4129, 5848, 6044, 653, 2156,
- 1520, 5224, 4492, 4907, 4908, 4910, 5283, 5284, 6093, 6185,
- 6199, 6192, 6202, 6203, 6206, 6212, 6213, 1100, 1302, 1303,
- 1101, 5930, 1102, 1103, 1104, 2227, 1248, 687, 1854, 1855,
- 5137, 5428, 2554, 3141, 2143, 2144, 1856, 4793, 4794, 3047,
- 3249, 1105, 3886, 5162, 1447, 2091, 1267, 613, 1106, 614,
- 1107, 1108, 794, 1304, 1988, 2823, 1181, 3060, 1109, 934,
- 1413, 1738, 2048, 2049, 2824, 616, 3061, 1182, 3709, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 3716,
- 135, 678, 1190, 1768, 1776, 2467, 1766, 2479, 3100, 2481,
- 2482, 3105, 2483, 1238, 2454, 1767, 3089, 4347, 4346, 2480,
- 3871, 4781, 4780, 2484, 2475, 3867, 3853, 3070, 4341, 5131,
- 5130, 2462, 2461, 2460, 2470, 2471, 2472, 2473, 3864, 3080,
- 3086, 136, 901, 2165, 656, 1522, 1523, 2837, 137, 681,
- 138, 710, 1269, 2595, 3178, 3179, 3920, 4406, 3921, 139,
- 1143, 1144, 140, 884, 3206, 2799, 2104, 1416, 886, 2105,
- 2127, 888, 1475, 889, 890, 891, 892, 4040, 3316, 3317,
- 2804, 2107, 2050, 2444, 3309, 4513, 2051, 4034, 4035, 4514,
- 2722, 5360, 4047, 3320, 5011, 4113, 5361, 5362, 141, 696,
- 142, 5249, 703, 1258, 1873, 143, 144, 145, 146, 770,
- 1382, 1161, 165, 166, 167, 168, 802, 803, 3326, 4057,
- 4579, 4580, 5347, 6195, 6196, 2635, 3952, 5811, 6125, 6189,
- 6208, 5260, 5261, 147, 1309, 1305, 736, 1943, 1937, 1939,
- 2621, 3198, 148, 149, 150, 5052, 151, 1541, 2809, 2072,
- 3717, 3718, 627, 939, 3428, 3933, 850, 5050, 1247, 2551,
- 2112, 940, 941, 942, 5053, 3429, 5244, 5259, 5246, 5513,
- 5665, 3214, 3951, 5250, 152, 153, 2633, 3957, 3955, 2173,
- 2850, 3430, 4680, 943, 944, 945, 946, 2186, 947, 1533,
- 155, 1861
+ 0, 69, 748, 1955, 70, 71, 72, 73, 74, 1921,
+ 75, 1268, 2580, 1270, 1886, 2583, 76, 717, 77, 2087,
+ 2775, 2776, 4626, 4627, 4620, 4621, 4623, 4624, 2777, 828,
+ 829, 2622, 2623, 78, 2640, 3962, 3218, 1957, 4854, 2634,
+ 5219, 1962, 4857, 1963, 4858, 2632, 3975, 4509, 1967, 1968,
+ 757, 3963, 3304, 3305, 5753, 1329, 3214, 3313, 3314, 2645,
+ 4494, 4606, 5660, 4610, 5809, 5949, 5755, 3332, 5046, 5661,
+ 5662, 652, 1341, 647, 648, 649, 79, 792, 2052, 5339,
+ 5309, 5310, 2724, 80, 821, 2075, 3339, 1445, 2076, 2077,
+ 4936, 4937, 5335, 5301, 5302, 5303, 5304, 4492, 4913, 4501,
+ 2859, 2084, 5114, 5106, 5107, 4696, 3420, 3421, 4703, 3422,
+ 5128, 5133, 3386, 3387, 4127, 3423, 5467, 5468, 5469, 672,
+ 1139, 5470, 81, 82, 673, 681, 674, 1136, 2439, 1137,
+ 83, 84, 715, 1911, 1912, 1913, 1914, 3180, 2600, 3174,
+ 3175, 4427, 5115, 3425, 85, 653, 924, 925, 926, 927,
+ 2189, 928, 2861, 3442, 929, 2853, 3411, 930, 931, 932,
+ 900, 824, 2806, 2864, 3443, 2807, 3388, 2865, 2186, 933,
+ 934, 935, 936, 937, 1553, 901, 2155, 3397, 4141, 86,
+ 629, 825, 1447, 2081, 826, 2082, 3342, 827, 2079, 1450,
+ 3447, 2125, 855, 1482, 938, 1145, 3448, 939, 2192, 2194,
+ 2191, 3446, 4717, 2193, 87, 663, 691, 651, 1480, 679,
+ 4917, 5316, 4477, 4912, 4478, 5285, 4398, 4906, 4907, 4908,
+ 5398, 3159, 88, 666, 1121, 1741, 2431, 3841, 3035, 3037,
+ 2432, 3840, 4334, 4335, 4336, 3033, 3034, 5501, 3039, 3838,
+ 5706, 6081, 5833, 5834, 3830, 5838, 4343, 4799, 4800, 4801,
+ 5187, 5503, 5712, 5968, 5839, 6088, 5966, 6084, 5967, 6086,
+ 6221, 6173, 6174, 5978, 6099, 6100, 6178, 6222, 5849, 5850,
+ 5851, 6266, 6267, 5852, 3834, 3835, 5498, 4795, 5579, 3205,
+ 3206, 2047, 5372, 1279, 89, 4479, 4590, 4480, 4481, 5255,
+ 5986, 4483, 4484, 5909, 4485, 4486, 4487, 6181, 1816, 5281,
+ 5267, 4507, 5415, 4488, 4862, 4863, 4864, 4865, 5875, 6017,
+ 5877, 5878, 6010, 6121, 6009, 4866, 4867, 5227, 5741, 5235,
+ 5006, 4868, 4869, 4870, 5242, 5562, 5743, 5739, 5886, 5887,
+ 6241, 6242, 5902, 6205, 5903, 6248, 6280, 6281, 5888, 90,
+ 665, 1690, 6033, 6034, 6035, 4195, 5563, 4196, 4197, 4198,
+ 4683, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207,
+ 4208, 5120, 4686, 4228, 5082, 5083, 4222, 4223, 4237, 4682,
+ 4238, 4232, 5904, 5905, 5076, 4687, 6134, 4655, 5095, 6045,
+ 5889, 5906, 5891, 4671, 1766, 1767, 3253, 1781, 1782, 3084,
+ 3085, 2050, 4672, 4724, 4673, 5123, 4302, 5170, 4308, 4309,
+ 4310, 3792, 3793, 3794, 3795, 3796, 2993, 5892, 5535, 5873,
+ 6012, 6015, 6128, 6233, 5236, 4871, 5240, 1238, 4872, 4873,
+ 5987, 5999, 6003, 5988, 6004, 6000, 5735, 3209, 5989, 5990,
+ 5991, 6006, 6002, 3953, 5992, 5519, 5862, 5520, 5223, 5097,
+ 91, 164, 4072, 1414, 2710, 1416, 1426, 3336, 2736, 2735,
+ 1429, 1428, 2728, 4042, 4561, 4983, 4071, 3333, 4076, 5424,
+ 790, 4592, 5799, 5635, 5807, 5637, 4593, 4838, 4594, 5784,
+ 5933, 4595, 5656, 5805, 5945, 4839, 4840, 4596, 4597, 4598,
+ 6073, 6106, 6107, 6108, 4992, 1860, 804, 805, 1434, 1435,
+ 1436, 2800, 5419, 5018, 92, 3200, 2616, 93, 1296, 1297,
+ 1298, 1933, 1934, 2619, 2620, 3945, 4437, 94, 1263, 2576,
+ 1923, 2608, 95, 1282, 3191, 3192, 3193, 3939, 96, 1442,
+ 2071, 2072, 2740, 4083, 4618, 5051, 5432, 5668, 5428, 5816,
+ 5817, 97, 832, 1453, 98, 631, 2096, 2097, 2098, 2779,
+ 99, 1562, 172, 100, 1750, 1747, 2445, 2446, 101, 1262,
+ 1873, 1874, 1875, 1876, 3155, 102, 2163, 2823, 2824, 2825,
+ 2826, 2571, 3914, 2572, 2573, 3164, 4147, 103, 771, 1409,
+ 104, 770, 1408, 105, 106, 690, 743, 683, 1757, 108,
+ 109, 4399, 2234, 111, 777, 775, 1081, 113, 1401, 1397,
+ 114, 2235, 1082, 767, 768, 1349, 1165, 3238, 3239, 2107,
+ 2108, 2680, 2667, 1166, 1167, 1378, 2032, 2697, 2457, 2458,
+ 1856, 2459, 2748, 3091, 1448, 5595, 5318, 4353, 6202, 1591,
+ 1492, 1266, 1084, 1085, 1086, 1701, 1702, 1717, 1087, 1711,
+ 2382, 4281, 4766, 4767, 4768, 4769, 2321, 2322, 2426, 1088,
+ 2311, 2312, 2313, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
+ 2304, 2305, 2306, 1096, 1097, 1098, 2421, 4263, 4264, 4748,
+ 3028, 3029, 3030, 1099, 2890, 4247, 2901, 2902, 2263, 1100,
+ 1101, 1102, 1103, 1104, 3816, 1105, 4324, 4008, 1106, 1563,
+ 2198, 2261, 4736, 4252, 5143, 4738, 4739, 5147, 2203, 2878,
+ 3713, 3714, 3715, 2325, 2326, 1611, 1612, 1580, 1581, 1350,
+ 4946, 6289, 1351, 5346, 5768, 5769, 5925, 6152, 6063, 6064,
+ 6255, 6256, 6257, 6258, 1352, 2653, 4510, 1353, 1354, 1355,
+ 3992, 3993, 4947, 4514, 4949, 4518, 1993, 1994, 1997, 1998,
+ 1356, 1357, 1358, 1359, 1981, 1360, 1361, 1362, 2672, 5614,
+ 4955, 4956, 5778, 5777, 4957, 4523, 4524, 3996, 3997, 4406,
+ 4407, 4408, 3249, 2257, 2258, 2333, 2168, 2169, 2170, 2204,
+ 1370, 2008, 2688, 3259, 2010, 3257, 4003, 3261, 4009, 4010,
+ 2413, 3018, 3812, 3020, 4787, 5177, 5178, 5493, 5694, 5695,
+ 5700, 4601, 5395, 5396, 2791, 1379, 2705, 3276, 4006, 1818,
+ 1819, 1381, 2014, 2692, 3265, 1820, 2021, 2022, 3270, 3378,
+ 1382, 1383, 1395, 1400, 1386, 1384, 2850, 4557, 5131, 3797,
+ 3780, 4844, 5293, 2227, 2228, 5248, 4113, 1387, 2708, 4020,
+ 4021, 4022, 1366, 1367, 2003, 2004, 2005, 1388, 1368, 2681,
+ 3999, 115, 710, 116, 2121, 843, 1476, 2120, 3171, 1455,
+ 3911, 1460, 1461, 1470, 798, 650, 117, 654, 4142, 118,
+ 694, 3910, 902, 2725, 1521, 1868, 1522, 2565, 3150, 3151,
+ 4400, 4834, 4401, 4827, 4828, 4402, 1251, 5202, 5203, 1412,
+ 4038, 4039, 4033, 2559, 3144, 1252, 1861, 3904, 2556, 3905,
+ 2557, 2585, 3906, 5073, 5672, 6079, 2553, 119, 688, 4387,
+ 5713, 3898, 3899, 6165, 6166, 1249, 120, 633, 2101, 839,
+ 2785, 1458, 1463, 1464, 4635, 2105, 4630, 2786, 5059, 4123,
+ 4634, 2111, 840, 841, 121, 731, 3201, 1302, 1840, 1841,
+ 1842, 2540, 122, 685, 1239, 3893, 4384, 2526, 669, 5854,
+ 1823, 1242, 1824, 2522, 3126, 1804, 123, 1406, 1404, 819,
+ 124, 125, 783, 173, 2037, 126, 127, 1271, 1904, 2597,
+ 3921, 3922, 4411, 1905, 1906, 3172, 128, 698, 1257, 3168,
+ 4845, 4846, 5212, 129, 722, 1286, 1287, 1927, 1925, 3196,
+ 2611, 130, 2433, 131, 655, 905, 1525, 1526, 2161, 132,
+ 725, 1291, 133, 134, 907, 4148, 5956, 6168, 659, 2165,
+ 1530, 5286, 4526, 4962, 4963, 4965, 5362, 5363, 6218, 6310,
+ 6324, 6317, 6327, 6328, 6331, 6337, 6338, 1107, 1309, 1310,
+ 1108, 6038, 1109, 1110, 1111, 2236, 1255, 693, 1864, 1865,
+ 5197, 5508, 2563, 3147, 2152, 2153, 1866, 4829, 4830, 3057,
+ 3258, 1112, 3900, 5224, 1456, 1465, 1274, 614, 1113, 615,
+ 1114, 1115, 800, 1311, 2000, 2833, 1188, 3070, 1116, 941,
+ 1422, 1748, 2060, 2061, 2834, 617, 3071, 1189, 3717, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 3724,
+ 136, 684, 1197, 1778, 1786, 2476, 1776, 2488, 3106, 2490,
+ 2491, 3111, 2492, 1245, 2463, 1777, 3095, 4370, 4369, 2489,
+ 3885, 4817, 4816, 2493, 2484, 3881, 3861, 3080, 4360, 5191,
+ 5190, 2471, 2470, 2469, 2479, 2480, 2481, 2482, 3878, 3090,
+ 3092, 3870, 137, 908, 2174, 662, 1532, 1533, 2847, 138,
+ 687, 139, 716, 1276, 2604, 3184, 3185, 3934, 4429, 3935,
+ 140, 1150, 1151, 141, 891, 3212, 2810, 2114, 1425, 893,
+ 2115, 2136, 895, 1484, 896, 897, 898, 899, 4061, 3325,
+ 3326, 2814, 2117, 2062, 2453, 3318, 4547, 2063, 4055, 4056,
+ 4548, 2733, 5440, 4068, 3329, 5070, 4132, 5441, 5442, 142,
+ 702, 143, 5311, 709, 1265, 1883, 144, 145, 146, 147,
+ 776, 1391, 1168, 165, 166, 167, 168, 808, 809, 3335,
+ 4078, 4613, 4614, 5426, 6320, 6321, 2644, 3966, 5913, 6250,
+ 6314, 6333, 5337, 5338, 3971, 3972, 3973, 3223, 3224, 148,
+ 1316, 1312, 742, 1953, 1947, 1949, 2630, 3204, 149, 150,
+ 151, 5111, 152, 1551, 2819, 2085, 4495, 6054, 6052, 5606,
+ 6150, 4502, 5916, 4939, 4928, 4929, 4930, 5329, 3725, 3726,
+ 628, 946, 3436, 3947, 857, 5109, 1254, 2560, 2123, 947,
+ 948, 949, 5112, 3437, 5306, 5336, 5308, 5340, 5605, 3220,
+ 3965, 5312, 2182, 2860, 3438, 4714, 950, 951, 952, 953,
+ 2195, 954, 1543, 154, 1871, 4931, 4932, 5321, 5758, 5319,
+ 5757, 4933, 5600, 5919, 5598, 5918, 4922, 4923, 4934, 155,
+ 2642, 3978, 3976, 3968, 3974, 5602
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -5224,3496 +5335,4200 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 615, 801, 738, 695, 797, 1539, 111, 109, 1179, 1230,
- 2349, 2026, 134, 1758, 2594, 1761, 1762, 2399, 938, 2577,
- 807, 669, 1415, 1775, 2618, 669, 2771, 658, 2716, 916,
- 669, 2100, 1414, 683, 938, 106, 796, 2258, 2432, 1189,
- 2217, 3846, 1339, 3268, 154, 1137, 706, 2224, 4088, 3142,
- 2779, 2617, 714, 1183, 2696, 1836, 718, 707, 3416, 2011,
- 1188, 4002, 2011, 715, 4106, 1316, 885, 1317, 1260, 3940,
- 1319, 1320, 3977, 1603, 739, 1739, 676, 1525, 790, 1530,
- 3996, 1531, 1532, 3878, 4565, 2289, 4487, 4566, 1536, 3157,
- 2015, 1999, 1180, 3442, 3443, 2278, 885, 887, 2172, 4455,
- 4455, 2543, 1184, 4003, 3098, 2036, 3720, 3207, 3721, 2121,
- 1185, 2037, 3154, 1989, 699, 3992, 1564, 2333, 780, 1932,
- 3722, 1804, 2501, 2502, 4208, 3167, 1445, 1145, 1286, 3888,
- 3236, 1293, 4690, 3704, 3771, 2352, 3332, 3704, 2431, 2508,
- 111, 782, 4690, 1837, 2731, 2853, 1964, 2701, 1193, 4690,
- 936, 785, 787, 2590, 808, 787, 809, 795, 810, 2524,
- 4557, 4694, 4222, 5233, 811, 812, 936, 4987, 4695, 106,
- 3232, 1186, 778, 4217, 5071, 3231, 3231, 4059, 4217, 111,
- 109, 2096, 4461, 2537, 2538, 134, 5371, 2384, 2385, 2386,
- 2387, 2388, 2389, 2390, 2392, 2394, 2395, 2396, 2397, 2398,
- 3824, 4373, 4455, 2432, 4411, -2501, 4934, 4935, 106, 4936,
- 4896, 3979, 3980, 2364, -1868, -1868, 4210, 1676, 1678, 1679,
- -2502, 2372, 2374, 2838, 2377, 2378, 1539, 2587, -2650, 4939,
- 1721, 4941, 1644, 4046, 4953, -1020, -1020, 1662, -2666, -3378,
- -3378, 1666, 4636, 4636, 2838, 4285, 4636, 4582, 4971, -2795,
- -2795, -384, -384, 4636, -3379, -3379, 2838, 2061, 3961, 4636,
- 2788, 2157, 1404, 938, 2838, 938, 2766, 938, 938, 935,
- -2098, -486, -486, 5351, 938, 4995, 1401, 938, 672, 2862,
- 4212, 1401, -2667, 2838, 2612, 935, 3877, 3362, 1163, 5444,
- 5445, 5422, 4799, 3231, 4372, 4373, 1686, 701, 4286, 2838,
- 1489, 2838, -2668, 2431, 1687, 1838, 4073, 1686, 2210, 2211,
- 2212, 5059, 2213, 1688, 2214, 1687, 2215, 2210, 2211, 2212,
- 2838, 2213, 1390, 2214, 1688, 2215, 723, 817, 2032, 1686,
- 3769, 1686, 2210, 2211, 2212, 1389, 2213, 1687, 2214, 1687,
- 2215, 1330, 1686, 650, 2157, 689, 1688, 1401, 1688, -3456,
- 1687, 2980, 4031, 1401, 779, 755, -3378, -3439, 1401, 1688,
- 720, 2838, 1708, 2834, 2720, -3443, 2876, 3393, 1708, 5842,
- 5972, -3379, 5184, 4020, 5187, 4232, 4010, 4331, 4332, 1401,
- 3306, 5754, 2798, 1941, 1246, 5484, 4205, 32, 1686, 5727,
- 1431, 1709, 1710, 5189, 800, 936, 1687, 936, 4206, 936,
- 936, -3378, 1423, 4216, 3205, 1688, 936, 2106, 4613, 936,
- 661, 1686, 1686, 2838, 3923, 3924, -3379, 2835, 3021, 1687,
- 1687, 829, 806, 4223, 2928, 1401, 2172, 4112, 1688, 1688,
- 4836, 3146, 1760, 1800, 5191, 804, 2118, 2789, 39, 4618,
- 2838, 1325, 1401, 32, 1401, 6127, 1686, 1795, 4671, 4618,
- 1686, 6079, 5649, 5020, 1687, 1711, 830, 2665, 1687, 4348,
- 1708, 1711, 2557, 1688, 665, 2076, 690, 1688, 2032, 4285,
- 5562, 1689, 693, 5942, 836, 5021, 838, 839, 840, 841,
- 842, 843, 1689, 844, 845, 3134, 5209, 3311, 1686, 1709,
- 1710, 5179, 4872, 5823, 39, 5247, 1687, 1802, 938, 2917,
- 717, 2788, 1708, 41, 1689, 1688, 1689, 6179, 4060, 3877,
- 2200, 3201, 4958, 1136, 935, 1437, 935, 1689, 935, 935,
- 883, 5549, 4286, 169, 1331, 935, 1686, 4511, 935, -1943,
- 3037, 1709, 1710, 1732, 1687, 5245, 4089, 32, 1871, 1752,
- 1712, 4374, -2795, 1688, 1686, -3378, 1712, 6128, 1686, 2619,
- 883, 2162, 1687, 1711, 2365, 1868, 1687, 2627, 4630, 4821,
- -3379, 1688, 4690, 1689, 5071, 1688, 766, 1296, 1297, 5852,
- 698, 1254, 5630, 4836, 1972, 5256, 3875, 4469, 1690, 896,
- 2992, 5031, 698, 1207, 1459, 1270, 1689, 1689, 39, 1690,
- 5998, 6197, 2455, 4614, 6000, 1711, 1371, 41, 4690, 767,
- 1907, 1371, 2157, 1371, 3155, 4455, 651, 2465, 2878, 5724,
- 3030, 1690, 3312, 1690, 1686, 2033, 1163, 5062, 1542, 3156,
- 1339, 1689, 1257, 4220, 1690, 1689, 1727, -3442, 694, 3307,
- 936, 1688, 1833, 2366, 1835, 3015, 4470, 4539, 1712, 1948,
- 849, 795, 1951, 3016, 629, 1686, 1954, 1955, 1956, 3077,
- -221, 4016, 4957, 1687, 3127, 4690, 5728, -3440, 1736, 2993,
- 2222, 4626, 1688, 1689, 2047, 1134, 4557, 6104, -714, -3441,
- 1690, 795, 6198, -3446, 5103, 1163, 1603, 4628, 2789, 1432,
- 1712, 5824, 1753, 5853, 2442, 5690, 1251, 1469, 1470, 3135,
- 4217, 2093, 795, 1690, 1690, 2679, 2011, 5380, 824, 3966,
- 4014, 1689, 2077, 3970, 4090, 1268, 795, 2201, 4455, 2505,
- 6080, 2507, 1676, 1678, 2511, 4471, 1135, 1466, 3859, 1689,
- -715, 3257, 2367, 1689, 2682, 2163, 2519, -1868, 1690, 2522,
- 2499, 4925, 1690, 2525, 2036, 3444, 4636, 4520, 1315, 768,
- 2037, 3960, 1908, 2075, 654, 2047, 4959, 3231, 2994, 935,
- 1803, 2172, 5605, 831, 780, 2033, 1461, 1462, 1463, 2540,
- 2541, 2542, 6100, 4622, 4636, 4624, 1733, 2108, 4636, 4656,
- 1690, 1394, 4657, 4512, 4643, 4636, 1387, 3242, 6129, 5705,
- 2651, -1868, 1273, 897, 795, 4926, 2078, 2861, 2079, 4320,
- 824, 2666, 5954, 824, 4658, -1943, 2986, 2987, 4349, 1686,
- 795, 938, 2981, 1801, 4466, 4670, 829, 1687, 1690, 1434,
- -3378, 2433, 4313, 3314, 2418, 3321, 1688, 654, 1326, 3022,
- 1689, 5729, 780, 6180, 5022, -3379, 1690, 4202, 5452, 1456,
- 1690, 1458, 171, 787, 787, 787, 1464, 4287, 795, 4061,
- 1424, 830, 1421, 4960, 6105, -2678, 1686, 2877, 1363, 1874,
- 2721, 2187, 5792, 4619, 1687, 4210, 691, 4210, 6106, 1281,
- 1686, 654, -2161, 1688, 1942, 4769, 4210, 1872, 1687, -3565,
- 695, 1686, 2786, 2401, 2419, 3128, 6220, 1688, 2080, 1687,
- 827, 662, 4210, 3360, 3376, 885, 4210, 1465, 1688, 1467,
- 3876, 4039, 832, 1365, 847, 2721, 780, 4210, 1529, 3000,
- 3001, 4877, 3004, 3005, 2721, 654, 2769, 1534, 948, 5225,
- 1537, 1207, 68, 1797, 4032, 2536, 1711, 4202, 5571, 2807,
- 1962, 2082, 3031, 1544, 111, 109, 1686, 1690, -3456, 5364,
- 134, 1240, -2161, 936, 1687, 3202, -3439, 2204, 1686, 3359,
- 2836, 1266, 4126, 1688, -3443, 4630, 1687, 4632, 724, -2650,
- 2029, 1874, 2081, 106, 1490, 1688, 652, 1389, 5516, -2666,
- 4212, 4524, 4288, 4631, 1686, 5730, 2839, 5968, 68, -2507,
- 1207, 2158, 1687, -2650, 1689, 2082, 2433, 3981, 2443, 4583,
- 1645, 1688, 721, -2666, -2508, 1663, 2376, 2839, 1414, 1667,
- 1354, 4836, 3877, 5519, -1868, 5520, 5959, 1402, -115, 2839,
- -115, 1712, 1402, -2667, 738, 5352, 1663, 2839, 4327, 4934,
- 4935, 4565, 4936, 2327, 4566, -1020, 1834, 5586, -119, -3378,
- -119, 1689, 4455, -2668, 4455, 1334, 2839, -2667, 4020, -2795,
- 722, -384, 3370, 4953, -3379, 1689, 1750, -111, 6014, -111,
- 6016, 6017, 2839, 2890, 2839, 1759, 1689, -2668, 883, 4551,
- 2523, -486, 935, 1773, 2158, 4616, 4617, 3308, 1686, 2990,
- 1414, 4287, 68, 2839, 2216, 4015, 1687, 1684, 1402, 2082,
- 3770, 2839, 1796, 2288, 1402, 1688, 1681, 4647, 2929, 1402,
- 2982, 1690, 1683, 4650, 1807, 5071, 6027, 4557, 6114, 5155,
- 2812, 2879, 4659, 2695, 4663, 4664, 4665, 3254, 4667, 4668,
- 1402, 1689, 2488, 1774, 2839, 5663, 5226, 1179, 4672, 4673,
- 4674, 4675, 4676, 1689, 1713, 1714, 1715, 1716, 1717, 1718,
- 1719, 1720, 1715, 1716, 1717, 1718, 1719, 1720, 1690, 4455,
- 795, 5247, 1521, 1339, 6066, 6067, 1253, 2357, 1189, 1689,
- 3234, 3235, 1690, 3297, 4919, 6073, 1402, 1693, 1694, 1695,
- 2420, 1696, 1183, 1690, 5233, 5233, 2839, 795, 2909, 1188,
- 1539, 2884, 5655, 1402, 2368, 1402, 795, 655, 6107, 795,
- 2464, 5664, 885, 4472, 795, 3771, 3771, 1815, 4836, 3771,
- 3771, -3266, 4878, 2839, 5100, 3771, 3771, 3101, 5102, 3849,
- 2995, 1180, 4927, 2047, 2503, 2885, 3078, 2898, 6103, 2899,
- 4217, 1184, 4978, 2456, 4217, 795, -3442, 5572, 1690, 1185,
- -3471, 3079, 4522, 2600, 1715, 1716, 1717, 1718, 1719, 1720,
- 1690, 1686, 4961, 2166, 654, 1798, -1828, 1313, 2509, 1687,
- 1909, 1371, 1995, 1689, 2174, 2900, -3440, 2901, 1688, 631,
- 655, 32, 807, 1857, 1779, 780, 1690, 1193, -3441, -2681,
- 780, 780, -3446, 3861, 1339, 1714, 1715, 1716, 1717, 1718,
- 1719, 1720, 1491, 2052, 4048, 1339, 1339, 1910, 1697, 2805,
- 1186, 738, 2468, 2629, 2630, 2894, 1920, 832, 5123, 825,
- 2638, 2639, 2640, 3904, 655, 1845, 3834, 670, 1513, 3310,
- 780, 1933, 39, 2895, 824, 2914, 824, 2584, 4690, 3072,
- 4690, 41, 1368, 3902, -1868, 4911, 4897, 5540, 4914, 5542,
- 3927, 1946, 2158, 2701, 5547, 671, 3097, 5583, 5703, 5585,
- 3102, 5552, 5553, 2036, 2603, 4887, 3182, 1508, 655, 2037,
- 4493, 5559, 780, 1971, 4632, -3471, 2432, 4836, 2565, 883,
- 1690, 2905, 1498, 1681, 4496, -2161, 5098, 2056, 2421, 1683,
- 2775, 4052, 5573, 1994, 1926, 4915, 1686, 3124, 3372, 1355,
- 1708, 4788, 1686, 3255, 1949, 1950, 1934, 1912, 2703, 885,
- 1687, 2018, -3276, 1688, 3034, 3035, 808, 5757, 809, 1688,
- 810, -1828, 2011, 3738, 2011, 2011, 811, 812, 3311, 1709,
- 1710, 1518, 2027, 2028, 2896, 1508, 1689, 2157, 1387, 2036,
- 3076, 111, 109, 2041, 3382, 2037, 2853, 134, 2791, 2792,
- 3260, 4063, 3263, 3264, 780, -2161, 795, 3114, 2320, 2321,
- 3371, 3115, 693, 3117, 787, 780, 4654, 2190, 780, 4536,
- 106, 5643, 938, 4481, 4482, 3092, 2431, 3122, 4210, 780,
- 2439, -3266, 5956, 780, 3167, 2092, 5829, 2514, 3802, 3803,
- 3130, 3131, 3223, 1711, 5456, 2102, 5936, 2224, 3224, 3015,
- 795, 4898, 795, 780, 6070, 4105, 4585, 4772, 1163, 3883,
- 2702, 693, 938, 2031, 3809, 3812, 3815, 3816, 4477, 4478,
- 1492, 1860, 4342, 2793, 3231, 3231, 1867, -1868, 3828, 1816,
- 2515, 795, 3183, 4917, 1686, 5181, 4351, 795, 6025, 1499,
- 4354, 3823, 1687, 1690, 2566, 4735, 2504, 938, 1514, 5757,
- 698, 1688, 2700, 3312, 1898, 3155, 1686, 3795, 2808, 3798,
- 2832, 2168, 3704, 3936, 1687, 1914, 4049, 4613, 738, 1927,
- 3156, 3298, 2469, 1688, 2825, 5169, -3471, 1689, 1712, 3905,
- 2510, 2831, -1828, 4709, 938, 938, 2915, 780, 795, 1686,
- 6009, 2061, 4836, 1686, 3877, 916, 1137, 1687, 5695, 1686,
- 2841, 1687, 1493, 1509, 936, 4636, 1688, 1687, 1354, 1686,
- 1688, 1356, 1577, 1578, 1579, 3394, 1688, 1687, 694, 1717,
- 1718, 1719, 1720, 2826, 1869, 3313, 1688, 3043, 3044, 5170,
- 5124, 2827, 111, 2969, 4541, 2970, 2400, 4605, 4606, 3182,
- 1681, 846, -1868, 937, 936, 1519, 1683, 3796, 693, 3797,
- 3093, 5688, 5788, 1686, 3184, 4053, 4097, 1626, 4238, 937,
- 4239, 1687, 4899, 1510, 1187, 2516, 883, 694, 5924, 2833,
- 1688, 1509, -3276, 5577, 2162, 5163, 5378, 3937, 1690, 936,
- 1500, 3299, -1868, 1686, 1690, 780, 1792, 655, 3300, 780,
- 2045, 1687, 2829, 3862, 3301, 780, 2369, 1686, 6089, 6071,
- 1688, 2057, 4655, 2162, 3003, 1687, 2350, -2495, -904, 1689,
- -904, 686, 2082, 2916, 1688, 3393, 936, 936, 6010, 2086,
- 3863, 2086, 5936, 935, 693, 2940, 5033, 2546, 5171, 111,
- 2358, 1689, 5822, 5251, 174, 175, 2032, 4099, 6147, 5614,
- 2490, 2491, 5034, 2493, 2495, 2496, 2497, 4710, 3962, 3956,
- 700, 5835, 4614, 2902, 3314, 2506, -2098, 795, -2098, 2405,
- 2122, 2988, 2322, 935, 1689, 2323, 3906, 3375, 1689, 3302,
- 1401, 5638, 2123, 2521, 1689, 780, 5644, 5645, 1792, 795,
- 795, 5338, 5252, 2690, 1689, 1686, 1287, 795, 2457, 5163,
- 5943, 5915, 5164, 1687, 4931, 6011, 5172, 1327, 935, 5689,
- 3932, 1841, 1688, 1207, 694, 3183, 68, 2735, 2451, 2474,
- 5751, 2828, 1847, 2589, 5285, 3315, 1690, 787, 787, 780,
- 787, 787, 787, 787, 780, 795, 780, 2124, 1689, 1870,
- 3303, 1793, 787, 2634, 2637, 935, 935, 5783, 1690, 800,
- 6148, 5783, 2425, -1868, -940, 4299, 2452, 4300, 2163, 2520,
- 787, 5194, 795, 2076, 2622, 3068, 2999, 3938, 1689, 5685,
- 1328, 5207, 5208, 883, 1848, 2628, 1686, 702, 1288, 3062,
- 5506, 1690, 1689, 780, 1687, 1690, 3067, 2163, 4380, 5970,
- 694, 1690, 5974, 1688, 2164, 780, 1686, 5514, 937, 712,
- 937, 1690, 937, 937, 1687, 1408, 4191, 3882, 4525, 937,
- 5339, 885, 937, 1688, 2671, 3801, 2844, 5032, 4192, 5778,
- 6193, 5686, 1398, 2082, 2852, 1698, 1699, 1700, 3063, 5307,
- 5292, 2328, 1539, 1793, 1246, 2332, 3064, 3184, 5253, 2526,
- 4085, 2338, 3040, 1686, 795, 1690, 5397, 1539, 3181, 5751,
- 2036, 1687, 3850, 5615, 5616, 1686, 2037, 3922, 169, 780,
- 1688, 1686, 938, 1687, 2605, 5767, 5075, 2715, 3854, 1687,
- 1689, 6120, 1688, 3139, 3069, 1690, 1339, 713, 1688, 3857,
- 3858, 5416, 1339, 2082, 5301, 795, 5783, 5779, 3432, 1690,
- 726, 4098, 2624, 5958, 795, 795, 795, 1339, 2691, 5960,
- 780, 3911, 3912, 5783, 766, 3215, 2011, 1409, 3216, 824,
- 5326, 2453, 3221, -904, 2047, 1686, 780, 1329, 2943, 2125,
- 4775, 2438, 6088, 1687, 6109, 4778, 4779, 780, 780, 4526,
- 1686, 2106, 1688, 2033, 3260, 795, 824, 767, 1687, 5890,
- 3163, 1842, -1259, 4117, 4118, 4366, 4570, 1688, 3188, 1686,
- 3243, 1689, 4016, 5617, 5726, 4508, 708, 1687, 2042, 2054,
- 1459, 3852, 5769, 6194, 3877, 2492, 1688, 6121, 727, 759,
- 2498, 1689, 2500, 6126, 3877, 3877, 6061, 1690, 6060, 6094,
- 5780, 4634, 4367, 3441, 3441, 3441, 4497, 2683, 795, 5929,
- 2047, 1686, 3965, 2000, 936, 760, 3969, 780, 5084, 1687,
- 2077, 5779, 2413, 780, 4086, 4938, 1276, 2730, 1688, 760,
- 4952, 5874, 2011, 6163, 1339, 4962, 3065, 2608, 1689, 2535,
- 5402, 6122, 4006, 5929, 4863, 5618, 5181, 780, 6187, 6188,
- 1689, 2545, 3259, 937, 2414, 2055, 1689, 1843, 5783, 1686,
- 4101, 4571, 1456, 1686, 2783, 938, 1708, 1687, 2785, 4104,
- 4658, 1687, 5119, 1844, 780, 780, 1688, 2158, 1690, 2433,
- 1688, 2912, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720,
- 6035, 2803, 2803, 2609, 1410, 1709, 1710, 768, 1690, 1686,
- 5556, 1376, 5546, 2684, 2078, 1686, 2079, 1687, 5435, 5781,
- 1689, 1277, 1411, 1687, 5780, 795, 1688, 5608, 4007, 780,
- 2001, 4729, 1688, 1686, 938, 1689, 1686, 4087, 2415, 780,
- 4202, 1687, 5202, 935, 1687, 2847, 1380, 2380, -2669, 938,
- 1688, 170, 5875, 1688, 1689, 1690, 2856, 849, 4574, 5783,
- 740, 3273, 3274, 4903, 4904, 4575, 2632, 1690, 4210, 1711,
- 2193, 1686, 4210, 1690, 4864, 1686, 5359, 1278, 2193, 1687,
- 1477, 1363, 1354, 1687, 741, 1364, 885, 5203, 1688, 3426,
- 938, 2685, 1688, 1354, 1354, 5685, 1689, 171, 6036, 938,
- 938, 938, 4660, 3419, 3068, 1381, 2080, 936, 1539, 3983,
- 3425, 2193, 1564, 111, 2888, 3432, 3715, 3374, 3062, 2416,
- 3715, 5697, 743, 2913, 3723, 3067, 1365, 1690, 3017, 2206,
- 3710, 1366, 5628, 5781, 3710, 3728, 3729, 2267, 1478, 6157,
- 2988, 1479, 1690, 2381, 1689, 2918, 697, 5686, 1689, 6143,
- 4943, 4905, 3420, 3877, 1712, 3841, 5204, 4626, 4661, 2382,
- 3421, 1690, 3984, 2723, 1367, 1414, 936, 3063, 1480, 2726,
- 2270, 1163, 6177, 4628, 698, 3064, 1481, 1811, 2919, 3711,
- 2081, 936, 2927, 3711, 1689, 1686, 788, 3712, 2939, 738,
- 1689, 3712, 3764, 1687, 6172, 883, 2951, 3877, 3427, 4298,
- 1812, 4301, 1688, 1690, 2193, 1708, 780, 1686, 1689, 3768,
- 780, 1689, 2400, 3069, 4944, 1687, 3171, 3172, 2193, 5115,
- 4945, 3423, 936, 2977, 1688, 3719, 935, 789, 4906, 3719,
- 2383, 936, 936, 936, 1709, 1710, 4371, 2802, 2802, 5177,
- 5177, 5116, 2944, 3155, 5995, 1686, 1689, 791, 3714, 3913,
- 1689, 1690, 3714, 1687, 1546, 1690, 1364, 5673, 3156, 3790,
- 6102, 1681, 1688, 2286, 159, 2817, 937, 1683, 2652, 4650,
- 5481, 5629, 2945, 805, 2653, 1521, 2654, 2307, 4659, 5674,
- 4663, 4664, 4665, 4667, 4668, 935, 2948, 3109, 5723, 5132,
- 5133, 1690, 3110, 3173, 3914, -1259, 6146, 1690, 1711, 5877,
- 935, 3113, 1366, 5273, 1547, 5274, 1610, 3116, 5212, 795,
- 795, 1686, 3147, 1179, 1179, 1690, 795, 5656, 1690, 1687,
- 2803, 2803, 4202, 6118, 6118, 1627, 1628, 5675, 1688, 674,
- -2675, 1402, -592, 795, 680, 795, -2098, -2098, 3087, 3088,
- 3422, 935, 4243, 3268, 1189, 1189, 4207, 3825, 2082, 2655,
- 935, 935, 935, 1690, -2677, 3065, 3915, 1690, 1183, 1183,
- 1689, 6154, 5832, 3108, 787, 1188, 1188, 3713, 1548, 787,
- 4888, 3713, 3782, 4661, 2949, 4521, 2839, 4889, 787, 4890,
- 938, 1133, 1689, 1712, 787, 814, 3783, 938, 5772, 1139,
- 5774, 5281, 4789, 1686, 1239, 816, 1339, 1180, 1180, 3916,
- 1339, 1687, 5282, 3059, 1686, 3227, 1686, 1184, 1184, 3228,
- 1688, 780, 1687, 3432, 1687, 1185, 1185, 4916, 2897, 698,
- 1689, 1688, 1686, 1688, 4207, 2897, 1995, 1857, 5025, 5097,
- 1687, 3213, -2683, 795, 3150, 780, 5107, 3218, 3220, 1688,
- 1549, 4630, 2960, 4993, 4202, 828, 2964, 5037, 3121, 5885,
- 3111, 899, -2686, 1193, 1193, 2965, 5042, 1113, 2839, 4631,
- 4202, 3118, 5044, 780, 1115, 5008, 1207, 1690, -2689, -2339,
- 3177, -2339, 5058, 3934, 780, 2968, 1186, 1186, 4041, 4042,
- 5067, 5068, 4043, 4044, 4045, 1686, 1689, 4626, 1131, 1690,
- 4202, 4618, 5220, 1687, 664, 6020, 6021, 5222, -2690, 4202,
- 3204, 1163, 1688, 4628, 3209, 3210, 780, -2691, 787, 2047,
- 2047, 1241, 936, 780, 3219, 787, 5903, 4656, 780, 936,
- 4657, 4202, 2975, 4202, 780, 1686, 4744, 1690, 1339, -2693,
- 4746, -2694, 824, 1687, 3447, 1368, 1686, 1686, 2952, 780,
- 883, 1243, 1688, 3241, 1687, 1687, 3180, 1994, 3246, 174,
- 175, 4697, 4698, 1688, 1688, 1257, 2802, 2802, 3917, 3918,
- 3919, 1252, 5893, 5897, 1262, 1686, 1686, 4410, 1689, 2745,
- 2746, 2011, 1557, 1687, 1687, 6166, 6168, 5177, 4026, 1689,
- 4717, 1689, 1688, 1688, 2758, 4360, 2760, 4119, 4120, 4121,
- 4352, 4795, 4353, 1690, 3730, 4737, 795, 1689, 5213, 4498,
- 5214, 1265, 780, 1187, 1271, 1925, 4633, 4640, 4365, 3959,
- 4642, 1930, 1931, 4067, 1274, 4069, 4070, 4646, 2779, 1604,
- 5987, 4075, 4741, 5990, 1283, 5596, 2954, 1285, 4407, 4083,
- 1759, 935, 1759, 4091, 5215, 4094, 2341, 2342, 935, 5425,
- 5426, 1292, 4008, 4009, 2705, 4011, 4013, 3129, 3364, 3272,
- 3366, 174, 175, 3715, 4755, 4328, 780, 3279, 1294, 780,
- 1689, 795, 795, 5145, 5216, 4767, 1686, 3710, 5979, 5980,
- 4236, 3152, 795, 1308, 1687, 1690, 4362, 1383, 1384, 2761,
- 2762, 759, 1312, 1688, 2706, 938, 1690, 2648, 1690, 2649,
- 174, 175, 5893, 1318, 1314, 1685, 5897, 1686, 1306, 1307,
- 1689, 1310, 1686, 1311, 1690, 1687, 4596, 1323, 1321, 1686,
- 1687, 1689, 1689, 4268, 1688, 4269, 3711, 1687, 4237, 1688,
- 1324, 2707, 4252, 1360, 3712, 10, 1688, 1975, 1713, 1714,
- 1715, 1716, 1717, 1718, 1719, 1720, 1396, 1398, 1976, 4952,
- 1689, 1689, 3211, 2806, 1686, 2807, 2662, 1406, 1686, 3217,
- 1422, 795, 1687, 795, 1354, 2903, 1687, 2265, 4254, 1408,
- 1354, 1688, 3719, 1418, 4276, 1688, 2946, 1690, 2947, 1686,
- 1686, 4630, 1428, 1429, 17, 1354, 5685, 1687, 1687, 4607,
- 2955, 4609, 5134, 2958, 1430, 3714, 1688, 1688, 1393, 4631,
- 800, 1435, 1686, 1686, 1686, 1440, 1207, 5217, 1765, 1443,
- 1687, 1687, 1687, 5028, 5621, 1686, 1686, 1690, 1448, 1688,
- 1688, 1688, 3059, 1687, 1687, 5685, 738, 936, 1690, 1690,
- 4277, 4618, 1688, 1688, 5091, 3436, 1472, 3437, 5686, 2663,
- 4632, 5218, 1686, 3973, 1459, 3974, 1474, 1974, 1686, 2708,
- 1687, 1689, -2290, 1476, 174, 175, 1687, 1690, 1690, 1688,
- 4029, 2709, 4030, 3889, 3781, 1688, 5300, 1980, 2875, 5348,
- 4502, 4503, 1482, 1485, 4504, 4505, 1484, 5686, 5357, -3426,
- 4506, 4507, 1689, 1486, 5893, 5897, -2292, 1689, 32, 4260,
- 1487, 2947, 111, 3805, 1689, 1686, -3428, 1905, 1681, -3425,
- 5331, -2290, 1354, 1687, 1683, 3373, 2017, 937, 1488, 2019,
- 2019, -3427, 1688, 1975, 3713, 1494, 5777, 174, 175, 1495,
- 4263, 780, 1874, 4267, 1976, 1874, 795, 795, 1497, 1689,
- 37, 4994, 1977, 1689, 4271, -2292, 4272, 1974, 693, 39,
- 1496, 5873, 2959, 4577, 1501, 4578, 935, 937, 41, 156,
- 4749, 4998, 1874, 4999, 1689, 1689, 795, 1502, 1690, 1978,
- 1503, 2710, 42, 1507, 2963, 2443, 2443, 1713, 1714, 1715,
- 1716, 1717, 1718, 1719, 1720, 1414, 1414, 1689, 1689, 1689,
- 5739, 1504, 937, 4784, 3868, 1506, 3870, 111, 109, 1690,
- 1689, 1689, 1505, 134, 1690, 2830, 3998, 2012, 1517, 1545,
- 2012, 1690, 2966, 1975, 4685, -2290, -3659, 1759, 4686, 5000,
- 4687, 5001, 4688, 1550, 1976, 1979, 106, 1689, 2350, 937,
- 937, 1551, 1977, 1689, 3953, 154, 1565, 5144, 5874, 1566,
- 780, 2711, 1567, 2745, 2746, 1572, 1690, 2400, 1759, -2292,
- 1690, 1573, 693, 1980, 5002, 1574, 5003, -2290, 2758, 1978,
- 2760, 4297, 2997, 5078, 1621, 5080, -2290, 1702, -940, 1575,
- 4098, 1690, 1690, 1576, 1580, -2290, 4415, 5874, 2973, 1582,
- 1689, 4773, 4774, 4033, 3398, 3399, 1414, 4782, 3400, -2290,
- 3401, -2292, 3402, 1583, 1690, 1690, 1690, 157, 1653, 1722,
- -2292, 1584, 1585, 5122, 694, 4626, 1974, 1690, 1690, -2292,
- 6063, 787, 5092, 1586, 1874, 1979, 780, 6224, 1686, 4627,
- 5030, 4628, 5105, -2292, 5106, 5113, 1687, 1874, 780, 5125,
- 1568, 5126, 780, 5778, 1690, 1688, 2196, 2197, 795, -3560,
- 1690, 1657, 5149, 1980, 5150, 2207, 2405, 2145, 5054, 5875,
- 1339, 1339, 5057, 2761, 2762, 2871, 1587, 1588, 5039, 5065,
- 2985, 1589, 3929, 1703, 5167, 5039, 5168, 2438, 795, 795,
- 4685, 4231, 1975, 4240, 4686, 2268, 4691, 2271, 4688, 1704,
- 4632, 1723, 5272, 1976, 3974, 1590, 6110, 1690, 5875, 4241,
- -1656, 1977, 2284, 2285, 2287, 5318, 5372, 1591, 5373, 2290,
- 2291, 5779, 4874, 5374, 795, 5373, 1592, 2308, 694, 158,
- -1655, 4041, 4042, 2937, 5085, 4043, 4044, 4045, 1978, 1686,
- 4056, 1724, 5376, 1821, 5377, 6152, 1604, 1687, 4479, 5370,
- 1593, 5740, 5541, 5438, 1596, 4369, 1688, -2673, 5741, 1597,
- 1598, 2262, 1604, 5777, 174, 175, 1605, 1606, 5581, 5554,
- 1705, 1725, 4242, 5742, 5574, 693, 5575, 1607, 1608, 6173,
- 780, 5593, 5563, 5511, 5565, 693, 4022, 4023, 4024, 4025,
- 1702, 4027, 4028, 3441, 1979, -2262, 3898, 5626, -740, 5627,
- 2028, 795, 795, 5632, 159, 5627, 780, 1298, 6186, 1611,
- 1299, 1300, 4247, 1689, 5780, 1301, 2011, 5633, 5793, 5627,
- 3066, 1612, 1980, 4248, 4249, 1781, 4946, -3560, 1613, 4071,
- 4072, 1726, 4074, 4253, 4076, 4077, 4078, 4079, 4080, 4081,
- 4082, 5415, 4084, 1614, 5794, 938, 4093, 5341, 5671, 5672,
- 3974, 3974, 4250, 4251, 160, 5815, 1615, 5816, 4517, 4518,
- 4519, 954, 955, 956, 957, 958, 959, 960, 961, 962,
- 963, 964, 3958, 1616, 4629, 4154, 5845, 4947, 5846, 5854,
- 5018, 5855, 4588, 4591, 1354, 4594, 1703, 5889, 1354, 4030,
- 2411, 6007, 1617, 6008, 5407, 5876, 3155, 1604, 4795, 1301,
- 5743, 938, 1704, 633, 5358, -940, 6038, 1686, 4807, 4630,
- 1618, 3156, 2808, 5744, 1689, 1687, 5877, 937, 1298, 1619,
- 1690, 1299, 1300, 5781, 1688, 1620, 1559, 4631, 1728, 1622,
- 5745, 694, 766, 6039, 1207, 5126, -1319, 1623, 2478, 1686,
- -1319, 694, 5720, 68, 1624, 1625, 5795, 1687, 5796, 1730,
- 6046, 1782, 6047, 4259, 1629, 5877, 1688, 1630, 1631, 4618,
- 634, 986, 6055, 1783, 6056, 767, 2228, 2229, 2230, 2231,
- 5778, -2523, 1632, 1705, 1686, 1633, -713, 936, 4620, 938,
- 1634, -1319, 1687, 2443, 4265, 4625, -1319, 1635, 4641, 4266,
- 6072, 1688, 5627, 1414, 1734, 4645, 4274, 5624, 1636, 954,
- 955, 956, 957, 958, 959, 960, 961, 962, 963, 964,
- 1637, 1743, 2232, 2233, 2234, 6074, 1354, 5627, 1784, -1319,
- 6075, 1690, 5627, 4708, 5753, 6101, 1785, 5627, 6111, 1638,
- 5627, 4275, 1639, 936, 3752, 4278, 1744, 6134, 5779, 5126,
- 1006, 635, 4125, 1640, 1641, 3715, 5670, 1735, 6210, 161,
- 6211, 1822, 1642, 162, 1643, 1228, 4705, 5090, 1646, 3710,
- -2290, 1786, 1604, 2235, 2236, 1647, 1745, 1648, 1649, 3754,
- 5746, 1650, 1651, 1974, 1652, 1746, 3017, 4946, 2643, 5096,
- 5108, 5109, 1689, 1654, 4750, 1655, 1656, 1658, 1659, 4091,
- 1660, 5797, 5597, 5766, -2292, 1823, 935, 1824, 1661, 986,
- 937, 1664, 1665, 1668, 636, 768, 1974, 1669, 3711, 1670,
- 4748, 936, 1671, 1672, 1689, 4888, 3712, 6159, 6160, 1673,
- 1674, 6161, 4889, 6162, 4890, 1729, 163, 2237, 4947, 1020,
- 5603, 5780, -2509, -2510, -3560, 4931, 1751, 1777, 5756, 1975,
- 5609, 1778, 170, 1780, 5762, 5763, 1799, 3155, 1817, 1689,
- 1976, 1818, 935, 1819, 3719, 1820, 1839, 1840, 1977, 937,
- 1849, 1852, 3156, 1853, 2012, 1862, 2687, 1874, 1906, 1916,
- 1918, 3225, 1975, 1787, 937, 1922, 1928, 3714, 1006, 1929,
- 5782, 1935, 1936, 1976, 1938, 1978, 1940, 1825, 1944, 1690,
- 2238, 1977, 5144, 693, 1959, 4280, 1960, 1961, 956, 957,
- 1788, 1963, 960, 3799, 962, 5560, 964, 1972, 1702, 1706,
- 5798, 1983, 1984, 1987, 3424, 937, 1997, 2003, 1978, 4948,
- 2013, 1690, 2014, 2024, 937, 937, 937, -713, 4483, 3066,
- 935, 5777, 174, 175, 2039, 2043, 4318, 1826, 2046, 2058,
- 5781, 1979, 5408, 693, 2062, 2073, 2068, 2087, 1147, 5409,
- 795, 637, 780, 693, 2093, 2097, 1690, 795, 795, 2099,
- 4336, 2101, 2103, 4339, 4340, 3283, 2111, 1020, 2113, 1980,
- 2115, 2116, 2117, 2119, 1979, 1686, 2120, 3441, 638, 2147,
- 2155, 2167, 2169, 1687, 1827, 2239, 5793, 2210, 2211, 2212,
- 4464, 2213, 1688, 2214, 2170, 2215, 3713, 5018, 4632, 2171,
- 2175, 2176, 1980, 2178, 1703, 2179, 2181, 1148, -3527, 2193,
- 5524, 5525, 5794, 5527, 5318, 2192, 4386, 2191, 2202, 3823,
- 1704, 111, 111, 2209, 4842, 4843, 4844, 4845, 4846, 4847,
- 4848, 4849, 4850, 4851, 4335, 4853, 4854, 4855, 4856, 4857,
- 4858, 4859, 4860, 4861, 4862, 4949, 2251, 4866, 4867, 694,
- 2223, 2264, 2240, 2865, 2265, 2277, 780, 2907, 795, 2279,
- 2910, 780, 780, 2266, 2210, 2211, 5227, 787, 5228, 2282,
- 5229, 2283, 5230, -940, 1828, 4602, 2922, 2292, 2331, 2335,
- 5408, 1116, 780, 780, 2346, 2360, 4931, 5409, 2356, 4488,
- -1319, 1705, 2375, 2379, 2705, 1789, 1829, 2941, 2406, 694,
- 5996, 2407, 5777, 174, 175, 5799, 5434, 5584, 2434, 694,
- 2435, -2983, 1706, 2440, 5795, 2441, 5796, -73, 2241, 2447,
- 2242, 2458, 5296, 5297, 693, 5299, 2243, 1604, 2906, 2463,
- 5304, 4568, 2466, 5308, 2706, 4954, 5311, 5312, 5778, 2486,
- 4964, 2485, 2487, 3284, 5320, 2512, 5321, 3426, 5603, 2527,
- 1689, 2528, 2529, 4950, 2530, 5327, 2532, 5793, 2533, 639,
- 2534, 3419, 5016, 938, 5019, 1149, 2539, 1150, 3425, 1187,
- 1187, 2707, 1790, 1686, 5029, -2110, 5718, 640, 1151, 2549,
- 1791, 1687, 2553, 5794, 2552, 2555, 2244, 2558, 4329, 3285,
- 1688, 2560, 5040, 1117, 1152, 2559, 2561, 5782, 2568, 2569,
- 2578, 1118, 2582, 2579, 5045, 937, 5779, 2580, 5919, 2976,
- 3420, 4595, 937, 2581, 4597, 2583, 1119, 2585, 3421, 2593,
- 5066, 2586, 2991, 641, 2592, 3450, 1120, 1121, 1122, 2596,
- 2245, 174, 175, 2597, 111, 109, 1123, 4355, 4356, 2606,
- 4603, 4357, 2601, 4358, -940, 4359, 2612, 2620, 4134, 111,
- 642, 2641, 5410, 2615, 2658, 5411, 3427, 1690, 643, 5797,
- 5678, 2644, 5679, 5680, 5412, 2645, 2646, 3286, 3756, 1877,
- 2647, 2650, 2659, 4718, 5176, 2660, 2668, 2672, 2676, 3423,
- 694, 2673, 2675, 1686, 2689, 5795, 4719, 5796, 2688, 2708,
- 2692, 1687, 4413, 1313, 2693, 936, 4949, 4418, 4419, 5780,
- 1688, 2709, 4720, 4261, 5935, 2704, 2718, 2727, 4681, 5778,
- 6215, 2728, 3048, -2534, 4684, 5856, 2719, 1686, 1354, 1354,
- 2732, 2734, 2246, 2733, 2737, 1687, 2768, 2772, 1765, 2773,
- 3287, 1367, 4721, 2247, 1688, 954, 955, 956, 957, 958,
- 959, 960, 961, 962, 963, 964, 3288, 3289, 1689, 2777,
- 1686, 3290, 3291, 3292, 6136, 2781, 174, 175, 1687, 5185,
- 5188, 5190, 5192, 2784, 2786, 5195, 5196, 1688, 2787, 2794,
- 5200, 5291, 1686, 5206, 1124, 1153, 5210, 5779, 2797, 5185,
- 1687, 2800, 2818, 5221, 5185, 2845, 1125, 2846, 2848, 1688,
- 5410, 2864, 4264, 5411, 1877, 5303, 4740, 2867, 3422, 2869,
- 2870, 2710, 5600, 5955, 4950, 2872, 2881, 2882, 5781, 2883,
- 2889, 4722, 2928, 2886, 935, 2145, 2887, 2897, 2979, 3293,
- 3009, 2904, 1644, 6043, 2908, 2911, 2920, 2921, 4336, 2923,
- 5797, 3021, 2924, 2925, 2926, 986, 3033, 2930, 2938, 5183,
- 2942, 4318, 5739, 2950, 2953, 795, 2956, 5981, 4771, 1974,
- 2967, 5199, 2957, 1905, 1905, 1690, 2961, 3998, 1689, 5508,
- 2962, 2971, 2974, 2972, 2978, 2984, 2989, -1456, 3028, 3294,
- 5780, 2711, 4723, 2239, -1621, 2996, 1662, 3002, 2350, 1720,
- 1666, 3036, 1878, 3011, 3038, 6223, 1126, 4796, 3012, 5548,
- 3013, 3014, 1689, 654, 3039, 3041, 4805, 3049, 3071, 3091,
- 3042, 3045, 4335, 3094, 111, 4797, 3119, 3050, 3095, 4033,
- 937, 3051, 3096, 3103, 1006, 1975, 4588, 3104, 4591, 3099,
- 4594, 3107, 4770, 3123, 1127, 1689, 1976, 3426, 3133, 780,
- 1706, 3715, 3136, 3137, 1977, 4837, 3143, 3160, 1128, 780,
- 2240, 3419, 3161, 3189, 3192, 3710, 3191, 1689, 3425, 6043,
- 2012, 3193, 2012, 2012, 3265, 3196, 3197, 3226, 3233, 3237,
- 3251, 1978, 4865, 3258, -715, 1690, 3266, 4929, 3262, 3269,
- 6051, 3238, 3275, 5799, 3270, 3276, 3277, 3278, 3280, 5781,
- 1154, 1155, 1156, 1157, 3281, 3319, 4724, 4725, 3282, 3322,
- 3420, 3325, 3329, 3334, 3711, 3335, 5591, 3336, 3421, 1690,
- 3337, 3241, 3712, 1020, 3361, 3365, 2241, 1878, 2242, 3338,
- 2405, 4988, 3367, 3339, 2243, 5453, 3368, 1979, -715, 5458,
- 5459, 745, 2400, 3340, 3341, 3342, 3343, 3344, 1879, 5404,
- 795, 1759, 1690, 4422, 174, 175, 3427, 3155, 3345, 3371,
- 3719, 3346, 1880, 3347, 1881, 1980, 3348, 766, 3349, 3350,
- 6204, -1319, 3156, 3351, 1690, -1319, 3381, 6115, 3352, 3423,
- 3383, 5491, 3353, 3714, 6214, 5782, 2082, 3239, 3354, 2145,
- 6204, 3355, 3356, 3391, 2244, 5486, 1882, 6214, 4837, 3357,
- 767, 3358, 3425, 5740, 3386, 3384, 3387, 3385, 787, 1883,
- 5741, 3395, 3397, 4992, 6051, 3396, -1319, 3404, 3433, 3724,
- 3725, -1319, 4920, 3726, 3739, 5742, 111, 3740, 3741, 4930,
- 3747, 3760, -1664, 3792, 2032, 3791, 3779, -715, 2245, 3793,
- 3780, 3806, 1884, 5409, 5487, 3715, 3807, -2262, 3819, 111,
- 782, 938, 5488, 3821, -1319, 4726, 4727, 3022, 3820, 3710,
- 1885, 3831, 3715, 795, 5799, 3835, 3829, 3837, 3838, 3839,
- 2469, 3842, 795, 1879, 747, 3843, 3710, 3847, 3848, 3855,
- 4423, 3856, 2468, 3880, 2839, 4817, 3894, 1880, 3903, 1881,
- 5492, 2807, 3895, 3909, 3910, 4841, 5049, 3901, 3422, 5709,
- 3930, 3941, 3713, 3935, 3943, -715, 3945, 3946, 3711, 3947,
- 3963, 3964, 3967, 5490, 3968, 3991, 3712, 4004, 3995, -2013,
- 4005, 1882, 4036, 4037, 4038, 3711, 4054, 4064, 4058, 4065,
- 2246, 4066, 5158, 3712, 1883, 4096, 4068, 4102, 1886, 4107,
- 768, 2247, 2782, 4109, 4114, 1887, -715, 4127, 4115, 4929,
- 4425, 4190, 5743, 4193, 3719, 1888, 5782, 4199, 4202, 4207,
- 4194, 4214, 728, 729, 4215, 5744, 4211, 1884, 5201, 1889,
- 4221, 3719, 4224, 4225, 4226, 4227, 4270, 3714, 4281, 4282,
- 4292, 4293, 5745, 936, 4304, 1885, 4296, 4306, 938, 4307,
- 4308, 4321, 4309, 4318, 3714, 4310, 4931, 4311, 3817, 730,
- -715, 1890, 4312, 745, 1891, 4319, 4322, 4426, 4427, 4428,
- 4323, 5637, 4326, 4728, 4325, 1604, 4330, 5018, 4344, 3155,
- 1892, 4345, 4350, 4363, 6183, 4369, 4368, 4429, 4370, 5306,
- 4389, 744, 5489, 2350, 3156, 4381, 655, 4387, 731, 4408,
- 4409, 4417, 4386, 111, 5141, 4414, 4462, 4467, -1780, -1785,
- 4486, 1893, 4491, 795, 4494, 4495, 4837, 4500, 5166, 4510,
- 4501, 4528, 4515, 1886, 4573, 4581, 4604, 4598, 4599, 4612,
- 1887, 4623, 745, 780, 4618, 4568, 4666, 4644, 4651, 4678,
- 1888, 4430, 4679, 4431, 4692, 4699, 4700, 2478, 746, 795,
- 4696, 4702, 2981, 4711, 1889, 4712, 3713, 4742, 4287, -715,
- 3981, 4751, 935, 4432, 4753, 4754, 4757, 1228, 4759, 5235,
- 5243, 4758, 4807, 3713, 2418, 4763, 4776, 41, 5243, 4777,
- 936, 4433, 5746, 5154, 4790, 6091, 1890, 4811, 4434, 1891,
- 4806, 4812, 4813, 4818, 4814, 4838, 747, 4815, 4839, 4390,
- 4840, 4852, 4539, 4435, 4881, 1892, 5410, 4880, 2400, 5411,
- 4436, 4884, -256, 4885, 4886, 4893, 4895, 4922, 4909, 5197,
- 5198, 2402, 4923, 4924, 4837, 4437, 4940, -715, 4931, 5211,
- 4942, 938, 4956, 4955, 4965, 4966, 1893, 4805, 4805, 780,
- 4967, 4968, 4969, 5234, 4970, 5298, 4972, 4973, 4974, 5314,
- 4975, 2350, 4976, 4983, 5262, 4986, 4989, 4990, 780, 5324,
- 5315, 4997, 5005, 5006, 4805, 747, 4932, 5009, 5013, 5015,
- 5325, 4805, 4671, 732, 5010, 5035, 4837, 5328, 5043, 5329,
- 5330, 5046, 4438, 5051, -2060, -1319, 5060, 5063, 5073, 5093,
- 733, 5350, 4439, 5076, 5077, 5095, 748, 5094, 5078, 935,
- 5079, 5099, 5081, 5080, 2012, 5082, 5089, 5101, 3715, 5112,
- 937, 4391, 5104, 5366, 5111, 5114, 734, 5136, 4931, 4392,
- 5120, 5151, 3710, 5140, 5128, 5138, 938, 5255, 5391, 795,
- 4440, 5139, 5147, 5146, 4393, 5156, 5159, 5264, 5160, 5265,
- 5269, 158, 5181, 4441, 4394, 4395, 4396, 5257, 5266, 5278,
- 5276, 5277, 5279, 5271, 4397, 5286, 6219, 735, 5287, 5343,
- 5288, 5289, 5294, 936, 5392, 5292, 937, 5305, 5243, 5182,
- 5310, 3711, 4052, 5309, 4933, 5342, 5346, 5928, 5344, 3712,
- 5367, 5363, 4442, 5365, 5368, 5381, 5382, 5394, 4443, 5395,
- 5396, 5398, 5400, 5403, 5406, 5401, 5417, 5420, 5433, 5432,
- 5437, 5443, 5450, 5442, 5451, 5454, 5498, 5507, 5509, 5521,
- 2012, 5928, 5446, 5449, 5526, 5494, 159, 3719, 5496, 5502,
- 5528, 5501, 5424, 5517, 5511, 5529, 5518, 5164, 5531, 5544,
- 5533, 5550, 5551, 5555, 4796, 5431, 5561, 4945, 5566, 5168,
- 3714, 5578, 4805, 5589, 937, 5592, 4444, 5595, 5598, 5599,
- 5604, 5441, 5605, 4445, 5441, 5441, 5608, 5611, 936, 5447,
- 5606, 5622, 5625, 4837, 5629, 5631, 5169, 5641, 5635, 5658,
- 5659, 5457, 5682, 5693, 5684, 5302, 5493, 1759, 3243, -3650,
- 5692, -2671, 935, -2670, -2674, 4446, -2684, -2688, 2228, 2229,
- 2230, 2231, 4398, 5681, 5322, 5694, 5647, 5700, 5701, -372,
- 4447, 4448, -3645, -3643, 4399, -3647, -3641, -3646, -3644, -3642,
- 5702, 5651, 5707, 4449, 5710, 5711, 5712, 5928, 5719, 5862,
- 5863, 5725, 5865, 5866, 5867, 5868, 5721, 5734, 4932, 5735,
- 5738, 5758, 5759, 5764, 2232, 2233, 2234, 5243, 5770, 4422,
- 5806, 5809, 5814, 5818, 5819, 5826, 5820, 5821, 5827, 5535,
- 5828, 5537, 5495, 5831, 5840, 5843, 5844, 5847, 5851, 3713,
- 5857, 5861, 5864, 5869, 3241, 5872, 3241, 5886, 5497, 5888,
- 5900, 5906, 5908, 5910, 5912, 5911, 852, 935, 5914, 5917,
- 5916, 5918, 5932, 5933, 5931, 2235, 2236, 5934, 5961, 4400,
- 5968, 5539, 4837, 4805, 4837, 5939, 5536, 6216, 795, 4837,
- 5983, 4805, 6002, 5997, 4401, 6004, 4837, 4837, 853, 6005,
- 4805, 6012, 6029, 1110, 6015, 5558, 4837, 6018, 6023, 6024,
- 6031, -2507, 4837, 4805, -2508, 4805, 6032, 6037, 6034, 855,
- 4536, 6040, 4541, 5567, 6065, 6068, 4933, 6092, 856, 6062,
- 5975, 6076, 4402, 5978, 6077, 5661, 6083, 749, 6087, 2237,
- 6090, 5986, 6095, 6137, 5989, 6149, 4403, 6150, 1110, 857,
- 780, -2060, 6151, 2738, 6158, -166, 6140, 6145, 6153, 6165,
- 6170, 6174, 5049, 858, 6175, 6176, 5588, 6181, 859, 6182,
- 6184, 6178, 6179, 6180, 6190, 6191, 6059, 6205, 3860, 3159,
- 6218, 4095, 5356, 5354, 5355, 3950, 5761, 2739, 4509, 5510,
- 5812, 860, 5941, 6085, 1333, 2445, 5393, 2044, 4876, 5503,
- 4474, 641, 2238, 5375, 5587, 5657, 5594, 5722, 5070, 2426,
- 4405, 3170, 4196, 4111, 2736, 1442, 4683, 2857, 2350, 5654,
- 2858, 5653, 2859, 5500, 2740, 4979, 4555, 5441, 750, 5557,
- 5419, 5634, 4762, 4768, 5121, 3026, 5967, 5612, 5639, 780,
- 6045, 6139, 6099, 4837, 4837, 5871, 5610, 2034, 5295, 3271,
- 861, 4977, 5808, 5337, 862, 5448, 4982, 5538, 5175, 6119,
- 6022, 4568, 1110, 6026, 5957, 5946, 5947, 5948, 5949, 4730,
- 4635, 4246, 863, 4693, 4677, 6028, 864, 865, 5965, 5026,
- 4284, 780, 5383, 4745, 4747, 4743, 6144, 5243, 752, 753,
- 6112, 5768, 6113, 5994, 3942, 111, 5243, 2239, 5999, 6001,
- 5687, 5041, 5669, 5534, 4416, 5532, 4980, 866, 5335, 2148,
- 2053, 4279, 2616, 3928, 867, 868, 5838, 3926, 5963, 3328,
- 5691, 2770, 3836, 3151, 3392, 4124, 4611, 4837, 781, 2022,
- 3794, 1362, 3887, 4837, 1973, 5696, 2021, 5007, 3994, 5391,
- 2350, 4756, 3844, 3761, 1748, 3763, 2344, 3814, 3811, 4805,
- 4314, 2403, 4234, 2253, 2199, 5086, 6086, 5944, 2400, 938,
- 5713, 5717, 6169, 6167, 2240, 1965, 5275, 2667, 2263, 1966,
- 2664, 2128, 4787, 5952, 5523, 5392, 5148, 5953, 2208, 4338,
- 2657, 1967, 4303, 3253, 4913, 3990, 5582, 4912, 4302, 1968,
- 1970, 5414, 5850, 5135, 1558, 5791, 5733, 2678, 5699, 5791,
- 5405, 5088, 3424, 3997, 3993, 5427, 1385, 4740, 3245, 4736,
- 1110, 2129, 5441, 2030, 1110, 4918, 763, 3363, 937, 754,
- 5765, 2810, 4837, 1249, 2016, 4610, 3390, 4800, 5153, 1859,
- 2241, 4019, 2242, 4786, 4783, 6135, 5805, 1110, 2243, 5623,
- 1451, 1558, 1905, 5810, 1457, 2780, 1110, 1233, 2518, 3125,
- 1234, 3126, 3881, 2023, 2130, 3164, 5652, 2400, 1236, 2131,
- 5436, 2604, 2153, 4615, 6138, 5280, 6171, 4837, 5530, 6217,
- 2132, 2133, 6221, 3140, 3388, 5640, 5429, 780, 1560, 795,
- 3445, 3872, 1191, 2863, 3873, 5834, 4837, 780, 3090, 1192,
- 3874, 936, 3869, 5833, 4343, 2842, 1763, 3866, 2244, 3865,
- 1146, 2446, 2141, 1742, 2142, 3318, 5849, 2626, 4516, 3840,
- 4921, 1110, 1110, 1110, 1110, 5012, 3944, 1558, 4569, 1282,
- 772, 5579, 756, 757, 1110, 1921, 2741, 758, 1540, 2012,
- 5263, 4608, 5982, 4197, 5791, 5813, 0, 0, 2860, 5515,
- 0, 0, 2245, 0, 5887, 0, 0, 0, 0, 5899,
- 0, 5791, 0, 0, 0, 5905, 2742, 2743, 0, 2744,
- 2745, 2746, 2747, 2748, 0, 2749, 2750, 2751, 2752, 2753,
- 2754, 2755, 2756, 0, 2757, 2758, 2759, 2760, 795, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5938, 0, 780, 0, 0, 0,
- 0, 5669, 0, 0, 0, 4386, 4386, 0, 0, 0,
- 935, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1558, 0, 0, 0, 0, 2134, 0, 0, 0, 0,
- 0, 5717, 0, 0, 2246, 2135, 0, 0, 0, 5913,
- 5733, 0, 0, 0, 0, 2247, 2136, 0, 738, 0,
- 6058, 0, 2137, 795, 0, 0, 0, 6084, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2761, 2762, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2138, 0, 6003, 5791, 2139, 0, 0,
- 0, 0, 0, 5441, 0, 5441, 5441, 0, 0, 0,
- 0, 0, 0, 0, 0, 1110, 0, 0, 0, 1558,
- 0, 0, 0, 5830, 0, 0, 2140, 0, 6098, 0,
- 1681, 5976, 5977, 5836, 6030, 0, 1683, 0, 0, 0,
- 0, 0, 0, 5988, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2350,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 795, 0, 0, 0, 0, 0, 5791, 0, 0,
- 0, 0, 3424, 0, 0, 0, 0, 0, 0, 5441,
- 5441, 0, 0, 6069, 0, 0, 0, 0, 0, 0,
- 5441, 0, 0, 0, 0, 0, 0, 0, 0, 1558,
- 0, 0, 1558, 0, 6082, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 5791, 5791,
- 0, 0, 5940, 0, 6052, 0, 0, 6053, 0, 795,
- 0, 0, 0, 0, 0, 6222, 0, 0, 0, 0,
- 0, 0, 0, 5441, 0, 0, 0, 0, 0, 6207,
- 0, 0, 0, 0, 6209, 0, 5791, 0, 6124, 0,
- 0, 0, 0, 0, 0, 2350, 0, 0, 0, 1110,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3424, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1558,
- 0, 0, 0, 0, 0, 0, 0, 0, 1110, 0,
- 1110, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2350, 0, 0, 0,
- 795, 0, 0, 0, 0, 795, 937, 0, 0, 0,
- 2350, 0, 0, 0, 0, 0, 2350, 0, 0, 0,
- 0, 0, 0, 2350, 0, 0, 1110, 1110, 0, 0,
- 0, 0, 1110, 0, 0, 0, 1110, 1110, 1110, 0,
- 0, 0, 0, 0, 0, 0, 1110, 1110, 1558, 0,
- 0, 0, 1110, 0, 0, 0, 1110, 1110, 1110, 0,
- 1110, 1110, 1110, 1558, 1558, 0, 0, 0, 0, 0,
- 1110, 0, 1110, 0, 0, 1110, 1110, 1110, 1110, 0,
- 1110, 0, 1110, 1110, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1110, 1110, 1110, 1110,
- 1110, 0, 1110, 1110, 1110, 1110, 1110, 1110, 0, 1110,
- 1110, 0, 1110, 1110, 0, 1110, 1110, 0, 0, 1110,
- 1110, 0, 1110, 1110, 0, 1110, 0, 1110, 0, 0,
- 0, 1110, 1110, 1110, 0, 0, 1110, 1110, 1110, 1110,
- 0, 1110, 0, 937, 0, 0, 0, 0, 1110, 0,
- 0, 0, 0, 0, 1110, 1110, 1110, 1110, 0, 0,
- 0, 0, 0, 0, 0, 1110, 1110, 0, 1110, 1110,
- 0, 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
- 1110, 1110, 1110, 1110, 1110, 0, 0, 1110, 0, 0,
- 0, 0, 1558, 0, 0, 0, 0, 0, 0, 1558,
- 0, 0, 0, 0, 0, 0, -1062, -1062, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4422, 174,
- 175, 0, 1110, 0, 0, 0, -1868, -1868, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -1868, 0,
- 1558, 0, 0, 0, 0, 0, 4529, 0, 4530, 4531,
- 0, 0, 0, 0, 2012, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4532, 0, 4533, 2157, 0, 0, 0, 0, 4534, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2032,
- 0, -1868, 0, 0, 0, 0, 0, 0, 0, 0,
- 4535, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3817, 0, 937, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1110, -1868,
- 1110, 0, 0, -1868, 0, 4423, 0, -1868, 4422, 174,
- 175, 0, 0, 0, 0, 0, -1868, -1868, 0, 0,
- 0, 0, 0, -1868, 1558, 0, 0, -1868, 0, 0,
- 0, 0, -1868, 4536, -1868, 1110, 0, 0, -1868, 0,
- 0, 0, 0, 0, 0, 0, -1868, 0, -1868, 0,
- 0, 0, 0, -1868, 0, 0, 0, 0, 0, 0,
- 0, -904, 0, -904, 4537, 0, 4538, 0, 0, 0,
- 0, 0, 0, -1868, 0, 4425, 0, 4539, 0, 0,
- 0, 937, 0, -1868, 0, 0, -1868, 0, 0, 2032,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4540, 0, 0, 0, 0, 0, -1868, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1110, 0, 0, 0, 0, -1868, 1558, 0, 1558, -1868,
- 0, 0, 4426, 4427, 4428, 4423, 0, 0, -1868, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1110, 0,
- 0, 0, 4429, 0, 0, 0, 0, -1868, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -1868, 0, 0, 0, 0, 0, -1868, -1868,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -1868, 0, -1868, 0, 0, 0, 4541, 0,
- 0, 0, 0, 0, 0, 4425, 4430, 0, 4431, 0,
- 0, 0, 4420, 0, 4421, 0, 0, 0, 0, 4422,
- 174, 175, 0, 0, 0, 0, 0, 0, 4432, 0,
- 0, 0, 0, 0, 0, 4542, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4433, 0, 0, 0,
- 0, 0, 0, 4434, 0, 0, 0, 0, 0, 0,
- 0, 0, 4426, 4427, 4428, 0, 0, 0, 4435, 0,
- 0, 0, -904, 1110, -904, 4436, 0, 0, 0, 4543,
- 4544, 0, 4429, 0, 0, 0, 4545, 0, 0, 0,
- 4437, 0, 0, 0, 0, 0, 0, 0, 4546, 0,
- 2032, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1558, 1110, 0, 0, 4547,
- 0, 0, 0, 0, 1110, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4430, 0, 4431, -1868,
- 0, 0, 0, 4548, 0, 0, 4423, 4438, 0, 0,
- 0, 0, 0, 0, 0, 0, -904, 4439, 4432, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4424, 0,
- 0, 0, 0, 0, 0, 0, 4433, 0, 1110, 0,
- 0, 0, 0, 4434, 0, 0, 0, 0, 0, 1558,
- 1558, 0, 0, 0, 0, 4440, 0, 0, 4435, 0,
- 0, 0, 0, 0, 0, 4436, 0, 0, 4441, 0,
- 4549, 0, 0, 0, 0, 0, 4425, 0, 0, 0,
- 4437, 0, 1110, 1110, 1110, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4442, 0, 0,
- 0, 0, 0, 4443, 0, 0, 0, -1868, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -1868, -1868, 0,
- 0, 1558, 0, 4426, 4427, 4428, 0, 4438, 4550, -1868,
- 0, 1110, 0, 0, 1558, 0, 0, 4439, 0, 4551,
- 4552, 4553, 0, 4429, 0, 0, 0, 0, 0, 1110,
- 0, 0, 0, 1110, 1110, 0, 1110, 1110, 0, 0,
- 0, 4444, 0, 0, 2157, 1110, 0, 1110, 4445, 0,
- 0, 0, 0, 0, 0, 4440, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4441, 0,
- 0, 0, -1868, 0, 0, 0, 0, 4430, 1110, 4431,
- 4446, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4447, 4448, -904, 0, 4432,
- 0, 0, 0, 0, 1110, 0, 0, 4442, 4449, 0,
- -1868, 0, 4554, 4443, -1868, 0, 1110, 4433, -1868, 0,
- 1558, 0, 0, 0, 4434, 0, 0, -1868, -1868, 1110,
- 0, 0, 0, 0, 0, 0, 0, 0, -1868, 4435,
- 1110, 0, 0, -1868, 0, -1868, 4436, 0, 0, -1868,
- 0, 0, 0, 0, 937, 0, 1110, -1868, 0, -1868,
- -1868, 4437, 0, 0, -1868, 0, 0, 0, 0, 0,
- 2145, 4444, 0, 2158, 0, 0, -1062, 0, 4445, 0,
- 0, 0, 0, 0, -1868, 0, 0, 0, 0, 0,
- -1868, 0, -1868, 1110, -1868, -1868, -1868, -1868, 0, 0,
- 1110, 0, 0, 0, 0, 0, 0, 1558, 0, 0,
- 4446, 0, 0, 0, 0, 0, 0, -1868, 4438, 0,
- 0, 0, 0, 0, 0, 4447, 4448, 0, 4439, 0,
- 0, 0, 0, 0, 0, 0, -1868, 0, 4449, 0,
- -1868, 0, 0, 0, 0, 1558, 1558, 0, 0, -1868,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4440, 0, -1868, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4441,
- 0, 0, 0, -1868, 0, 0, 0, 0, 0, 0,
- -1868, 0, 0, 0, 0, 0, 1110, 0, 0, 0,
- 0, 0, 4871, -1868, 0, -1868, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4442, 0,
- 0, 0, 0, 0, 4443, 0, 0, 0, 0, 1110,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1558, 0, 1558, 1558, 1558, 0, 1110, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4444, 0, 0, 0, 0, 1110, 0, 4445,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4446, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4447, 4448, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4449,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1558, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1110, 0,
- 0, 0, 1110, 0, 0, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 1110, 0, 0, 0, 0, 0,
- 0, 0, 0, 1110, 0, 1110, 1110, 0, 1110, 1110,
- 1110, 1110, 0, 1110, 0, 1110, 1110, 0, 1110, 0,
- 0, 0, 0, 0, 0, 0, 1110, 1110, -1868, 0,
- 0, 1110, 1110, 1110, 0, 0, 0, 0, 0, 0,
- 0, 1110, 1110, 1110, 0, 1110, 0, 1110, 0, 1110,
- 0, 1110, 0, 1110, 0, 0, 0, 0, 1110, 1110,
- 0, 1110, 1110, 1110, 0, 0, 0, 1110, 0, 0,
- 1110, 0, 0, 0, 0, 0, 0, 0, 0, 1110,
- 0, 0, 1110, 0, 1110, 1110, 1110, 0, 0, 1110,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1110, 1, 1110, 2, 0, 1110, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1110, 1110, 1110, 1110,
- 1558, 1110, 0, 0, 0, 0, 1110, 0, 0, 0,
- 0, 0, 0, 0, 0, 1111, 0, 1558, 0, 0,
- 0, 0, 0, 0, 0, 3, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5, 0, 6, 0, 7, 0, 8,
- 0, 0, 0, 0, 1110, 0, 0, 9, 0, 0,
- 1111, 0, 0, 0, 0, 0, 1110, 0, 0, 0,
- 0, -1868, 0, 1110, 0, 0, 0, 0, 10, 0,
- 11, 12, 174, 175, 2158, 0, 0, 13, 0, 1558,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -1868, 0, -1868, 14, 0, -1868, -1868, 15, 0,
- 1194, 0, 1195, 0, 0, 0, 0, 0, 16, 0,
- 661, 0, 1110, 0, 0, 0, 0, 17, 0, 0,
- 0, 0, 0, 0, 1163, 0, 0, 0, 18, 0,
- 0, 0, 1196, 1197, 1110, 0, 0, 0, 19, 0,
- 20, 0, 1198, 0, 21, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 11, 12, 0, 0,
- 0, 0, 0, 0, 1111, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 23, 24, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 26, 0, 0, 1199, 0,
- 0, 0, 0, 1110, 0, 0, 27, 28, 29, 0,
- 30, 0, 1200, 0, 0, 31, 0, 0, 0, 0,
- 0, 32, 0, 0, 1110, 33, 34, 35, 0, 0,
- 0, 0, 0, 0, 0, 0, 1558, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 36, 0, 37, 0, 38, 0, 1201, 0, 0,
- 0, 0, 39, 0, 0, 0, 0, 0, 0, 1202,
- 40, 41, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1111, 0, 0, 0, 1111, 43, 44, 0,
- 45, 0, 0, 0, 0, 0, 0, 46, 0, 0,
- 0, 0, 0, 0, 1203, 47, 0, 0, 0, 1111,
- 0, 0, 1558, 0, 0, 0, 0, 0, 1111, 0,
- 0, 0, 0, 0, 1110, 48, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1204, 0, 49,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
- 0, 0, 0, 0, 0, 0, 0, 1205, 0, 0,
- 0, 0, 0, 0, 0, 0, 1206, 0, 51, 1110,
- 0, 0, 0, 1111, 1111, 1111, 1111, 0, 0, 1207,
- 0, 1110, 0, 52, 1110, 0, 1111, 0, 0, 0,
- 1208, 0, 0, 0, 53, 0, 0, 54, 0, 0,
- 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1209, 0, 56, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -2262, 1210, 0, 0, 1211, 0, 1212, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1213, 1214, 0, 0, 0,
- 0, 1215, 1216, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1217, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1218,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 57,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1219, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 58, 0,
- 0, 0, 59, 0, 0, 0, 0, 1111, 0, 0,
- 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
- 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1220, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1221, 0, 0, 63, 0, 0, 64, 0, 0, 1222,
- 0, 0, 1223, 1224, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 66, 1110,
- 1110, 0, 0, 0, 1110, 0, 0, 0, 0, 0,
- 0, 0, 0, 1558, 1226, 0, 0, 0, 0, 0,
- 0, 0, 1227, 0, 67, 0, 1110, 0, 1110, 0,
- 1110, 0, 1110, 0, 0, 0, 0, 0, 0, 0,
- 0, -3286, 0, 1228, 0, 0, 68, 1110, 0, 0,
- 0, 0, 0, 1558, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1110, 1110, 0, 0,
- 0, 1110, 0, 1110, 0, 1110, 0, 0, 0, 0,
- 1110, 1111, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -3286, 0, 0, 0, 0, 0, 0,
- 1229, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1558, 0, 0, 0, 0, 0, 1110, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1110, 0, 0, 0, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1111, 0, 1111, 1110, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1558, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1111, 1111,
- 0, 0, 0, 0, 1111, 0, 0, 0, 1111, 1111,
- 1111, 0, 0, 0, 0, 0, 0, 0, 1111, 1111,
- 0, 0, 0, 0, 1111, 0, 0, 0, 1111, 1111,
- 1111, 0, 1111, 1111, 1111, 1110, 0, 0, 0, 0,
- 0, 0, 1111, 0, 1111, 1110, 0, 1111, 1111, 1111,
- 1111, 0, 1111, 0, 1111, 1111, 0, 0, 0, 1110,
- 0, 1558, 1110, 0, 0, 0, 0, 0, 1111, 1111,
- 1111, 1111, 1111, 0, 1111, 1111, 1111, 1111, 1111, 1111,
- 0, 1111, 1111, 0, 1111, 1111, 0, 1111, 1111, 0,
- 0, 1111, 1111, 0, 1111, 1111, 0, 1111, 0, 1111,
- 0, 0, 0, 1111, 1111, 1111, 0, 0, 1111, 1111,
- 1111, 1111, 0, 1111, 0, 0, 0, 0, 0, 0,
- 1111, 0, 0, 0, 0, 0, 1111, 1111, 1111, 1111,
- 0, 0, 0, 0, 0, 0, 0, 1111, 1111, 0,
- 1111, 1111, 0, 0, 1111, 1111, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 0, 0, 1111,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1111, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1110, 1110, 1, 1110, 0, 0, 0, 0, 0, 0,
- 1111, 0, 1111, 0, 0, 0, 1110, 1110, 1110, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1110, 1110, 0, 0, 0, 3, 4, 1111, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5, 1110, 6, 0, 7, 0, 8,
- 0, 0, 0, 0, 0, 0, 1110, 9, 0, 0,
- 0, 0, 0, 0, 0, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
- 11, 12, 0, 0, 0, 1110, 0, 13, 0, 0,
- 1110, 1110, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 0, 0, 0, 15, 1110,
- 0, 0, 1111, 1110, 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0, 0, 17, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 18, 0,
- 1111, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 20, 0, 0, 0, 21, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 23, 24, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 26, 0, 0, 0, 0,
- 0, 0, 0, 4422, 174, 175, 27, 28, 29, 0,
- 30, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 32, 0, 0, 0, 33, 34, 35, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1111, -904, 0, -904, 0,
- 0, 36, 0, 37, 0, 38, 0, 0, 0, 0,
- 0, 0, 39, 0, 0, 0, 0, 0, 0, 0,
- 40, 41, 0, 0, 2032, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 42, 0, 0, 1111, 0,
- 0, 0, 0, 0, 1110, 1110, 1111, 1111, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 43, 44, 0,
- 45, 0, 0, 0, 0, 0, 0, 46, 0, 0,
- 4423, 0, 0, 0, 0, 47, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1112, 0, 0, 0, 0, 48, 0, 0, 0, 0,
- 1111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
- 4425, 0, 0, 0, 1111, 1111, 1111, 0, 51, 4130,
- 4131, 0, 0, 0, 4132, 4133, 0, 0, 0, 0,
- 0, 0, 0, 52, 4134, 0, 0, 0, 0, 0,
- 0, 0, 0, 1110, 53, 0, 1558, 54, 0, 0,
- 55, 0, 0, 0, 0, 0, 0, 0, 0, 4135,
- 0, 0, 0, 0, 0, 56, 0, 4426, 4427, 4428,
- 0, 0, 4136, 1111, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4429, 4137, 0,
- 5945, 1111, 0, 0, 0, 1111, 1111, 1110, 1111, 1111,
- 0, 0, 0, 0, 0, 0, 0, 1111, 0, 1111,
- 0, 0, 0, 0, 0, 0, 1558, 0, 4139, 1112,
- 0, 0, 0, 0, 1110, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4140, 4141, 4142,
- 1111, 4430, 0, 4431, 0, 0, 0, 4143, 4144, 4145,
- 0, 0, 0, 0, 0, 0, 0, 1110, 0, 0,
- 0, -904, 0, 4432, 0, 4146, 1111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1111, 57,
- 0, 4433, 0, 0, 0, 0, 0, 0, 4434, 0,
- 0, 1111, 0, 0, 0, 0, 0, 4147, 0, 0,
- 0, 0, 1111, 4435, 0, 0, 0, 0, 58, 0,
- 4436, 0, 59, 0, 0, 0, 0, 0, 1111, 0,
- 0, 0, 60, 0, 4149, 4437, 0, 0, 0, 0,
- 61, 0, 0, 0, 0, 0, 1110, 0, 1110, 0,
- 0, 0, 62, 0, 0, 0, 0, 4150, 4151, 4152,
- 0, 0, 0, 0, 0, 1111, 0, 0, 0, 0,
- 0, 0, 1111, 63, 0, 0, 64, 1112, 0, 4153,
- 4154, 1112, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4438, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4439, 0, 1112, 0, 0, 0, 0, 65,
- 0, 0, 0, 1112, 0, 0, 0, 0, 66, 0,
- 0, 0, 0, 0, 0, 0, 0, 4155, 0, 4156,
- 4157, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4440, 0, 0, 0, 67, 0, 4158, 0, 0, 0,
- 0, 0, 0, 4441, 0, 0, 0, 0, 0, 1110,
- 0, 0, 0, 0, 0, 0, 68, 0, 1111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1112, 1112,
- 1112, 1112, 4159, 4160, 0, 0, 0, 0, 0, 0,
- 0, 1112, 4442, 0, 0, 0, 0, 0, 4443, 0,
- 0, 1111, 0, 0, 0, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1111, 0, 0, 0, 0, 0, 0, 0, 4162, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4444, 0, 0, 1111,
- 0, 0, 0, 4445, 0, 0, 0, 0, 1110, 4163,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1110, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4446, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4447, 4448, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4449, 0, 0, 0, 0, 0, 0,
- 0, 4164, 4165, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4166, 4167, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4168,
- 1111, 0, 0, 0, 1111, 0, 0, 1111, 0, 0,
- 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0,
- 0, 0, 0, 0, 0, 1111, 0, 1111, 1111, 0,
- 1111, 1111, 1111, 1111, 0, 1111, 0, 1111, 1111, 0,
- 1111, 0, 0, 0, 0, 0, 0, 0, 1111, 1111,
- 0, 0, 0, 1111, 1111, 1111, 0, 0, 0, 0,
- 0, 0, 0, 1111, 1111, 1111, 0, 1111, 0, 1111,
- 0, 1111, 0, 1111, 0, 1111, 0, 0, 0, 0,
- 1111, 1111, 0, 1111, 1111, 1111, 0, 0, 0, 1111,
- 0, 0, 1111, 4170, 0, 0, 4171, 0, 0, 4172,
- 0, 1111, 0, 0, 1111, 0, 1111, 1111, 1111, 0,
- 0, 1111, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4174, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1111, 0, 1111, 0, 0, 1111, 0,
- 0, 0, 4175, 0, 0, 0, 0, 0, 1111, 1111,
- 1111, 1111, 0, 1111, 0, 0, 1112, 0, 1111, 0,
- 1110, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1110, 0, 0, 0, 0, 0,
- 0, 0, 1558, 0, 0, 0, 0, 0, 1110, 0,
- 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0,
- 0, 0, 0, 1110, 0, 0, 0, 0, 1111, 0,
- 0, 0, 0, 0, 0, 1111, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 1112, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1111, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 1112, 0, 0, 0, 0, 1112,
- 0, 0, 0, 1112, 1112, 1112, 1111, 0, 0, 0,
- 0, 0, 0, 1112, 1112, 0, 0, 0, 0, 1112,
- 0, 0, 0, 1112, 1112, 1112, 0, 1112, 1112, 1112,
- 0, 0, 0, 0, 0, 0, 0, 1112, 0, 1112,
- 0, 0, 1112, 1112, 1112, 1112, 0, 1112, 0, 1112,
- 1112, 1110, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 1112, 1112, 1112, 1112, 0, 1112,
- 1112, 1112, 1112, 1112, 1112, 1111, 1112, 1112, 0, 1112,
- 1112, 0, 1112, 1112, 0, 0, 1112, 1112, 0, 1112,
- 1112, 0, 1112, 0, 1112, 0, 1111, 0, 1112, 1112,
- 1112, 0, 0, 1112, 1112, 1112, 1112, 0, 1112, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
- 0, 1112, 1112, 1112, 1112, 0, 0, 0, 0, 0,
- 0, 0, 1112, 1112, 0, 1112, 1112, 0, 0, 1112,
- 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
- 1112, 1112, 0, 0, 1112, 0, 0, 0, 4422, 174,
- 175, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 933, 0, 0, 0, 0, 0,
- 0, 1110, 0, 0, 0, 0, 5332, 0, 4530, 1112,
- 933, 0, 0, 0, 0, 0, 1237, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4532, 0, 0, 0, 0, 0, 0, 0, 5333, 0,
- 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2032,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 5334, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1558, 0,
+ 616, 807, 112, 744, 135, 1549, 701, 110, 1186, 1237,
+ 813, 2408, 2287, 923, 2783, 1424, 2586, 803, 1195, 1348,
+ 2627, 675, 2441, 2603, 1413, 675, 2358, 802, 1846, 1144,
+ 675, 1190, 2233, 689, 107, 664, 705, 2038, 2181, 1423,
+ 153, 2226, 3148, 2011, 3853, 3854, 712, 2792, 3954, 2626,
+ 1191, 796, 720, 4109, 4023, 3277, 724, 1192, 1574, 1768,
+ 3163, 1771, 1772, 2267, 2023, 713, 2707, 2023, 1267, 1785,
+ 745, 721, 2027, 3152, 2727, 3424, 4125, 4017, 3892, 1200,
+ 682, 4521, 1749, 1187, 4599, 1535, 2298, 1540, 4600, 1541,
+ 1542, 3998, 3450, 3451, 3859, 4508, 1546, 2048, 894, 3728,
+ 4013, 3729, 3160, 2342, 2393, 2394, 2395, 2396, 2397, 2398,
+ 2399, 2401, 2403, 2404, 2405, 2406, 2407, 892, 4227, 786,
+ 4914, 2361, 4024, 4941, 2552, 1613, 2001, 1976, 1152, 3902,
+ 2133, 2510, 2511, 1293, 3213, 2109, 1300, 112, 4498, 3104,
+ 2049, 3730, 788, 1942, 3341, 3173, 2742, 892, 3241, 3712,
+ 814, 791, 793, 3712, 2863, 793, 823, 801, 2440, 1686,
+ 1688, 1689, 1454, 4080, 2712, 784, 2599, 815, 3245, 107,
+ 5042, 4729, 1731, 678, 816, 112, 817, 135, 4730, 5130,
+ 110, 4490, 818, 5294, 4591, 2517, 4241, 2441, 5524, 5525,
+ 5451, 4436, 707, 4989, 4990, 4951, 4991, 3832, -492, -492,
+ 2373, 4395, 4396, 3779, -2518, 2533, -2519, 107, 2381, 2383,
+ 4396, 2386, 2387, 5502, 4236, 4994, 3970, 4996, 1253, 4236,
+ 5008, -2667, -3397, -3397, -1887, -1887, 1549, -1030, -1030, 2546,
+ 2547, -2812, -2812, 2848, 5026, 1654, 2596, -3398, -3398, 4000,
+ 4001, 3240, 3240, 5118, 4670, 4670, -390, -390, 4670, 4067,
+ 1672, 4231, -2683, 3315, 3777, 4670, 2219, 2220, 2221, 5307,
+ 2222, 4670, 2223, 4229, 2224, 2166, 3371, 1696, 2848, 1805,
+ 1676, 2166, 3982, 1398, 2872, 1697, 5050, 4616, 1718, 2676,
+ 1696, 1399, 761, 2073, 1698, 5921, 2848, 1323, 1697, 1324,
+ 4835, 2778, 1326, 1327, 2219, 2220, 2221, 1698, 2222, 726,
+ 2223, 1696, 2224, -2684, 4094, 1410, 723, 1719, 1720, 1697,
+ 2848, 1814, 5430, 729, 5856, 6087, 2848, 812, 1698, 2731,
+ 2044, 3937, 3938, 2440, 2219, 2220, 2221, -3475, 2222, 5950,
+ 2223, 2848, 2224, 1847, 2848, 4647, -2685, -2178, 2844, -3397,
+ 1696, 1410, 1951, 1410, 2798, 1718, -2178, 4041, 1697, 1446,
+ 2848, 3891, 2848, 4725, -3398, 32, 1848, 1698, 3401, 785,
+ 3240, 810, 2848, 4725, 1410, 5742, 2181, 1718, 4573, 695,
+ 4725, 1721, 2848, -3458, 1719, 1720, 2690, 4652, 3452, 699,
+ 3002, 1696, 4110, 1696, -3397, 1410, 1410, 2809, 660, 1697,
+ 1770, 1697, 2845, 1410, 806, 3211, 1719, 1720, 1698, -3398,
+ 1698, 3207, 4129, 2990, 1696, -2117, 39, 5246, 4031, 1696,
+ 2851, 4371, 1697, 4910, 1696, 2116, 1410, 1697, -3284, 2621,
+ 1696, 1698, 1697, 5249, 1696, 5251, 1698, 1410, 1697, 6304,
+ 704, 1698, 1697, 1718, 4131, 5253, 2089, 1698, 1721, 4251,
+ 1718, 1698, 1699, 1332, 32, 5271, 2130, 1810, 4397, 5564,
+ 4235, 4652, 32, 1552, 772, 1699, 1722, 4214, 4304, 3003,
+ 1721, 2374, 1719, 1720, 1696, 5332, 4705, 5320, 2044, 3140,
+ 4242, 1501, 1697, 2135, 5320, 1498, 1699, 945, 1380, 3950,
+ 5641, 1698, 6203, 1380, 1499, 1380, -3462, 773, 842, 5723,
+ 696, 4304, 845, 945, 847, 39, 848, 849, 1196, 850,
+ 851, 852, 3316, 39, 41, 2166, 2566, 2477, 6044, 2938,
+ 2171, 4305, 41, 5654, 3380, 1699, 5241, 890, 4570, 667,
+ 4648, 2799, 1696, 1722, -2812, 3047, 1721, 1432, -3397, 1742,
+ 1697, 656, 1143, 1721, 1802, 700, 1170, -3461, 2713, 1698,
+ 2375, 1762, 1340, -3398, 4305, 1722, 2888, 890, 3004, 1700,
+ 4111, 3977, 5859, 4604, 2012, 1170, 1699, 671, 1699, 4660,
+ 6272, 5960, 1700, 5013, 4081, 1469, 718, -3459, 1261, -3460,
+ 2927, 4052, 5890, 1170, 732, 4662, 2628, 3891, 2636, 1699,
+ 5774, 766, 1277, 1700, 1699, -3465, 1303, 1304, 1339, 1699,
+ 4688, 6268, 1878, 3951, 5130, 1699, 5333, 5175, 6282, 1699,
+ 1348, -2117, 5775, -2117, 703, 6037, 5090, 2045, 1696, 3161,
+ 704, 1722, 5092, 4350, 4351, 1410, 1697, 5786, 1722, 5176,
+ 1721, 830, 1700, 4503, 3162, 1698, 1696, 774, 5093, 2376,
+ -1887, 6302, 704, 765, 1697, 6071, 6297, 1440, 1843, 1699,
+ 1845, 2464, 5121, 1698, 719, 6037, 856, 801, 4605, -724,
+ 5776, 3133, 733, 1385, 5460, 3161, 2474, 1686, 1688, 766,
+ 5012, 2013, 6273, 1700, 1696, 1700, 632, 3087, -221, 5787,
+ 3162, 1141, 1697, 2090, 2059, 5961, 1441, 801, -3284, 1803,
+ 699, 1698, 4504, 4575, -1887, 3141, 1700, 2172, 1763, 1502,
+ 2181, 1700, 1258, 5859, 2451, 1712, 1700, 1699, 801, 4037,
+ 5163, 1417, 1700, 4591, 2023, 1722, 1700, 1478, 1479, 2693,
+ 1280, 1275, 801, 660, 1474, 2231, 2454, 3981, 830, 4690,
+ 6023, 830, 4691, 945, 2173, 945, 1142, 945, 945, 2048,
+ 4924, 1613, 3266, 6067, 945, 3987, 1471, 945, 1472, 3991,
+ 2508, 5791, 4236, 6204, 1322, 6305, 1700, 6044, 174, 175,
+ 3873, 5806, 4372, 4670, 4554, 2045, 2059, 2091, 660, 2092,
+ 786, 4505, 1743, 4980, 2662, 835, 4035, 2478, 4656, 4221,
+ 4658, 1503, 2049, 3952, 2706, 2677, 833, 1403, 1396, 4677,
+ 4585, 4670, 2088, 1699, 2886, 4670, 4339, 3251, 3925, 3926,
+ 801, 1713, 4670, -3397, 657, 854, 3306, 5014, 4725, 4692,
+ 836, 1699, 4499, 3372, 1700, 2118, 801, 1714, -3398, 955,
+ 4704, 3240, 3330, 661, 4332, 1443, 1718, 4981, 2410, 1811,
+ 1333, 2996, 2997, 1952, -2178, 4664, 4689, 3208, 786, 2787,
+ 2871, 1214, 1247, -2178, 4725, 1466, 700, 1468, 3379, 1699,
+ 793, 5287, 793, 4664, 801, 1719, 1720, 1477, 3194, 2093,
+ 1214, -2695, 1430, 831, 2991, 4366, 2817, 4367, 4368, 2732,
+ 6345, 4665, 1958, 2732, 5332, 1961, 2442, 2796, 1214, 1964,
+ 1965, 1966, -3585, 5786, 1969, 1970, 1844, 5532, 1715, 5536,
+ 701, 3384, 697, 3369, 68, 3010, 3011, 4037, 3014, 3015,
+ 1700, 2196, 4725, 4652, 5015, 4082, 1806, 1473, 1398, 1475,
+ 4482, 4482, 2514, 786, 2516, 1539, 2732, 2520, 1700, 1721,
+ -3475, 4653, 2041, 4229, 1544, 4229, 6083, 1547, 2846, 2528,
+ 3134, 727, 2531, 2094, 4229, 5787, 2534, 112, 5748, 135,
+ 1554, 4145, 110, 3317, 3268, 730, 2781, 5033, 892, 4221,
+ 4229, 2213, 4231, 4060, 4229, -2667, 1700, 5894, 1260, 5765,
+ 2095, 1273, 2549, 2550, 2551, 4229, -3458, 1343, 945, 107,
+ 1696, 3243, 3244, 5444, 3970, 1433, 6074, 2385, 1697, 2545,
+ -2667, 728, -2524, 68, -2525, 2452, -2683, 1698, 2167, 2849,
+ 2095, 68, -492, 6129, 2167, 6131, 6132, 1655, 1696, 4558,
+ 668, -115, 3005, -115, 1722, 5678, 1697, 3778, 2849, 1423,
+ 1363, -2683, 1673, 4346, 5608, 1698, -3397, 4041, -1887, 4002,
+ 4482, -1030, 744, 4617, 2849, -2812, 2225, 2336, 2908, 1884,
+ 2909, -3398, 1677, 5611, 1673, 5612, -119, -2684, -119, 1411,
+ -390, 2442, 2849, 2889, 1760, 1725, 1726, 1727, 1728, 1729,
+ 1730, 4989, 4990, 1769, 4991, 4599, 890, 2532, 5431, 4600,
+ 4306, 1783, -2684, 3375, 2297, 4874, 2849, 3000, 1696, 3891,
+ -2685, 2175, 2849, 2095, 5008, 1411, 1697, 1411, -111, -3462,
+ -111, 1423, 2183, 2377, 1694, 1698, 6072, 2849, 3368, 1691,
+ 2849, 1693, 1817, 4306, 6239, -2685, 6190, 6191, 1411, 5669,
+ 1784, 2910, 2473, 2911, 3380, 2095, 2849, 6197, 2849, 2822,
+ 5217, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 2849, 1411,
+ 1411, 1186, 4804, 3107, 1348, 5982, 1380, 1411, 2849, 1320,
+ -3461, 1195, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730,
+ 5297, 4036, 2900, 4053, 1190, 1699, 2992, 801, 661, 6142,
+ 1411, 1500, 3857, 1531, 5760, 4591, 5762, 658, 1696, 5130,
+ -3459, 1411, -3460, 1191, 5756, 2979, 1697, 2980, 5323, 6228,
+ 1192, 3031, 2366, 1699, 801, 1698, 1549, 2939, -3465, 677,
+ 1974, 2919, 4974, 801, 5731, 3804, 801, 3805, 4307, 5737,
+ 5738, 801, 1200, 661, 3307, 660, 1187, 2427, 1723, 1724,
+ 1725, 1726, 1727, 1728, 1729, 1730, 835, 1725, 1726, 1727,
+ 1728, 1729, 1730, -2698, 2059, 3889, 3927, 4874, 2465, 1881,
+ -1887, 1696, 801, 4915, 3088, 4257, 4666, 4258, 2167, 1697,
+ -3294, 4506, -1962, 830, 4982, 830, 5983, 892, 1698, 3089,
+ 3798, 836, 2007, 1699, 4666, 5160, 838, 1348, 1807, 5162,
+ 1919, 813, 1700, 1789, 4647, 5294, 5294, 2428, 1348, 1348,
+ 1867, 3928, 786, 2609, 1825, 3779, 3779, 786, 786, 3779,
+ 3779, 1264, -3491, 945, 1372, 3779, 3779, 6229, 4236, 2887,
+ 1700, 1884, 4236, 4318, 1920, 4319, 5016, 3918, 2448, 3263,
+ 2711, 744, 3875, 1930, 1855, 2064, 1727, 1728, 1729, 1730,
+ 4073, 699, 4556, -2690, 3308, 1944, 3916, 786, 1943, 3842,
+ 3746, 3309, 1696, 660, 3941, 943, 2593, 3310, -2512, 1374,
+ 1697, 3040, 32, 3929, 5607, 2048, 2512, 1716, 1956, 1698,
+ 2441, 943, 2815, 1699, 2712, 1364, 1193, 4966, 2497, 2068,
+ 4969, 5766, 3130, 2612, 1696, 4925, 4942, 5663, 890, 1411,
+ 1700, 786, 1983, 2518, -2117, -2117, 4469, 3082, 1691, 4811,
+ 1693, 1698, 4527, 5829, 5183, 5079, 3930, 699, 2049, 1170,
+ 6056, 2894, 2006, 39, 3103, 4970, 4530, 5158, 3108, 169,
+ 630, 5869, 41, 4545, 2714, 1959, 1960, 5080, 4824, 2895,
+ 2030, 814, 3311, 3044, 3045, 6227, 1699, -3491, 5675, 2023,
+ 5677, 2023, 2023, 2048, 3269, 2915, 3272, 3273, 815, 169,
+ 4069, 2039, 2040, 1396, 2043, 816, 112, 817, 135, 3086,
+ 4084, 110, 2053, 818, 2863, -1847, 1908, 2904, 3831, 4482,
+ 1857, 4919, 6271, 786, 892, 801, 3390, 1924, 2199, 4648,
+ 1700, 6252, 4106, 793, 786, 3232, 2049, 786, 107, 3320,
+ 3948, 3233, 2233, 6322, 6230, 3312, 2574, 700, 786, 2802,
+ 2803, 1812, 786, -1274, 2103, 1389, 2440, 1518, 6231, 4124,
+ 3817, 3820, 3823, 3824, 4926, 2113, 4511, 4512, 801, 3173,
+ 801, 786, 2804, 1858, 3810, 3811, 5985, 1699, 6001, 6005,
+ -3294, 4515, 4516, 2659, 4619, 2660, 4476, 1523, -1962, 3836,
+ 5597, 5599, 1870, 1700, 4916, 704, 6194, 1877, 1288, 2638,
+ 2639, 801, 2841, 4926, 3803, 2818, 3806, 801, 2649, 2650,
+ 2651, 3897, 4229, 700, 1390, 2835, 4362, 1407, 3931, 3932,
+ 3933, 4972, 3890, 2429, 6323, 2329, 2330, 2166, 837, 4482,
+ 1528, 2177, 6051, 6253, 2836, 4770, 4374, 1365, 1882, 744,
+ 4377, 2837, 923, 1144, 6050, 3264, 1518, 3712, 4047, 1879,
+ 2209, 943, 1808, 943, 4074, 943, 943, 786, 801, 903,
+ 3240, 3240, 943, 2843, 3321, 943, 3032, 5759, 1826, 6069,
+ -1847, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 2073,
+ 4725, 1363, 4725, 4088, 1700, 4090, 4091, 1696, 1372, 3402,
+ -3491, 4096, 1373, 6212, 1696, 1697, 4107, 2409, 112, 4104,
+ 3188, 1196, 1697, 4112, 1698, 4115, 1691, 2746, 1693, 3120,
+ 661, 1698, 2575, 3121, 6001, 3123, 1700, -1887, 6005, 4546,
+ 5830, 3319, 1718, 3041, 3983, 5067, 5664, 890, 4670, 3128,
+ 2513, 1802, 170, 1374, 4639, 4640, 3891, 4117, 1375, 1696,
+ 3053, 3054, 3136, 3137, 3013, 6055, 4874, 1697, 1986, 6251,
+ 1922, 1719, 1720, 1696, 1214, 786, 1698, 2519, 4920, 786,
+ 1696, 1697, 4070, 2057, 1696, 786, 5184, 838, 1697, 2378,
+ 1698, 1376, 1697, 2701, 2069, 3401, 2359, 1698, 171, 6148,
+ 853, 1698, 3876, 2499, 2500, 3009, 2502, 2504, 2505, 2506,
+ 6288, 6195, 2099, 1519, 2099, 112, 3946, 2555, 2515, 4108,
+ 2367, 4927, 1696, 2854, 5134, 4119, 1813, 1524, 171, 3877,
+ 1697, 2862, 1917, 2905, 1987, 1721, 2530, 699, 1377, 1698,
+ 3320, 1253, 1696, 2430, 2998, 1988, 5081, 801, 661, 2414,
+ 1697, -1847, -1887, 1989, 2434, 5931, 5920, 3383, 1696, 1698,
+ 4927, 2906, 1851, 676, 1529, 786, 1697, 2210, 1696, 801,
+ 801, 3809, 4952, 1696, 1880, 1698, 1697, 801, 2466, 4262,
+ 1990, 1697, 1699, 904, 6254, 1698, 3189, 3323, 6232, 1699,
+ 1698, 5665, -1887, 2171, 2598, 6085, 1803, 1508, 6089, 2483,
+ 2089, 3188, 1519, 3161, 2095, 5831, 943, 793, 793, 786,
+ 793, 793, 793, 793, 786, 801, 786, 3077, 3162, 5458,
+ 1722, 6214, 793, 2643, 2646, 5364, 3896, 1587, 1588, 1589,
+ 3072, 2912, 6001, 6005, 1699, 2631, 1991, 1936, 2066, 2529,
+ 793, 2535, 801, 2523, 890, 5826, 2637, 4403, 1699, 3073,
+ 5828, 2331, 174, 175, 2332, 1699, 3074, -950, 5256, 1699,
+ 4874, 68, 1520, 786, 1992, 3321, 5804, 4482, 5269, 5270,
+ 4482, 1696, 1636, 4859, 1918, 786, 3936, 1696, 3079, 1697,
+ 2647, 2648, 1696, 1696, 1696, 1697, 2524, 2682, 1698, 1700,
+ 1697, 1697, 1697, 700, 1698, 5917, 1700, 1699, -1274, 1698,
+ 1698, 1698, 2702, 5380, 5091, 2617, 1549, 3919, 6113, 2048,
+ 3190, 830, 6115, 692, 2067, 2337, 3050, 1699, 945, 2341,
+ 1549, 2922, 5880, 1821, 801, 2347, 5881, 4953, 1348, 5405,
+ 3145, 6318, 1373, 1699, 1348, 892, 5789, 3322, 830, 786,
+ 2726, 1700, 1696, 1699, 2614, 2171, 1822, 5932, 1699, 1348,
+ 1697, 5832, 2049, -1887, 1509, 1700, 945, 3187, 2095, 1698,
+ 5135, 3440, 1700, 2618, 5477, 801, 1700, 3189, 3282, 3283,
+ 2172, 3858, 2633, 706, 801, 801, 801, 5786, 1375, 3098,
+ 786, 2023, 2924, 1418, 793, 793, 3269, 3862, 5698, 945,
+ 5881, 4482, 1852, 5701, 3871, 3872, 2059, 708, 786, 5496,
+ 2798, 6219, 2842, 5937, 1700, 2447, 5632, 2095, 5634, 786,
+ 786, 2116, 4744, 5639, 1696, 1937, 5586, 801, 3169, 5882,
+ 5644, 5645, 1697, 2525, 1700, 3252, 945, 945, 4389, 5787,
+ 5651, 1698, 4136, 4137, -725, 4810, 4874, 2090, 5439, 636,
+ 1700, 3860, 4986, 3986, 4814, 4815, 1699, 3990, 5604, 2501,
+ 1700, 1334, 1699, 4390, 2507, 1700, 2509, 1699, 1699, 1699,
+ 2460, 1696, 1377, 1348, 3449, 3449, 3449, 4118, 3323, 1697,
+ 801, 4993, 2059, 5438, 6319, 2923, 5007, 4531, 1698, 786,
+ 4542, 5017, 1283, 5882, 5790, 786, 4660, 2023, 4954, 2741,
+ 1853, 3190, 4121, 806, 3920, 1510, 6225, 1556, 2461, 1696,
+ 1170, 1696, 4662, 2544, 5144, 1984, 1854, 1697, 2716, 1697,
+ 786, 943, 5515, 5707, 1335, 2554, 1698, 1699, 1698, 1466,
+ 5417, 2091, 2172, 2092, 2422, 2794, 5225, 6124, 5883, 5225,
+ 3324, 3891, 5981, 699, 2801, 786, 786, 1696, 1696, 5482,
+ 6185, 3891, 3891, 6184, 5459, 1697, 1697, 1557, 2717, 639,
+ 2813, 2813, 1419, 1700, 1698, 1698, 2423, 3099, 5179, 1700,
+ 6140, 5313, 5325, 1294, 1700, 1700, 1700, 1284, 6075, 772,
+ 1420, 5386, 2718, 1696, 801, 5231, 4745, 2799, 786, 1696,
+ 6161, 1697, 6163, 2202, 2442, 2718, 4692, 1697, 786, 1699,
+ 1698, 1696, 5883, 6110, 2857, 4004, 1698, 4958, 4959, 1697,
+ 3221, 5736, 773, 3222, 4210, 2866, 856, 6154, 1698, 3230,
+ 5314, 1558, 3433, 2093, 4901, 714, 4211, 5648, 1696, 5982,
+ 2641, 5722, 2106, 1285, 1700, 3427, 1697, 3077, 4559, 5232,
+ 2424, 4027, 3177, 3178, 746, 1698, 1699, 4694, 1363, 5418,
+ 3072, 5638, 2215, 4668, 3428, 1295, 5226, 1549, 4005, 1363,
+ 1363, 3429, 3718, 2462, 3440, 6125, 3718, 5371, 112, 3073,
+ 2167, 1336, 3382, 2898, 4874, 2054, 3074, 5243, 3731, 6213,
+ 5796, 3719, 5871, 3435, 1699, 3719, 1699, 3027, 3720, 3736,
+ 3737, 892, 3720, 1559, 2998, 4960, 749, 2094, 3079, 700,
+ 3969, 1696, 3849, 1696, 6032, 4695, 1700, 3078, 6162, 1697,
+ 3727, 1697, 1469, 2719, 3727, 6155, 1696, 4028, 1698, 3179,
+ 1698, 2425, 1699, 1699, 1697, 2720, 1423, 5708, 5709, 2734,
+ 4551, 4552, 4553, 1698, 4317, 2737, 4320, 4229, 5233, 1696,
+ 5983, 4229, 6126, 1696, 4902, 890, 3772, 1697, 5243, 744,
+ 5721, 1697, 774, 1700, 4622, 4625, 1698, 4628, 1699, 4560,
+ 1698, 2881, 2409, 3776, 1699, 786, 5315, 5798, 747, 786,
+ 2928, 1696, 4961, 4764, 5749, 4394, 1699, 2929, 4690, 1697,
+ 4664, 4691, 2987, 1703, 1704, 1705, 3234, 1706, 1698, 5239,
+ 5239, 1700, 2694, 1700, 2202, 6245, 6243, 6243, 4665, 794,
+ 2812, 2812, -598, 1699, 945, 1214, 5234, 1723, 1724, 1725,
+ 1726, 1727, 1728, 1729, 1730, 6187, 1691, 3833, 1693, 3115,
+ 2925, 795, 3891, 5930, 3116, 2721, 5001, 5710, 2827, 1700,
+ 1700, 2202, 4695, 3119, 2907, 6279, 2937, 2389, 1531, 3122,
+ 1696, 1696, 5943, 2949, 1696, 797, 5157, 2954, 1697, 1697,
+ 4062, 4063, 1697, 2276, 4064, 4065, 4066, 1698, 1698, 1193,
+ 4469, 1698, 3153, 1186, 1186, 1700, 3891, 5328, 801, 801,
+ 5352, 1700, 5353, 1195, 1195, 801, 1699, 5002, 1699, 2813,
+ 2813, 5001, 2202, 1700, 3069, 2955, 1190, 1190, 2695, 5561,
+ 2279, 1699, 801, 6246, 801, 2722, 3161, 3093, 3094, 5711,
+ 6235, 5192, 5193, 2926, 1707, 1191, 1191, 1696, 4555, 2849,
+ 1700, 3162, 1192, 1192, 1699, 1697, 4667, 4674, 1699, 5825,
+ 4676, 2958, 3114, 793, 1698, 1620, 1348, 4680, 793, 2950,
+ 1348, 3117, 5002, 2390, 1200, 1200, 2959, 793, 1187, 1187,
+ 6277, 2295, 3124, 793, 1637, 1638, 1699, 3025, 6247, 2391,
+ 1737, 3161, 4825, 2202, 3277, 3026, 159, 4029, 4030, 4112,
+ 4032, 4034, 4998, 3219, 3440, 6234, 3162, 1696, 5984, 2696,
+ 786, 3227, 3229, 5264, 6298, 1697, -723, 811, 2007, 1696,
+ 4783, 1578, 1746, 1700, 1698, 1700, 1867, 1697, 3790, 945,
+ 5985, 1696, 801, 3156, 786, 820, 1698, 5940, 1700, 1697,
+ 4476, 4971, 3791, 6311, 5874, 2970, 5876, 1696, 1698, 2974,
+ 4608, 3127, 2316, 830, 822, 1699, 1699, 4609, 5265, 1699,
+ 2392, 1700, 786, 5003, 1698, 1700, 4999, 3186, -914, 3183,
+ -914, -723, 5000, 786, 2975, 2663, 1140, 680, 174, 175,
+ 2978, 2664, 686, 2665, 1146, 2985, 3455, 3738, 945, 1246,
+ 174, 175, 704, 1700, 636, 834, 2044, 1348, 844, 3210,
+ 2907, 5048, 945, 3215, 3216, 786, 637, 793, 2059, 2059,
+ 6312, 6313, 5167, 3236, 786, 3228, 793, 3237, 5060, 786,
+ 5853, 4660, 1699, 5064, 1696, 786, 3025, 5266, 5360, 5993,
+ 846, 890, 1697, 906, 4807, 1170, 1122, 4662, 5822, 5361,
+ 786, 1698, 3434, 945, 3250, 3980, 1120, 5885, 2006, 3255,
+ 1696, 5885, 945, 945, 945, 4383, 2666, 3078, 1697, 2812,
+ 2812, 2134, 1700, 1700, 4779, 5282, 1700, 1698, 4781, 3723,
+ 5284, 4221, 3281, 3723, 2849, 4986, 4732, 4733, 2023, -2686,
+ 3288, 6011, 1699, 4532, 1138, 1696, -2356, 4224, -2356, 6135,
+ 6136, 5239, 1696, 1697, 1699, 670, 943, 801, 4430, 4225,
+ 1697, 1248, 1698, 786, 639, 4752, 1699, 1987, 1935, 1698,
+ 4831, 4666, 1250, 5379, 1940, 1941, 5841, 4255, 1988, 4221,
+ 4772, 1769, 4776, 1769, 1696, 1259, 2673, -2692, 2792, 1700,
+ 4986, 1264, 1697, 4375, 943, 4376, 4943, 3718, 4226, 4790,
+ 1696, 1698, 2816, 4944, 2817, 4945, -2694, 5410, 1697, 1269,
+ 3135, 4388, 3374, 4347, 786, 1272, 3719, 1698, 5853, 4629,
+ 786, 801, 801, 3720, 4256, 4802, 1278, 943, 2723, 3458,
+ 1696, 1696, 2723, 801, 3158, 1696, 1696, 1281, 1697, 1697,
+ 2839, 1290, 4226, 1697, 1697, 3727, 1292, 1698, 1698, 1700,
+ -2700, 6102, 1698, 1698, 6105, 5885, 5689, 1299, 4221, 1699,
+ 1696, 1700, 4271, 4221, 943, 943, -2703, 1301, 1697, 2674,
+ 1696, -2706, 5885, 1700, 1696, 5505, 5506, 1698, 1697, 1315,
+ 699, 1696, 1697, 5205, 4221, 1699, 2913, 1698, 2274, 1697,
+ 3007, 1698, -2707, 765, 3069, 1712, 1319, 1992, 1698, 1696,
+ 4273, 4295, 4720, 641, 1696, 3217, 4721, 1697, 4722, 1325,
+ 4723, 801, 1697, 801, 3226, 2956, 1698, 2957, 1696, 1363,
+ 1699, 1698, 1486, -914, 4221, 1363, 1697, 1699, 1321, 1696,
+ 5007, 4221, -2708, 1696, 1328, 1698, 4296, 1697, 1330, -2710,
+ 1363, 1697, 5151, 2045, 1331, 5004, 1698, 4221, 1369, 3444,
+ 1698, 3445, 2953, 1196, 1196, -2711, 5194, 1313, 1314, 1699,
+ 1317, 1696, 1318, 6291, 6293, 4664, 1700, 174, 175, 1697,
+ 2029, 5087, 1405, 2031, 2031, 1699, 1407, 744, 1698, 2961,
+ 1417, 1574, 1487, 4665, 4239, 1488, 2757, 2758, 1415, 945,
+ 1214, 1713, 1700, 3994, 1305, 3995, 945, 1306, 1307, 1427,
+ 5004, 2770, 1308, 2772, 1431, 1699, 1699, 1714, 1831, 3903,
+ 1699, 1699, 1489, 5885, 3789, 4652, 1437, 5842, 5714, 1439,
+ 4921, 1490, 4720, 4385, 5843, 5089, 4721, 1700, 4726, 1305,
+ 4723, 806, 1306, 1307, 1700, 1699, 700, 1569, 112, 5844,
+ 4138, 4139, 4140, 3813, 1691, 1699, 1693, 1438, 4050, 1699,
+ 4051, 1449, 2962, 5113, 1363, 5005, 1699, 5116, 4536, 4537,
+ 3381, -2279, 4538, 4539, 5124, 5274, 1700, 2964, 4540, 4541,
+ 4279, 786, 2957, 4282, 1699, 1884, 801, 801, 1715, 1699,
+ 5049, 1444, 1700, 5879, 174, 175, 1457, 1402, 10, 4820,
+ 2965, 1452, 5786, 1699, 2968, 1469, 2773, 2774, 5427, 1483,
+ 2452, 2452, 2350, 2351, 1699, 699, 801, 5436, 1699, 1485,
+ 5005, 5885, 1700, 1700, 1708, 1709, 1710, 1700, 1700, 4286,
+ 1481, 1884, 2969, 699, 1423, 1423, 4287, 1491, 4288, 112,
+ 3882, 135, 3884, 3807, 110, 1493, 1699, 17, 1712, 6094,
+ 6095, -2307, 1700, 3967, 5787, 4019, 1494, 1769, 5247, 5250,
+ 5252, 5254, 1700, 5633, 5257, 5258, 1700, 1495, 4290, 5262,
+ 4291, 107, 5268, 1700, 2359, 5272, 5845, 153, 5247, 4611,
+ 5646, 4612, 5283, 5247, 1392, 1393, 786, 2409, 1769, 5846,
+ 4784, 1700, 1884, 5655, 1496, 5657, 1700, 5053, -3445, 5054,
+ -2307, 2973, 2976, 4316, 1497, 2983, 5847, 1696, 4062, 4063,
+ 1700, -3447, 4064, 4065, 4066, 1697, 4818, 4440, 5055, 5204,
+ 5056, 1700, -3444, 4054, 1698, 1700, -3446, 2885, 2205, 2206,
+ 3943, 5057, 5138, 5058, 5140, -950, 1504, 2216, 1696, 1986,
+ 1505, 1423, 943, 5152, 1713, 1884, 1697, 1506, 2219, 2220,
+ 2221, 32, 2222, 1700, 2223, 1698, 2224, 793, 4469, 5165,
+ 1714, 5166, 5173, 1507, 1884, 786, 1511, 2277, 2995, 2280,
+ 1512, 700, 5998, 5185, 3723, 5186, 5209, 786, 5210, 4808,
+ 4809, 786, 1348, 1348, 2293, 2294, 2296, 801, 5229, 700,
+ 5230, 2299, 2300, 37, 5182, 2414, 5351, 1513, 3995, 2317,
+ 5880, 5452, 39, 5453, -2307, 1987, 945, 5454, 5456, 5453,
+ 5457, 41, 5518, 5666, 4392, 5667, 1988, 801, 801, 1514,
+ 5686, 2447, 5603, 1515, 1989, 42, 1832, 5719, 4250, 5720,
+ -2309, 1715, 4622, 1235, 4625, 1516, 4628, 4043, 4044, 4045,
+ 4046, 1517, 4048, 4049, 5982, 5725, -2307, 5720, 5848, 5098,
+ 1527, 1990, 4259, 801, 1555, -2307, 5098, 5726, 5772, 5720,
+ 3995, 5773, -3702, 3995, -2307, 5275, 4666, 5276, 5881, 4077,
+ 1833, 5923, 1834, 5924, 1560, 5953, 6349, 5954, -2307, -2309,
+ 4092, 4093, 1699, 4095, 1561, 4097, 4098, 4099, 4100, 4101,
+ 4102, 4103, 5962, 4105, 5963, 1575, 5397, 4114, 4476, 1631,
+ 5997, 5277, 4051, 6122, 4911, 6123, 5145, 1991, 786, 6157,
+ 1576, 4843, 5450, 1699, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 1577, 3912, 943, 2040, 801,
+ 801, 5278, 1582, 3449, 786, 1992, 1583, 4650, 4651, 1584,
+ 2219, 2220, 5288, 1585, 5289, 4260, 5290, 4153, 5291, 1586,
+ 5484, 634, 3406, 3407, 1590, 5983, 3408, 1592, 3409, 4681,
+ 3410, 5882, 1835, 1663, 6158, 4684, 5186, 2023, 6170, 1593,
+ 6171, 4261, 4753, 3292, 4693, 1594, 4697, 4698, 4699, 1595,
+ 4701, 4702, 6179, -2309, 6180, 4754, 943, 5437, 1596, 1700,
+ 4706, 4707, 4708, 4709, 4710, 5495, 6196, 1597, 5720, 772,
+ 943, 4755, 5673, -1334, 1598, 3979, 4266, -1334, 635, 6198,
+ 1986, 5720, 1836, 4267, 993, 1732, 6199, 1363, 5720, 4660,
+ 1700, 1363, 963, 964, 1599, -2309, 967, 1716, 969, 2818,
+ 971, 4756, 773, 4661, -2309, 4662, -1675, 6226, 5420, 5720,
+ 3431, 943, 6236, -2309, 5720, 4268, 1667, 6259, -1334, 5186,
+ 943, 943, 943, -1334, 4378, 4379, 1733, -2309, 4380, 1837,
+ 4381, 4269, 4382, 6335, 5279, 6336, 4641, 3722, 4643, 1600,
+ 5883, 3722, 1601, 5077, 1602, 4469, 1987, 636, 1603, 1606,
+ 1607, 5879, 174, 175, 4831, 1608, -1334, 1988, 1615, 637,
+ -1674, 4270, 4278, 1013, 1616, 1989, 4284, 4285, 5280, 4943,
+ 1617, 6284, 6285, 699, 1618, 6286, 4944, 6287, 4945, 2452,
+ 4757, 5084, 5879, 174, 175, 1621, -750, 1622, 1623, 1624,
+ 1734, 4293, 1990, 1625, 1626, 1627, 1628, 1629, 1630, 5821,
+ 5096, 4294, 4513, 1423, 699, 4297, 5895, 1632, 1735, 5101,
+ 1633, 1736, 4740, 1634, 1635, 5103, 1639, 1640, 1363, 1838,
+ 1641, 3293, 638, 1642, 1643, 5117, 4743, 1644, 1645, 4654,
+ 5150, 1646, 5896, 5126, 5127, 5156, 4659, 5895, 1647, 4675,
+ 3718, 4758, 774, 1839, 4144, 1648, 4679, 1649, 1991, 5168,
+ 1650, 1651, 1027, 1652, 5717, 1653, 1308, 639, 1656, 3719,
+ 5169, 1657, 4469, 5896, 5690, 1658, 3720, 3294, 1659, 1660,
+ 1661, 1662, 1664, 1665, 3027, 5985, 1992, 1666, 1668, 1669,
+ 1670, 1671, 1674, 5841, 699, 4476, 1675, 4785, 3727, 1678,
+ 1740, -2540, 5868, -950, 1679, 4880, 4881, 4882, 4883, 4884,
+ 4885, 4886, 4887, 4888, 4889, 1680, 4891, 4892, 4893, 4894,
+ 4895, 4896, 4897, 4898, 772, 4899, 4900, 1738, -1334, 4904,
+ 4905, 1744, -1334, 1681, -950, 750, 1682, 5771, 1683, 700,
+ 5879, 174, 175, 1684, 5897, 1739, 5898, -2526, 4663, 4173,
+ 1716, 5855, -2527, 1745, 1753, 3295, 1754, 773, 1755, -3547,
+ 68, 1756, 699, 1761, 1787, 4759, 4760, 1788, 5880, 170,
+ 700, 1193, 1193, -1334, 1809, 5897, 751, 5898, -1334, 640,
+ 1790, 1828, 5489, 4664, 5696, 1827, 1829, 1830, 1696, 1849,
+ 1850, 1859, 752, 1862, 5702, 5895, 1697, 1863, 1872, 5880,
+ 1884, 4665, 1916, 4299, 1926, 1698, 641, 943, 1214, 1928,
+ 5884, -1334, 4476, -2307, 943, 1932, 1946, 5858, 3296, 1938,
+ 1939, 5896, 1945, 5864, 5865, 5009, 1948, 1950, 1954, 1971,
+ 5019, 1154, 1972, 4652, 3297, 3298, 5881, 1973, 1984, 3299,
+ 3300, 3301, 1975, 1995, 4337, 2716, 1996, 1999, 2009, 2025,
+ 700, 2015, 2237, 2238, 2239, 2240, 1791, 2026, 801, 2036,
+ 786, 2051, 2055, 2058, 4354, 801, 801, 5881, 4355, 2070,
+ 2074, 4358, 4359, 2080, 2086, 5652, 2100, 4493, 5204, 2104,
+ 2106, 2110, -950, 2947, 1696, 2717, 2112, 2119, 2124, 5899,
+ 1155, 2122, 1697, 2126, 2127, 2129, 2128, 774, 2241, 2242,
+ 2243, 1698, 2248, 2131, 2132, 2156, 3831, 3302, 2917, 753,
+ 2164, 2920, 2176, 3449, 4761, 4762, 2178, 2179, 700, 945,
+ 5899, 2180, 2718, 5897, 2654, 5898, 2184, 2932, -2079, 5882,
+ 4409, 112, 112, 2185, 5842, 2187, 1696, -1334, 2188, 2190,
+ 754, 5843, 2200, 2201, 1697, -73, 2202, 5880, 2951, 2244,
+ 2245, 2211, 2218, 1698, 1696, 2232, 5844, 2273, 2260, 3303,
+ 5882, 2274, 1697, 1699, 2275, 6043, 2286, 2288, 2291, 2249,
+ 786, 1698, 801, 945, 4280, 786, 786, 2292, -2279, 3760,
+ 4496, 793, 1792, 4636, 2301, 158, 2355, 642, 2340, -1887,
+ -1887, 2344, -2309, 2384, 1793, 5077, 734, 735, 156, 2365,
+ 2388, -1887, 2369, 786, 786, 643, 5616, 5617, 5900, 5619,
+ 4522, 2415, 5397, 2246, 2416, 5881, 2443, 2444, 961, 962,
+ 963, 964, 965, 966, 967, 968, 969, 970, 971, 2449,
+ -3000, 3762, 2450, 736, 2456, 2250, 2166, 2251, 5883, 2467,
+ 2719, 2472, 2475, 2252, 2494, 2495, 2496, 2521, 1156, 1794,
+ 1157, 945, 2720, 644, 3433, 4602, 2536, 1795, 2538, 1699,
+ 159, 1158, 2537, 2539, -1887, 2548, 2542, 3427, 5899, 5883,
+ 1700, 1696, 737, 2541, 4763, 5819, 2247, 1159, 2543, 1697,
+ 645, -2129, 3722, 5845, 2558, 2561, 3428, 5490, 1698, 646,
+ 5491, 2562, 1796, 3429, 6111, 2564, 5846, 2567, 2568, 2569,
+ 4348, 2570, -1887, 2253, 5676, 5514, -1887, 2577, 5882, 2578,
+ -1887, 1699, 2587, 5847, 943, 3435, 2588, 3723, 993, -1887,
+ -1887, 2589, 2590, 2591, 5696, 2595, -1887, 2592, 2594, 1699,
+ -1887, 2601, 2602, 5245, 4631, -1887, 157, -1887, 5075, 2605,
+ 5078, -1887, 2610, 2606, 1320, 5261, 2615, 2254, 2621, -1887,
+ 5088, -1887, 2721, 1696, 2624, 1696, -1887, 2629, 2652, 2669,
+ 4469, 1697, 2655, 1697, 112, 4272, 1700, 944, 5099, 2656,
+ 1698, 2248, 1698, 4283, 4666, 2657, -1887, 2658, -3580, 2661,
+ 5104, 2670, -1334, 944, 2671, 2679, -1887, 2683, 1194, -1887,
+ 2684, 4469, 2686, 2687, 6027, 2699, 5125, 1013, 2703, 2700,
+ 2704, 2715, 2729, 5901, 1797, -2551, 2730, 2738, 2739, -1887,
+ 4438, 2743, 1696, 2745, 2744, 4443, 4444, 5883, 1700, 2749,
+ 1697, 2780, 2722, 2784, 2789, 2790, 1376, 4715, -1887, 1698,
+ 2795, 1798, -1887, 4719, 5901, 2796, 1700, 2797, 2249, 2805,
+ 1235, -1887, 2255, 1363, 1363, 2808, 1699, 738, 158, 2828,
+ 3764, 2855, 2856, 2256, 2858, 5848, 2874, 2877, 1160, 2879,
+ -1887, 2880, 2882, 2891, 739, 2892, 2893, 2896, 2897, 5779,
+ 2899, 5780, 5781, 2907, 2918, -1887, 2914, 2989, 2921, 3433,
+ 2930, -1887, -1887, 2931, 2933, 3019, 1027, 2934, 2963, -1475,
+ 740, 755, 3427, 2935, 2966, -1887, 2936, -1887, 5884, 2940,
+ 4476, 2948, 2977, 2952, 2250, -2079, 2251, 2938, 5964, -166,
+ 2960, 3428, 2252, 2967, 2971, 4775, 2972, -725, 3429, 1986,
+ 4984, 2981, 3006, 159, 2982, 2984, 2988, 3012, 1699, 5884,
+ 1699, 4476, 1730, 741, 2994, 2999, -1640, 3021, 3031, 4469,
+ 3435, 3038, 3022, 4354, 5382, 3043, -3580, 4355, 3023, 1654,
+ 3024, 1672, 1676, 1700, 3046, 3048, 3049, 644, 3051, 3052,
+ 4337, 3055, 6183, 4805, 801, 3113, 6261, 4806, 3059, 6340,
+ 3081, -725, 2253, 160, 751, 3060, 3061, 3097, 3100, 3101,
+ 3102, 3105, 5901, 3109, 756, 1987, 3110, 1699, 3125, 3129,
+ 3161, 4019, 3139, 3142, 3143, 3149, 1988, 1986, 3167, 5488,
+ 3166, 2359, 6068, 3195, 1989, 3162, 5489, 3197, 3198, 3199,
+ 4832, 3202, 3203, 944, 5588, 944, 2254, 944, 944, 4841,
+ 4833, 3235, 3242, 112, 944, 3246, 1799, 944, 5238, 3260,
+ 3440, 1990, 3267, 3271, 4054, 1700, 4433, 1700, 2757, 2758,
+ 3275, 3247, -1887, 3279, 6167, 3278, 6096, 3284, 3285, 3286,
+ 3287, 3289, 3290, 2770, 786, 2772, 3291, 3328, 3331, 3433,
+ 4875, 3334, 4985, 1987, 786, 1161, 1162, 1163, 1164, 3343,
+ -725, 3338, 3427, 3344, 1988, 3345, 3718, 5884, 3376, 4476,
+ 3346, 3347, 1989, 3348, 3349, 3350, 3351, 1991, 4903, 3352,
+ 3353, 3428, 6175, 5065, 1700, 3719, 3373, 6348, 3429, 3354,
+ 3355, 3356, 3720, 3377, 3357, 1800, 3358, 753, 3359, 1990,
+ 3370, 2255, 3360, 3361, 1801, 1992, 3389, 3362, 5043, 4517,
+ 3435, 3394, 2256, 3363, 3727, 3364, 3391, 3365, 3366, 2095,
+ 3379, 3367, 3392, 3395, 3434, 3250, 3393, 3248, -725, 3403,
+ 3399, 3404, 5370, 3412, 2414, 3405, 3733, 2409, 2773, 2774,
+ 3734, 945, -1683, 3732, 3748, 3814, 1769, 3749, 4975, 1696,
+ -1887, 3441, 3755, 3747, 801, 1991, 3768, 1697, 161, 5684,
+ 3787, 3788, 162, 3800, 3799, 3801, 1698, 3828, 3815, 3827,
+ 6167, 3829, 961, 962, 963, 964, 965, 966, 967, 968,
+ 969, 970, 971, 1992, 3032, 3839, 3433, 3837, 3843, 3845,
+ 3846, 3847, 4434, 4435, 3850, 4413, 3851, 3863, 1986, 5566,
+ 1123, 3855, 4875, 3864, 3856, 5487, 2478, 2477, 2237, 2238,
+ 2239, 2240, 793, 3894, 3908, 2849, 6175, 5047, 5567, 4986,
+ -725, 3909, 2817, 4984, 3917, 5568, 112, 3915, 3923, 3944,
+ 3949, 3955, 3924, 3957, 3959, 3960, 3961, 163, 944, 3984,
+ 3985, 3988, 3989, 4012, 4057, 4016, -3580, 5572, 112, -2032,
+ 5066, 4025, 4026, 110, 2241, 2242, 2243, 4058, 4059, 4075,
+ 4079, 4085, 6240, 3718, 1987, 4086, 4087, 801, 4089, 4122,
+ 2793, 6329, 993, 4126, -725, 1988, 801, 751, 4133, 4134,
+ 4128, 4146, 3719, 1989, 4855, 6339, 4209, 4212, 4213, 3720,
+ 4218, 6329, 4221, 3161, 4879, 3718, 4233, 4226, 6339, 4230,
+ 5108, 5490, 4234, 4243, 5491, 2244, 2245, 4414, 3162, 4240,
+ 1990, 3727, 1124, 5693, 3719, 4415, 4244, 4245, 4246, 4289,
+ 1125, 3720, 4301, 4331, 1699, 4315, -1887, 4300, 4311, 4312,
+ 4416, 5220, 4323, 4325, 4340, 1126, 4326, 943, 4327, 2167,
+ 4417, 4418, 4419, 3727, 4328, 1127, 1128, 1129, 4341, 3434,
+ 4420, 1013, 4329, 4330, 5810, 1130, 4338, -1887, 4342, -1887,
+ 4344, 4345, -1887, -1887, 4349, 4364, 1991, 5263, 4365, 2246,
+ 4393, 4373, 4412, -725, 4386, 4392, 4391, 4431, 4404, 4410,
+ 4432, 4439, 4442, 5533, 4491, 4500, -1799, 5538, 5539, -1804,
+ 4525, 943, 4528, 4544, 1992, 4520, 4549, 4562, 4337, 4534,
+ 4529, 4607, 4684, 4615, 4535, 4632, 4633, 4638, 4657, 4646,
+ 753, 4693, 4652, 4697, 4698, 4699, 4701, 4702, 4678, 4685,
+ 4712, 4713, 5375, 5376, 4700, 5378, 4727, 4731, 4734, 4987,
+ 5383, 1700, 2247, 5387, 4737, 4735, 5390, 5391, 4746, 2359,
+ 1027, -725, 4747, 4777, 5399, 112, 5400, 2991, 4409, 4306,
+ 5201, 5214, 5215, 5216, 4786, 5406, 4002, 4788, 4789, 4792,
+ 4794, 801, 4793, 4798, 4875, 2427, 5228, 5385, 4843, 943,
+ 41, 4848, 4812, 4847, 4813, 4826, 4842, 4850, 4849, 4851,
+ 4856, 786, 4852, 4853, 4876, 4878, 4602, 4890, 4421, 5259,
+ 5260, 4573, 4877, 1131, 4918, 4935, 4938, 801, 4940, 5273,
+ 4422, 4948, -262, 4950, 2411, 1132, 4964, 4977, 4978, 4979,
+ 5011, 4986, 5295, 5021, 4995, 5022, 5296, 4997, 5305, 5010,
+ 5020, 5024, 5027, 5023, 5025, 5028, 5029, 2248, 5030, 3434,
+ 5031, 5038, 4986, 3723, 5077, 3722, 6308, 5045, 5041, 4988,
+ 5052, 5341, 5305, 944, 5044, 5061, 5062, 5068, 5069, 5072,
+ 4705, 5074, 5094, 5488, 5102, 5110, 5105, 5119, 5122, 5132,
+ 5489, 5136, 5153, 5137, 5138, 5139, 5141, 5154, 2409, 5142,
+ 5140, 5155, 5149, 5159, 5161, 5164, 5171, 5174, 5180, 5172,
+ 5188, 5196, 5198, 5199, 5206, 4423, 5200, 5207, 5211, 4875,
+ 5218, 5317, 5221, 5222, 2249, 5322, 5243, 5334, 5343, 5344,
+ 4424, 5345, 4841, 4841, 786, 1133, 5348, 5355, 5350, 5356,
+ 6053, 5357, 5358, 5365, 5393, 5366, 2359, 5367, 5377, 5368,
+ 5373, 5371, 5384, 786, 5403, 5388, 5389, 4073, 5421, 4841,
+ 5423, 5447, 5425, 5394, 5443, 5448, 4841, 5445, 5462, 5475,
+ 4425, 4875, 5461, 5404, 5474, 1134, 5422, 5476, 5478, 5480,
+ 5407, 5481, 5408, 5409, 4426, 5483, 5429, 5486, 6216, 1135,
+ 2250, 5500, 2251, 5497, 5512, 5513, 5571, 5522, 2252, 5517,
+ 5526, 5523, 5529, 5530, 5531, 5534, 5574, 5730, 112, 5576,
+ 5578, 5581, 5446, 788, 5582, 5587, 5589, 5970, 5971, 5592,
+ 5973, 5974, 5975, 5976, 5594, 5596, 5613, 3718, 801, 5603,
+ 5471, 5609, 5618, 5610, 5620, 5621, 5623, 5636, 5226, 174,
+ 175, 5642, 5625, 174, 175, 5643, 3719, 5647, 5653, 5000,
+ 5658, 5244, 5682, 3720, 5230, 5670, 5685, 5697, 2253, 5734,
+ 3723, 5688, 5691, 5472, 5698, 5699, 945, 5305, 5692, 5704,
+ 5718, 5231, 4987, 5701, 5722, 3727, 5715, 1887, 5724, 5751,
+ 5728, 1887, 945, -3693, 5752, -2688, 5783, 5793, 5785, -2687,
+ 6036, -2691, 3723, -2701, -2705, 5803, 5794, 5812, 5740, 5795,
+ 5811, 5761, 2254, -378, 5801, -3688, -3686, -3690, 5802, -3684,
+ -3689, -3687, -3685, 5744, 5763, 5782, 5808, 5813, 5820, 5823,
+ 5827, 5836, 5504, 5837, 5840, 5860, 5861, 5866, 5872, 4447,
+ 6036, 5908, 5926, 5922, 4832, 5511, 5911, 5927, 5928, 5934,
+ 5929, 5935, 4841, 5640, 6090, 5936, 5939, 6093, 5948, 5951,
+ 5955, 5959, 5952, 5521, 5965, 6101, 5521, 5521, 6104, 5969,
+ 6344, 5527, 5972, 5977, 6008, 4875, 5980, 5994, 5996, 6014,
+ 6020, 6016, 6018, 5537, 5381, 6019, 5575, 6022, 5573, 6024,
+ 6026, 6025, 4988, 6039, 6040, 6041, 6042, 1769, 6076, 6083,
+ 6112, 6047, 5577, 5401, 6098, 5490, 6117, 2255, 5491, 6119,
+ 6127, 6138, 6120, 6133, 6130, -2524, -2525, 5492, 2256, 6146,
+ 6147, 1194, 6149, 6153, 6139, 6144, 6156, 6164, 6159, 4575,
+ 3252, 945, 6160, 4570, 6189, 6186, 6200, 6207, 6192, 6211,
+ 6275, 6201, 6217, -1887, -1887, 6215, 6036, 6220, 6262, 5305,
+ 6274, 4602, 6276, 6265, 6270, -1887, 6278, 6283, 6295, 6299,
+ 6290, 6300, 6301, 5591, 6303, 5593, 6306, 6307, 6309, 6304,
+ 6305, 6315, 6330, 3874, 4116, 6316, 5433, 3165, 5863, 5435,
+ 5434, 5627, 3964, 5629, 6343, 4543, 5590, 5914, 6049, 6209,
+ 2166, 1337, 3431, 3250, 1342, 3250, 1338, 5473, 5583, 5915,
+ 1888, 2056, 5679, 5455, 1888, 5750, 5687, 5824, 5324, 943,
+ 5129, 660, 2435, 4428, 4215, 3176, 4130, 2747, -1887, 2867,
+ 5631, 4875, 4841, 4875, 4718, 1451, 2869, 801, 4875, 2868,
+ 4841, 5747, 5746, 5628, 5580, 4875, 4875, 5034, 4589, 4841,
+ 5649, 5499, 4797, 4803, 5650, 4875, 5181, 6082, 3036, 5705,
+ 6169, 4875, 4841, 6264, 4841, 6224, -1887, 5979, 3280, 5703,
+ -1887, 5032, 5659, 5374, -1887, 6341, 5910, 5528, 5037, 945,
+ 2046, 5237, 1117, -1887, -1887, 5754, 5416, 6244, 5630, 6137,
+ 6070, 6141, 6059, 6060, -1887, 6061, 6062, 4728, 4765, -1887,
+ 786, -1887, 4669, 4711, 6080, -1887, 6143, 5085, 5463, 4782,
+ 4303, 4780, 5108, -1887, 6269, -1887, 5681, 4778, 758, 759,
+ -1887, 6237, 5870, 6238, 3956, 6109, 6116, 1117, 6114, 5788,
+ 5100, 5626, 5624, 4441, 5414, 5035, 945, 2157, 2065, 2625,
+ -1887, 3942, 5946, 3940, 6078, 5792, 3337, 4143, 2782, 3844,
+ -1887, 3157, 1567, -1887, 3400, 4645, 1889, 787, 2034, 3901,
+ 1889, 3802, 1371, 1985, 2033, 4015, 5063, 5764, 2359, 3852,
+ 1890, 4791, 1891, -1887, 1890, 2353, 1891, 5521, 3771, 4333,
+ 3769, 5727, 3822, 2412, 4253, 1758, 5146, 2272, 5732, 786,
+ 3819, 2208, -1887, 4875, 4875, 2262, -1887, 6210, 6057, 1614,
+ 6294, 6292, 5354, 6065, 1892, -1887, 2675, 2678, 1892, 4823,
+ 1977, 6066, 5615, 5208, 3723, 1978, 2668, 1893, 2217, 4322,
+ 3262, 1893, 4011, 1979, -1887, 1980, 4968, 3431, 944, 2689,
+ 1982, 786, 4967, 4321, 5494, 5958, 5800, 5305, 5195, -1887,
+ 5485, 112, 4018, 5148, 4014, 2042, -1887, 2028, 5507, 1394,
+ 1894, 4771, 4973, 3254, 1894, 769, 760, 2788, 5305, -1887,
+ 2102, -1887, 1256, 1869, 5770, 2820, 944, 3398, 1895, 4644,
+ 4836, 5716, 1895, 4040, 5213, 1695, 4822, 4819, 6260, 1462,
+ 3131, 2527, 1467, 1240, 1241, 3132, 3895, 1243, 3170, 4875,
+ 5745, 2035, 5516, 6263, 4649, 4875, 2613, 5797, 2162, 944,
+ 5359, 6296, 2359, 5622, 6342, 5471, 6346, 3146, 5509, 3396,
+ 1570, 4841, 2840, 3453, 3886, 3883, 3887, 1198, 3879, 3888,
+ 2409, 3096, 5814, 5818, 2873, 1199, 3880, 2852, 2635, 4363,
+ 2455, 1752, 1773, 1153, 3848, 4550, 944, 944, 5472, 2150,
+ 5674, 4976, 3958, 3327, 5671, 5071, 1896, 1289, 4603, 778,
+ 1896, 762, 1931, 1897, 2151, 763, 764, 1897, 4497, 5835,
+ 3225, 5893, 1550, 1898, 4642, 5893, 6151, 1898, 5330, 4216,
+ 4775, 2870, 5342, 5331, 1568, 5521, 5327, 1899, 1775, 5326,
+ 0, 1899, 0, 5867, 0, 4875, 0, 0, 0, 0,
+ 1117, 0, 945, 945, 1117, 0, 0, 0, 0, 5907,
+ 0, 0, 0, 0, 0, 0, 5912, 3431, 0, 1900,
+ 0, 3722, 1901, 1900, 0, 0, 1901, 1117, 0, 0,
+ 2409, 1568, 0, 0, 0, 0, 1117, 0, 0, 5733,
+ 1902, 0, 0, 0, 1902, 0, 0, 0, 4875, 0,
+ 0, 0, 0, 0, 0, 0, 661, 0, 786, 0,
+ 801, 0, 0, 0, 0, 0, 5942, 4875, 786, 0,
+ 0, 1903, 0, 0, 0, 1903, 0, 1915, 0, 2750,
+ 0, 0, 5941, 0, 0, 0, 0, 0, 5957, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1117, 1117, 1117, 1117, 0, 0, 1568, 0, 0,
+ 0, 6097, 0, 2751, 1117, 0, 0, 0, 0, 5893,
+ 0, 0, 0, 0, 0, 0, 5995, 0, 0, 0,
+ 0, 6007, 0, 0, -1887, 0, 5893, 6013, 0, 0,
+ 0, 0, 0, 6021, 0, 0, 0, 0, 0, 0,
+ 2752, 0, 0, 0, 5570, 0, 0, 0, 0, 0,
+ 801, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6046, 0, 786, 2024,
+ 0, 0, 2024, 0, 0, 0, 0, 0, 0, 5770,
+ 0, 0, 0, 4409, 4409, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1568, 0, 0, 0, 0, 0, 0, 3076, 3722, 5818,
+ 0, 0, 0, 0, 943, 0, 0, 0, 5835, 0,
+ 0, 6091, 6092, 0, 0, 0, 6182, 744, 0, 0,
+ 943, 801, 0, 6103, 0, 0, 0, 0, 0, 0,
+ 3722, 0, 6208, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6118, 0, 0, 0, 5893, 0, 0,
+ 0, 5521, 4602, 5521, 5521, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1117, 0, 0, 5938, 1568,
+ 0, 0, 0, 0, 1691, 0, 1693, 0, 5944, 0,
+ -1887, 0, 6145, 6223, 944, 0, 0, 0, 0, 0,
+ 2154, 0, 0, 2167, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1887, 0, -1887, 2359, 0, -1887, -1887, 0, 0,
+ 0, 6176, 0, 0, 6177, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 801, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5893, 0, 0, 0, 943,
+ 4602, 0, 0, 0, 5521, 5521, 0, 0, 6193, 0,
+ 0, 0, 0, 0, 0, 5521, 0, 0, 0, 1614,
+ 0, 1568, 0, 0, 1568, 0, 0, 0, 0, 6206,
+ 0, 0, 0, 0, 2271, 1614, 0, 945, 6048, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5893, 5893, 0, 0, 0,
+ 0, 0, 0, 801, 0, 0, 0, 0, 0, 0,
+ 6347, 0, 2753, 0, 0, 6332, 0, 5521, 0, 0,
+ 6334, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1117, 6249, 0, 5893, 1117, 0, 0, 0, 0,
+ 2359, 0, 2754, 2755, 0, 2756, 2757, 2758, 2759, 2760,
+ 0, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 944,
+ 2769, 2770, 2771, 2772, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 943, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1568, 2420, 0, 0, 0, 0, 0, 0,
+ 1614, 1117, 0, 1117, 0, 0, 0, 0, 944, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 944, 0, 943, 0, 0, 0, 0, 0,
+ 0, 2359, 0, 0, 0, 801, 0, 0, 0, 0,
+ 801, 2487, 0, 0, 0, 2359, 2773, 2774, 0, 1117,
+ 1117, 2359, 0, 0, 0, 1117, 0, 0, 2359, 1117,
+ 1117, 1117, 3432, 944, 0, 0, 0, 0, 0, 1117,
+ 1117, 1568, 944, 944, 944, 1117, 0, 3076, 0, 1117,
+ 1117, 1117, 0, 1117, 1117, 1117, 1568, 1568, 0, 0,
+ 0, 0, 0, 1117, 942, 1117, 0, 0, 1117, 1117,
+ 1117, 1117, 3722, 1117, 0, 1117, 1117, 0, 0, 0,
+ 942, 0, 0, 0, 0, 0, 0, 0, 0, 1117,
+ 1117, 1117, 1117, 1117, 0, 1117, 1117, 1117, 1117, 1117,
+ 1117, 0, 1117, 1117, 0, 1117, 1117, 0, 1117, 1117,
+ 0, 0, 1117, 1117, 0, 1117, 1117, 0, 1117, 0,
+ 1117, 0, 0, 0, 1117, 1117, 1117, 0, 0, 1117,
+ 1117, 1117, 1117, 0, 1117, 1614, 0, 0, 0, 0,
+ 0, 1117, 0, 0, 0, 0, 0, 1117, 1117, 1117,
+ 1117, 0, 0, 0, 0, 0, 0, 0, 1117, 1117,
+ 0, 1117, 1117, 0, 0, 1117, 1117, 1117, 1117, 1117,
+ 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 0, 0,
+ 1117, 0, 0, 0, 0, 1568, 0, 0, 0, 0,
+ 0, 0, 1568, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1568, 0, 0, 0, 0, 0, 2024,
+ 0, 2698, 0, 0, 0, 0, 0, 0, 0, 0,
+ 943, 943, 0, 0, 0, 1, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1194, 1194, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 942, 0, 942, 0, 942, 942, 5, 0, 6, 944,
+ 7, 942, 8, 0, 942, 0, 944, 0, 0, 0,
+ 9, 1117, 0, 1117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 0, 11, 12, 0, 0, 1568, 0, 0,
+ 13, 0, 0, 0, 0, 0, 0, 0, 1117, 0,
+ 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,
+ 0, 15, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 20, 0, 2875, 0, 21, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 1117, 0, 0, 0, 0,
+ 0, 1568, 0, 1568, 0, 0, 23, 24, 0, 0,
+ 859, 0, 0, 0, 0, 0, 0, 25, 26, 0,
+ 0, 0, 0, 1117, 0, 0, 0, 0, 0, 27,
+ 28, 29, 0, 30, 0, 0, 0, 0, 31, 1614,
+ 2916, 0, 860, 0, 32, 0, 0, 0, 33, 34,
+ 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 862, 0, 0, 0, 0, 0, 0,
+ 0, 0, 863, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 36, 942, 37, 0, 38, 0,
+ 0, 0, 0, 864, 0, 39, 0, 0, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 865, 0, 0,
+ 0, 0, 866, 0, 0, 0, 0, 0, 42, 0,
+ 0, 2986, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3001, 867, 0, 0, 0, 0,
+ 43, 44, 0, 45, 0, 1117, 0, 0, 0, 0,
+ 46, 0, 0, 0, 0, 0, 0, 0, 47, 0,
+ 0, 0, 0, 0, 0, 0, 944, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1568, 1117, 0,
+ 0, 0, 0, 0, 868, 0, 1117, 1117, 869, 0,
+ 0, 0, 49, 0, 0, 943, 0, 0, 0, 0,
+ 0, 0, 50, 0, 0, 0, 870, 0, 0, 0,
+ 871, 872, 0, 0, 3058, 0, 0, 0, 0, 0,
+ 0, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1775, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+ 1117, 873, 0, 0, 0, 0, 0, 53, 874, 875,
+ 54, 1568, 1568, 55, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1117, 1117, 1117, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2137, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1118, 0, 0, 2154, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1568, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1117, 0, 2138, 1568, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1915, 1915, 0, 0, 1118,
+ 0, 1117, 0, 0, 0, 1117, 1117, 0, 1117, 1117,
+ 0, 0, 0, 0, 0, 0, 0, 1117, 0, 1117,
+ 942, 0, 57, 0, 0, 0, 0, 0, 2139, 0,
+ 0, 0, 0, 2140, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2141, 2142, 0, 0, 0, 0,
+ 1117, 58, 0, 0, 0, 59, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 60, 0, 0, 0, 0,
+ 0, 0, 0, 61, 0, 0, 1117, 0, 0, 0,
+ 0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
+ 0, 0, 1568, 0, 2024, 0, 2024, 2024, 3274, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 0,
+ 0, 64, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0,
+ 0, 0, 1117, 0, 0, 0, 0, 0, 0, 1568,
+ 67, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2143,
+ 0, 0, 0, 68, 0, 0, 0, 0, 0, 2144,
+ 0, 0, 2154, 0, 0, 0, 0, 1568, 1568, 0,
+ 2145, 0, 0, 0, 0, 0, 2146, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2147, 0, 0,
+ 0, 2148, 1118, 0, 0, 0, 1118, 0, 0, 0,
+ 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118,
+ 0, 0, 2149, 0, 0, 0, 0, 0, 1118, 0,
+ 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1568, 0, 1568, 1568,
+ 1568, 0, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1117, 0, 1118, 1118, 1118, 1118, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1118, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3825, 0, 0, 0, 0, 0, 0, 0, 944,
+ 0, 0, 0, 0, 1568, 0, 0, 0, 1614, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4447, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 944, 0, 0, 0, 0, 0, 0,
+ 0, 1117, 0, 0, 0, 1117, 0, 0, 1117, 0,
+ 0, 0, 0, 0, 0, 0, 2487, 1117, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1117, 0, 1117, 1117,
+ 0, 1117, 1117, 1117, 1117, 0, 1117, 0, 1117, 1117,
+ 0, 1117, 0, 0, 0, 0, 0, 0, 0, 1117,
+ 1117, 0, 0, 0, 1117, 1117, 1117, 0, 2044, 0,
+ 0, 0, 0, 0, 1117, 1117, 1117, 1118, 1117, 0,
+ 1117, 944, 1117, 0, 1117, 0, 1117, 0, 0, 0,
+ 0, 1117, 1117, 0, 1117, 1117, 1117, 0, 0, 0,
+ 1117, 0, 0, 1117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1117, 0, 4448, 1117, 0, 1117, 1117, 1117,
+ 0, 0, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1117, 0, 1117, 0, 0, 1117,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1117,
+ 1117, 1117, 1117, 1568, 1117, 0, 0, 0, 0, 1117,
+ 0, 0, 0, 0, 0, 942, 0, 0, 0, 0,
+ 1568, 0, 0, 0, 4450, 0, 2024, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 942, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4451, 4452, 4453, 0, 0, 942, 0, 1568, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 1118, 0, 2838,
+ 0, 4454, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1117, 0, 942, 942, 0, 0, 0, 0, 0,
+ 0, 0, 2024, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4455, 0, 4456, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 1118, 0, 4457, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4458, 0, 0, 0, 0,
+ 0, 0, 4459, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1117, 0, 4460, 0, 0,
+ 0, 1118, 1118, 0, 4461, 0, 0, 1118, 0, 0,
+ 0, 1118, 1118, 1118, 0, 0, 1117, 0, 0, 4462,
+ 0, 1118, 1118, 0, 0, 0, 0, 1118, 1568, 0,
+ 0, 1118, 1118, 1118, 0, 1118, 1118, 1118, 0, 0,
+ 0, 0, 0, 0, 0, 1118, 0, 1118, 0, 0,
+ 1118, 1118, 1118, 1118, 0, 1118, 0, 1118, 1118, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1118, 1118, 1118, 1118, 4463, 1118, 1118, 1118,
+ 1118, 1118, 1118, 0, 1118, 1118, 4464, 1118, 1118, 0,
+ 1118, 1118, 0, 0, 1118, 1118, 0, 1118, 1118, 0,
+ 1118, 0, 1118, 0, 0, 0, 1118, 1118, 1118, 0,
+ 0, 1118, 1118, 1118, 1118, 0, 1118, 0, 0, 0,
+ 0, 0, 0, 1118, 4465, 0, 0, 0, 0, 1118,
+ 1118, 1118, 1118, 0, 1568, 0, 0, 4466, 0, 0,
+ 1118, 1118, 0, 1118, 1118, 0, 0, 1118, 1118, 1118,
+ 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
+ 0, 0, 1118, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3075, 0, 4467, 0, 0, 0,
+ 0, 0, 4468, 0, 3432, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1118, 0, 0,
+ 0, 944, 0, 0, 0, 0, 4469, 0, 0, 0,
+ 0, 0, 1117, 0, 0, 1117, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4447, 174, 175, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4470, 0, 0, 0, 0, 0, 0, 4471, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 942, 0, 0, 0, 0, 0, -914, 0, -914,
+ 0, 4472, 4265, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4473, 4474, 0, 0,
+ 0, 0, 0, 0, 0, 2044, 0, 0, 0, 4475,
+ 0, 0, 0, 1118, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 4298, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4476, 0, 0, 0,
+ 1118, 4448, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4357, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3432,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4450, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1118, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 942, 0, 0, 1915,
+ 0, 0, 0, 0, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4451, 4452,
+ 4453, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1117, 1117, 0, 0, 0, 1117, 0, 0, 4454, 0,
+ 0, 0, 0, 0, 1568, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 942, 0, 1117, 0, 1117,
+ 0, 1117, 0, 1117, 0, 0, 0, 0, 0, 942,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0,
+ 0, 0, 0, 0, 1568, 0, 0, 0, 0, 0,
+ 0, 0, 4455, 2024, 4456, 0, 0, 1117, 1117, 0,
+ 0, 0, 1117, 0, 1117, 0, 1117, 0, 0, 3430,
+ 942, 1117, -914, 0, 4457, 0, 0, 0, 0, 942,
+ 942, 942, 0, 0, 3075, 0, 0, 1118, 0, 3432,
+ 0, 0, 4458, 0, 0, 0, 3721, 0, 0, 4459,
+ 3721, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1568, 0, 4460, 0, 1117, 0, 0, 0,
+ 0, 4461, 0, 1117, 0, 0, 0, 0, 0, 0,
+ 1118, 0, 0, 0, 0, 0, 4462, 0, 1118, 1118,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1568, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1118, 4463, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4464, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3432, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1118, 1118, 1118, 0,
+ 0, 4465, 0, 0, 0, 0, 0, 0, 0, 1117,
+ 0, 0, 0, 0, 4466, 0, 0, 0, 0, 1117,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1117, 0, 1568, 1117, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4467, 0, 1118, 944, 0, 0, 4468,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 944, 1118, 0, 0, 0, 1118, 1118, 0,
+ 1118, 1118, 0, 4469, 0, 0, 0, 0, 0, 1118,
+ 0, 1118, 0, 0, 0, -1072, -1072, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4447, 174, 175,
+ 0, 0, 0, 0, 0, 0, 942, 4470, 0, 0,
+ 0, 0, 1118, 942, 4471, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4563, 0, 4564, 4565, 0,
+ 0, 0, 0, 0, 0, 0, 1117, 0, 1118, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4472, 4566,
+ 0, 4567, 0, 0, 0, 0, 0, 4568, 0, 0,
+ 0, 0, 0, 4473, 4474, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1118, 0, 4475, 0, 2044, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4569,
+ 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 944, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4476, 0, 0, 0, 0, 0, 0,
+ 0, 1117, 0, 0, 4448, 0, 0, 1118, 0, 0,
+ 0, 940, 0, 0, 1118, 0, 0, 0, 0, 0,
+ 0, 0, 4909, 0, 0, 0, 0, 940, 0, 0,
+ 0, 0, 4570, 1244, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1117, 1117, 0, 1117, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1117, 1117,
+ 1117, 0, 0, 4571, 0, 4572, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4450, 0, 4573, 0, 0, 0,
+ 0, 0, 1117, 1117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4574,
+ 0, 0, 0, 1119, 0, 0, 1117, 0, 0, 0,
+ 0, 0, 1118, 0, 0, 0, 0, 0, 1117, 944,
+ 0, 0, 0, 0, 0, 0, 0, 1117, 0, 0,
+ 0, 4451, 4452, 4453, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1118, 0, 0, 1119, 0,
+ 0, 4454, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3721, 0, 0, 1118, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1117, 944, 0, 0, 1117,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 942, 0, 0, 0, 4575, 0, 0,
+ 0, 0, 0, 1118, 0, 4455, 0, 4456, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4457, 0, 0,
+ 0, 0, 0, 0, 4576, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4458, 0, 0, 0, 0,
+ 0, 0, 4459, 0, 0, 0, 0, 940, 0, 940,
+ 0, 940, 940, 0, 0, 0, 0, 4460, 940, 0,
+ 0, 940, 0, 0, 4461, 0, 0, 0, 4577, 4578,
+ 0, 0, 0, 0, 0, 4579, 0, 0, 0, 4462,
+ 0, 0, 0, 0, 0, 0, 0, 4580, 0, 0,
+ 0, 0, 2024, 0, 4447, 174, 175, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4581, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 1118, 0, 0,
+ 1118, 0, 4582, 0, 0, 0, 4463, 0, 0, 1118,
+ 0, 0, 0, 0, 0, 0, 4464, -914, 1118, -914,
+ 1118, 1118, 0, 1118, 1118, 1118, 1118, 0, 1118, 0,
+ 1118, 1118, 3825, 1118, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1118, 0, 0, 2044, 1118, 1118, 1118, 0,
+ 0, 1117, 1117, 0, 4465, 0, 1118, 1118, 1118, 0,
+ 1118, 0, 1118, 0, 1118, 0, 1118, 4466, 1118, 4583,
+ 0, 1119, 0, 1118, 1118, 1119, 1118, 1118, 1118, 0,
+ 0, 0, 1118, 0, 0, 1118, 0, 0, 0, 0,
+ 0, 4448, 944, 944, 1118, 0, 0, 1118, 1119, 1118,
+ 1118, 1118, 0, 0, 1118, 0, 4467, 1119, 0, 0,
+ 0, 0, 4468, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1118, 0, 1118, 0,
+ 0, 1118, 0, 0, 0, 0, 4469, 4584, 0, 0,
+ 0, 1118, 1118, 1118, 1118, 0, 1118, 0, 4585, 4586,
+ 4587, 1118, 940, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4450, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4470, 0, 1119, 1119, 1119, 1119, 0, 4471, 0, 0,
+ 0, 1117, 0, 0, 1568, 1119, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1118, 4472, 0, 0, 0, 0, 0, 0, 4451, 4452,
+ 4453, 0, 0, 0, 0, 0, 4473, 4474, 0, 0,
+ 0, 0, 0, 0, 0, 1117, 0, 0, 4454, 4475,
+ 0, 0, 0, 4588, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1568, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4476, 0, 0, 1907,
+ 0, 0, 0, 0, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 4455, 0, 4456, 0, 1117, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1072,
+ 0, 0, -914, 0, 4457, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4458, 0, 0, 0, 0, 0, 0, 4459,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4460, 0, 0, 1118, 0, 0,
+ 0, 4461, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4462, 0, 1118, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1117, 0, 1117, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4463, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4464, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 940, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4465, 0, 0, 0, 0, 942, 0, 0, 0,
+ 0, 0, 0, 0, 4466, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 944, 1117, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4467, 0, 0, 0, 0, 0, 4468,
+ 942, 0, 1119, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4469, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1118, 0, 0, 1118, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4470, 1117, 0,
+ 0, 0, 0, 0, 4471, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 942, 0,
+ 0, 1117, 1119, 0, 1119, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4472, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4473, 4474, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4475, 0, 0, 0,
+ 1119, 1119, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 1119, 1119, 1119, 0, 3721, 0, 0, 0, 0, 0,
+ 1119, 1119, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 1119, 1119, 1119, 4476, 1119, 1119, 1119, 0, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 1119, 0, 0, 1119,
+ 1119, 1119, 1119, 0, 1119, 0, 1119, 1119, 0, 0,
+ 0, 0, 0, 2154, 0, 0, 0, 0, 0, 0,
+ 1119, 1119, 1119, 1119, 1119, 0, 1119, 1119, 1119, 1119,
+ 1119, 1119, 0, 1119, 1119, 0, 1119, 1119, 0, 1119,
+ 1119, 0, 0, 1119, 1119, 0, 1119, 1119, 0, 1119,
+ 0, 1119, 0, 0, 0, 1119, 1119, 1119, 0, 0,
+ 1119, 1119, 1119, 1119, 0, 1119, 0, 0, 0, 0,
+ 0, 0, 1119, 0, 0, 0, 0, 0, 1119, 1119,
+ 1119, 1119, 0, 0, 0, 0, 0, 0, 0, 1119,
+ 1119, 0, 1119, 1119, 0, 0, 1119, 1119, 1119, 1119,
+ 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 0,
+ 0, 1119, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1118, 1118, 0, 0, 0, 1118, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118,
+ 0, 1118, 0, 1118, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1118, 0, 0, 0, 0, 0, 1117, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118,
+ 1118, 0, 0, 1117, 1118, 0, 1118, 0, 1118, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0,
+ 0, 4445, 0, 4446, 0, 0, 0, 1117, 4447, 174,
+ 175, 0, 0, 0, 0, 1568, 0, 0, 0, 0,
+ 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1117, 0, 1118, 0,
+ 0, 0, 1119, 0, 1119, 1118, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -914, 0, -914, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1119,
+ 0, 0, 1118, 0, 0, 0, 0, 0, 0, 2044,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4448, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 940, 0, 0, 0, 0, 4449, 0, 0,
+ 0, 3430, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 1118, 0, 0, 0, 0, 1117, 0, 942, 0,
+ 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0,
+ 940, 0, 0, 0, 1119, 1118, 0, 0, 1118, 0,
+ 0, 0, 0, 0, 0, 4450, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 940, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4149, 4150, 2832, 0, 0, 4151,
+ 4152, 0, 0, 0, 0, 0, 0, 0, 0, 4153,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 940, 940, 4451, 4452, 4453, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4154, 0, 0, 0, 0, 0,
+ 0, 0, 4454, 0, 0, 0, 0, 4155, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4156, 0, 6058, 0, 0, 1118, 0,
+ 0, 0, 0, 0, 0, 1117, 1119, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4158, 0, 0, 4455, 0, 4456, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4159, 4160, 4161, 0, -914, 0, 4457, 1119,
+ 0, 0, 4162, 4163, 4164, 0, 0, 1119, 1119, 0,
+ 0, 0, 0, 0, 0, 0, 4458, 0, 0, 0,
+ 4165, 0, 0, 4459, 0, 0, 3430, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 0, 4460, 0,
+ 0, 0, 0, 1568, 0, 4461, 0, 0, 0, 0,
+ 0, 0, 4166, 0, 0, 0, 0, 0, 0, 0,
+ 4462, 1119, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1118, 1118, 0, 1118, 0, 4168,
+ 0, 0, 0, 1568, 1083, 0, 0, 0, 0, 0,
+ 1118, 1118, 1118, 0, 0, 1117, 0, 0, 0, 0,
+ 0, 0, 4169, 4170, 4171, 1119, 1119, 1119, 0, 0,
+ 0, 0, 0, 0, 1118, 1118, 0, 4463, 0, 0,
+ 0, 0, 0, 0, 4172, 4173, 0, 4464, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1118, 0, 0, 0, 0, 0, 0, 0, 0, 1118,
+ 0, 0, 0, 0, 1119, 4465, 0, 0, 0, 0,
+ 0, 3068, 4174, 0, 4175, 4176, 0, 0, 4466, 1117,
+ 0, 0, 1119, 0, 0, 0, 1119, 1119, 0, 1119,
+ 1119, 4177, 0, 0, 0, 0, 0, 0, 1119, 0,
+ 1119, 0, 0, 0, 0, 0, 3430, 1118, 0, 0,
+ 3721, 1118, 0, 0, 0, 0, 0, 4467, 0, 0,
+ 0, 0, 0, 4468, 0, 0, 0, 4178, 4179, 0,
+ 0, 1119, 0, 1117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4469, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 940, 0,
+ 0, 0, 0, 4181, 0, 0, 0, 0, 0, 0,
+ 0, 4470, 0, 0, 0, 0, 0, 0, 4471, 0,
+ 0, 0, 0, 1119, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1907, 0, 0, 0, 0, 0, 1119,
+ 0, 0, 0, 0, 4182, 0, 0, 0, 0, 0,
+ 0, 0, 4472, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4473, 4474, 0,
+ 0, 0, 0, 5569, 0, 0, 1119, 0, 0, 0,
+ 4475, 0, 0, 1119, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1117, 0, 0, 0, 1117, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4183, 4184, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4476, 0, 0,
+ 0, 0, 4185, 4186, 0, 0, 1579, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3721, 0, 0,
+ 0, 0, 0, 942, 0, 0, 0, 0, 0, 1605,
+ 0, 0, 0, 1118, 1118, 0, 0, 0, 1619, 942,
+ 0, 0, 0, 0, 4187, 0, 0, 0, 0, 3721,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1111, 0, 0, 0, 4423, 0, 0, 0, 0,
- 0, 0, 0, 1111, 0, 0, 1111, 0, 0, 0,
- 0, 0, 1558, 0, 0, 1112, 0, 1112, 0, 0,
- 0, 0, 0, 4536, 1110, 0, 0, 0, 0, 0,
+ 0, 1119, 0, 940, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 4538, 0, 0, 0,
- 0, 0, 0, 0, 0, 4425, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1117, 0, 1692, 0, 0, 0,
+ 0, 0, 0, 1119, 0, 0, 0, 0, 0, 0,
+ 0, 0, 940, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 940, 0, 0, 0,
+ 4189, 0, 0, 4190, 0, 0, 4191, 0, 0, 0,
+ 0, 0, 1119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0,
+ 4193, 0, 0, 0, 0, 0, 3426, 940, 942, 0,
+ 0, 0, 0, 0, 0, 0, 940, 940, 940, 0,
+ 4194, 3068, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3716, 0, 0, 0, 3716, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1118, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4540, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1110, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4426, 4427, 4428, 0, 0, 0, 0, 933,
- 0, 933, 0, 933, 933, 0, 0, 1112, 0, 0,
- 933, 0, 4429, 933, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4541, 0,
- 0, 0, 0, 0, 0, 0, 4430, 0, 4431, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4432, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0,
+ 0, 0, 1119, 0, 0, 0, 1119, 0, 0, 1119,
+ 0, 0, 0, 0, 0, 0, 0, 1885, 1119, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 1119,
+ 1119, 0, 1119, 1119, 1119, 1119, 942, 1119, 0, 1119,
+ 1119, 0, 1119, 0, 0, 0, 0, 0, 0, 0,
+ 1119, 1119, 0, 0, 0, 1119, 1119, 1119, 0, 0,
+ 0, 0, 0, 0, 0, 1119, 1119, 1119, 0, 1119,
+ 0, 1119, 0, 1119, 0, 1119, 0, 1119, 0, 0,
+ 0, 0, 1119, 1119, 0, 1119, 1119, 1119, 0, 0,
+ 0, 1119, 0, 942, 1119, 0, 1118, 0, 1118, 0,
+ 0, 0, 0, 1119, 0, 0, 1119, 0, 1119, 1119,
+ 1119, 0, 0, 1119, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1119, 0, 1119, 0, 0,
+ 1119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1119, 1119, 1119, 1119, 0, 1119, 0, 0, 0, 0,
+ 1119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3721, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 940, 0, 0, 0, 0, 0, 0,
+ 940, 0, 0, 2078, 0, 0, 0, 2083, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1118, 0, 0, 0, 0, 0, 0, 0, 0, 1119,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1119, 2160, 0, 2160, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 0, 0, 0, 0,
+ 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 2207, 0, 0,
+ 0, 2212, 0, 2214, 0, 0, 0, 0, 0, 0,
+ 0, 2229, 2230, 0, 0, 0, 0, 2259, 0, 942,
+ 942, 2264, 2265, 2266, 0, 2268, 2269, 2270, 0, 0,
+ 0, 0, 0, 0, 0, 2278, 1119, 2281, 0, 0,
+ 2282, 2283, 2284, 2285, 0, 0, 0, 2289, 2290, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
+ 0, 2302, 2303, 2310, 2314, 2315, 0, 2318, 2319, 2320,
+ 2323, 2324, 0, 0, 2327, 2328, 0, 2334, 2335, 0,
+ 2338, 2339, 0, 0, 0, 2343, 0, 2345, 2346, 0,
+ 2348, 0, 2349, 0, 0, 0, 2352, 2310, 2354, 0,
+ 0, 2360, 0, 2362, 2363, 0, 2364, 0, 0, 0,
+ 0, 0, 0, 2368, 0, 0, 0, 0, 0, 2370,
+ 2371, 2372, 0, 0, 0, 0, 0, 0, 3716, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 940, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2468, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1119, 0, 0, 1119, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4433, 0, 0, 0,
- 0, 0, 0, 4434, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4435, 0,
- 0, 0, 0, 0, 0, 4436, 0, 0, 0, 4543,
- 0, 0, 0, 0, 0, 1110, 4545, 0, 0, 1110,
- 4437, 1111, 1111, 0, 0, 0, 1111, 0, 0, 0,
- 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1111, 4547,
- 1111, 0, 1111, 0, 1111, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1111,
- 0, 0, 0, 1112, 0, 0, 0, 4438, 0, 0,
- 0, 1112, 1112, 0, 0, 0, 0, 4439, 1111, 1111,
- 0, 0, 0, 1111, 0, 1111, 0, 1111, 0, 0,
- 0, 0, 1111, 0, 933, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4440, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 4441, 0,
- 4549, 0, 0, 0, 0, 0, 1110, 0, 0, 1111,
+ 0, 0, 0, 0, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 0, 2579, 0, 2584, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1118,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1111, 0, 0, 0, 1111, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4442, 0, 1112,
- 1112, 1112, 0, 4443, 0, 1111, 0, 0, 0, 0,
+ 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0,
+ 2607, 0, 0, 0, 0, 0, 0, 0, 1118, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1897, 0, 0, 0, 0, 0, 0, 1112, 0,
- 0, 4444, 0, 0, 0, 0, 0, 0, 4445, 0,
- 0, 0, 0, 0, 0, 0, 1112, 0, 0, 0,
- 1112, 1112, 0, 1112, 1112, 0, 0, 1111, 0, 0,
- 0, 0, 1112, 0, 1112, 0, 0, 1111, 0, 0,
- 4446, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1111, 0, 0, 1111, 4447, 4448, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 4449, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1112, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1112, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2685, 0, 0,
+ 0, 0, 0, 0, 942, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 933, 0, 0,
+ 1, 0, 0, 0, 0, 2709, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1112, 0, 0, 0, 0, 0, 0, 1112, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1118, 0,
+ 4447, 174, 175, 3, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 6, 0, 7, 0, 8, 5411, 0,
+ 4564, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 1119, 1119, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 0, 4566, 0, 0, 0, 10, 0, 11, 12,
+ 5412, 0, 0, 0, 0, 13, 0, 0, 1119, 0,
+ 1119, 0, 1119, 0, 1119, 0, 0, 0, 0, 0,
+ 0, 2044, 14, 0, 0, 0, 15, 2821, 0, 1119,
+ 0, 0, 5413, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 17, 0, 0, 1119, 1119,
+ 0, 0, 0, 1119, 0, 1119, 18, 1119, 0, 0,
+ 0, 0, 1119, 0, 0, 0, 19, 4448, 20, 0,
+ 2876, 0, 21, 0, 0, 0, 0, 1118, 2883, 2884,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4570, 0, 0, 0, 22,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
+ 0, 23, 24, 0, 1119, 0, 0, 0, 0, 0,
+ 4489, 4489, 25, 26, 0, 0, 0, 0, 4572, 0,
+ 0, 0, 2903, 0, 27, 28, 29, 4450, 30, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 32,
+ 0, 1119, 0, 33, 34, 35, 0, 0, 0, 0,
+ 0, 0, 4574, 0, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2942, 2944, 2946, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
+ 0, 37, 0, 38, 4451, 4452, 4453, 0, 0, 0,
+ 39, 0, 0, 0, 0, 1118, 0, 0, 40, 41,
+ 0, 0, 0, 0, 4454, 0, 0, 1118, 0, 0,
+ 0, 0, 0, 42, 0, 0, 0, 0, 0, 0,
+ 4489, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1119, 0, 0, 940, 0, 43, 44, 0, 45, 0,
+ 1119, 0, 0, 3008, 0, 46, 0, 0, 0, 0,
+ 4575, 0, 0, 47, 1119, 0, 0, 1119, 4455, 3016,
+ 4456, 3017, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
+ 4457, 0, 0, 0, 0, 0, 0, 940, 0, 0,
+ 0, 1118, 3042, 0, 0, 0, 0, 49, 4458, 0,
+ 0, 0, 0, 0, 0, 4459, 0, 50, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3056, 0,
+ 4460, 0, 0, 0, 0, 0, 51, 4461, 0, 0,
+ 0, 4577, 0, 0, 0, 0, 0, 0, 4579, 0,
+ 0, 52, 4462, 0, 0, 1118, 0, 0, 0, 0,
+ 0, 0, 53, 0, 3112, 54, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 940, 0, 1119, 0, 0,
+ 3118, 4581, 0, 56, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4463,
+ 0, 0, 0, 0, 0, 0, 0, 3138, 0, 4464,
+ 0, 0, 0, 0, 2584, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3716, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4465, 0, 0,
+ 0, 0, 1119, 0, 0, 0, 0, 0, 0, 0,
+ 4466, 0, 4583, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1118, 0, 0, 0, 1118,
+ 0, 0, 0, 0, 0, 0, 0, 57, 0, 0,
+ 0, 0, 0, 1119, 1119, 0, 1119, 0, 0, 4467,
+ 0, 0, 0, 0, 0, 4468, 0, 0, 0, 1119,
+ 1119, 1119, 3231, 0, 0, 0, 58, 0, 0, 0,
+ 59, 0, 0, 0, 0, 0, 0, 0, 0, 4469,
+ 60, 0, 0, 1119, 1119, 0, 0, 0, 61, 0,
+ 0, 0, 0, 0, 0, 3256, 0, 0, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
+ 0, 0, 0, 4470, 3256, 0, 0, 0, 0, 1119,
+ 4471, 0, 0, 63, 0, 0, 64, 0, 1119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3340, 4472, 0, 1118, 0, 0, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 4473,
+ 4474, 0, 0, 0, 0, 0, 1119, 0, 0, 4489,
+ 1119, 0, 4475, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 4476,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3454, 0, 0, 0, 3456, 0, 4489,
+ 3457, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3735, 0,
+ 0, 0, 0, 3739, 3740, 3741, 3742, 0, 3743, 0,
+ 3744, 3745, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3750, 3751, 0, 0, 0, 3752, 3753, 3754, 0,
+ 0, 0, 0, 0, 0, 0, 3756, 3757, 3758, 0,
+ 3759, 0, 3761, 0, 3763, 0, 3765, 0, 3767, 0,
+ 0, 0, 0, 2320, 3770, 0, 2320, 0, 3773, 0,
+ 0, 0, 3774, 0, 0, 3775, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3782, 0, 3783,
+ 3784, 3785, 1119, 1119, 3786, 0, 0, 0, 3426, 0,
+ 0, 0, 0, 0, 0, 0, 0, 174, 175, 0,
+ 0, 0, 0, 0, 0, 940, 0, 0, 0, 0,
+ 0, 3808, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3818, 3821, 0, 1201, 3826, 1202, 0, 0,
+ 0, 0, 0, 0, 0, 667, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 1170,
+ 0, 0, 0, 0, 0, 0, 0, 1203, 1204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1205, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 11, 12, 0, 0, 0, 3, 4, 0, 0,
+ 3869, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 7, 0,
+ 8, 0, 1119, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 1206, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1207, 0, 10,
+ 0, 11, 12, 2584, 0, 0, 0, 0, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2584, 1119, 0, 0, 15,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0,
- 0, 0, 1111, 1111, 0, 1111, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1076, 1111, 1111,
- 1111, 0, 0, 0, 0, 0, 1112, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+ 0, 0, 1208, 0, 0, 0, 0, 4489, 0, 18,
+ 4489, 0, 0, 0, 1209, 0, 0, 0, 0, 19,
+ 0, 20, 0, 3426, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1111, 1111, 0, 1112, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 23, 24, 0, 0, 4007, 1210,
+ 0, 0, 0, 0, 0, 25, 26, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 27, 28, 0,
+ 0, 30, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 32, 0, 0, 0, 33, 34, 35, 0,
+ 0, 0, 1211, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1111, 0,
- 0, 0, 0, 0, 1112, 0, 0, 1111, 0, 0,
+ 0, 4489, 1212, 0, 0, 1119, 0, 1119, 0, 0,
+ 0, 1213, 36, 0, 37, 0, 38, 0, 0, 0,
+ 0, 0, 0, 39, 1214, 0, 0, 0, 0, 0,
+ 0, 0, 41, 0, 0, 1215, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 42, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1216, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 43, 0,
+ 0, 45, 0, 3426, 0, 0, 0, 3716, 46, 0,
+ 0, 0, 0, 0, 0, 0, 47, -2279, 1217, 0,
+ 0, 1218, 0, 1219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1119,
+ 1220, 1221, 0, 0, 0, 0, 1222, 1223, 0, 0,
+ 49, 0, 0, 0, 4219, 0, 0, 4220, 0, 0,
+ 50, 0, 0, 1224, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
+ 0, 0, 0, 0, 1225, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 53, 1226, 0, 54, 0,
+ 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 56, 0, 0, 1119,
+ 5565, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1111, 0, 0,
- 0, 0, 1111, 1111, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1119, 0, 0, 0, 0, 0, 0, 0,
+ 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1228, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1229, 0, 0, 1230, 1231, 0,
+ 0, 0, 0, 0, 3716, 0, 0, 0, 0, 0,
+ 940, 0, 1232, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 940, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3716, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1233,
+ 57, 0, 0, 0, 0, 0, 0, 1234, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1111, 0, 0, 0, 1111, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -3304, 58,
+ 1235, 0, 0, 59, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 60, 0, 0, 0, 0, 0, 0,
+ 0, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 62, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -3304, 0, 0, 0, 0, 63, 0, 1236, 64,
+ 0, 0, 4248, 4249, 0, 0, 0, 4254, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 940, 0, 0, 0, 4274,
+ 0, 4275, 65, 4276, 0, 4277, 0, 0, 0, 0,
+ 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4292, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67, 4313,
+ 4314, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3256, 0, 0, 0, 0, 0, 0,
+ 0, 68, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1439, 0, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 0, 0, 4361, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1119, 940, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2584, 0, 0, 0, 0, 1119, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 1112,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 0, 0, 0, 0, 0, 0, 0, 0,
- 1112, 0, 1112, 1112, 0, 1112, 1112, 1112, 1112, 0,
- 1112, 0, 1112, 1112, 0, 1112, 0, 0, 0, 0,
- 0, 0, 0, 1112, 1112, 0, 0, 0, 1112, 1112,
- 1112, 0, 0, 0, 0, 0, 0, 0, 1112, 1112,
- 1112, 0, 1112, 0, 1112, 0, 1112, 0, 1112, 0,
- 1112, 0, 0, 0, 0, 1112, 1112, 0, 1112, 1112,
- 1112, 0, 0, 0, 1112, 0, 0, 1112, 0, 0,
- 0, 0, 0, 0, 0, 0, 1112, 0, 0, 1112,
- 0, 1112, 1112, 1112, 0, 0, 1112, 0, 1569, 0,
- 0, 0, 0, 0, 0, 0, 1111, 1111, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1112, 0,
- 1112, 1595, 0, 1112, 0, 0, 0, 0, 0, 0,
- 1609, 0, 0, 1112, 1112, 1112, 1112, 0, 1112, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 940, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 0, 0, 0, 0, 0, 0, 1682, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 1,
- 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1111, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 4, 0, 0, 0, 0, 0, 1112,
+ 0, 4519, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4489, 3256, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3256, 0, 0, 4533, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4489, 3716, 0,
+ 0, 4489, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 7, 0, 8, 0, 933, 0,
- 0, 1112, 0, 0, 9, 0, 0, 0, 0, 1111,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 10, 0, 11, 12, 0,
- 0, 0, 0, 0, 13, 0, 1111, 1111, 933, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1111,
- 1112, 0, 0, 933, 17, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 18, 2822, 0, 0, 0,
- 0, 1112, 0, 0, 0, 19, 0, 20, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1875,
- 933, 933, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 23, 24, 0, 0, 0, 0, 0, 0, 1111, 0,
- 1111, 25, 26, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 27, 28, 0, 0, 30, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 32, 0,
- 0, 0, 33, 34, 35, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 36, 0,
- 37, 1112, 38, 0, 0, 0, 0, 0, 0, 39,
- 0, 0, 0, 0, 0, 0, 0, 0, 41, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 42, 0, 0, 0, 0, 0, 0, 0,
- 0, 1111, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 43, 0, 1112, 45, 0, 0,
- 0, 0, 0, 2066, 46, 0, 0, 0, 1112, 0,
- 0, 1112, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1111, 0, 0,
- 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4637, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4489, 0,
+ 0, 0, 0, 0, 0, 0, 4489, 0, 0, 0,
+ 0, 0, 4489, 4489, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 50, 1111, 0, 0,
+ 0, 0, 0, 0, 0, 4489, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 0, 4489, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 940, 940, 0, 0,
+ 0, 0, 0, 4716, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2151, 0, 2151, 51, 0, 0, 0, 0,
- 1111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 3058, 0, 0, 0, 0, 1111, 1111, 0, 0,
- 0, 53, 0, 0, 54, 0, 0, 55, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 0, 2198, 0, 0, 0,
- 2203, 0, 2205, 0, 0, 0, 0, 0, 0, 0,
- 2220, 2221, 0, 0, 0, 0, 2250, 0, 0, 0,
- 2255, 2256, 2257, 0, 2259, 2260, 2261, 0, 0, 0,
- 0, 0, 0, 0, 2269, 0, 2272, 0, 0, 2273,
- 2274, 2275, 2276, 0, 0, 0, 2280, 2281, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 933, 0,
- 2293, 2294, 2301, 2305, 2306, 0, 2309, 2310, 2311, 2314,
- 2315, 0, 0, 2318, 2319, 0, 2325, 2326, 0, 2329,
- 2330, 0, 0, 0, 2334, 0, 2336, 2337, 0, 2339,
- 0, 2340, 0, 1897, 0, 2343, 2301, 2345, 0, 0,
- 2351, 0, 2353, 2354, 0, 2355, 57, 0, 0, 0,
- 0, 0, 2359, 0, 0, 0, 0, 0, 2361, 2362,
- 2363, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 58, 0, 0, 0, 59,
- 0, 0, 0, 0, 0, 0, 1112, 1112, 0, 60,
- 0, 1112, 0, 0, 0, 0, 0, 61, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 0, 0, 1112, 0, 1112, 0, 1112, 0, 1112,
- 0, 0, 0, 0, 0, 0, 2459, 0, 0, 0,
- 63, 0, 0, 64, 1112, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 1112, 0, 0, 0, 1112, 0,
- 1112, 0, 1112, 0, 0, 0, 65, 1112, 0, 0,
- 0, 0, 1111, 0, 0, 66, 0, 0, 0, 0,
- 0, 933, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0,
- 0, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 1111, 0, 0, 0, 1112, 0, 0, 0, 0, 0,
- 0, 0, 0, 68, 0, 1111, 0, 0, 1112, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
- 933, 0, 2570, 0, 2575, 0, 0, 0, 0, 0,
- 1112, 0, 0, 0, 0, 933, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4741, 4742, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2598,
+ 4749, 4750, 4751, 0, 1119, 0, 4489, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4489, 0,
+ 0, 0, 4489, 0, 4773, 4774, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3418, 933, 0, 0, 0,
- 0, 0, 0, 0, 0, 933, 933, 933, 0, 0,
- 3058, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3708, 0, 0, 0, 3708, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1111, 0, 0, 1112, 0, 0, 1112,
- 0, 0, 0, 0, 2674, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1119, 0, 0, 0,
+ 0, 0, 0, 4489, 0, 0, 0, 0, 0, 4796,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2698, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2584, 0, 0,
+ 0, 2584, 0, 0, 0, 0, 0, 0, 0, 4489,
+ 6188, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4489, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4489, 0, 4489, 4489, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1111, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4489, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2811, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4489, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4489, 0, 0,
+ 0, 0, 0, 0, 1119, 0, 0, 0, 1119, 0,
+ 0, 0, 0, 5039, 5040, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2866, 0, 0, 0, 0, 0, 0, 0, 2873, 2874,
- 1111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 933, 0, 0, 0,
- 0, 0, 0, 933, 0, 0, 0, 1112, 1112, 0,
- 1112, 0, 0, 0, 1111, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 1112, 1112, 1111, 0, 0, 0,
- 0, 0, 2893, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1112, 1112, 0,
+ 0, 940, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 0, 0, 0, 0, 2932, 2934, 2936, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1111, 0, 1112, 0, 0, 0, 0, 1112, 1112, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1112, 0, 0, 0,
- 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2998, 0, 0, 0, 1111, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3006,
- 0, 3007, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3032, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3046, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3085, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3085, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3106, 0, 0, 0, 0, 3708,
- 0, 0, 0, 0, 0, 0, 0, 1111, 0, 0,
- 3112, 1111, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 933, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3132, 0, 0,
- 0, 0, 0, 0, 2575, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1119, 0, 0, 0, 0,
+ 0, 0, 0, 3256, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 1112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3256, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1111, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3247, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2584, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1112, 0, 3247, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3331, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1112, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 174, 175, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 1112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1112, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 0, 5347, 0, 5349, 0,
+ 0, 0, 909, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 910, 0,
+ 0, 0, 14, 0, 0, 911, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 16, 0, 0, 912,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 913, 0, 0, 0, 0, 0, 0, 0,
+ 914, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 915, 916, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3446, 0, 0, 0, 3448, 0, 0, 3449,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 0, 1112, 0, 3727, 0, 0,
- 0, 0, 3731, 3732, 3733, 3734, 0, 3735, 0, 3736,
- 3737, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3742, 3743, 0, 0, 0, 3744, 3745, 3746, 0, 0,
- 0, 0, 0, 0, 0, 3748, 3749, 3750, 0, 3751,
- 0, 3753, 0, 3755, 0, 3757, 0, 3759, 0, 0,
- 0, 0, 2311, 3762, 0, 2311, 0, 3765, 0, 0,
- 0, 3766, 0, 0, 3767, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3774, 0, 3775, 3776,
- 3777, 0, 0, 3778, 0, 0, 0, 0, 0, 0,
+ 5479, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1112, 0, 0, 0,
- 3800, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3810, 3813, 0, 0, 3818, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4460, 4460, 0, 0, 0,
+ 0, 0, 0, 3256, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 40, 0,
+ 0, 0, 0, 185, 186, 187, 917, 189, 0, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 0, 206, 207, 208,
+ 209, 210, 211, 212, 213, 0, 918, 0, 0, 217,
+ 218, 219, 220, 221, 0, 0, 224, 225, 226, 227,
+ 228, 0, 0, 0, 232, 233, 234, 235, 236, 919,
+ 238, 239, 240, 241, 0, 0, 0, 0, 0, 0,
+ 247, 0, 249, 0, 251, 252, 0, 254, 255, 256,
+ 257, 258, 259, 0, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 0, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 0, 284, 285,
+ 286, 287, 0, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 0, 0, 0, 303, 0, 920,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 0, 0, 0, 0, 0, 319, 320, 921, 322,
+ 323, 324, 0, 326, 327, 0, 329, 330, 0, 0,
+ 332, 0, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 0, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 0, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 0, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 922, 5680, 0,
+ 440, 0, 442, 443, 0, 445, 446, 447, 448, 0,
+ 450, 451, 452, 453, 0, 3256, 0, 0, 458, 459,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 0, 485, 0, 487, 488, 489,
+ 0, 491, 492, 2584, 494, 495, 496, 497, 498, 499,
+ 0, 501, 502, 503, 504, 505, 506, 507, 5729, 509,
+ 510, 511, 0, 513, 514, 515, 516, 0, 518, 519,
+ 0, 0, 522, 523, 0, 0, 526, 527, 528, 0,
+ 530, 0, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 0, 541, 542, 0, 544, 0, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 0,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 0,
+ 577, 578, 0, 580, 581, 582, 583, 0, 0, 586,
+ 587, 0, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 0, 0,
+ 607, 608, 0, 0, 610, 0, 612, 613, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3851, 0,
+ 0, 5683, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 3085, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 1112, 0, 0, 0, 0, 0, 4460, 0,
- 0, 0, 0, 0, 0, 0, 2575, 0, 0, 0,
- 0, 933, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2575, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 933, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3986, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 933, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5947, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3708, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4110, 0,
- 0, 0, 0, 0, 0, 0, 0, 1112, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
- 0, 0, 0, 4195, 0, 0, 0, 0, 0, 0,
- 1112, 0, 0, 0, 0, 4200, 0, 0, 4201, 0,
+ 0, 0, 0, 0, 0, 956, 0, 0, 0, 0,
+ 957, 958, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 959, 960, 0, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 6077, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 1692, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 39, 0, 0,
+ 1031, 1032, 0, 0, 0, 2584, 41, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 2584, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 2307, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 2308, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2309, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 3865,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3866,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 3867, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 3868, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 1578, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 2581, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 2582, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 2941, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 2943, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 2945, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 4821, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 2582, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1604, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 2158, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 2159,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 2159,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 2379,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 2380, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 3766, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 3781, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 1009, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 6172, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1572, 1573, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1685, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1572, 1573, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1687, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1572, 1573, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1000, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 2400, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 959, 960, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 973,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 2402, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1074, 1075, 956, 0, 0, 0, 1076,
+ 957, 958, 0, 0, 0, 1077, 0, 0, 0, 1078,
+ 1079, 6028, 6029, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 974, 975, 976, 0, 0, 0, 0, 0, 0, 0,
+ 977, 978, 0, 979, 0, 0, 0, 0, 0, 0,
+ 980, 981, 0, 0, 982, 983, 984, 985, 0, 986,
+ 176, 0, 987, 988, 0, 0, 0, 0, 0, 0,
+ 0, 989, 0, 0, 990, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 991, 992, 993, 0, 994, 0, 0, 0,
+ 0, 0, 0, 0, 995, 996, 997, 178, 0, 0,
+ 0, 0, 0, 998, 0, 0, 179, 0, 0, 0,
+ 0, 0, 999, 0, 0, 1571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1001, 0, 1002, 0, 1003, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1004, 1005, 0, 1006, 0, 0, 0, 1007,
+ 180, 0, 0, 0, 1008, 0, 0, 181, 0, 0,
+ 1010, 1011, 1012, 1013, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 1014, 1015, 1016, 0, 1017, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0,
+ 0, 1020, 1021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1022, 0, 0, 0, 0, 0, 0, 1023, 1024, 0,
+ 1025, 1026, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1028, 1029, 1030, 0, 0, 0, 0, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 1033,
+ 1034, 1035, 1036, 195, 196, 197, 1037, 199, 200, 201,
+ 202, 203, 204, 1038, 206, 207, 208, 209, 210, 211,
+ 212, 1039, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 1040, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 1041, 243, 1042, 1043, 1044, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 1045, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 1046, 1047, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 1048, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 1049, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 1050, 1051, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 1052, 403,
+ 404, 405, 406, 407, 1053, 409, 410, 411, 412, 413,
+ 414, 415, 416, 1054, 1055, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 1056, 441, 442,
+ 443, 444, 445, 446, 447, 1057, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 1058, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 1059, 505, 506, 507, 508, 509, 510, 1060, 512,
+ 513, 514, 515, 516, 517, 1061, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 1062, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 1063, 1064, 1065,
+ 1066, 571, 572, 573, 574, 1067, 1068, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 1069,
+ 590, 591, 1070, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 1071, 605, 1072, 607, 608, 609,
+ 0, 610, 611, 612, 1073, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6030, 6031, 956, 0, 0, 0, 0,
+ 1609, 0, 0, 0, 0, 6032, 0, 0, 0, 0,
+ 1079, 1564, 1565, 1080, 961, 962, 963, 964, 965, 966,
+ 967, 968, 969, 970, 971, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 0, 0, 993, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4460, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1112, 0,
+ 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 1013, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4460, 0, 0, 0, 0, 0,
+ 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1027, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 2436, 273, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 2437, 568, 569,
+ 2438, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 6325, 610, 611, 612, 613, 2356, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 174, 175, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1080, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1112, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4229, 4230, 0, 0, 0, 4235, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3418, 0, 0, 0, 0, 0, 0,
- 4255, 0, 4256, 0, 4257, 0, 4258, 0, 0, 933,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4273, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
- 4294, 4295, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3247, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1112,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
+ 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3085, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3085, 0, 0, 0, 3085,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2575, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4460, 0,
- 4460, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 0, 0, 0, 4485,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3247,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3247, 0, 0, 4499, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 6325, 610, 611, 612, 613,
+ 2356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 174, 175, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6326, 0, 0, 0, 0, 0, 0, 2357, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4460, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1112, 0, 0, 0, 1112, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3418, 0, 0, 0, 3708, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4706, 4707, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4714, 4715, 4716, 0, 0, 0, 0, 5485, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4738, 4739, 0, 0, 0, 0,
+ 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4761,
- 0, 3708, 0, 0, 0, 0, 0, 933, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3708, 3085,
- 0, 0, 0, 0, 3085, 3085, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 1609, 610, 611, 612, 613, 0, 0, 0, 0, 0,
+ 0, 1564, 1565, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2575, 0, 0, 0, 2575, 0, 0,
+ 0, 0, 0, 2357, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 933, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4984, 4985,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 1609, 610, 611, 612, 613, 0, 0, 0, 0, 0,
+ 0, 1564, 1565, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0,
+ 0, 0, 0, 1080, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 933, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4460, 3247, 0, 0,
+ 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4460, 3708, 0, 0, 4460, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 933, 0, 0, 0, 0, 0, 0, 0,
- 0, 3247, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3085, 3085,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2575, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4460, 0, 0, 0, 0,
- 0, 0, 0, 4460, 0, 0, 0, 0, 0, 4460,
- 4460, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4460, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4460,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 5268, 0, 5270, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 2356, 610, 611, 612, 613, 0, 0, 0, 0, 0,
+ 0, 174, 175, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1080, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4460, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4460,
- 0, 0, 0, 4460, 0, 0, 0, 0, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4460, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5379,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4460, 6064, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5399,
+ 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4460, 0, 0, 0, 0,
- 0, 0, 3247, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3085, 3085,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4460,
- 0, 4460, 4460, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4460, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4460, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 0, 610, 611, 612, 613, 174, 175, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4460, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2357, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 933, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4859, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 751, 0, 0, 0, 0,
+ 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
+ 179, 3161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3162, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
+ 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 753, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3247, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
+ 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
+ 4860, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, 532, 533, 0, 0, 534, 535, 0,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 0, 610, 611, 612, 613, 174,
+ 175, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2575, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5636, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4861, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0,
+ 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
+ 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 39, 0, 0, 0, 0,
+ 0, 0, 0, 0, 41, 0, 0, 0, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
+ 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, 532, 533, 0,
+ 0, 534, 535, 0, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
+ 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 0, 610,
+ 611, 612, 613, 174, 175, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1346, 0, 0, 0, 0, 0, 0,
+ 0, 782, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1344, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1345,
+ 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5839, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 949,
- 0, 0, 0, 0, 950, 951, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 952, 953, 0, 954, 955,
- 956, 957, 958, 959, 960, 961, 962, 963, 964, 0,
- 0, 0, 0, 0, 0, 0, 965, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 966, 967, 968, 969, 0, 5962, 0,
- 0, 0, 0, 0, 970, 971, 0, 972, 0, 0,
- 0, 0, 0, 0, 973, 974, 0, 0, 975, 976,
- 977, 978, 0, 979, 176, 0, 980, 981, 0, 0,
- 0, 0, 0, 0, 0, 982, 0, 0, 983, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 984, 985, 986, 0,
- 987, 0, 0, 0, 0, 0, 0, 0, 988, 989,
- 990, 178, 0, 0, 0, 0, 0, 991, 0, 0,
- 179, 0, 1682, 0, 0, 0, 992, 0, 0, 993,
- 0, 0, 0, 0, 0, 0, 0, 0, 994, 0,
- 995, 0, 996, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 997, 998, 0, 999,
- 0, 0, 0, 1000, 180, 0, 0, 0, 1001, 0,
- 0, 181, 1002, 0, 1003, 1004, 1005, 1006, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 1007, 1008, 1009, 0, 1010,
- 0, 0, 0, 0, 0, 0, 1011, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0,
- 0, 0, 0, 0, 0, 1013, 1014, 0, 0, 0,
- 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1015, 0, 0, 0, 0, 0,
- 0, 1016, 1017, 0, 1018, 1019, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1020, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1021, 1022, 1023, 0,
- 0, 39, 0, 0, 1024, 1025, 0, 0, 0, 2575,
- 41, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 1026, 1027, 1028, 1029, 195, 196, 197,
- 1030, 199, 200, 201, 202, 203, 204, 1031, 206, 207,
- 208, 209, 210, 211, 212, 1032, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 1033, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 1034, 243, 1035, 1036, 1037,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 1038, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 1039, 1040, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 2575, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 1041, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 1042, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 1043, 1044, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 1045, 403, 404, 405, 406, 407, 1046, 409,
- 410, 411, 412, 413, 414, 415, 416, 1047, 1048, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 1049, 441, 442, 443, 444, 445, 446, 447, 1050,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 1051, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 1052, 505, 506, 507, 508,
- 509, 510, 1053, 512, 513, 514, 515, 516, 517, 1054,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 1055, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 1056,
- 1057, 1058, 1059, 571, 572, 573, 574, 1060, 1061, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 1062, 590, 1063, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 1064, 604, 1065, 606, 607,
- 608, 0, 609, 610, 611, 1066, 0, 0, 0, 0,
- 0, 0, 0, 0, 1067, 1068, 0, 0, 949, 0,
- 1069, 0, 0, 950, 951, 1070, 0, 0, 0, 1071,
- 1072, 0, 0, 1073, 952, 953, 0, 954, 955, 956,
- 957, 958, 959, 960, 961, 962, 963, 964, 0, 0,
- 0, 0, 0, 0, 0, 965, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 966, 967, 968, 969, 0, 0, 0, 2298,
- 0, 0, 0, 970, 971, 0, 972, 0, 0, 0,
- 0, 0, 0, 973, 974, 0, 0, 975, 976, 977,
- 978, 0, 979, 176, 0, 980, 981, 0, 0, 0,
- 0, 0, 0, 0, 982, 0, 0, 983, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 177, 0, 0, 0, 984, 985, 986, 0, 987,
- 0, 0, 0, 0, 0, 0, 0, 988, 989, 990,
- 178, 0, 0, 0, 0, 0, 991, 0, 0, 179,
- 0, 0, 0, 0, 0, 992, 0, 0, 993, 0,
- 0, 0, 0, 0, 0, 0, 0, 994, 2299, 995,
- 0, 996, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 997, 998, 0, 999, 0,
- 0, 0, 1000, 180, 0, 0, 0, 1001, 0, 0,
- 181, 1002, 0, 1003, 1004, 1005, 1006, 0, 0, 0,
- 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 183, 1007, 1008, 1009, 0, 1010, 0,
- 0, 0, 0, 0, 0, 1011, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0,
- 0, 0, 0, 0, 1013, 1014, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1015, 0, 0, 0, 0, 0, 0,
- 1016, 1017, 0, 1018, 1019, 0, 0, 0, 0, 0,
- 0, 0, 0, 2300, 0, 1020, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1021, 1022, 1023, 0, 0,
- 0, 0, 0, 1024, 1025, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 1026, 1027, 1028, 1029, 195, 196, 197, 1030,
- 199, 200, 201, 202, 203, 204, 1031, 206, 207, 208,
- 209, 210, 211, 212, 1032, 214, 215, 0, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 1033, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 1034, 243, 1035, 1036, 1037, 0,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 1038, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 1039, 1040, 274, 275, 0,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
- 323, 1041, 325, 326, 327, 328, 329, 330, 331, 0,
- 332, 333, 334, 1042, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 1043, 1044, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 1045, 403, 404, 405, 406, 407, 1046, 409, 410,
- 411, 412, 413, 414, 415, 416, 1047, 1048, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
- 1049, 441, 442, 443, 444, 445, 446, 447, 1050, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 1051, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 1052, 505, 506, 507, 508, 509,
- 510, 1053, 512, 513, 514, 515, 516, 517, 1054, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 1055,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 1056, 1057,
- 1058, 1059, 571, 572, 573, 574, 1060, 1061, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 1062, 590, 1063, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 1064, 604, 1065, 606, 607, 608,
- 0, 609, 610, 611, 1066, 0, 0, 0, 0, 0,
- 0, 0, 0, 1067, 1068, 0, 0, 949, 0, 1069,
- 0, 0, 950, 951, 1070, 0, 0, 0, 1071, 1072,
- 0, 0, 1073, 952, 953, 0, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 0, 0, 0,
- 0, 0, 0, 0, 965, 0, 0, 0, 0, 0,
- 0, 3081, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3082, 967, 968, 969, 0, 0, 0, 0, 0,
- 0, 0, 970, 971, 0, 972, 0, 0, 0, 0,
- 0, 0, 973, 974, 0, 0, 975, 976, 977, 978,
- 0, 979, 176, 0, 980, 981, 0, 0, 0, 0,
- 0, 0, 0, 3083, 0, 0, 983, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 984, 985, 986, 0, 987, 0,
- 0, 0, 0, 0, 0, 0, 988, 989, 990, 178,
- 0, 0, 0, 0, 0, 991, 0, 0, 179, 0,
- 0, 0, 0, 0, 992, 0, 0, 993, 0, 0,
- 0, 0, 0, 0, 0, 0, 994, 0, 995, 0,
- 996, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 997, 998, 0, 999, 0, 0,
- 0, 1000, 180, 0, 0, 0, 1001, 0, 0, 181,
- 1002, 0, 1003, 1004, 1005, 1006, 0, 3084, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 1007, 1008, 1009, 0, 1010, 0, 0,
- 0, 0, 0, 0, 1011, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0,
- 0, 0, 0, 1013, 1014, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1015, 0, 0, 0, 0, 0, 0, 1016,
- 1017, 0, 1018, 1019, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1020, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1021, 1022, 1023, 0, 0, 0,
- 0, 0, 1024, 1025, 0, 0, 0, 0, 0, 0,
0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 1026, 1027, 1028, 1029, 195, 196, 197, 1030, 199,
- 200, 201, 202, 203, 204, 1031, 206, 207, 208, 209,
- 210, 211, 212, 1032, 214, 215, 0, 216, 217, 218,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 1033, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 1034, 243, 1035, 1036, 1037, 0, 247,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 1038, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 1039, 1040, 274, 275, 0, 276,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 1041, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 1042, 336, 337, 338, 339, 340, 341, 342,
+ 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 1043, 1044, 359, 360, 361, 362,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 1045, 403, 404, 405, 406, 407, 1046, 409, 410, 411,
- 412, 413, 414, 415, 416, 1047, 1048, 419, 420, 421,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 1049,
- 441, 442, 443, 444, 445, 446, 447, 1050, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 1051,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 1052, 505, 506, 507, 508, 509, 510,
- 1053, 512, 513, 514, 515, 516, 517, 1054, 519, 520,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 1055, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 1056, 1057, 1058,
- 1059, 571, 572, 573, 574, 1060, 1061, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 1062,
- 590, 1063, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 1064, 604, 1065, 606, 607, 608, 0,
- 609, 610, 611, 1066, 0, 0, 0, 0, 0, 0,
- 0, 0, 1067, 1068, 0, 0, 949, 0, 1069, 0,
- 0, 950, 951, 1070, 0, 0, 0, 1071, 1072, 0,
- 0, 1073, 952, 953, 0, 954, 955, 956, 957, 958,
- 959, 960, 961, 962, 963, 964, 0, 0, 0, 0,
- 0, 0, 0, 965, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 966, 967, 968, 969, 0, 0, 0, 0, 0, 0,
- 0, 970, 971, 0, 972, 0, 0, 0, 0, 0,
- 0, 973, 974, 0, 0, 975, 976, 977, 978, 0,
- 979, 176, 0, 980, 981, 0, 0, 0, 0, 0,
- 0, 0, 982, 0, 0, 983, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 984, 985, 986, 0, 987, 0, 0,
- 0, 0, 0, 0, 0, 988, 989, 990, 178, 0,
- 0, 0, 0, 0, 991, 0, 0, 179, 0, 0,
- 0, 0, 0, 992, 0, 0, 993, 0, 0, 0,
- 0, 0, 0, 0, 0, 994, 0, 995, 0, 996,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 997, 998, 0, 999, 0, 0, 0,
- 1000, 180, 0, 0, 0, 1001, 0, 0, 181, 1002,
- 0, 1003, 1004, 1005, 1006, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 1007, 1008, 1009, 0, 1010, 0, 0, 0,
- 0, 0, 0, 1011, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0,
- 0, 0, 1013, 1014, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1015, 0, 0, 0, 0, 0, 0, 1016, 1017,
- 0, 1018, 1019, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1020, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1021, 1022, 1023, 0, 0, 0, 0,
- 0, 1024, 1025, 0, 1568, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 1026, 1027, 1028, 1029, 195, 196, 197, 1030, 199, 200,
- 201, 202, 203, 204, 1031, 206, 207, 208, 209, 210,
- 211, 212, 1032, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 1033,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 1034, 243, 1035, 1036, 1037, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 1038, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 1039, 1040, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 321, 322, 323, 1041,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 1042, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 1043, 1044, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 1045,
- 403, 404, 405, 406, 407, 1046, 409, 410, 411, 412,
- 413, 414, 415, 416, 1047, 1048, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 1049, 441,
- 442, 443, 444, 445, 446, 447, 1050, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 1051, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 1052, 505, 506, 507, 508, 509, 510, 1053,
- 512, 513, 514, 515, 516, 517, 1054, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 1055, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 1056, 1057, 1058, 1059,
- 571, 572, 573, 574, 1060, 1061, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 1062, 590,
- 1063, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 1064, 604, 1065, 606, 607, 608, 0, 609,
- 610, 611, 1066, 0, 0, 0, 0, 0, 0, 0,
- 0, 1067, 1068, 0, 0, 949, 0, 1069, 0, 0,
- 950, 951, 1070, 0, 0, 0, 1071, 1072, 0, 0,
- 1073, 952, 953, 0, 954, 955, 956, 957, 958, 959,
- 960, 961, 962, 963, 964, 0, 0, 0, 0, 0,
- 0, 0, 965, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 966,
- 967, 968, 969, 0, 0, 0, 0, 0, 0, 0,
- 970, 971, 0, 972, 0, 0, 0, 0, 0, 0,
- 973, 974, 0, 0, 975, 976, 977, 978, 0, 979,
- 176, 0, 980, 981, 0, 0, 0, 0, 0, 0,
- 0, 2572, 0, 0, 983, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
- 0, 0, 984, 985, 986, 0, 987, 0, 0, 0,
- 0, 0, 0, 0, 988, 989, 990, 178, 0, 0,
- 0, 0, 0, 991, 0, 2573, 179, 0, 0, 0,
- 0, 0, 992, 0, 0, 993, 0, 0, 0, 0,
- 0, 0, 0, 0, 994, 0, 995, 0, 996, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 997, 998, 0, 999, 0, 0, 0, 1000,
- 180, 0, 0, 0, 1001, 0, 0, 181, 1002, 0,
- 1003, 1004, 1005, 1006, 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 1007, 1008, 1009, 0, 1010, 0, 0, 0, 0,
- 0, 0, 1011, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0,
- 0, 1013, 1014, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1015, 0, 0, 0, 0, 0, 0, 1016, 1017, 0,
- 1018, 1019, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1020, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1021, 1022, 1023, 0, 0, 0, 0, 0,
- 1024, 1025, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 1026,
- 1027, 1028, 1029, 195, 196, 197, 1030, 199, 200, 201,
- 202, 203, 204, 1031, 206, 207, 208, 209, 210, 211,
- 212, 1032, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 1033, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 1034, 243, 1035, 1036, 1037, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 1038, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 1039, 1040, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 1041, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 1042, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 1043, 1044, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 1045, 403,
- 404, 405, 406, 407, 1046, 409, 410, 411, 412, 413,
- 414, 415, 416, 1047, 1048, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 1049, 441, 442,
- 443, 444, 445, 446, 447, 1050, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 1051, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 1052, 505, 506, 507, 508, 509, 510, 1053, 512,
- 513, 514, 515, 516, 517, 1054, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 1055, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 1056, 1057, 1058, 1059, 571,
- 572, 573, 574, 1060, 1061, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 1062, 590, 1063,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 1064, 604, 1065, 606, 607, 608, 0, 609, 610,
- 611, 1066, 0, 0, 0, 0, 0, 0, 0, 0,
- 1067, 1068, 0, 0, 949, 0, 1069, 0, 0, 950,
- 951, 1070, 0, 0, 0, 1071, 1072, 0, 0, 1073,
- 952, 953, 0, 954, 955, 956, 957, 958, 959, 960,
- 961, 962, 963, 964, 0, 0, 0, 0, 0, 0,
- 0, 965, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 966, 967,
- 968, 969, 0, 0, 0, 0, 0, 0, 0, 970,
- 971, 0, 972, 0, 0, 0, 0, 0, 0, 973,
- 974, 0, 0, 975, 976, 977, 978, 0, 979, 176,
- 0, 980, 981, 0, 0, 0, 0, 0, 0, 0,
- 982, 0, 0, 983, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
- 0, 984, 985, 986, 0, 987, 0, 0, 0, 2931,
- 0, 0, 0, 988, 989, 990, 178, 0, 0, 0,
- 0, 0, 991, 0, 0, 179, 0, 0, 0, 0,
- 0, 992, 0, 0, 993, 0, 0, 0, 0, 0,
- 0, 0, 0, 994, 0, 995, 0, 996, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 997, 998, 0, 999, 0, 0, 0, 1000, 180,
- 0, 0, 0, 1001, 0, 0, 181, 1002, 0, 1003,
- 1004, 1005, 1006, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
- 1007, 1008, 1009, 0, 1010, 0, 0, 0, 0, 0,
- 0, 1011, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0,
- 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1015,
- 0, 0, 0, 0, 0, 0, 1016, 1017, 0, 1018,
- 1019, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1020, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1021, 1022, 1023, 0, 0, 0, 0, 0, 1024,
- 1025, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 1026, 1027,
- 1028, 1029, 195, 196, 197, 1030, 199, 200, 201, 202,
- 203, 204, 1031, 206, 207, 208, 209, 210, 211, 212,
- 1032, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 1033, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 1034, 243, 1035, 1036, 1037, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 1038,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 1039, 1040, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 321, 322, 323, 1041, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 1042,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 1043, 1044, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 1045, 403, 404,
- 405, 406, 407, 1046, 409, 410, 411, 412, 413, 414,
- 415, 416, 1047, 1048, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 1049, 441, 442, 443,
- 444, 445, 446, 447, 1050, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 1051, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 1052, 505, 506, 507, 508, 509, 510, 1053, 512, 513,
- 514, 515, 516, 517, 1054, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 1055, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 1056, 1057, 1058, 1059, 571, 572,
- 573, 574, 1060, 1061, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 1062, 590, 1063, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 1064, 604, 1065, 606, 607, 608, 0, 609, 610, 611,
- 1066, 0, 0, 0, 0, 0, 0, 0, 0, 1067,
- 1068, 0, 0, 949, 0, 1069, 0, 0, 950, 951,
- 1070, 0, 0, 0, 1071, 1072, 0, 0, 1073, 952,
- 953, 0, 954, 955, 956, 957, 958, 959, 960, 961,
- 962, 963, 964, 0, 0, 0, 0, 0, 0, 0,
- 965, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 966, 967, 968,
- 969, 0, 0, 0, 0, 0, 0, 0, 970, 971,
- 0, 972, 0, 0, 0, 0, 0, 0, 973, 974,
- 0, 0, 975, 976, 977, 978, 0, 979, 176, 0,
- 980, 981, 0, 0, 0, 0, 0, 0, 0, 982,
- 0, 0, 983, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 984, 985, 986, 0, 987, 0, 0, 0, 2933, 0,
- 0, 0, 988, 989, 990, 178, 0, 0, 0, 0,
- 0, 991, 0, 0, 179, 0, 0, 0, 0, 0,
- 992, 0, 0, 993, 0, 0, 0, 0, 0, 0,
- 0, 0, 994, 0, 995, 0, 996, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 997, 998, 0, 999, 0, 0, 0, 1000, 180, 0,
- 0, 0, 1001, 0, 0, 181, 1002, 0, 1003, 1004,
- 1005, 1006, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 1007,
- 1008, 1009, 0, 1010, 0, 0, 0, 0, 0, 0,
- 1011, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1012, 0, 0, 0, 0, 0, 0, 0, 1013,
- 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1015, 0,
- 0, 0, 0, 0, 0, 1016, 1017, 0, 1018, 1019,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1020, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1021, 1022, 1023, 0, 0, 0, 0, 0, 1024, 1025,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 1026, 1027, 1028,
- 1029, 195, 196, 197, 1030, 199, 200, 201, 202, 203,
- 204, 1031, 206, 207, 208, 209, 210, 211, 212, 1032,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 1033, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 1034,
- 243, 1035, 1036, 1037, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 1038, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 1039, 1040, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 1041, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 1042, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 1043, 1044, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 1045, 403, 404, 405,
- 406, 407, 1046, 409, 410, 411, 412, 413, 414, 415,
- 416, 1047, 1048, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 1049, 441, 442, 443, 444,
- 445, 446, 447, 1050, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 1051, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 1052,
- 505, 506, 507, 508, 509, 510, 1053, 512, 513, 514,
- 515, 516, 517, 1054, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 1055, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 1056, 1057, 1058, 1059, 571, 572, 573,
- 574, 1060, 1061, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 1062, 590, 1063, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 1064,
- 604, 1065, 606, 607, 608, 0, 609, 610, 611, 1066,
- 0, 0, 0, 0, 0, 0, 0, 0, 1067, 1068,
- 0, 0, 949, 0, 1069, 0, 0, 950, 951, 1070,
- 0, 0, 0, 1071, 1072, 0, 0, 1073, 952, 953,
- 0, 954, 955, 956, 957, 958, 959, 960, 961, 962,
- 963, 964, 0, 0, 0, 0, 0, 0, 0, 965,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 966, 967, 968, 969,
- 0, 0, 0, 0, 0, 0, 0, 970, 971, 0,
- 972, 0, 0, 0, 0, 0, 0, 973, 974, 0,
- 0, 975, 976, 977, 978, 0, 979, 176, 0, 980,
- 981, 0, 0, 0, 0, 0, 0, 0, 982, 0,
- 0, 983, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 984,
- 985, 986, 0, 987, 0, 0, 0, 2935, 0, 0,
- 0, 988, 989, 990, 178, 0, 0, 0, 0, 0,
- 991, 0, 0, 179, 0, 0, 0, 0, 0, 992,
- 0, 0, 993, 0, 0, 0, 0, 0, 0, 0,
- 0, 994, 0, 995, 0, 996, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 997,
- 998, 0, 999, 0, 0, 0, 1000, 180, 0, 0,
- 0, 1001, 0, 0, 181, 1002, 0, 1003, 1004, 1005,
- 1006, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 1007, 1008,
- 1009, 0, 1010, 0, 0, 0, 0, 0, 0, 1011,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1012, 0, 0, 0, 0, 0, 0, 0, 1013, 1014,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1015, 0, 0,
- 0, 0, 0, 0, 1016, 1017, 0, 1018, 1019, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1020,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1021,
- 1022, 1023, 0, 0, 0, 0, 0, 1024, 1025, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 1026, 1027, 1028, 1029,
- 195, 196, 197, 1030, 199, 200, 201, 202, 203, 204,
- 1031, 206, 207, 208, 209, 210, 211, 212, 1032, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 1033, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 1034, 243,
- 1035, 1036, 1037, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 1038, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 1039,
- 1040, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 1041, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 1042, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 1043,
- 1044, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 1045, 403, 404, 405, 406,
- 407, 1046, 409, 410, 411, 412, 413, 414, 415, 416,
- 1047, 1048, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 1049, 441, 442, 443, 444, 445,
- 446, 447, 1050, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 1051, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 1052, 505,
- 506, 507, 508, 509, 510, 1053, 512, 513, 514, 515,
- 516, 517, 1054, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 1055, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 1056, 1057, 1058, 1059, 571, 572, 573, 574,
- 1060, 1061, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 1062, 590, 1063, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 1064, 604,
- 1065, 606, 607, 608, 0, 609, 610, 611, 1066, 0,
- 0, 0, 0, 0, 0, 0, 0, 1067, 1068, 0,
- 0, 949, 0, 1069, 0, 0, 950, 951, 1070, 0,
- 0, 0, 1071, 1072, 0, 0, 1073, 952, 953, 0,
- 954, 955, 956, 957, 958, 959, 960, 961, 962, 963,
- 964, 0, 0, 0, 0, 0, 0, 0, 965, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 966, 967, 968, 969, 0,
- 0, 0, 0, 0, 0, 0, 970, 971, 0, 972,
- 0, 0, 0, 0, 0, 0, 973, 974, 0, 0,
- 975, 976, 977, 978, 0, 979, 176, 0, 980, 981,
- 0, 0, 0, 0, 0, 0, 0, 4785, 0, 0,
- 983, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 984, 985,
- 986, 0, 987, 0, 0, 0, 0, 0, 0, 0,
- 988, 989, 990, 178, 0, 0, 0, 0, 0, 991,
- 0, 2573, 179, 0, 0, 0, 0, 0, 992, 0,
- 0, 993, 0, 0, 0, 0, 0, 0, 0, 0,
- 994, 0, 995, 0, 996, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 997, 998,
- 0, 999, 0, 0, 0, 1000, 180, 0, 0, 0,
- 1001, 0, 0, 181, 1002, 0, 1003, 1004, 1005, 1006,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 1007, 1008, 1009,
- 0, 1010, 0, 0, 0, 0, 0, 0, 1011, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1012,
- 0, 0, 0, 0, 0, 0, 0, 1013, 1014, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1015, 0, 0, 0,
- 0, 0, 0, 1016, 1017, 0, 1018, 1019, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1020, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
- 1023, 0, 0, 0, 0, 0, 1024, 1025, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 1026, 1027, 1028, 1029, 195,
- 196, 197, 1030, 199, 200, 201, 202, 203, 204, 1031,
- 206, 207, 208, 209, 210, 211, 212, 1032, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 1033, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 1034, 243, 1035,
- 1036, 1037, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 1038, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 1039, 1040,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 1041, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 1042, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 1043, 1044,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 1045, 403, 404, 405, 406, 407,
- 1046, 409, 410, 411, 412, 413, 414, 415, 416, 1047,
- 1048, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 1049, 441, 442, 443, 444, 445, 446,
- 447, 1050, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 1051, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 1052, 505, 506,
- 507, 508, 509, 510, 1053, 512, 513, 514, 515, 516,
- 517, 1054, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 1055, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 1056, 1057, 1058, 1059, 571, 572, 573, 574, 1060,
- 1061, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 1062, 590, 1063, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 1064, 604, 1065,
- 606, 607, 608, 0, 609, 610, 611, 1066, 0, 0,
- 0, 0, 0, 0, 0, 0, 1067, 1068, 0, 0,
- 949, 0, 1069, 0, 0, 950, 951, 1070, 0, 0,
- 0, 1071, 1072, 0, 0, 1073, 952, 953, 0, 954,
- 955, 956, 957, 958, 959, 960, 961, 962, 963, 964,
- 0, 0, 0, 0, 0, 0, 0, 965, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 966, 967, 968, 969, 0, 0,
- 0, 0, 0, 0, 0, 970, 971, 0, 972, 0,
- 0, 0, 0, 0, 0, 973, 974, 0, 0, 975,
- 976, 977, 978, 0, 979, 176, 0, 980, 981, 0,
- 0, 0, 0, 0, 0, 0, 982, 0, 0, 983,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 984, 985, 986,
- 0, 987, 0, 0, 0, 0, 0, 0, 0, 988,
- 989, 990, 178, 0, 0, 0, 0, 0, 991, 0,
- 0, 179, 0, 0, 0, 0, 0, 992, 0, 0,
- 993, 0, 0, 0, 0, 0, 0, 0, 0, 994,
- 0, 995, 0, 996, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 997, 998, 0,
- 999, 0, 0, 0, 1000, 180, 0, 0, 0, 1001,
- 0, 0, 181, 1002, 0, 1003, 1004, 1005, 1006, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 1007, 1008, 1009, 0,
- 1010, 0, 0, 0, 0, 0, 0, 1011, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1012, 0,
- 0, 0, 0, 0, 0, 0, 1013, 1014, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1015, 0, 0, 0, 0,
- 0, 0, 1016, 1017, 0, 1018, 1019, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1020, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1021, 1022, 1023,
- 0, 0, 0, 0, 0, 1024, 1025, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 1026, 1027, 1028, 1029, 195, 196,
- 197, 1030, 199, 200, 201, 202, 203, 204, 1031, 206,
- 207, 208, 209, 210, 211, 212, 1032, 214, 215, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 1033, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 1034, 243, 1035, 1036,
- 1037, 0, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 1038, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 1039, 1040, 274,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
- 321, 322, 323, 1041, 325, 326, 327, 328, 329, 330,
- 331, 0, 332, 333, 334, 1042, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 1043, 1044, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 1045, 403, 404, 405, 406, 407, 1046,
- 409, 410, 411, 412, 413, 414, 415, 416, 1047, 1048,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
- 438, 439, 1049, 441, 442, 443, 444, 445, 446, 447,
- 1050, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 1051, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 1052, 505, 506, 507,
- 508, 509, 510, 1053, 512, 513, 514, 515, 516, 517,
- 1054, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 1055, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 1056, 1057, 1058, 1059, 571, 572, 573, 574, 1060, 1061,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 1062, 590, 1063, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 1064, 604, 1065, 606,
- 607, 608, 0, 609, 610, 611, 1066, 0, 0, 0,
- 0, 0, 0, 0, 0, 1067, 1068, 0, 0, 949,
- 0, 1069, 0, 0, 950, 951, 1070, 0, 0, 0,
- 1071, 1072, 0, 0, 1073, 952, 953, 0, 954, 955,
- 956, 957, 958, 959, 960, 961, 962, 963, 964, 0,
- 0, 0, 0, 0, 0, 0, 965, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 966, 967, 968, 969, 0, 0, 0,
- 0, 0, 0, 0, 970, 971, 0, 972, 0, 0,
- 0, 0, 0, 0, 973, 974, 0, 0, 975, 976,
- 977, 978, 0, 979, 176, 0, 980, 981, 0, 0,
- 0, 0, 0, 0, 0, 982, 0, 0, 983, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 984, 985, 986, 0,
- 987, 0, 0, 0, 0, 0, 0, 0, 988, 989,
- 990, 178, 0, 0, 0, 0, 0, 991, 0, 0,
- 179, 0, 0, 0, 0, 0, 992, 0, 0, 993,
- 0, 0, 0, 0, 0, 0, 0, 0, 994, 0,
- 995, 0, 996, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 997, 998, 0, 999,
- 0, 0, 0, 1000, 180, 0, 0, 0, 1001, 0,
- 0, 181, 1002, 0, 1003, 1004, 1005, 1006, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 1007, 1008, 1009, 0, 1010,
- 0, 0, 0, 0, 0, 0, 1011, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0,
- 0, 0, 0, 0, 0, 1013, 1014, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1015, 0, 0, 0, 0, 0,
- 0, 1016, 1017, 0, 1018, 1019, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1020, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1021, 1022, 1023, 0,
- 0, 0, 0, 0, 1024, 1025, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 1026, 1027, 1028, 1029, 195, 196, 197,
- 1030, 199, 200, 201, 202, 203, 204, 1031, 206, 207,
- 208, 209, 210, 211, 212, 1032, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 1033, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 1034, 243, 1035, 1036, 1037,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 1038, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 1039, 1040, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 1041, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 1042, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 1043, 1044, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 1045, 403, 404, 405, 406, 407, 1046, 409,
- 410, 411, 412, 413, 414, 415, 416, 1047, 1048, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 1049, 441, 442, 443, 444, 445, 446, 447, 1050,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 1051, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 1052, 505, 506, 507, 508,
- 509, 510, 1053, 512, 513, 514, 515, 516, 517, 1054,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 1055, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 1056,
- 1057, 1058, 1059, 571, 572, 573, 574, 1060, 1061, 577,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 1062, 590, 1063, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 1064, 604, 1065, 606, 607,
- 608, 0, 609, 610, 611, 1066, 0, 0, 0, 0,
- 0, 0, 0, 0, 1067, 1068, 0, 0, 949, 0,
- 1069, 0, 0, 950, 951, 1594, 0, 0, 0, 1071,
- 1072, 0, 0, 1073, 952, 953, 0, 954, 955, 956,
- 957, 958, 959, 960, 961, 962, 963, 964, 0, 0,
- 0, 0, 0, 0, 0, 965, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 966, 967, 968, 969, 0, 0, 0, 0,
- 0, 0, 0, 970, 971, 0, 972, 0, 0, 0,
- 0, 0, 0, 973, 974, 0, 0, 975, 976, 977,
- 978, 0, 979, 176, 0, 980, 981, 0, 0, 0,
- 0, 0, 0, 0, 982, 0, 0, 983, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 177, 0, 0, 0, 984, 985, 986, 0, 987,
- 0, 0, 0, 0, 0, 0, 0, 988, 989, 990,
- 178, 0, 0, 0, 0, 0, 991, 0, 0, 179,
- 0, 0, 0, 0, 0, 992, 0, 0, 993, 0,
- 0, 0, 0, 0, 0, 0, 0, 994, 0, 995,
- 0, 996, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 997, 998, 0, 999, 0,
- 0, 0, 1000, 180, 0, 0, 0, 1001, 0, 0,
- 181, 1002, 0, 1003, 1004, 1005, 1006, 0, 0, 0,
- 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 183, 1007, 1008, 1009, 0, 1010, 0,
- 0, 0, 0, 0, 0, 1011, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0,
- 0, 0, 0, 0, 1013, 1014, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1015, 0, 0, 0, 0, 0, 0,
- 1016, 1017, 0, 1018, 1019, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1020, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1021, 1022, 1023, 0, 0,
- 0, 0, 0, 1024, 1025, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 1026, 1027, 1028, 1029, 195, 196, 197, 1030,
- 199, 200, 201, 202, 203, 204, 1031, 206, 207, 208,
- 209, 210, 211, 212, 1032, 214, 215, 0, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 1033, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 1034, 243, 1035, 1036, 1037, 0,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 1038, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 1039, 1040, 274, 275, 0,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
- 323, 1041, 325, 326, 327, 328, 329, 330, 331, 0,
- 332, 333, 334, 1042, 2149, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 1043, 1044, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 1045, 403, 404, 405, 406, 407, 1046, 409, 410,
- 411, 412, 413, 414, 415, 416, 1047, 1048, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
- 1049, 441, 442, 443, 444, 445, 446, 447, 1050, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 1051, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 1052, 505, 506, 507, 508, 509,
- 510, 1053, 512, 513, 514, 515, 516, 517, 1054, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 1055,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 1056, 1057,
- 1058, 1059, 571, 572, 573, 574, 1060, 1061, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 2150, 590, 1063, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 1064, 604, 1065, 606, 607, 608,
- 0, 609, 610, 611, 1066, 0, 0, 0, 0, 0,
- 0, 0, 0, 1067, 1068, 0, 0, 949, 0, 1069,
- 0, 0, 950, 951, 1070, 0, 0, 0, 1071, 1072,
- 0, 0, 1073, 952, 953, 0, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 0, 0, 0,
- 0, 0, 0, 0, 965, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 966, 967, 968, 969, 0, 0, 0, 0, 0,
- 0, 0, 970, 971, 0, 972, 0, 0, 0, 0,
- 0, 0, 973, 974, 0, 0, 975, 976, 977, 978,
- 0, 979, 176, 0, 980, 981, 0, 0, 0, 0,
- 0, 0, 0, 982, 0, 0, 983, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 984, 985, 986, 0, 987, 0,
- 0, 0, 0, 0, 0, 0, 988, 989, 990, 178,
- 0, 0, 0, 0, 0, 991, 0, 0, 179, 0,
- 0, 0, 0, 0, 992, 0, 0, 993, 0, 0,
- 0, 0, 0, 0, 0, 0, 994, 0, 995, 0,
- 996, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 997, 998, 0, 999, 0, 0,
- 0, 1000, 180, 0, 0, 0, 1001, 0, 0, 181,
- 1002, 0, 1003, 1004, 1005, 1006, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 1007, 1008, 1009, 0, 1010, 0, 0,
- 0, 0, 0, 0, 1011, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0,
- 0, 0, 0, 1013, 1014, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1015, 0, 0, 0, 0, 0, 0, 1016,
- 1017, 0, 1018, 1019, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1020, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1021, 1022, 1023, 0, 0, 0,
- 0, 0, 1024, 1025, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 1026, 1027, 1028, 1029, 195, 196, 197, 1030, 199,
- 200, 201, 202, 203, 204, 1031, 206, 207, 208, 209,
- 210, 211, 212, 1032, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 1033, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 1034, 243, 1035, 1036, 1037, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 1038, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 1039, 1040, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 1041, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 1042, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 1043, 1044, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 1045, 403, 404, 405, 406, 407, 1046, 409, 410, 411,
- 412, 413, 414, 415, 416, 1047, 1048, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 1049,
- 441, 442, 443, 444, 445, 446, 447, 1050, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 1051,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 1052, 505, 506, 507, 508, 509, 510,
- 1053, 512, 513, 514, 515, 516, 517, 1054, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 1055, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 1056, 1057, 1058,
- 1059, 571, 572, 573, 574, 1060, 1061, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 2150,
- 590, 1063, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 1064, 604, 1065, 606, 607, 608, 0,
- 609, 610, 611, 1066, 0, 0, 0, 0, 0, 0,
- 0, 0, 1067, 1068, 0, 0, 949, 0, 1069, 0,
- 0, 950, 951, 1070, 0, 0, 0, 1071, 1072, 0,
- 0, 1073, 952, 953, 0, 954, 955, 956, 957, 958,
- 959, 960, 961, 962, 963, 964, 0, 0, 0, 0,
- 0, 0, 0, 965, 0, 0, 0, 0, 0, 0,
- 2370, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 966, 967, 968, 969, 0, 0, 0, 0, 0, 0,
- 0, 970, 971, 0, 972, 0, 0, 0, 0, 0,
- 0, 973, 974, 0, 0, 975, 976, 977, 978, 0,
- 979, 176, 0, 980, 981, 0, 0, 0, 0, 0,
- 0, 0, 982, 0, 0, 983, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 984, 985, 986, 0, 987, 0, 0,
- 0, 0, 0, 0, 0, 988, 989, 990, 178, 0,
- 0, 0, 0, 0, 991, 0, 0, 179, 0, 0,
- 0, 0, 0, 992, 0, 0, 993, 0, 0, 0,
- 0, 0, 0, 0, 0, 994, 0, 995, 0, 996,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 997, 998, 0, 999, 0, 0, 0,
- 1000, 180, 0, 0, 0, 1001, 0, 0, 181, 0,
- 0, 1003, 1004, 1005, 1006, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 1007, 1008, 1009, 0, 1010, 0, 0, 0,
- 0, 0, 0, 1011, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0,
- 0, 0, 1013, 1014, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1015, 0, 0, 0, 0, 0, 0, 1016, 1017,
- 0, 1018, 1019, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1020, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1021, 1022, 1023, 0, 0, 0, 0,
- 0, 1024, 1025, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 1026, 1027, 1028, 1029, 195, 196, 197, 1030, 199, 200,
- 201, 202, 203, 2371, 1031, 206, 207, 208, 209, 210,
- 211, 212, 1032, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 1033,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 1034, 243, 1035, 1036, 1037, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 1038, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 1039, 1040, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 321, 322, 323, 1041,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 1042, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 1043, 1044, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 1045,
- 403, 404, 405, 406, 407, 1046, 409, 410, 411, 412,
- 413, 414, 415, 416, 1047, 1048, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 1049, 441,
- 442, 443, 444, 445, 446, 447, 1050, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 1051, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 1052, 505, 506, 507, 508, 509, 510, 1053,
- 512, 513, 514, 515, 516, 517, 1054, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 1055, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 1056, 1057, 1058, 1059,
- 571, 572, 573, 574, 1060, 1061, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 1062, 590,
- 1063, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 1064, 604, 1065, 606, 607, 608, 0, 609,
- 610, 611, 1066, 0, 0, 0, 0, 0, 0, 0,
- 0, 1067, 1068, 0, 0, 949, 0, 1069, 0, 0,
- 950, 951, 1070, 0, 0, 0, 1071, 1072, 0, 0,
- 1073, 952, 953, 0, 954, 955, 956, 957, 958, 959,
- 960, 961, 962, 963, 964, 0, 0, 0, 0, 0,
- 0, 0, 965, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 966,
- 967, 968, 969, 0, 0, 0, 0, 0, 0, 0,
- 970, 971, 0, 972, 0, 0, 0, 0, 0, 0,
- 973, 974, 0, 0, 975, 976, 977, 978, 0, 979,
- 176, 0, 980, 981, 0, 0, 0, 0, 0, 0,
- 0, 982, 0, 0, 983, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
- 0, 0, 984, 985, 986, 0, 987, 0, 0, 0,
- 0, 0, 0, 0, 988, 989, 990, 178, 0, 0,
- 0, 0, 0, 991, 0, 0, 179, 0, 0, 0,
- 0, 0, 992, 0, 0, 3758, 0, 0, 0, 0,
- 0, 0, 0, 0, 994, 0, 995, 0, 996, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 997, 998, 0, 999, 0, 0, 0, 1000,
- 180, 0, 0, 0, 1001, 0, 0, 181, 1002, 0,
- 1003, 1004, 1005, 1006, 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 1007, 1008, 1009, 0, 1010, 0, 0, 0, 0,
- 0, 0, 1011, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0,
- 0, 1013, 1014, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1015, 0, 0, 0, 0, 0, 0, 1016, 1017, 0,
- 1018, 1019, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1020, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1021, 1022, 1023, 0, 0, 0, 0, 0,
- 1024, 1025, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 1026,
- 1027, 1028, 1029, 195, 196, 197, 1030, 199, 200, 201,
- 202, 203, 204, 1031, 206, 207, 208, 209, 210, 211,
- 212, 1032, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 1033, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 1034, 243, 1035, 1036, 1037, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 1038, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 1039, 1040, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 1041, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 1042, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 1043, 1044, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 1045, 403,
- 404, 405, 406, 407, 1046, 409, 410, 411, 412, 413,
- 414, 415, 416, 1047, 1048, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 1049, 441, 442,
- 443, 444, 445, 446, 447, 1050, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 1051, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 1052, 505, 506, 507, 508, 509, 510, 1053, 512,
- 513, 514, 515, 516, 517, 1054, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 1055, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 1056, 1057, 1058, 1059, 571,
- 572, 573, 574, 1060, 1061, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 1062, 590, 1063,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 1064, 604, 1065, 606, 607, 608, 0, 609, 610,
- 611, 1066, 0, 0, 0, 0, 0, 0, 0, 0,
- 1067, 1068, 0, 0, 949, 0, 1069, 0, 0, 950,
- 951, 1070, 0, 0, 0, 1071, 1072, 0, 0, 1073,
- 952, 953, 0, 954, 955, 956, 957, 958, 959, 960,
- 961, 962, 963, 964, 0, 0, 0, 0, 0, 0,
- 0, 965, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 966, 967,
- 968, 969, 0, 0, 0, 0, 0, 0, 0, 970,
- 971, 0, 972, 0, 0, 0, 0, 0, 0, 973,
- 974, 0, 0, 975, 976, 977, 978, 0, 979, 176,
- 0, 980, 981, 0, 0, 0, 0, 0, 0, 0,
- 982, 0, 0, 983, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
- 0, 984, 985, 986, 0, 987, 0, 0, 0, 0,
- 0, 0, 0, 988, 989, 990, 178, 0, 0, 0,
- 0, 0, 991, 0, 0, 179, 0, 0, 0, 0,
- 0, 992, 0, 0, 3773, 0, 0, 0, 0, 0,
- 0, 0, 0, 994, 0, 995, 0, 996, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 997, 998, 0, 999, 0, 0, 0, 1000, 180,
- 0, 0, 0, 1001, 0, 0, 181, 1002, 0, 1003,
- 1004, 1005, 1006, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
- 1007, 1008, 1009, 0, 1010, 0, 0, 0, 0, 0,
- 0, 1011, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0,
- 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1015,
- 0, 0, 0, 0, 0, 0, 1016, 1017, 0, 1018,
- 1019, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1020, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1021, 1022, 1023, 0, 0, 0, 0, 0, 1024,
- 1025, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 1026, 1027,
- 1028, 1029, 195, 196, 197, 1030, 199, 200, 201, 202,
- 203, 204, 1031, 206, 207, 208, 209, 210, 211, 212,
- 1032, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 1033, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 1034, 243, 1035, 1036, 1037, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 1038,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 1039, 1040, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 321, 322, 323, 1041, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 1042,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 1043, 1044, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 1045, 403, 404,
- 405, 406, 407, 1046, 409, 410, 411, 412, 413, 414,
- 415, 416, 1047, 1048, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 1049, 441, 442, 443,
- 444, 445, 446, 447, 1050, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 1051, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 1052, 505, 506, 507, 508, 509, 510, 1053, 512, 513,
- 514, 515, 516, 517, 1054, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 1055, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 1056, 1057, 1058, 1059, 571, 572,
- 573, 574, 1060, 1061, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 1062, 590, 1063, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 1064, 604, 1065, 606, 607, 608, 0, 609, 610, 611,
- 1066, 0, 0, 0, 0, 0, 0, 0, 0, 1067,
- 1068, 0, 0, 949, 0, 1069, 0, 0, 950, 951,
- 1070, 0, 0, 0, 1071, 1072, 0, 0, 1073, 952,
- 953, 0, 954, 955, 956, 957, 958, 959, 960, 961,
- 962, 963, 964, 0, 0, 0, 0, 0, 0, 0,
- 965, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 966, 967, 968,
- 969, 0, 0, 0, 0, 0, 0, 0, 970, 971,
- 0, 972, 0, 0, 0, 0, 0, 0, 973, 974,
- 0, 0, 975, 976, 977, 978, 0, 979, 176, 0,
- 980, 981, 0, 0, 0, 0, 0, 0, 0, 982,
- 0, 0, 983, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 984, 985, 986, 0, 987, 0, 0, 0, 0, 0,
- 0, 0, 988, 989, 990, 178, 0, 0, 0, 0,
- 0, 991, 0, 0, 179, 0, 0, 0, 0, 0,
- 992, 0, 0, 993, 0, 0, 0, 0, 0, 0,
- 0, 0, 994, 0, 995, 0, 996, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 997, 998, 6048, 999, 0, 0, 0, 1000, 180, 0,
- 0, 0, 1001, 0, 0, 181, 0, 0, 1003, 1004,
- 1005, 1006, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 1007,
- 1008, 1009, 0, 1010, 0, 0, 0, 0, 0, 0,
- 1011, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1012, 0, 0, 0, 0, 0, 0, 0, 1013,
- 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1015, 0,
- 0, 0, 0, 0, 0, 1016, 1017, 0, 1018, 1019,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1020, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1021, 1022, 1023, 0, 0, 0, 0, 0, 1024, 1025,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 1026, 1027, 1028,
- 1029, 195, 196, 197, 1030, 199, 200, 201, 202, 203,
- 204, 1031, 206, 207, 208, 209, 210, 211, 212, 1032,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 1033, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 1034,
- 243, 1035, 1036, 1037, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 1038, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 1039, 1040, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 1041, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 1042, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 1043, 1044, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 1045, 403, 404, 405,
- 406, 407, 1046, 409, 410, 411, 412, 413, 414, 415,
- 416, 1047, 1048, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 1049, 441, 442, 443, 444,
- 445, 446, 447, 1050, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 1051, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 1052,
- 505, 506, 507, 508, 509, 510, 1053, 512, 513, 514,
- 515, 516, 517, 1054, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 1055, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 1056, 1057, 1058, 1059, 571, 572, 573,
- 574, 1060, 1061, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 1062, 590, 1063, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 1064,
- 604, 1065, 606, 607, 608, 0, 609, 610, 611, 1066,
- 0, 0, 0, 0, 0, 0, 0, 0, 1067, 1068,
- 0, 0, 949, 0, 1069, 0, 0, 950, 951, 1070,
- 0, 0, 0, 1071, 1072, 0, 0, 1073, 952, 953,
- 0, 954, 955, 956, 957, 958, 959, 960, 961, 962,
- 963, 964, 0, 0, 0, 0, 0, 0, 0, 965,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 966, 967, 968, 969,
- 0, 0, 0, 0, 0, 0, 0, 970, 971, 0,
- 972, 0, 0, 0, 0, 0, 0, 973, 974, 0,
- 0, 975, 976, 977, 978, 0, 979, 176, 0, 980,
- 981, 0, 0, 0, 0, 0, 0, 0, 982, 0,
- 0, 983, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 984,
- 985, 986, 0, 987, 0, 0, 0, 0, 0, 0,
- 0, 988, 989, 990, 178, 0, 0, 0, 0, 0,
- 991, 0, 0, 179, 0, 0, 0, 0, 0, 992,
- 0, 0, 1561, 0, 0, 0, 0, 0, 0, 0,
- 0, 994, 0, 995, 0, 996, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 997,
- 998, 0, 999, 0, 0, 0, 1000, 180, 0, 0,
- 0, 1001, 0, 0, 181, 0, 0, 1003, 1004, 1005,
- 1006, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 1007, 1008,
- 1009, 0, 1010, 0, 0, 0, 0, 0, 0, 1011,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1012, 0, 0, 0, 0, 0, 0, 0, 1013, 1014,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1015, 0, 0,
- 0, 0, 0, 0, 1016, 1017, 0, 1018, 1019, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1020,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1021,
- 1022, 1023, 0, 0, 0, 0, 0, 1024, 1025, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 1026, 1027, 1028, 1029,
- 195, 196, 197, 1030, 199, 200, 201, 202, 203, 204,
- 1031, 206, 207, 208, 209, 210, 211, 212, 1032, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 1033, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 1034, 243,
- 1035, 1036, 1037, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 1038, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 1039,
- 1040, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 1041, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 1042, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 1043,
- 1044, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 1045, 403, 404, 405, 406,
- 407, 1046, 409, 410, 411, 412, 413, 414, 415, 416,
- 1047, 1048, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 1049, 441, 442, 443, 444, 445,
- 446, 447, 1050, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 1051, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 1052, 505,
- 506, 507, 508, 509, 510, 1053, 512, 513, 514, 515,
- 516, 517, 1054, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 1055, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 1056, 1057, 1058, 1059, 571, 572, 573, 574,
- 1060, 1061, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 1062, 590, 1063, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 1064, 604,
- 1065, 606, 607, 608, 0, 609, 610, 611, 1066, 0,
- 0, 0, 0, 0, 0, 0, 0, 1562, 1563, 0,
- 0, 949, 0, 1069, 0, 0, 950, 951, 1070, 0,
- 0, 0, 1071, 1072, 0, 0, 1073, 952, 953, 0,
- 954, 955, 956, 957, 958, 959, 960, 961, 962, 963,
- 964, 0, 0, 0, 0, 0, 0, 0, 965, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 966, 967, 968, 969, 0,
- 0, 0, 0, 0, 0, 0, 970, 971, 0, 972,
- 0, 0, 0, 0, 0, 0, 973, 974, 0, 0,
- 975, 976, 977, 978, 0, 979, 176, 0, 980, 981,
- 0, 0, 0, 0, 0, 0, 0, 982, 0, 0,
- 983, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 984, 985,
- 986, 0, 987, 0, 0, 0, 0, 0, 0, 0,
- 988, 989, 990, 178, 0, 0, 0, 0, 0, 991,
- 0, 0, 179, 0, 0, 0, 0, 0, 992, 0,
- 0, 1675, 0, 0, 0, 0, 0, 0, 0, 0,
- 994, 0, 995, 0, 996, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 997, 998,
- 0, 999, 0, 0, 0, 1000, 180, 0, 0, 0,
- 1001, 0, 0, 181, 0, 0, 1003, 1004, 1005, 1006,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 0, 610, 611, 612, 613, 174, 175, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1346, 0, 0,
+ 0, 0, 1347, 0, 0, 782, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1345, 0, 0, 0, 0, 0, 0,
+ 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+ 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 1007, 1008, 1009,
- 0, 1010, 0, 0, 0, 0, 0, 0, 1011, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1012,
- 0, 0, 0, 0, 0, 0, 0, 1013, 1014, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1015, 0, 0, 0,
- 0, 0, 0, 1016, 1017, 0, 1018, 1019, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1020, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
- 1023, 0, 0, 0, 0, 0, 1024, 1025, 0, 0,
+ 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 1026, 1027, 1028, 1029, 195,
- 196, 197, 1030, 199, 200, 201, 202, 203, 204, 1031,
- 206, 207, 208, 209, 210, 211, 212, 1032, 214, 215,
+ 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 1033, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 1034, 243, 1035,
- 1036, 1037, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 1038, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 1039, 1040,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 1041, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 1042, 336, 337, 338,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 1043, 1044,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 1045, 403, 404, 405, 406, 407,
- 1046, 409, 410, 411, 412, 413, 414, 415, 416, 1047,
- 1048, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 1049, 441, 442, 443, 444, 445, 446,
- 447, 1050, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 1051, 461, 462, 463, 464, 465, 466,
+ 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 1052, 505, 506,
- 507, 508, 509, 510, 1053, 512, 513, 514, 515, 516,
- 517, 1054, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 1055, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 1056, 1057, 1058, 1059, 571, 572, 573, 574, 1060,
- 1061, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 1062, 590, 1063, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 1064, 604, 1065,
- 606, 607, 608, 0, 609, 610, 611, 1066, 0, 0,
- 0, 0, 0, 0, 0, 0, 1562, 1563, 0, 0,
- 949, 0, 1069, 0, 0, 950, 951, 1070, 0, 0,
- 0, 1071, 1072, 0, 0, 1073, 952, 953, 0, 954,
- 955, 956, 957, 958, 959, 960, 961, 962, 963, 964,
- 0, 0, 0, 0, 0, 0, 0, 965, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 966, 967, 968, 969, 0, 0,
- 0, 0, 0, 0, 0, 970, 971, 0, 972, 0,
- 0, 0, 0, 0, 0, 973, 974, 0, 0, 975,
- 976, 977, 978, 0, 979, 176, 0, 980, 981, 0,
- 0, 0, 0, 0, 0, 0, 982, 0, 0, 983,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 984, 985, 986,
- 0, 987, 0, 0, 0, 0, 0, 0, 0, 988,
- 989, 990, 178, 0, 0, 0, 0, 0, 991, 0,
- 0, 179, 0, 0, 0, 0, 0, 992, 0, 0,
- 1677, 0, 0, 0, 0, 0, 0, 0, 0, 994,
- 0, 995, 0, 996, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 997, 998, 0,
- 999, 0, 0, 0, 1000, 180, 0, 0, 0, 1001,
- 0, 0, 181, 0, 0, 1003, 1004, 1005, 1006, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 1007, 1008, 1009, 0,
- 1010, 0, 0, 0, 0, 0, 0, 1011, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1012, 0,
- 0, 0, 0, 0, 0, 0, 1013, 1014, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1015, 0, 0, 0, 0,
- 0, 0, 1016, 1017, 0, 1018, 1019, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1020, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1021, 1022, 1023,
- 0, 0, 0, 0, 0, 1024, 1025, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 1026, 1027, 1028, 1029, 195, 196,
- 197, 1030, 199, 200, 201, 202, 203, 204, 1031, 206,
- 207, 208, 209, 210, 211, 212, 1032, 214, 215, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 1033, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 1034, 243, 1035, 1036,
- 1037, 0, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 1038, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 1039, 1040, 274,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
- 321, 322, 323, 1041, 325, 326, 327, 328, 329, 330,
- 331, 0, 332, 333, 334, 1042, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 1043, 1044, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 1045, 403, 404, 405, 406, 407, 1046,
- 409, 410, 411, 412, 413, 414, 415, 416, 1047, 1048,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
- 438, 439, 1049, 441, 442, 443, 444, 445, 446, 447,
- 1050, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 1051, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 1052, 505, 506, 507,
- 508, 509, 510, 1053, 512, 513, 514, 515, 516, 517,
- 1054, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 1055, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 1056, 1057, 1058, 1059, 571, 572, 573, 574, 1060, 1061,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 1062, 590, 1063, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 1064, 604, 1065, 606,
- 607, 608, 0, 609, 610, 611, 1066, 0, 0, 0,
- 0, 0, 0, 0, 0, 1562, 1563, 0, 0, 949,
- 0, 1069, 0, 0, 950, 951, 1070, 0, 0, 0,
- 1071, 1072, 0, 0, 1073, 952, 953, 0, 954, 955,
- 956, 957, 958, 959, 960, 961, 962, 963, 964, 0,
- 0, 0, 0, 0, 0, 0, 965, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 966, 967, 968, 969, 0, 0, 0,
- 0, 0, 0, 0, 970, 971, 0, 972, 0, 0,
- 0, 0, 0, 0, 973, 974, 0, 0, 975, 976,
- 977, 978, 0, 979, 176, 0, 980, 981, 0, 0,
- 0, 0, 0, 0, 0, 982, 0, 0, 983, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 984, 985, 986, 0,
- 987, 0, 0, 0, 0, 0, 0, 0, 988, 989,
- 990, 178, 0, 0, 0, 0, 0, 991, 0, 0,
- 179, 0, 0, 0, 0, 0, 992, 0, 0, 993,
- 0, 0, 0, 0, 0, 0, 0, 0, 994, 0,
- 995, 0, 996, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 997, 998, 0, 999,
- 0, 0, 0, 1000, 180, 0, 0, 0, 1001, 0,
- 0, 181, 0, 0, 1003, 1004, 1005, 1006, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 1007, 1008, 1009, 0, 1010,
- 0, 0, 0, 0, 0, 0, 1011, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0,
- 0, 0, 0, 0, 0, 1013, 1014, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1015, 0, 0, 0, 0, 0,
- 0, 1016, 1017, 0, 1018, 1019, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1020, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1021, 1022, 1023, 0,
- 0, 0, 0, 0, 1024, 1025, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 1026, 1027, 1028, 1029, 195, 196, 197,
- 1030, 199, 200, 201, 202, 203, 204, 1031, 206, 207,
- 208, 209, 210, 211, 212, 1032, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 1033, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 1034, 243, 1035, 1036, 1037,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 1038, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 1039, 1040, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 1041, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 1042, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 1043, 1044, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 1045, 403, 404, 405, 406, 407, 1046, 409,
- 410, 411, 412, 413, 414, 415, 416, 1047, 1048, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 1049, 441, 442, 443, 444, 445, 446, 447, 1050,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 1051, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 1052, 505, 506, 507, 508,
- 509, 510, 1053, 512, 513, 514, 515, 516, 517, 1054,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 1055, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 1056,
- 1057, 1058, 1059, 571, 572, 573, 574, 1060, 1061, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 1062, 590, 1063, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 1064, 604, 1065, 606, 607,
- 608, 0, 609, 610, 611, 1066, 0, 0, 0, 0,
- 0, 0, 0, 0, 1067, 1068, 0, 0, 949, 0,
- 1069, 0, 0, 950, 951, 1070, 0, 0, 0, 1071,
- 1072, 0, 0, 1073, 952, 953, 0, 954, 955, 956,
- 957, 958, 959, 960, 961, 962, 963, 964, 0, 0,
- 0, 0, 0, 0, 0, 965, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 966, 967, 968, 969, 0, 0, 0, 0,
- 0, 0, 0, 970, 971, 0, 972, 0, 0, 0,
- 0, 0, 0, 973, 974, 0, 0, 975, 976, 977,
- 978, 0, 979, 176, 0, 980, 981, 0, 0, 0,
- 0, 0, 0, 0, 982, 0, 0, 983, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 177, 0, 0, 0, 984, 985, 986, 0, 987,
- 0, 0, 0, 0, 0, 0, 0, 988, 989, 990,
- 178, 0, 0, 0, 0, 0, 991, 0, 0, 179,
- 0, 0, 0, 0, 0, 992, 0, 0, 2391, 0,
- 0, 0, 0, 0, 0, 0, 0, 994, 0, 995,
- 0, 996, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 997, 998, 0, 999, 0,
- 0, 0, 1000, 180, 0, 0, 0, 1001, 0, 0,
- 181, 0, 0, 1003, 1004, 1005, 1006, 0, 0, 0,
- 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 183, 1007, 1008, 1009, 0, 1010, 0,
- 0, 0, 0, 0, 0, 1011, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0,
- 0, 0, 0, 0, 1013, 1014, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1015, 0, 0, 0, 0, 0, 0,
- 1016, 1017, 0, 1018, 1019, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1020, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1021, 1022, 1023, 0, 0,
- 0, 0, 0, 1024, 1025, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 1026, 1027, 1028, 1029, 195, 196, 197, 1030,
- 199, 200, 201, 202, 203, 204, 1031, 206, 207, 208,
- 209, 210, 211, 212, 1032, 214, 215, 0, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 1033, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 1034, 243, 1035, 1036, 1037, 0,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 1038, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 1039, 1040, 274, 275, 0,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
- 323, 1041, 325, 326, 327, 328, 329, 330, 331, 0,
- 332, 333, 334, 1042, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 1043, 1044, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 1045, 403, 404, 405, 406, 407, 1046, 409, 410,
- 411, 412, 413, 414, 415, 416, 1047, 1048, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
- 1049, 441, 442, 443, 444, 445, 446, 447, 1050, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 1051, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 1052, 505, 506, 507, 508, 509,
- 510, 1053, 512, 513, 514, 515, 516, 517, 1054, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 1055,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 1056, 1057,
- 1058, 1059, 571, 572, 573, 574, 1060, 1061, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 1062, 590, 1063, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 1064, 604, 1065, 606, 607, 608,
- 0, 609, 610, 611, 1066, 0, 0, 0, 0, 0,
- 0, 0, 0, 1067, 1068, 0, 0, 949, 0, 1069,
- 0, 0, 950, 951, 1070, 0, 0, 0, 1071, 1072,
- 0, 0, 1073, 952, 953, 0, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 0, 0, 0,
- 0, 0, 0, 0, 965, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 966, 967, 968, 969, 0, 0, 0, 0, 0,
- 0, 0, 970, 971, 0, 972, 0, 0, 0, 0,
- 0, 0, 973, 974, 0, 0, 975, 976, 977, 978,
- 0, 979, 176, 0, 980, 981, 0, 0, 0, 0,
- 0, 0, 0, 982, 0, 0, 983, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 984, 985, 986, 0, 987, 0,
- 0, 0, 0, 0, 0, 0, 988, 989, 990, 178,
- 0, 0, 0, 0, 0, 991, 0, 0, 179, 0,
- 0, 0, 0, 0, 992, 0, 0, 2393, 0, 0,
- 0, 0, 0, 0, 0, 0, 994, 0, 995, 0,
- 996, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 997, 998, 0, 999, 0, 0,
- 0, 1000, 180, 0, 0, 0, 1001, 0, 0, 181,
- 0, 0, 1003, 1004, 1005, 1006, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 1007, 1008, 1009, 0, 1010, 0, 0,
- 0, 0, 0, 0, 1011, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0,
- 0, 0, 0, 1013, 1014, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1015, 0, 0, 0, 0, 0, 0, 1016,
- 1017, 0, 1018, 1019, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1020, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1021, 1022, 1023, 0, 0, 0,
- 0, 0, 1024, 1025, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 1026, 1027, 1028, 1029, 195, 196, 197, 1030, 199,
- 200, 201, 202, 203, 204, 1031, 206, 207, 208, 209,
- 210, 211, 212, 1032, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 1033, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 1034, 243, 1035, 1036, 1037, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 1038, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 1039, 1040, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 1041, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 1042, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 1043, 1044, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 1045, 403, 404, 405, 406, 407, 1046, 409, 410, 411,
- 412, 413, 414, 415, 416, 1047, 1048, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 1049,
- 441, 442, 443, 444, 445, 446, 447, 1050, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 1051,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 1052, 505, 506, 507, 508, 509, 510,
- 1053, 512, 513, 514, 515, 516, 517, 1054, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 1055, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 1056, 1057, 1058,
- 1059, 571, 572, 573, 574, 1060, 1061, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 1062,
- 590, 1063, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 1064, 604, 1065, 606, 607, 608, 0,
- 609, 610, 611, 1066, 0, 0, 0, 0, 0, 0,
- 0, 0, 1067, 1068, 0, 0, 949, 0, 1069, 0,
- 0, 950, 951, 1070, 0, 0, 0, 1071, 1072, 0,
- 0, 1073, 5920, 5921, 0, 954, 955, 956, 957, 958,
- 959, 960, 961, 962, 963, 964, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 967, 968, 969, 0, 0, 0, 0, 0, 0,
- 0, 970, 971, 0, 972, 0, 0, 0, 0, 0,
- 0, 973, 974, 0, 0, 975, 976, 977, 978, 0,
- 979, 176, 0, 980, 981, 0, 0, 0, 0, 0,
- 0, 0, 982, 0, 0, 983, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 984, 985, 986, 0, 987, 0, 0,
- 0, 0, 0, 0, 0, 988, 989, 990, 178, 0,
- 0, 0, 0, 0, 991, 0, 0, 179, 0, 0,
- 0, 0, 0, 992, 0, 0, 1561, 0, 0, 0,
- 0, 0, 0, 0, 0, 994, 0, 995, 0, 996,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 997, 998, 0, 999, 0, 0, 0,
- 1000, 180, 0, 0, 0, 1001, 0, 0, 181, 0,
- 0, 1003, 1004, 1005, 1006, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 1007, 1008, 1009, 0, 1010, 0, 0, 0,
- 0, 0, 0, 1011, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0,
- 0, 0, 1013, 1014, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1015, 0, 0, 0, 0, 0, 0, 1016, 1017,
- 0, 1018, 1019, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1020, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1021, 1022, 1023, 0, 0, 0, 0,
- 0, 1024, 1025, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 1026, 1027, 1028, 1029, 195, 196, 197, 1030, 199, 200,
- 201, 202, 203, 204, 1031, 206, 207, 208, 209, 210,
- 211, 212, 1032, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 1033,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 1034, 243, 1035, 1036, 1037, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 1038, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 1039, 1040, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 321, 322, 323, 1041,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 1042, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 1043, 1044, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 1045,
- 403, 404, 405, 406, 407, 1046, 409, 410, 411, 412,
- 413, 414, 415, 416, 1047, 1048, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 1049, 441,
- 442, 443, 444, 445, 446, 447, 1050, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 1051, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 1052, 505, 506, 507, 508, 509, 510, 1053,
- 512, 513, 514, 515, 516, 517, 1054, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 1055, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 1056, 1057, 1058, 1059,
- 571, 572, 573, 574, 1060, 1061, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 1062, 590,
- 1063, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 1064, 604, 1065, 606, 607, 608, 0, 609,
- 610, 611, 1066, 0, 0, 0, 0, 0, 0, 0,
- 0, 5922, 5923, 0, 0, 949, 0, 0, 0, 0,
- 1599, 0, 5924, 0, 0, 0, 0, 1072, 0, 0,
- 1073, 1554, 1555, 0, 954, 955, 956, 957, 958, 959,
- 960, 961, 962, 963, 964, 0, 0, 0, 0, 0,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, 532, 533, 0, 0, 534,
+ 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 0, 610, 611, 612,
+ 613, 174, 175, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1346, 0, 0, 0, 0, 1347, 0, 0, 782,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -8721,15 +9536,15 @@ static const yytype_int16 yytable[] =
176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
- 0, 0, 0, 0, 986, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1345, 0, 0,
0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 1006, 0, 0, 0, 0, 0, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -8738,7 +9553,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1020, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
@@ -8750,7 +9565,7 @@ static const yytype_int16 yytable[] =
241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 2427, 273, 274, 275, 0, 276, 277, 278,
+ 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
@@ -8777,94 +9592,18 @@ static const yytype_int16 yytable[] =
503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 2428, 568, 569, 2429, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 6200, 609, 610,
- 611, 612, 2347, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 174, 175, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 6200,
- 609, 610, 611, 612, 2347, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 174, 175, 0, 0, 0,
- 0, 0, 0, 0, 6201, 0, 0, 0, 0, 0,
- 0, 2348, 0, 0, 0, 0, 0, 0, 0, 0,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 0, 610, 611, 612, 613, 174, 175, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1346, 0, 0, 0, 0,
+ 0, 0, 0, 782, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -8927,93 +9666,18 @@ static const yytype_int16 yytable[] =
499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 1599, 609, 610, 611, 612, 0, 0, 0, 0,
- 0, 0, 1554, 1555, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2348, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
- 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 529, 530, 531, 532, 533, 0, 0, 534, 535, 0,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 0, 610, 611, 612, 613, 174,
+ 175, 0, 0, 0, 0, 0, 0, 0, 0, 2811,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 1599, 609,
- 610, 611, 612, 0, 0, 0, 0, 0, 0, 1554,
- 1555, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1600, 0, 0, 0, 0, 0, 0, 0,
- 1073, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 782, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9076,104 +9740,104 @@ static const yytype_int16 yytable[] =
495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 2347, 609, 610, 611, 612,
- 0, 0, 0, 0, 0, 0, 174, 175, 0, 0,
+ 525, 526, 527, 528, 529, 530, 531, 532, 533, 0,
+ 0, 534, 535, 0, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
+ 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 0, 610,
+ 611, 612, 613, 174, 175, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1073, 0, 0,
+ 0, 0, 0, 5036, 0, 0, 0, 0, 0, 0,
+ 0, 4861, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 5369, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
- 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
- 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 0,
+ 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 0, 610, 611, 612, 613, 174, 175, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4861, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2348, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4821, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 745, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 3155, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3156, 0,
+ 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
@@ -9184,7 +9848,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 747, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9202,8 +9866,8 @@ static const yytype_int16 yytable[] =
274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
+ 303, 0, 0, 304, 305, 306, 779, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 0, 780, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
@@ -9216,8 +9880,8 @@ static const yytype_int16 yytable[] =
408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 4822, 450, 451, 452, 453, 454, 455, 456,
+ 437, 438, 439, 440, 441, 442, 443, 444, 445, 781,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
@@ -9225,101 +9889,176 @@ static const yytype_int16 yytable[] =
497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
+ 527, 528, 529, 530, 531, 532, 533, 0, 0, 534,
+ 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 0, 610, 611, 612,
+ 613, 174, 175, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 782,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4823, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1336, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 39, 0, 0, 0, 0, 0,
- 0, 0, 0, 41, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 174,
- 175, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0,
- 0, 0, 0, 0, 0, 0, 776, 0, 0, 0,
+ 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 0, 610, 611, 612, 613, 174, 175, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 782, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
+ 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
+ 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
+ 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, 532, 533, 0, 0, 534, 535, 0,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 0, 610, 611, 612, 613, 174,
+ 175, 799, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 704, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4861, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1335, 0, 0, 0, 0, 177, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1421, 0, 0, 176, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1336, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9373,241 +10112,321 @@ static const yytype_int16 yytable[] =
495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337,
- 0, 0, 0, 0, 1338, 0, 0, 776, 0, 0,
+ 525, 526, 527, 528, 529, 530, 531, 0, 533, 0,
+ 0, 534, 535, 0, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
+ 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 0, 610,
+ 611, 612, 613, 174, 175, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1680, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1336, 0, 0, 0,
- 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
- 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
- 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 1169, 610, 611, 612, 613, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 2411, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1170, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1171, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1172, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 1173, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 1174, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 1175, 322, 323, 324, 325, 1176, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 1177, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 1178, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 1179, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 1180, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 1181, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 1182, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 1183, 542,
543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 563, 564, 565, 566, 567, 568, 569, 570, 1184, 572,
573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 174, 175, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1337, 0, 0, 0, 0, 1338, 0, 0, 776, 0,
+ 603, 604, 1185, 606, 607, 608, 609, 1169, 610, 611,
+ 612, 613, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 174, 175, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1170, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1171, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1336, 0, 0,
- 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1172, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1337, 0, 0, 0, 0, 0, 0, 0, 776,
+ 0, 0, 185, 186, 187, 1173, 189, 190, 191, 192,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 1174, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 318, 319, 320, 1175, 322, 323,
+ 324, 325, 1176, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 1177, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 1178, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 1179, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 1180, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 1181, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 1182, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 1185, 606, 607,
+ 608, 609, 1759, 610, 611, 612, 613, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 174, 175,
+ 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
- 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 2002, 610, 611,
+ 612, 613, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 174, 175, 799, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 704, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 174, 175, 0, 0, 0, 0, 0,
- 0, 0, 0, 2801, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 776, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9670,155 +10489,158 @@ static const yytype_int16 yytable[] =
501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 0,
- 609, 610, 611, 612, 174, 175, 0, 0, 0, 0,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 2197, 610, 611, 612, 613, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 174, 175,
+ 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4981, 0, 0, 0, 0, 0, 0,
- 0, 4823, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 178, 0, 0, 0, 0, 0, 5290, 0, 0, 179,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
- 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 1909, 610, 611,
+ 612, 613, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1564, 1565, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 0,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 174, 175, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4823, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1910, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
- 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 773, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 774, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 775, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
+ 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
@@ -9826,369 +10648,376 @@ static const yytype_int16 yytable[] =
578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 0, 609, 610, 611, 612, 174, 175, 0, 0,
+ 608, 609, 1909, 610, 611, 612, 613, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1564, 1565,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 776, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
- 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
- 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 2016, 958, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1564, 1565, 0, 0, 0, 0, 0,
+ 0, 0, 2017, 0, 2018, 0, 2019, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 776, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2020, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 0, 610, 611, 612, 613, 2016, 958, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1564, 1565,
+ 0, 0, 0, 0, 0, 0, 0, 2017, 0, 2018,
+ 0, 2019, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4823, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 0, 902, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 903, 0, 0, 0, 14, 0, 0, 904,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 16, 0, 0, 905, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 906, 0, 0, 0,
- 0, 0, 0, 0, 907, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 908, 909, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2690, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 40, 0, 0, 0, 0, 185, 186, 187,
- 910, 189, 0, 191, 192, 193, 194, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 0, 206, 207, 208, 209, 210, 211, 212, 213, 0,
- 911, 0, 0, 217, 218, 219, 220, 221, 0, 0,
- 224, 225, 226, 227, 228, 0, 0, 0, 232, 233,
- 234, 235, 236, 912, 238, 239, 240, 241, 0, 0,
- 0, 0, 0, 0, 247, 0, 249, 0, 251, 252,
- 0, 254, 255, 256, 257, 258, 259, 0, 261, 262,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 0, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 0, 284, 285, 286, 287, 0, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 0, 0,
- 0, 303, 0, 913, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 0, 0, 0, 0, 0,
- 319, 320, 914, 322, 323, 324, 0, 326, 327, 0,
- 329, 330, 0, 0, 332, 0, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 0, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 0, 356, 357,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 0, 425, 426,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 915, 0, 0, 440, 0, 442, 443, 0, 445,
- 446, 447, 448, 0, 450, 451, 452, 453, 0, 0,
- 0, 0, 458, 459, 460, 461, 462, 463, 464, 465,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 0, 485,
- 0, 487, 488, 489, 0, 491, 492, 0, 494, 495,
- 496, 497, 498, 499, 0, 501, 502, 503, 504, 505,
- 506, 507, 0, 509, 510, 511, 0, 513, 514, 515,
- 516, 0, 518, 519, 0, 0, 522, 523, 0, 0,
- 526, 527, 528, 0, 530, 0, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 0, 541, 542, 0, 544,
- 0, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 0, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 0, 577, 578, 0, 580, 581, 582, 583, 0,
- 0, 586, 587, 0, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 0,
- 0, 606, 607, 0, 0, 609, 0, 611, 612, 174,
- 175, 793, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 698, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 5590, 0, 0, 0, 0, 0, 0, 0, 0,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 2691, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 2016, 958, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1564, 1565, 0, 0, 0, 0, 0,
+ 0, 0, 2017, 0, 2018, 0, 2019, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1412, 0, 0, 176, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
+ 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
+ 0, 0, 0, 0, 0, 4120, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 0, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1670,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 0, 610, 611, 612, 613, 2016, 958, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1564, 1565,
+ 0, 0, 0, 0, 0, 0, 0, 2017, 0, 2018,
+ 0, 2019, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
- 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
- 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
- 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
@@ -10196,21 +11025,20 @@ static const yytype_int16 yytable[] =
573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 1162, 609, 610, 611,
- 612, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 174, 175, 0, 0, 0, 0, 0, 0,
- 2402, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 1564, 1565, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
- 0, 0, 0, 0, 0, 0, 0, 1165, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10228,11 +11056,11 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 1166, 189, 190, 191, 192, 193,
- 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 2417, 2418, 2419, 195, 196, 197, 198, 199, 200,
201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 1167,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
@@ -10242,114 +11070,38 @@ static const yytype_int16 yytable[] =
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 1168, 322, 323, 324,
- 325, 1169, 327, 328, 329, 330, 331, 0, 332, 333,
+ 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 1170,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 1171,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 1172, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 1173, 449, 450, 451,
+ 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 1174, 500, 501,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 1175, 517, 518, 519, 520, 521,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 1176, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 1177, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 1178, 605, 606, 607, 608, 1162, 609,
- 610, 611, 612, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 174, 175, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 178, 0, 0, 0, 0, 0, 0, 0, 0, 1165,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
- 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 186, 187, 1166, 189, 190, 191,
- 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 1167, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 0, 318, 319, 320, 1168, 322,
- 323, 324, 325, 1169, 327, 328, 329, 330, 331, 0,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 1170, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 1171, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 1172, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, 443, 444, 445, 446, 447, 1173, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 1174,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 1175, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 1178, 605, 606, 607, 608,
- 1749, 609, 610, 611, 612, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 174, 175, 793, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 698, 0,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4356, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10414,82 +11166,7 @@ static const yytype_int16 yytable[] =
498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 1990, 609, 610, 611, 612, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 174, 175,
- 793, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 698, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
@@ -10497,10 +11174,9 @@ static const yytype_int16 yytable[] =
575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 2188, 609, 610, 611, 612, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 174, 175, 793, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 698, 0, 0, 0, 0, 0, 0, 0,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2793, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10565,92 +11241,16 @@ static const yytype_int16 yytable[] =
504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 1899, 609, 610, 611,
- 612, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1554, 1555, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1900, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
- 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 1899, 609,
- 610, 611, 612, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1554, 1555, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 1564, 1565, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4135, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10715,82 +11315,7 @@ static const yytype_int16 yytable[] =
500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 2004, 951, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1554, 1555, 0, 0,
- 0, 0, 0, 0, 0, 2005, 0, 2006, 0, 2007,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
- 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
- 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2008, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
@@ -10798,10 +11323,9 @@ static const yytype_int16 yytable[] =
577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 2004, 951, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1554, 1555,
- 0, 0, 0, 0, 0, 0, 0, 2005, 0, 2006,
- 0, 2007, 0, 0, 0, 0, 0, 0, 0, 0,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5189, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10823,7 +11347,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2679, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10862,85 +11386,10 @@ static const yytype_int16 yytable[] =
466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 2680, 505,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 2004,
- 951, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1554, 1555, 0, 0, 0, 0, 0, 0, 0, 2005,
- 0, 2006, 0, 2007, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
- 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
- 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4100, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
- 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
@@ -10948,10 +11397,9 @@ static const yytype_int16 yytable[] =
573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 2004, 951, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1554, 1555, 0, 0, 0, 0, 0, 0,
- 0, 2005, 0, 2006, 0, 2007, 0, 0, 0, 0,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5510, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11016,94 +11464,169 @@ static const yytype_int16 yytable[] =
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 1554, 1555, 0, 0, 0, 0, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 0, 0,
+ 0, 0, 0, 2848, 0, 0, 5857, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 699, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
+ 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 700, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 5464, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5465, 0, 671, 0, 5466, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 799, 0, 0, 0, 0, 0, 0, 2849,
+ 0, 0, 704, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1410, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1764, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1765, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
+ 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 2408, 2409, 2410, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 0,
- 609, 610, 611, 612, 174, 175, 0, 0, 0, 0,
- 0, 0, 0, 0, 4337, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 799, 1411, 0, 0,
+ 0, 0, 0, 0, 0, 0, 704, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1410, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11164,96 +11687,543 @@ static const yytype_int16 yytable[] =
500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 0, 1411, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3459, 3460, 3461, 3462, 3463, 3464,
+ 3465, 3466, 3467, 3468, 3469, 4149, 4150, 3471, 3472, 3473,
+ 4151, 4152, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481,
+ 4153, 3483, 3484, 0, 3485, 3486, 3487, 3488, 3489, 3490,
+ 3491, 3492, 3493, 3494, 3495, 0, 3496, 176, 3497, 3498,
+ 3499, 3500, 3501, 3502, 3503, 4154, 3505, 3506, 3507, 3508,
+ 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 4155, 3518,
+ 3519, 3520, 3521, 3522, 3523, 177, 3524, 3525, 3526, 3527,
+ 3528, 3529, 3530, 3531, 4156, 3533, 0, 3534, 3535, 3536,
+ 3537, 3538, 0, 0, 178, 3539, 3540, 3541, 3542, 3543,
+ 3544, 3545, 3546, 5540, 3548, 3549, 3550, 3551, 3552, 3553,
+ 3554, 3555, 4157, 3557, 4158, 3559, 3560, 3561, 3562, 3563,
+ 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571, 3572, 3573,
+ 3574, 3575, 3576, 4159, 4160, 4161, 3577, 3578, 3579, 3580,
+ 3581, 3582, 3583, 4162, 4163, 4164, 3584, 180, 3585, 3586,
+ 3587, 3588, 3589, 3590, 181, 3591, 3592, 3593, 3594, 3595,
+ 3596, 4165, 3597, 3598, 3599, 3600, 182, 3601, 3602, 3603,
+ 3604, 3605, 3606, 3607, 3608, 3609, 3610, 183, 3611, 3612,
+ 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622,
+ 3623, 3624, 3625, 4166, 3626, 3627, 3628, 3629, 3630, 3631,
+ 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641,
+ 3642, 3643, 3644, 3645, 3646, 3647, 3648, 4167, 3649, 3650,
+ 4168, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659,
+ 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 184, 3668,
+ 3669, 3670, 3671, 4169, 4170, 4171, 3672, 3673, 3674, 3675,
+ 3676, 3677, 3678, 3679, 0, 3681, 3682, 3683, 3684, 3685,
+ 3686, 3687, 3688, 3689, 3690, 4172, 4173, 3692, 3693, 3694,
+ 3695, 3696, 3697, 3698, 3699, 3700, 3701, 185, 186, 187,
+ 0, 189, 190, 191, 192, 193, 194, 3702, 3703, 3704,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 5541, 218, 5542, 5543, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 5544, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 5545, 5546,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 5547, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 5548, 315, 316, 317, 0, 318,
+ 319, 320, 3418, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 5549, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 5550, 5551, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 5552, 5553, 432, 3708, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 5554, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 5555,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 5556, 565, 566, 5557, 568, 569, 5558, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 5559, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 3419, 606, 607, 608, 609, 0, 610, 611,
+ 612, 5560, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3459, 3460,
+ 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 4149,
+ 4150, 3471, 3472, 3473, 4151, 4152, 3474, 3475, 3476, 3477,
+ 3478, 3479, 3480, 3481, 4153, 3483, 3484, 0, 3485, 3486,
+ 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 0,
+ 3496, 176, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 4154,
+ 3505, 3506, 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514,
+ 3515, 3516, 4155, 3518, 3519, 3520, 3521, 3522, 3523, 177,
+ 3524, 3525, 3526, 3527, 3528, 3529, 3530, 3531, 4156, 3533,
+ 0, 3534, 3535, 3536, 3537, 3538, 0, 0, 178, 3539,
+ 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549,
+ 3550, 3551, 3552, 3553, 3554, 3555, 4157, 3557, 4158, 3559,
+ 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569,
+ 3570, 3571, 3572, 3573, 3574, 3575, 3576, 4159, 4160, 4161,
+ 3577, 3578, 3579, 3580, 3581, 3582, 3583, 4162, 4163, 4164,
+ 3584, 180, 3585, 3586, 3587, 3588, 3589, 3590, 181, 3591,
+ 3592, 3593, 3594, 3595, 3596, 4165, 3597, 3598, 3599, 3600,
+ 182, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609,
+ 3610, 183, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618,
+ 3619, 3620, 3621, 3622, 3623, 3624, 3625, 4166, 3626, 3627,
+ 3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637,
+ 3638, 3639, 3640, 3641, 3642, 3643, 3644, 3645, 3646, 3647,
+ 3648, 4167, 3649, 3650, 4168, 3651, 3652, 3653, 3654, 3655,
+ 3656, 3657, 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665,
+ 3666, 3667, 184, 3668, 3669, 3670, 3671, 4169, 4170, 4171,
+ 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 0, 3681,
+ 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 4172,
+ 4173, 3692, 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700,
+ 3701, 185, 186, 187, 0, 189, 190, 191, 192, 193,
+ 194, 3702, 3703, 3704, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 0, 216, 4174, 218, 4175,
+ 4176, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 0, 4177, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 4178, 4179, 273, 274, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 4180, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 4181, 315,
+ 316, 317, 0, 318, 319, 320, 0, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 4182,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 0, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 4183, 4184, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 0, 4185, 4186, 432,
+ 3708, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 0, 4187,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 4188, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 0, 516, 517, 518, 519, 520, 0,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 559, 560, 561, 562, 563, 4189, 565, 566, 4190, 568,
+ 569, 4191, 571, 572, 573, 574, 575, 576, 4192, 578,
579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 174, 175, 0, 0, 0,
- 0, 0, 0, 0, 0, 2782, 0, 0, 0, 0,
+ 589, 590, 591, 592, 0, 4193, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 0, 606, 607, 608,
+ 609, 0, 610, 611, 612, 4194, 174, 175, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466,
+ 3467, 3468, 3469, 4149, 4150, 3471, 3472, 3473, 4151, 4152,
+ 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 4153, 3483,
+ 3484, 0, 3485, 3486, 3487, 3488, 3489, 3490, 3491, 3492,
+ 3493, 3494, 3495, 0, 3496, 176, 3497, 3498, 3499, 3500,
+ 3501, 3502, 3503, 4154, 3505, 3506, 3507, 3508, 3509, 3510,
+ 3511, 3512, 3513, 3514, 3515, 3516, 4155, 3518, 3519, 3520,
+ 3521, 3522, 3523, 177, 3524, 3525, 3526, 3527, 3528, 3529,
+ 3530, 3531, 4156, 3533, 0, 3534, 3535, 3536, 3537, 3538,
+ 0, 0, 178, 3539, 3540, 3541, 3542, 3543, 3544, 3545,
+ 3546, 3547, 3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555,
+ 4157, 3557, 4158, 3559, 3560, 3561, 3562, 3563, 3564, 3565,
+ 3566, 3567, 3568, 3569, 3570, 3571, 3572, 3573, 3574, 3575,
+ 3576, 4159, 4160, 4161, 3577, 3578, 3579, 3580, 3581, 3582,
+ 3583, 4162, 4163, 4164, 3584, 180, 3585, 3586, 3587, 3588,
+ 3589, 3590, 181, 3591, 3592, 3593, 3594, 3595, 3596, 4165,
+ 3597, 3598, 3599, 3600, 182, 3601, 3602, 3603, 3604, 3605,
+ 3606, 3607, 3608, 3609, 3610, 183, 3611, 3612, 3613, 3614,
+ 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622, 3623, 3624,
+ 3625, 4166, 3626, 3627, 3628, 3629, 3630, 3631, 3632, 3633,
+ 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, 3643,
+ 3644, 3645, 3646, 3647, 3648, 4167, 3649, 3650, 4168, 3651,
+ 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659, 3660, 3661,
+ 3662, 3663, 3664, 3665, 3666, 3667, 184, 3668, 3669, 3670,
+ 3671, 4169, 4170, 4171, 3672, 3673, 3674, 3675, 3676, 3677,
+ 3678, 3679, 0, 3681, 3682, 3683, 3684, 3685, 3686, 3687,
+ 3688, 3689, 3690, 4172, 4173, 3692, 3693, 3694, 3695, 3696,
+ 3697, 3698, 3699, 3700, 3701, 185, 186, 187, 0, 189,
+ 190, 191, 192, 193, 194, 3702, 3703, 3704, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 4174, 218, 4175, 4176, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 0,
+ 4177, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 4178, 4179, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 4180, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 4181, 315, 316, 317, 0, 318, 319, 320,
+ 0, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 4182, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 0, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 4183, 4184, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 0, 4185, 4186, 432, 3708, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 0, 4187, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 5584, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 0, 516, 517,
+ 518, 519, 520, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 4189,
+ 565, 566, 4190, 568, 569, 4191, 571, 572, 573, 574,
+ 575, 576, 5585, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 0, 4193,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 0, 606, 607, 608, 609, 0, 610, 611, 612, 4194,
+ 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3459, 3460, 3461, 3462,
+ 3463, 3464, 3465, 3466, 3467, 3468, 3469, 4149, 4150, 3471,
+ 3472, 3473, 4151, 4152, 3474, 3475, 3476, 3477, 3478, 3479,
+ 3480, 3481, 4153, 3483, 3484, 0, 3485, 3486, 3487, 3488,
+ 3489, 3490, 3491, 3492, 3493, 3494, 3495, 0, 3496, 176,
+ 3497, 3498, 3499, 3500, 3501, 3502, 3503, 4154, 3505, 3506,
+ 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516,
+ 4155, 3518, 3519, 3520, 3521, 3522, 3523, 177, 3524, 3525,
+ 3526, 3527, 3528, 3529, 3530, 3531, 4156, 3533, 0, 3534,
+ 3535, 3536, 3537, 3538, 0, 0, 178, 3539, 3540, 3541,
+ 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551,
+ 3552, 3553, 3554, 3555, 4157, 3557, 4158, 3559, 3560, 3561,
+ 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571,
+ 3572, 3573, 3574, 3575, 3576, 4159, 4160, 4161, 3577, 3578,
+ 3579, 3580, 3581, 3582, 3583, 4162, 4163, 4164, 3584, 180,
+ 3585, 3586, 3587, 3588, 3589, 3590, 181, 3591, 3592, 3593,
+ 3594, 3595, 3596, 4165, 3597, 3598, 3599, 3600, 182, 3601,
+ 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 183,
+ 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620,
+ 3621, 3622, 3623, 3624, 3625, 4166, 3626, 3627, 3628, 3629,
+ 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639,
+ 3640, 3641, 3642, 3643, 3644, 3645, 3646, 3647, 3648, 4167,
+ 3649, 3650, 4168, 3651, 3652, 3653, 3654, 3655, 3656, 3657,
+ 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667,
+ 184, 3668, 3669, 3670, 3671, 4169, 4170, 4171, 3672, 3673,
+ 3674, 3675, 3676, 3677, 3678, 3679, 0, 3681, 3682, 3683,
+ 3684, 3685, 3686, 3687, 3688, 3689, 3690, 4172, 4173, 3692,
+ 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700, 3701, 185,
+ 186, 187, 0, 189, 190, 191, 192, 193, 194, 3702,
+ 3703, 3704, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 4174, 218, 4175, 4176, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 0, 4177, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 4178, 4179, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 4180, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 4181, 315, 316, 317,
+ 0, 318, 319, 320, 0, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 4182, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 0, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 4183,
+ 4184, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 0, 4185, 4186, 432, 3708, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 0, 4187, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 0, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 0, 516, 517, 518, 519, 520, 0, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 4189, 565, 566, 4190, 568, 569, 4191,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 0, 4193, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 0, 606, 607, 608, 609, 0,
+ 610, 611, 612, 4194, 174, 175, 799, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 704, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 858, 859, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 860, 0, 0, 0, 861,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 862, 0, 0, 0,
+ 0, 0, 0, 0, 0, 863, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 864, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 179,
+ 865, 0, 0, 0, 0, 866, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 867, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 868, 0, 0,
+ 0, 869, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 870,
+ 0, 0, 0, 871, 872, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 873, 0, 0, 0, 0, 0,
+ 0, 874, 875, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
- 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 0, 876, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
+ 247, 248, 249, 250, 251, 252, 253, 254, 877, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 878, 298, 299, 300, 301, 879, 303, 0, 0,
+ 304, 305, 306, 307, 308, 309, 310, 880, 881, 313,
+ 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 0,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 882, 463, 464, 465, 883, 467, 468, 469,
+ 470, 471, 884, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 885, 484, 485, 486, 487, 488, 886,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 887, 521, 522, 523, 888, 525, 526, 527, 528, 529,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 889, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1147, 859, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 860,
+ 0, 0, 0, 861, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
+ 862, 0, 0, 0, 0, 0, 0, 0, 0, 863,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 864, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 865, 0, 0, 0, 0, 866,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 867, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 868, 0, 0, 0, 869, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 870, 0, 0, 0, 871, 872, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 873, 0,
+ 0, 0, 0, 0, 0, 874, 875, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 1148, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 876, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 877, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 878, 298, 299, 300, 301,
+ 879, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 880, 881, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 882, 463, 464, 465,
+ 1149, 467, 468, 469, 470, 471, 884, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 885, 484, 485,
+ 486, 487, 488, 886, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 887, 521, 522, 523, 888, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 889,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 2219, 2220, 5288,
+ 0, 5289, 0, 5290, 704, 5291, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 0, 609, 610, 611, 612, 1554, 1555, 0, 0,
- 0, 0, 0, 0, 0, 0, 4116, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5292, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 799, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 704, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 861, 1421, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
@@ -11312,155 +12282,7 @@ static const yytype_int16 yytable[] =
498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 0,
- 0, 0, 0, 0, 0, 0, 0, 5129, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 5430, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
@@ -11468,90 +12290,16 @@ static const yytype_int16 yytable[] =
575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 174,
- 175, 0, 0, 0, 0, 0, 2838, 0, 0, 5755,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 693, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 694, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 5384,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5385, 0, 665, 0, 5386,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 799, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 704, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 174, 175, 793, 0, 0, 0, 0, 0, 0, 2839,
- 0, 0, 698, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1401, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1754, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1779, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1780, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
@@ -11609,541 +12357,97 @@ static const yytype_int16 yytable[] =
504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 174, 175, 793, 1402, 0, 0, 0, 0, 0,
- 0, 0, 0, 698, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1401, 0, 0, 0, 0, 0,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 1305, 0,
+ 0, 1306, 1307, 0, 0, 0, 1308, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 179,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 0, 1402, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3451, 3452,
- 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, 4130,
- 4131, 3463, 3464, 3465, 4132, 4133, 3466, 3467, 3468, 3469,
- 3470, 3471, 3472, 3473, 4134, 3475, 3476, 0, 3477, 3478,
- 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, 0,
- 3488, 176, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 4135,
- 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506,
- 3507, 3508, 4136, 3510, 3511, 3512, 3513, 3514, 3515, 177,
- 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3523, 4137, 3525,
- 0, 3526, 3527, 3528, 3529, 3530, 0, 0, 178, 3531,
- 3532, 3533, 3534, 3535, 3536, 3537, 3538, 5460, 3540, 3541,
- 3542, 3543, 3544, 3545, 3546, 3547, 4138, 3549, 4139, 3551,
- 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 3561,
- 3562, 3563, 3564, 3565, 3566, 3567, 3568, 4140, 4141, 4142,
- 3569, 3570, 3571, 3572, 3573, 3574, 3575, 4143, 4144, 4145,
- 3576, 180, 3577, 3578, 3579, 3580, 3581, 3582, 181, 3583,
- 3584, 3585, 3586, 3587, 3588, 4146, 3589, 3590, 3591, 3592,
- 182, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601,
- 3602, 183, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610,
- 3611, 3612, 3613, 3614, 3615, 3616, 3617, 4147, 3618, 3619,
- 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629,
- 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639,
- 3640, 4148, 3641, 3642, 4149, 3643, 3644, 3645, 3646, 3647,
- 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657,
- 3658, 3659, 184, 3660, 3661, 3662, 3663, 4150, 4151, 4152,
- 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671, 0, 3673,
- 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 4153,
- 4154, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3692,
- 3693, 185, 186, 187, 0, 189, 190, 191, 192, 193,
- 194, 3694, 3695, 3696, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 0, 216, 5461, 218, 5462,
- 5463, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 5464, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 5465, 5466, 273, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 5467, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 5468, 315,
- 316, 317, 0, 318, 319, 320, 3410, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 5469,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 5470, 5471, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 5472, 5473, 432,
- 3700, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 5474,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 5475, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 5476, 565, 566, 5477, 568, 569, 5478,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 5479, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 3411, 605, 606, 607, 608, 0, 609,
- 610, 611, 5480, 174, 175, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3451,
- 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461,
- 4130, 4131, 3463, 3464, 3465, 4132, 4133, 3466, 3467, 3468,
- 3469, 3470, 3471, 3472, 3473, 4134, 3475, 3476, 0, 3477,
- 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487,
- 0, 3488, 176, 3489, 3490, 3491, 3492, 3493, 3494, 3495,
- 4135, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505,
- 3506, 3507, 3508, 4136, 3510, 3511, 3512, 3513, 3514, 3515,
- 177, 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3523, 4137,
- 3525, 0, 3526, 3527, 3528, 3529, 3530, 0, 0, 178,
- 3531, 3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539, 3540,
- 3541, 3542, 3543, 3544, 3545, 3546, 3547, 4138, 3549, 4139,
- 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560,
- 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 4140, 4141,
- 4142, 3569, 3570, 3571, 3572, 3573, 3574, 3575, 4143, 4144,
- 4145, 3576, 180, 3577, 3578, 3579, 3580, 3581, 3582, 181,
- 3583, 3584, 3585, 3586, 3587, 3588, 4146, 3589, 3590, 3591,
- 3592, 182, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600,
- 3601, 3602, 183, 3603, 3604, 3605, 3606, 3607, 3608, 3609,
- 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 4147, 3618,
- 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628,
- 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638,
- 3639, 3640, 4148, 3641, 3642, 4149, 3643, 3644, 3645, 3646,
- 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656,
- 3657, 3658, 3659, 184, 3660, 3661, 3662, 3663, 4150, 4151,
- 4152, 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671, 0,
- 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682,
- 4153, 4154, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691,
- 3692, 3693, 185, 186, 187, 0, 189, 190, 191, 192,
- 193, 194, 3694, 3695, 3696, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 4155, 218,
- 4156, 4157, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 0, 4158, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 4159, 4160, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 4161, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 4162,
- 315, 316, 317, 0, 318, 319, 320, 0, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 4163, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 0, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 4164, 4165, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 0, 4166, 4167,
- 432, 3700, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 0,
- 4168, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 4169, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 0, 516, 517, 518, 519, 520,
- 0, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 4170, 565, 566, 4171, 568, 569,
- 4172, 571, 572, 573, 574, 575, 576, 4173, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 0, 4174, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 0, 605, 606, 607, 608, 0,
- 609, 610, 611, 4175, 174, 175, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460,
- 3461, 4130, 4131, 3463, 3464, 3465, 4132, 4133, 3466, 3467,
- 3468, 3469, 3470, 3471, 3472, 3473, 4134, 3475, 3476, 0,
- 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486,
- 3487, 0, 3488, 176, 3489, 3490, 3491, 3492, 3493, 3494,
- 3495, 4135, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504,
- 3505, 3506, 3507, 3508, 4136, 3510, 3511, 3512, 3513, 3514,
- 3515, 177, 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3523,
- 4137, 3525, 0, 3526, 3527, 3528, 3529, 3530, 0, 0,
- 178, 3531, 3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539,
- 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 4138, 3549,
- 4139, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559,
- 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 4140,
- 4141, 4142, 3569, 3570, 3571, 3572, 3573, 3574, 3575, 4143,
- 4144, 4145, 3576, 180, 3577, 3578, 3579, 3580, 3581, 3582,
- 181, 3583, 3584, 3585, 3586, 3587, 3588, 4146, 3589, 3590,
- 3591, 3592, 182, 3593, 3594, 3595, 3596, 3597, 3598, 3599,
- 3600, 3601, 3602, 183, 3603, 3604, 3605, 3606, 3607, 3608,
- 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 4147,
- 3618, 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627,
- 3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637,
- 3638, 3639, 3640, 4148, 3641, 3642, 4149, 3643, 3644, 3645,
- 3646, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655,
- 3656, 3657, 3658, 3659, 184, 3660, 3661, 3662, 3663, 4150,
- 4151, 4152, 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671,
- 0, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681,
- 3682, 4153, 4154, 3684, 3685, 3686, 3687, 3688, 3689, 3690,
- 3691, 3692, 3693, 185, 186, 187, 0, 189, 190, 191,
- 192, 193, 194, 3694, 3695, 3696, 195, 196, 197, 198,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 0, 216, 4155,
- 218, 4156, 4157, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 0, 4158, 237,
+ 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 4159, 4160, 273, 274, 275, 0,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 4161, 293, 294, 295,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 4162, 315, 316, 317, 0, 318, 319, 320, 0, 322,
+ 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
323, 324, 325, 326, 327, 328, 329, 330, 331, 0,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 4163, 354, 355, 356, 357, 358, 359, 360, 361,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
- 391, 392, 393, 394, 395, 0, 397, 398, 399, 400,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 4164, 4165, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 0, 4166,
- 4167, 432, 3700, 433, 434, 435, 436, 437, 438, 439,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 0, 4168, 472, 473, 474, 475, 476, 477, 478, 479,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 5504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 0, 516, 517, 518, 519,
- 520, 0, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 4170, 565, 566, 4171, 568,
- 569, 4172, 571, 572, 573, 574, 575, 576, 5505, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 0, 4174, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 0, 605, 606, 607, 608,
- 0, 609, 610, 611, 4175, 174, 175, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459,
- 3460, 3461, 4130, 4131, 3463, 3464, 3465, 4132, 4133, 3466,
- 3467, 3468, 3469, 3470, 3471, 3472, 3473, 4134, 3475, 3476,
- 0, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485,
- 3486, 3487, 0, 3488, 176, 3489, 3490, 3491, 3492, 3493,
- 3494, 3495, 4135, 3497, 3498, 3499, 3500, 3501, 3502, 3503,
- 3504, 3505, 3506, 3507, 3508, 4136, 3510, 3511, 3512, 3513,
- 3514, 3515, 177, 3516, 3517, 3518, 3519, 3520, 3521, 3522,
- 3523, 4137, 3525, 0, 3526, 3527, 3528, 3529, 3530, 0,
- 0, 178, 3531, 3532, 3533, 3534, 3535, 3536, 3537, 3538,
- 3539, 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 4138,
- 3549, 4139, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558,
- 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568,
- 4140, 4141, 4142, 3569, 3570, 3571, 3572, 3573, 3574, 3575,
- 4143, 4144, 4145, 3576, 180, 3577, 3578, 3579, 3580, 3581,
- 3582, 181, 3583, 3584, 3585, 3586, 3587, 3588, 4146, 3589,
- 3590, 3591, 3592, 182, 3593, 3594, 3595, 3596, 3597, 3598,
- 3599, 3600, 3601, 3602, 183, 3603, 3604, 3605, 3606, 3607,
- 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617,
- 4147, 3618, 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626,
- 3627, 3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636,
- 3637, 3638, 3639, 3640, 4148, 3641, 3642, 4149, 3643, 3644,
- 3645, 3646, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654,
- 3655, 3656, 3657, 3658, 3659, 184, 3660, 3661, 3662, 3663,
- 4150, 4151, 4152, 3664, 3665, 3666, 3667, 3668, 3669, 3670,
- 3671, 0, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680,
- 3681, 3682, 4153, 4154, 3684, 3685, 3686, 3687, 3688, 3689,
- 3690, 3691, 3692, 3693, 185, 186, 187, 0, 189, 190,
- 191, 192, 193, 194, 3694, 3695, 3696, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 4155, 218, 4156, 4157, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 0, 4158,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 4159, 4160, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 4161, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 4162, 315, 316, 317, 0, 318, 319, 320, 0,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 4163, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 0, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 4164, 4165, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 0,
- 4166, 4167, 432, 3700, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 0, 4168, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 0, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 0, 516, 517, 518,
- 519, 520, 0, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 4170, 565, 566, 4171,
- 568, 569, 4172, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 0, 4174, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 0, 605, 606, 607,
- 608, 0, 609, 610, 611, 4175, 174, 175, 793, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 698, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 851, 852, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 853, 0, 0,
- 0, 854, 0, 0, 0, 176, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 855, 0,
- 0, 0, 0, 0, 0, 0, 0, 856, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 857, 0,
- 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
- 0, 179, 858, 0, 0, 0, 0, 859, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 860, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
- 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 861,
- 0, 0, 0, 862, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 863, 0, 0, 0, 864, 865, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 866, 0, 0, 0,
- 0, 0, 0, 867, 868, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
- 869, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
- 870, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 871, 298, 299, 300, 301, 872, 303,
- 0, 0, 304, 305, 306, 307, 308, 309, 310, 873,
- 874, 313, 314, 315, 316, 317, 0, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 875, 463, 464, 465, 876, 467,
- 468, 469, 470, 471, 877, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 878, 484, 485, 486, 487,
- 488, 879, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 880, 521, 522, 523, 881, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 882, 553, 554, 555, 556,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 793,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 698,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1140, 852, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 853, 0,
- 0, 0, 854, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 855,
- 0, 0, 0, 0, 0, 0, 0, 0, 856, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 857,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 858, 0, 0, 0, 0, 859, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 860, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 861, 0, 0, 0, 862, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 863, 0, 0, 0, 864, 865, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 866, 0, 0,
- 0, 0, 0, 0, 867, 868, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 1141, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 869, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 870, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 871, 298, 299, 300, 301, 872,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 873, 874, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 875, 463, 464, 465, 1142,
- 467, 468, 469, 470, 471, 877, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 878, 484, 485, 486,
- 487, 488, 879, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 880, 521, 522, 523, 881, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 882, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
- 0, 0, 0, 2210, 2211, 5227, 0, 5228, 0, 5229,
- 698, 5230, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1764, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 5231, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1765, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12201,155 +12505,7 @@ static const yytype_int16 yytable[] =
496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 174,
- 175, 793, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 698, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 854, 1412, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 174, 175, 793, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 698, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1769, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1770, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
- 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
- 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
- 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
@@ -12357,90 +12513,16 @@ static const yytype_int16 yytable[] =
573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 174, 175, 0, 0, 1298, 0, 0, 1299, 1300,
- 0, 0, 0, 1301, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 793, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 698, 0, 0, 0, 0, 0,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 799, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 704, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1754, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1421, 0,
0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
@@ -12498,92 +12580,167 @@ static const yytype_int16 yytable[] =
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 174, 175, 793, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 698, 0, 0, 0, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 799, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 704, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1815, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1412,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
+ 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 799, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 704, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 0,
- 609, 610, 611, 612, 174, 175, 793, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 698, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1805, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 861, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
+ 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 1564, 1565, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12611,7 +12768,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 192, 193, 194, 2417, 2418, 2419, 195, 196, 197, 198,
199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
@@ -12646,93 +12803,168 @@ static const yytype_int16 yytable[] =
500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 174, 175, 793, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 698, 0, 0,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3083, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 854, 0, 0, 0, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
- 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 0, 609, 610, 611, 612, 1554, 1555, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3413,
+ 3414, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3415, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 185, 186, 187, 0, 189, 190, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 3416, 3417, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 0, 318, 319, 320, 3418, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 3419, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 799, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 704, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1764, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
@@ -12759,7 +12991,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 2408, 2409, 2410, 195, 196,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
@@ -12794,246 +13026,24 @@ static const yytype_int16 yytable[] =
498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 793,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 698,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3073, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3405, 3406, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 3407, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 0, 189, 190, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 3408, 3409, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 3410, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 3411,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 174,
- 175, 793, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 698, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1754, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 174, 175, 793, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 698, 0, 0, 0, 0, 0, 0, 0,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 799, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 704, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 5027, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5086, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
@@ -13091,97 +13101,172 @@ static const yytype_int16 yytable[] =
504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 174, 175, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
- 5236, 0, 0, 5237, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 179,
+ 0, 0, 0, 5298, 0, 0, 5299, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 0, 5238, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 5300, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 793, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 698, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 0,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5449, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 5369, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
@@ -13197,8 +13282,8 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 670, 0, 0, 0, 0, 0, 0, 0, 0,
+ 671, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13239,93 +13324,168 @@ static const yytype_int16 yytable[] =
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 174, 175, 0, 0, 0, 0, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 799, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 704, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
+ 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 664, 0, 0, 0, 0, 0, 0, 0,
- 0, 665, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 0,
- 609, 610, 611, 612, 174, 175, 793, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 698, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536,
+ 0, 0, 0, 0, 0, 0, 178, 1537, 0, 0,
+ 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 1538, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 704, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4352, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
@@ -13387,93 +13547,168 @@ static const yytype_int16 yytable[] =
500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 174, 175, 0, 0, 0,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1526, 0, 0, 0, 0, 0,
- 0, 178, 1527, 0, 0, 0, 0, 0, 0, 0,
- 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 671, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 1528, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 0, 609, 610, 611, 612, 174, 175, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 698, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1459, 0, 0, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 1564, 1565, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1566, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4333, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
@@ -13535,155 +13770,7 @@ static const yytype_int16 yytable[] =
498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 665, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1450, 0, 0,
- 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
@@ -13691,82 +13778,8 @@ static const yytype_int16 yytable[] =
575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 1554,
- 1555, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1556, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 1554, 1555, 0, 0, 0, 0, 0, 0, 0, 0,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 1564, 1565, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13774,7 +13787,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1764, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1774, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
@@ -13832,97 +13845,172 @@ static const yytype_int16 yytable[] =
504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 1554, 1555, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 1564, 1565, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2476, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2485, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 179,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 2477,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 0,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 2486, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2489, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2498, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3154, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
@@ -13980,97 +14068,172 @@ static const yytype_int16 yytable[] =
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 174, 175, 0, 0, 0, 0, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 1564, 1565, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2485, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
+ 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 0,
- 609, 610, 611, 612, 1554, 1555, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
+ 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
+ 0, 0, 0, 0, 0, 0, 4405, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 704, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2476, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14128,97 +14291,172 @@ static const yytype_int16 yytable[] =
500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 174, 175, 0, 0, 0,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4837, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
- 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
- 0, 4382, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 0, 609, 610, 611, 612, 174, 175, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 698, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5392, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5402, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14276,155 +14514,7 @@ static const yytype_int16 yytable[] =
498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4801, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 5313, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
@@ -14432,81 +14522,7 @@ static const yytype_int16 yytable[] =
575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 174,
- 175, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5323,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14527,7 +14543,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
- 0, 0, 0, 0, 0, 0, 5714, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5815, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14573,89 +14589,164 @@ static const yytype_int16 yytable[] =
504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 174, 175, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 179,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 0, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 0, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 0,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 711, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14691,7 +14782,7 @@ static const yytype_int16 yytable[] =
211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 789,
249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
@@ -14701,7 +14792,7 @@ static const yytype_int16 yytable[] =
306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 705, 340, 341, 342, 343,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
@@ -14721,89 +14812,164 @@ static const yytype_int16 yytable[] =
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 174, 175, 0, 0, 0, 0, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 1564, 1565, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 0, 0,
+ 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 0, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 0, 0, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 0, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 0, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 0, 247,
- 783, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 0, 0, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 0, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 0, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 0,
- 609, 610, 611, 612, 1554, 1555, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
+ 0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 1929, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14833,7 +14999,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 186, 187, 188, 189, 190, 191,
+ 0, 0, 0, 2503, 186, 187, 188, 189, 190, 191,
192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
@@ -14869,89 +15035,164 @@ static const yytype_int16 yytable[] =
500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 0, 609, 610, 611, 612, 174, 175, 0, 0, 0,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3062, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3063, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
- 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 3064, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 3065, 322, 323, 324, 325, 0, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 0, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 3066, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 0, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 3067, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 0, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 0, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 0,
- 0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 0, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 0, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 1919,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 0, 609, 610, 611, 612, 174, 175, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 0, 0, 0, 179, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 3181, 314, 315,
+ 316, 317, 0, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 3182, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 0, 610, 611, 612, 613, 174, 175, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14969,7 +15210,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
- 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5767, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14981,7 +15222,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2494, 186, 187, 188, 189,
+ 0, 0, 0, 0, 0, 185, 186, 187, 188, 189,
190, 191, 192, 193, 194, 0, 0, 0, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
207, 208, 209, 210, 211, 212, 213, 214, 215, 0,
@@ -15017,89 +15258,164 @@ static const yytype_int16 yytable[] =
498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535, 0, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 0, 609, 610, 611, 612, 174, 175, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 698,
+ 528, 529, 530, 531, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 0, 610, 611, 612, 613,
+ 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3052, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 0, 0, 0,
- 0, 0, 3053, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2829, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
- 0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 185, 186, 187, 3054,
- 189, 190, 191, 192, 193, 194, 0, 0, 0, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 0, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 0, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 0, 0, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 0, 318, 319,
- 320, 3055, 322, 323, 324, 325, 0, 327, 328, 329,
- 330, 331, 0, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 0, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 0, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 3056, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 0,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 3057, 605,
- 606, 607, 608, 0, 609, 610, 611, 612, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
+ 186, 187, 2830, 189, 190, 191, 192, 193, 194, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 318, 319, 320, 2831, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 0, 606, 607, 608, 609, 0,
+ 610, 611, 612, 613, 174, 175, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 704, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 3063,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 3064, 189, 190, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 0, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 0,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 0, 0,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 0, 318, 319, 320, 3065, 322,
+ 323, 324, 325, 0, 327, 328, 329, 330, 331, 0,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 0, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 3066, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 0, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 3067, 606,
+ 607, 608, 609, 0, 610, 611, 612, 613, 174, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15112,7 +15428,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3415, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15130,7 +15446,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 0, 0, 0,
+ 0, 189, 190, 191, 192, 193, 194, 0, 0, 0,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
215, 0, 216, 217, 218, 219, 220, 221, 222, 223,
@@ -15143,8 +15459,8 @@ static const yytype_int16 yytable[] =
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 3175, 314, 315, 316, 317, 0, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 318,
+ 319, 320, 3418, 322, 323, 324, 325, 326, 327, 328,
329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
@@ -15154,7 +15470,7 @@ static const yytype_int16 yytable[] =
388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 3176, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
@@ -15165,398 +15481,316 @@ static const yytype_int16 yytable[] =
496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 0, 609, 610, 611, 612, 174,
- 175, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 3419, 606, 607, 608, 609, 0, 610, 611,
+ 612, 613, 174, 175, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 909, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 5666, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
+ 0, 0, 0, 0, 0, 0, -3651, -3651, -3651, 177,
+ 0, 0, 0, 0, 0, 0, 910, 0, 0, 0,
+ 14, 0, 0, 911, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 16, 0, 0, 912, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 913, 0, 0, 0, 0, 0, 0, 0, 914, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 915,
+ 916, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 0, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 0, 0, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 0,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 0, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 0, 609, 610, 611, 612,
- 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 40, 0, 0, 0,
+ 0, 185, 186, 187, 917, 189, 0, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 0, 206, 207, 208, 209, 210,
+ 211, 212, 213, 0, 918, 0, 0, 217, 218, 219,
+ 220, 221, 0, 0, 224, 225, 226, 227, 228, 0,
+ 0, 0, 232, 233, 234, 235, 236, 919, 238, 239,
+ 240, 241, 0, 0, 0, 0, 0, 0, 247, 0,
+ 249, 0, 251, 252, 0, 254, 255, 256, 257, 258,
+ 259, 0, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 0, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 0, 284, 285, 286, 287,
+ -3651, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 0, 0, 0, 303, 0, 920, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
+ 0, 0, 0, 0, 319, 320, 921, 322, 323, 324,
+ 0, 326, 327, 0, 329, 330, 0, 0, 332, 0,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 0, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 0, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 0, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 922, 0, 0, 440, 0,
+ 442, 443, 0, 445, 446, 447, 448, 0, 450, 451,
+ 452, 453, 0, 0, 0, 0, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 0, 485, 0, 487, 488, 489, 0, 491,
+ 492, 0, 494, 495, 496, 497, 498, 499, 0, 501,
+ 502, 503, 504, 505, 506, 507, 0, 509, 510, 511,
+ 0, 513, 514, 515, 516, 0, 518, 519, 0, 0,
+ 522, 523, 0, 0, 526, 527, 528, 0, 530, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 0, 541, 542, 0, 544, 0, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 0, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 0, 577, 578,
+ 0, 580, 581, 582, 583, 174, 175, 586, 587, 0,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 0, 0, 607, 608,
+ 0, 0, 610, 0, 612, 613, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 909, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -3652, 0, 177, 0, 0, 0, 0, 0, 0, 910,
+ 0, 0, 0, 14, 0, 0, 911, 0, 0, 0,
+ 0, 178, 0, 0, 0, 0, 0, 16, 0, 0,
+ 912, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 913, 0, 0, 0, 0, 0, 0,
+ 0, 914, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
+ 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
+ 0, 0, 915, 916, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
+ 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 178, 0, 0, 0,
- 0, 0, 0, 0, 0, 2819, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -3652, 0, 40,
+ 0, 0, 0, 0, 185, 186, 187, 917, 189, 0,
+ 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 0, 918, 0, 0,
+ 217, 218, 219, 220, 221, 0, 0, 224, 225, 226,
+ 227, 228, 0, 0, 0, 232, 233, 234, 235, 236,
+ 919, 238, 239, 240, 241, 0, 0, 0, 0, 0,
+ 0, 247, 0, 249, 0, 251, 252, 0, 254, 255,
+ 256, 257, 258, 259, 0, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 0, 275,
+ 0, 276, 277, 278, 279, 280, 281, 282, 0, 284,
+ 285, 286, 287, -3652, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 0, 0, 0, 303, 0,
+ 920, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 0, 0, 0, 0, 0, 319, 320, 921,
+ 322, 323, 324, 0, 326, 327, 0, 329, 330, 0,
+ 0, 332, 0, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 0, 346, 347, 348, 349, 350,
+ 351, 352, 353, 354, 0, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 0, 425, 426, 427, 428, 429,
+ 430, 431, 432, 0, 433, 434, 435, 436, 922, 0,
+ 0, 440, 0, 442, 443, 0, 445, 446, 447, 448,
+ 0, 450, 451, 452, 453, 0, 0, 0, 0, 458,
+ 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 0, 485, 0, 487, 488,
+ 489, 0, 491, 492, 0, 494, 495, 496, 497, 498,
+ 499, 0, 501, 502, 503, 504, 505, 506, 507, 0,
+ 509, 510, 511, 0, 513, 514, 515, 516, 0, 518,
+ 519, 0, 0, 522, 523, 0, 0, 526, 527, 528,
+ 0, 530, 0, 532, 533, 0, 0, 534, 535, 0,
+ 536, 537, 538, 539, 0, 541, 542, 0, 544, 0,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 0, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 0, 577, 578, 0, 580, 581, 582, 583, 174, 175,
+ 586, 587, 0, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 0,
+ 0, 607, 608, 0, 0, 610, 0, 612, 613, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 909, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
- 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 182, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 910, 0, 0, 0, 14, 0, 0, 911,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 16, 0, 0, 912, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 913, 0, 0, 0,
+ 0, 0, 0, 0, 914, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 915, 916, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 185,
- 186, 187, 2820, 189, 190, 191, 192, 193, 194, 0,
- 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 0, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 0, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 0, 318, 319, 320, 2821, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 0, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 0, 0, 40, 0, 0, 0, 0, 185, 186, 187,
+ 917, 189, 0, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 0,
+ 918, 0, 0, 217, 218, 219, 220, 221, 0, 0,
+ 224, 225, 226, 227, 228, 0, 0, 0, 232, 233,
+ 234, 235, 236, 919, 238, 239, 240, 241, 0, 0,
+ 0, 0, 0, 0, 247, 0, 249, 0, 251, 252,
+ 0, 254, 255, 256, 257, 258, 259, 0, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 0, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 0, 284, 285, 286, 287, 1548, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 0, 0,
+ 0, 303, 0, 920, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 0, 0, 0, 0, 0,
+ 319, 320, 921, 322, 323, 324, 0, 326, 327, 0,
+ 329, 330, 0, 0, 332, 0, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 0, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 0, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 0, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 922, 0, 0, 440, 0, 442, 443, 0, 445,
+ 446, 447, 448, 0, 450, 451, 452, 453, 0, 0,
+ 0, 0, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 0, 485,
+ 0, 487, 488, 489, 0, 491, 492, 0, 494, 495,
+ 496, 497, 498, 499, 0, 501, 502, 503, 504, 505,
+ 506, 507, 0, 509, 510, 511, 0, 513, 514, 515,
+ 516, 0, 518, 519, 0, 0, 522, 523, 0, 0,
+ 526, 527, 528, 0, 530, 0, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 0, 541, 542,
+ 0, 544, 0, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 563, 564, 565, 0, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 0, 577, 578, 0, 580, 581, 582,
+ 583, 174, 175, 586, 587, 0, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 0, 605, 606, 607, 608, 0, 609, 610, 611,
- 612, 174, 175, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 698, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 603, 604, 0, 0, 607, 608, 0, 0, 610, 0,
+ 612, 613, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 909,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 3053, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 910, 0, 0, 0, 14,
+ 0, 0, 911, 0, 0, 0, 0, 178, 0, 0,
+ 0, 0, 0, 16, 0, 0, 912, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 913,
+ 0, 0, 0, 0, 0, 0, 0, 914, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 0, 915, 916,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 3054, 189, 190, 191, 192, 193, 194,
+ 0, 0, 0, 0, 0, 40, 0, 0, 0, 0,
+ 185, 186, 187, 917, 189, 0, 191, 192, 193, 194,
0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 0, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 0, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 202, 203, 204, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 0, 918, 0, 0, 217, 218, 219, 220,
+ 221, 0, 0, 224, 225, 226, 227, 228, 0, 0,
+ 0, 232, 233, 234, 235, 236, 919, 238, 239, 240,
+ 241, 0, 0, 0, 0, 0, 0, 247, 0, 249,
+ 0, 251, 252, 0, 254, 255, 256, 257, 258, 259,
+ 0, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 0, 275, 0, 276, 277, 278,
+ 279, 280, 281, 282, 0, 284, 285, 286, 287, 3385,
289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 0, 0, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 0, 318, 319, 320, 3055, 322, 323, 324, 325,
- 0, 327, 328, 329, 330, 331, 0, 332, 333, 334,
+ 299, 0, 0, 0, 303, 0, 920, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 0, 0,
+ 0, 0, 0, 319, 320, 921, 322, 323, 324, 0,
+ 326, 327, 0, 329, 330, 0, 0, 332, 0, 334,
335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 0, 364,
+ 0, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 0, 356, 357, 358, 359, 360, 361, 362, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 3056,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 0, 425, 426, 427, 428, 429, 430, 431, 432, 0,
+ 433, 434, 435, 436, 922, 0, 0, 440, 0, 442,
+ 443, 0, 445, 446, 447, 448, 0, 450, 451, 452,
+ 453, 0, 0, 0, 0, 458, 459, 460, 461, 462,
463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 0, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 3057, 605, 606, 607, 608, 0, 609, 610,
- 611, 612, 174, 175, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
- 0, 0, 0, 0, 0, 0, 0, 3407, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 185, 186, 187, 0, 189, 190, 191, 192, 193,
- 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 0, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 0, 318, 319, 320, 3410, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 3411, 605, 606, 607, 608, 0, 609,
- 610, 611, 612, 174, 175, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 902, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -3623, -3623, -3623,
- 177, 0, 0, 0, 0, 0, 0, 903, 0, 0,
- 0, 14, 0, 0, 904, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 16, 0, 0, 905, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 906, 0, 0, 0, 0, 0, 0, 0, 907,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 908, 909, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,
- 0, 0, 185, 186, 187, 910, 189, 0, 191, 192,
- 193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 0, 206, 207, 208, 209,
- 210, 211, 212, 213, 0, 911, 0, 0, 217, 218,
- 219, 220, 221, 0, 0, 224, 225, 226, 227, 228,
- 0, 0, 0, 232, 233, 234, 235, 236, 912, 238,
- 239, 240, 241, 0, 0, 0, 0, 0, 0, 247,
- 0, 249, 0, 251, 252, 0, 254, 255, 256, 257,
- 258, 259, 0, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 0, 275, 0, 276,
- 277, 278, 279, 280, 281, 282, 0, 284, 285, 286,
- 287, -3623, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 0, 0, 0, 303, 0, 913, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 0, 0, 0, 0, 0, 319, 320, 914, 322, 323,
- 324, 0, 326, 327, 0, 329, 330, 0, 0, 332,
- 0, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 0, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 0, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 0, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 0, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 915, 0, 0, 440,
- 0, 442, 443, 0, 445, 446, 447, 448, 0, 450,
- 451, 452, 453, 0, 0, 0, 0, 458, 459, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 0, 485, 0, 487, 488, 489, 0,
- 491, 492, 0, 494, 495, 496, 497, 498, 499, 0,
- 501, 502, 503, 504, 505, 506, 507, 0, 509, 510,
- 511, 0, 513, 514, 515, 516, 0, 518, 519, 0,
- 0, 522, 523, 0, 0, 526, 527, 528, 0, 530,
- 0, 532, 533, 534, 535, 0, 536, 537, 538, 539,
+ 483, 0, 485, 0, 487, 488, 489, 0, 491, 492,
+ 0, 494, 495, 496, 497, 498, 499, 0, 501, 502,
+ 503, 504, 505, 506, 507, 0, 509, 510, 511, 0,
+ 513, 514, 515, 516, 0, 518, 519, 0, 0, 522,
+ 523, 0, 0, 526, 527, 528, 0, 530, 0, 532,
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
0, 541, 542, 0, 544, 0, 546, 547, 548, 549,
550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
560, 561, 562, 563, 564, 565, 0, 567, 568, 569,
570, 571, 572, 573, 574, 575, 0, 577, 578, 0,
580, 581, 582, 583, 174, 175, 586, 587, 0, 589,
590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 0, 0, 606, 607, 0, 0,
- 609, 0, 611, 612, 0, 0, 0, 0, 0, 0,
+ 600, 601, 602, 603, 604, 0, 0, 607, 608, 0,
+ 0, 610, 0, 612, 613, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
- 0, 0, 902, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 909, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -3624,
- 0, 177, 0, 0, 0, 0, 0, 0, 903, 0,
- 0, 0, 14, 0, 0, 904, 0, 0, 0, 0,
- 178, 0, 0, 0, 0, 0, 16, 0, 0, 905,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 906, 0, 0, 0, 0, 0, 0, 0,
- 907, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 910, 0,
+ 0, 0, 14, 0, 0, 911, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 16, 0, 0, 912,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 913, 0, 0, 0, 0, 0, 0, 0,
+ 914, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15564,28 +15798,28 @@ static const yytype_int16 yytable[] =
0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
- 0, 908, 909, 0, 0, 0, 0, 0, 0, 0,
+ 0, 915, 916, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -3624, 0, 40, 0,
- 0, 0, 0, 185, 186, 187, 910, 189, 0, 191,
+ 0, 0, 0, 0, 0, 0, 0, 0, 40, 0,
+ 0, 0, 0, 185, 186, 187, 917, 189, 0, 191,
192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
199, 200, 201, 202, 203, 204, 0, 206, 207, 208,
- 209, 210, 211, 212, 213, 0, 911, 0, 0, 217,
+ 209, 210, 211, 212, 213, 0, 918, 0, 0, 217,
218, 219, 220, 221, 0, 0, 224, 225, 226, 227,
- 228, 0, 0, 0, 232, 233, 234, 235, 236, 912,
+ 228, 0, 0, 0, 232, 233, 234, 235, 236, 919,
238, 239, 240, 241, 0, 0, 0, 0, 0, 0,
247, 0, 249, 0, 251, 252, 0, 254, 255, 256,
257, 258, 259, 0, 261, 262, 263, 264, 265, 266,
267, 268, 269, 270, 271, 272, 273, 0, 275, 0,
276, 277, 278, 279, 280, 281, 282, 0, 284, 285,
- 286, 287, -3624, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 0, 0, 0, 303, 0, 913,
+ 286, 287, 3439, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 0, 0, 0, 303, 0, 920,
304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 0, 0, 0, 0, 0, 319, 320, 914, 322,
+ 314, 0, 0, 0, 0, 0, 319, 320, 921, 322,
323, 324, 0, 326, 327, 0, 329, 330, 0, 0,
332, 0, 334, 335, 336, 337, 338, 339, 340, 341,
342, 343, 344, 0, 346, 347, 348, 349, 350, 351,
@@ -15597,7 +15831,7 @@ static const yytype_int16 yytable[] =
401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
421, 422, 423, 0, 425, 426, 427, 428, 429, 430,
- 431, 432, 0, 433, 434, 435, 436, 915, 0, 0,
+ 431, 432, 0, 433, 434, 435, 436, 922, 0, 0,
440, 0, 442, 443, 0, 445, 446, 447, 448, 0,
450, 451, 452, 453, 0, 0, 0, 0, 458, 459,
460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
@@ -15607,169 +15841,27 @@ static const yytype_int16 yytable[] =
0, 501, 502, 503, 504, 505, 506, 507, 0, 509,
510, 511, 0, 513, 514, 515, 516, 0, 518, 519,
0, 0, 522, 523, 0, 0, 526, 527, 528, 0,
- 530, 0, 532, 533, 534, 535, 0, 536, 537, 538,
- 539, 0, 541, 542, 0, 544, 0, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 0, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 0, 577, 578,
- 0, 580, 581, 582, 583, 174, 175, 586, 587, 0,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 0, 0, 606, 607, 0,
- 0, 609, 0, 611, 612, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
- 0, 0, 0, 902, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 903,
- 0, 0, 0, 14, 0, 0, 904, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 16, 0, 0,
- 905, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 906, 0, 0, 0, 0, 0, 0,
- 0, 907, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 21, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
- 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 908, 909, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
- 0, 0, 0, 0, 185, 186, 187, 910, 189, 0,
- 191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 0, 206, 207,
- 208, 209, 210, 211, 212, 213, 0, 911, 0, 0,
- 217, 218, 219, 220, 221, 0, 0, 224, 225, 226,
- 227, 228, 0, 0, 0, 232, 233, 234, 235, 236,
- 912, 238, 239, 240, 241, 0, 0, 0, 0, 0,
- 0, 247, 0, 249, 0, 251, 252, 0, 254, 255,
- 256, 257, 258, 259, 0, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 0, 275,
- 0, 276, 277, 278, 279, 280, 281, 282, 0, 284,
- 285, 286, 287, 1538, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 0, 0, 0, 303, 0,
- 913, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 0, 0, 0, 0, 0, 319, 320, 914,
- 322, 323, 324, 0, 326, 327, 0, 329, 330, 0,
- 0, 332, 0, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 0, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 0, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 0, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 0, 425, 426, 427, 428, 429,
- 430, 431, 432, 0, 433, 434, 435, 436, 915, 0,
- 0, 440, 0, 442, 443, 0, 445, 446, 447, 448,
- 0, 450, 451, 452, 453, 0, 0, 0, 0, 458,
- 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 0, 485, 0, 487, 488,
- 489, 0, 491, 492, 0, 494, 495, 496, 497, 498,
- 499, 0, 501, 502, 503, 504, 505, 506, 507, 0,
- 509, 510, 511, 0, 513, 514, 515, 516, 0, 518,
- 519, 0, 0, 522, 523, 0, 0, 526, 527, 528,
- 0, 530, 0, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 0, 541, 542, 0, 544, 0, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 0, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 0, 577,
- 578, 0, 580, 581, 582, 583, 174, 175, 586, 587,
- 0, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 0, 0, 606, 607,
- 0, 0, 609, 0, 611, 612, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 0, 902, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
- 903, 0, 0, 0, 14, 0, 0, 904, 0, 0,
- 0, 0, 178, 0, 0, 0, 0, 0, 16, 0,
- 0, 905, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 906, 0, 0, 0, 0, 0,
- 0, 0, 907, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 21, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
- 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
- 0, 0, 0, 908, 909, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 40, 0, 0, 0, 0, 185, 186, 187, 910, 189,
- 0, 191, 192, 193, 194, 0, 0, 0, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 0, 206,
- 207, 208, 209, 210, 211, 212, 213, 0, 911, 0,
- 0, 217, 218, 219, 220, 221, 0, 0, 224, 225,
- 226, 227, 228, 0, 0, 0, 232, 233, 234, 235,
- 236, 912, 238, 239, 240, 241, 0, 0, 0, 0,
- 0, 0, 247, 0, 249, 0, 251, 252, 0, 254,
- 255, 256, 257, 258, 259, 0, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 0,
- 275, 0, 276, 277, 278, 279, 280, 281, 282, 0,
- 284, 285, 286, 287, 3377, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 0, 0, 0, 303,
- 0, 913, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 0, 0, 0, 0, 0, 319, 320,
- 914, 322, 323, 324, 0, 326, 327, 0, 329, 330,
- 0, 0, 332, 0, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 0, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 0, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 0, 425, 426, 427, 428,
- 429, 430, 431, 432, 0, 433, 434, 435, 436, 915,
- 0, 0, 440, 0, 442, 443, 0, 445, 446, 447,
- 448, 0, 450, 451, 452, 453, 0, 0, 0, 0,
- 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 0, 485, 0, 487,
- 488, 489, 0, 491, 492, 0, 494, 495, 496, 497,
- 498, 499, 0, 501, 502, 503, 504, 505, 506, 507,
- 0, 509, 510, 511, 0, 513, 514, 515, 516, 0,
- 518, 519, 0, 0, 522, 523, 0, 0, 526, 527,
- 528, 0, 530, 0, 532, 533, 534, 535, 0, 536,
+ 530, 0, 532, 533, 0, 0, 534, 535, 0, 536,
537, 538, 539, 0, 541, 542, 0, 544, 0, 546,
547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
557, 558, 559, 560, 561, 562, 563, 564, 565, 0,
567, 568, 569, 570, 571, 572, 573, 574, 575, 0,
577, 578, 0, 580, 581, 582, 583, 174, 175, 586,
587, 0, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 0, 0, 606,
- 607, 0, 0, 609, 0, 611, 612, 0, 0, 0,
+ 597, 598, 599, 600, 601, 602, 603, 604, 0, 0,
+ 607, 608, 0, 0, 610, 0, 612, 613, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 902, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 909, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 903, 0, 0, 0, 14, 0, 0, 904, 0,
+ 0, 910, 0, 0, 0, 14, 0, 0, 911, 0,
0, 0, 0, 178, 0, 0, 0, 0, 0, 16,
- 0, 0, 905, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 906, 0, 0, 0, 0,
- 0, 0, 0, 907, 0, 0, 0, 0, 0, 0,
+ 0, 0, 912, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 913, 0, 0, 0, 0,
+ 0, 0, 0, 914, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 21, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
0, 0, 0, 181, 0, 0, 0, 0, 0, 0,
@@ -15777,29 +15869,29 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 183, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
- 0, 0, 0, 0, 908, 909, 0, 0, 0, 0,
+ 0, 0, 0, 0, 915, 916, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 184, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 40, 0, 0, 0, 0, 185, 186, 187, 910,
+ 0, 40, 0, 0, 0, 0, 185, 186, 187, 917,
189, 0, 191, 192, 193, 194, 0, 0, 0, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
- 206, 207, 208, 209, 210, 211, 212, 213, 0, 911,
+ 206, 207, 208, 209, 210, 211, 212, 213, 0, 918,
0, 0, 217, 218, 219, 220, 221, 0, 0, 224,
225, 226, 227, 228, 0, 0, 0, 232, 233, 234,
- 235, 236, 912, 238, 239, 240, 241, 0, 0, 0,
+ 235, 236, 919, 238, 239, 240, 241, 0, 0, 0,
0, 0, 0, 247, 0, 249, 0, 251, 252, 0,
254, 255, 256, 257, 258, 259, 0, 261, 262, 263,
264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
0, 275, 0, 276, 277, 278, 279, 280, 281, 282,
- 0, 284, 285, 286, 287, 3431, 289, 290, 291, 292,
+ 0, 284, 285, 286, 287, 3907, 289, 290, 291, 292,
293, 294, 295, 296, 297, 298, 299, 0, 0, 0,
- 303, 0, 913, 304, 305, 306, 307, 308, 309, 310,
+ 303, 0, 920, 304, 305, 306, 307, 308, 309, 310,
311, 312, 313, 314, 0, 0, 0, 0, 0, 319,
- 320, 914, 322, 323, 324, 0, 326, 327, 0, 329,
+ 320, 921, 322, 323, 324, 0, 326, 327, 0, 329,
330, 0, 0, 332, 0, 334, 335, 336, 337, 338,
339, 340, 341, 342, 343, 344, 0, 346, 347, 348,
349, 350, 351, 352, 353, 354, 0, 356, 357, 358,
@@ -15811,7 +15903,7 @@ static const yytype_int16 yytable[] =
408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
418, 419, 420, 421, 422, 423, 0, 425, 426, 427,
428, 429, 430, 431, 432, 0, 433, 434, 435, 436,
- 915, 0, 0, 440, 0, 442, 443, 0, 445, 446,
+ 922, 0, 0, 440, 0, 442, 443, 0, 445, 446,
447, 448, 0, 450, 451, 452, 453, 0, 0, 0,
0, 458, 459, 460, 461, 462, 463, 464, 465, 466,
467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
@@ -15820,149 +15912,7 @@ static const yytype_int16 yytable[] =
497, 498, 499, 0, 501, 502, 503, 504, 505, 506,
507, 0, 509, 510, 511, 0, 513, 514, 515, 516,
0, 518, 519, 0, 0, 522, 523, 0, 0, 526,
- 527, 528, 0, 530, 0, 532, 533, 534, 535, 0,
- 536, 537, 538, 539, 0, 541, 542, 0, 544, 0,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 0, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 0, 577, 578, 0, 580, 581, 582, 583, 174, 175,
- 586, 587, 0, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 0, 0,
- 606, 607, 0, 0, 609, 0, 611, 612, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 0, 902, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
- 0, 0, 903, 0, 0, 0, 14, 0, 0, 904,
- 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
- 16, 0, 0, 905, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 906, 0, 0, 0,
- 0, 0, 0, 0, 907, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
- 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 908, 909, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 40, 0, 0, 0, 0, 185, 186, 187,
- 910, 189, 0, 191, 192, 193, 194, 0, 0, 0,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 0, 206, 207, 208, 209, 210, 211, 212, 213, 0,
- 911, 0, 0, 217, 218, 219, 220, 221, 0, 0,
- 224, 225, 226, 227, 228, 0, 0, 0, 232, 233,
- 234, 235, 236, 912, 238, 239, 240, 241, 0, 0,
- 0, 0, 0, 0, 247, 0, 249, 0, 251, 252,
- 0, 254, 255, 256, 257, 258, 259, 0, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 0, 275, 0, 276, 277, 278, 279, 280, 281,
- 282, 0, 284, 285, 286, 287, 3893, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 0, 0,
- 0, 303, 0, 913, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 0, 0, 0, 0, 0,
- 319, 320, 914, 322, 323, 324, 0, 326, 327, 0,
- 329, 330, 0, 0, 332, 0, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 0, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 0, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 0, 425, 426,
- 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
- 436, 915, 0, 0, 440, 0, 442, 443, 0, 445,
- 446, 447, 448, 0, 450, 451, 452, 453, 0, 0,
- 0, 0, 458, 459, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 0, 485,
- 0, 487, 488, 489, 0, 491, 492, 0, 494, 495,
- 496, 497, 498, 499, 0, 501, 502, 503, 504, 505,
- 506, 507, 0, 509, 510, 511, 0, 513, 514, 515,
- 516, 0, 518, 519, 0, 0, 522, 523, 0, 0,
- 526, 527, 528, 0, 530, 0, 532, 533, 534, 535,
- 0, 536, 537, 538, 539, 0, 541, 542, 0, 544,
- 0, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 0, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 0, 577, 578, 0, 580, 581, 582, 583, 174,
- 175, 586, 587, 0, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 0,
- 0, 606, 607, 0, 0, 609, 0, 611, 612, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
- 0, 0, 0, 0, 0, 0, 0, 902, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
- 0, 0, 0, 903, 0, 0, 0, 14, 0, 0,
- 904, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 16, 0, 0, 905, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 906, 0, 0,
- 0, 0, 0, 0, 0, 907, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
- 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 908, 909, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 40, 0, 0, 0, 0, 185, 186,
- 187, 910, 189, 0, 191, 192, 193, 194, 0, 0,
- 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 0, 206, 207, 208, 209, 210, 211, 212, 213,
- 0, 911, 0, 0, 217, 218, 219, 220, 221, 0,
- 0, 224, 225, 226, 227, 228, 0, 0, 0, 232,
- 233, 234, 235, 236, 912, 238, 239, 240, 241, 0,
- 0, 0, 0, 0, 0, 247, 0, 249, 0, 251,
- 252, 0, 254, 255, 256, 257, 258, 259, 0, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 0, 275, 0, 276, 277, 278, 279, 280,
- 281, 282, 0, 284, 285, 286, 287, 3899, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 0,
- 0, 0, 303, 0, 913, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 0, 0, 0, 0,
- 0, 319, 320, 914, 322, 323, 324, 0, 326, 327,
- 0, 329, 330, 0, 0, 332, 0, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 0, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 0, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 0, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 0, 425,
- 426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 915, 0, 0, 440, 0, 442, 443, 0,
- 445, 446, 447, 448, 0, 450, 451, 452, 453, 0,
- 0, 0, 0, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 0,
- 485, 0, 487, 488, 489, 0, 491, 492, 0, 494,
- 495, 496, 497, 498, 499, 0, 501, 502, 503, 504,
- 505, 506, 507, 0, 509, 510, 511, 0, 513, 514,
- 515, 516, 0, 518, 519, 0, 0, 522, 523, 0,
- 0, 526, 527, 528, 0, 530, 0, 532, 533, 534,
+ 527, 528, 0, 530, 0, 532, 533, 0, 0, 534,
535, 0, 536, 537, 538, 539, 0, 541, 542, 0,
544, 0, 546, 547, 548, 549, 550, 551, 552, 553,
554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
@@ -15970,19 +15920,19 @@ static const yytype_int16 yytable[] =
574, 575, 0, 577, 578, 0, 580, 581, 582, 583,
174, 175, 586, 587, 0, 589, 590, 591, 592, 593,
594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 0, 0, 606, 607, 0, 0, 609, 0, 611, 612,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 604, 0, 0, 607, 608, 0, 0, 610, 0, 612,
+ 613, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
- 0, 0, 0, 0, 0, 0, 0, 0, 902, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 909, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 177, 0, 0,
- 0, 0, 0, 0, 903, 0, 0, 0, 14, 0,
- 0, 904, 0, 0, 0, 0, 178, 0, 0, 0,
- 0, 0, 16, 0, 0, 905, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 906, 0,
- 0, 0, 0, 0, 0, 0, 907, 0, 0, 0,
+ 0, 0, 0, 0, 910, 0, 0, 0, 14, 0,
+ 0, 911, 0, 0, 0, 0, 178, 0, 0, 0,
+ 0, 0, 16, 0, 0, 912, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 913, 0,
+ 0, 0, 0, 0, 0, 0, 914, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
@@ -15990,7 +15940,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 908, 909, 0,
+ 0, 0, 29, 0, 0, 0, 0, 915, 916, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15998,21 +15948,21 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 40, 0, 0, 0, 0, 185,
- 186, 187, 910, 189, 0, 191, 192, 193, 194, 0,
+ 186, 187, 917, 189, 0, 191, 192, 193, 194, 0,
0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
203, 204, 0, 206, 207, 208, 209, 210, 211, 212,
- 213, 0, 911, 0, 0, 217, 218, 219, 220, 221,
+ 213, 0, 918, 0, 0, 217, 218, 219, 220, 221,
0, 0, 224, 225, 226, 227, 228, 0, 0, 0,
- 232, 233, 234, 235, 236, 912, 238, 239, 240, 241,
+ 232, 233, 234, 235, 236, 919, 238, 239, 240, 241,
0, 0, 0, 0, 0, 0, 247, 0, 249, 0,
251, 252, 0, 254, 255, 256, 257, 258, 259, 0,
261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
271, 272, 273, 0, 275, 0, 276, 277, 278, 279,
- 280, 281, 282, 0, 284, 285, 286, 287, 4198, 289,
+ 280, 281, 282, 0, 284, 285, 286, 287, 3913, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 0, 0, 0, 303, 0, 913, 304, 305, 306, 307,
+ 0, 0, 0, 303, 0, 920, 304, 305, 306, 307,
308, 309, 310, 311, 312, 313, 314, 0, 0, 0,
- 0, 0, 319, 320, 914, 322, 323, 324, 0, 326,
+ 0, 0, 319, 320, 921, 322, 323, 324, 0, 326,
327, 0, 329, 330, 0, 0, 332, 0, 334, 335,
336, 337, 338, 339, 340, 341, 342, 343, 344, 0,
346, 347, 348, 349, 350, 351, 352, 353, 354, 0,
@@ -16024,7 +15974,7 @@ static const yytype_int16 yytable[] =
405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
415, 416, 417, 418, 419, 420, 421, 422, 423, 0,
425, 426, 427, 428, 429, 430, 431, 432, 0, 433,
- 434, 435, 436, 915, 0, 0, 440, 0, 442, 443,
+ 434, 435, 436, 922, 0, 0, 440, 0, 442, 443,
0, 445, 446, 447, 448, 0, 450, 451, 452, 453,
0, 0, 0, 0, 458, 459, 460, 461, 462, 463,
464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
@@ -16034,168 +15984,26 @@ static const yytype_int16 yytable[] =
504, 505, 506, 507, 0, 509, 510, 511, 0, 513,
514, 515, 516, 0, 518, 519, 0, 0, 522, 523,
0, 0, 526, 527, 528, 0, 530, 0, 532, 533,
- 534, 535, 0, 536, 537, 538, 539, 0, 541, 542,
- 0, 544, 0, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 0, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 0, 577, 578, 0, 580, 581, 582,
- 583, 174, 175, 586, 587, 0, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 0, 0, 606, 607, 0, 0, 609, 0, 611,
- 612, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 0, 0, 0, 0, 0, 0, 0, 0, 902,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
- 0, 0, 0, 0, 0, 903, 0, 0, 0, 14,
- 0, 0, 904, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 16, 0, 0, 905, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 906,
- 0, 0, 0, 0, 0, 0, 0, 907, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 0, 0, 0, 0, 0, 0, 181, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 908, 909,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 40, 0, 0, 0, 0,
- 185, 186, 187, 910, 189, 0, 191, 192, 193, 194,
- 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 0, 206, 207, 208, 209, 210, 211,
- 212, 213, 0, 911, 0, 0, 217, 218, 219, 220,
- 221, 0, 0, 224, 225, 226, 227, 228, 0, 0,
- 0, 232, 233, 234, 235, 236, 912, 238, 239, 240,
- 241, 0, 0, 0, 0, 0, 0, 247, 0, 249,
- 0, 251, 252, 0, 254, 255, 256, 257, 258, 259,
- 0, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 0, 275, 0, 276, 277, 278,
- 279, 280, 281, 282, 0, 284, 285, 286, 287, 0,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 0, 0, 0, 303, 0, 913, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 0, 0,
- 0, 0, 0, 319, 320, 914, 322, 323, 324, 0,
- 326, 327, 0, 329, 330, 0, 0, 332, 0, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 0, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 0, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 0, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 0, 425, 426, 427, 428, 429, 430, 431, 432, 0,
- 433, 434, 435, 436, 915, 0, 0, 440, 0, 442,
- 443, 0, 445, 446, 447, 448, 0, 450, 451, 452,
- 453, 0, 0, 0, 0, 458, 459, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 0, 485, 0, 487, 488, 489, 0, 491, 492,
- 0, 494, 495, 496, 497, 498, 499, 0, 501, 502,
- 503, 504, 505, 506, 507, 0, 509, 510, 511, 0,
- 513, 514, 515, 516, 0, 518, 519, 0, 0, 522,
- 523, 0, 0, 526, 527, 528, 0, 530, 0, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 0, 541,
- 542, 0, 544, 0, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 0, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 0, 577, 578, 0, 580, 581,
- 582, 583, 174, 175, 586, 587, 0, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 0, 0, 606, 607, 0, 0, 609, 0,
- 611, 612, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,
- 902, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 0, 0, 0, 903, 0, 0, 0,
- 14, 0, 0, 904, 0, 0, 0, 0, 178, 0,
- 0, 0, 0, 0, 16, 0, 0, 905, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 906, 0, 0, 0, 0, 0, 0, 0, 907, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 908,
- 909, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 40, 0, 0, 0,
- 0, 185, 186, 187, 910, 189, 0, 191, 192, 193,
- 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 0, 206, 207, 208, 209, 210,
- 211, 212, 213, 0, 911, 0, 0, 217, 218, 219,
- 220, 221, 0, 0, 224, 225, 226, 227, 228, 0,
- 0, 0, 232, 233, 234, 235, 236, 912, 238, 239,
- 240, 241, 0, 0, 0, 0, 0, 0, 247, 0,
- 249, 0, 251, 252, 0, 254, 255, 256, 257, 258,
- 259, 0, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 0, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 0, 284, 285, 286, 287,
- 0, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 0, 0, 0, 303, 0, 913, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
- 0, 0, 0, 0, 319, 320, 914, 322, 323, 324,
- 0, 326, 327, 0, 329, 330, 0, 0, 332, 0,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 0, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 0, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 0, 425, 426, 427, 428, 429, 430, 431, 432,
- 0, 433, 434, 435, 436, 915, 0, 0, 440, 0,
- 442, 443, 0, 445, 446, 447, 448, 0, 450, 451,
- 452, 453, 0, 0, 0, 0, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 0, 485, 0, 487, 488, 489, 0, 491,
- 492, 0, 494, 495, 496, 497, 498, 499, 0, 501,
- 502, 503, 504, 505, 506, 507, 0, 509, 510, 511,
- 0, 513, 514, 515, 516, 0, 518, 519, 0, 0,
- 522, 523, 0, 0, 526, 527, 528, 0, 530, 0,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 0,
+ 0, 0, 534, 535, 0, 536, 537, 538, 539, 0,
541, 542, 0, 544, 0, 546, 547, 548, 549, 550,
551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
561, 562, 563, 564, 565, 0, 567, 568, 569, 570,
571, 572, 573, 574, 575, 0, 577, 578, 0, 580,
- 581, 582, 583, 174, 175, 586, 1741, 0, 589, 590,
+ 581, 582, 583, 174, 175, 586, 587, 0, 589, 590,
591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 0, 0, 606, 607, 0, 0, 609,
- 0, 611, 612, 0, 0, 0, 0, 0, 0, 0,
+ 601, 602, 603, 604, 0, 0, 607, 608, 0, 0,
+ 610, 0, 612, 613, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 909, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 176, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 14, 0, 0, 0, 0, 0, 0, 0, 178,
- 0, 0, 0, 0, 0, 16, 0, 0, 905, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 177, 0, 0, 0, 0, 0, 0, 910, 0, 0,
+ 0, 14, 0, 0, 911, 0, 0, 0, 0, 178,
+ 0, 0, 0, 0, 0, 16, 0, 0, 912, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 913, 0, 0, 0, 0, 0, 0, 0, 914,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 180, 0, 0, 0, 0, 0, 0, 181,
@@ -16204,28 +16012,28 @@ static const yytype_int16 yytable[] =
0, 0, 183, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 908, 909, 0, 0, 0, 0, 0, 0, 0, 0,
+ 915, 916, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 40, 0, 0,
- 0, 0, 185, 186, 187, 910, 189, 0, 191, 192,
+ 0, 0, 185, 186, 187, 917, 189, 0, 191, 192,
193, 194, 0, 0, 0, 195, 196, 197, 198, 199,
200, 201, 202, 203, 204, 0, 206, 207, 208, 209,
- 210, 211, 212, 213, 0, 911, 0, 0, 217, 218,
+ 210, 211, 212, 213, 0, 918, 0, 0, 217, 218,
219, 220, 221, 0, 0, 224, 225, 226, 227, 228,
- 0, 0, 0, 232, 233, 234, 235, 236, 0, 238,
+ 0, 0, 0, 232, 233, 234, 235, 236, 919, 238,
239, 240, 241, 0, 0, 0, 0, 0, 0, 247,
0, 249, 0, 251, 252, 0, 254, 255, 256, 257,
258, 259, 0, 261, 262, 263, 264, 265, 266, 267,
268, 269, 270, 271, 272, 273, 0, 275, 0, 276,
277, 278, 279, 280, 281, 282, 0, 284, 285, 286,
- 287, 0, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 0, 0, 0, 303, 0, 0, 304,
+ 287, 4217, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 0, 0, 0, 303, 0, 920, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 0, 0, 0, 0, 0, 319, 320, 914, 322, 323,
+ 0, 0, 0, 0, 0, 319, 320, 921, 322, 323,
324, 0, 326, 327, 0, 329, 330, 0, 0, 332,
0, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 0, 346, 347, 348, 349, 350, 351, 352,
@@ -16237,7 +16045,7 @@ static const yytype_int16 yytable[] =
402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 0, 425, 426, 427, 428, 429, 430, 431,
- 432, 0, 433, 434, 435, 436, 0, 0, 0, 440,
+ 432, 0, 433, 434, 435, 436, 922, 0, 0, 440,
0, 442, 443, 0, 445, 446, 447, 448, 0, 450,
451, 452, 453, 0, 0, 0, 0, 458, 459, 460,
461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
@@ -16245,52 +16053,130 @@ static const yytype_int16 yytable[] =
481, 482, 483, 0, 485, 0, 487, 488, 489, 0,
491, 492, 0, 494, 495, 496, 497, 498, 499, 0,
501, 502, 503, 504, 505, 506, 507, 0, 509, 510,
- 511, 0, 513, 514, 515, 516, 0, 518, 519, 174,
- 175, 522, 523, 0, 0, 526, 527, 528, 0, 530,
- 0, 532, 533, 534, 535, 0, 536, 537, 538, 539,
- 0, 541, 542, 0, 544, 0, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 0, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 0, 577, 578, 0,
- 580, 581, 582, 583, 0, 0, 586, 587, 176, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 0, 0, 606, 607, 0, 0,
- 609, 0, 611, 612, 0, 0, 177, 0, 0, 0,
+ 511, 0, 513, 514, 515, 516, 0, 518, 519, 0,
+ 0, 522, 523, 0, 0, 526, 527, 528, 0, 530,
+ 0, 532, 533, 0, 0, 534, 535, 0, 536, 537,
+ 538, 539, 0, 541, 542, 0, 544, 0, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 0, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 0, 577,
+ 578, 0, 580, 581, 582, 583, 174, 175, 586, 587,
+ 0, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 0, 0, 607,
+ 608, 0, 0, 610, 0, 612, 613, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 178, 0, 0, 0, 0,
- 0, 0, 0, 0, 905, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 0, 909, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 177, 0, 0, 0, 0, 0, 0,
+ 910, 0, 0, 0, 14, 0, 0, 911, 0, 0,
+ 0, 0, 178, 0, 0, 0, 0, 0, 16, 0,
+ 0, 912, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 913, 0, 0, 0, 0, 0,
+ 0, 0, 914, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 180, 0, 0, 0, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 0, 0, 915, 916, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 0, 0, 0, 0, 185, 186, 187, 917, 189,
+ 0, 191, 192, 193, 194, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 0, 918, 0,
+ 0, 217, 218, 219, 220, 221, 0, 0, 224, 225,
+ 226, 227, 228, 0, 0, 0, 232, 233, 234, 235,
+ 236, 919, 238, 239, 240, 241, 0, 0, 0, 0,
+ 0, 0, 247, 0, 249, 0, 251, 252, 0, 254,
+ 255, 256, 257, 258, 259, 0, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 0,
+ 275, 0, 276, 277, 278, 279, 280, 281, 282, 0,
+ 284, 285, 286, 287, 5601, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 0, 0, 0, 303,
+ 0, 920, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 0, 0, 0, 0, 0, 319, 320,
+ 921, 322, 323, 324, 0, 326, 327, 0, 329, 330,
+ 0, 0, 332, 0, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 0, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 0, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 0,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 0, 425, 426, 427, 428,
+ 429, 430, 431, 432, 0, 433, 434, 435, 436, 922,
+ 0, 0, 440, 0, 442, 443, 0, 445, 446, 447,
+ 448, 0, 450, 451, 452, 453, 0, 0, 0, 0,
+ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 0, 485, 0, 487,
+ 488, 489, 0, 491, 492, 0, 494, 495, 496, 497,
+ 498, 499, 0, 501, 502, 503, 504, 505, 506, 507,
+ 0, 509, 510, 511, 0, 513, 514, 515, 516, 0,
+ 518, 519, 0, 0, 522, 523, 0, 0, 526, 527,
+ 528, 0, 530, 0, 532, 533, 0, 0, 534, 535,
+ 0, 536, 537, 538, 539, 0, 541, 542, 0, 544,
+ 0, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 0, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 0, 577, 578, 0, 580, 581, 582, 583, 174,
+ 175, 586, 587, 0, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 0, 0, 607, 608, 0, 0, 610, 0, 612, 613,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 0, 0, 909, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 177, 0, 0, 0,
+ 0, 0, 0, 910, 0, 0, 0, 14, 0, 0,
+ 911, 0, 0, 0, 0, 178, 0, 0, 0, 0,
+ 0, 16, 0, 0, 912, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 913, 0, 0,
+ 0, 0, 0, 0, 0, 914, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 180, 0,
0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 915, 916, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1524, 0, 0, 0, 0, 0, 0, 185, 186,
- 187, 910, 189, 0, 191, 192, 193, 194, 0, 0,
+ 0, 0, 0, 40, 0, 0, 0, 0, 185, 186,
+ 187, 917, 189, 0, 191, 192, 193, 194, 0, 0,
0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
204, 0, 206, 207, 208, 209, 210, 211, 212, 213,
- 0, 0, 0, 0, 217, 218, 219, 220, 221, 0,
+ 0, 918, 0, 0, 217, 218, 219, 220, 221, 0,
0, 224, 225, 226, 227, 228, 0, 0, 0, 232,
- 233, 234, 235, 236, 0, 238, 239, 240, 241, 0,
+ 233, 234, 235, 236, 919, 238, 239, 240, 241, 0,
0, 0, 0, 0, 0, 247, 0, 249, 0, 251,
252, 0, 254, 255, 256, 257, 258, 259, 0, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 0, 275, 0, 276, 277, 278, 279, 280,
281, 282, 0, 284, 285, 286, 287, 0, 289, 290,
291, 292, 293, 294, 295, 296, 297, 298, 299, 0,
- 0, 0, 303, 0, 0, 304, 305, 306, 307, 308,
+ 0, 0, 303, 0, 920, 304, 305, 306, 307, 308,
309, 310, 311, 312, 313, 314, 0, 0, 0, 0,
- 0, 319, 320, 914, 322, 323, 324, 0, 326, 327,
+ 0, 319, 320, 921, 322, 323, 324, 0, 326, 327,
0, 329, 330, 0, 0, 332, 0, 334, 335, 336,
337, 338, 339, 340, 341, 342, 343, 344, 0, 346,
347, 348, 349, 350, 351, 352, 353, 354, 0, 356,
@@ -16302,7 +16188,7 @@ static const yytype_int16 yytable[] =
406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
416, 417, 418, 419, 420, 421, 422, 423, 0, 425,
426, 427, 428, 429, 430, 431, 432, 0, 433, 434,
- 435, 436, 0, 0, 0, 440, 0, 442, 443, 0,
+ 435, 436, 922, 0, 0, 440, 0, 442, 443, 0,
445, 446, 447, 448, 0, 450, 451, 452, 453, 0,
0, 0, 0, 458, 459, 460, 461, 462, 463, 464,
465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
@@ -16310,40 +16196,118 @@ static const yytype_int16 yytable[] =
485, 0, 487, 488, 489, 0, 491, 492, 0, 494,
495, 496, 497, 498, 499, 0, 501, 502, 503, 504,
505, 506, 507, 0, 509, 510, 511, 0, 513, 514,
- 515, 516, 0, 518, 519, 174, 175, 522, 523, 0,
- 0, 526, 527, 528, 0, 530, 0, 532, 533, 534,
- 535, 0, 536, 537, 538, 539, 0, 541, 542, 0,
- 544, 0, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 0, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 0, 577, 578, 0, 580, 581, 582, 583,
- 0, 0, 586, 587, 176, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 0, 0, 606, 607, 0, 0, 609, 0, 611, 612,
- 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
+ 515, 516, 0, 518, 519, 0, 0, 522, 523, 0,
+ 0, 526, 527, 528, 0, 530, 0, 532, 533, 0,
+ 0, 534, 535, 0, 536, 537, 538, 539, 0, 541,
+ 542, 0, 544, 0, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 0, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 0, 577, 578, 0, 580, 581,
+ 582, 583, 174, 175, 586, 587, 0, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 0, 0, 607, 608, 0, 0, 610,
+ 0, 612, 613, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 178, 0, 0, 0, 0, 0, 0, 0, 0,
- 905, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 909, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 177,
+ 0, 0, 0, 0, 0, 0, 910, 0, 0, 0,
+ 14, 0, 0, 911, 0, 0, 0, 0, 178, 0,
+ 0, 0, 0, 0, 16, 0, 0, 912, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 913, 0, 0, 0, 0, 0, 0, 0, 914, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 180, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 182, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 183, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 915,
+ 916, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 40, 0, 0, 0,
+ 0, 185, 186, 187, 917, 189, 0, 191, 192, 193,
+ 194, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 0, 206, 207, 208, 209, 210,
+ 211, 212, 213, 0, 918, 0, 0, 217, 218, 219,
+ 220, 221, 0, 0, 224, 225, 226, 227, 228, 0,
+ 0, 0, 232, 233, 234, 235, 236, 919, 238, 239,
+ 240, 241, 0, 0, 0, 0, 0, 0, 247, 0,
+ 249, 0, 251, 252, 0, 254, 255, 256, 257, 258,
+ 259, 0, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 0, 275, 0, 276, 277,
+ 278, 279, 280, 281, 282, 0, 284, 285, 286, 287,
+ 0, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 0, 0, 0, 303, 0, 920, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
+ 0, 0, 0, 0, 319, 320, 921, 322, 323, 324,
+ 0, 326, 327, 0, 329, 330, 0, 0, 332, 0,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 0, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 0, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 0, 425, 426, 427, 428, 429, 430, 431, 432,
+ 0, 433, 434, 435, 436, 922, 0, 0, 440, 0,
+ 442, 443, 0, 445, 446, 447, 448, 0, 450, 451,
+ 452, 453, 0, 0, 0, 0, 458, 459, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 0, 485, 0, 487, 488, 489, 0, 491,
+ 492, 0, 494, 495, 496, 497, 498, 499, 0, 501,
+ 502, 503, 504, 505, 506, 507, 0, 509, 510, 511,
+ 0, 513, 514, 515, 516, 0, 518, 519, 0, 0,
+ 522, 523, 0, 0, 526, 527, 528, 0, 530, 0,
+ 532, 533, 0, 0, 534, 535, 0, 536, 537, 538,
+ 539, 0, 541, 542, 0, 544, 0, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 0, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 0, 577, 578,
+ 0, 580, 581, 582, 583, 174, 175, 586, 1751, 0,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 0, 0, 607, 608,
+ 0, 0, 610, 0, 612, 613, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 177, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 0, 0, 0,
+ 0, 178, 0, 0, 0, 0, 0, 16, 0, 0,
+ 912, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 180, 0, 0, 0, 0, 0,
0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 182, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
+ 0, 0, 915, 916, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1535, 0, 0,
- 0, 0, 0, 0, 185, 186, 187, 910, 189, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
+ 0, 0, 0, 0, 185, 186, 187, 917, 189, 0,
191, 192, 193, 194, 0, 0, 0, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 0, 206, 207,
- 208, 209, 210, 211, 212, 213, 0, 0, 0, 0,
+ 208, 209, 210, 211, 212, 213, 0, 918, 0, 0,
217, 218, 219, 220, 221, 0, 0, 224, 225, 226,
227, 228, 0, 0, 0, 232, 233, 234, 235, 236,
0, 238, 239, 240, 241, 0, 0, 0, 0, 0,
@@ -16354,7 +16318,7 @@ static const yytype_int16 yytable[] =
285, 286, 287, 0, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 0, 0, 0, 303, 0,
0, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 0, 0, 0, 0, 0, 319, 320, 914,
+ 313, 314, 0, 0, 0, 0, 0, 319, 320, 921,
322, 323, 324, 0, 326, 327, 0, 329, 330, 0,
0, 332, 0, 334, 335, 336, 337, 338, 339, 340,
341, 342, 343, 344, 0, 346, 347, 348, 349, 350,
@@ -16375,19 +16339,97 @@ static const yytype_int16 yytable[] =
489, 0, 491, 492, 0, 494, 495, 496, 497, 498,
499, 0, 501, 502, 503, 504, 505, 506, 507, 0,
509, 510, 511, 0, 513, 514, 515, 516, 0, 518,
- 519, 174, 175, 522, 523, 0, 0, 526, 527, 528,
- 0, 530, 0, 532, 533, 534, 535, 0, 536, 537,
- 538, 539, 0, 541, 542, 0, 544, 0, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 0, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 0, 577,
- 578, 0, 580, 581, 582, 583, 0, 0, 586, 587,
- 176, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 0, 0, 606, 607,
- 0, 0, 609, 0, 611, 612, 0, 0, 177, 0,
+ 519, 0, 0, 522, 523, 0, 0, 526, 527, 528,
+ 0, 530, 0, 532, 533, 0, 0, 534, 535, 0,
+ 536, 537, 538, 539, 0, 541, 542, 0, 544, 0,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 0, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 0, 577, 578, 0, 580, 581, 582, 583, 174, 175,
+ 586, 587, 0, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 0,
+ 0, 607, 608, 0, 0, 610, 0, 612, 613, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 912, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 180, 0, 0,
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 184, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1534, 0, 0, 0, 0, 0, 0, 185, 186, 187,
+ 917, 189, 0, 191, 192, 193, 194, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 0,
+ 0, 0, 0, 217, 218, 219, 220, 221, 0, 0,
+ 224, 225, 226, 227, 228, 0, 0, 0, 232, 233,
+ 234, 235, 236, 0, 238, 239, 240, 241, 0, 0,
+ 0, 0, 0, 0, 247, 0, 249, 0, 251, 252,
+ 0, 254, 255, 256, 257, 258, 259, 0, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 0, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 0, 284, 285, 286, 287, 0, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 0, 0,
+ 0, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 0, 0, 0, 0, 0,
+ 319, 320, 921, 322, 323, 324, 0, 326, 327, 0,
+ 329, 330, 0, 0, 332, 0, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 0, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 0, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 0, 425, 426,
+ 427, 428, 429, 430, 431, 432, 0, 433, 434, 435,
+ 436, 0, 0, 0, 440, 0, 442, 443, 0, 445,
+ 446, 447, 448, 0, 450, 451, 452, 453, 0, 0,
+ 0, 0, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 0, 485,
+ 0, 487, 488, 489, 0, 491, 492, 0, 494, 495,
+ 496, 497, 498, 499, 0, 501, 502, 503, 504, 505,
+ 506, 507, 0, 509, 510, 511, 0, 513, 514, 515,
+ 516, 0, 518, 519, 0, 0, 522, 523, 0, 0,
+ 526, 527, 528, 0, 530, 0, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 0, 541, 542,
+ 0, 544, 0, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 0, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 0, 577, 578, 0, 580, 581, 582,
+ 583, 174, 175, 586, 587, 0, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 0, 0, 607, 608, 0, 0, 610, 0,
+ 612, 613, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 178, 0, 0,
- 0, 0, 0, 0, 0, 0, 905, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 912, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -16404,8 +16446,8 @@ static const yytype_int16 yytable[] =
0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 185, 186, 187, 910, 189, 0, 191, 192, 193, 194,
+ 0, 0, 0, 1545, 0, 0, 0, 0, 0, 0,
+ 185, 186, 187, 917, 189, 0, 191, 192, 193, 194,
0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
202, 203, 204, 0, 206, 207, 208, 209, 210, 211,
212, 213, 0, 0, 0, 0, 217, 218, 219, 220,
@@ -16419,7 +16461,7 @@ static const yytype_int16 yytable[] =
289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
299, 0, 0, 0, 303, 0, 0, 304, 305, 306,
307, 308, 309, 310, 311, 312, 313, 314, 0, 0,
- 0, 0, 0, 319, 320, 914, 322, 323, 324, 0,
+ 0, 0, 0, 319, 320, 921, 322, 323, 324, 0,
326, 327, 0, 329, 330, 0, 0, 332, 0, 334,
335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
0, 346, 347, 348, 349, 350, 351, 352, 353, 354,
@@ -16441,2073 +16483,4015 @@ static const yytype_int16 yytable[] =
503, 504, 505, 506, 507, 0, 509, 510, 511, 0,
513, 514, 515, 516, 0, 518, 519, 0, 0, 522,
523, 0, 0, 526, 527, 528, 0, 530, 0, 532,
- 533, 534, 535, 0, 536, 537, 538, 539, 0, 541,
- 542, 0, 544, 0, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 0, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 0, 577, 578, 0, 580, 581,
- 582, 583, 0, 0, 586, 587, 0, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 174, 175, 606, 607, 0, 0, 609, 0,
- 611, 612, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3451, 3452,
- 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, 0,
- 3462, 3463, 3464, 3465, 0, 0, 3466, 3467, 3468, 3469,
- 3470, 3471, 3472, 3473, 3474, 3475, 3476, 0, 3477, 3478,
- 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, 0,
- 3488, 176, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496,
- 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506,
- 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 177,
- 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3523, 3524, 3525,
- 0, 3526, 3527, 3528, 3529, 3530, 0, 0, 178, 3531,
- 3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539, 3540, 3541,
- 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551,
- 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 3561,
- 3562, 3563, 3564, 3565, 3566, 3567, 3568, 0, 0, 0,
- 3569, 3570, 3571, 3572, 3573, 3574, 3575, 0, 0, 0,
- 3576, 180, 3577, 3578, 3579, 3580, 3581, 3582, 181, 3583,
- 3584, 3585, 3586, 3587, 3588, 0, 3589, 3590, 3591, 3592,
- 182, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601,
- 3602, 183, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610,
- 3611, 3612, 3613, 3614, 3615, 3616, 3617, 0, 3618, 3619,
- 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629,
- 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639,
- 3640, 0, 3641, 3642, 0, 3643, 3644, 3645, 3646, 3647,
- 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657,
- 3658, 3659, 184, 3660, 3661, 3662, 3663, 0, 0, 0,
- 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671, 3672, 3673,
- 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 0,
- 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3692,
- 3693, 185, 186, 187, 0, 189, 190, 191, 192, 193,
- 194, 3694, 3695, 3696, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 0, 216, 0, 218, 0,
- 0, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 0, 0, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 0, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 3697, 3698, 273, 274, 275, 0, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 0, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 0, 315,
- 316, 317, 0, 318, 319, 320, 0, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 0, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 0,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 0, 389, 390, 391, 392,
- 393, 394, 395, 0, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 0, 3699, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 0, 0, 0, 432,
- 3700, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 0, 0,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 0, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 0, 516, 517, 518, 519, 520, 3701,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 0, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 0, 565, 566, 0, 568, 569, 3702,
- 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 0, 3703, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 0, 605, 606, 607, 608, 0, 609,
- 610, 611
+ 533, 0, 0, 534, 535, 0, 536, 537, 538, 539,
+ 0, 541, 542, 0, 544, 0, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 0, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 0, 577, 578, 0,
+ 580, 581, 582, 583, 174, 175, 586, 587, 0, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 0, 0, 607, 608, 0,
+ 0, 610, 0, 612, 613, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 178, 0, 0, 0, 0, 0, 0, 0, 0, 912,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 186, 187, 917, 189, 0, 191,
+ 192, 193, 194, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 0, 206, 207, 208,
+ 209, 210, 211, 212, 213, 0, 0, 0, 0, 217,
+ 218, 219, 220, 221, 0, 0, 224, 225, 226, 227,
+ 228, 0, 0, 0, 232, 233, 234, 235, 236, 0,
+ 238, 239, 240, 241, 0, 0, 0, 0, 0, 0,
+ 247, 0, 249, 0, 251, 252, 0, 254, 255, 256,
+ 257, 258, 259, 0, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 0, 275, 0,
+ 276, 277, 278, 279, 280, 281, 282, 0, 284, 285,
+ 286, 287, 0, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 0, 0, 0, 303, 0, 0,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 0, 0, 0, 0, 0, 319, 320, 921, 322,
+ 323, 324, 0, 326, 327, 0, 329, 330, 0, 0,
+ 332, 0, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 0, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 0, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 0, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 0, 425, 426, 427, 428, 429, 430,
+ 431, 432, 0, 433, 434, 435, 436, 0, 0, 0,
+ 440, 0, 442, 443, 0, 445, 446, 447, 448, 0,
+ 450, 451, 452, 453, 0, 0, 0, 0, 458, 459,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 0, 485, 0, 487, 488, 489,
+ 0, 491, 492, 0, 494, 495, 496, 497, 498, 499,
+ 0, 501, 502, 503, 504, 505, 506, 507, 0, 509,
+ 510, 511, 0, 513, 514, 515, 516, 0, 518, 519,
+ 0, 0, 522, 523, 0, 0, 526, 527, 528, 0,
+ 530, 0, 532, 533, 0, 0, 534, 535, 0, 536,
+ 537, 538, 539, 0, 541, 542, 0, 544, 0, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 0,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 0,
+ 577, 578, 0, 580, 581, 582, 583, 0, 0, 586,
+ 587, 0, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 174, 175,
+ 607, 608, 0, 0, 610, 0, 612, 613, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3459, 3460, 3461, 3462, 3463, 3464,
+ 3465, 3466, 3467, 3468, 3469, 0, 3470, 3471, 3472, 3473,
+ 0, 0, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481,
+ 3482, 3483, 3484, 0, 3485, 3486, 3487, 3488, 3489, 3490,
+ 3491, 3492, 3493, 3494, 3495, 0, 3496, 176, 3497, 3498,
+ 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507, 3508,
+ 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518,
+ 3519, 3520, 3521, 3522, 3523, 177, 3524, 3525, 3526, 3527,
+ 3528, 3529, 3530, 3531, 3532, 3533, 0, 3534, 3535, 3536,
+ 3537, 3538, 0, 0, 178, 3539, 3540, 3541, 3542, 3543,
+ 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 3552, 3553,
+ 3554, 3555, 3556, 3557, 3558, 3559, 3560, 3561, 3562, 3563,
+ 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571, 3572, 3573,
+ 3574, 3575, 3576, 0, 0, 0, 3577, 3578, 3579, 3580,
+ 3581, 3582, 3583, 0, 0, 0, 3584, 180, 3585, 3586,
+ 3587, 3588, 3589, 3590, 181, 3591, 3592, 3593, 3594, 3595,
+ 3596, 0, 3597, 3598, 3599, 3600, 182, 3601, 3602, 3603,
+ 3604, 3605, 3606, 3607, 3608, 3609, 3610, 183, 3611, 3612,
+ 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622,
+ 3623, 3624, 3625, 0, 3626, 3627, 3628, 3629, 3630, 3631,
+ 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641,
+ 3642, 3643, 3644, 3645, 3646, 3647, 3648, 0, 3649, 3650,
+ 0, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659,
+ 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 184, 3668,
+ 3669, 3670, 3671, 0, 0, 0, 3672, 3673, 3674, 3675,
+ 3676, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685,
+ 3686, 3687, 3688, 3689, 3690, 0, 3691, 3692, 3693, 3694,
+ 3695, 3696, 3697, 3698, 3699, 3700, 3701, 185, 186, 187,
+ 0, 189, 190, 191, 192, 193, 194, 3702, 3703, 3704,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 0, 216, 0, 218, 0, 0, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 0, 0, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 0, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 3705, 3706,
+ 273, 274, 275, 0, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 0, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 0, 0, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 0, 315, 316, 317, 0, 318,
+ 319, 320, 0, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 0, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, 352, 0, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 0, 389, 390, 391, 392, 393, 394, 395, 0,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 0, 3707, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 0, 0, 0, 432, 3708, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 0, 0, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 0, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 0,
+ 516, 517, 518, 519, 520, 3709, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 0, 0,
+ 534, 535, 0, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 0, 565, 566, 0, 568, 569, 3710, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 0, 3711, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 0, 606, 607, 608, 609, 0, 610, 611,
+ 612
};
static const yytype_int16 yycheck[] =
{
- 5, 165, 68, 44, 163, 916, 0, 0, 678, 679,
- 1671, 1397, 0, 1171, 1906, 1173, 1174, 1722, 657, 1876,
- 173, 26, 789, 1181, 1932, 30, 2086, 22, 2044, 657,
- 35, 1456, 789, 38, 673, 0, 162, 1595, 1735, 678,
- 1580, 3047, 759, 2694, 0, 673, 51, 1586, 3355, 2553,
- 2096, 1931, 57, 678, 2015, 1229, 61, 52, 2848, 1365,
- 678, 3273, 1368, 58, 3376, 744, 646, 746, 704, 3202,
- 749, 750, 3243, 997, 68, 1135, 31, 902, 160, 904,
- 3268, 906, 907, 3119, 4051, 1625, 3973, 4051, 913, 2564,
- 1368, 1362, 678, 2859, 2860, 1616, 676, 646, 1533, 3948,
- 3949, 1850, 678, 3274, 2475, 1405, 2876, 2627, 2878, 1502,
- 678, 1405, 2562, 1356, 45, 3257, 966, 1655, 123, 1295,
- 2879, 1208, 1792, 1793, 3496, 2591, 827, 676, 721, 3135,
- 2664, 724, 4206, 2875, 2967, 1673, 2734, 2879, 1735, 1799,
- 134, 134, 4216, 1230, 2063, 2176, 1337, 2034, 678, 4223,
- 657, 156, 157, 1900, 173, 160, 173, 162, 173, 1819,
- 4051, 4216, 3702, 4874, 173, 173, 673, 4572, 4223, 134,
- 2655, 678, 123, 3697, 4679, 2654, 2655, 3327, 3702, 173,
- 173, 1452, 3949, 1843, 1844, 173, 5035, 1708, 1709, 1710,
- 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720,
- 3025, 12, 4051, 1900, 3930, 15, 4529, 4529, 173, 4529,
- 4486, 16, 17, 1693, 6, 7, 3496, 1067, 1068, 1069,
- 15, 1701, 1702, 26, 1704, 1705, 1137, 1897, 42, 4530,
- 1080, 4532, 31, 3319, 4535, 6, 7, 31, 42, 6,
- 7, 31, 4141, 4142, 26, 51, 4145, 47, 4549, 6,
- 7, 6, 7, 4152, 6, 7, 26, 1433, 31, 4158,
- 67, 53, 783, 902, 26, 904, 127, 906, 907, 657,
- 31, 6, 7, 47, 913, 4581, 42, 916, 28, 2187,
- 3509, 42, 42, 26, 127, 673, 3119, 2772, 71, 5159,
- 5160, 5126, 4377, 2772, 11, 12, 33, 47, 104, 26,
- 89, 26, 42, 1900, 41, 1231, 3342, 33, 24, 25,
- 26, 4669, 28, 50, 30, 41, 32, 24, 25, 26,
- 26, 28, 771, 30, 50, 32, 47, 628, 99, 33,
- 28, 33, 24, 25, 26, 770, 28, 41, 30, 41,
- 32, 755, 33, 145, 53, 173, 50, 42, 50, 203,
- 41, 53, 31, 42, 123, 88, 123, 203, 42, 50,
- 47, 26, 14, 178, 242, 203, 299, 2817, 14, 5709,
- 182, 123, 99, 3295, 99, 206, 65, 3842, 3843, 42,
- 65, 244, 314, 158, 685, 5180, 3462, 254, 33, 136,
- 804, 43, 44, 99, 268, 902, 41, 904, 3474, 906,
- 907, 168, 143, 3683, 314, 50, 913, 1467, 143, 916,
- 57, 33, 33, 26, 127, 128, 168, 232, 378, 41,
- 41, 143, 172, 3703, 128, 42, 1861, 314, 50, 50,
- 4420, 2557, 127, 318, 99, 168, 1496, 244, 305, 391,
- 26, 281, 42, 254, 42, 99, 33, 63, 310, 391,
- 33, 427, 5482, 295, 41, 107, 178, 1979, 41, 387,
- 14, 107, 1861, 50, 267, 127, 294, 50, 99, 51,
- 5327, 208, 40, 5813, 633, 317, 635, 636, 637, 638,
- 639, 640, 208, 642, 643, 2545, 99, 369, 33, 43,
- 44, 4835, 4454, 591, 305, 4876, 41, 435, 1137, 151,
- 60, 67, 14, 314, 208, 50, 208, 116, 47, 3342,
- 114, 299, 53, 672, 902, 816, 904, 208, 906, 907,
- 646, 5306, 104, 197, 337, 913, 33, 53, 916, 314,
- 2438, 43, 44, 54, 41, 4875, 122, 254, 239, 644,
- 192, 258, 299, 50, 33, 312, 192, 201, 33, 1935,
- 676, 572, 41, 107, 122, 1256, 41, 1950, 341, 75,
- 312, 50, 4636, 208, 5069, 50, 119, 726, 727, 209,
- 31, 697, 5442, 4563, 10, 4881, 433, 96, 315, 471,
- 122, 4636, 31, 366, 141, 711, 208, 208, 305, 315,
- 5891, 170, 1750, 328, 5895, 107, 764, 314, 4672, 152,
- 232, 769, 53, 771, 145, 4454, 408, 1765, 299, 458,
- 160, 315, 494, 315, 33, 386, 71, 4672, 919, 160,
- 1337, 208, 50, 3699, 315, 208, 1100, 203, 196, 314,
- 1137, 50, 1225, 201, 1227, 779, 155, 217, 192, 1318,
- 645, 646, 1321, 787, 528, 33, 1325, 1326, 1327, 31,
- 463, 314, 4539, 41, 2534, 4729, 403, 203, 1132, 201,
- 1584, 57, 50, 208, 1421, 670, 4557, 67, 225, 203,
- 315, 676, 251, 203, 4729, 71, 1600, 73, 244, 805,
- 192, 779, 787, 323, 1744, 5542, 691, 846, 847, 2546,
- 4214, 127, 697, 315, 315, 251, 2002, 5055, 629, 3233,
- 182, 208, 364, 3237, 290, 710, 711, 311, 4557, 1796,
- 686, 1798, 1562, 1563, 1801, 234, 671, 843, 3089, 208,
- 236, 2682, 290, 208, 2002, 746, 1813, 178, 315, 1816,
- 1790, 99, 315, 1820, 2034, 2861, 4635, 4044, 743, 292,
- 2034, 3226, 374, 1444, 281, 1502, 287, 3226, 290, 1137,
- 688, 2186, 601, 475, 759, 386, 838, 839, 840, 1846,
- 1847, 1848, 6063, 4135, 4663, 4137, 287, 1468, 4667, 307,
- 315, 776, 310, 299, 4146, 4674, 770, 2669, 432, 5564,
- 1971, 232, 713, 675, 789, 153, 448, 2186, 450, 3825,
- 721, 1982, 5822, 724, 4166, 580, 2354, 2355, 726, 33,
- 805, 1440, 504, 688, 3954, 4177, 143, 41, 315, 814,
- 577, 1735, 3818, 695, 169, 2723, 50, 281, 658, 779,
- 208, 568, 827, 432, 666, 577, 315, 779, 5172, 834,
- 315, 836, 506, 838, 839, 840, 841, 643, 843, 378,
- 581, 178, 797, 384, 244, 787, 33, 780, 123, 782,
- 782, 1552, 5647, 4133, 41, 4135, 684, 4137, 258, 287,
- 33, 281, 299, 50, 639, 4330, 4146, 568, 41, 743,
- 911, 33, 782, 1723, 229, 2535, 6216, 50, 540, 41,
- 630, 528, 4162, 2763, 2792, 1465, 4166, 842, 50, 844,
- 747, 50, 614, 168, 644, 782, 901, 4177, 903, 2379,
- 2380, 54, 2382, 2383, 782, 281, 2082, 912, 658, 4871,
- 915, 366, 779, 376, 593, 1841, 107, 779, 72, 782,
- 1334, 782, 472, 928, 918, 918, 33, 315, 782, 5014,
- 918, 681, 299, 1440, 41, 723, 782, 1573, 33, 782,
- 755, 710, 3392, 50, 782, 341, 41, 730, 669, 763,
- 1399, 782, 614, 918, 743, 50, 758, 1392, 5264, 763,
- 4189, 4047, 768, 359, 33, 712, 769, 779, 779, 779,
- 366, 763, 41, 787, 208, 782, 1900, 782, 1745, 779,
- 779, 50, 669, 787, 779, 779, 1703, 769, 1745, 779,
- 759, 4981, 3825, 5269, 786, 5271, 5831, 763, 780, 769,
- 782, 192, 763, 763, 1070, 779, 779, 769, 3833, 5332,
- 5332, 4978, 5332, 1649, 4978, 786, 477, 5375, 780, 786,
- 782, 208, 4871, 763, 4873, 758, 769, 787, 3950, 786,
- 717, 786, 2781, 5334, 786, 208, 1162, 780, 5908, 782,
- 5910, 5911, 769, 780, 769, 1171, 208, 787, 1174, 629,
- 1817, 786, 1440, 1179, 763, 4131, 4132, 742, 33, 785,
- 1817, 643, 779, 769, 780, 547, 41, 1072, 763, 782,
- 768, 769, 688, 780, 763, 50, 1070, 4153, 782, 763,
- 782, 315, 1070, 4159, 1210, 5590, 5935, 4978, 780, 4815,
- 2150, 782, 4168, 649, 4170, 4171, 4172, 314, 4174, 4175,
- 763, 208, 1781, 787, 769, 5510, 4873, 1777, 4184, 4185,
- 4186, 4187, 4188, 208, 766, 767, 768, 769, 770, 771,
- 772, 773, 768, 769, 770, 771, 772, 773, 315, 4978,
- 1135, 5512, 901, 1850, 6004, 6005, 696, 782, 1777, 208,
- 2662, 2663, 315, 88, 593, 6015, 763, 35, 36, 37,
- 505, 39, 1777, 315, 5865, 5866, 769, 1162, 780, 1777,
- 2071, 782, 5502, 763, 732, 763, 1171, 704, 568, 1174,
- 787, 5511, 1752, 692, 1179, 4008, 4009, 376, 5168, 4012,
- 4013, 232, 335, 769, 4724, 4018, 4019, 787, 4728, 787,
- 732, 1777, 560, 1950, 376, 782, 578, 780, 6068, 782,
- 4724, 1777, 782, 1752, 4728, 1210, 782, 361, 315, 1777,
- 369, 593, 4045, 1914, 768, 769, 770, 771, 772, 773,
- 315, 33, 763, 1524, 281, 688, 143, 780, 376, 41,
- 1271, 1399, 1358, 208, 1535, 780, 782, 782, 50, 208,
- 704, 254, 1395, 1248, 1195, 1250, 315, 1777, 782, 787,
- 1255, 1256, 782, 232, 1971, 767, 768, 769, 770, 771,
- 772, 773, 333, 1422, 331, 1982, 1983, 1272, 156, 2127,
- 1777, 1337, 232, 1952, 1953, 782, 1281, 614, 160, 743,
- 1959, 1960, 1961, 3163, 704, 1236, 3033, 653, 393, 270,
- 1295, 1296, 305, 782, 1225, 780, 1227, 1890, 5372, 2457,
- 5374, 314, 577, 3160, 755, 4493, 143, 5297, 4496, 5299,
- 3190, 1316, 763, 3200, 5304, 735, 2474, 5372, 5562, 5374,
- 2478, 5311, 5312, 2623, 1917, 4475, 448, 178, 704, 2623,
- 3981, 5321, 1337, 1338, 730, 494, 3033, 5327, 448, 1465,
- 315, 2265, 371, 1337, 3995, 782, 4718, 1429, 703, 1337,
- 787, 390, 506, 1358, 580, 4497, 33, 2531, 2783, 211,
- 14, 4367, 33, 580, 1319, 1320, 1297, 743, 2038, 1949,
- 41, 1376, 232, 50, 2434, 2435, 1395, 5627, 1395, 50,
- 1395, 298, 2688, 2904, 2690, 2691, 1395, 1395, 369, 43,
- 44, 178, 1397, 1398, 782, 178, 208, 53, 1392, 2699,
- 2460, 1395, 1395, 1408, 2797, 2699, 3437, 1395, 2109, 2110,
- 2688, 3330, 2690, 2691, 1419, 782, 1421, 2504, 409, 410,
- 787, 2508, 40, 2510, 1429, 1430, 71, 1553, 1433, 173,
- 1395, 723, 2071, 3967, 3968, 580, 3033, 2524, 4718, 1444,
- 1741, 492, 5824, 1448, 3910, 1450, 5690, 510, 3006, 3007,
- 2537, 2538, 2643, 107, 5176, 1460, 5802, 2996, 2649, 779,
- 1465, 298, 1467, 1468, 101, 3373, 4064, 787, 71, 3129,
- 73, 40, 2111, 1404, 3012, 3013, 3014, 3015, 3963, 3964,
- 551, 1250, 3853, 2111, 3963, 3964, 1255, 143, 3028, 688,
- 553, 1496, 614, 4499, 33, 787, 3867, 1502, 649, 528,
- 3871, 3022, 41, 315, 614, 4264, 688, 2146, 613, 5759,
- 31, 50, 2033, 494, 1264, 145, 33, 2997, 2146, 2999,
- 2159, 1526, 4264, 358, 41, 1275, 593, 143, 1594, 755,
- 160, 476, 492, 50, 2159, 72, 695, 208, 192, 127,
- 688, 2159, 459, 193, 2183, 2184, 780, 1552, 1553, 33,
- 462, 2727, 5542, 33, 4387, 2183, 2184, 41, 5548, 33,
- 2163, 41, 633, 414, 2071, 5464, 50, 41, 1337, 33,
- 50, 423, 976, 977, 978, 2818, 50, 41, 196, 770,
- 771, 772, 773, 2159, 363, 566, 50, 2445, 2446, 126,
- 472, 2159, 1586, 780, 338, 782, 1722, 4117, 4118, 448,
- 1594, 658, 258, 657, 2111, 392, 1594, 780, 40, 782,
- 755, 110, 5646, 33, 736, 654, 3365, 1021, 780, 673,
- 782, 41, 459, 474, 678, 688, 1752, 196, 779, 2159,
- 50, 414, 492, 287, 572, 10, 5050, 472, 315, 2146,
- 669, 586, 298, 33, 315, 1650, 167, 704, 593, 1654,
- 1419, 41, 2159, 632, 599, 1660, 1697, 33, 6040, 296,
- 50, 1430, 307, 572, 2381, 41, 1671, 582, 71, 208,
- 73, 235, 782, 780, 50, 4125, 2183, 2184, 590, 1448,
- 659, 1450, 6028, 2071, 40, 780, 57, 1851, 225, 1683,
- 1683, 208, 5682, 101, 19, 20, 99, 3367, 99, 99,
- 1782, 1783, 73, 1785, 1786, 1787, 1788, 357, 3229, 641,
- 145, 5701, 328, 782, 695, 1797, 28, 1722, 30, 1724,
- 214, 2357, 713, 2111, 208, 716, 314, 2787, 208, 674,
- 42, 5453, 226, 1815, 208, 1740, 5458, 5459, 167, 1744,
- 1745, 335, 150, 577, 208, 33, 232, 1752, 1753, 10,
- 5814, 5785, 127, 41, 384, 667, 293, 226, 2146, 258,
- 3195, 378, 50, 366, 196, 614, 779, 2068, 468, 1774,
- 5619, 2159, 688, 1899, 4916, 756, 315, 1782, 1783, 1784,
- 1785, 1786, 1787, 1788, 1789, 1790, 1791, 281, 208, 568,
- 735, 312, 1797, 1957, 1958, 2183, 2184, 5646, 315, 268,
- 201, 5650, 1733, 459, 160, 780, 506, 782, 746, 1814,
- 1815, 4847, 1817, 127, 1940, 2454, 434, 652, 208, 144,
- 289, 4857, 4858, 1949, 740, 1951, 33, 753, 314, 2454,
- 5244, 315, 208, 1838, 41, 315, 2454, 746, 3898, 5857,
- 196, 315, 5860, 50, 782, 1850, 33, 5261, 902, 598,
- 904, 315, 906, 907, 41, 787, 74, 3128, 173, 913,
- 454, 2441, 916, 50, 1990, 434, 2167, 4637, 86, 225,
- 457, 196, 787, 782, 2175, 763, 764, 765, 2454, 10,
- 141, 1650, 2793, 312, 2185, 1654, 2454, 736, 296, 1820,
- 404, 1660, 2441, 33, 1899, 315, 5084, 2808, 2599, 5748,
- 3200, 41, 3060, 303, 304, 33, 3200, 3178, 197, 1914,
- 50, 33, 2551, 41, 1919, 5637, 4682, 2043, 3076, 41,
- 208, 595, 50, 2551, 2454, 315, 2643, 676, 50, 3087,
- 3088, 5119, 2649, 782, 4943, 1940, 5785, 293, 2849, 315,
- 598, 3366, 1947, 5830, 1949, 1950, 1951, 2664, 782, 5836,
- 1955, 36, 37, 5802, 119, 2634, 3262, 542, 2637, 1890,
- 4969, 661, 2641, 366, 2721, 33, 1971, 436, 780, 463,
- 4341, 1740, 6036, 41, 6071, 4346, 4347, 1982, 1983, 294,
- 33, 3041, 50, 386, 3262, 1990, 1917, 152, 41, 314,
- 2583, 608, 281, 3386, 3387, 3887, 342, 50, 2601, 33,
- 2670, 208, 314, 403, 458, 4021, 403, 41, 1412, 413,
- 141, 3071, 723, 600, 4847, 1784, 50, 691, 676, 128,
- 1789, 208, 1791, 6087, 4857, 4858, 5993, 315, 5992, 6047,
- 386, 4141, 3889, 2858, 2859, 2860, 3997, 572, 2043, 5794,
- 2797, 33, 3233, 454, 2551, 154, 3237, 2052, 4699, 41,
- 364, 293, 461, 2058, 568, 4530, 528, 2062, 50, 154,
- 4535, 386, 3368, 6127, 2781, 4540, 2454, 627, 208, 1838,
- 5106, 745, 413, 5828, 421, 475, 787, 2082, 6175, 6176,
- 208, 1850, 2685, 1137, 493, 489, 208, 704, 5937, 33,
- 3368, 437, 2097, 33, 2099, 2734, 14, 41, 2103, 3370,
- 5472, 41, 4753, 720, 2109, 2110, 50, 763, 315, 3033,
- 50, 782, 766, 767, 768, 769, 770, 771, 772, 773,
- 120, 2126, 2127, 683, 709, 43, 44, 292, 315, 33,
- 5318, 226, 5303, 668, 448, 33, 450, 41, 5147, 495,
- 208, 613, 727, 41, 386, 2150, 50, 601, 489, 2154,
- 561, 4261, 50, 33, 2793, 208, 33, 671, 567, 2164,
- 779, 41, 454, 2551, 41, 2170, 47, 55, 787, 2808,
- 50, 460, 497, 50, 208, 315, 2181, 2182, 419, 6028,
- 0, 2702, 2703, 117, 118, 426, 1955, 315, 5468, 107,
- 47, 33, 5472, 315, 541, 33, 131, 669, 47, 41,
- 647, 123, 1971, 41, 7, 127, 2786, 499, 50, 2848,
- 2849, 746, 50, 1982, 1983, 144, 208, 506, 218, 2858,
- 2859, 2860, 723, 2848, 2863, 106, 540, 2734, 3139, 51,
- 2848, 47, 3082, 2227, 2227, 3146, 2875, 2786, 2863, 648,
- 2879, 5553, 602, 782, 2880, 2863, 168, 315, 2412, 106,
- 2875, 173, 5440, 495, 2879, 2891, 2892, 106, 705, 6123,
- 2896, 708, 315, 151, 208, 782, 3, 196, 208, 6097,
- 217, 205, 2848, 5106, 192, 3042, 568, 57, 779, 167,
- 2848, 315, 104, 2052, 206, 3042, 2793, 2863, 735, 2058,
- 106, 71, 6156, 73, 31, 2863, 743, 128, 782, 2875,
- 614, 2808, 782, 2879, 208, 33, 763, 2875, 782, 2375,
- 208, 2879, 2948, 41, 6142, 2441, 780, 5150, 2848, 3799,
- 151, 3801, 50, 315, 47, 14, 2331, 33, 208, 2965,
- 2335, 208, 2458, 2863, 281, 41, 573, 574, 47, 229,
- 287, 2848, 2849, 2348, 50, 2875, 2734, 763, 282, 2879,
- 238, 2858, 2859, 2860, 43, 44, 3895, 2126, 2127, 4834,
- 4835, 251, 782, 145, 752, 33, 208, 141, 2875, 454,
- 208, 315, 2879, 41, 127, 315, 127, 136, 160, 2982,
- 6067, 2375, 50, 106, 413, 2154, 1440, 2375, 47, 5465,
- 5180, 779, 782, 763, 53, 2164, 55, 106, 5474, 158,
- 5476, 5477, 5478, 5479, 5480, 2793, 782, 2489, 5596, 4780,
- 4781, 315, 2494, 650, 499, 704, 6103, 315, 107, 744,
- 2808, 2503, 173, 4898, 177, 4900, 1003, 2509, 99, 2434,
- 2435, 33, 2558, 3103, 3104, 315, 2441, 723, 315, 41,
- 2445, 2446, 779, 6079, 6080, 1022, 1023, 206, 50, 30,
- 787, 763, 153, 2458, 35, 2460, 768, 769, 2463, 2464,
- 2848, 2849, 151, 5114, 3103, 3104, 779, 168, 782, 128,
- 2858, 2859, 2860, 315, 787, 2863, 561, 315, 3103, 3104,
- 208, 6117, 5694, 2488, 2489, 3103, 3104, 2875, 241, 2494,
- 22, 2879, 57, 779, 782, 768, 769, 29, 2503, 31,
- 3139, 667, 208, 192, 2509, 787, 71, 3146, 5641, 675,
- 5643, 271, 4369, 33, 680, 311, 3233, 3103, 3104, 604,
- 3237, 41, 282, 2454, 33, 713, 33, 3103, 3104, 717,
- 50, 2536, 41, 3444, 41, 3103, 3104, 4498, 769, 31,
- 208, 50, 33, 50, 779, 769, 2672, 2552, 4624, 780,
- 41, 2633, 787, 2558, 2559, 2560, 780, 2639, 2640, 50,
- 313, 341, 2331, 4579, 779, 328, 2335, 4643, 2523, 5757,
- 2501, 154, 787, 3103, 3104, 782, 4652, 65, 769, 359,
- 779, 2512, 4658, 2588, 510, 4601, 366, 315, 787, 780,
- 2595, 782, 4668, 3196, 2599, 782, 3103, 3104, 533, 534,
- 4676, 4677, 537, 538, 539, 33, 208, 57, 737, 315,
- 779, 391, 4862, 41, 258, 5922, 5923, 4867, 787, 779,
- 2625, 71, 50, 73, 2629, 2630, 2631, 787, 2633, 3386,
- 3387, 178, 3139, 2638, 2639, 2640, 5769, 307, 2643, 3146,
- 310, 779, 782, 779, 2649, 33, 4288, 315, 3365, 787,
- 4292, 787, 2583, 41, 782, 577, 33, 33, 780, 2664,
- 2786, 779, 50, 2668, 41, 41, 2597, 2672, 2673, 19,
- 20, 4229, 4230, 50, 50, 50, 2445, 2446, 763, 764,
- 765, 343, 5762, 5763, 299, 33, 33, 513, 208, 515,
- 516, 3997, 950, 41, 41, 6132, 6133, 5172, 3301, 208,
- 4258, 208, 50, 50, 530, 3879, 532, 113, 114, 115,
- 3868, 4372, 3870, 315, 782, 4273, 2721, 208, 389, 3997,
- 391, 417, 2727, 1777, 141, 1286, 4141, 4142, 3886, 782,
- 4145, 1292, 1293, 3336, 128, 3338, 3339, 4152, 4784, 997,
- 5873, 3344, 4282, 5876, 746, 5396, 780, 670, 3922, 3352,
- 2876, 3139, 2878, 3356, 425, 3358, 1664, 1665, 3146, 5130,
- 5131, 670, 3283, 3284, 191, 3286, 3287, 2536, 2773, 2700,
- 2775, 19, 20, 3412, 4312, 3835, 2781, 2708, 281, 2784,
- 208, 2786, 2787, 4799, 455, 4325, 33, 3412, 5865, 5866,
- 782, 2560, 2797, 460, 41, 315, 3883, 767, 768, 625,
- 626, 128, 780, 50, 231, 3444, 315, 780, 315, 782,
- 19, 20, 5892, 145, 786, 1073, 5896, 33, 731, 732,
- 208, 734, 33, 736, 315, 41, 4097, 145, 662, 33,
- 41, 208, 208, 28, 50, 30, 3412, 41, 782, 50,
- 145, 268, 782, 312, 3412, 101, 50, 147, 766, 767,
- 768, 769, 770, 771, 772, 773, 127, 787, 158, 5334,
- 208, 208, 2631, 780, 33, 782, 166, 734, 33, 2638,
- 281, 2876, 41, 2878, 2643, 780, 41, 782, 782, 787,
- 2649, 50, 3412, 120, 782, 50, 780, 315, 782, 33,
- 33, 341, 657, 436, 150, 2664, 144, 41, 41, 4119,
- 780, 4121, 4782, 780, 743, 3412, 50, 50, 47, 359,
- 268, 779, 33, 33, 33, 114, 366, 588, 1176, 287,
- 41, 41, 41, 4628, 5428, 33, 33, 315, 128, 50,
- 50, 50, 2863, 41, 41, 144, 3002, 3444, 315, 315,
- 782, 391, 50, 50, 782, 780, 151, 782, 196, 249,
- 730, 622, 33, 780, 141, 782, 606, 81, 33, 386,
- 41, 208, 101, 647, 19, 20, 41, 315, 315, 50,
- 780, 398, 782, 3137, 2979, 50, 4942, 277, 53, 4995,
- 4008, 4009, 779, 584, 4012, 4013, 475, 196, 5004, 779,
- 4018, 4019, 208, 704, 6074, 6075, 101, 208, 254, 780,
- 580, 782, 2996, 3008, 208, 33, 779, 1265, 3002, 779,
- 4976, 150, 2781, 41, 3002, 2784, 1375, 2071, 735, 1378,
- 1379, 779, 50, 147, 3412, 333, 18, 19, 20, 333,
- 780, 3036, 782, 780, 158, 782, 3041, 3042, 333, 208,
- 296, 4580, 166, 208, 780, 150, 782, 81, 40, 305,
- 203, 299, 780, 780, 551, 782, 3444, 2111, 314, 88,
- 780, 780, 782, 782, 208, 208, 3071, 287, 315, 193,
- 203, 498, 328, 427, 780, 3842, 3843, 766, 767, 768,
- 769, 770, 771, 772, 773, 3842, 3843, 208, 208, 208,
- 145, 782, 2146, 4364, 3099, 283, 3101, 3091, 3091, 315,
- 208, 208, 779, 3091, 315, 2159, 3270, 1365, 360, 788,
- 1368, 315, 780, 147, 24, 254, 351, 3243, 28, 780,
- 30, 782, 32, 351, 158, 249, 3091, 208, 3133, 2183,
- 2184, 786, 166, 208, 3216, 3091, 779, 4798, 386, 779,
- 3145, 568, 779, 515, 516, 779, 315, 3273, 3274, 254,
- 315, 779, 40, 277, 780, 779, 782, 296, 530, 193,
- 532, 3797, 50, 780, 15, 782, 305, 55, 160, 779,
- 4595, 315, 315, 779, 779, 314, 3943, 386, 780, 779,
- 208, 4339, 4340, 3309, 24, 25, 3943, 4361, 28, 328,
- 30, 296, 32, 779, 315, 315, 315, 226, 737, 73,
- 305, 779, 779, 4761, 196, 57, 81, 315, 315, 314,
- 5996, 3216, 780, 779, 782, 249, 3221, 6223, 33, 71,
- 4635, 73, 780, 328, 782, 780, 41, 782, 3233, 780,
- 311, 782, 3237, 225, 315, 50, 1566, 1567, 3243, 268,
- 315, 737, 780, 277, 782, 1575, 3251, 1505, 4663, 497,
- 3967, 3968, 4667, 625, 626, 283, 779, 779, 4644, 4674,
- 780, 779, 3193, 151, 780, 4651, 782, 3036, 3273, 3274,
- 24, 780, 147, 780, 28, 1605, 30, 1607, 32, 167,
- 730, 38, 780, 158, 782, 779, 6072, 315, 497, 780,
- 213, 166, 1622, 1623, 1624, 4956, 780, 779, 782, 1629,
- 1630, 293, 4460, 780, 3309, 782, 779, 1637, 196, 338,
- 213, 533, 534, 128, 4700, 537, 538, 539, 193, 33,
- 3325, 213, 780, 47, 782, 6111, 1584, 41, 203, 5034,
- 779, 386, 5298, 780, 779, 782, 50, 787, 393, 779,
- 779, 1599, 1600, 18, 19, 20, 779, 779, 5364, 5315,
- 238, 213, 780, 408, 780, 40, 782, 779, 779, 6145,
- 3365, 780, 5328, 782, 5330, 40, 3297, 3298, 3299, 3300,
- 55, 3302, 3303, 4198, 249, 430, 3145, 780, 53, 782,
- 3385, 3386, 3387, 780, 413, 782, 3391, 23, 6174, 779,
- 26, 27, 780, 208, 386, 31, 4702, 780, 73, 782,
- 2454, 779, 277, 780, 780, 88, 75, 436, 779, 3340,
- 3341, 751, 3343, 127, 3345, 3346, 3347, 3348, 3349, 3350,
- 3351, 5118, 3353, 779, 99, 4064, 3357, 4985, 780, 780,
- 782, 782, 780, 780, 463, 780, 779, 782, 4041, 4042,
- 4043, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 3221, 779, 306, 307, 780, 126, 782, 780,
- 4618, 782, 4065, 4066, 3233, 4068, 151, 780, 3237, 782,
- 1728, 780, 779, 782, 55, 723, 145, 1735, 5139, 31,
- 535, 4120, 167, 88, 5005, 160, 780, 33, 782, 341,
- 779, 160, 4120, 548, 208, 41, 744, 2551, 23, 779,
- 315, 26, 27, 495, 50, 779, 31, 359, 787, 779,
- 565, 196, 119, 780, 366, 782, 123, 779, 1776, 33,
- 127, 196, 5582, 779, 779, 779, 201, 41, 203, 15,
- 780, 214, 782, 780, 779, 744, 50, 779, 779, 391,
- 145, 122, 780, 226, 782, 152, 92, 93, 94, 95,
- 225, 15, 779, 238, 33, 779, 225, 4064, 4133, 4198,
- 779, 168, 41, 4330, 780, 4140, 173, 779, 4143, 780,
- 780, 50, 782, 4330, 782, 4150, 780, 5434, 779, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 779, 584, 138, 139, 140, 780, 3365, 782, 281, 206,
- 780, 315, 782, 4239, 5620, 780, 289, 782, 780, 779,
- 782, 780, 779, 4120, 128, 780, 203, 780, 293, 782,
- 201, 226, 3391, 779, 779, 4264, 5518, 763, 780, 658,
- 782, 355, 779, 662, 779, 690, 780, 780, 779, 4264,
- 779, 324, 1900, 189, 190, 779, 128, 779, 779, 128,
- 705, 779, 779, 81, 779, 203, 3820, 75, 782, 780,
- 780, 780, 208, 779, 4300, 779, 779, 779, 779, 4272,
- 779, 346, 780, 780, 779, 399, 4064, 401, 779, 122,
- 2734, 779, 779, 779, 289, 292, 81, 779, 4264, 779,
- 4293, 4198, 779, 779, 208, 22, 4264, 24, 25, 779,
- 779, 28, 29, 30, 31, 779, 735, 253, 126, 290,
- 5407, 386, 779, 779, 743, 384, 258, 782, 5626, 147,
- 5417, 670, 460, 779, 5632, 5633, 688, 145, 127, 208,
- 158, 688, 4120, 704, 4264, 676, 510, 429, 166, 2793,
- 143, 782, 160, 422, 2002, 782, 2004, 782, 582, 360,
- 782, 785, 147, 436, 2808, 127, 394, 4264, 201, 782,
- 752, 782, 579, 158, 699, 193, 763, 491, 7, 315,
- 316, 166, 5433, 40, 743, 3780, 463, 463, 24, 25,
- 463, 779, 28, 50, 30, 5325, 32, 10, 55, 677,
- 465, 782, 217, 31, 2848, 2849, 136, 296, 193, 217,
- 151, 315, 65, 393, 2858, 2859, 2860, 225, 203, 2863,
- 4198, 18, 19, 20, 408, 3, 3821, 541, 583, 743,
- 495, 249, 403, 40, 787, 427, 311, 54, 47, 410,
- 3835, 436, 3837, 40, 127, 782, 315, 3842, 3843, 787,
- 3845, 120, 787, 3848, 3849, 182, 422, 290, 643, 277,
- 704, 780, 333, 333, 249, 33, 333, 4682, 463, 141,
- 506, 311, 561, 41, 588, 411, 73, 24, 25, 26,
- 3952, 28, 50, 30, 128, 32, 4264, 5035, 730, 154,
- 311, 779, 277, 177, 151, 786, 782, 106, 105, 47,
- 5276, 5277, 99, 5279, 5555, 779, 3901, 787, 427, 5420,
- 167, 3895, 3896, 780, 4425, 4426, 4427, 4428, 4429, 4430,
- 4431, 4432, 4433, 4434, 3845, 4436, 4437, 4438, 4439, 4440,
- 4441, 4442, 4443, 4444, 4445, 594, 106, 4448, 4449, 196,
- 780, 336, 478, 2191, 782, 780, 3941, 2267, 3943, 780,
- 2270, 3946, 3947, 787, 24, 25, 26, 3952, 28, 780,
- 30, 648, 32, 160, 678, 4108, 2286, 780, 127, 127,
- 403, 250, 3967, 3968, 780, 787, 384, 410, 780, 3974,
- 577, 238, 779, 167, 191, 658, 700, 2307, 779, 196,
- 5888, 136, 18, 19, 20, 660, 5144, 5373, 782, 196,
- 287, 788, 677, 782, 201, 127, 203, 602, 544, 770,
- 546, 73, 4938, 4939, 40, 4941, 552, 2265, 2266, 787,
- 4946, 4052, 782, 4949, 231, 4536, 4952, 4953, 225, 127,
- 4541, 688, 770, 360, 4960, 151, 4962, 4666, 5725, 490,
- 208, 701, 451, 702, 127, 4971, 782, 73, 435, 644,
- 688, 4666, 4617, 4682, 4619, 264, 127, 266, 4666, 3103,
- 3104, 268, 735, 33, 4629, 780, 5577, 662, 277, 779,
- 743, 41, 779, 99, 782, 154, 612, 3, 3837, 406,
- 50, 782, 4647, 362, 293, 151, 217, 752, 363, 239,
- 510, 370, 360, 510, 4659, 3139, 293, 510, 5793, 2347,
- 4666, 4096, 3146, 510, 4099, 510, 385, 510, 4666, 763,
- 4675, 782, 2360, 708, 782, 283, 395, 396, 397, 120,
- 656, 19, 20, 676, 4108, 4108, 405, 24, 25, 47,
- 4108, 28, 287, 30, 160, 32, 127, 596, 71, 4123,
- 735, 743, 713, 673, 158, 716, 4666, 315, 743, 346,
- 5526, 780, 5528, 5529, 725, 780, 780, 484, 128, 57,
- 780, 780, 158, 96, 4833, 210, 779, 782, 137, 4666,
- 196, 787, 65, 33, 251, 201, 109, 203, 439, 386,
- 787, 41, 3941, 780, 664, 4682, 594, 3946, 3947, 386,
- 50, 398, 125, 53, 391, 418, 779, 782, 4193, 225,
- 6206, 595, 2450, 480, 4199, 5735, 480, 33, 3967, 3968,
- 780, 283, 748, 782, 68, 41, 734, 703, 2466, 782,
- 547, 206, 155, 759, 50, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 563, 564, 208, 222,
- 33, 568, 569, 570, 6091, 128, 19, 20, 41, 4842,
- 4843, 4844, 4845, 203, 782, 4848, 4849, 50, 782, 779,
- 4853, 4930, 33, 4856, 543, 474, 4859, 293, 287, 4862,
- 41, 63, 146, 4866, 4867, 154, 555, 649, 97, 50,
- 713, 42, 53, 716, 57, 4945, 4281, 780, 4666, 780,
- 780, 498, 725, 5823, 702, 427, 780, 770, 495, 780,
- 128, 234, 128, 780, 4682, 2553, 780, 769, 787, 636,
- 217, 779, 31, 5964, 780, 780, 780, 780, 4313, 780,
- 346, 378, 780, 780, 780, 122, 763, 780, 780, 4840,
- 780, 4326, 145, 780, 782, 4330, 782, 5867, 4333, 81,
- 782, 4852, 780, 2591, 2592, 315, 780, 4501, 208, 5250,
- 780, 782, 780, 782, 780, 780, 780, 779, 591, 686,
- 386, 568, 295, 411, 780, 779, 31, 779, 4363, 773,
- 31, 782, 270, 779, 427, 6222, 655, 4372, 779, 5305,
- 779, 779, 208, 281, 131, 128, 4381, 787, 127, 127,
- 782, 782, 4313, 504, 4378, 4373, 128, 787, 782, 4515,
- 3444, 787, 782, 782, 201, 147, 4999, 782, 5001, 787,
- 5003, 780, 4333, 613, 693, 208, 158, 5046, 258, 4414,
- 677, 5050, 780, 782, 166, 4420, 53, 782, 707, 4424,
- 478, 5046, 100, 47, 782, 5050, 670, 208, 5046, 6090,
- 2688, 365, 2690, 2691, 2692, 782, 127, 576, 158, 158,
- 750, 193, 4447, 507, 72, 315, 549, 75, 439, 123,
- 5971, 203, 557, 660, 779, 268, 268, 657, 268, 495,
- 679, 680, 681, 682, 268, 314, 409, 410, 268, 203,
- 5046, 779, 127, 763, 5050, 763, 5387, 763, 5046, 315,
- 763, 4486, 5050, 290, 734, 299, 544, 270, 546, 763,
- 4495, 4573, 576, 763, 552, 5174, 168, 249, 126, 5178,
- 5179, 129, 4628, 763, 763, 763, 763, 763, 416, 5112,
- 4515, 4637, 315, 18, 19, 20, 5046, 145, 763, 787,
- 5050, 763, 430, 763, 432, 277, 763, 119, 763, 763,
- 6191, 123, 160, 763, 315, 127, 34, 6077, 763, 5046,
- 333, 5180, 763, 5050, 6205, 752, 782, 299, 763, 2807,
- 6211, 763, 763, 782, 612, 5180, 464, 6218, 4563, 763,
- 152, 763, 5180, 386, 287, 787, 287, 787, 4573, 477,
- 393, 755, 392, 4578, 6095, 506, 168, 154, 786, 780,
- 153, 173, 4513, 153, 787, 408, 4580, 780, 780, 217,
- 780, 780, 213, 769, 99, 780, 787, 225, 656, 769,
- 787, 65, 510, 410, 5180, 5244, 780, 430, 780, 4603,
- 4603, 5250, 5180, 779, 206, 558, 559, 779, 782, 5244,
- 528, 338, 5261, 4628, 660, 287, 697, 287, 241, 584,
- 492, 128, 4637, 416, 262, 128, 5261, 787, 787, 779,
- 145, 779, 232, 30, 769, 4414, 780, 430, 763, 432,
- 5180, 782, 779, 763, 782, 4424, 4661, 779, 5046, 5570,
- 733, 203, 5050, 545, 333, 293, 126, 203, 5244, 203,
- 50, 287, 158, 5180, 158, 712, 5244, 408, 782, 780,
- 408, 464, 31, 31, 31, 5261, 240, 283, 53, 779,
- 748, 779, 4818, 5261, 477, 787, 779, 245, 606, 127,
- 292, 759, 770, 780, 584, 613, 72, 143, 770, 75,
- 215, 470, 535, 782, 5244, 623, 752, 787, 779, 779,
- 786, 95, 351, 352, 155, 548, 779, 510, 4854, 637,
- 155, 5261, 780, 780, 780, 780, 30, 5244, 787, 779,
- 782, 782, 565, 5250, 206, 528, 780, 780, 5387, 780,
- 780, 153, 780, 4758, 5261, 780, 384, 780, 3016, 388,
- 126, 669, 779, 129, 672, 780, 65, 272, 273, 274,
- 779, 5450, 779, 716, 763, 3033, 128, 5935, 31, 145,
- 688, 31, 232, 782, 6170, 782, 780, 292, 313, 4948,
- 232, 88, 5180, 4798, 160, 779, 704, 779, 427, 734,
- 554, 408, 4807, 4797, 4797, 203, 779, 779, 299, 299,
- 779, 719, 378, 4818, 53, 782, 4821, 780, 4823, 31,
- 782, 446, 208, 606, 287, 53, 131, 439, 251, 502,
- 613, 224, 129, 4838, 391, 4876, 576, 779, 779, 127,
- 623, 346, 127, 348, 30, 65, 256, 3105, 145, 4854,
- 780, 168, 504, 780, 637, 314, 5244, 780, 643, 225,
- 782, 206, 5250, 368, 65, 780, 780, 690, 347, 4874,
- 4875, 782, 782, 5261, 169, 217, 780, 314, 4883, 780,
- 5387, 386, 705, 4814, 780, 6043, 669, 447, 393, 672,
- 780, 173, 779, 754, 763, 167, 262, 782, 741, 250,
- 418, 418, 217, 408, 53, 688, 713, 203, 5034, 716,
- 415, 641, 780, 676, 641, 299, 299, 30, 170, 4850,
- 4851, 779, 30, 593, 4929, 430, 217, 293, 384, 4860,
- 217, 5570, 65, 217, 217, 159, 719, 4942, 4943, 4944,
- 705, 159, 217, 4874, 705, 4940, 217, 592, 217, 4954,
- 217, 4956, 217, 603, 4885, 203, 203, 386, 4963, 4964,
- 4955, 485, 128, 439, 4969, 262, 594, 584, 203, 154,
- 4965, 4976, 310, 602, 314, 391, 4981, 4972, 310, 4974,
- 4975, 576, 487, 99, 281, 577, 237, 57, 779, 498,
- 619, 4996, 497, 780, 780, 613, 293, 549, 780, 5387,
- 780, 155, 780, 782, 3262, 780, 780, 71, 5647, 782,
- 4064, 362, 780, 5018, 780, 65, 645, 406, 384, 370,
- 780, 50, 5647, 787, 780, 780, 5665, 654, 5069, 5034,
- 535, 782, 782, 780, 385, 779, 779, 53, 779, 31,
- 779, 338, 787, 548, 395, 396, 397, 780, 378, 117,
- 65, 65, 65, 779, 405, 779, 6214, 686, 446, 4990,
- 30, 331, 741, 5570, 5069, 141, 4120, 160, 5073, 4838,
- 225, 5647, 390, 741, 702, 669, 314, 5794, 422, 5647,
- 317, 424, 587, 281, 295, 787, 763, 127, 593, 30,
- 782, 780, 549, 780, 780, 445, 685, 779, 782, 780,
- 419, 583, 160, 779, 160, 236, 53, 105, 203, 127,
- 3368, 5828, 779, 779, 65, 780, 413, 5647, 779, 782,
- 65, 780, 5127, 779, 782, 65, 780, 127, 31, 287,
- 411, 127, 160, 782, 5139, 5140, 314, 287, 780, 782,
- 5647, 584, 5147, 30, 4198, 461, 651, 780, 780, 780,
- 649, 5156, 601, 658, 5159, 5160, 601, 779, 5665, 5164,
- 440, 787, 367, 5168, 779, 779, 72, 299, 779, 576,
- 6, 5176, 120, 287, 120, 4944, 5181, 5303, 5848, 787,
- 281, 787, 5570, 787, 787, 690, 787, 787, 92, 93,
- 94, 95, 543, 780, 4963, 73, 787, 287, 287, 787,
- 705, 706, 787, 787, 555, 787, 787, 787, 787, 787,
- 281, 787, 685, 718, 584, 72, 72, 5934, 160, 5740,
- 5741, 50, 5743, 5744, 5745, 5746, 787, 780, 594, 696,
- 711, 30, 782, 782, 138, 139, 140, 5242, 779, 18,
- 780, 576, 218, 65, 65, 144, 779, 779, 99, 5290,
- 99, 5292, 5183, 217, 428, 584, 584, 296, 649, 5647,
- 779, 418, 418, 779, 5269, 430, 5271, 780, 5199, 780,
- 782, 180, 779, 779, 160, 779, 48, 5665, 702, 160,
- 741, 201, 339, 99, 296, 189, 190, 53, 154, 640,
- 779, 5296, 5297, 5298, 5299, 787, 5291, 6208, 5303, 5304,
- 697, 5306, 780, 589, 655, 779, 5311, 5312, 80, 779,
- 5315, 203, 787, 659, 779, 5320, 5321, 426, 198, 737,
- 127, 779, 5327, 5328, 779, 5330, 422, 780, 207, 101,
- 173, 779, 338, 5338, 780, 779, 702, 251, 110, 585,
- 5861, 780, 693, 5864, 779, 5509, 787, 644, 218, 253,
- 782, 5872, 782, 480, 5875, 332, 707, 203, 704, 131,
- 5365, 658, 203, 108, 112, 662, 780, 780, 780, 203,
- 65, 780, 5377, 145, 296, 101, 5381, 203, 150, 203,
- 143, 649, 116, 432, 30, 779, 5989, 258, 3091, 2571,
- 782, 3359, 5003, 4999, 5001, 3212, 5631, 142, 4030, 5255,
- 5662, 173, 5812, 6032, 757, 1746, 5073, 1417, 4463, 5242,
- 3957, 708, 316, 5046, 5377, 5504, 5394, 5590, 4679, 1734,
- 3910, 2592, 3437, 3381, 2069, 820, 4198, 2182, 5433, 5500,
- 2183, 5499, 2184, 5226, 179, 4562, 4051, 5442, 735, 5319,
- 5123, 5446, 4322, 4326, 4758, 2420, 5855, 5420, 5453, 5454,
- 5966, 6095, 6056, 5458, 5459, 5748, 5418, 1405, 4937, 2699,
- 232, 4557, 5653, 4981, 236, 5168, 4563, 5293, 4832, 6080,
- 5924, 5512, 818, 5934, 5828, 5817, 5817, 5817, 5817, 4261,
- 4141, 3739, 254, 4214, 4189, 5937, 258, 259, 5848, 4626,
- 3783, 5496, 5066, 4289, 4292, 4284, 6101, 5502, 88, 88,
- 6074, 5638, 6075, 5880, 3204, 5499, 5511, 411, 5892, 5896,
- 5539, 4651, 5517, 5289, 3944, 5287, 4562, 289, 4978, 1511,
- 1426, 3779, 1929, 3192, 296, 297, 5706, 3187, 5846, 2727,
- 5543, 2085, 3036, 2560, 2817, 3391, 4126, 5542, 134, 1392,
- 2996, 763, 3134, 5548, 1339, 5550, 1379, 4600, 3266, 5590,
- 5555, 4313, 3045, 2944, 1159, 2947, 1668, 3014, 3013, 5564,
- 3820, 1724, 3729, 1590, 1569, 4701, 6033, 5816, 5694, 6208,
- 5575, 5576, 6133, 6132, 478, 1337, 4902, 1983, 1600, 1337,
- 1978, 353, 4366, 5820, 5274, 5590, 4807, 5821, 1575, 3847,
- 1973, 1337, 3806, 2678, 4495, 3253, 5365, 4494, 3804, 1337,
- 1337, 5118, 5725, 4784, 950, 5646, 5611, 1999, 5555, 5650,
- 5114, 4702, 4666, 3269, 3262, 5135, 769, 5622, 2672, 4272,
- 966, 393, 5627, 1400, 970, 4501, 106, 2773, 4682, 88,
- 5635, 2148, 5637, 688, 1370, 4123, 2810, 4378, 4813, 1249,
- 544, 3294, 546, 4365, 4363, 6090, 5651, 993, 552, 5433,
- 834, 997, 3910, 5658, 835, 2097, 1002, 679, 1806, 2532,
- 679, 2533, 3126, 1395, 436, 2586, 5496, 5793, 679, 441,
- 5150, 1918, 1516, 4129, 6093, 4907, 6138, 5682, 5283, 6211,
- 452, 453, 6218, 2552, 2807, 5454, 5139, 5692, 954, 5694,
- 2863, 3103, 678, 2188, 3104, 5700, 5701, 5702, 2466, 678,
- 3105, 6208, 3100, 5698, 3854, 2164, 1174, 3096, 612, 3095,
- 676, 1746, 1504, 1140, 1504, 2721, 5721, 1949, 4040, 3041,
- 4515, 1067, 1068, 1069, 1070, 4606, 3207, 1073, 4052, 717,
- 112, 5361, 88, 88, 1080, 1282, 481, 88, 918, 3997,
- 4886, 4120, 5868, 3438, 5785, 5665, -1, -1, 2185, 5263,
- -1, -1, 656, -1, 5759, -1, -1, -1, -1, 5764,
- -1, 5802, -1, -1, -1, 5770, 511, 512, -1, 514,
- 515, 516, 517, 518, -1, 520, 521, 522, 523, 524,
- 525, 526, 527, -1, 529, 530, 531, 532, 5793, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5809, -1, 5811, -1, -1, -1,
- -1, 5816, -1, -1, -1, 5820, 5821, -1, -1, -1,
- 6208, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1176, -1, -1, -1, -1, 607, -1, -1, -1, -1,
- -1, 5846, -1, -1, 748, 617, -1, -1, -1, 5780,
- 5855, -1, -1, -1, -1, 759, 628, -1, 5924, -1,
- 5986, -1, 634, 5868, -1, -1, -1, 6031, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 625, 626, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 665, -1, 5900, 5937, 669, -1, -1,
- -1, -1, -1, 5908, -1, 5910, 5911, -1, -1, -1,
- -1, -1, -1, -1, -1, 1261, -1, -1, -1, 1265,
- -1, -1, -1, 5692, -1, -1, 698, -1, 6054, -1,
- 5924, 5862, 5863, 5702, 5939, -1, 5924, -1, -1, -1,
- -1, -1, -1, 5874, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5964,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5986, -1, -1, -1, -1, -1, 6028, -1, -1,
- -1, -1, 5046, -1, -1, -1, -1, -1, -1, 6004,
- 6005, -1, -1, 6008, -1, -1, -1, -1, -1, -1,
- 6015, -1, -1, -1, -1, -1, -1, -1, -1, 1365,
- -1, -1, 1368, -1, 6029, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 6079, 6080,
- -1, -1, 5811, -1, 5975, -1, -1, 5978, -1, 6054,
- -1, -1, -1, -1, -1, 6219, -1, -1, -1, -1,
- -1, -1, -1, 6068, -1, -1, -1, -1, -1, 6195,
- -1, -1, -1, -1, 6200, -1, 6117, -1, 6083, -1,
- -1, -1, -1, -1, -1, 6090, -1, -1, -1, 1435,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5180, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1505,
- -1, -1, -1, -1, -1, -1, -1, -1, 1514, -1,
- 1516, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 6191, -1, -1, -1,
- 6195, -1, -1, -1, -1, 6200, 5250, -1, -1, -1,
- 6205, -1, -1, -1, -1, -1, 6211, -1, -1, -1,
- -1, -1, -1, 6218, -1, -1, 1562, 1563, -1, -1,
- -1, -1, 1568, -1, -1, -1, 1572, 1573, 1574, -1,
- -1, -1, -1, -1, -1, -1, 1582, 1583, 1584, -1,
- -1, -1, 1588, -1, -1, -1, 1592, 1593, 1594, -1,
- 1596, 1597, 1598, 1599, 1600, -1, -1, -1, -1, -1,
- 1606, -1, 1608, -1, -1, 1611, 1612, 1613, 1614, -1,
- 1616, -1, 1618, 1619, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1632, 1633, 1634, 1635,
- 1636, -1, 1638, 1639, 1640, 1641, 1642, 1643, -1, 1645,
- 1646, -1, 1648, 1649, -1, 1651, 1652, -1, -1, 1655,
- 1656, -1, 1658, 1659, -1, 1661, -1, 1663, -1, -1,
- -1, 1667, 1668, 1669, -1, -1, 1672, 1673, 1674, 1675,
- -1, 1677, -1, 5387, -1, -1, -1, -1, 1684, -1,
- -1, -1, -1, -1, 1690, 1691, 1692, 1693, -1, -1,
- -1, -1, -1, -1, -1, 1701, 1702, -1, 1704, 1705,
- -1, -1, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715,
- 1716, 1717, 1718, 1719, 1720, -1, -1, 1723, -1, -1,
- -1, -1, 1728, -1, -1, -1, -1, -1, -1, 1735,
- -1, -1, -1, -1, -1, -1, 6, 7, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 18, 19,
- 20, -1, 1758, -1, -1, -1, 6, 7, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 18, -1,
- 1776, -1, -1, -1, -1, -1, 46, -1, 48, 49,
- -1, -1, -1, -1, 4702, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 70, -1, 72, 53, -1, -1, -1, -1, 78, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
- -1, 81, -1, -1, -1, -1, -1, -1, -1, -1,
- 110, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4772, -1, 5570, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1874, 119,
- 1876, -1, -1, 123, -1, 145, -1, 127, 18, 19,
- 20, -1, -1, -1, -1, -1, 136, 137, -1, -1,
- -1, -1, -1, 143, 1900, -1, -1, 147, -1, -1,
- -1, -1, 152, 173, 154, 1911, -1, -1, 158, -1,
- -1, -1, -1, -1, -1, -1, 166, -1, 168, -1,
- -1, -1, -1, 173, -1, -1, -1, -1, -1, -1,
- -1, 71, -1, 73, 204, -1, 206, -1, -1, -1,
- -1, -1, -1, 193, -1, 215, -1, 217, -1, -1,
- -1, 5665, -1, 203, -1, -1, 206, -1, -1, 99,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 240, -1, -1, -1, -1, -1, 226, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1996, -1, -1, -1, -1, 245, 2002, -1, 2004, 249,
- -1, -1, 272, 273, 274, 145, -1, -1, 258, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2024, -1,
- -1, -1, 292, -1, -1, -1, -1, 277, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 292, -1, -1, -1, -1, -1, 298, 299,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 312, -1, 314, -1, -1, -1, 338, -1,
- -1, -1, -1, -1, -1, 215, 346, -1, 348, -1,
- -1, -1, 11, -1, 13, -1, -1, -1, -1, 18,
- 19, 20, -1, -1, -1, -1, -1, -1, 368, -1,
- -1, -1, -1, -1, -1, 375, -1, -1, -1, -1,
+ 5, 165, 0, 68, 0, 923, 44, 0, 684, 685,
+ 173, 1732, 1626, 663, 2099, 795, 1886, 163, 684, 765,
+ 1942, 26, 1745, 1916, 789, 30, 1681, 162, 1236, 679,
+ 35, 684, 1596, 38, 0, 22, 45, 1406, 1543, 795,
+ 0, 1590, 2562, 1371, 3056, 3057, 51, 2109, 3208, 1941,
+ 684, 160, 57, 3364, 3282, 2705, 61, 684, 973, 1178,
+ 2573, 1180, 1181, 1605, 1374, 52, 2027, 1377, 710, 1188,
+ 68, 58, 1377, 2566, 2056, 2858, 3384, 3277, 3125, 684,
+ 31, 3994, 1142, 684, 4072, 909, 1635, 911, 4072, 913,
+ 914, 3252, 2869, 2870, 3080, 3978, 920, 1414, 652, 2886,
+ 3266, 2888, 2571, 1665, 1718, 1719, 1720, 1721, 1722, 1723,
+ 1724, 1725, 1726, 1727, 1728, 1729, 1730, 652, 3504, 124,
+ 4492, 1683, 3283, 4508, 1860, 1004, 1365, 1346, 682, 3141,
+ 1512, 1802, 1803, 727, 2636, 1463, 730, 135, 3974, 2484,
+ 1414, 2889, 135, 1302, 2745, 2600, 2075, 682, 2666, 2885,
+ 173, 156, 157, 2889, 2185, 160, 629, 162, 1745, 1074,
+ 1075, 1076, 833, 3336, 2046, 124, 1910, 173, 2675, 135,
+ 4606, 4235, 1087, 28, 173, 173, 173, 173, 4242, 4713,
+ 173, 3963, 173, 4911, 4072, 1809, 3710, 1910, 5221, 5222,
+ 5094, 3944, 47, 4563, 4563, 4520, 4563, 3035, 6, 7,
+ 1703, 11, 12, 2977, 15, 1829, 15, 173, 1711, 1712,
+ 12, 1714, 1715, 5186, 3705, 4564, 3224, 4566, 691, 3710,
+ 4569, 42, 6, 7, 6, 7, 1144, 6, 7, 1853,
+ 1854, 6, 7, 26, 4583, 31, 1907, 6, 7, 16,
+ 17, 2665, 2666, 4703, 4160, 4161, 6, 7, 4164, 3328,
+ 31, 3517, 42, 65, 28, 4171, 24, 25, 26, 4913,
+ 28, 4177, 30, 3504, 32, 53, 2784, 33, 26, 63,
+ 31, 53, 31, 776, 2196, 41, 4615, 47, 14, 1991,
+ 33, 777, 89, 1442, 50, 5766, 26, 750, 41, 752,
+ 4400, 127, 755, 756, 24, 25, 26, 50, 28, 47,
+ 30, 33, 32, 42, 3351, 42, 60, 43, 44, 41,
+ 26, 1215, 47, 47, 244, 182, 26, 172, 50, 242,
+ 99, 127, 128, 1910, 24, 25, 26, 203, 28, 5810,
+ 30, 26, 32, 1237, 26, 143, 42, 299, 178, 123,
+ 33, 42, 158, 42, 67, 14, 299, 3304, 41, 822,
+ 26, 3125, 26, 4225, 123, 254, 1238, 50, 2827, 124,
+ 2784, 168, 26, 4235, 42, 5562, 1871, 14, 217, 173,
+ 4242, 107, 26, 203, 43, 44, 251, 391, 2871, 40,
+ 122, 33, 122, 33, 168, 42, 42, 314, 281, 41,
+ 127, 41, 232, 42, 268, 314, 43, 44, 50, 168,
+ 50, 299, 3388, 53, 33, 31, 305, 99, 65, 33,
+ 2172, 387, 41, 4481, 33, 1475, 42, 41, 232, 127,
+ 33, 50, 41, 99, 33, 99, 50, 42, 41, 116,
+ 31, 50, 41, 14, 314, 99, 127, 50, 107, 206,
+ 14, 50, 208, 281, 254, 99, 1506, 318, 258, 5242,
+ 3691, 391, 254, 926, 119, 208, 192, 3443, 51, 201,
+ 107, 122, 43, 44, 33, 4932, 310, 4920, 99, 2554,
+ 3711, 333, 41, 1513, 4927, 80, 208, 663, 770, 358,
+ 5385, 50, 427, 775, 89, 777, 203, 152, 634, 5522,
+ 294, 51, 638, 679, 640, 305, 642, 643, 684, 645,
+ 646, 647, 314, 305, 314, 53, 1871, 232, 5904, 128,
+ 572, 104, 314, 5406, 2794, 208, 4873, 652, 173, 57,
+ 328, 244, 33, 192, 299, 2447, 107, 143, 312, 54,
+ 41, 145, 678, 107, 167, 196, 71, 203, 73, 50,
+ 201, 644, 337, 312, 104, 192, 299, 682, 290, 315,
+ 290, 641, 5720, 342, 454, 71, 208, 267, 208, 57,
+ 99, 209, 315, 53, 47, 141, 598, 203, 703, 203,
+ 151, 31, 5739, 71, 598, 73, 1945, 3351, 1960, 208,
+ 136, 154, 717, 315, 208, 203, 732, 733, 761, 208,
+ 71, 6222, 1263, 472, 5128, 208, 4935, 229, 6248, 208,
+ 1346, 28, 158, 30, 3, 5896, 4670, 386, 33, 145,
+ 31, 192, 57, 3850, 3851, 42, 41, 144, 192, 251,
+ 107, 630, 315, 96, 160, 50, 33, 292, 73, 290,
+ 178, 6281, 31, 128, 41, 314, 6267, 810, 1232, 208,
+ 1234, 1760, 4706, 50, 676, 5936, 651, 652, 437, 225,
+ 206, 2543, 676, 226, 5114, 145, 1775, 1572, 1573, 154,
+ 4573, 561, 201, 315, 33, 315, 208, 31, 463, 196,
+ 160, 676, 41, 364, 1430, 323, 811, 682, 492, 312,
+ 40, 50, 155, 338, 232, 2555, 315, 749, 791, 551,
+ 2195, 315, 697, 5861, 1754, 55, 315, 208, 703, 314,
+ 4764, 791, 315, 4591, 2014, 192, 315, 853, 854, 2014,
+ 719, 716, 717, 281, 849, 1594, 1756, 3235, 727, 307,
+ 5887, 730, 310, 909, 786, 911, 677, 913, 914, 2046,
+ 4495, 1610, 2693, 5930, 920, 3242, 845, 923, 847, 3246,
+ 1800, 5634, 4233, 688, 749, 432, 315, 6143, 19, 20,
+ 3095, 5656, 728, 4669, 4065, 386, 1512, 448, 281, 450,
+ 765, 234, 287, 99, 1983, 143, 182, 492, 4154, 783,
+ 4156, 633, 2046, 652, 649, 1994, 631, 782, 776, 4165,
+ 629, 4697, 1453, 208, 299, 4701, 3833, 2680, 36, 37,
+ 795, 151, 4708, 577, 408, 650, 88, 287, 4670, 4185,
+ 178, 208, 3975, 2785, 315, 1476, 811, 167, 577, 664,
+ 4196, 3235, 2734, 706, 3826, 820, 14, 153, 1733, 690,
+ 658, 2363, 2364, 639, 786, 341, 307, 725, 833, 791,
+ 2195, 366, 687, 786, 4706, 840, 196, 842, 791, 208,
+ 845, 4909, 847, 341, 849, 43, 44, 852, 2610, 540,
+ 366, 791, 803, 746, 504, 3867, 786, 3869, 3870, 786,
+ 6341, 359, 1325, 786, 5331, 1328, 1745, 786, 366, 1332,
+ 1333, 1334, 746, 144, 1337, 1338, 477, 5234, 238, 5238,
+ 918, 2803, 686, 2775, 783, 2388, 2389, 314, 2391, 2392,
+ 315, 1562, 4764, 391, 384, 378, 690, 848, 1401, 850,
+ 3962, 3963, 1806, 908, 1808, 910, 786, 1811, 315, 107,
+ 786, 4152, 1408, 4154, 919, 4156, 783, 922, 758, 1823,
+ 2544, 669, 1826, 614, 4165, 196, 1830, 925, 5582, 925,
+ 935, 3400, 925, 745, 2696, 669, 2095, 786, 1473, 783,
+ 4181, 1583, 4208, 50, 4185, 766, 315, 5740, 702, 5603,
+ 786, 716, 1856, 1857, 1858, 4196, 786, 764, 1144, 925,
+ 33, 2673, 2674, 5073, 3972, 581, 5939, 1713, 41, 1851,
+ 791, 719, 783, 783, 783, 1755, 766, 50, 766, 772,
+ 786, 783, 790, 6016, 766, 6018, 6019, 783, 33, 4068,
+ 528, 784, 734, 786, 192, 5455, 41, 771, 772, 1755,
+ 765, 791, 783, 3841, 5343, 50, 790, 3964, 790, 786,
+ 4072, 790, 1077, 783, 772, 790, 784, 1659, 784, 786,
+ 786, 790, 783, 5348, 783, 5350, 784, 766, 786, 766,
+ 790, 1910, 772, 786, 1169, 771, 772, 773, 774, 775,
+ 776, 5411, 5411, 1178, 5411, 5033, 1181, 1827, 783, 5033,
+ 643, 1186, 791, 2789, 784, 4445, 772, 789, 33, 3833,
+ 766, 1534, 772, 786, 5413, 766, 41, 766, 784, 786,
+ 786, 1827, 1545, 734, 1079, 50, 755, 772, 786, 1077,
+ 772, 1077, 1217, 643, 784, 791, 6119, 6120, 766, 287,
+ 791, 784, 791, 786, 3374, 786, 772, 6130, 772, 2159,
+ 4853, 770, 771, 772, 773, 774, 775, 776, 772, 766,
+ 766, 1787, 4349, 791, 1860, 386, 1408, 766, 772, 784,
+ 786, 1787, 769, 770, 771, 772, 773, 774, 775, 776,
+ 4912, 547, 784, 593, 1787, 208, 786, 1142, 706, 6043,
+ 766, 746, 791, 908, 5597, 5033, 5599, 761, 33, 5683,
+ 786, 766, 786, 1787, 5590, 784, 41, 786, 4923, 6192,
+ 1787, 378, 786, 208, 1169, 50, 2084, 786, 786, 737,
+ 1343, 784, 593, 1178, 5533, 784, 1181, 786, 771, 5538,
+ 5539, 1186, 1787, 706, 476, 281, 1787, 169, 769, 770,
+ 771, 772, 773, 774, 775, 776, 143, 771, 772, 773,
+ 774, 775, 776, 791, 1960, 433, 454, 4597, 1762, 239,
+ 758, 33, 1217, 54, 578, 784, 732, 786, 766, 41,
+ 232, 694, 314, 1232, 560, 1234, 497, 1762, 50, 593,
+ 2992, 178, 1367, 208, 732, 4759, 614, 1983, 376, 4763,
+ 1278, 1404, 315, 1202, 143, 5973, 5974, 229, 1994, 1995,
+ 1255, 499, 1257, 1924, 376, 4029, 4030, 1262, 1263, 4033,
+ 4034, 50, 369, 1449, 123, 4039, 4040, 67, 4759, 784,
+ 315, 786, 4763, 784, 1279, 786, 766, 3169, 1751, 314,
+ 2045, 1346, 232, 1288, 1243, 1431, 773, 774, 775, 776,
+ 390, 40, 4066, 791, 586, 1304, 3166, 1302, 1303, 3043,
+ 2914, 593, 33, 281, 3196, 663, 1900, 599, 582, 168,
+ 41, 160, 254, 561, 5342, 2632, 376, 677, 1323, 50,
+ 3043, 679, 2136, 208, 3206, 211, 684, 4527, 1791, 1438,
+ 4530, 5605, 2540, 1927, 33, 97, 4509, 72, 1473, 766,
+ 315, 1346, 1347, 376, 771, 772, 617, 2466, 1346, 4361,
+ 1346, 50, 4002, 136, 160, 295, 604, 40, 2632, 71,
+ 5922, 786, 1367, 305, 2483, 4531, 4016, 4753, 2487, 197,
+ 528, 5730, 314, 53, 2050, 1326, 1327, 317, 4390, 786,
+ 1385, 1404, 674, 2443, 2444, 6191, 208, 494, 5452, 2699,
+ 5454, 2701, 2702, 2710, 2699, 2274, 2701, 2702, 1404, 197,
+ 331, 1406, 1407, 1401, 1413, 1404, 1404, 1404, 1404, 2469,
+ 3339, 1404, 1417, 1404, 3445, 143, 1271, 786, 3032, 4481,
+ 690, 226, 6228, 1428, 1959, 1430, 2808, 1282, 1563, 328,
+ 315, 99, 404, 1438, 1439, 2654, 2710, 1442, 1404, 369,
+ 3202, 2660, 3006, 170, 244, 737, 448, 196, 1453, 2120,
+ 2121, 435, 1457, 281, 1459, 47, 3043, 178, 258, 3381,
+ 3022, 3023, 3024, 3025, 226, 1470, 3984, 3985, 1473, 3924,
+ 1475, 1476, 2122, 743, 3016, 3017, 747, 208, 5864, 5865,
+ 492, 3988, 3989, 784, 4085, 786, 757, 393, 580, 3038,
+ 5326, 5327, 1257, 315, 335, 31, 101, 1262, 287, 1962,
+ 1963, 1506, 2168, 226, 3007, 2155, 3009, 1512, 1971, 1972,
+ 1973, 3135, 4753, 196, 106, 2168, 3861, 791, 766, 767,
+ 768, 4533, 750, 505, 251, 409, 410, 53, 475, 4591,
+ 178, 1536, 5917, 201, 2168, 4283, 3881, 423, 568, 1604,
+ 3885, 2168, 2192, 2193, 5916, 580, 178, 4283, 3310, 363,
+ 114, 909, 690, 911, 654, 913, 914, 1562, 1563, 471,
+ 3984, 3985, 920, 2168, 494, 923, 783, 5595, 690, 5932,
+ 298, 769, 770, 771, 772, 773, 774, 775, 776, 2738,
+ 5452, 1346, 5454, 3345, 315, 3347, 3348, 33, 123, 2828,
+ 697, 3353, 127, 6155, 33, 41, 568, 1732, 1596, 3361,
+ 448, 1787, 41, 3365, 50, 3367, 1604, 2080, 1604, 2513,
+ 706, 50, 614, 2517, 6000, 2519, 315, 143, 6004, 299,
+ 403, 270, 14, 472, 3238, 4637, 361, 1762, 5544, 2533,
+ 690, 167, 460, 168, 4136, 4137, 4410, 3373, 173, 33,
+ 2454, 2455, 2546, 2547, 2390, 5919, 5036, 41, 81, 6211,
+ 746, 43, 44, 33, 366, 1660, 50, 690, 463, 1664,
+ 33, 41, 593, 1428, 33, 1670, 472, 614, 41, 1707,
+ 50, 206, 41, 577, 1439, 4144, 1681, 50, 506, 6051,
+ 658, 50, 632, 1792, 1793, 434, 1795, 1796, 1797, 1798,
+ 6252, 296, 1457, 414, 1459, 1693, 3201, 1861, 1807, 671,
+ 1693, 463, 33, 2176, 4716, 3376, 690, 613, 506, 659,
+ 41, 2184, 232, 786, 147, 107, 1825, 40, 577, 50,
+ 369, 2194, 33, 705, 2366, 158, 666, 1732, 706, 1734,
+ 41, 459, 258, 166, 1743, 591, 5764, 2797, 33, 50,
+ 463, 786, 378, 653, 392, 1750, 41, 311, 33, 1754,
+ 1755, 434, 143, 33, 568, 50, 41, 1762, 1763, 151,
+ 193, 41, 208, 675, 432, 50, 614, 697, 568, 208,
+ 50, 506, 298, 572, 1909, 5965, 312, 371, 5968, 1784,
+ 127, 448, 414, 145, 786, 568, 1144, 1792, 1793, 1794,
+ 1795, 1796, 1797, 1798, 1799, 1800, 1801, 2463, 160, 5109,
+ 192, 6164, 1807, 1967, 1968, 4971, 3134, 983, 984, 985,
+ 2463, 786, 6198, 6199, 208, 1950, 249, 580, 413, 1824,
+ 1825, 1830, 1827, 510, 1959, 458, 1961, 3912, 208, 2463,
+ 458, 715, 19, 20, 718, 208, 2463, 160, 4885, 208,
+ 5230, 783, 474, 1848, 277, 494, 5654, 4909, 4895, 4896,
+ 4912, 33, 1028, 75, 374, 1860, 3184, 33, 2463, 41,
+ 1969, 1970, 33, 33, 33, 41, 553, 2002, 50, 315,
+ 41, 41, 41, 196, 50, 5758, 315, 208, 706, 50,
+ 50, 50, 786, 4998, 4671, 627, 2804, 127, 5999, 3206,
+ 738, 1900, 6003, 235, 489, 1660, 2450, 208, 2084, 1664,
+ 2818, 786, 225, 128, 1909, 1670, 293, 298, 2654, 5024,
+ 2560, 457, 127, 208, 2660, 2450, 110, 566, 1927, 1924,
+ 2055, 315, 33, 208, 1929, 572, 151, 783, 208, 2675,
+ 41, 714, 3206, 459, 528, 315, 2122, 2608, 786, 50,
+ 4717, 2859, 315, 685, 5144, 1950, 315, 614, 2713, 2714,
+ 749, 3070, 1957, 145, 1959, 1960, 1961, 144, 173, 580,
+ 1965, 3271, 784, 542, 1969, 1970, 3271, 3086, 601, 2155,
+ 293, 5033, 608, 601, 3093, 3094, 2732, 756, 1983, 5179,
+ 67, 6171, 2168, 5791, 315, 1750, 5376, 786, 5378, 1994,
+ 1995, 3051, 193, 5383, 33, 758, 5306, 2002, 2592, 386,
+ 5390, 5391, 41, 690, 315, 2681, 2192, 2193, 3901, 196,
+ 5400, 50, 3394, 3395, 236, 4360, 5406, 364, 131, 214,
+ 315, 3081, 384, 3242, 4369, 4370, 208, 3246, 5338, 1794,
+ 315, 226, 208, 3903, 1799, 315, 1801, 208, 208, 208,
+ 468, 33, 577, 2789, 2868, 2869, 2870, 3375, 697, 41,
+ 2055, 4564, 2808, 5065, 600, 786, 4569, 4018, 50, 2064,
+ 4042, 4574, 528, 386, 258, 2070, 57, 3377, 459, 2074,
+ 706, 738, 3377, 268, 314, 669, 6187, 127, 506, 33,
+ 71, 33, 73, 1848, 4734, 10, 722, 41, 191, 41,
+ 2095, 1449, 5207, 99, 289, 1860, 50, 208, 50, 2104,
+ 335, 448, 749, 450, 461, 2110, 10, 462, 495, 10,
+ 759, 4885, 299, 40, 2119, 2120, 2121, 33, 33, 5166,
+ 6108, 4895, 4896, 6107, 5110, 41, 41, 177, 231, 324,
+ 2135, 2136, 711, 315, 50, 50, 493, 758, 4788, 315,
+ 649, 101, 4925, 232, 315, 315, 315, 613, 5944, 119,
+ 729, 10, 268, 33, 2159, 72, 357, 244, 2163, 33,
+ 6073, 41, 6075, 47, 3043, 268, 5552, 41, 2173, 208,
+ 50, 33, 495, 755, 2179, 51, 50, 117, 118, 41,
+ 2643, 725, 152, 2646, 74, 2190, 2191, 120, 50, 2652,
+ 150, 241, 2858, 540, 421, 403, 86, 5397, 33, 386,
+ 1965, 783, 127, 669, 315, 2858, 41, 2873, 173, 126,
+ 567, 413, 573, 574, 0, 50, 208, 725, 1983, 454,
+ 2873, 5382, 106, 4160, 2858, 314, 127, 3145, 104, 1994,
+ 1995, 2858, 2885, 661, 3152, 590, 2889, 141, 2236, 2873,
+ 766, 436, 2796, 2236, 5634, 1421, 2873, 791, 2890, 6162,
+ 5640, 2885, 725, 2858, 208, 2889, 208, 2421, 2885, 2901,
+ 2902, 2796, 2889, 313, 2906, 205, 602, 614, 2873, 196,
+ 386, 33, 3052, 33, 783, 783, 315, 2463, 6074, 41,
+ 2885, 41, 141, 386, 2889, 218, 33, 489, 50, 650,
+ 50, 648, 208, 208, 41, 398, 3052, 303, 304, 2064,
+ 4062, 4063, 4064, 50, 3807, 2070, 3809, 5548, 225, 33,
+ 497, 5552, 667, 33, 541, 2450, 2958, 41, 791, 2384,
+ 5520, 41, 292, 315, 4086, 4087, 50, 4089, 208, 294,
+ 50, 283, 2467, 2975, 208, 2340, 296, 5645, 7, 2344,
+ 786, 33, 282, 4280, 725, 3909, 208, 786, 307, 41,
+ 341, 310, 2357, 35, 36, 37, 789, 39, 50, 4872,
+ 4873, 315, 572, 315, 47, 595, 6203, 6204, 359, 766,
+ 2135, 2136, 153, 208, 2560, 366, 293, 769, 770, 771,
+ 772, 773, 774, 775, 776, 6111, 2384, 168, 2384, 2498,
+ 784, 766, 5166, 5783, 2503, 498, 75, 403, 2163, 315,
+ 315, 47, 783, 2512, 772, 6242, 786, 55, 2173, 2518,
+ 33, 33, 5802, 786, 33, 141, 784, 786, 41, 41,
+ 533, 534, 41, 106, 537, 538, 539, 50, 50, 1787,
+ 617, 50, 2567, 3109, 3110, 315, 5210, 4930, 2443, 2444,
+ 4953, 315, 4955, 3109, 3110, 2450, 208, 126, 208, 2454,
+ 2455, 75, 47, 315, 2463, 786, 3109, 3110, 668, 5242,
+ 106, 208, 2467, 693, 2469, 568, 145, 2472, 2473, 475,
+ 6196, 4816, 4817, 784, 156, 3109, 3110, 33, 771, 772,
+ 315, 160, 3109, 3110, 208, 41, 4160, 4161, 208, 5689,
+ 4164, 786, 2497, 2498, 50, 1010, 3242, 4171, 2503, 784,
+ 3246, 2510, 126, 151, 3109, 3110, 786, 2512, 3109, 3110,
+ 6236, 106, 2521, 2518, 1029, 1030, 208, 783, 748, 167,
+ 1107, 145, 4392, 47, 5174, 791, 413, 3292, 3293, 4291,
+ 3295, 3296, 217, 2642, 3452, 6195, 160, 33, 725, 749,
+ 2545, 2650, 2651, 454, 6270, 41, 225, 766, 2683, 33,
+ 4312, 311, 1139, 315, 50, 315, 2561, 41, 57, 2745,
+ 747, 33, 2567, 2568, 2569, 791, 50, 5795, 315, 41,
+ 757, 4532, 71, 6299, 5734, 2340, 5736, 33, 50, 2344,
+ 419, 2532, 106, 2592, 311, 208, 208, 426, 499, 208,
+ 238, 315, 2597, 217, 50, 315, 281, 2606, 71, 2604,
+ 73, 225, 287, 2608, 786, 47, 673, 30, 19, 20,
+ 786, 53, 35, 55, 681, 786, 786, 786, 2804, 686,
+ 19, 20, 31, 315, 214, 328, 99, 3373, 63, 2634,
+ 772, 4613, 2818, 2638, 2639, 2640, 226, 2642, 3394, 3395,
+ 6300, 6301, 784, 715, 2649, 2650, 2651, 719, 4630, 2654,
+ 5712, 57, 208, 4635, 33, 2660, 783, 568, 271, 5859,
+ 318, 2796, 41, 154, 791, 71, 510, 73, 5680, 282,
+ 2675, 50, 2858, 2859, 2679, 786, 65, 5739, 2683, 2684,
+ 33, 5743, 2868, 2869, 2870, 3893, 128, 2873, 41, 2454,
+ 2455, 281, 315, 315, 4307, 4900, 315, 50, 4311, 2885,
+ 4905, 783, 2711, 2889, 772, 384, 4248, 4249, 4018, 791,
+ 2719, 5871, 208, 4018, 740, 33, 784, 3470, 786, 6030,
+ 6031, 5234, 33, 41, 208, 258, 2084, 2732, 3936, 3482,
+ 41, 178, 50, 2738, 324, 4277, 208, 147, 1293, 50,
+ 4395, 732, 783, 4997, 1299, 1300, 145, 786, 158, 783,
+ 4292, 2886, 4301, 2888, 33, 343, 166, 791, 4820, 315,
+ 384, 50, 41, 3882, 2122, 3884, 22, 3420, 783, 4331,
+ 33, 50, 784, 29, 786, 31, 791, 5031, 41, 299,
+ 2545, 3900, 2787, 3843, 2789, 417, 3420, 50, 5850, 4117,
+ 2795, 2796, 2797, 3420, 786, 4344, 141, 2155, 2052, 283,
+ 33, 33, 2056, 2808, 2569, 33, 33, 128, 41, 41,
+ 2168, 749, 783, 41, 41, 3420, 670, 50, 50, 315,
+ 791, 5981, 50, 50, 5984, 5887, 5476, 670, 783, 208,
+ 33, 315, 786, 783, 2192, 2193, 791, 281, 41, 249,
+ 33, 791, 5904, 315, 33, 5190, 5191, 50, 41, 460,
+ 40, 33, 41, 4835, 783, 208, 784, 50, 786, 41,
+ 50, 50, 791, 128, 2873, 55, 784, 277, 50, 33,
+ 786, 786, 24, 463, 33, 2640, 28, 41, 30, 145,
+ 32, 2886, 41, 2888, 2649, 784, 50, 786, 33, 2654,
+ 208, 50, 647, 366, 783, 2660, 41, 208, 790, 33,
+ 5413, 783, 791, 33, 662, 50, 786, 41, 145, 791,
+ 2675, 41, 786, 386, 145, 594, 50, 783, 312, 784,
+ 50, 786, 784, 3109, 3110, 791, 4818, 737, 738, 208,
+ 740, 33, 742, 6257, 6258, 341, 315, 19, 20, 41,
+ 1384, 4662, 127, 1387, 1388, 208, 791, 3012, 50, 784,
+ 791, 3866, 707, 359, 3707, 710, 515, 516, 736, 3145,
+ 366, 151, 315, 784, 23, 786, 3152, 26, 27, 120,
+ 594, 530, 31, 532, 281, 208, 208, 167, 47, 3143,
+ 208, 208, 737, 6045, 2989, 391, 657, 386, 5508, 746,
+ 4495, 746, 24, 3897, 393, 4669, 28, 315, 30, 23,
+ 32, 268, 26, 27, 315, 208, 196, 31, 3006, 408,
+ 113, 114, 115, 3018, 3012, 208, 3012, 436, 784, 208,
+ 786, 114, 784, 4697, 2789, 704, 208, 4701, 4029, 4030,
+ 2795, 430, 4033, 4034, 4708, 99, 315, 784, 4039, 4040,
+ 784, 3046, 786, 784, 208, 786, 3051, 3052, 238, 208,
+ 4614, 783, 315, 18, 19, 20, 128, 47, 101, 4387,
+ 784, 287, 144, 208, 784, 141, 625, 626, 5050, 606,
+ 3850, 3851, 1674, 1675, 208, 40, 3081, 5059, 208, 647,
+ 704, 6143, 315, 315, 766, 767, 768, 315, 315, 784,
+ 151, 786, 784, 40, 3850, 3851, 28, 783, 30, 3097,
+ 3105, 3097, 3107, 50, 3097, 475, 208, 150, 55, 5973,
+ 5974, 101, 315, 3222, 196, 3279, 584, 3252, 4880, 4881,
+ 4882, 4883, 315, 5377, 4886, 4887, 315, 706, 784, 4891,
+ 786, 3097, 4894, 315, 3139, 4897, 535, 3097, 4900, 784,
+ 5394, 786, 4904, 4905, 773, 774, 3151, 3282, 3283, 548,
+ 784, 315, 786, 5407, 580, 5409, 315, 784, 783, 786,
+ 150, 784, 784, 3805, 737, 784, 565, 33, 533, 534,
+ 315, 783, 537, 538, 539, 41, 4384, 3957, 784, 4834,
+ 786, 315, 783, 3318, 50, 315, 783, 53, 1576, 1577,
+ 3199, 784, 784, 786, 786, 160, 333, 1585, 33, 81,
+ 333, 3957, 2560, 784, 151, 786, 41, 203, 24, 25,
+ 26, 254, 28, 315, 30, 50, 32, 3222, 617, 784,
+ 167, 786, 784, 333, 786, 3230, 551, 1615, 784, 1617,
+ 287, 196, 314, 784, 3420, 786, 784, 3242, 786, 4358,
+ 4359, 3246, 3988, 3989, 1632, 1633, 1634, 3252, 784, 196,
+ 786, 1639, 1640, 296, 4796, 3260, 784, 203, 786, 1647,
+ 225, 784, 305, 786, 254, 147, 3452, 784, 784, 786,
+ 786, 314, 784, 784, 786, 786, 158, 3282, 3283, 786,
+ 784, 3046, 786, 783, 166, 328, 355, 784, 784, 786,
+ 101, 238, 5054, 692, 5056, 283, 5058, 3306, 3307, 3308,
+ 3309, 427, 3311, 3312, 386, 784, 296, 786, 707, 4678,
+ 360, 193, 784, 3318, 792, 305, 4685, 784, 784, 786,
+ 786, 784, 351, 786, 314, 389, 732, 391, 293, 3334,
+ 399, 784, 401, 786, 351, 784, 6348, 786, 328, 150,
+ 3349, 3350, 208, 3352, 790, 3354, 3355, 3356, 3357, 3358,
+ 3359, 3360, 784, 3362, 786, 783, 5011, 3366, 757, 15,
+ 784, 425, 786, 784, 4483, 786, 4735, 249, 3373, 784,
+ 783, 786, 5093, 208, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 783, 3151, 2745, 3393, 3394,
+ 3395, 455, 783, 4217, 3399, 277, 783, 4150, 4151, 783,
+ 24, 25, 26, 783, 28, 784, 30, 71, 32, 783,
+ 5172, 88, 24, 25, 783, 497, 28, 783, 30, 4172,
+ 32, 386, 491, 740, 784, 4178, 786, 4737, 784, 783,
+ 786, 784, 96, 182, 4187, 783, 4189, 4190, 4191, 783,
+ 4193, 4194, 784, 254, 786, 109, 2804, 5061, 783, 315,
+ 4203, 4204, 4205, 4206, 4207, 5178, 784, 783, 786, 119,
+ 2818, 125, 5444, 123, 783, 3230, 784, 127, 145, 784,
+ 81, 786, 541, 784, 122, 73, 784, 3242, 786, 57,
+ 315, 3246, 24, 25, 783, 296, 28, 677, 30, 4139,
+ 32, 155, 152, 71, 305, 73, 213, 784, 5040, 786,
+ 2858, 2859, 784, 314, 786, 784, 740, 784, 168, 786,
+ 2868, 2869, 2870, 173, 24, 25, 38, 328, 28, 588,
+ 30, 784, 32, 784, 588, 786, 4138, 2885, 4140, 783,
+ 495, 2889, 783, 4652, 783, 617, 147, 214, 783, 783,
+ 783, 18, 19, 20, 5199, 783, 206, 158, 783, 226,
+ 213, 784, 784, 201, 783, 166, 784, 784, 622, 22,
+ 783, 24, 25, 40, 783, 28, 29, 30, 31, 4349,
+ 234, 4658, 18, 19, 20, 783, 53, 783, 783, 783,
+ 213, 784, 193, 783, 783, 783, 783, 783, 783, 5674,
+ 4677, 784, 203, 4349, 40, 784, 73, 783, 213, 4686,
+ 783, 754, 784, 783, 783, 4692, 783, 783, 3373, 678,
+ 783, 360, 289, 783, 783, 4702, 4258, 783, 783, 4152,
+ 784, 783, 99, 4710, 4711, 784, 4159, 73, 783, 4162,
+ 4283, 295, 292, 702, 3399, 783, 4169, 783, 249, 784,
+ 783, 783, 290, 783, 5514, 783, 31, 324, 783, 4283,
+ 784, 783, 617, 99, 784, 783, 4283, 406, 783, 783,
+ 783, 783, 783, 783, 3828, 747, 277, 783, 783, 783,
+ 783, 783, 783, 145, 40, 757, 783, 4319, 4283, 783,
+ 15, 15, 784, 160, 783, 4450, 4451, 4452, 4453, 4454,
+ 4455, 4456, 4457, 4458, 4459, 783, 4461, 4462, 4463, 4464,
+ 4465, 4466, 4467, 4468, 119, 4470, 4471, 791, 123, 4474,
+ 4475, 786, 127, 783, 160, 88, 783, 5610, 783, 196,
+ 18, 19, 20, 783, 201, 783, 203, 783, 306, 307,
+ 677, 5713, 783, 766, 584, 484, 203, 152, 128, 105,
+ 783, 203, 40, 258, 786, 409, 410, 670, 225, 460,
+ 196, 3109, 3110, 168, 690, 201, 129, 203, 173, 436,
+ 783, 690, 410, 341, 5487, 127, 706, 676, 33, 510,
+ 429, 143, 145, 786, 5497, 73, 41, 422, 786, 225,
+ 786, 359, 582, 3788, 360, 50, 463, 3145, 366, 786,
+ 755, 206, 757, 783, 3152, 127, 579, 5719, 547, 394,
+ 786, 99, 786, 5725, 5726, 4570, 701, 766, 7, 746,
+ 4575, 47, 463, 391, 563, 564, 293, 463, 10, 568,
+ 569, 570, 783, 786, 3829, 191, 217, 31, 136, 151,
+ 196, 296, 92, 93, 94, 95, 88, 65, 3843, 393,
+ 3845, 408, 3, 583, 3853, 3850, 3851, 293, 3853, 746,
+ 791, 3856, 3857, 311, 427, 5404, 54, 3966, 5513, 786,
+ 127, 791, 160, 128, 33, 231, 120, 791, 643, 346,
+ 106, 422, 41, 706, 784, 647, 333, 292, 138, 139,
+ 140, 50, 411, 333, 333, 141, 5500, 636, 2276, 262,
+ 506, 2279, 311, 4717, 558, 559, 561, 128, 196, 4085,
+ 346, 154, 268, 201, 786, 203, 311, 2295, 281, 386,
+ 3915, 3909, 3910, 783, 386, 177, 33, 577, 790, 786,
+ 293, 393, 791, 783, 41, 602, 47, 225, 2316, 189,
+ 190, 427, 784, 50, 33, 784, 408, 336, 106, 688,
+ 386, 786, 41, 208, 791, 391, 784, 784, 784, 478,
+ 3955, 50, 3957, 4139, 53, 3960, 3961, 648, 430, 128,
+ 3969, 3966, 214, 4127, 784, 338, 784, 644, 127, 6,
+ 7, 127, 783, 783, 226, 5094, 351, 352, 88, 784,
+ 167, 18, 791, 3988, 3989, 662, 5355, 5356, 465, 5358,
+ 3995, 783, 5647, 253, 136, 293, 786, 287, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 786,
+ 792, 128, 127, 388, 773, 544, 53, 546, 495, 73,
+ 386, 791, 786, 552, 690, 127, 773, 151, 264, 281,
+ 266, 4217, 398, 710, 4700, 4073, 490, 289, 451, 208,
+ 413, 277, 703, 127, 81, 127, 435, 4700, 346, 495,
+ 315, 33, 427, 786, 718, 5669, 316, 293, 690, 41,
+ 737, 784, 3420, 535, 783, 786, 4700, 715, 50, 746,
+ 718, 783, 324, 4700, 5996, 154, 548, 3, 151, 786,
+ 3845, 217, 119, 612, 5453, 5204, 123, 363, 386, 239,
+ 127, 208, 510, 565, 3452, 4700, 510, 4283, 122, 136,
+ 137, 510, 510, 360, 5827, 786, 143, 510, 510, 208,
+ 147, 786, 766, 4878, 4119, 152, 226, 154, 4651, 120,
+ 4653, 158, 287, 676, 784, 4890, 47, 656, 127, 166,
+ 4663, 168, 498, 33, 673, 33, 173, 596, 746, 158,
+ 617, 41, 784, 41, 4142, 127, 315, 663, 4681, 784,
+ 50, 411, 50, 53, 732, 784, 193, 784, 268, 784,
+ 4693, 158, 577, 679, 210, 783, 203, 786, 684, 206,
+ 791, 617, 65, 137, 5895, 439, 4709, 201, 791, 251,
+ 664, 418, 783, 660, 436, 480, 480, 786, 595, 226,
+ 3955, 784, 33, 283, 786, 3960, 3961, 495, 315, 68,
+ 41, 736, 568, 705, 128, 222, 206, 4212, 245, 50,
+ 203, 463, 249, 4218, 660, 786, 315, 786, 478, 783,
+ 692, 258, 751, 3988, 3989, 287, 208, 602, 338, 146,
+ 128, 154, 649, 762, 97, 707, 42, 784, 474, 784,
+ 277, 784, 427, 784, 619, 773, 784, 784, 784, 5618,
+ 128, 5620, 5621, 772, 784, 292, 783, 791, 784, 4925,
+ 784, 298, 299, 784, 784, 217, 290, 784, 786, 783,
+ 645, 644, 4925, 784, 786, 312, 784, 314, 755, 784,
+ 757, 784, 786, 784, 544, 658, 546, 128, 5837, 662,
+ 784, 4925, 552, 784, 784, 4300, 784, 72, 4925, 81,
+ 75, 786, 783, 413, 786, 784, 784, 783, 208, 755,
+ 208, 757, 776, 688, 784, 784, 784, 783, 378, 617,
+ 4925, 591, 783, 4332, 5000, 766, 436, 4332, 783, 31,
+ 783, 31, 31, 315, 786, 427, 131, 710, 128, 786,
+ 4345, 786, 6104, 4352, 4349, 784, 6216, 4352, 791, 6331,
+ 127, 126, 612, 463, 129, 791, 791, 127, 504, 786,
+ 786, 791, 660, 786, 737, 147, 786, 208, 128, 613,
+ 145, 4535, 258, 784, 786, 53, 158, 81, 100, 403,
+ 786, 4386, 5931, 47, 166, 160, 410, 670, 786, 365,
+ 4395, 786, 127, 909, 5312, 911, 656, 913, 914, 4404,
+ 4396, 576, 158, 4401, 920, 158, 658, 923, 4871, 753,
+ 5328, 193, 507, 439, 4549, 315, 513, 315, 515, 516,
+ 549, 203, 459, 783, 6079, 123, 5975, 557, 268, 268,
+ 657, 268, 268, 530, 4439, 532, 268, 314, 203, 5105,
+ 4445, 783, 217, 147, 4449, 681, 682, 683, 684, 766,
+ 225, 127, 5105, 766, 158, 766, 5109, 755, 576, 757,
+ 766, 766, 166, 766, 766, 766, 766, 249, 4473, 766,
+ 766, 5105, 6086, 4636, 315, 5109, 299, 6347, 5105, 766,
+ 766, 766, 5109, 168, 766, 737, 766, 262, 766, 193,
+ 736, 751, 766, 766, 746, 277, 34, 766, 4607, 203,
+ 5105, 287, 762, 766, 5109, 766, 333, 766, 766, 786,
+ 791, 766, 791, 287, 4700, 4520, 791, 299, 293, 758,
+ 786, 506, 4985, 154, 4529, 392, 153, 4662, 625, 626,
+ 153, 4717, 213, 784, 784, 65, 4671, 784, 4547, 33,
+ 577, 790, 784, 791, 4549, 249, 784, 41, 658, 5467,
+ 791, 791, 662, 772, 784, 772, 50, 786, 784, 784,
+ 6215, 783, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 277, 783, 338, 5242, 699, 287, 287,
+ 241, 584, 679, 680, 128, 250, 128, 783, 81, 5242,
+ 250, 791, 4597, 783, 791, 55, 492, 232, 92, 93,
+ 94, 95, 4607, 30, 784, 772, 6220, 4612, 5242, 384,
+ 72, 783, 786, 75, 766, 5242, 4614, 783, 766, 735,
+ 545, 203, 786, 333, 126, 203, 203, 737, 1144, 50,
+ 287, 158, 158, 714, 31, 786, 746, 5242, 4636, 784,
+ 4636, 408, 408, 4636, 138, 139, 140, 31, 31, 240,
+ 53, 283, 6201, 5306, 147, 783, 783, 4662, 783, 245,
+ 773, 6316, 122, 127, 126, 158, 4671, 129, 584, 773,
+ 784, 143, 5306, 166, 4439, 6330, 470, 786, 790, 5306,
+ 791, 6336, 783, 145, 4449, 5338, 95, 783, 6343, 783,
+ 4695, 715, 155, 784, 718, 189, 190, 362, 160, 155,
+ 193, 5306, 362, 727, 5338, 370, 784, 784, 784, 30,
+ 370, 5338, 783, 783, 208, 784, 753, 791, 786, 786,
+ 385, 4856, 206, 784, 153, 385, 784, 4085, 784, 766,
+ 395, 396, 397, 5338, 784, 395, 396, 397, 65, 4925,
+ 405, 201, 784, 784, 5662, 405, 784, 784, 783, 786,
+ 766, 783, 789, 790, 128, 31, 249, 4892, 31, 253,
+ 313, 232, 232, 225, 786, 786, 784, 736, 783, 783,
+ 554, 203, 408, 5236, 783, 783, 299, 5240, 5241, 299,
+ 378, 4139, 53, 31, 277, 783, 208, 446, 4793, 784,
+ 786, 287, 5545, 53, 786, 439, 251, 131, 224, 502,
+ 262, 5554, 391, 5556, 5557, 5558, 5559, 5560, 783, 783,
+ 127, 127, 4993, 4994, 576, 4996, 30, 784, 65, 594,
+ 5001, 315, 316, 5004, 168, 256, 5007, 5008, 784, 4834,
+ 290, 293, 314, 784, 5015, 4833, 5017, 504, 4843, 643,
+ 4833, 4850, 4851, 4852, 206, 5026, 786, 65, 784, 784,
+ 347, 4856, 786, 217, 4859, 169, 4861, 5003, 786, 4217,
+ 314, 173, 784, 447, 784, 784, 784, 766, 783, 766,
+ 757, 4876, 766, 786, 167, 418, 4914, 418, 543, 4888,
+ 4889, 217, 744, 543, 203, 53, 641, 4892, 676, 4898,
+ 555, 299, 784, 299, 783, 555, 170, 30, 30, 593,
+ 65, 384, 4911, 159, 217, 707, 4911, 217, 4913, 217,
+ 217, 217, 217, 159, 707, 592, 217, 411, 217, 5105,
+ 217, 603, 384, 5109, 6043, 4283, 6295, 386, 203, 704,
+ 485, 4940, 4937, 1449, 203, 128, 439, 584, 314, 203,
+ 310, 154, 391, 403, 310, 99, 576, 237, 57, 783,
+ 410, 784, 498, 784, 784, 784, 784, 549, 5093, 784,
+ 786, 613, 784, 155, 71, 784, 784, 65, 784, 786,
+ 784, 406, 784, 786, 784, 640, 791, 786, 50, 4984,
+ 783, 654, 783, 783, 478, 427, 791, 784, 53, 31,
+ 655, 378, 4997, 4998, 4999, 655, 783, 65, 783, 65,
+ 5918, 117, 65, 783, 5009, 446, 5011, 30, 4995, 331,
+ 744, 141, 160, 5018, 5019, 744, 225, 390, 669, 5024,
+ 422, 317, 314, 5010, 424, 295, 5031, 281, 766, 30,
+ 695, 5036, 791, 5020, 127, 695, 5045, 786, 784, 549,
+ 5027, 445, 5029, 5030, 709, 784, 5051, 784, 6167, 709,
+ 544, 783, 546, 687, 784, 786, 5242, 783, 552, 419,
+ 783, 583, 783, 160, 160, 236, 784, 5530, 5066, 783,
+ 53, 784, 5077, 5066, 786, 105, 203, 5842, 5843, 790,
+ 5845, 5846, 5847, 5848, 790, 790, 127, 5740, 5093, 786,
+ 5128, 783, 65, 784, 65, 65, 31, 287, 127, 19,
+ 20, 127, 411, 19, 20, 160, 5740, 786, 314, 287,
+ 784, 4876, 30, 5740, 786, 584, 461, 649, 612, 299,
+ 5306, 784, 784, 5128, 601, 440, 5312, 5132, 784, 783,
+ 367, 72, 594, 601, 783, 5740, 791, 57, 783, 576,
+ 783, 57, 5328, 791, 6, 791, 120, 281, 120, 791,
+ 5896, 791, 5338, 791, 791, 281, 287, 72, 791, 73,
+ 584, 790, 656, 791, 287, 791, 791, 791, 287, 791,
+ 791, 791, 791, 791, 790, 784, 687, 72, 160, 791,
+ 50, 784, 5187, 698, 713, 30, 786, 786, 783, 18,
+ 5936, 784, 65, 218, 5199, 5200, 576, 65, 783, 144,
+ 783, 99, 5207, 5384, 5969, 99, 217, 5972, 428, 584,
+ 296, 649, 584, 5218, 783, 5980, 5221, 5222, 5983, 418,
+ 6339, 5226, 418, 783, 786, 5230, 430, 784, 784, 180,
+ 160, 783, 783, 5238, 4999, 783, 5245, 704, 5243, 744,
+ 201, 160, 704, 296, 339, 99, 53, 5382, 154, 783,
+ 589, 791, 5261, 5018, 699, 715, 784, 751, 718, 783,
+ 203, 198, 783, 426, 783, 783, 783, 727, 762, 127,
+ 422, 1787, 6, 207, 740, 791, 784, 783, 739, 338,
+ 5956, 5467, 739, 173, 784, 585, 784, 791, 783, 218,
+ 203, 783, 251, 6, 7, 786, 6042, 786, 480, 5304,
+ 332, 5339, 203, 784, 784, 18, 784, 112, 65, 784,
+ 203, 296, 101, 5318, 649, 5320, 203, 203, 143, 116,
+ 432, 30, 258, 3097, 3368, 783, 5054, 2580, 5724, 5058,
+ 5056, 5369, 3218, 5371, 786, 4051, 5317, 5755, 5914, 6147,
+ 53, 761, 4700, 5348, 763, 5350, 761, 5132, 5304, 5757,
+ 270, 1426, 5457, 5105, 270, 5584, 5474, 5683, 4925, 4717,
+ 4713, 281, 1744, 3924, 3445, 2601, 3389, 2081, 81, 2191,
+ 5375, 5376, 5377, 5378, 4217, 826, 2193, 5382, 5383, 2192,
+ 5385, 5580, 5579, 5370, 5297, 5390, 5391, 4596, 4072, 5394,
+ 5398, 5183, 4341, 4345, 5399, 5400, 4793, 5963, 2429, 5500,
+ 6081, 5406, 5407, 6220, 5409, 6180, 119, 5850, 2710, 5498,
+ 123, 4591, 5417, 4992, 127, 6333, 5746, 5230, 4597, 5605,
+ 1414, 4870, 665, 136, 137, 5589, 5036, 6204, 5372, 6032,
+ 5936, 6042, 5925, 5925, 147, 5925, 5925, 4233, 4280, 152,
+ 5445, 154, 4160, 4208, 5956, 158, 6045, 4660, 5125, 4311,
+ 3791, 4308, 5457, 166, 6226, 168, 5461, 4303, 89, 89,
+ 173, 6198, 5731, 6199, 3210, 5988, 6004, 710, 6000, 5631,
+ 4685, 5368, 5366, 3958, 5033, 4596, 5662, 1521, 1435, 1939,
+ 193, 3198, 5807, 3193, 5954, 5635, 2738, 3399, 2098, 3046,
+ 203, 2569, 957, 206, 2827, 4145, 416, 135, 1401, 3140,
+ 416, 3006, 769, 1348, 1388, 3275, 4634, 5602, 5513, 3055,
+ 430, 4332, 432, 226, 430, 1678, 432, 5522, 2957, 3828,
+ 2954, 5526, 3024, 1734, 3737, 1166, 4736, 1610, 5533, 5534,
+ 3023, 1579, 245, 5538, 5539, 1600, 249, 6152, 5924, 1004,
+ 6258, 6257, 4957, 5928, 464, 258, 1990, 1995, 464, 4389,
+ 1346, 5929, 5353, 4843, 5740, 1346, 1985, 477, 1585, 3814,
+ 2689, 477, 3262, 1346, 277, 1346, 4529, 4925, 2084, 2011,
+ 1346, 5576, 4528, 3812, 5178, 5827, 5647, 5582, 4820, 292,
+ 5174, 5579, 3278, 4737, 3271, 1409, 299, 1379, 5195, 775,
+ 510, 4291, 4535, 2683, 510, 107, 89, 2104, 5603, 312,
+ 1459, 314, 694, 1256, 5609, 2157, 2122, 2820, 528, 4142,
+ 4401, 5513, 528, 3303, 4849, 1080, 4388, 4386, 6215, 840,
+ 2541, 1816, 841, 685, 685, 2542, 3132, 685, 2595, 5634,
+ 5576, 1404, 5210, 6218, 4148, 5640, 1928, 5642, 1526, 2155,
+ 4962, 6263, 5647, 5362, 6336, 5683, 6343, 2561, 5199, 2817,
+ 961, 5656, 2168, 2873, 3109, 3106, 3110, 684, 3101, 3111,
+ 5795, 2475, 5667, 5668, 2197, 684, 3102, 2173, 1959, 3862,
+ 1756, 1147, 1181, 682, 3051, 4061, 2192, 2193, 5683, 1514,
+ 5445, 4549, 3213, 2732, 5441, 4640, 606, 723, 4073, 113,
+ 606, 89, 1289, 613, 1514, 89, 89, 613, 3972, 5704,
+ 2648, 5739, 925, 623, 4139, 5743, 6054, 623, 4931, 3446,
+ 5715, 2194, 4941, 4931, 957, 5720, 4927, 637, 1183, 4926,
+ -1, 637, -1, 5728, -1, 5730, -1, -1, -1, -1,
+ 973, -1, 5918, 5919, 977, -1, -1, -1, -1, 5744,
+ -1, -1, -1, -1, -1, -1, 5751, 5105, -1, 669,
+ -1, 5109, 672, 669, -1, -1, 672, 1000, -1, -1,
+ 5895, 1004, -1, -1, -1, -1, 1009, -1, -1, 5534,
+ 690, -1, -1, -1, 690, -1, -1, -1, 5783, -1,
+ -1, -1, -1, -1, -1, -1, 706, -1, 5793, -1,
+ 5795, -1, -1, -1, -1, -1, 5801, 5802, 5803, -1,
+ -1, 721, -1, -1, -1, 721, -1, 1272, -1, 108,
+ -1, -1, 5799, -1, -1, -1, -1, -1, 5823, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1074, 1075, 1076, 1077, -1, -1, 1080, -1, -1,
+ -1, 5976, -1, 142, 1087, -1, -1, -1, -1, 5887,
+ -1, -1, -1, -1, -1, -1, 5861, -1, -1, -1,
+ -1, 5866, -1, -1, 577, -1, 5904, 5872, -1, -1,
+ -1, -1, -1, 5882, -1, -1, -1, -1, -1, -1,
+ 179, -1, -1, -1, 5242, -1, -1, -1, -1, -1,
+ 5895, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5911, -1, 5913, 1374,
+ -1, -1, 1377, -1, -1, -1, -1, -1, -1, 5924,
+ -1, -1, -1, 5928, 5929, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 1183, -1, -1, -1, -1, -1, -1, 2463, 5306, 5954,
+ -1, -1, -1, -1, 5312, -1, -1, -1, 5963, -1,
+ -1, 5970, 5971, -1, -1, -1, 6101, 6032, -1, -1,
+ 5328, 5976, -1, 5982, -1, -1, -1, -1, -1, -1,
+ 5338, -1, 6146, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 6008, -1, -1, -1, 6045, -1, -1,
+ -1, 6016, 6050, 6018, 6019, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1268, -1, -1, 5793, 1272,
+ -1, -1, -1, -1, 6032, -1, 6032, -1, 5803, -1,
+ 753, -1, 6047, 6178, 2560, -1, -1, -1, -1, -1,
+ 1515, -1, -1, 766, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 784, -1, 786, 6079, -1, 789, 790, -1, -1,
+ -1, 6090, -1, -1, 6093, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 6101, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6143, -1, -1, -1, 5467,
+ 6148, -1, -1, -1, 6119, 6120, -1, -1, 6123, -1,
+ -1, -1, -1, -1, -1, 6130, -1, -1, -1, 1594,
+ -1, 1374, -1, -1, 1377, -1, -1, -1, -1, 6144,
+ -1, -1, -1, -1, 1609, 1610, -1, 6333, 5913, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6203, 6204, -1, -1, -1,
+ -1, -1, -1, 6178, -1, -1, -1, -1, -1, -1,
+ 6344, -1, 481, -1, -1, 6320, -1, 6192, -1, -1,
+ 6325, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1444, 6207, -1, 6242, 1448, -1, -1, -1, -1,
+ 6215, -1, 511, 512, -1, 514, 515, 516, 517, 518,
+ -1, 520, 521, 522, 523, 524, 525, 526, 527, 2745,
+ 529, 530, 531, 532, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5605, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1515, 1738, -1, -1, -1, -1, -1, -1,
+ 1745, 1524, -1, 1526, -1, -1, -1, -1, 2804, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 2818, -1, 5662, -1, -1, -1, -1, -1,
+ -1, 6316, -1, -1, -1, 6320, -1, -1, -1, -1,
+ 6325, 1786, -1, -1, -1, 6330, 625, 626, -1, 1572,
+ 1573, 6336, -1, -1, -1, 1578, -1, -1, 6343, 1582,
+ 1583, 1584, 2858, 2859, -1, -1, -1, -1, -1, 1592,
+ 1593, 1594, 2868, 2869, 2870, 1598, -1, 2873, -1, 1602,
+ 1603, 1604, -1, 1606, 1607, 1608, 1609, 1610, -1, -1,
+ -1, -1, -1, 1616, 663, 1618, -1, -1, 1621, 1622,
+ 1623, 1624, 5740, 1626, -1, 1628, 1629, -1, -1, -1,
+ 679, -1, -1, -1, -1, -1, -1, -1, -1, 1642,
+ 1643, 1644, 1645, 1646, -1, 1648, 1649, 1650, 1651, 1652,
+ 1653, -1, 1655, 1656, -1, 1658, 1659, -1, 1661, 1662,
+ -1, -1, 1665, 1666, -1, 1668, 1669, -1, 1671, -1,
+ 1673, -1, -1, -1, 1677, 1678, 1679, -1, -1, 1682,
+ 1683, 1684, 1685, -1, 1687, 1910, -1, -1, -1, -1,
+ -1, 1694, -1, -1, -1, -1, -1, 1700, 1701, 1702,
+ 1703, -1, -1, -1, -1, -1, -1, -1, 1711, 1712,
+ -1, 1714, 1715, -1, -1, 1718, 1719, 1720, 1721, 1722,
+ 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, -1, -1,
+ 1733, -1, -1, -1, -1, 1738, -1, -1, -1, -1,
+ -1, -1, 1745, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1768, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1786, -1, -1, -1, -1, -1, 2014,
+ -1, 2016, -1, -1, -1, -1, -1, -1, -1, -1,
+ 5918, 5919, -1, -1, -1, 5, -1, 7, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3109, 3110, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 48, 49,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 909, -1, 911, -1, 913, 914, 66, -1, 68, 3145,
+ 70, 920, 72, -1, 923, -1, 3152, -1, -1, -1,
+ 80, 1884, -1, 1886, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 101, -1, 103, 104, -1, -1, 1910, -1, -1,
+ 110, -1, -1, -1, -1, -1, -1, -1, 1921, -1,
+ -1, -1, -1, -1, -1, -1, -1, 127, -1, -1,
+ -1, 131, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 141, -1, -1, -1, -1, -1, -1, -1, -1,
+ 150, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 161, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 171, -1, 173, -1, 2200, -1, 177, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 204, 2008, -1, -1, -1, -1,
+ -1, 2014, -1, 2016, -1, -1, 216, 217, -1, -1,
+ 48, -1, -1, -1, -1, -1, -1, 227, 228, -1,
+ -1, -1, -1, 2036, -1, -1, -1, -1, -1, 239,
+ 240, 241, -1, 243, -1, -1, -1, -1, 248, 2274,
+ 2275, -1, 80, -1, 254, -1, -1, -1, 258, 259,
+ 260, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 101, -1, -1, -1, -1, -1, -1,
+ -1, -1, 110, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 294, 1144, 296, -1, 298, -1,
+ -1, -1, -1, 131, -1, 305, -1, -1, -1, -1,
+ -1, -1, -1, 313, 314, -1, -1, 145, -1, -1,
+ -1, -1, 150, -1, -1, -1, -1, -1, 328, -1,
+ -1, 2356, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2369, 173, -1, -1, -1, -1,
+ 350, 351, -1, 353, -1, 2158, -1, -1, -1, -1,
+ 360, -1, -1, -1, -1, -1, -1, -1, 368, -1,
+ -1, -1, -1, -1, -1, -1, 3452, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 388, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2200, 2201, -1,
+ -1, -1, -1, -1, 232, -1, 2209, 2210, 236, -1,
+ -1, -1, 412, -1, -1, 6333, -1, -1, -1, -1,
+ -1, -1, 422, -1, -1, -1, 254, -1, -1, -1,
+ 258, 259, -1, -1, 2459, -1, -1, -1, -1, -1,
+ -1, 441, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2475, -1, -1, -1, -1, -1, 456, -1, -1, -1,
+ 2263, 289, -1, -1, -1, -1, -1, 467, 296, 297,
+ 470, 2274, 2275, 473, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 488, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2307, 2308, 2309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 353, -1, -1, -1, -1,
+ -1, -1, -1, -1, 665, -1, -1, 2562, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2356, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2366, -1, 393, 2369, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2600, 2601, -1, -1, 710,
+ -1, 2384, -1, -1, -1, 2388, 2389, -1, 2391, 2392,
+ -1, -1, -1, -1, -1, -1, -1, 2400, -1, 2402,
+ 1449, -1, 602, -1, -1, -1, -1, -1, 436, -1,
+ -1, -1, -1, 441, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 452, 453, -1, -1, -1, -1,
+ 2433, 631, -1, -1, -1, 635, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 645, -1, -1, -1, -1,
+ -1, -1, -1, 653, -1, -1, 2459, -1, -1, -1,
+ -1, -1, -1, -1, -1, 665, -1, -1, -1, -1,
+ -1, -1, 2475, -1, 2699, -1, 2701, 2702, 2703, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 688, -1,
+ -1, 691, 2495, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 2511, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 724, -1, -1, -1, -1, -1,
+ -1, -1, -1, 733, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2548, -1, -1, -1, -1,
+ -1, -1, 2555, -1, -1, -1, -1, -1, -1, 2562,
+ 760, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 607,
+ -1, -1, -1, 783, -1, -1, -1, -1, -1, 617,
+ -1, -1, 2817, -1, -1, -1, -1, 2600, 2601, -1,
+ 628, -1, -1, -1, -1, -1, 634, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 665, -1, -1,
+ -1, 669, 973, -1, -1, -1, 977, -1, -1, -1,
+ 2653, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1000,
+ -1, -1, 700, -1, -1, -1, -1, -1, 1009, -1,
+ -1, -1, -1, 2686, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2699, -1, 2701, 2702,
+ 2703, -1, 2705, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 2744, -1, 1074, 1075, 1076, 1077, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1087, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3026, -1, -1, -1, -1, -1, -1, -1, 4085,
+ -1, -1, -1, -1, 2817, -1, -1, -1, 3043, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 18, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4139, -1, -1, -1, -1, -1, -1,
+ -1, 2874, -1, -1, -1, 2878, -1, -1, 2881, -1,
+ -1, -1, -1, -1, -1, -1, 3111, 2890, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2899, -1, 2901, 2902,
+ -1, 2904, 2905, 2906, 2907, -1, 2909, -1, 2911, 2912,
+ -1, 2914, -1, -1, -1, -1, -1, -1, -1, 2922,
+ 2923, -1, -1, -1, 2927, 2928, 2929, -1, 99, -1,
+ -1, -1, -1, -1, 2937, 2938, 2939, 1268, 2941, -1,
+ 2943, 4217, 2945, -1, 2947, -1, 2949, -1, -1, -1,
+ -1, 2954, 2955, -1, 2957, 2958, 2959, -1, -1, -1,
+ 2963, -1, -1, 2966, -1, -1, -1, -1, -1, -1,
+ -1, -1, 2975, -1, 145, 2978, -1, 2980, 2981, 2982,
+ -1, -1, 2985, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3007, -1, 3009, -1, -1, 3012,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3022,
+ 3023, 3024, 3025, 3026, 3027, -1, -1, -1, -1, 3032,
+ -1, -1, -1, -1, -1, 2084, -1, -1, -1, -1,
+ 3043, -1, -1, -1, 215, -1, 3271, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2122, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3091, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 272, 273, 274, -1, -1, 2155, -1, 3111, -1,
+ -1, -1, -1, 1444, -1, -1, -1, 1448, -1, 2168,
+ -1, 292, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3144, -1, 2192, 2193, -1, -1, -1, -1, -1,
+ -1, -1, 3377, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3166, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 346, -1, 348, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1524, -1, 1526, -1, 368, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 386, -1, -1, -1, -1,
+ -1, -1, 393, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3238, -1, 408, -1, -1,
+ -1, 1572, 1573, -1, 415, -1, -1, 1578, -1, -1,
+ -1, 1582, 1583, 1584, -1, -1, 3259, -1, -1, 430,
+ -1, 1592, 1593, -1, -1, -1, -1, 1598, 3271, -1,
+ -1, 1602, 1603, 1604, -1, 1606, 1607, 1608, -1, -1,
+ -1, -1, -1, -1, -1, 1616, -1, 1618, -1, -1,
+ 1621, 1622, 1623, 1624, -1, 1626, -1, 1628, 1629, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1642, 1643, 1644, 1645, 1646, 487, 1648, 1649, 1650,
+ 1651, 1652, 1653, -1, 1655, 1656, 497, 1658, 1659, -1,
+ 1661, 1662, -1, -1, 1665, 1666, -1, 1668, 1669, -1,
+ 1671, -1, 1673, -1, -1, -1, 1677, 1678, 1679, -1,
+ -1, 1682, 1683, 1684, 1685, -1, 1687, -1, -1, -1,
+ -1, -1, -1, 1694, 535, -1, -1, -1, -1, 1700,
+ 1701, 1702, 1703, -1, 3377, -1, -1, 548, -1, -1,
+ 1711, 1712, -1, 1714, 1715, -1, -1, 1718, 1719, 1720,
+ 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730,
+ -1, -1, 1733, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2463, -1, 587, -1, -1, -1,
+ -1, -1, 593, -1, 4700, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1768, -1, -1,
+ -1, 4717, -1, -1, -1, -1, 617, -1, -1, -1,
+ -1, -1, 3455, -1, -1, 3458, -1, -1, -1, -1,
+ -1, -1, -1, -1, 18, 19, 20, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 651, -1, -1, -1, -1, -1, -1, 658, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 2560, -1, -1, -1, -1, -1, 71, -1, 73,
+ -1, 692, 3747, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 707, 708, -1, -1,
+ -1, -1, -1, -1, -1, 99, -1, -1, -1, 720,
+ -1, -1, -1, 1884, -1, 1886, -1, -1, -1, -1,
+ -1, -1, 3787, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 757, -1, -1, -1,
+ 1921, 145, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3855, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4925,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 215, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2008, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2745, -1, -1, 3924,
+ -1, -1, -1, -1, -1, 2036, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
+ 274, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3733, 3734, -1, -1, -1, 3738, -1, -1, 292, -1,
+ -1, -1, -1, -1, 3747, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2804, -1, 3760, -1, 3762,
+ -1, 3764, -1, 3766, -1, -1, -1, -1, -1, 2818,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3781, -1,
+ -1, -1, -1, -1, 3787, -1, -1, -1, -1, -1,
+ -1, -1, 346, 4018, 348, -1, -1, 3800, 3801, -1,
+ -1, -1, 3805, -1, 3807, -1, 3809, -1, -1, 2858,
+ 2859, 3814, 366, -1, 368, -1, -1, -1, -1, 2868,
+ 2869, 2870, -1, -1, 2873, -1, -1, 2158, -1, 5105,
+ -1, -1, 386, -1, -1, -1, 2885, -1, -1, 393,
+ 2889, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3855, -1, 408, -1, 3859, -1, -1, -1,
+ -1, 415, -1, 3866, -1, -1, -1, -1, -1, -1,
+ 2201, -1, -1, -1, -1, -1, 430, -1, 2209, 2210,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3903, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3924, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 2263, 487, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 497, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5242, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2307, 2308, 2309, -1,
+ -1, 535, -1, -1, -1, -1, -1, -1, -1, 3992,
+ -1, -1, -1, -1, 548, -1, -1, -1, -1, 4002,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4016, -1, 4018, 4019, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 587, -1, 2366, 5312, -1, -1, 593,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5328, 2384, -1, -1, -1, 2388, 2389, -1,
+ 2391, 2392, -1, 617, -1, -1, -1, -1, -1, 2400,
+ -1, 2402, -1, -1, -1, 6, 7, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 18, 19, 20,
+ -1, -1, -1, -1, -1, -1, 3145, 651, -1, -1,
+ -1, -1, 2433, 3152, 658, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 46, -1, 48, 49, -1,
+ -1, -1, -1, -1, -1, -1, 4129, -1, 2459, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 692, 70,
+ -1, 72, -1, -1, -1, -1, -1, 78, -1, -1,
+ -1, -1, -1, 707, 708, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2495, -1, 720, -1, 99, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 110,
+ 2511, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5467, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 757, -1, -1, -1, -1, -1, -1,
+ -1, 4214, -1, -1, 145, -1, -1, 2548, -1, -1,
+ -1, 663, -1, -1, 2555, -1, -1, -1, -1, -1,
+ -1, -1, 786, -1, -1, -1, -1, 679, -1, -1,
+ -1, -1, 173, 685, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4255, 4256, -1, 4258, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4271, 4272,
+ 4273, -1, -1, 204, -1, 206, -1, -1, -1, -1,
+ -1, -1, -1, -1, 215, -1, 217, -1, -1, -1,
+ -1, -1, 4295, 4296, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 240,
+ -1, -1, -1, 665, -1, -1, 4319, -1, -1, -1,
+ -1, -1, 2653, -1, -1, -1, -1, -1, 4331, 5605,
+ -1, -1, -1, -1, -1, -1, -1, 4340, -1, -1,
+ -1, 272, 273, 274, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2686, -1, -1, 710, -1,
+ -1, 292, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3420, -1, -1, 2705, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4388, 5662, -1, -1, 4392,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3452, -1, -1, -1, 338, -1, -1,
+ -1, -1, -1, 2744, -1, 346, -1, 348, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 368, -1, -1,
+ -1, -1, -1, -1, 375, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 386, -1, -1, -1, -1,
+ -1, -1, 393, -1, -1, -1, -1, 909, -1, 911,
+ -1, 913, 914, -1, -1, -1, -1, 408, 920, -1,
+ -1, 923, -1, -1, 415, -1, -1, -1, 419, 420,
+ -1, -1, -1, -1, -1, 426, -1, -1, -1, 430,
+ -1, -1, -1, -1, -1, -1, -1, 438, -1, -1,
+ -1, -1, 4737, -1, 18, 19, 20, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 459, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2874, -1, -1, -1, 2878, -1, -1,
+ 2881, -1, 483, -1, -1, -1, 487, -1, -1, 2890,
+ -1, -1, -1, -1, -1, -1, 497, 71, 2899, 73,
+ 2901, 2902, -1, 2904, 2905, 2906, 2907, -1, 2909, -1,
+ 2911, 2912, 4807, 2914, -1, -1, -1, -1, -1, -1,
+ -1, 2922, 2923, -1, -1, 99, 2927, 2928, 2929, -1,
+ -1, 4604, 4605, -1, 535, -1, 2937, 2938, 2939, -1,
+ 2941, -1, 2943, -1, 2945, -1, 2947, 548, 2949, 550,
+ -1, 973, -1, 2954, 2955, 977, 2957, 2958, 2959, -1,
+ -1, -1, 2963, -1, -1, 2966, -1, -1, -1, -1,
+ -1, 145, 5918, 5919, 2975, -1, -1, 2978, 1000, 2980,
+ 2981, 2982, -1, -1, 2985, -1, 587, 1009, -1, -1,
+ -1, -1, 593, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3007, -1, 3009, -1,
+ -1, 3012, -1, -1, -1, -1, 617, 618, -1, -1,
+ -1, 3022, 3023, 3024, 3025, -1, 3027, -1, 629, 630,
+ 631, 3032, 1144, -1, -1, -1, -1, -1, -1, -1,
+ -1, 215, -1, -1, -1, -1, -1, -1, -1, -1,
+ 651, -1, 1074, 1075, 1076, 1077, -1, 658, -1, -1,
+ -1, 4734, -1, -1, 4737, 1087, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3091, 692, -1, -1, -1, -1, -1, -1, 272, 273,
+ 274, -1, -1, -1, -1, -1, 707, 708, -1, -1,
+ -1, -1, -1, -1, -1, 4788, -1, -1, 292, 720,
+ -1, -1, -1, 724, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4807, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 757, -1, -1, 1271,
+ -1, -1, -1, -1, -1, 3166, -1, -1, -1, -1,
+ -1, -1, 346, -1, 348, -1, 4849, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 790,
+ -1, -1, 366, -1, 368, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 386, -1, -1, -1, -1, -1, -1, 393,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 408, -1, -1, 3238, -1, -1,
+ -1, 415, -1, -1, -1, -1, 1268, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 430, -1, 3259, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4947, -1, 4949, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 487, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 497, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1449, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 535, -1, -1, -1, -1, 4085, -1, -1, -1,
+ -1, -1, -1, -1, 548, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 6333, 5061, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 587, -1, -1, -1, -1, -1, 593,
+ 4139, -1, 1444, -1, -1, -1, 1448, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 617, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3455, -1, -1, 3458, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 651, 5151, -1,
+ -1, -1, -1, -1, 658, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4217, -1,
+ -1, 5174, 1524, -1, 1526, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 692, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 707, 708, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 720, -1, -1, -1,
+ 1572, 1573, -1, -1, -1, -1, 1578, -1, -1, -1,
+ 1582, 1583, 1584, -1, 4283, -1, -1, -1, -1, -1,
+ 1592, 1593, -1, -1, -1, -1, 1598, -1, -1, -1,
+ 1602, 1603, 1604, 757, 1606, 1607, 1608, -1, -1, -1,
+ -1, -1, -1, -1, 1616, -1, 1618, -1, -1, 1621,
+ 1622, 1623, 1624, -1, 1626, -1, 1628, 1629, -1, -1,
+ -1, -1, -1, 5508, -1, -1, -1, -1, -1, -1,
+ 1642, 1643, 1644, 1645, 1646, -1, 1648, 1649, 1650, 1651,
+ 1652, 1653, -1, 1655, 1656, -1, 1658, 1659, -1, 1661,
+ 1662, -1, -1, 1665, 1666, -1, 1668, 1669, -1, 1671,
+ -1, 1673, -1, -1, -1, 1677, 1678, 1679, -1, -1,
+ 1682, 1683, 1684, 1685, -1, 1687, -1, -1, -1, -1,
+ -1, -1, 1694, -1, -1, -1, -1, -1, 1700, 1701,
+ 1702, 1703, -1, -1, -1, -1, -1, -1, -1, 1711,
+ 1712, -1, 1714, 1715, -1, -1, 1718, 1719, 1720, 1721,
+ 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, -1,
+ -1, 1733, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3733, 3734, -1, -1, -1, 3738, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1768, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3760,
+ -1, 3762, -1, 3764, -1, 3766, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3781, -1, -1, -1, -1, -1, 5459, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3800,
+ 3801, -1, -1, 5476, 3805, -1, 3807, -1, 3809, -1,
+ -1, -1, -1, 3814, -1, -1, -1, -1, -1, -1,
+ -1, 11, -1, 13, -1, -1, -1, 5500, 18, 19,
+ 20, -1, -1, -1, -1, 5508, -1, -1, -1, -1,
+ -1, 5514, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5529, -1, 3859, -1,
+ -1, -1, 1884, -1, 1886, 3866, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 71, -1, 73, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1921,
+ -1, -1, 3903, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 145, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 2084, -1, -1, -1, -1, 167, -1, -1,
+ -1, 4700, -1, -1, -1, -1, 2008, -1, -1, -1,
+ -1, 3992, -1, -1, -1, -1, 5669, -1, 4717, -1,
+ -1, 4002, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2122, -1, -1, -1, 2036, 4016, -1, -1, 4019, -1,
+ -1, -1, -1, -1, -1, 215, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2155, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 56, 57, 2168, -1, -1, 61,
+ 62, -1, -1, -1, -1, -1, -1, -1, -1, 71,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2192, 2193, 272, 273, 274, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 96, -1, -1, -1, -1, -1,
+ -1, -1, 292, -1, -1, -1, -1, 109, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 125, -1, 127, -1, -1, 4129, -1,
+ -1, -1, -1, -1, -1, 5808, 2158, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 155, -1, -1, 346, -1, 348, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 174, 175, 176, -1, 366, -1, 368, 2201,
+ -1, -1, 184, 185, 186, -1, -1, 2209, 2210, -1,
-1, -1, -1, -1, -1, -1, 386, -1, -1, -1,
- -1, -1, -1, 393, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, -1, -1, -1, 408, -1,
- -1, -1, 71, 2149, 73, 415, -1, -1, -1, 419,
- 420, -1, 292, -1, -1, -1, 426, -1, -1, -1,
- 430, -1, -1, -1, -1, -1, -1, -1, 438, -1,
- 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2191, 2192, -1, -1, 459,
- -1, -1, -1, -1, 2200, 2201, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 346, -1, 348, 459,
- -1, -1, -1, 483, -1, -1, 145, 487, -1, -1,
- -1, -1, -1, -1, -1, -1, 366, 497, 368, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 167, -1,
- -1, -1, -1, -1, -1, -1, 386, -1, 2254, -1,
- -1, -1, -1, 393, -1, -1, -1, -1, -1, 2265,
- 2266, -1, -1, -1, -1, 535, -1, -1, 408, -1,
- -1, -1, -1, -1, -1, 415, -1, -1, 548, -1,
- 550, -1, -1, -1, -1, -1, 215, -1, -1, -1,
- 430, -1, 2298, 2299, 2300, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 587, -1, -1,
- -1, -1, -1, 593, -1, -1, -1, 577, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 6, 7, -1,
- -1, 2347, -1, 272, 273, 274, -1, 487, 618, 18,
- -1, 2357, -1, -1, 2360, -1, -1, 497, -1, 629,
- 630, 631, -1, 292, -1, -1, -1, -1, -1, 2375,
- -1, -1, -1, 2379, 2380, -1, 2382, 2383, -1, -1,
- -1, 651, -1, -1, 53, 2391, -1, 2393, 658, -1,
- -1, -1, -1, -1, -1, 535, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 548, -1,
- -1, -1, 81, -1, -1, -1, -1, 346, 2424, 348,
- 690, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 705, 706, 366, -1, 368,
- -1, -1, -1, -1, 2450, -1, -1, 587, 718, -1,
- 119, -1, 722, 593, 123, -1, 2462, 386, 127, -1,
- 2466, -1, -1, -1, 393, -1, -1, 136, 137, 2475,
- -1, -1, -1, -1, -1, -1, -1, -1, 147, 408,
- 2486, -1, -1, 152, -1, 154, 415, -1, -1, 158,
- -1, -1, -1, -1, 6208, -1, 2502, 166, -1, 168,
- 750, 430, -1, -1, 173, -1, -1, -1, -1, -1,
- 5428, 651, -1, 763, -1, -1, 786, -1, 658, -1,
- -1, -1, -1, -1, 193, -1, -1, -1, -1, -1,
- 780, -1, 782, 2539, 203, 785, 786, 206, -1, -1,
- 2546, -1, -1, -1, -1, -1, -1, 2553, -1, -1,
- 690, -1, -1, -1, -1, -1, -1, 226, 487, -1,
- -1, -1, -1, -1, -1, 705, 706, -1, 497, -1,
- -1, -1, -1, -1, -1, -1, 245, -1, 718, -1,
- 249, -1, -1, -1, -1, 2591, 2592, -1, -1, 258,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 535, -1, 277, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 548,
- -1, -1, -1, 292, -1, -1, -1, -1, -1, -1,
- 299, -1, -1, -1, -1, -1, 2642, -1, -1, -1,
- -1, -1, 782, 312, -1, 314, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 587, -1,
- -1, -1, -1, -1, 593, -1, -1, -1, -1, 2675,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2688, -1, 2690, 2691, 2692, -1, 2694, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 651, -1, -1, -1, -1, 2733, -1, 658,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 690, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 705, 706, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 718,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2807, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2864, -1,
- -1, -1, 2868, -1, -1, 2871, -1, -1, -1, -1,
- -1, -1, -1, -1, 2880, -1, -1, -1, -1, -1,
- -1, -1, -1, 2889, -1, 2891, 2892, -1, 2894, 2895,
- 2896, 2897, -1, 2899, -1, 2901, 2902, -1, 2904, -1,
- -1, -1, -1, -1, -1, -1, 2912, 2913, 577, -1,
- -1, 2917, 2918, 2919, -1, -1, -1, -1, -1, -1,
- -1, 2927, 2928, 2929, -1, 2931, -1, 2933, -1, 2935,
- -1, 2937, -1, 2939, -1, -1, -1, -1, 2944, 2945,
- -1, 2947, 2948, 2949, -1, -1, -1, 2953, -1, -1,
- 2956, -1, -1, -1, -1, -1, -1, -1, -1, 2965,
- -1, -1, 2968, -1, 2970, 2971, 2972, -1, -1, 2975,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2997, 5, 2999, 7, -1, 3002, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3012, 3013, 3014, 3015,
- 3016, 3017, -1, -1, -1, -1, 3022, -1, -1, -1,
- -1, -1, -1, -1, -1, 659, -1, 3033, -1, -1,
- -1, -1, -1, -1, -1, 48, 49, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 66, -1, 68, -1, 70, -1, 72,
- -1, -1, -1, -1, 3070, -1, -1, 80, -1, -1,
- 704, -1, -1, -1, -1, -1, 3082, -1, -1, -1,
- -1, 750, -1, 3089, -1, -1, -1, -1, 101, -1,
- 103, 104, 19, 20, 763, -1, -1, 110, -1, 3105,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 780, -1, 782, 127, -1, 785, 786, 131, -1,
- 47, -1, 49, -1, -1, -1, -1, -1, 141, -1,
- 57, -1, 3138, -1, -1, -1, -1, 150, -1, -1,
- -1, -1, -1, -1, 71, -1, -1, -1, 161, -1,
- -1, -1, 79, 80, 3160, -1, -1, -1, 171, -1,
- 173, -1, 89, -1, 177, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 103, 104, -1, -1,
- -1, -1, -1, -1, 818, -1, -1, -1, -1, -1,
- -1, 204, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 216, 217, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 227, 228, -1, -1, 145, -1,
- -1, -1, -1, 3229, -1, -1, 239, 240, 241, -1,
- 243, -1, 159, -1, -1, 248, -1, -1, -1, -1,
- -1, 254, -1, -1, 3250, 258, 259, 260, -1, -1,
- -1, -1, -1, -1, -1, -1, 3262, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 294, -1, 296, -1, 298, -1, 214, -1, -1,
- -1, -1, 305, -1, -1, -1, -1, -1, -1, 226,
- 313, 314, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 328, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 966, -1, -1, -1, 970, 350, 351, -1,
- 353, -1, -1, -1, -1, -1, -1, 360, -1, -1,
- -1, -1, -1, -1, 281, 368, -1, -1, -1, 993,
- -1, -1, 3368, -1, -1, -1, -1, -1, 1002, -1,
- -1, -1, -1, -1, 3380, 388, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 324, -1, 412,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 422,
- -1, -1, -1, -1, -1, -1, -1, 344, -1, -1,
- -1, -1, -1, -1, -1, -1, 353, -1, 441, 3435,
- -1, -1, -1, 1067, 1068, 1069, 1070, -1, -1, 366,
- -1, 3447, -1, 456, 3450, -1, 1080, -1, -1, -1,
- 377, -1, -1, -1, 467, -1, -1, 470, -1, -1,
- 473, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 400, -1, 488, -1, -1, -1, -1,
+ 202, -1, -1, 393, -1, -1, 4925, -1, -1, -1,
+ -1, -1, -1, 4214, -1, -1, -1, -1, 408, -1,
+ -1, -1, -1, 5896, -1, 415, -1, -1, -1, -1,
+ -1, -1, 234, -1, -1, -1, -1, -1, -1, -1,
+ 430, 2263, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4255, 4256, -1, 4258, -1, 261,
+ -1, -1, -1, 5936, 665, -1, -1, -1, -1, -1,
+ 4271, 4272, 4273, -1, -1, 5948, -1, -1, -1, -1,
+ -1, -1, 284, 285, 286, 2307, 2308, 2309, -1, -1,
+ -1, -1, -1, -1, 4295, 4296, -1, 487, -1, -1,
+ -1, -1, -1, -1, 306, 307, -1, 497, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4319, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4331, -1, -1, -1, -1, -1, -1, -1, -1, 4340,
+ -1, -1, -1, -1, 2366, 535, -1, -1, -1, -1,
+ -1, 2463, 354, -1, 356, 357, -1, -1, 548, 6032,
+ -1, -1, 2384, -1, -1, -1, 2388, 2389, -1, 2391,
+ 2392, 373, -1, -1, -1, -1, -1, -1, 2400, -1,
+ 2402, -1, -1, -1, -1, -1, 5105, 4388, -1, -1,
+ 5109, 4392, -1, -1, -1, -1, -1, 587, -1, -1,
+ -1, -1, -1, 593, -1, -1, -1, 409, 410, -1,
+ -1, 2433, -1, 6086, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 617, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2459, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 2560, -1,
+ -1, -1, -1, 455, -1, -1, -1, -1, -1, -1,
+ -1, 651, -1, -1, -1, -1, -1, -1, 658, -1,
+ -1, -1, -1, 2495, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2595, -1, -1, -1, -1, -1, 2511,
+ -1, -1, -1, -1, 496, -1, -1, -1, -1, -1,
+ -1, -1, 692, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 707, 708, -1,
+ -1, -1, -1, 5242, -1, -1, 2548, -1, -1, -1,
+ 720, -1, -1, 2555, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 6216, -1, -1, -1, 6220, -1, -1,
+ -1, -1, -1, -1, -1, -1, 558, 559, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 757, -1, -1,
+ -1, -1, 574, 575, -1, -1, 977, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5306, -1, -1,
+ -1, -1, -1, 5312, -1, -1, -1, -1, -1, 1000,
+ -1, -1, -1, 4604, 4605, -1, -1, -1, 1009, 5328,
+ -1, -1, -1, -1, 616, -1, -1, -1, -1, 5338,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 2653, -1, 2745, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 429, 430, -1, -1, 433, -1, 435, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2686, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 6347, -1, 1077, -1, -1, -1,
+ -1, -1, -1, 2705, -1, -1, -1, -1, -1, -1,
+ -1, -1, 2804, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2818, -1, -1, -1,
+ 712, -1, -1, 715, -1, -1, 718, -1, -1, -1,
+ -1, -1, 2744, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4734, -1, -1, -1, -1, -1, -1,
+ 742, -1, -1, -1, -1, -1, 2858, 2859, 5467, -1,
+ -1, -1, -1, -1, -1, -1, 2868, 2869, 2870, -1,
+ 762, 2873, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2885, -1, -1, -1, 2889, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4788, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 462, 463, -1, -1, -1,
- -1, 468, 469, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 485, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 506,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 602,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 528, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 631, -1,
- -1, -1, 635, -1, -1, -1, -1, 1261, -1, -1,
- -1, -1, 645, -1, -1, -1, -1, -1, -1, -1,
- 653, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 665, -1, -1, 582, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 597, -1, -1, 686, -1, -1, 689, -1, -1, 606,
- -1, -1, 609, 610, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 624, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 722,
- -1, -1, -1, -1, -1, -1, -1, -1, 731, 3725,
- 3726, -1, -1, -1, 3730, -1, -1, -1, -1, -1,
- -1, -1, -1, 3739, 661, -1, -1, -1, -1, -1,
- -1, -1, 669, -1, 757, -1, 3752, -1, 3754, -1,
- 3756, -1, 3758, -1, -1, -1, -1, -1, -1, -1,
- -1, 688, -1, 690, -1, -1, 779, 3773, -1, -1,
- -1, -1, -1, 3779, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3792, 3793, -1, -1,
- -1, 3797, -1, 3799, -1, 3801, -1, -1, -1, -1,
- 3806, 1435, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 740, -1, -1, -1, -1, -1, -1,
- 747, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3847, -1, -1, -1, -1, -1, 3853, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3867, -1, -1, -1, 3871, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1514, -1, 1516, 3889, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 3910, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1562, 1563,
- -1, -1, -1, -1, 1568, -1, -1, -1, 1572, 1573,
- 1574, -1, -1, -1, -1, -1, -1, -1, 1582, 1583,
- -1, -1, -1, -1, 1588, -1, -1, -1, 1592, 1593,
- 1594, -1, 1596, 1597, 1598, 3971, -1, -1, -1, -1,
- -1, -1, 1606, -1, 1608, 3981, -1, 1611, 1612, 1613,
- 1614, -1, 1616, -1, 1618, 1619, -1, -1, -1, 3995,
- -1, 3997, 3998, -1, -1, -1, -1, -1, 1632, 1633,
- 1634, 1635, 1636, -1, 1638, 1639, 1640, 1641, 1642, 1643,
- -1, 1645, 1646, -1, 1648, 1649, -1, 1651, 1652, -1,
- -1, 1655, 1656, -1, 1658, 1659, -1, 1661, -1, 1663,
- -1, -1, -1, 1667, 1668, 1669, -1, -1, 1672, 1673,
- 1674, 1675, -1, 1677, -1, -1, -1, -1, -1, -1,
- 1684, -1, -1, -1, -1, -1, 1690, 1691, 1692, 1693,
- -1, -1, -1, -1, -1, -1, -1, 1701, 1702, -1,
- 1704, 1705, -1, -1, 1708, 1709, 1710, 1711, 1712, 1713,
- 1714, 1715, 1716, 1717, 1718, 1719, 1720, -1, -1, 1723,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1758, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4236, 4237, 5, 4239, -1, -1, -1, -1, -1, -1,
- 1874, -1, 1876, -1, -1, -1, 4252, 4253, 4254, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4276, 4277, -1, -1, -1, 48, 49, 1911, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 66, 4300, 68, -1, 70, -1, 72,
- -1, -1, -1, -1, -1, -1, 4312, 80, -1, -1,
- -1, -1, -1, -1, -1, 4321, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 101, -1,
- 103, 104, -1, -1, -1, 4341, -1, 110, -1, -1,
- 4346, 4347, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -1, -1, -1, 131, 4365,
- -1, -1, 1996, 4369, -1, -1, -1, -1, 141, -1,
- -1, -1, -1, -1, -1, -1, -1, 150, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 161, -1,
- 2024, -1, -1, -1, -1, -1, -1, -1, 171, -1,
- 173, -1, -1, -1, 177, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 204, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 216, 217, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 227, 228, -1, -1, -1, -1,
- -1, -1, -1, 18, 19, 20, 239, 240, 241, -1,
- 243, -1, -1, -1, -1, 248, -1, -1, -1, -1,
- -1, 254, -1, -1, -1, 258, 259, 260, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2149, 71, -1, 73, -1,
- -1, 294, -1, 296, -1, 298, -1, -1, -1, -1,
- -1, -1, 305, -1, -1, -1, -1, -1, -1, -1,
- 313, 314, -1, -1, 99, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 328, -1, -1, 2192, -1,
- -1, -1, -1, -1, 4570, 4571, 2200, 2201, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 350, 351, -1,
- 353, -1, -1, -1, -1, -1, -1, 360, -1, -1,
- 145, -1, -1, -1, -1, 368, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 659, -1, -1, -1, -1, 388, -1, -1, -1, -1,
- 2254, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 412,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 422,
- -1, -1, -1, -1, -1, 704, -1, -1, -1, -1,
- 215, -1, -1, -1, 2298, 2299, 2300, -1, 441, 56,
- 57, -1, -1, -1, 61, 62, -1, -1, -1, -1,
- -1, -1, -1, 456, 71, -1, -1, -1, -1, -1,
- -1, -1, -1, 4699, 467, -1, 4702, 470, -1, -1,
- 473, -1, -1, -1, -1, -1, -1, -1, -1, 96,
- -1, -1, -1, -1, -1, 488, -1, 272, 273, 274,
- -1, -1, 109, 2357, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 292, 125, -1,
- 127, 2375, -1, -1, -1, 2379, 2380, 4753, 2382, 2383,
- -1, -1, -1, -1, -1, -1, -1, 2391, -1, 2393,
- -1, -1, -1, -1, -1, -1, 4772, -1, 155, 818,
- -1, -1, -1, -1, 4780, 4781, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 174, 175, 176,
- 2424, 346, -1, 348, -1, -1, -1, 184, 185, 186,
- -1, -1, -1, -1, -1, -1, -1, 4813, -1, -1,
- -1, 366, -1, 368, -1, 202, 2450, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2462, 602,
- -1, 386, -1, -1, -1, -1, -1, -1, 393, -1,
- -1, 2475, -1, -1, -1, -1, -1, 234, -1, -1,
- -1, -1, 2486, 408, -1, -1, -1, -1, 631, -1,
- 415, -1, 635, -1, -1, -1, -1, -1, 2502, -1,
- -1, -1, 645, -1, 261, 430, -1, -1, -1, -1,
- 653, -1, -1, -1, -1, -1, 4892, -1, 4894, -1,
- -1, -1, 665, -1, -1, -1, -1, 284, 285, 286,
- -1, -1, -1, -1, -1, 2539, -1, -1, -1, -1,
- -1, -1, 2546, 686, -1, -1, 689, 966, -1, 306,
- 307, 970, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 487, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 497, -1, 993, -1, -1, -1, -1, 722,
- -1, -1, -1, 1002, -1, -1, -1, -1, 731, -1,
- -1, -1, -1, -1, -1, -1, -1, 354, -1, 356,
- 357, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 535, -1, -1, -1, 757, -1, 373, -1, -1, -1,
- -1, -1, -1, 548, -1, -1, -1, -1, -1, 5005,
- -1, -1, -1, -1, -1, -1, 779, -1, 2642, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1067, 1068,
- 1069, 1070, 409, 410, -1, -1, -1, -1, -1, -1,
- -1, 1080, 587, -1, -1, -1, -1, -1, 593, -1,
- -1, 2675, -1, -1, -1, 5051, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2694, -1, -1, -1, -1, -1, -1, -1, 455, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5091, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 651, -1, -1, 2733,
- -1, -1, -1, 658, -1, -1, -1, -1, 5114, 496,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5130, 5131, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 690, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 705, 706, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 718, -1, -1, -1, -1, -1, -1,
- -1, 558, 559, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 574, 575, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1261, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 616,
- 2864, -1, -1, -1, 2868, -1, -1, 2871, -1, -1,
- -1, -1, -1, -1, -1, -1, 2880, -1, -1, -1,
- -1, -1, -1, -1, -1, 2889, -1, 2891, 2892, -1,
- 2894, 2895, 2896, 2897, -1, 2899, -1, 2901, 2902, -1,
- 2904, -1, -1, -1, -1, -1, -1, -1, 2912, 2913,
- -1, -1, -1, 2917, 2918, 2919, -1, -1, -1, -1,
- -1, -1, -1, 2927, 2928, 2929, -1, 2931, -1, 2933,
- -1, 2935, -1, 2937, -1, 2939, -1, -1, -1, -1,
- 2944, 2945, -1, 2947, 2948, 2949, -1, -1, -1, 2953,
- -1, -1, 2956, 710, -1, -1, 713, -1, -1, 716,
- -1, 2965, -1, -1, 2968, -1, 2970, 2971, 2972, -1,
- -1, 2975, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 739, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2997, -1, 2999, -1, -1, 3002, -1,
- -1, -1, 759, -1, -1, -1, -1, -1, 3012, 3013,
- 3014, 3015, -1, 3017, -1, -1, 1435, -1, 3022, -1,
- 5396, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5420, -1, -1, -1, -1, -1,
- -1, -1, 5428, -1, -1, -1, -1, -1, 5434, -1,
- -1, -1, -1, -1, -1, -1, 3070, -1, -1, -1,
- -1, -1, -1, 5449, -1, -1, -1, -1, 3082, -1,
- -1, -1, -1, -1, -1, 3089, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 1514, -1, 1516, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 3138, -1, -1, -1, -1, -1,
- -1, -1, -1, 1562, 1563, -1, -1, -1, -1, 1568,
- -1, -1, -1, 1572, 1573, 1574, 3160, -1, -1, -1,
- -1, -1, -1, 1582, 1583, -1, -1, -1, -1, 1588,
- -1, -1, -1, 1592, 1593, 1594, -1, 1596, 1597, 1598,
- -1, -1, -1, -1, -1, -1, -1, 1606, -1, 1608,
- -1, -1, 1611, 1612, 1613, 1614, -1, 1616, -1, 1618,
- 1619, 5577, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1632, 1633, 1634, 1635, 1636, -1, 1638,
- 1639, 1640, 1641, 1642, 1643, 3229, 1645, 1646, -1, 1648,
- 1649, -1, 1651, 1652, -1, -1, 1655, 1656, -1, 1658,
- 1659, -1, 1661, -1, 1663, -1, 3250, -1, 1667, 1668,
- 1669, -1, -1, 1672, 1673, 1674, 1675, -1, 1677, -1,
- -1, -1, -1, -1, -1, 1684, -1, -1, -1, -1,
- -1, 1690, 1691, 1692, 1693, -1, -1, -1, -1, -1,
- -1, -1, 1701, 1702, -1, 1704, 1705, -1, -1, 1708,
- 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718,
- 1719, 1720, -1, -1, 1723, -1, -1, -1, 18, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 657, -1, -1, -1, -1, -1,
- -1, 5707, -1, -1, -1, -1, 46, -1, 48, 1758,
- 673, -1, -1, -1, -1, -1, 679, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 70, -1, -1, -1, -1, -1, -1, -1, 78, -1,
- -1, -1, -1, -1, -1, -1, 3380, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4849, -1,
+ -1, -1, 2874, -1, -1, -1, 2878, -1, -1, 2881,
+ -1, -1, -1, -1, -1, -1, -1, 1268, 2890, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2899, -1, 2901,
+ 2902, -1, 2904, 2905, 2906, 2907, 5605, 2909, -1, 2911,
+ 2912, -1, 2914, -1, -1, -1, -1, -1, -1, -1,
+ 2922, 2923, -1, -1, -1, 2927, 2928, 2929, -1, -1,
+ -1, -1, -1, -1, -1, 2937, 2938, 2939, -1, 2941,
+ -1, 2943, -1, 2945, -1, 2947, -1, 2949, -1, -1,
+ -1, -1, 2954, 2955, -1, 2957, 2958, 2959, -1, -1,
+ -1, 2963, -1, 5662, 2966, -1, 4947, -1, 4949, -1,
+ -1, -1, -1, 2975, -1, -1, 2978, -1, 2980, 2981,
+ 2982, -1, -1, 2985, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 110, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5794, -1,
+ -1, -1, -1, -1, -1, 3007, -1, 3009, -1, -1,
+ 3012, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3022, 3023, 3024, 3025, -1, 3027, -1, -1, -1, -1,
+ 3032, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5740, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3145, -1, -1, -1, -1, -1, -1,
+ 3152, -1, -1, 1444, -1, -1, -1, 1448, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3435, -1, -1, -1, 145, -1, -1, -1, -1,
- -1, -1, -1, 3447, -1, -1, 3450, -1, -1, -1,
- -1, -1, 5828, -1, -1, 1874, -1, 1876, -1, -1,
- -1, -1, -1, 173, 5840, -1, -1, -1, -1, -1,
+ 5061, -1, -1, -1, -1, -1, -1, -1, -1, 3091,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1911, -1, -1, -1, 206, -1, -1, -1,
- -1, -1, -1, -1, -1, 215, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5924, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, -1, -1, -1, -1, 902,
- -1, 904, -1, 906, 907, -1, -1, 1996, -1, -1,
- 913, -1, 292, 916, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5971, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2024, -1, -1, -1, -1,
+ -1, -1, 3144, 1524, -1, 1526, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3166, -1, -1, -1, -1, -1,
+ 5151, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 5174, -1, -1, -1, 1578, -1, -1,
+ -1, 1582, -1, 1584, -1, -1, -1, -1, -1, -1,
+ -1, 1592, 1593, -1, -1, -1, -1, 1598, -1, 5918,
+ 5919, 1602, 1603, 1604, -1, 1606, 1607, 1608, -1, -1,
+ -1, -1, -1, -1, -1, 1616, 3238, 1618, -1, -1,
+ 1621, 1622, 1623, 1624, -1, -1, -1, 1628, 1629, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3259, -1, -1,
+ -1, 1642, 1643, 1644, 1645, 1646, -1, 1648, 1649, 1650,
+ 1651, 1652, -1, -1, 1655, 1656, -1, 1658, 1659, -1,
+ 1661, 1662, -1, -1, -1, 1666, -1, 1668, 1669, -1,
+ 1671, -1, 1673, -1, -1, -1, 1677, 1678, 1679, -1,
+ -1, 1682, -1, 1684, 1685, -1, 1687, -1, -1, -1,
+ -1, -1, -1, 1694, -1, -1, -1, -1, -1, 1700,
+ 1701, 1702, -1, -1, -1, -1, -1, -1, 3420, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3452, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1768, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 338, -1,
- -1, -1, -1, -1, -1, -1, 346, -1, 348, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 368, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 386, -1, -1, -1,
- -1, -1, -1, 393, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 408, -1,
- -1, -1, -1, -1, -1, 415, -1, -1, -1, 419,
- -1, -1, -1, -1, -1, 6091, 426, -1, -1, 6095,
- 430, 3725, 3726, -1, -1, -1, 3730, -1, -1, -1,
- 2149, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3752, 459,
- 3754, -1, 3756, -1, 3758, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3773,
- -1, -1, -1, 2192, -1, -1, -1, 487, -1, -1,
- -1, 2200, 2201, -1, -1, -1, -1, 497, 3792, 3793,
- -1, -1, -1, 3797, -1, 3799, -1, 3801, -1, -1,
- -1, -1, 3806, -1, 1137, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 535, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2254, -1, -1, 548, -1,
- 550, -1, -1, -1, -1, -1, 6222, -1, -1, 3853,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3867, -1, -1, -1, 3871, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 587, -1, 2298,
- 2299, 2300, -1, 593, -1, 3889, -1, -1, -1, -1,
+ -1, -1, -1, 3455, -1, -1, 3458, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5459, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 5476, -1, -1, -1, -1,
+ -1, -1, -1, 1884, -1, 1886, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5500,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 5514, -1, -1, -1, -1, -1, -1,
+ 1921, -1, -1, -1, -1, -1, -1, -1, 5529, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 1264, -1, -1, -1, -1, -1, -1, 2357, -1,
- -1, 651, -1, -1, -1, -1, -1, -1, 658, -1,
- -1, -1, -1, -1, -1, -1, 2375, -1, -1, -1,
- 2379, 2380, -1, 2382, 2383, -1, -1, 3971, -1, -1,
- -1, -1, 2391, -1, 2393, -1, -1, 3981, -1, -1,
- 690, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3995, -1, -1, 3998, 705, 706, -1, -1, -1,
- -1, -1, -1, -1, -1, 2424, -1, -1, 718, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2450, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2462, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 2475, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 2486, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2502, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 1440, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2539, -1, -1, -1, -1, -1, -1, 2546, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2008, -1, -1,
+ -1, -1, -1, -1, 6333, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 5, -1, -1, -1, -1, 2036, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5669, -1,
+ 18, 19, 20, 48, 49, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 66, -1, 68, -1, 70, -1, 72, 46, -1,
+ 48, -1, -1, -1, -1, 80, -1, -1, -1, -1,
+ -1, 3733, 3734, -1, -1, -1, 3738, -1, -1, -1,
+ -1, -1, 70, -1, -1, -1, 101, -1, 103, 104,
+ 78, -1, -1, -1, -1, 110, -1, -1, 3760, -1,
+ 3762, -1, 3764, -1, 3766, -1, -1, -1, -1, -1,
+ -1, 99, 127, -1, -1, -1, 131, 2158, -1, 3781,
+ -1, -1, 110, -1, -1, -1, 141, -1, -1, -1,
+ -1, -1, -1, -1, -1, 150, -1, -1, 3800, 3801,
+ -1, -1, -1, 3805, -1, 3807, 161, 3809, -1, -1,
+ -1, -1, 3814, -1, -1, -1, 171, 145, 173, -1,
+ 2201, -1, 177, -1, -1, -1, -1, 5808, 2209, 2210,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 173, -1, -1, -1, 204,
+ -1, -1, -1, -1, -1, -1, -1, 3859, -1, -1,
+ -1, 216, 217, -1, 3866, -1, -1, -1, -1, -1,
+ 3962, 3963, 227, 228, -1, -1, -1, -1, 206, -1,
+ -1, -1, 2263, -1, 239, 240, 241, 215, 243, -1,
+ -1, -1, -1, 248, -1, -1, -1, -1, -1, 254,
+ -1, 3903, -1, 258, 259, 260, -1, -1, -1, -1,
+ -1, -1, 240, -1, -1, 5896, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2307, 2308, 2309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 294,
+ -1, 296, -1, 298, 272, 273, 274, -1, -1, -1,
+ 305, -1, -1, -1, -1, 5936, -1, -1, 313, 314,
+ -1, -1, -1, -1, 292, -1, -1, 5948, -1, -1,
+ -1, -1, -1, 328, -1, -1, -1, -1, -1, -1,
+ 4072, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3992, -1, -1, 4085, -1, 350, 351, -1, 353, -1,
+ 4002, -1, -1, 2384, -1, 360, -1, -1, -1, -1,
+ 338, -1, -1, 368, 4016, -1, -1, 4019, 346, 2400,
+ 348, 2402, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 388, -1, -1, -1, -1, -1, -1,
+ 368, -1, -1, -1, -1, -1, -1, 4139, -1, -1,
+ -1, 6032, 2433, -1, -1, -1, -1, 412, 386, -1,
+ -1, -1, -1, -1, -1, 393, -1, 422, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 2459, -1,
+ 408, -1, -1, -1, -1, -1, 441, 415, -1, -1,
+ -1, 419, -1, -1, -1, -1, -1, -1, 426, -1,
+ -1, 456, 430, -1, -1, 6086, -1, -1, -1, -1,
+ -1, -1, 467, -1, 2495, 470, -1, -1, 473, -1,
+ -1, -1, -1, -1, -1, 4217, -1, 4129, -1, -1,
+ 2511, 459, -1, 488, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 487,
+ -1, -1, -1, -1, -1, -1, -1, 2548, -1, 497,
+ -1, -1, -1, -1, 2555, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4283, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 535, -1, -1,
+ -1, -1, 4214, -1, -1, -1, -1, -1, -1, -1,
+ 548, -1, 550, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6216, -1, -1, -1, 6220,
+ -1, -1, -1, -1, -1, -1, -1, 602, -1, -1,
+ -1, -1, -1, 4255, 4256, -1, 4258, -1, -1, 587,
+ -1, -1, -1, -1, -1, 593, -1, -1, -1, 4271,
+ 4272, 4273, 2653, -1, -1, -1, 631, -1, -1, -1,
+ 635, -1, -1, -1, -1, -1, -1, -1, -1, 617,
+ 645, -1, -1, 4295, 4296, -1, -1, -1, 653, -1,
+ -1, -1, -1, -1, -1, 2686, -1, -1, -1, -1,
+ 665, -1, -1, -1, -1, -1, -1, 4319, -1, -1,
+ -1, -1, -1, 651, 2705, -1, -1, -1, -1, 4331,
+ 658, -1, -1, 688, -1, -1, 691, -1, 4340, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2744, 692, -1, 6347, -1, -1, 724,
+ -1, -1, -1, -1, -1, -1, -1, -1, 733, 707,
+ 708, -1, -1, -1, -1, -1, 4388, -1, -1, 4481,
+ 4392, -1, 720, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 760, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 783, 757,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2874, -1, -1, -1, 2878, -1, 4591,
+ 2881, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 2899, -1,
+ -1, -1, -1, 2904, 2905, 2906, 2907, -1, 2909, -1,
+ 2911, 2912, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 2922, 2923, -1, -1, -1, 2927, 2928, 2929, -1,
+ -1, -1, -1, -1, -1, -1, 2937, 2938, 2939, -1,
+ 2941, -1, 2943, -1, 2945, -1, 2947, -1, 2949, -1,
+ -1, -1, -1, 2954, 2955, -1, 2957, -1, 2959, -1,
+ -1, -1, 2963, -1, -1, 2966, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2978, -1, 2980,
+ 2981, 2982, 4604, 4605, 2985, -1, -1, -1, 4700, -1,
+ -1, -1, -1, -1, -1, -1, -1, 19, 20, -1,
+ -1, -1, -1, -1, -1, 4717, -1, -1, -1, -1,
+ -1, 3012, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3023, 3024, -1, 47, 3027, 49, -1, -1,
+ -1, -1, -1, -1, -1, 57, -1, -1, -1, -1,
+ -1, -1, -1, 5, -1, -1, -1, -1, -1, 71,
+ -1, -1, -1, -1, -1, -1, -1, 79, 80, -1,
+ -1, -1, -1, -1, -1, -1, -1, 89, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 103, 104, -1, -1, -1, 48, 49, -1, -1,
+ 3091, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 66, -1, -1, -1, 70, -1,
+ 72, -1, 4734, -1, -1, -1, -1, -1, 80, -1,
+ -1, -1, -1, 145, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 159, -1, 101,
+ -1, 103, 104, 3144, -1, -1, -1, -1, 110, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3166, 4788, -1, -1, 131,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 150, -1,
+ -1, -1, 214, -1, -1, -1, -1, 4909, -1, 161,
+ 4912, -1, -1, -1, 226, -1, -1, -1, -1, 171,
+ -1, 173, -1, 4925, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4849, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 204, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 216, 217, -1, -1, 3259, 281,
+ -1, -1, -1, -1, -1, 227, 228, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, 243, -1, -1, -1, -1, 248, -1, -1, -1,
+ -1, -1, 254, -1, -1, -1, 258, 259, 260, -1,
+ -1, -1, 324, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5033, 344, -1, -1, 4947, -1, 4949, -1, -1,
+ -1, 353, 294, -1, 296, -1, 298, -1, -1, -1,
+ -1, -1, -1, 305, 366, -1, -1, -1, -1, -1,
+ -1, -1, 314, -1, -1, 377, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 328, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 400, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 350, -1,
+ -1, 353, -1, 5105, -1, -1, -1, 5109, 360, -1,
+ -1, -1, -1, -1, -1, -1, 368, 429, 430, -1,
+ -1, 433, -1, 435, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 388, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5061,
+ 462, 463, -1, -1, -1, -1, 468, 469, -1, -1,
+ 412, -1, -1, -1, 3455, -1, -1, 3458, -1, -1,
+ 422, -1, -1, 485, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 441,
+ -1, -1, -1, -1, 506, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 456, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 467, 528, -1, 470, -1,
+ -1, 473, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 488, -1, -1, 5151,
+ 5242, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5174, -1, -1, -1, -1, -1, -1, -1,
+ 582, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 597, -1, -1, -1, -1,
+ -1, -1, -1, -1, 606, -1, -1, 609, 610, -1,
+ -1, -1, -1, -1, 5306, -1, -1, -1, -1, -1,
+ 5312, -1, 624, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5328, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 661,
+ 602, -1, -1, -1, -1, -1, -1, 669, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 690, 631,
+ 692, -1, -1, 635, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 645, -1, -1, -1, -1, -1, -1,
+ -1, 653, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 665, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2642, -1, -1, -1, -1, -1, -1,
- -1, -1, 4236, 4237, -1, 4239, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 659, 4252, 4253,
- 4254, -1, -1, -1, -1, -1, 2675, -1, -1, -1,
+ -1, 743, -1, -1, -1, -1, 688, -1, 750, 691,
+ -1, -1, 3733, 3734, -1, -1, -1, 3738, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4276, 4277, -1, 2694, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 5467, -1, -1, -1, 3760,
+ -1, 3762, 724, 3764, -1, 3766, -1, -1, -1, -1,
+ -1, 733, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3781, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 760, 3800,
+ 3801, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3814, -1, -1, -1, -1, -1, -1,
+ -1, 783, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5459, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4300, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4312, -1,
- -1, -1, -1, -1, 2733, -1, -1, 4321, -1, -1,
+ -1, -1, -1, -1, 5476, -1, -1, -1, 3859, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4341, -1, -1,
- -1, -1, 4346, 4347, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5500, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4365, -1, -1, -1, 4369, -1, -1, -1, -1,
+ -1, -1, 5514, 5605, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3903, -1, -1, -1, -1, 5529, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 818, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 5662, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2864, -1, -1, -1, 2868,
- -1, -1, 2871, -1, -1, -1, -1, -1, -1, -1,
- -1, 2880, -1, -1, -1, -1, -1, -1, -1, -1,
- 2889, -1, 2891, 2892, -1, 2894, 2895, 2896, 2897, -1,
- 2899, -1, 2901, 2902, -1, 2904, -1, -1, -1, -1,
- -1, -1, -1, 2912, 2913, -1, -1, -1, 2917, 2918,
- 2919, -1, -1, -1, -1, -1, -1, -1, 2927, 2928,
- 2929, -1, 2931, -1, 2933, -1, 2935, -1, 2937, -1,
- 2939, -1, -1, -1, -1, 2944, 2945, -1, 2947, 2948,
- 2949, -1, -1, -1, 2953, -1, -1, 2956, -1, -1,
- -1, -1, -1, -1, -1, -1, 2965, -1, -1, 2968,
- -1, 2970, 2971, 2972, -1, -1, 2975, -1, 970, -1,
- -1, -1, -1, -1, -1, -1, 4570, 4571, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2997, -1,
- 2999, 993, -1, 3002, -1, -1, -1, -1, -1, -1,
- 1002, -1, -1, 3012, 3013, 3014, 3015, -1, 3017, -1,
- -1, -1, -1, 3022, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3992, -1, -1, -1, -1, -1, -1, -1, -1,
+ 5712, 4002, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4016, -1, -1, 4019, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5739, 5740, -1,
+ -1, 5743, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5669, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3070, -1, -1, -1, -1, -1, -1, 1070, -1,
- -1, -1, -1, 3082, -1, -1, -1, -1, -1, 5,
- 3089, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4699, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 48, 49, -1, -1, -1, -1, -1, 3138,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 66, -1, -1, -1, 70, -1, 72, -1, 2071, -1,
- -1, 3160, -1, -1, 80, -1, -1, -1, -1, 4753,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 101, -1, 103, 104, -1,
- -1, -1, -1, -1, 110, -1, 4780, 4781, 2111, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4129, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5850, -1,
+ -1, -1, -1, -1, -1, -1, 5858, -1, -1, -1,
+ -1, -1, 5864, 5865, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 131, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 4813,
- 3229, -1, -1, 2146, 150, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 161, 2159, -1, -1, -1,
- -1, 3250, -1, -1, -1, 171, -1, 173, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1261,
- 2183, 2184, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 204, -1,
+ -1, -1, -1, -1, -1, 5887, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5808, -1, -1, -1,
+ -1, -1, 5904, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5918, 5919, -1, -1,
+ -1, -1, -1, 4214, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 216, 217, -1, -1, -1, -1, -1, -1, 4892, -1,
- 4894, 227, 228, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 239, 240, -1, -1, 243, -1, -1,
- -1, -1, 248, -1, -1, -1, -1, -1, 254, -1,
- -1, -1, 258, 259, 260, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 294, -1,
- 296, 3380, 298, -1, -1, -1, -1, -1, -1, 305,
- -1, -1, -1, -1, -1, -1, -1, -1, 314, -1,
+ -1, -1, -1, -1, 4255, 4256, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 328, -1, -1, -1, -1, -1, -1, -1,
- -1, 5005, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 350, -1, 3435, 353, -1, -1,
- -1, -1, -1, 1435, 360, -1, -1, -1, 3447, -1,
- -1, 3450, 368, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5051, -1, -1,
- -1, -1, 388, -1, -1, -1, -1, -1, -1, -1,
+ 4271, 4272, 4273, -1, 5896, -1, 5988, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 6000, -1,
+ -1, -1, 6004, -1, 4295, 4296, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 412, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 422, 5091, -1, -1,
+ -1, -1, -1, -1, 5936, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5948, -1, -1, -1,
+ -1, -1, -1, 6045, -1, -1, -1, -1, -1, 4340,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1514, -1, 1516, 441, -1, -1, -1, -1,
- 5114, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 456, 2454, -1, -1, -1, -1, 5130, 5131, -1, -1,
- -1, 467, -1, -1, 470, -1, -1, 473, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 488, -1, -1, -1, 1568, -1, -1, -1,
- 1572, -1, 1574, -1, -1, -1, -1, -1, -1, -1,
- 1582, 1583, -1, -1, -1, -1, 1588, -1, -1, -1,
- 1592, 1593, 1594, -1, 1596, 1597, 1598, -1, -1, -1,
- -1, -1, -1, -1, 1606, -1, 1608, -1, -1, 1611,
- 1612, 1613, 1614, -1, -1, -1, 1618, 1619, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2551, -1,
- 1632, 1633, 1634, 1635, 1636, -1, 1638, 1639, 1640, 1641,
- 1642, -1, -1, 1645, 1646, -1, 1648, 1649, -1, 1651,
- 1652, -1, -1, -1, 1656, -1, 1658, 1659, -1, 1661,
- -1, 1663, -1, 2586, -1, 1667, 1668, 1669, -1, -1,
- 1672, -1, 1674, 1675, -1, 1677, 602, -1, -1, -1,
- -1, -1, 1684, -1, -1, -1, -1, -1, 1690, 1691,
- 1692, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 631, -1, -1, -1, 635,
- -1, -1, -1, -1, -1, -1, 3725, 3726, -1, 645,
- -1, 3730, -1, -1, -1, -1, -1, 653, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 665,
- -1, -1, -1, 3752, -1, 3754, -1, 3756, -1, 3758,
- -1, -1, -1, -1, -1, -1, 1758, -1, -1, -1,
- 686, -1, -1, 689, 3773, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3792, 3793, -1, -1, -1, 3797, -1,
- 3799, -1, 3801, -1, -1, -1, 722, 3806, -1, -1,
- -1, -1, 5396, -1, -1, 731, -1, -1, -1, -1,
- -1, 2734, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5420, -1, -1, -1,
- -1, 757, -1, -1, -1, -1, -1, -1, -1, -1,
- 5434, -1, -1, -1, 3853, -1, -1, -1, -1, -1,
- -1, -1, -1, 779, -1, 5449, -1, -1, 3867, -1,
- -1, -1, 3871, -1, -1, -1, -1, -1, -1, -1,
- 2793, -1, 1874, -1, 1876, -1, -1, -1, -1, -1,
- 3889, -1, -1, -1, -1, 2808, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1911,
+ -1, -1, -1, -1, -1, -1, -1, 4388, -1, -1,
+ -1, 4392, -1, -1, -1, -1, -1, -1, -1, 6111,
+ 6112, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 6032, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2848, 2849, -1, -1, -1,
- -1, -1, -1, -1, -1, 2858, 2859, 2860, -1, -1,
- 2863, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2875, -1, -1, -1, 2879, -1, -1, -1,
- -1, -1, 3971, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3981, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5577, -1, -1, 3995, -1, -1, 3998,
- -1, -1, -1, -1, 1996, -1, -1, -1, -1, -1,
+ -1, 6143, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2024, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 6086, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 6196, -1, 6198, 6199, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 6236, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 6270, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5707, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 6299, -1, -1,
+ -1, -1, -1, -1, 6216, -1, -1, -1, 6220, -1,
+ -1, -1, -1, 4604, 4605, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 6333, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 2149, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2192, -1, -1, -1, -1, -1, -1, -1, 2200, 2201,
- 5794, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3139, -1, -1, -1,
- -1, -1, -1, 3146, -1, -1, -1, 4236, 4237, -1,
- 4239, -1, -1, -1, 5828, -1, -1, -1, -1, -1,
- -1, -1, -1, 4252, 4253, 4254, 5840, -1, -1, -1,
- -1, -1, 2254, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4276, 4277, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4300, -1, -1, -1, -1, 2298, 2299, 2300, -1,
- -1, -1, -1, 4312, -1, -1, -1, -1, -1, -1,
- -1, -1, 4321, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 5924, -1, 4341, -1, -1, -1, -1, 4346, 4347, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4365, -1, -1, -1,
- 4369, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2375, -1, -1, -1, 5971, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 2391,
- -1, 2393, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6347, -1, -1, -1, -1,
+ -1, -1, -1, 4734, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2424, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2450, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2462, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2475, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 2486, -1, -1, -1, -1, 3412,
- -1, -1, -1, -1, -1, -1, -1, 6091, -1, -1,
- 2502, 6095, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4788, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3444, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 2539, -1, -1,
- -1, -1, -1, -1, 2546, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4570, 4571, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4849, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 6222, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2642, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2675, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4699, -1, 2694, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 68, -1, -1, 4947, -1, 4949, -1,
+ -1, -1, 77, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2733, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4753, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, 123, -1,
+ -1, -1, 127, -1, -1, 130, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4780, 4781, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 157, -1, -1, -1, -1, -1, -1, -1,
+ 165, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 177, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
+ -1, 246, 247, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4813, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 5151, -1, -1, -1, 279, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 5174, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 313, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, -1, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, -1, 342, 343, 344,
+ 345, 346, 347, 348, 349, -1, 351, -1, -1, 354,
+ 355, 356, 357, 358, -1, -1, 361, 362, 363, 364,
+ 365, -1, -1, -1, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, -1, -1, -1, -1, -1, -1,
+ 385, -1, 387, -1, 389, 390, -1, 392, 393, 394,
+ 395, 396, 397, -1, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, -1, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, -1, 423, 424,
+ 425, 426, -1, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, -1, -1, -1, 442, -1, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, -1, -1, -1, -1, -1, 461, 462, 463, 464,
+ 465, 466, -1, 468, 469, -1, 471, 472, -1, -1,
+ 475, -1, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, -1, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, -1, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, -1, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 5459, -1,
+ 585, -1, 587, 588, -1, 590, 591, 592, 593, -1,
+ 595, 596, 597, 598, -1, 5476, -1, -1, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, -1, 630, -1, 632, 633, 634,
+ -1, 636, 637, 5514, 639, 640, 641, 642, 643, 644,
+ -1, 646, 647, 648, 649, 650, 651, 652, 5529, 654,
+ 655, 656, -1, 658, 659, 660, 661, -1, 663, 664,
+ -1, -1, 667, 668, -1, -1, 671, 672, 673, -1,
+ 675, -1, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, -1, 689, 690, -1, 692, -1, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, -1,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, -1,
+ 725, 726, -1, 728, 729, 730, 731, -1, -1, 734,
+ 735, -1, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, -1, -1,
+ 755, 756, -1, -1, 759, -1, 761, 762, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 786, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2864, -1, -1, -1, 2868, -1, -1, 2871,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4892, -1, 4894, -1, 2889, -1, -1,
- -1, -1, 2894, 2895, 2896, 2897, -1, 2899, -1, 2901,
- 2902, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2912, 2913, -1, -1, -1, 2917, 2918, 2919, -1, -1,
- -1, -1, -1, -1, -1, 2927, 2928, 2929, -1, 2931,
- -1, 2933, -1, 2935, -1, 2937, -1, 2939, -1, -1,
- -1, -1, 2944, 2945, -1, 2947, -1, 2949, -1, -1,
- -1, 2953, -1, -1, 2956, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 2968, -1, 2970, 2971,
- 2972, -1, -1, 2975, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5005, -1, -1, -1,
- 3002, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3013, 3014, -1, -1, 3017, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3948, 3949, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5051, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3070, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5091, -1, -1, -1, -1, 3089, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5114, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5130, 5131, -1, -1, -1, -1, -1, 4051, -1,
- -1, -1, -1, -1, -1, -1, 3138, -1, -1, -1,
- -1, 4064, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3160, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4120, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5808, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3250, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4198, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ 8, 9, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 19, 20, -1, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, 5948, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, 6032, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4264, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, 254, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3380, -1,
- -1, -1, -1, -1, -1, -1, -1, 5396, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, 305, -1, -1,
+ 308, 309, -1, -1, -1, 6216, 314, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, 6347, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, 64, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, 163, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5420, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5434, -1, -1, -1, -1,
- -1, -1, -1, 3435, -1, -1, -1, -1, -1, -1,
- 5449, -1, -1, -1, -1, 3447, -1, -1, 3450, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ 288, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, 47,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, 203, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, 311, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, 143, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4454, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5577, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ 128, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ 128, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4557, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ 128, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, 143, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5707, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3725, 3726, -1, -1, -1, 3730, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4666, -1, -1, -1, -1, -1, -1,
- 3752, -1, 3754, -1, 3756, -1, 3758, -1, -1, 4682,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3773, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5794, -1, -1, -1, -1,
- 3792, 3793, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 3806, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5828,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5840, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3853, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3867, -1, -1, -1, 3871,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3889, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5924, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4871, -1,
- 4873, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5971, -1, -1, -1, -1, -1, -1, 3971,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3981,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3995, -1, -1, 3998, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, 47,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4978, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 6091, -1, -1, -1, 6095, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5046, -1, -1, -1, 5050, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, 182, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 6222, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4236, 4237, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4252, 4253, 4254, -1, -1, -1, -1, 5180, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4276, 4277, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 4321,
- -1, 5244, -1, -1, -1, -1, -1, 5250, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5261, 4341,
- -1, -1, -1, -1, 4346, 4347, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4365, -1, -1, -1, 4369, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, 777,
+ 8, 9, -1, -1, -1, 783, -1, -1, -1, 787,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
+ 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
+ -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
+ -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5387, -1, -1, -1, -1, -1,
+ -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
+ 188, -1, -1, -1, 192, -1, -1, 195, -1, -1,
+ 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
+ -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
+ -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
+ 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, 771, 772, 3, -1, -1, -1, -1,
+ 8, -1, -1, -1, -1, 783, -1, -1, -1, -1,
+ 788, 19, 20, 791, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, -1, -1, 122, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4570, 4571,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
+ -1, -1, -1, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5570, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5619, 4699, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ 3, 759, 760, 761, 762, 8, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5646, 5647, -1, -1, 5650, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5665, -1, -1, -1, -1, -1, -1, -1,
- -1, 4753, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4780, 4781,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4813, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5748, -1, -1, -1, -1,
- -1, -1, -1, 5756, -1, -1, -1, -1, -1, 5762,
- 5763, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5785, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5802,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4892, -1, 4894, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5880, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5892,
- -1, -1, -1, 5896, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5937, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5051,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, 3, 759, 760, 761, 762,
+ 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ -1, 784, -1, -1, -1, -1, -1, -1, 791, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5996, 5997, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5091,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 6028, -1, -1, -1, -1,
- -1, -1, 5114, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5130, 5131,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 6072,
- -1, 6074, 6075, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 6111, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 6145, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 6174, -1, -1, -1, -1, -1, -1, -1, -1,
+ 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 6208, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ 8, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5396, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5434, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5449, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ 8, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 783, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5707, -1, -1, -1, -1,
+ 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
- -1, -1, -1, -1, 8, 9, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 19, 20, -1, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 57, 58, 59, 60, -1, 5840, -1,
- -1, -1, -1, -1, 68, 69, -1, 71, -1, -1,
- -1, -1, -1, -1, 78, 79, -1, -1, 82, 83,
- 84, 85, -1, 87, 88, -1, 90, 91, -1, -1,
- -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, 120, 121, 122, -1,
- 124, -1, -1, -1, -1, -1, -1, -1, 132, 133,
- 134, 135, -1, -1, -1, -1, -1, 141, -1, -1,
- 144, -1, 5924, -1, -1, -1, 150, -1, -1, 153,
- -1, -1, -1, -1, -1, -1, -1, -1, 162, -1,
- 164, -1, 166, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 180, 181, -1, 183,
- -1, -1, -1, 187, 188, -1, -1, -1, 192, -1,
- -1, 195, 196, -1, 198, 199, 200, 201, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, 219, 220, 221, -1, 223,
- -1, -1, -1, -1, -1, -1, 230, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
- -1, -1, -1, -1, -1, 249, 250, -1, -1, -1,
- 254, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 268, -1, -1, -1, -1, -1,
- -1, 275, 276, -1, 278, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 290, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 300, 301, 302, -1,
- -1, 305, -1, -1, 308, 309, -1, -1, -1, 6091,
- 314, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- 6222, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, 768, 769, -1, -1, 3, -1,
- 774, -1, -1, 8, 9, 779, -1, -1, -1, 783,
- 784, -1, -1, 787, 19, 20, -1, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, -1, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 57, 58, 59, 60, -1, -1, -1, 64,
- -1, -1, -1, 68, 69, -1, 71, -1, -1, -1,
- -1, -1, -1, 78, 79, -1, -1, 82, 83, 84,
- 85, -1, 87, 88, -1, 90, 91, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, 102, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, 120, 121, 122, -1, 124,
- -1, -1, -1, -1, -1, -1, -1, 132, 133, 134,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
- -1, -1, -1, -1, -1, 150, -1, -1, 153, -1,
- -1, -1, -1, -1, -1, -1, -1, 162, 163, 164,
- -1, 166, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, 181, -1, 183, -1,
- -1, -1, 187, 188, -1, -1, -1, 192, -1, -1,
- 195, 196, -1, 198, 199, 200, 201, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, 219, 220, 221, -1, 223, -1,
- -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
- -1, -1, -1, -1, 249, 250, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ 8, 759, 760, 761, 762, -1, -1, -1, -1, -1,
+ -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 268, -1, -1, -1, -1, -1, -1,
- 275, 276, -1, 278, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, 288, -1, 290, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 300, 301, 302, -1, -1,
- -1, -1, -1, 308, 309, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, 768, 769, -1, -1, 3, -1, 774,
- -1, -1, 8, 9, 779, -1, -1, -1, 783, 784,
- -1, -1, 787, 19, 20, -1, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
- -1, -1, 68, 69, -1, 71, -1, -1, -1, -1,
- -1, -1, 78, 79, -1, -1, 82, 83, 84, 85,
- -1, 87, 88, -1, 90, 91, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, 102, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, 120, 121, 122, -1, 124, -1,
- -1, -1, -1, -1, -1, -1, 132, 133, 134, 135,
- -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
- -1, -1, -1, -1, 150, -1, -1, 153, -1, -1,
- -1, -1, -1, -1, -1, -1, 162, -1, 164, -1,
- 166, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 180, 181, -1, 183, -1, -1,
- -1, 187, 188, -1, -1, -1, 192, -1, -1, 195,
- 196, -1, 198, 199, 200, 201, -1, 203, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, 219, 220, 221, -1, 223, -1, -1,
- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- -1, -1, -1, 249, 250, -1, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 268, -1, -1, -1, -1, -1, -1, 275,
- 276, -1, 278, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 300, 301, 302, -1, -1, -1,
- -1, -1, 308, 309, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, -1, -1, -1, -1, -1, -1,
- -1, -1, 768, 769, -1, -1, 3, -1, 774, -1,
- -1, 8, 9, 779, -1, -1, -1, 783, 784, -1,
- -1, 787, 19, 20, -1, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 57, 58, 59, 60, -1, -1, -1, -1, -1, -1,
- -1, 68, 69, -1, 71, -1, -1, -1, -1, -1,
- -1, 78, 79, -1, -1, 82, 83, 84, 85, -1,
- 87, 88, -1, 90, 91, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, 102, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, 120, 121, 122, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, 132, 133, 134, 135, -1,
- -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
- -1, -1, -1, 150, -1, -1, 153, -1, -1, -1,
- -1, -1, -1, -1, -1, 162, -1, 164, -1, 166,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 180, 181, -1, 183, -1, -1, -1,
- 187, 188, -1, -1, -1, 192, -1, -1, 195, 196,
- -1, 198, 199, 200, 201, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, 219, 220, 221, -1, 223, -1, -1, -1,
- -1, -1, -1, 230, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 241, -1, -1, -1, -1, -1,
- -1, -1, 249, 250, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 268, -1, -1, -1, -1, -1, -1, 275, 276,
- -1, 278, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 290, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 300, 301, 302, -1, -1, -1, -1,
- -1, 308, 309, -1, 311, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, 768, 769, -1, -1, 3, -1, 774, -1, -1,
- 8, 9, 779, -1, -1, -1, 783, 784, -1, -1,
- 787, 19, 20, -1, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
- 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
- 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
- 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
- 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
- -1, -1, -1, 141, -1, 143, 144, -1, -1, -1,
- -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
- -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
- 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
- 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
+ -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
- -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
- -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
- 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
- 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
@@ -18542,433 +20526,46 @@ static const yytype_int16 yycheck[] =
648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- 768, 769, -1, -1, 3, -1, 774, -1, -1, 8,
- 9, 779, -1, -1, -1, 783, 784, -1, -1, 787,
- 19, 20, -1, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 57, 58,
- 59, 60, -1, -1, -1, -1, -1, -1, -1, 68,
- 69, -1, 71, -1, -1, -1, -1, -1, -1, 78,
- 79, -1, -1, 82, 83, 84, 85, -1, 87, 88,
- -1, 90, 91, -1, -1, -1, -1, -1, -1, -1,
- 99, -1, -1, 102, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
- -1, 120, 121, 122, -1, 124, -1, -1, -1, 128,
- -1, -1, -1, 132, 133, 134, 135, -1, -1, -1,
- -1, -1, 141, -1, -1, 144, -1, -1, -1, -1,
- -1, 150, -1, -1, 153, -1, -1, -1, -1, -1,
- -1, -1, -1, 162, -1, 164, -1, 166, -1, -1,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 180, 181, -1, 183, -1, -1, -1, 187, 188,
- -1, -1, -1, 192, -1, -1, 195, 196, -1, 198,
- 199, 200, 201, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
- 219, 220, 221, -1, 223, -1, -1, -1, -1, -1,
- -1, 230, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 241, -1, -1, -1, -1, -1, -1, -1,
- 249, 250, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 268,
- -1, -1, -1, -1, -1, -1, 275, 276, -1, 278,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 290, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 300, 301, 302, -1, -1, -1, -1, -1, 308,
- 309, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, 768,
- 769, -1, -1, 3, -1, 774, -1, -1, 8, 9,
- 779, -1, -1, -1, 783, 784, -1, -1, 787, 19,
- 20, -1, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
- 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
- -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
- -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
- 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
- -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- 120, 121, 122, -1, 124, -1, -1, -1, 128, -1,
- -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
- -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
- 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
- -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 180, 181, -1, 183, -1, -1, -1, 187, 188, -1,
- -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
- 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
- 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
- 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
- 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
- -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, 768, 769,
- -1, -1, 3, -1, 774, -1, -1, 8, 9, 779,
- -1, -1, -1, 783, 784, -1, -1, 787, 19, 20,
- -1, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 57, 58, 59, 60,
- -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
- 71, -1, -1, -1, -1, -1, -1, 78, 79, -1,
- -1, 82, 83, 84, 85, -1, 87, 88, -1, 90,
- 91, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, 102, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, 120,
- 121, 122, -1, 124, -1, -1, -1, 128, -1, -1,
- -1, 132, 133, 134, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, 150,
- -1, -1, 153, -1, -1, -1, -1, -1, -1, -1,
- -1, 162, -1, 164, -1, 166, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
- 181, -1, 183, -1, -1, -1, 187, 188, -1, -1,
- -1, 192, -1, -1, 195, 196, -1, 198, 199, 200,
- 201, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, 219, 220,
- 221, -1, 223, -1, -1, -1, -1, -1, -1, 230,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, -1, -1, -1, 249, 250,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 268, -1, -1,
- -1, -1, -1, -1, 275, 276, -1, 278, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 290,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
- 301, 302, -1, -1, -1, -1, -1, 308, 309, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, 768, 769, -1,
- -1, 3, -1, 774, -1, -1, 8, 9, 779, -1,
- -1, -1, 783, 784, -1, -1, 787, 19, 20, -1,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, -1, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 57, 58, 59, 60, -1,
- -1, -1, -1, -1, -1, -1, 68, 69, -1, 71,
- -1, -1, -1, -1, -1, -1, 78, 79, -1, -1,
- 82, 83, 84, 85, -1, 87, 88, -1, 90, 91,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- 102, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, 120, 121,
- 122, -1, 124, -1, -1, -1, -1, -1, -1, -1,
- 132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
- -1, 143, 144, -1, -1, -1, -1, -1, 150, -1,
- -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
- 162, -1, 164, -1, 166, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 180, 181,
- -1, 183, -1, -1, -1, 187, 188, -1, -1, -1,
- 192, -1, -1, 195, 196, -1, 198, 199, 200, 201,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, 219, 220, 221,
- -1, 223, -1, -1, -1, -1, -1, -1, 230, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 241,
- -1, -1, -1, -1, -1, -1, -1, 249, 250, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 268, -1, -1, -1,
- -1, -1, -1, 275, 276, -1, 278, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 290, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
- 302, -1, -1, -1, -1, -1, 308, 309, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, 768, 769, -1, -1,
- 3, -1, 774, -1, -1, 8, 9, 779, -1, -1,
- -1, 783, 784, -1, -1, 787, 19, 20, -1, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 57, 58, 59, 60, -1, -1,
- -1, -1, -1, -1, -1, 68, 69, -1, 71, -1,
- -1, -1, -1, -1, -1, 78, 79, -1, -1, 82,
- 83, 84, 85, -1, 87, 88, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, 120, 121, 122,
- -1, 124, -1, -1, -1, -1, -1, -1, -1, 132,
- 133, 134, 135, -1, -1, -1, -1, -1, 141, -1,
- -1, 144, -1, -1, -1, -1, -1, 150, -1, -1,
- 153, -1, -1, -1, -1, -1, -1, -1, -1, 162,
- -1, 164, -1, 166, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 180, 181, -1,
- 183, -1, -1, -1, 187, 188, -1, -1, -1, 192,
- -1, -1, 195, 196, -1, 198, 199, 200, 201, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, 219, 220, 221, -1,
- 223, -1, -1, -1, -1, -1, -1, 230, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 241, -1,
- -1, -1, -1, -1, -1, -1, 249, 250, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 268, -1, -1, -1, -1,
- -1, -1, 275, 276, -1, 278, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 290, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 300, 301, 302,
- -1, -1, -1, -1, -1, 308, 309, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, -1, -1, -1,
- -1, -1, -1, -1, -1, 768, 769, -1, -1, 3,
- -1, 774, -1, -1, 8, 9, 779, -1, -1, -1,
- 783, 784, -1, -1, 787, 19, 20, -1, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 57, 58, 59, 60, -1, -1, -1,
- -1, -1, -1, -1, 68, 69, -1, 71, -1, -1,
- -1, -1, -1, -1, 78, 79, -1, -1, 82, 83,
- 84, 85, -1, 87, 88, -1, 90, 91, -1, -1,
- -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, 120, 121, 122, -1,
- 124, -1, -1, -1, -1, -1, -1, -1, 132, 133,
- 134, 135, -1, -1, -1, -1, -1, 141, -1, -1,
- 144, -1, -1, -1, -1, -1, 150, -1, -1, 153,
- -1, -1, -1, -1, -1, -1, -1, -1, 162, -1,
- 164, -1, 166, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 180, 181, -1, 183,
- -1, -1, -1, 187, 188, -1, -1, -1, 192, -1,
- -1, 195, 196, -1, 198, 199, 200, 201, -1, -1,
+ -1, 75, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 129, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 144, 145, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 160, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, 219, 220, 221, -1, 223,
- -1, -1, -1, -1, -1, -1, 230, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
- -1, -1, -1, -1, -1, 249, 250, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 262, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 268, -1, -1, -1, -1, -1,
- -1, 275, 276, -1, 278, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 290, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 300, 301, 302, -1,
- -1, -1, -1, -1, 308, 309, -1, -1, -1, -1,
-1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
@@ -19003,7 +20600,7 @@ static const yytype_int16 yycheck[] =
644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
@@ -19011,426 +20608,39 @@ static const yytype_int16 yycheck[] =
724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, 768, 769, -1, -1, 3, -1,
- 774, -1, -1, 8, 9, 779, -1, -1, -1, 783,
- 784, -1, -1, 787, 19, 20, -1, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, -1, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 57, 58, 59, 60, -1, -1, -1, -1,
- -1, -1, -1, 68, 69, -1, 71, -1, -1, -1,
- -1, -1, -1, 78, 79, -1, -1, 82, 83, 84,
- 85, -1, 87, 88, -1, 90, 91, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, 102, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, 120, 121, 122, -1, 124,
- -1, -1, -1, -1, -1, -1, -1, 132, 133, 134,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
- -1, -1, -1, -1, -1, 150, -1, -1, 153, -1,
- -1, -1, -1, -1, -1, -1, -1, 162, -1, 164,
- -1, 166, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, 181, -1, 183, -1,
- -1, -1, 187, 188, -1, -1, -1, 192, -1, -1,
- 195, 196, -1, 198, 199, 200, 201, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, 219, 220, 221, -1, 223, -1,
- -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
- -1, -1, -1, -1, 249, 250, -1, -1, -1, -1,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 268, -1, -1, -1, -1, -1, -1,
- 275, 276, -1, 278, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 290, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 300, 301, 302, -1, -1,
- -1, -1, -1, 308, 309, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, 768, 769, -1, -1, 3, -1, 774,
- -1, -1, 8, 9, 779, -1, -1, -1, 783, 784,
- -1, -1, 787, 19, 20, -1, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
- -1, -1, 68, 69, -1, 71, -1, -1, -1, -1,
- -1, -1, 78, 79, -1, -1, 82, 83, 84, 85,
- -1, 87, 88, -1, 90, 91, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, 102, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, 120, 121, 122, -1, 124, -1,
- -1, -1, -1, -1, -1, -1, 132, 133, 134, 135,
- -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
- -1, -1, -1, -1, 150, -1, -1, 153, -1, -1,
- -1, -1, -1, -1, -1, -1, 162, -1, 164, -1,
- 166, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 180, 181, -1, 183, -1, -1,
- -1, 187, 188, -1, -1, -1, 192, -1, -1, 195,
- 196, -1, 198, 199, 200, 201, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, 219, 220, 221, -1, 223, -1, -1,
- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- -1, -1, -1, 249, 250, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 791, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 268, -1, -1, -1, -1, -1, -1, 275,
- 276, -1, 278, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 300, 301, 302, -1, -1, -1,
- -1, -1, 308, 309, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, -1, -1, -1, -1, -1, -1,
- -1, -1, 768, 769, -1, -1, 3, -1, 774, -1,
- -1, 8, 9, 779, -1, -1, -1, 783, 784, -1,
- -1, 787, 19, 20, -1, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
- 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 57, 58, 59, 60, -1, -1, -1, -1, -1, -1,
- -1, 68, 69, -1, 71, -1, -1, -1, -1, -1,
- -1, 78, 79, -1, -1, 82, 83, 84, 85, -1,
- 87, 88, -1, 90, 91, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, 102, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, 120, 121, 122, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, 132, 133, 134, 135, -1,
- -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
- -1, -1, -1, 150, -1, -1, 153, -1, -1, -1,
- -1, -1, -1, -1, -1, 162, -1, 164, -1, 166,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 180, 181, -1, 183, -1, -1, -1,
- 187, 188, -1, -1, -1, 192, -1, -1, 195, -1,
- -1, 198, 199, 200, 201, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, 219, 220, 221, -1, 223, -1, -1, -1,
- -1, -1, -1, 230, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 241, -1, -1, -1, -1, -1,
- -1, -1, 249, 250, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 268, -1, -1, -1, -1, -1, -1, 275, 276,
- -1, 278, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 290, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 300, 301, 302, -1, -1, -1, -1,
- -1, 308, 309, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, 768, 769, -1, -1, 3, -1, 774, -1, -1,
- 8, 9, 779, -1, -1, -1, 783, 784, -1, -1,
- 787, 19, 20, -1, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
- 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
- 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
- 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
- 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
- -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
- -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
- -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
- 188, -1, -1, -1, 192, -1, -1, 195, 196, -1,
- 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
- -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
- -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
- 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
- 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- 768, 769, -1, -1, 3, -1, 774, -1, -1, 8,
- 9, 779, -1, -1, -1, 783, 784, -1, -1, 787,
- 19, 20, -1, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 57, 58,
- 59, 60, -1, -1, -1, -1, -1, -1, -1, 68,
- 69, -1, 71, -1, -1, -1, -1, -1, -1, 78,
- 79, -1, -1, 82, 83, 84, 85, -1, 87, 88,
- -1, 90, 91, -1, -1, -1, -1, -1, -1, -1,
- 99, -1, -1, 102, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
- -1, 120, 121, 122, -1, 124, -1, -1, -1, -1,
- -1, -1, -1, 132, 133, 134, 135, -1, -1, -1,
- -1, -1, 141, -1, -1, 144, -1, -1, -1, -1,
- -1, 150, -1, -1, 153, -1, -1, -1, -1, -1,
- -1, -1, -1, 162, -1, 164, -1, 166, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 180, 181, -1, 183, -1, -1, -1, 187, 188,
- -1, -1, -1, 192, -1, -1, 195, 196, -1, 198,
- 199, 200, 201, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
- 219, 220, 221, -1, 223, -1, -1, -1, -1, -1,
- -1, 230, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 241, -1, -1, -1, -1, -1, -1, -1,
- 249, 250, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 268,
- -1, -1, -1, -1, -1, -1, 275, 276, -1, 278,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 290, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 300, 301, 302, -1, -1, -1, -1, -1, 308,
- 309, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, 768,
- 769, -1, -1, 3, -1, 774, -1, -1, 8, 9,
- 779, -1, -1, -1, 783, 784, -1, -1, 787, 19,
- 20, -1, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
- 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
- -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
- -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
- 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
- -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
- -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
- -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
- 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
- -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 180, 181, 182, 183, -1, -1, -1, 187, 188, -1,
- -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
- 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
- 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
- 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
- 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
- -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
+ -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 254, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 305, -1, -1, -1, -1,
+ -1, -1, -1, -1, 314, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
+ -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
@@ -19464,434 +20674,47 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, 768, 769,
- -1, -1, 3, -1, 774, -1, -1, 8, 9, 779,
- -1, -1, -1, 783, 784, -1, -1, 787, 19, 20,
- -1, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 57, 58, 59, 60,
- -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
- 71, -1, -1, -1, -1, -1, -1, 78, 79, -1,
- -1, 82, 83, 84, 85, -1, 87, 88, -1, 90,
- 91, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, 102, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, 120,
- 121, 122, -1, 124, -1, -1, -1, -1, -1, -1,
- -1, 132, 133, 134, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, 150,
- -1, -1, 153, -1, -1, -1, -1, -1, -1, -1,
- -1, 162, -1, 164, -1, 166, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
- 181, -1, 183, -1, -1, -1, 187, 188, -1, -1,
- -1, 192, -1, -1, 195, -1, -1, 198, 199, 200,
- 201, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, 219, 220,
- 221, -1, 223, -1, -1, -1, -1, -1, -1, 230,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, -1, -1, -1, 249, 250,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 268, -1, -1,
- -1, -1, -1, -1, 275, 276, -1, 278, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 290,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
- 301, 302, -1, -1, -1, -1, -1, 308, 309, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, 768, 769, -1,
- -1, 3, -1, 774, -1, -1, 8, 9, 779, -1,
- -1, -1, 783, 784, -1, -1, 787, 19, 20, -1,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, -1, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 57, 58, 59, 60, -1,
- -1, -1, -1, -1, -1, -1, 68, 69, -1, 71,
- -1, -1, -1, -1, -1, -1, 78, 79, -1, -1,
- 82, 83, 84, 85, -1, 87, 88, -1, 90, 91,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- 102, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, 120, 121,
- 122, -1, 124, -1, -1, -1, -1, -1, -1, -1,
- 132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
- -1, -1, 144, -1, -1, -1, -1, -1, 150, -1,
- -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
- 162, -1, 164, -1, 166, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 180, 181,
- -1, 183, -1, -1, -1, 187, 188, -1, -1, -1,
- 192, -1, -1, 195, -1, -1, 198, 199, 200, 201,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, 219, 220, 221,
- -1, 223, -1, -1, -1, -1, -1, -1, 230, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 241,
- -1, -1, -1, -1, -1, -1, -1, 249, 250, -1,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 268, -1, -1, -1,
- -1, -1, -1, 275, 276, -1, 278, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 290, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
- 302, -1, -1, -1, -1, -1, 308, 309, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, 768, 769, -1, -1,
- 3, -1, 774, -1, -1, 8, 9, 779, -1, -1,
- -1, 783, 784, -1, -1, 787, 19, 20, -1, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
+ -1, -1, -1, 783, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 57, 58, 59, 60, -1, -1,
- -1, -1, -1, -1, -1, 68, 69, -1, 71, -1,
- -1, -1, -1, -1, -1, 78, 79, -1, -1, 82,
- 83, 84, 85, -1, 87, 88, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, 120, 121, 122,
- -1, 124, -1, -1, -1, -1, -1, -1, -1, 132,
- 133, 134, 135, -1, -1, -1, -1, -1, 141, -1,
- -1, 144, -1, -1, -1, -1, -1, 150, -1, -1,
- 153, -1, -1, -1, -1, -1, -1, -1, -1, 162,
- -1, 164, -1, 166, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 180, 181, -1,
- 183, -1, -1, -1, 187, 188, -1, -1, -1, 192,
- -1, -1, 195, -1, -1, 198, 199, 200, 201, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, 219, 220, 221, -1,
- 223, -1, -1, -1, -1, -1, -1, 230, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 241, -1,
- -1, -1, -1, -1, -1, -1, 249, 250, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 268, -1, -1, -1, -1,
- -1, -1, 275, 276, -1, 278, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 290, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 300, 301, 302,
- -1, -1, -1, -1, -1, 308, 309, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, -1, -1, -1,
- -1, -1, -1, -1, -1, 768, 769, -1, -1, 3,
- -1, 774, -1, -1, 8, 9, 779, -1, -1, -1,
- 783, 784, -1, -1, 787, 19, 20, -1, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 57, 58, 59, 60, -1, -1, -1,
- -1, -1, -1, -1, 68, 69, -1, 71, -1, -1,
- -1, -1, -1, -1, 78, 79, -1, -1, 82, 83,
- 84, 85, -1, 87, 88, -1, 90, 91, -1, -1,
- -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, 120, 121, 122, -1,
- 124, -1, -1, -1, -1, -1, -1, -1, 132, 133,
- 134, 135, -1, -1, -1, -1, -1, 141, -1, -1,
- 144, -1, -1, -1, -1, -1, 150, -1, -1, 153,
- -1, -1, -1, -1, -1, -1, -1, -1, 162, -1,
- 164, -1, 166, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 180, 181, -1, 183,
- -1, -1, -1, 187, 188, -1, -1, -1, 192, -1,
- -1, 195, -1, -1, 198, 199, 200, 201, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, 219, 220, 221, -1, 223,
- -1, -1, -1, -1, -1, -1, 230, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
- -1, -1, -1, -1, -1, 249, 250, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 268, -1, -1, -1, -1, -1,
- -1, 275, 276, -1, 278, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 290, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 300, 301, 302, -1,
- -1, -1, -1, -1, 308, 309, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, 768, 769, -1, -1, 3, -1,
- 774, -1, -1, 8, 9, 779, -1, -1, -1, 783,
- 784, -1, -1, 787, 19, 20, -1, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, -1, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 57, 58, 59, 60, -1, -1, -1, -1,
- -1, -1, -1, 68, 69, -1, 71, -1, -1, -1,
- -1, -1, -1, 78, 79, -1, -1, 82, 83, 84,
- 85, -1, 87, 88, -1, 90, 91, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, 102, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, 120, 121, 122, -1, 124,
- -1, -1, -1, -1, -1, -1, -1, 132, 133, 134,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
- -1, -1, -1, -1, -1, 150, -1, -1, 153, -1,
- -1, -1, -1, -1, -1, -1, -1, 162, -1, 164,
- -1, 166, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, 181, -1, 183, -1,
- -1, -1, 187, 188, -1, -1, -1, 192, -1, -1,
- 195, -1, -1, 198, 199, 200, 201, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, 219, 220, 221, -1, 223, -1,
- -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
- -1, -1, -1, -1, 249, 250, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 111, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 268, -1, -1, -1, -1, -1, -1,
- 275, 276, -1, 278, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 290, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 300, 301, 302, -1, -1,
- -1, -1, -1, 308, 309, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, 768, 769, -1, -1, 3, -1, 774,
- -1, -1, 8, 9, 779, -1, -1, -1, 783, 784,
- -1, -1, 787, 19, 20, -1, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
- -1, -1, 68, 69, -1, 71, -1, -1, -1, -1,
- -1, -1, 78, 79, -1, -1, 82, 83, 84, 85,
- -1, 87, 88, -1, 90, 91, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, 102, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, 120, 121, 122, -1, 124, -1,
- -1, -1, -1, -1, -1, -1, 132, 133, 134, 135,
- -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
- -1, -1, -1, -1, 150, -1, -1, 153, -1, -1,
- -1, -1, -1, -1, -1, -1, 162, -1, 164, -1,
- 166, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 180, 181, -1, 183, -1, -1,
- -1, 187, 188, -1, -1, -1, 192, -1, -1, 195,
- -1, -1, 198, 199, 200, 201, -1, -1, -1, -1,
-1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, 219, 220, 221, -1, 223, -1, -1,
- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- -1, -1, -1, 249, 250, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 268, -1, -1, -1, -1, -1, -1, 275,
- 276, -1, 278, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 300, 301, 302, -1, -1, -1,
- -1, -1, 308, 309, -1, -1, -1, -1, -1, -1,
-1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
@@ -19926,97 +20749,92 @@ static const yytype_int16 yycheck[] =
646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, -1, -1, -1, -1, -1, -1,
- -1, -1, 768, 769, -1, -1, 3, -1, 774, -1,
- -1, 8, 9, 779, -1, -1, -1, 783, 784, -1,
- -1, 787, 19, 20, -1, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 58, 59, 60, -1, -1, -1, -1, -1, -1,
- -1, 68, 69, -1, 71, -1, -1, -1, -1, -1,
- -1, 78, 79, -1, -1, 82, 83, 84, 85, -1,
- 87, 88, -1, 90, 91, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, 102, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, 120, 121, 122, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, 132, 133, 134, 135, -1,
- -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
- -1, -1, -1, 150, -1, -1, 153, -1, -1, -1,
- -1, -1, -1, -1, -1, 162, -1, 164, -1, 166,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 180, 181, -1, 183, -1, -1, -1,
- 187, 188, -1, -1, -1, 192, -1, -1, 195, -1,
- -1, 198, 199, 200, 201, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, 219, 220, 221, -1, 223, -1, -1, -1,
- -1, -1, -1, 230, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 241, -1, -1, -1, -1, -1,
- -1, -1, 249, 250, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 268, -1, -1, -1, -1, -1, -1, 275, 276,
- -1, 278, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 290, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 300, 301, 302, -1, -1, -1, -1,
- -1, 308, 309, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, 768, 769, -1, -1, 3, -1, -1, -1, -1,
- 8, -1, 779, -1, -1, -1, -1, 784, -1, -1,
- 787, 19, 20, -1, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 783, -1, -1,
+ -1, -1, 788, -1, -1, 791, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
+ -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
+ -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
+ 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
+ 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
+ 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
+ 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
+ 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
+ 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
+ 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
+ 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
+ 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
+ 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
+ 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761,
+ 762, 19, 20, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 783, -1, -1, -1, -1, 788, -1, -1, 791,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20024,7 +20842,7 @@ static const yytype_int16 yycheck[] =
88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, 122, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
-1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20032,7 +20850,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, 201, -1, -1, -1, -1, -1, 207,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20041,7 +20859,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
@@ -20080,94 +20898,18 @@ static const yytype_int16 yycheck[] =
648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, 3, 756, 757,
- 758, 759, 8, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 787,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, 3,
- 756, 757, 758, 759, 8, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, 780, -1, -1, -1, -1, -1,
- -1, 787, -1, -1, -1, -1, -1, -1, -1, -1,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 783, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20230,7 +20972,7 @@ static const yytype_int16 yycheck[] =
644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
@@ -20238,85 +20980,10 @@ static const yytype_int16 yycheck[] =
724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, 8, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, 19, 20, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 787, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, 773,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, 8, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 779, -1, -1, -1, -1, -1, -1, -1,
- 787, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 791, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20379,104 +21046,104 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, 8, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, 19, 20, -1, -1,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 787, -1, -1,
+ -1, -1, -1, 783, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 787, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 791, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 75, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 129, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, 145, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 160, -1,
+ -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
@@ -20487,7 +21154,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 262, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20528,99 +21195,174 @@ static const yytype_int16 yycheck[] =
642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761,
+ 762, 19, 20, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 791,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 787, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 254, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 305, -1, -1, -1, -1, -1,
- -1, -1, -1, 314, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 779, -1,
- -1, -1, -1, -1, -1, -1, 787, -1, -1, -1,
+ -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
+ 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
+ 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
+ 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
+ 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
+ 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
+ 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
+ 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
+ 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
+ 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, 19, 20, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 111, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
+ -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
+ 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
+ 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 19,
+ 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 791, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 85, -1, -1, 88, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
-1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
@@ -20676,241 +21418,321 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, -1, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 779,
- -1, -1, -1, -1, 784, -1, -1, 787, -1, -1,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 783, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
- -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
- -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 779, -1, -1, -1, -1, 784, -1, -1, 787, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, 3, 759, 760, 761, 762, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, 783, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ 71, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, 3, 759, 760,
+ 761, 762, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 779, -1, -1, -1, -1, -1, -1, -1, 787,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 71, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 99, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, 3, 759, 760, 761, 762, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, 3, 759, 760,
+ 761, 762, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 19, 20, 21, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 31, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, 770, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 787, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20973,543 +21795,552 @@ static const yytype_int16 yycheck[] =
646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, 3, 759, 760, 761, 762, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 779, -1, -1, -1, -1, -1, -1,
- -1, 787, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
- 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, 3, 759, 760,
+ 761, 762, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 787, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 74, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, 3, 759, 760, 761, 762, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 787, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 8, 9, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
+ -1, -1, 28, -1, 30, -1, 32, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 787, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 251, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 8, 9, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, 28, -1, 30,
+ -1, 32, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 787, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
- -1, -1, -1, -1, -1, -1, 77, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, 123, -1, -1, -1, 127, -1, -1, 130,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 157, -1, -1, -1,
- -1, -1, -1, -1, 165, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 177, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
-1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, 246, 247, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 251, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 313, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, -1, 324, 325, 326, 327, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- -1, 342, 343, 344, 345, 346, 347, 348, 349, -1,
- 351, -1, -1, 354, 355, 356, 357, 358, -1, -1,
- 361, 362, 363, 364, 365, -1, -1, -1, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, -1, -1,
- -1, -1, -1, -1, 385, -1, 387, -1, 389, 390,
- -1, 392, 393, 394, 395, 396, 397, -1, 399, 400,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, -1, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, -1, 423, 424, 425, 426, -1, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, -1, -1,
- -1, 442, -1, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, -1, -1, -1, -1, -1,
- 461, 462, 463, 464, 465, 466, -1, 468, 469, -1,
- 471, 472, -1, -1, 475, -1, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, -1, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, -1, 499, 500,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, -1, 569, 570,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, -1, -1, 585, -1, 587, 588, -1, 590,
- 591, 592, 593, -1, 595, 596, 597, 598, -1, -1,
- -1, -1, 603, 604, 605, 606, 607, 608, 609, 610,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, -1, 630,
- -1, 632, 633, 634, -1, 636, 637, -1, 639, 640,
- 641, 642, 643, 644, -1, 646, 647, 648, 649, 650,
- 651, 652, -1, 654, 655, 656, -1, 658, 659, 660,
- 661, -1, 663, 664, -1, -1, 667, 668, -1, -1,
- 671, 672, 673, -1, 675, -1, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, -1, 687, 688, -1, 690,
- -1, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, -1, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, -1, 723, 724, -1, 726, 727, 728, 729, -1,
- -1, 732, 733, -1, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, -1,
- -1, 752, 753, -1, -1, 756, -1, 758, 759, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 782, -1, -1, -1, -1, -1, -1, -1, -1,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 8, 9, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
+ -1, -1, 28, -1, 30, -1, 32, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 85, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
+ -1, -1, -1, -1, -1, 251, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, -1, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 779,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 8, 9, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, 28, -1, 30,
+ -1, 32, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
- -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
- -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, 3, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 19, 20, -1, -1, -1, -1, -1, -1,
- 779, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 71, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
@@ -21532,7 +22363,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
@@ -21557,7 +22388,7 @@ static const yytype_int16 yycheck[] =
547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
@@ -21567,92 +22398,16 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, 3, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 71, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
- 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- 3, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 19, 20, 21, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, 773, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21717,93 +22472,17 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, 3, 756, 757, 758, 759, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
- 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, 3, 756, 757, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ 773, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21868,92 +22547,16 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, 3, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 19, 20, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 74, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, 3, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, 773, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22018,7 +22621,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -22026,86 +22629,10 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 8, 9, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 19, 20, -1, -1,
- -1, -1, -1, -1, -1, 28, -1, 30, -1, 32,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 251, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, 773, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 8, 9, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
- -1, -1, -1, -1, -1, -1, -1, 28, -1, 30,
- -1, 32, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22126,7 +22653,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 251, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22168,93 +22695,17 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 8,
- 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, 28,
- -1, 30, -1, 32, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
- -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 251, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
- -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 8, 9, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 19, 20, -1, -1, -1, -1, -1, -1,
- -1, 28, -1, 30, -1, 32, -1, -1, -1, -1,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, 773, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22319,239 +22770,17 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, 770, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
- 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, -1, 770, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
- -1, -1, -1, -1, -1, -1, 770, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, 26, -1, -1, 773, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22567,14 +22796,14 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, 195, 196, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, 209, -1, -1, -1,
-1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 265, -1, 267, -1, 269, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22615,238 +22844,16 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
- -1, -1, -1, -1, -1, -1, -1, 770, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- -1, -1, -1, -1, -1, -1, -1, -1, 770, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, 26, -1, -1, 770,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, 196, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, 209,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 265, -1, 267, -1, 269,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, 21, -1, -1, -1, -1, -1, -1, 769,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, 772,
-1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 42, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 57, -1,
@@ -22912,89 +22919,164 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, 21, 763, -1, -1, -1, -1, -1,
- -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 42, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, 21, 766, -1, -1,
+ -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, 763, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ -1, 766, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, -1, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, -1, 128, 129, 130,
+ 131, 132, -1, -1, 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, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, -1, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ -1, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
@@ -23029,7 +23111,7 @@ static const yytype_int16 yycheck[] =
337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 367, 368, 369, 370, 371, -1, 373, 374, 375, 376,
377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
@@ -23038,7 +23120,7 @@ static const yytype_int16 yycheck[] =
427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 457, 458, -1, 460, 461, 462, -1, 464, 465, 466,
467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
@@ -23046,286 +23128,64 @@ static const yytype_int16 yycheck[] =
507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 537, 538, 539, -1, 541, 542, 543, 544, 545, 546,
547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 567, 568, 569, 570, 571, 572, -1, 574, 575, 576,
577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 607, 608, 609, 610, 611, 612, 613, 614, -1, 616,
617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 657, 658, 659, -1, 661, 662, 663, 664, 665, -1,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, -1, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- -1, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, -1, 128, 129, 130, 131, 132, -1, -1, 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,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, -1,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, -1, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, -1, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, -1, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, -1, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, -1, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, -1,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, -1, 661, 662, 663, 664, 665,
- -1, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, -1, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, -1, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, -1, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, -1, 128, 129, 130, 131, 132, -1, -1,
- 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, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- -1, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, -1, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, -1, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, -1, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, -1, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, -1, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- -1, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, -1, 661, 662, 663, 664,
- 665, -1, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, -1, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, -1, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, -1, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, -1, 128, 129, 130, 131, 132, -1,
- -1, 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, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, -1, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, -1, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, -1, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, -1,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, -1, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, -1,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, -1, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, -1, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, -1, 661, 662, 663,
- 664, 665, -1, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, -1, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, -1, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, 21, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 47, 48, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
- -1, 84, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 101, -1,
- -1, -1, -1, -1, -1, -1, -1, 110, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 131, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, 145, -1, -1, -1, -1, 150, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 232,
- -1, -1, -1, 236, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 254, -1, -1, -1, 258, 259, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 289, -1, -1, -1,
- -1, -1, -1, 296, 297, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 737, 738, 739, 740, -1, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, -1, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, -1, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, -1, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, -1, 128, 129, 130, 131, 132,
+ -1, -1, 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, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, -1, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, -1, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, -1,
373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
@@ -23335,138 +23195,213 @@ static const yytype_int16 yycheck[] =
433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
-1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ -1, 464, 465, 466, 467, 468, 469, 470, 471, 472,
473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 533, 534, 535, 536, 537, 538, 539, -1, 541, 542,
543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ -1, 574, 575, 576, 577, 578, 579, 580, 581, 582,
583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 613, 614, -1, 616, 617, 618, 619, 620, 621, 622,
623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 653, 654, 655, 656, 657, 658, 659, -1, 661, 662,
+ 663, 664, 665, -1, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 733, 734, 735, 736, 737, 738, 739, 740, -1, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, 21,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 31,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 47, 48, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 80, -1,
- -1, -1, 84, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 101,
- -1, -1, -1, -1, -1, -1, -1, -1, 110, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 131,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, 145, -1, -1, -1, -1, 150, -1,
+ -1, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, -1, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, -1, 128,
+ 129, 130, 131, 132, -1, -1, 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, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, -1, 296, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
+ 319, 320, -1, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, -1, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, -1, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, -1, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, -1, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ -1, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, -1, 661, 662, 663, 664, 665, -1, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, -1, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, -1, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, 21, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 173, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
+ -1, -1, 47, 48, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 232, -1, -1, -1, 236, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 254, -1, -1, -1, 258, 259, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, -1, -1, 84,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 101, -1, -1, -1,
+ -1, -1, -1, -1, -1, 110, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 131, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ 145, -1, -1, -1, -1, 150, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 289, -1, -1,
- -1, -1, -1, -1, 296, 297, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 173, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- -1, -1, -1, 24, 25, 26, -1, 28, -1, 30,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 232, -1, -1,
+ -1, 236, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 254,
+ -1, -1, -1, 258, 259, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 289, -1, -1, -1, -1, -1,
+ -1, 296, 297, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 47, 48, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 101, -1, -1, -1, -1, -1, -1, -1, -1, 110,
-1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 131, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, 145, -1, -1, -1, -1, 150,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 173, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
-1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 232, -1, -1, -1, 236, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 254, -1, -1, -1, 258, 259, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 289, -1,
+ -1, -1, -1, -1, -1, 296, 297, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
@@ -23504,89 +23439,164 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, 24, 25, 26,
+ -1, 28, -1, 30, 31, 32, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 84, 85, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, 21, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 84, 85, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -23653,97 +23663,172 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, 23, -1, -1, 26, 27,
- -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, 23, -1,
+ -1, 26, 27, -1, -1, -1, 31, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 57, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, 21, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 85, -1,
-1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
@@ -23801,92 +23886,167 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, 21, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 31, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, 21, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 47, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 85,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, 21, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 47, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 84, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -23914,7 +24074,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
@@ -23949,7 +24109,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -23957,86 +24117,161 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, 21, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 31, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 84, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
+ 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, -1, 322, 323, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, 21, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 57, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24062,7 +24297,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
@@ -24097,237 +24332,15 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, 21,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 31,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- -1, 322, 323, 324, 325, 326, 327, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 57, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24394,241 +24407,19 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
- 148, -1, -1, 151, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
- -1, -1, -1, -1, 212, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, 21, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 258, -1, -1, -1, -1, -1, -1, -1,
- -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, 21, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
@@ -24637,13 +24428,13 @@ static const yytype_int16 yycheck[] =
-1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 148, -1, -1, 151, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, 212, -1, -1,
-1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24690,7 +24481,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -24698,85 +24489,160 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 128, -1, -1, -1, -1, -1,
- -1, 135, 136, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 258, -1, -1, -1, -1, -1, -1, -1, -1,
+ 267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, 21, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
@@ -24838,89 +24704,164 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 128,
+ -1, -1, -1, -1, -1, -1, 135, 136, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 53, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24931,7 +24872,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 128, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
-1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24945,7 +24886,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24986,89 +24927,164 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 30, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 128, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 30, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25135,97 +25151,172 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 63, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 63, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
@@ -25283,97 +25374,172 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ -1, -1, -1, -1, -1, -1, 225, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25431,7 +25597,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -25439,90 +25605,165 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
- -1, 225, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
@@ -25579,237 +25820,15 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 47, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25876,89 +25895,164 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26024,89 +26118,164 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, -1, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26172,7 +26341,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -26180,81 +26349,156 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, -1, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, -1, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ -1, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, 351, -1, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26320,89 +26564,164 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 31,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 188, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 279, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, -1, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
- -1, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, -1, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, -1, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, -1,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, -1, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, -1, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, -1, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26433,7 +26752,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, -1, -1, -1,
+ -1, 322, 323, 324, 325, 326, 327, -1, -1, -1,
331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
351, -1, 353, 354, 355, 356, 357, 358, 359, 360,
@@ -26468,392 +26787,310 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
+ 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 113, 114, 115, 116,
+ -1, -1, -1, -1, -1, -1, 123, -1, -1, -1,
+ 127, -1, -1, 130, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
+ 157, -1, -1, -1, -1, -1, -1, -1, 165, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 177, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, -1, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 241, -1, -1, -1, -1, 246,
+ 247, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 313, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, -1, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, -1, 342, 343, 344, 345, 346,
+ 347, 348, 349, -1, 351, -1, -1, 354, 355, 356,
+ 357, 358, -1, -1, 361, 362, 363, 364, 365, -1,
+ -1, -1, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, -1, -1, -1, -1, -1, -1, 385, -1,
+ 387, -1, 389, 390, -1, 392, 393, 394, 395, 396,
+ 397, -1, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, -1, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, -1, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, -1, -1, -1, 442, -1, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, -1,
+ -1, -1, -1, -1, 461, 462, 463, 464, 465, 466,
+ -1, 468, 469, -1, 471, 472, -1, -1, 475, -1,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, -1, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, -1, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, -1, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, -1, -1, 585, -1,
+ 587, 588, -1, 590, 591, 592, 593, -1, 595, 596,
+ 597, 598, -1, -1, -1, -1, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, -1, 630, -1, 632, 633, 634, -1, 636,
+ 637, -1, 639, 640, 641, 642, 643, 644, -1, 646,
+ 647, 648, 649, 650, 651, 652, -1, 654, 655, 656,
+ -1, 658, 659, 660, 661, -1, 663, 664, -1, -1,
+ 667, 668, -1, -1, 671, 672, 673, -1, 675, -1,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, -1, 689, 690, -1, 692, -1, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, -1, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, -1, 725, 726,
+ -1, 728, 729, 730, 731, 19, 20, 734, 735, -1,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, -1, -1, 755, 756,
+ -1, -1, 759, -1, 761, 762, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
+ -1, -1, -1, 77, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ 114, -1, 116, -1, -1, -1, -1, -1, -1, 123,
+ -1, -1, -1, 127, -1, -1, 130, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, 141, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 157, -1, -1, -1, -1, -1, -1,
+ -1, 165, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 177, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
+ -1, -1, 246, 247, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 188,
- -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 311, -1, 313,
+ -1, -1, -1, -1, 318, 319, 320, 321, 322, -1,
+ 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, -1, 342, 343,
+ 344, 345, 346, 347, 348, 349, -1, 351, -1, -1,
+ 354, 355, 356, 357, 358, -1, -1, 361, 362, 363,
+ 364, 365, -1, -1, -1, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, -1, -1, -1, -1, -1,
+ -1, 385, -1, 387, -1, 389, 390, -1, 392, 393,
+ 394, 395, 396, 397, -1, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, -1, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, -1, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, -1, -1, -1, 442, -1,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, -1, -1, -1, -1, -1, 461, 462, 463,
+ 464, 465, 466, -1, 468, 469, -1, 471, 472, -1,
+ -1, 475, -1, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, -1, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, -1, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, -1, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, 582, -1,
+ -1, 585, -1, 587, 588, -1, 590, 591, 592, 593,
+ -1, 595, 596, 597, 598, -1, -1, -1, -1, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, -1, 630, -1, 632, 633,
+ 634, -1, 636, 637, -1, 639, 640, 641, 642, 643,
+ 644, -1, 646, 647, 648, 649, 650, 651, 652, -1,
+ 654, 655, 656, -1, 658, 659, 660, 661, -1, 663,
+ 664, -1, -1, 667, 668, -1, -1, 671, 672, 673,
+ -1, 675, -1, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, -1, 689, 690, -1, 692, -1,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ -1, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ -1, 725, 726, -1, 728, 729, 730, 731, 19, 20,
+ 734, 735, -1, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, -1,
+ -1, 755, 756, -1, -1, 759, -1, 761, 762, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
+ -1, -1, -1, -1, -1, -1, 77, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, 123, -1, -1, -1, 127, -1, -1, 130,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ 141, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 157, -1, -1, -1,
+ -1, -1, -1, -1, 165, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 177, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 241, -1, -1, -1, -1, 246, 247, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, -1,
- -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, 351, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, -1, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 313, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, -1, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ -1, 342, 343, 344, 345, 346, 347, 348, 349, -1,
+ 351, -1, -1, 354, 355, 356, 357, 358, -1, -1,
+ 361, 362, 363, 364, 365, -1, -1, -1, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, -1, -1,
+ -1, -1, -1, -1, 385, -1, 387, -1, 389, 390,
+ -1, 392, 393, 394, 395, 396, 397, -1, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, -1, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, -1, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, -1, -1,
+ -1, 442, -1, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, -1, -1, -1, -1, -1,
+ 461, 462, 463, 464, 465, 466, -1, 468, 469, -1,
+ 471, 472, -1, -1, 475, -1, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, -1, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, -1, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, -1, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, -1, -1, 585, -1, 587, 588, -1, 590,
+ 591, 592, 593, -1, 595, 596, 597, 598, -1, -1,
+ -1, -1, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, -1, 630,
+ -1, 632, 633, 634, -1, 636, 637, -1, 639, 640,
+ 641, 642, 643, 644, -1, 646, 647, 648, 649, 650,
+ 651, 652, -1, 654, 655, 656, -1, 658, 659, 660,
+ 661, -1, 663, 664, -1, -1, 667, 668, -1, -1,
+ 671, 672, 673, -1, 675, -1, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, -1, 689, 690,
+ -1, 692, -1, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, -1, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, -1, 725, 726, -1, 728, 729, 730,
+ 731, 19, 20, 734, 735, -1, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, -1, -1, 755, 756, -1, -1, 759, -1,
+ 761, 762, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 123, -1, -1, -1, 127,
+ -1, -1, 130, -1, -1, -1, -1, 135, -1, -1,
+ -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 157,
+ -1, -1, -1, -1, -1, -1, -1, 165, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 177,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 241, -1, -1, -1, -1, 246, 247,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ -1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
+ 318, 319, 320, 321, 322, -1, 324, 325, 326, 327,
-1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 338, 339, 340, -1, 342, 343, 344, 345, 346, 347,
+ 348, 349, -1, 351, -1, -1, 354, 355, 356, 357,
+ 358, -1, -1, 361, 362, 363, 364, 365, -1, -1,
+ -1, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, -1, -1, -1, -1, -1, -1, 385, -1, 387,
+ -1, 389, 390, -1, 392, 393, 394, 395, 396, 397,
+ -1, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, -1, 413, -1, 415, 416, 417,
+ 418, 419, 420, 421, -1, 423, 424, 425, 426, 427,
428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- -1, 469, 470, 471, 472, 473, -1, 475, 476, 477,
+ 438, -1, -1, -1, 442, -1, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, -1, -1,
+ -1, -1, -1, 461, 462, 463, 464, 465, 466, -1,
+ 468, 469, -1, 471, 472, -1, -1, 475, -1, 477,
478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, -1, 507,
+ -1, 489, 490, 491, 492, 493, 494, 495, 496, 497,
+ -1, 499, 500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+ -1, 569, 570, 571, 572, 573, 574, 575, 576, -1,
+ 578, 579, 580, 581, 582, -1, -1, 585, -1, 587,
+ 588, -1, 590, 591, 592, 593, -1, 595, 596, 597,
+ 598, -1, -1, -1, -1, 603, 604, 605, 606, 607,
608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, -1, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 628, -1, 630, -1, 632, 633, 634, -1, 636, 637,
+ -1, 639, 640, 641, 642, 643, 644, -1, 646, 647,
+ 648, 649, 650, 651, 652, -1, 654, 655, 656, -1,
+ 658, 659, 660, 661, -1, 663, 664, -1, -1, 667,
+ 668, -1, -1, 671, 672, 673, -1, 675, -1, 677,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ -1, 689, 690, -1, 692, -1, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 708, 709, 710, 711, 712, 713, -1, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, -1, 725, 726, -1,
+ 728, 729, 730, 731, 19, 20, 734, 735, -1, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, -1, 322, 323, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
- -1, 77, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 113, 114, 115,
- 116, -1, -1, -1, -1, -1, -1, 123, -1, -1,
- -1, 127, -1, -1, 130, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 157, -1, -1, -1, -1, -1, -1, -1, 165,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 177, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- 246, 247, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 313, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, -1, 324, 325,
- 326, 327, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, -1, 342, 343, 344, 345,
- 346, 347, 348, 349, -1, 351, -1, -1, 354, 355,
- 356, 357, 358, -1, -1, 361, 362, 363, 364, 365,
- -1, -1, -1, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, -1, -1, -1, -1, -1, -1, 385,
- -1, 387, -1, 389, 390, -1, 392, 393, 394, 395,
- 396, 397, -1, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, -1, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, -1, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, -1, -1, -1, 442, -1, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- -1, -1, -1, -1, -1, 461, 462, 463, 464, 465,
- 466, -1, 468, 469, -1, 471, 472, -1, -1, 475,
- -1, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, -1, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, -1, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, -1, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, -1, -1, 585,
- -1, 587, 588, -1, 590, 591, 592, 593, -1, 595,
- 596, 597, 598, -1, -1, -1, -1, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, -1, 630, -1, 632, 633, 634, -1,
- 636, 637, -1, 639, 640, 641, 642, 643, 644, -1,
- 646, 647, 648, 649, 650, 651, 652, -1, 654, 655,
- 656, -1, 658, 659, 660, 661, -1, 663, 664, -1,
- -1, 667, 668, -1, -1, 671, 672, 673, -1, 675,
- -1, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- -1, 687, 688, -1, 690, -1, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, -1, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, -1, 723, 724, -1,
- 726, 727, 728, 729, 19, 20, 732, 733, -1, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, -1, -1, 752, 753, -1, -1,
- 756, -1, 758, 759, -1, -1, -1, -1, -1, -1,
+ 748, 749, 750, 751, 752, -1, -1, 755, 756, -1,
+ -1, 759, -1, 761, 762, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
-1, -1, 77, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 114,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 116, -1, -1, -1, -1, -1, -1, 123, -1,
-1, -1, 127, -1, -1, 130, -1, -1, -1, -1,
135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
@@ -26873,7 +27110,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 311, -1, 313, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 313, -1,
-1, -1, -1, 318, 319, 320, 321, 322, -1, 324,
325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
335, 336, 337, 338, 339, 340, -1, 342, 343, 344,
@@ -26910,157 +27147,15 @@ static const yytype_int16 yycheck[] =
-1, 646, 647, 648, 649, 650, 651, 652, -1, 654,
655, 656, -1, 658, 659, 660, 661, -1, 663, 664,
-1, -1, 667, 668, -1, -1, 671, 672, 673, -1,
- 675, -1, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, -1, 687, 688, -1, 690, -1, 692, 693, 694,
+ 675, -1, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, -1, 689, 690, -1, 692, -1, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, -1, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, -1, 723, 724,
- -1, 726, 727, 728, 729, 19, 20, 732, 733, -1,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, -1, -1, 752, 753, -1,
- -1, 756, -1, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
- -1, -1, -1, 77, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, 123,
- -1, -1, -1, 127, -1, -1, 130, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, 141, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 157, -1, -1, -1, -1, -1, -1,
- -1, 165, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 177, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
- -1, -1, 246, 247, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 313,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, -1,
- 324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, -1, 342, 343,
- 344, 345, 346, 347, 348, 349, -1, 351, -1, -1,
- 354, 355, 356, 357, 358, -1, -1, 361, 362, 363,
- 364, 365, -1, -1, -1, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, -1, -1, -1, -1, -1,
- -1, 385, -1, 387, -1, 389, 390, -1, 392, 393,
- 394, 395, 396, 397, -1, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, -1, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, -1, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, -1, -1, -1, 442, -1,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, -1, -1, -1, -1, -1, 461, 462, 463,
- 464, 465, 466, -1, 468, 469, -1, 471, 472, -1,
- -1, 475, -1, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, -1, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, -1, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, -1, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, -1,
- -1, 585, -1, 587, 588, -1, 590, 591, 592, 593,
- -1, 595, 596, 597, 598, -1, -1, -1, -1, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, -1, 630, -1, 632, 633,
- 634, -1, 636, 637, -1, 639, 640, 641, 642, 643,
- 644, -1, 646, 647, 648, 649, 650, 651, 652, -1,
- 654, 655, 656, -1, 658, 659, 660, 661, -1, 663,
- 664, -1, -1, 667, 668, -1, -1, 671, 672, 673,
- -1, 675, -1, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, -1, 687, 688, -1, 690, -1, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, -1, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, -1, 723,
- 724, -1, 726, 727, 728, 729, 19, 20, 732, 733,
- -1, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, -1, -1, 752, 753,
- -1, -1, 756, -1, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
- -1, -1, -1, -1, 77, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- 123, -1, -1, -1, 127, -1, -1, 130, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, 141, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 157, -1, -1, -1, -1, -1,
- -1, -1, 165, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 177, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 241, -1,
- -1, -1, -1, 246, 247, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 313, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- -1, 324, 325, 326, 327, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, -1, 342,
- 343, 344, 345, 346, 347, 348, 349, -1, 351, -1,
- -1, 354, 355, 356, 357, 358, -1, -1, 361, 362,
- 363, 364, 365, -1, -1, -1, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, -1, -1, -1, -1,
- -1, -1, 385, -1, 387, -1, 389, 390, -1, 392,
- 393, 394, 395, 396, 397, -1, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, -1,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, -1, -1, -1, 442,
- -1, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, -1, -1, -1, -1, -1, 461, 462,
- 463, 464, 465, 466, -1, 468, 469, -1, 471, 472,
- -1, -1, 475, -1, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, -1, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, -1, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, -1, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- -1, -1, 585, -1, 587, 588, -1, 590, 591, 592,
- 593, -1, 595, 596, 597, 598, -1, -1, -1, -1,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, -1, 630, -1, 632,
- 633, 634, -1, 636, 637, -1, 639, 640, 641, 642,
- 643, 644, -1, 646, 647, 648, 649, 650, 651, 652,
- -1, 654, 655, 656, -1, 658, 659, 660, 661, -1,
- 663, 664, -1, -1, 667, 668, -1, -1, 671, 672,
- 673, -1, 675, -1, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, -1, 687, 688, -1, 690, -1, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, -1,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, -1,
- 723, 724, -1, 726, 727, 728, 729, 19, 20, 732,
- 733, -1, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, -1, -1, 752,
- 753, -1, -1, 756, -1, 758, 759, -1, -1, -1,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, -1,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, -1,
+ 725, 726, -1, 728, 729, 730, 731, 19, 20, 734,
+ 735, -1, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, -1, -1,
+ 755, 756, -1, -1, 759, -1, 761, 762, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
-1, -1, -1, -1, -1, 77, -1, -1, -1, -1,
@@ -27123,158 +27218,16 @@ static const yytype_int16 yycheck[] =
642, 643, 644, -1, 646, 647, 648, 649, 650, 651,
652, -1, 654, 655, 656, -1, 658, 659, 660, 661,
-1, 663, 664, -1, -1, 667, 668, -1, -1, 671,
- 672, 673, -1, 675, -1, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, -1, 687, 688, -1, 690, -1,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
+ 672, 673, -1, 675, -1, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, -1, 689, 690, -1,
+ 692, -1, 694, 695, 696, 697, 698, 699, 700, 701,
702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- -1, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- -1, 723, 724, -1, 726, 727, 728, 729, 19, 20,
- 732, 733, -1, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, -1, -1,
- 752, 753, -1, -1, 756, -1, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
- -1, -1, -1, -1, -1, -1, 77, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, 123, -1, -1, -1, 127, -1, -1, 130,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 157, -1, -1, -1,
- -1, -1, -1, -1, 165, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 177, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, 246, 247, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 313, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, -1, 324, 325, 326, 327, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- -1, 342, 343, 344, 345, 346, 347, 348, 349, -1,
- 351, -1, -1, 354, 355, 356, 357, 358, -1, -1,
- 361, 362, 363, 364, 365, -1, -1, -1, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, -1, -1,
- -1, -1, -1, -1, 385, -1, 387, -1, 389, 390,
- -1, 392, 393, 394, 395, 396, 397, -1, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, -1, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, -1, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, -1, -1,
- -1, 442, -1, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, -1, -1, -1, -1, -1,
- 461, 462, 463, 464, 465, 466, -1, 468, 469, -1,
- 471, 472, -1, -1, 475, -1, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, -1, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, -1, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, -1, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, -1, -1, 585, -1, 587, 588, -1, 590,
- 591, 592, 593, -1, 595, 596, 597, 598, -1, -1,
- -1, -1, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, -1, 630,
- -1, 632, 633, 634, -1, 636, 637, -1, 639, 640,
- 641, 642, 643, 644, -1, 646, 647, 648, 649, 650,
- 651, 652, -1, 654, 655, 656, -1, 658, 659, 660,
- 661, -1, 663, 664, -1, -1, 667, 668, -1, -1,
- 671, 672, 673, -1, 675, -1, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, -1, 687, 688, -1, 690,
- -1, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, -1, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, -1, 723, 724, -1, 726, 727, 728, 729, 19,
- 20, 732, 733, -1, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, -1,
- -1, 752, 753, -1, -1, 756, -1, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
- -1, -1, -1, -1, -1, -1, -1, 77, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, 123, -1, -1, -1, 127, -1, -1,
- 130, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 157, -1, -1,
- -1, -1, -1, -1, -1, 165, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 177, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 241, -1, -1, -1, -1, 246, 247, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 313, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, -1, 324, 325, 326, 327, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, -1, 342, 343, 344, 345, 346, 347, 348, 349,
- -1, 351, -1, -1, 354, 355, 356, 357, 358, -1,
- -1, 361, 362, 363, 364, 365, -1, -1, -1, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, -1,
- -1, -1, -1, -1, -1, 385, -1, 387, -1, 389,
- 390, -1, 392, 393, 394, 395, 396, 397, -1, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, -1, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, -1, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, -1,
- -1, -1, 442, -1, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, -1, -1, -1, -1,
- -1, 461, 462, 463, 464, 465, 466, -1, 468, 469,
- -1, 471, 472, -1, -1, 475, -1, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, -1, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, -1, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, -1, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, -1, -1, 585, -1, 587, 588, -1,
- 590, 591, 592, 593, -1, 595, 596, 597, 598, -1,
- -1, -1, -1, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, -1,
- 630, -1, 632, 633, 634, -1, 636, 637, -1, 639,
- 640, 641, 642, 643, 644, -1, 646, 647, 648, 649,
- 650, 651, 652, -1, 654, 655, 656, -1, 658, 659,
- 660, 661, -1, 663, 664, -1, -1, 667, 668, -1,
- -1, 671, 672, 673, -1, 675, -1, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, -1, 687, 688, -1,
- 690, -1, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, -1, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, -1, 723, 724, -1, 726, 727, 728, 729,
- 19, 20, 732, 733, -1, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- -1, -1, 752, 753, -1, -1, 756, -1, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 712, 713, -1, 715, 716, 717, 718, 719, 720, 721,
+ 722, 723, -1, 725, 726, -1, 728, 729, 730, 731,
+ 19, 20, 734, 735, -1, 737, 738, 739, 740, 741,
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, -1, -1, 755, 756, -1, -1, 759, -1, 761,
+ 762, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
-1, -1, -1, -1, -1, -1, -1, -1, 77, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
@@ -27337,168 +27290,26 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, -1, 654, 655, 656, -1, 658,
659, 660, 661, -1, 663, 664, -1, -1, 667, 668,
-1, -1, 671, 672, 673, -1, 675, -1, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, -1, 687, 688,
- -1, 690, -1, 692, 693, 694, 695, 696, 697, 698,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, -1,
+ 689, 690, -1, 692, -1, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, -1, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, -1, 723, 724, -1, 726, 727, 728,
- 729, 19, 20, 732, 733, -1, 735, 736, 737, 738,
+ 709, 710, 711, 712, 713, -1, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, -1, 725, 726, -1, 728,
+ 729, 730, 731, 19, 20, 734, 735, -1, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, -1, -1, 752, 753, -1, -1, 756, -1, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, 123, -1, -1, -1, 127,
- -1, -1, 130, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 157,
- -1, -1, -1, -1, -1, -1, -1, 165, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 177,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 241, -1, -1, -1, -1, 246, 247,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, -1, 324, 325, 326, 327,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, -1, 342, 343, 344, 345, 346, 347,
- 348, 349, -1, 351, -1, -1, 354, 355, 356, 357,
- 358, -1, -1, 361, 362, 363, 364, 365, -1, -1,
- -1, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, -1, -1, -1, -1, -1, -1, 385, -1, 387,
- -1, 389, 390, -1, 392, 393, 394, 395, 396, 397,
- -1, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, -1, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, -1, 423, 424, 425, 426, -1,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, -1, -1, -1, 442, -1, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, -1, -1,
- -1, -1, -1, 461, 462, 463, 464, 465, 466, -1,
- 468, 469, -1, 471, 472, -1, -1, 475, -1, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- -1, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- -1, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- -1, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, -1, -1, 585, -1, 587,
- 588, -1, 590, 591, 592, 593, -1, 595, 596, 597,
- 598, -1, -1, -1, -1, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, -1, 630, -1, 632, 633, 634, -1, 636, 637,
- -1, 639, 640, 641, 642, 643, 644, -1, 646, 647,
- 648, 649, 650, 651, 652, -1, 654, 655, 656, -1,
- 658, 659, 660, 661, -1, 663, 664, -1, -1, 667,
- 668, -1, -1, 671, 672, 673, -1, 675, -1, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, -1, 687,
- 688, -1, 690, -1, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, -1, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, -1, 723, 724, -1, 726, 727,
- 728, 729, 19, 20, 732, 733, -1, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, -1, -1, 752, 753, -1, -1, 756, -1,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
- 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, 123, -1, -1, -1,
- 127, -1, -1, 130, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 157, -1, -1, -1, -1, -1, -1, -1, 165, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 177, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 241, -1, -1, -1, -1, 246,
- 247, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 313, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, -1, 324, 325, 326,
- 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, -1, 342, 343, 344, 345, 346,
- 347, 348, 349, -1, 351, -1, -1, 354, 355, 356,
- 357, 358, -1, -1, 361, 362, 363, 364, 365, -1,
- -1, -1, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, -1, -1, -1, -1, -1, -1, 385, -1,
- 387, -1, 389, 390, -1, 392, 393, 394, 395, 396,
- 397, -1, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, -1, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, -1, 423, 424, 425, 426,
- -1, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, -1, -1, -1, 442, -1, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, -1,
- -1, -1, -1, -1, 461, 462, 463, 464, 465, 466,
- -1, 468, 469, -1, 471, 472, -1, -1, 475, -1,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, -1, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, -1, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, -1, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, -1, -1, 585, -1,
- 587, 588, -1, 590, 591, 592, 593, -1, 595, 596,
- 597, 598, -1, -1, -1, -1, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, -1, 630, -1, 632, 633, 634, -1, 636,
- 637, -1, 639, 640, 641, 642, 643, 644, -1, 646,
- 647, 648, 649, 650, 651, 652, -1, 654, 655, 656,
- -1, 658, 659, 660, 661, -1, 663, 664, -1, -1,
- 667, 668, -1, -1, 671, 672, 673, -1, 675, -1,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, -1,
- 687, 688, -1, 690, -1, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, -1, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, -1, 723, 724, -1, 726,
- 727, 728, 729, 19, 20, 732, 733, -1, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, -1, -1, 752, 753, -1, -1, 756,
- -1, 758, 759, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, -1, -1, 755, 756, -1, -1,
+ 759, -1, 761, 762, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 77, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 127, -1, -1, -1, -1, -1, -1, -1, 135,
+ 116, -1, -1, -1, -1, -1, -1, 123, -1, -1,
+ -1, 127, -1, -1, 130, -1, -1, -1, -1, 135,
-1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 157, -1, -1, -1, -1, -1, -1, -1, 165,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 177, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 188, -1, -1, -1, -1, -1, -1, 195,
@@ -27519,14 +27330,14 @@ static const yytype_int16 yycheck[] =
336, 337, 338, 339, 340, -1, 342, 343, 344, 345,
346, 347, 348, 349, -1, 351, -1, -1, 354, 355,
356, 357, 358, -1, -1, 361, 362, 363, 364, 365,
- -1, -1, -1, 369, 370, 371, 372, 373, -1, 375,
+ -1, -1, -1, 369, 370, 371, 372, 373, 374, 375,
376, 377, 378, -1, -1, -1, -1, -1, -1, 385,
-1, 387, -1, 389, 390, -1, 392, 393, 394, 395,
396, 397, -1, 399, 400, 401, 402, 403, 404, 405,
406, 407, 408, 409, 410, 411, -1, 413, -1, 415,
416, 417, 418, 419, 420, 421, -1, 423, 424, 425,
- 426, -1, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, -1, -1, -1, 442, -1, -1, 445,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, -1, -1, -1, 442, -1, 444, 445,
446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-1, -1, -1, -1, -1, 461, 462, 463, 464, 465,
466, -1, 468, 469, -1, 471, 472, -1, -1, 475,
@@ -27540,7 +27351,7 @@ static const yytype_int16 yycheck[] =
546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
566, 567, -1, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, -1, -1, -1, 585,
+ 576, -1, 578, 579, 580, 581, 582, -1, -1, 585,
-1, 587, 588, -1, 590, 591, 592, 593, -1, 595,
596, 597, 598, -1, -1, -1, -1, 603, 604, 605,
606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
@@ -27548,50 +27359,128 @@ static const yytype_int16 yycheck[] =
626, 627, 628, -1, 630, -1, 632, 633, 634, -1,
636, 637, -1, 639, 640, 641, 642, 643, 644, -1,
646, 647, 648, 649, 650, 651, 652, -1, 654, 655,
- 656, -1, 658, 659, 660, 661, -1, 663, 664, 19,
- 20, 667, 668, -1, -1, 671, 672, 673, -1, 675,
- -1, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- -1, 687, 688, -1, 690, -1, 692, 693, 694, 695,
+ 656, -1, 658, 659, 660, 661, -1, 663, 664, -1,
+ -1, 667, 668, -1, -1, 671, 672, 673, -1, 675,
+ -1, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, -1, 689, 690, -1, 692, -1, 694, 695,
696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, -1, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, -1, 723, 724, -1,
- 726, 727, 728, 729, -1, -1, 732, 733, 88, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, -1, -1, 752, 753, -1, -1,
- 756, -1, 758, 759, -1, -1, 116, -1, -1, -1,
+ 706, 707, 708, 709, 710, 711, 712, 713, -1, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, -1, 725,
+ 726, -1, 728, 729, 730, 731, 19, 20, 734, 735,
+ -1, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, -1, -1, 755,
+ 756, -1, -1, 759, -1, 761, 762, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
+ -1, -1, -1, -1, 77, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ 123, -1, -1, -1, 127, -1, -1, 130, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, 141, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 157, -1, -1, -1, -1, -1,
+ -1, -1, 165, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 177, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 188, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 241, -1,
+ -1, -1, -1, 246, 247, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 279, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 313, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ -1, 324, 325, 326, 327, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, -1, 342,
+ 343, 344, 345, 346, 347, 348, 349, -1, 351, -1,
+ -1, 354, 355, 356, 357, 358, -1, -1, 361, 362,
+ 363, 364, 365, -1, -1, -1, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, -1, -1, -1, -1,
+ -1, -1, 385, -1, 387, -1, 389, 390, -1, 392,
+ 393, 394, 395, 396, 397, -1, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, -1,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, -1, -1, -1, 442,
+ -1, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, -1, -1, -1, -1, -1, 461, 462,
+ 463, 464, 465, 466, -1, 468, 469, -1, 471, 472,
+ -1, -1, 475, -1, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, -1, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, -1, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, -1, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ -1, -1, 585, -1, 587, 588, -1, 590, 591, 592,
+ 593, -1, 595, 596, 597, 598, -1, -1, -1, -1,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, -1, 630, -1, 632,
+ 633, 634, -1, 636, 637, -1, 639, 640, 641, 642,
+ 643, 644, -1, 646, 647, 648, 649, 650, 651, 652,
+ -1, 654, 655, 656, -1, 658, 659, 660, 661, -1,
+ 663, 664, -1, -1, 667, 668, -1, -1, 671, 672,
+ 673, -1, 675, -1, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, -1, 689, 690, -1, 692,
+ -1, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, -1, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, -1, 725, 726, -1, 728, 729, 730, 731, 19,
+ 20, 734, 735, -1, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ -1, -1, 755, 756, -1, -1, 759, -1, 761, 762,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
+ -1, -1, -1, -1, -1, -1, -1, 77, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, 123, -1, -1, -1, 127, -1, -1,
+ 130, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 157, -1, -1,
+ -1, -1, -1, -1, -1, 165, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 177, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 188, -1,
-1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, 246, 247, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 311, -1, -1, -1, -1, -1, -1, 318, 319,
+ -1, -1, -1, 313, -1, -1, -1, -1, 318, 319,
320, 321, 322, -1, 324, 325, 326, 327, -1, -1,
-1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
340, -1, 342, 343, 344, 345, 346, 347, 348, 349,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, -1,
+ -1, 351, -1, -1, 354, 355, 356, 357, 358, -1,
-1, 361, 362, 363, 364, 365, -1, -1, -1, 369,
- 370, 371, 372, 373, -1, 375, 376, 377, 378, -1,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, -1,
-1, -1, -1, -1, -1, 385, -1, 387, -1, 389,
390, -1, 392, 393, 394, 395, 396, 397, -1, 399,
400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
410, 411, -1, 413, -1, 415, 416, 417, 418, 419,
420, 421, -1, 423, 424, 425, 426, -1, 428, 429,
430, 431, 432, 433, 434, 435, 436, 437, 438, -1,
- -1, -1, 442, -1, -1, 445, 446, 447, 448, 449,
+ -1, -1, 442, -1, 444, 445, 446, 447, 448, 449,
450, 451, 452, 453, 454, 455, -1, -1, -1, -1,
-1, 461, 462, 463, 464, 465, 466, -1, 468, 469,
-1, 471, 472, -1, -1, 475, -1, 477, 478, 479,
@@ -27605,7 +27494,7 @@ static const yytype_int16 yycheck[] =
550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
560, 561, 562, 563, 564, 565, 566, 567, -1, 569,
570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, -1, -1, -1, 585, -1, 587, 588, -1,
+ 580, 581, 582, -1, -1, 585, -1, 587, 588, -1,
590, 591, 592, 593, -1, 595, 596, 597, 598, -1,
-1, -1, -1, 603, 604, 605, 606, 607, 608, 609,
610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
@@ -27613,40 +27502,118 @@ static const yytype_int16 yycheck[] =
630, -1, 632, 633, 634, -1, 636, 637, -1, 639,
640, 641, 642, 643, 644, -1, 646, 647, 648, 649,
650, 651, 652, -1, 654, 655, 656, -1, 658, 659,
- 660, 661, -1, 663, 664, 19, 20, 667, 668, -1,
- -1, 671, 672, 673, -1, 675, -1, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, -1, 687, 688, -1,
- 690, -1, 692, 693, 694, 695, 696, 697, 698, 699,
+ 660, 661, -1, 663, 664, -1, -1, 667, 668, -1,
+ -1, 671, 672, 673, -1, 675, -1, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, -1, 689,
+ 690, -1, 692, -1, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, -1, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, -1, 723, 724, -1, 726, 727, 728, 729,
- -1, -1, 732, 733, 88, 735, 736, 737, 738, 739,
+ 710, 711, 712, 713, -1, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, -1, 725, 726, -1, 728, 729,
+ 730, 731, 19, 20, 734, 735, -1, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- -1, -1, 752, 753, -1, -1, 756, -1, 758, 759,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ 750, 751, 752, -1, -1, 755, 756, -1, -1, 759,
+ -1, 761, 762, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
+ 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, 123, -1, -1, -1,
+ 127, -1, -1, 130, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 157, -1, -1, -1, -1, -1, -1, -1, 165, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 177, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 188, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 241, -1, -1, -1, -1, 246,
+ 247, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 279, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 313, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, -1, 324, 325, 326,
+ 327, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, -1, 342, 343, 344, 345, 346,
+ 347, 348, 349, -1, 351, -1, -1, 354, 355, 356,
+ 357, 358, -1, -1, 361, 362, 363, 364, 365, -1,
+ -1, -1, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, -1, -1, -1, -1, -1, -1, 385, -1,
+ 387, -1, 389, 390, -1, 392, 393, 394, 395, 396,
+ 397, -1, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, -1, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, -1, 423, 424, 425, 426,
+ -1, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, -1, -1, -1, 442, -1, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, -1,
+ -1, -1, -1, -1, 461, 462, 463, 464, 465, 466,
+ -1, 468, 469, -1, 471, 472, -1, -1, 475, -1,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, -1, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, -1, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, -1, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, -1, -1, 585, -1,
+ 587, 588, -1, 590, 591, 592, 593, -1, 595, 596,
+ 597, 598, -1, -1, -1, -1, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, -1, 630, -1, 632, 633, 634, -1, 636,
+ 637, -1, 639, 640, 641, 642, 643, 644, -1, 646,
+ 647, 648, 649, 650, 651, 652, -1, 654, 655, 656,
+ -1, 658, 659, 660, 661, -1, 663, 664, -1, -1,
+ 667, 668, -1, -1, 671, 672, 673, -1, 675, -1,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, -1, 689, 690, -1, 692, -1, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, -1, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, -1, 725, 726,
+ -1, 728, 729, 730, 731, 19, 20, 734, 735, -1,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, -1, -1, 755, 756,
+ -1, -1, 759, -1, 761, 762, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 127, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, 141, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 177, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 188, -1, -1, -1, -1, -1,
-1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
+ -1, -1, 246, 247, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 279, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 311, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 313,
-1, -1, -1, -1, 318, 319, 320, 321, 322, -1,
324, 325, 326, 327, -1, -1, -1, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, -1, 342, 343,
- 344, 345, 346, 347, 348, 349, -1, -1, -1, -1,
+ 344, 345, 346, 347, 348, 349, -1, 351, -1, -1,
354, 355, 356, 357, 358, -1, -1, 361, 362, 363,
364, 365, -1, -1, -1, 369, 370, 371, 372, 373,
-1, 375, 376, 377, 378, -1, -1, -1, -1, -1,
@@ -27678,16 +27645,94 @@ static const yytype_int16 yycheck[] =
634, -1, 636, 637, -1, 639, 640, 641, 642, 643,
644, -1, 646, 647, 648, 649, 650, 651, 652, -1,
654, 655, 656, -1, 658, 659, 660, 661, -1, 663,
- 664, 19, 20, 667, 668, -1, -1, 671, 672, 673,
- -1, 675, -1, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, -1, 687, 688, -1, 690, -1, 692, 693,
+ 664, -1, -1, 667, 668, -1, -1, 671, 672, 673,
+ -1, 675, -1, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, -1, 689, 690, -1, 692, -1,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, -1, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, -1, 723,
- 724, -1, 726, 727, 728, 729, -1, -1, 732, 733,
- 88, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, -1, -1, 752, 753,
- -1, -1, 756, -1, 758, 759, -1, -1, 116, -1,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ -1, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ -1, 725, 726, -1, 728, 729, 730, 731, 19, 20,
+ 734, 735, -1, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, -1,
+ -1, 755, 756, -1, -1, 759, -1, 761, 762, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 188, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 279, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 311, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, -1, 324, 325, 326, 327, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ -1, 342, 343, 344, 345, 346, 347, 348, 349, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, -1, -1,
+ 361, 362, 363, 364, 365, -1, -1, -1, 369, 370,
+ 371, 372, 373, -1, 375, 376, 377, 378, -1, -1,
+ -1, -1, -1, -1, 385, -1, 387, -1, 389, 390,
+ -1, 392, 393, 394, 395, 396, 397, -1, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, -1, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, -1, 423, 424, 425, 426, -1, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, -1, -1,
+ -1, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, -1, -1, -1, -1, -1,
+ 461, 462, 463, 464, 465, 466, -1, 468, 469, -1,
+ 471, 472, -1, -1, 475, -1, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, -1, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, -1, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, -1, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, -1, -1, -1, 585, -1, 587, 588, -1, 590,
+ 591, 592, 593, -1, 595, 596, 597, 598, -1, -1,
+ -1, -1, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, -1, 630,
+ -1, 632, 633, 634, -1, 636, 637, -1, 639, 640,
+ 641, 642, 643, 644, -1, 646, 647, 648, 649, 650,
+ 651, 652, -1, 654, 655, 656, -1, 658, 659, 660,
+ 661, -1, 663, 664, -1, -1, 667, 668, -1, -1,
+ 671, 672, 673, -1, 675, -1, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, -1, 689, 690,
+ -1, 692, -1, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, -1, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, -1, 725, 726, -1, 728, 729, 730,
+ 731, 19, 20, 734, 735, -1, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, -1, -1, 755, 756, -1, -1, 759, -1,
+ 761, 762, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
-1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
@@ -27707,7 +27752,7 @@ static const yytype_int16 yycheck[] =
-1, 279, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 311, -1, -1, -1, -1, -1, -1,
318, 319, 320, 321, 322, -1, 324, 325, 326, 327,
-1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
338, 339, 340, -1, 342, 343, 344, 345, 346, 347,
@@ -27744,88 +27789,160 @@ static const yytype_int16 yycheck[] =
648, 649, 650, 651, 652, -1, 654, 655, 656, -1,
658, 659, 660, 661, -1, 663, 664, -1, -1, 667,
668, -1, -1, 671, 672, 673, -1, 675, -1, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, -1, 687,
- 688, -1, 690, -1, 692, 693, 694, 695, 696, 697,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
+ -1, 689, 690, -1, 692, -1, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, -1, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, -1, 723, 724, -1, 726, 727,
- 728, 729, -1, -1, 732, 733, -1, 735, 736, 737,
+ 708, 709, 710, 711, 712, 713, -1, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, -1, 725, 726, -1,
+ 728, 729, 730, 731, 19, 20, 734, 735, -1, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 19, 20, 752, 753, -1, -1, 756, -1,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, -1,
- 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- -1, 128, 129, 130, 131, 132, -1, -1, 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, -1, -1, -1,
- 177, 178, 179, 180, 181, 182, 183, -1, -1, -1,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, -1, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, -1, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, -1, 259, 260, -1, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, -1, -1, -1,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, -1,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, -1, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, -1, 353, -1, 355, -1,
- -1, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, -1, -1, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, -1, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, -1, 456,
- 457, 458, -1, 460, 461, 462, -1, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, -1,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, -1, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, -1, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, -1, -1, -1, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, -1, -1,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, -1, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, -1, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, -1, 711, 712, -1, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, -1, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, -1, 751, 752, 753, 754, -1, 756,
- 757, 758
+ 748, 749, 750, 751, 752, -1, -1, 755, 756, -1,
+ -1, 759, -1, 761, 762, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 188, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, -1, 324,
+ 325, 326, 327, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, -1, 342, 343, 344,
+ 345, 346, 347, 348, 349, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, -1, -1, 361, 362, 363, 364,
+ 365, -1, -1, -1, 369, 370, 371, 372, 373, -1,
+ 375, 376, 377, 378, -1, -1, -1, -1, -1, -1,
+ 385, -1, 387, -1, 389, 390, -1, 392, 393, 394,
+ 395, 396, 397, -1, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, -1, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, -1, 423, 424,
+ 425, 426, -1, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, -1, -1, -1, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, -1, -1, -1, -1, -1, 461, 462, 463, 464,
+ 465, 466, -1, 468, 469, -1, 471, 472, -1, -1,
+ 475, -1, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, -1, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, -1, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, -1, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, -1, -1, -1,
+ 585, -1, 587, 588, -1, 590, 591, 592, 593, -1,
+ 595, 596, 597, 598, -1, -1, -1, -1, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, -1, 630, -1, 632, 633, 634,
+ -1, 636, 637, -1, 639, 640, 641, 642, 643, 644,
+ -1, 646, 647, 648, 649, 650, 651, 652, -1, 654,
+ 655, 656, -1, 658, 659, 660, 661, -1, 663, 664,
+ -1, -1, 667, 668, -1, -1, 671, 672, 673, -1,
+ 675, -1, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, -1, 689, 690, -1, 692, -1, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, -1,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, -1,
+ 725, 726, -1, 728, 729, 730, 731, -1, -1, 734,
+ 735, -1, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 19, 20,
+ 755, 756, -1, -1, 759, -1, 761, 762, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, -1, 57, 58, 59, 60,
+ -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, -1, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, -1, 128, 129, 130,
+ 131, 132, -1, -1, 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, -1, -1, -1, 177, 178, 179, 180,
+ 181, 182, 183, -1, -1, -1, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, -1, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, -1, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, -1, 259, 260,
+ -1, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, -1, -1, -1, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, -1, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ -1, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ 351, -1, 353, -1, 355, -1, -1, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, -1, -1, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ -1, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, -1, 456, 457, 458, -1, 460,
+ 461, 462, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, -1, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, -1,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, -1, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, -1, -1, -1, 576, 577, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, -1, -1, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, -1, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, -1,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, -1, 713, 714, -1, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ -1, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, -1, 754, 755, 756, 757, -1, 759, 760,
+ 761
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -27838,18 +27955,18 @@ static const yytype_int16 yystos[] =
243, 248, 254, 258, 259, 260, 294, 296, 298, 305,
313, 314, 328, 350, 351, 353, 360, 368, 388, 412,
422, 441, 456, 467, 470, 473, 488, 602, 631, 635,
- 645, 653, 665, 686, 689, 722, 731, 757, 779, 790,
- 793, 794, 795, 796, 797, 799, 805, 807, 822, 869,
- 908, 909, 916, 917, 930, 965, 990, 1008, 1070, 1123,
- 1224, 1277, 1280, 1290, 1295, 1301, 1314, 1317, 1323, 1326,
- 1331, 1338, 1350, 1353, 1356, 1357, 1359, 1362, 1363, 1365,
- 1366, 1369, 1370, 1373, 1610, 1612, 1625, 1628, 1666, 1675,
- 1693, 1701, 1715, 1719, 1720, 1724, 1725, 1735, 1742, 1750,
- 1752, 1758, 1761, 1762, 1794, 1849, 1890, 1897, 1899, 1908,
- 1911, 1947, 1949, 1954, 1955, 1956, 1957, 1982, 1991, 1992,
- 1993, 1995, 2023, 2024, 2034, 2039, 88, 226, 338, 413,
- 463, 658, 662, 735, 1225, 1961, 1962, 1963, 1964, 197,
- 460, 506, 1325, 1722, 19, 20, 88, 116, 135, 144,
+ 645, 653, 665, 688, 691, 724, 733, 760, 783, 794,
+ 797, 798, 799, 800, 801, 803, 809, 811, 826, 869,
+ 876, 915, 916, 923, 924, 937, 972, 997, 1015, 1077,
+ 1132, 1233, 1287, 1290, 1300, 1305, 1311, 1324, 1327, 1333,
+ 1336, 1341, 1348, 1360, 1363, 1366, 1367, 1369, 1372, 1373,
+ 1375, 1376, 1379, 1380, 1383, 1624, 1626, 1639, 1642, 1680,
+ 1689, 1707, 1715, 1729, 1733, 1734, 1738, 1739, 1749, 1756,
+ 1764, 1766, 1772, 1775, 1776, 1808, 1863, 1905, 1912, 1914,
+ 1923, 1926, 1962, 1964, 1969, 1970, 1971, 1972, 2002, 2011,
+ 2012, 2013, 2015, 2061, 2066, 2082, 88, 226, 338, 413,
+ 463, 658, 662, 737, 1234, 1976, 1977, 1978, 1979, 197,
+ 460, 506, 1335, 1736, 19, 20, 88, 116, 135, 144,
188, 195, 207, 218, 279, 318, 319, 320, 321, 322,
323, 324, 325, 326, 327, 331, 332, 333, 334, 335,
336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
@@ -27885,953 +28002,972 @@ static const yytype_int16 yystos[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, 756,
- 757, 758, 759, 1816, 1818, 1827, 1834, 1838, 1839, 1840,
- 1841, 1842, 1843, 1844, 1845, 1846, 1847, 2001, 966, 528,
- 1318, 208, 1676, 88, 145, 226, 289, 436, 463, 644,
- 662, 708, 735, 743, 1624, 993, 860, 931, 1626, 1753,
- 145, 408, 758, 1767, 281, 704, 1893, 991, 1325, 1124,
- 1009, 57, 528, 1707, 258, 267, 905, 910, 912, 1827,
- 653, 735, 1893, 995, 910, 911, 860, 1360, 1850, 1702,
- 910, 1898, 1667, 1827, 1358, 992, 235, 1796, 1629, 173,
- 294, 684, 1736, 40, 196, 1406, 1948, 3, 31, 1821,
- 145, 1893, 753, 1951, 1611, 482, 1827, 1325, 403, 918,
- 1900, 806, 598, 676, 1827, 1325, 1743, 1951, 1827, 1759,
- 47, 669, 717, 47, 669, 1694, 598, 676, 351, 352,
- 388, 427, 602, 619, 645, 686, 1985, 1359, 1366, 1369,
- 0, 7, 791, 602, 88, 129, 145, 262, 293, 644,
- 735, 839, 1202, 1203, 1624, 1961, 1962, 1963, 1964, 128,
- 154, 1376, 1377, 1606, 1354, 1351, 119, 152, 292, 1368,
- 1958, 1367, 1958, 448, 460, 591, 787, 1721, 1722, 1813,
- 1827, 1363, 1365, 386, 1244, 1827, 863, 1827, 763, 763,
- 863, 141, 1623, 21, 1821, 1827, 1829, 1623, 1269, 1270,
- 268, 1394, 1965, 1966, 1961, 763, 1893, 1350, 1353, 1625,
- 1628, 1666, 1675, 1718, 787, 870, 311, 946, 947, 967,
- 970, 973, 818, 819, 1821, 743, 1315, 1893, 328, 143,
- 178, 475, 614, 1678, 1691, 1692, 1623, 1614, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 658, 1893, 978, 1827,
- 2005, 47, 48, 80, 84, 101, 110, 131, 145, 150,
- 173, 232, 236, 254, 258, 259, 289, 296, 297, 353,
- 393, 436, 441, 452, 453, 607, 611, 617, 628, 634,
- 665, 669, 698, 1829, 1912, 1916, 1917, 1918, 1920, 1922,
- 1923, 1924, 1925, 946, 961, 1631, 471, 675, 1754, 154,
- 1763, 1891, 77, 123, 130, 144, 157, 165, 246, 247,
- 321, 351, 374, 444, 463, 582, 887, 932, 933, 934,
- 935, 937, 940, 943, 944, 945, 955, 956, 957, 958,
- 959, 980, 983, 1818, 1828, 1841, 1842, 1843, 1847, 2002,
- 2010, 2011, 2012, 2032, 2033, 2034, 2035, 2037, 1893, 3,
- 8, 9, 19, 20, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 40, 57, 58, 59, 60,
- 68, 69, 71, 78, 79, 82, 83, 84, 85, 87,
- 90, 91, 99, 102, 120, 121, 122, 124, 132, 133,
- 134, 141, 150, 153, 162, 164, 166, 180, 181, 183,
- 187, 192, 196, 198, 199, 200, 201, 219, 220, 221,
- 223, 230, 241, 249, 250, 268, 275, 276, 278, 279,
- 290, 300, 301, 302, 308, 309, 327, 328, 329, 330,
- 334, 341, 349, 366, 379, 381, 382, 383, 398, 410,
- 411, 466, 478, 500, 501, 546, 552, 561, 562, 585,
- 593, 605, 649, 656, 663, 694, 713, 714, 715, 716,
- 721, 722, 735, 737, 749, 751, 759, 768, 769, 774,
- 779, 783, 784, 787, 1369, 1375, 1400, 1401, 1402, 1403,
- 1407, 1418, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1432,
- 1433, 1434, 1442, 1448, 1449, 1450, 1451, 1452, 1454, 1457,
- 1786, 1789, 1791, 1792, 1793, 1810, 1817, 1819, 1820, 1827,
- 1834, 1845, 1846, 65, 1010, 510, 250, 362, 370, 385,
- 395, 396, 397, 405, 543, 555, 655, 693, 707, 913,
- 915, 737, 906, 912, 1827, 860, 1623, 887, 981, 912,
- 47, 333, 611, 1909, 1910, 1918, 1920, 47, 106, 264,
- 266, 277, 293, 474, 679, 680, 681, 682, 1379, 1386,
- 1387, 1960, 3, 71, 99, 144, 321, 366, 463, 468,
- 506, 556, 577, 593, 644, 661, 687, 717, 750, 1167,
- 1816, 1825, 1836, 1838, 1839, 1840, 1842, 1843, 1844, 1847,
- 1851, 1861, 1872, 2001, 47, 49, 79, 80, 89, 145,
- 159, 214, 226, 281, 324, 344, 353, 366, 377, 400,
- 430, 433, 435, 462, 463, 468, 469, 485, 506, 528,
- 582, 597, 606, 609, 610, 624, 661, 669, 690, 747,
- 1167, 1201, 1703, 1707, 1708, 1710, 1719, 1818, 1862, 912,
- 1893, 178, 1674, 779, 1645, 1654, 946, 2007, 1795, 1631,
- 1737, 1827, 343, 1951, 1829, 1332, 1291, 50, 1952, 1400,
- 1473, 800, 299, 802, 1726, 417, 1813, 1815, 1827, 1901,
- 1829, 141, 1069, 1821, 128, 1296, 528, 613, 669, 1744,
- 1745, 287, 1952, 746, 1760, 670, 818, 232, 314, 1281,
- 1282, 1283, 670, 818, 281, 1696, 1623, 1623, 23, 26,
- 27, 31, 1787, 1788, 1822, 1984, 1984, 1984, 460, 1983,
- 1984, 1984, 780, 780, 786, 1827, 1069, 1069, 145, 1069,
- 1069, 662, 844, 145, 145, 281, 658, 226, 289, 436,
- 1965, 337, 861, 861, 1961, 111, 135, 779, 784, 1375,
- 1378, 1478, 1481, 1493, 1496, 1497, 1498, 1509, 1510, 1511,
- 1512, 1514, 1515, 1516, 1813, 211, 423, 1601, 1602, 1607,
- 312, 1539, 1376, 123, 127, 168, 173, 206, 577, 1388,
- 1564, 1569, 1570, 1579, 1580, 1584, 226, 1583, 1596, 1606,
- 47, 106, 1959, 1959, 1959, 1579, 1581, 1369, 1372, 1373,
- 1580, 1582, 1371, 47, 1827, 1717, 127, 1716, 787, 1355,
- 1352, 42, 763, 1648, 1649, 1227, 734, 1229, 787, 542,
- 709, 727, 85, 1829, 1830, 1831, 1916, 1230, 120, 1235,
- 1234, 860, 281, 143, 581, 1271, 1272, 1273, 657, 436,
- 743, 1965, 1829, 1302, 1827, 779, 873, 946, 968, 1400,
- 114, 975, 973, 287, 1316, 1617, 1618, 1813, 128, 1679,
- 128, 1679, 1680, 1681, 1688, 1689, 1827, 1691, 1827, 141,
- 1622, 863, 863, 863, 1827, 860, 1829, 860, 1615, 1623,
- 1623, 994, 151, 979, 606, 1921, 647, 647, 705, 708,
- 735, 743, 779, 1399, 475, 584, 704, 580, 735, 89,
- 743, 333, 551, 633, 333, 333, 203, 333, 371, 528,
- 669, 551, 287, 203, 782, 779, 283, 427, 178, 414,
- 474, 1633, 1635, 393, 613, 1755, 1756, 360, 178, 392,
- 1769, 1813, 1894, 1895, 311, 1828, 128, 136, 561, 1827,
- 1828, 1828, 1828, 2038, 1827, 311, 1828, 1827, 427, 2033,
- 1995, 1996, 946, 960, 1827, 788, 127, 177, 241, 313,
- 351, 786, 1324, 1458, 19, 20, 30, 1817, 1834, 31,
- 1788, 153, 768, 769, 1425, 779, 779, 779, 311, 1400,
- 1476, 1477, 779, 779, 779, 779, 779, 1399, 1399, 1399,
- 779, 1398, 779, 779, 779, 779, 779, 779, 779, 779,
- 779, 779, 779, 779, 779, 1400, 779, 779, 779, 8,
- 779, 1474, 1475, 1810, 1817, 779, 779, 779, 779, 1400,
- 1398, 779, 779, 779, 779, 779, 779, 779, 779, 779,
- 779, 15, 779, 779, 779, 779, 1399, 1398, 1398, 779,
- 779, 779, 779, 779, 779, 779, 779, 779, 779, 779,
- 779, 779, 779, 779, 31, 779, 779, 779, 779, 779,
- 779, 779, 779, 737, 779, 779, 779, 737, 779, 779,
- 779, 779, 31, 779, 779, 779, 31, 779, 779, 779,
- 779, 779, 779, 779, 779, 153, 1425, 153, 1425, 1425,
- 1125, 1369, 1400, 1794, 1827, 1817, 33, 41, 50, 208,
- 315, 1404, 1405, 35, 36, 37, 39, 156, 763, 764,
- 765, 1408, 55, 151, 167, 238, 677, 1406, 14, 43,
- 44, 107, 192, 766, 767, 768, 769, 770, 771, 772,
- 773, 1425, 73, 38, 213, 213, 751, 1822, 787, 779,
- 15, 1011, 54, 287, 782, 763, 1822, 1328, 1830, 1832,
- 1327, 733, 1921, 584, 203, 128, 203, 1361, 1387, 3,
- 1829, 258, 644, 787, 57, 99, 1168, 1169, 1648, 1829,
- 127, 1648, 1648, 1917, 99, 1817, 1855, 1864, 1852, 57,
- 99, 1171, 1172, 1829, 787, 1648, 1853, 782, 670, 1722,
- 779, 88, 214, 226, 281, 289, 324, 436, 463, 658,
- 735, 743, 167, 312, 1714, 63, 688, 376, 688, 688,
- 318, 688, 435, 688, 1714, 47, 1082, 1829, 1568, 1569,
- 1574, 128, 151, 1709, 1711, 376, 688, 127, 688, 704,
- 676, 47, 355, 399, 401, 491, 541, 588, 678, 700,
- 1697, 1698, 1699, 818, 477, 818, 1574, 1714, 1711, 510,
- 429, 378, 608, 704, 720, 1722, 1393, 688, 740, 143,
- 1268, 1655, 782, 422, 1797, 1798, 1805, 1827, 1634, 1635,
- 1813, 2040, 782, 1333, 1334, 1335, 1336, 1813, 1617, 363,
- 568, 239, 568, 1953, 782, 1400, 803, 57, 270, 416,
+ 675, 676, 677, 678, 681, 682, 684, 685, 686, 687,
+ 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
+ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
+ 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
+ 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ 759, 760, 761, 762, 1830, 1832, 1841, 1848, 1852, 1853,
+ 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 2033, 973,
+ 528, 1328, 208, 1690, 88, 145, 214, 226, 289, 324,
+ 436, 463, 644, 662, 710, 737, 746, 866, 867, 868,
+ 1638, 1000, 864, 938, 1640, 1767, 145, 408, 761, 1781,
+ 281, 706, 1908, 998, 1335, 1133, 1016, 57, 528, 1721,
+ 258, 267, 912, 917, 919, 1841, 653, 737, 1908, 1002,
+ 917, 918, 864, 1370, 1864, 1716, 917, 1913, 1681, 1841,
+ 1368, 999, 235, 1810, 1643, 173, 294, 686, 1750, 40,
+ 196, 1420, 1963, 3, 31, 1835, 145, 1908, 756, 1966,
+ 1625, 482, 1841, 1335, 403, 925, 1915, 810, 598, 676,
+ 1841, 1335, 1757, 1966, 1841, 1773, 47, 669, 719, 47,
+ 669, 1708, 598, 676, 351, 352, 388, 427, 602, 619,
+ 645, 688, 2005, 1369, 1376, 1379, 0, 7, 795, 602,
+ 88, 129, 145, 262, 293, 644, 737, 843, 1211, 1212,
+ 1638, 1976, 1977, 1978, 1979, 128, 154, 1386, 1387, 1620,
+ 1364, 1361, 119, 152, 292, 1378, 1973, 1377, 1973, 448,
+ 460, 591, 791, 1735, 1736, 1827, 1841, 1373, 1375, 386,
+ 1253, 1841, 870, 1841, 766, 766, 870, 141, 1637, 21,
+ 1835, 1841, 1843, 1637, 1279, 1280, 268, 1404, 1980, 1981,
+ 1976, 766, 1908, 1360, 1363, 1639, 1642, 1680, 1689, 1732,
+ 791, 877, 311, 953, 954, 974, 977, 980, 822, 823,
+ 1835, 746, 1325, 1908, 328, 143, 178, 475, 614, 1692,
+ 1705, 1706, 1637, 1628, 63, 1637, 318, 1637, 1637, 1637,
+ 1637, 1637, 1637, 658, 1908, 985, 1841, 2037, 47, 48,
+ 80, 84, 101, 110, 131, 145, 150, 173, 232, 236,
+ 254, 258, 259, 289, 296, 297, 353, 393, 436, 441,
+ 452, 453, 607, 611, 617, 628, 634, 665, 669, 700,
+ 1843, 1927, 1931, 1932, 1933, 1935, 1937, 1938, 1939, 1940,
+ 953, 968, 1645, 471, 675, 1768, 154, 1777, 1906, 77,
+ 123, 130, 144, 157, 165, 246, 247, 321, 351, 374,
+ 444, 463, 582, 894, 939, 940, 941, 942, 944, 947,
+ 950, 951, 952, 962, 963, 964, 965, 966, 987, 990,
+ 1832, 1842, 1855, 1856, 1857, 1861, 2034, 2042, 2043, 2044,
+ 2059, 2060, 2061, 2062, 2064, 1908, 3, 8, 9, 19,
+ 20, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 40, 57, 58, 59, 60, 68, 69, 71,
+ 78, 79, 82, 83, 84, 85, 87, 90, 91, 99,
+ 102, 120, 121, 122, 124, 132, 133, 134, 141, 150,
+ 153, 162, 164, 166, 180, 181, 183, 187, 192, 196,
+ 198, 199, 200, 201, 219, 220, 221, 223, 230, 241,
+ 249, 250, 268, 275, 276, 278, 279, 290, 300, 301,
+ 302, 308, 309, 327, 328, 329, 330, 334, 341, 349,
+ 366, 379, 381, 382, 383, 398, 410, 411, 466, 478,
+ 500, 501, 546, 552, 561, 562, 585, 593, 605, 649,
+ 656, 663, 696, 715, 716, 717, 718, 723, 724, 737,
+ 740, 752, 754, 762, 771, 772, 777, 783, 787, 788,
+ 791, 1379, 1385, 1414, 1415, 1416, 1417, 1421, 1432, 1436,
+ 1437, 1438, 1439, 1440, 1441, 1442, 1446, 1447, 1448, 1456,
+ 1462, 1463, 1464, 1465, 1466, 1468, 1471, 1800, 1803, 1805,
+ 1806, 1807, 1824, 1831, 1833, 1834, 1841, 1848, 1859, 1860,
+ 65, 1017, 510, 250, 362, 370, 385, 395, 396, 397,
+ 405, 543, 555, 655, 695, 709, 920, 922, 740, 913,
+ 919, 1841, 864, 1637, 894, 988, 919, 47, 333, 611,
+ 1924, 1925, 1933, 1935, 47, 106, 264, 266, 277, 293,
+ 474, 681, 682, 683, 684, 1389, 1396, 1397, 1975, 3,
+ 71, 99, 144, 321, 366, 463, 468, 506, 556, 577,
+ 593, 644, 661, 689, 719, 753, 1176, 1830, 1839, 1850,
+ 1852, 1853, 1854, 1856, 1857, 1858, 1861, 1865, 1875, 1886,
+ 2033, 47, 49, 79, 80, 89, 145, 159, 214, 226,
+ 281, 324, 344, 353, 366, 377, 400, 430, 433, 435,
+ 462, 463, 468, 469, 485, 506, 528, 582, 597, 606,
+ 609, 610, 624, 661, 669, 692, 750, 1176, 1210, 1717,
+ 1721, 1722, 1724, 1733, 1832, 1876, 919, 1908, 178, 1688,
+ 783, 1659, 1668, 953, 2039, 1809, 1645, 1751, 1841, 343,
+ 1966, 1843, 1342, 1301, 50, 1967, 1414, 1487, 804, 299,
+ 806, 1740, 417, 1827, 1829, 1841, 1916, 1843, 141, 1076,
+ 1835, 128, 1306, 528, 613, 669, 1758, 1759, 287, 1967,
+ 749, 1774, 670, 822, 232, 314, 1291, 1292, 1293, 670,
+ 822, 281, 1710, 1637, 1637, 23, 26, 27, 31, 1801,
+ 1802, 1836, 2004, 2004, 2004, 460, 2003, 2004, 2004, 784,
+ 784, 790, 1841, 1076, 1076, 145, 1076, 1076, 662, 848,
+ 145, 145, 281, 658, 226, 289, 436, 867, 868, 1980,
+ 337, 865, 865, 1976, 111, 135, 783, 788, 1385, 1388,
+ 1492, 1495, 1507, 1510, 1511, 1512, 1523, 1524, 1525, 1526,
+ 1528, 1529, 1530, 1827, 211, 423, 1615, 1616, 1621, 312,
+ 1553, 1386, 123, 127, 168, 173, 206, 577, 1398, 1578,
+ 1583, 1584, 1593, 1594, 1598, 226, 1597, 1610, 1620, 47,
+ 106, 1974, 1974, 1974, 1593, 1595, 1379, 1382, 1383, 1594,
+ 1596, 1381, 47, 1841, 1731, 127, 1730, 791, 1365, 1362,
+ 42, 766, 1662, 1663, 1236, 736, 1238, 791, 542, 711,
+ 729, 85, 1843, 1844, 1845, 1931, 1239, 120, 1244, 1243,
+ 864, 281, 143, 581, 1281, 1282, 1283, 657, 436, 746,
+ 1980, 1843, 1312, 1841, 783, 880, 953, 975, 1407, 114,
+ 982, 980, 287, 1326, 1631, 1632, 1827, 128, 1694, 128,
+ 1634, 1635, 1694, 1695, 1696, 1828, 1841, 1705, 1841, 141,
+ 1636, 870, 870, 864, 1843, 864, 1629, 1841, 1637, 1637,
+ 1001, 151, 986, 606, 1936, 647, 647, 707, 710, 737,
+ 746, 783, 1413, 475, 584, 706, 580, 737, 80, 89,
+ 746, 333, 551, 633, 333, 333, 203, 333, 371, 528,
+ 669, 551, 287, 203, 786, 783, 283, 427, 178, 414,
+ 474, 1647, 1649, 393, 613, 1769, 1770, 360, 178, 392,
+ 1783, 1827, 1909, 1910, 311, 1842, 128, 136, 561, 1841,
+ 1842, 1842, 1842, 2065, 1841, 311, 1842, 1841, 427, 2060,
+ 2015, 2016, 953, 967, 1841, 792, 127, 177, 241, 313,
+ 351, 790, 1334, 1472, 19, 20, 30, 1831, 1848, 31,
+ 1802, 153, 771, 772, 1439, 783, 783, 783, 311, 1414,
+ 1490, 1491, 783, 783, 783, 783, 783, 1413, 1413, 1413,
+ 783, 1412, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 1414, 783, 783, 783, 8,
+ 783, 1488, 1489, 1824, 1831, 783, 783, 783, 783, 1414,
+ 1412, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 15, 783, 783, 783, 783, 1413, 1412, 1412, 783,
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 31, 783, 783, 783, 783, 783,
+ 783, 783, 783, 740, 783, 783, 783, 740, 783, 783,
+ 783, 783, 31, 783, 783, 783, 31, 783, 783, 783,
+ 783, 783, 783, 783, 783, 153, 1439, 153, 1439, 1439,
+ 1134, 1379, 1414, 1808, 1841, 1831, 33, 41, 50, 208,
+ 315, 1418, 1419, 35, 36, 37, 39, 156, 766, 767,
+ 768, 1422, 55, 151, 167, 238, 677, 1420, 14, 43,
+ 44, 107, 192, 769, 770, 771, 772, 773, 774, 775,
+ 776, 1439, 73, 38, 213, 213, 754, 1836, 791, 783,
+ 15, 1018, 54, 287, 786, 766, 1836, 1338, 1844, 1846,
+ 1337, 735, 1936, 584, 203, 128, 203, 1371, 1397, 3,
+ 1843, 258, 644, 791, 57, 99, 1177, 1178, 1662, 1843,
+ 127, 1662, 1662, 1932, 99, 1831, 1869, 1878, 1866, 57,
+ 99, 1180, 1181, 1843, 791, 1662, 1867, 786, 670, 1736,
+ 783, 88, 214, 226, 281, 289, 324, 436, 463, 658,
+ 737, 746, 167, 312, 1728, 63, 690, 376, 690, 690,
+ 318, 690, 435, 690, 1728, 47, 1091, 1843, 1582, 1583,
+ 1588, 128, 151, 1723, 1725, 376, 690, 127, 690, 706,
+ 676, 47, 355, 399, 401, 491, 541, 588, 678, 702,
+ 1711, 1712, 1713, 822, 477, 822, 1588, 1728, 1725, 510,
+ 429, 378, 608, 706, 722, 1736, 1403, 690, 743, 143,
+ 1278, 1669, 786, 422, 1811, 1812, 1819, 1841, 1648, 1649,
+ 1827, 2067, 786, 1343, 1344, 1345, 1346, 1827, 1631, 363,
+ 568, 239, 568, 1968, 786, 1414, 807, 57, 270, 416,
430, 432, 464, 477, 510, 528, 606, 613, 623, 637,
- 669, 672, 688, 719, 1727, 1732, 1733, 1818, 1893, 3,
- 74, 919, 920, 921, 922, 1817, 582, 232, 374, 1406,
- 1827, 798, 743, 1293, 1893, 1747, 360, 1746, 782, 653,
- 1827, 1953, 127, 1284, 1285, 1284, 580, 755, 394, 782,
- 1284, 1284, 1618, 1827, 1821, 782, 579, 1987, 699, 1988,
- 763, 158, 639, 1986, 7, 792, 1827, 826, 1069, 860,
- 860, 1069, 830, 832, 1069, 1069, 1069, 837, 838, 743,
- 463, 463, 1965, 779, 1478, 1498, 1510, 1511, 1512, 1513,
- 1514, 1827, 10, 1384, 81, 147, 158, 166, 193, 249,
- 277, 1505, 1506, 782, 217, 1507, 1508, 31, 1823, 1823,
- 3, 1603, 1604, 1605, 1827, 1829, 1540, 136, 1543, 1539,
- 454, 561, 1571, 296, 8, 28, 30, 32, 251, 1575,
- 1576, 1789, 1817, 151, 65, 1576, 1568, 1388, 1827, 1388,
- 1389, 1389, 1372, 1718, 393, 1723, 1787, 1827, 1827, 1580,
- 1583, 1821, 99, 386, 1066, 1067, 1079, 1080, 1175, 408,
- 864, 1827, 1399, 3, 864, 1813, 583, 1830, 1831, 1832,
- 1931, 1935, 1623, 1273, 413, 489, 863, 1813, 743, 1303,
- 1304, 1618, 787, 871, 874, 875, 1400, 974, 311, 969,
- 971, 887, 1998, 427, 808, 1617, 127, 364, 448, 450,
- 540, 614, 782, 1319, 1320, 1321, 1813, 54, 1677, 1620,
- 1621, 1814, 1827, 127, 1382, 1383, 1539, 782, 1682, 787,
- 1690, 120, 1827, 787, 1915, 1918, 1832, 1930, 1617, 1616,
- 1613, 422, 2009, 643, 977, 704, 780, 333, 1832, 333,
- 333, 1931, 214, 226, 281, 463, 862, 1919, 353, 393,
- 436, 441, 452, 453, 607, 617, 628, 634, 665, 669,
- 698, 1923, 1925, 1803, 1804, 1817, 962, 141, 1268, 479,
- 735, 1400, 1757, 1757, 1339, 506, 1768, 53, 763, 1535,
- 1536, 1537, 572, 746, 782, 1892, 946, 311, 1827, 561,
- 128, 154, 1994, 2028, 946, 311, 779, 954, 177, 786,
- 936, 782, 986, 984, 989, 985, 2036, 1617, 3, 1459,
- 1829, 787, 779, 47, 1467, 1538, 1467, 1467, 1400, 1477,
- 114, 311, 427, 1400, 1473, 1400, 106, 1467, 1538, 780,
- 24, 25, 26, 28, 30, 32, 780, 1588, 1592, 1593,
- 1400, 1400, 1810, 780, 1364, 1365, 1374, 1794, 92, 93,
- 94, 95, 138, 139, 140, 189, 190, 253, 316, 411,
- 478, 544, 546, 552, 612, 656, 748, 759, 1532, 1533,
- 1400, 106, 1460, 1460, 1447, 1400, 1400, 1400, 1532, 1400,
- 1400, 1400, 1817, 1475, 336, 782, 787, 106, 1467, 1400,
- 106, 1467, 1400, 1400, 1400, 1400, 1400, 780, 1403, 780,
- 1400, 1400, 780, 648, 1467, 1467, 106, 1467, 780, 1588,
- 1467, 1467, 780, 1400, 1400, 1429, 1430, 1431, 64, 163,
- 288, 1400, 1419, 1420, 1421, 1400, 1400, 106, 1467, 1400,
- 1400, 1400, 1415, 1416, 1400, 1400, 1472, 1473, 1400, 1400,
- 409, 410, 713, 716, 1534, 1400, 1400, 1473, 1813, 1400,
- 1400, 127, 1813, 1472, 1400, 127, 1400, 1400, 1813, 1400,
- 1400, 1533, 1533, 1400, 1419, 1400, 780, 8, 787, 1811,
- 1827, 1400, 1472, 1400, 1400, 1400, 780, 782, 1365, 1400,
- 787, 1400, 1400, 1400, 1402, 122, 201, 290, 732, 1406,
- 47, 340, 1402, 1409, 1402, 779, 1375, 1402, 1402, 167,
- 55, 151, 167, 238, 1403, 1403, 1403, 1403, 1403, 1403,
- 1403, 153, 1403, 153, 1403, 1403, 1403, 1403, 1403, 1173,
- 1829, 1425, 779, 1456, 1549, 1827, 779, 136, 328, 329,
- 330, 1817, 1435, 461, 493, 567, 648, 1417, 169, 229,
- 505, 703, 1012, 1016, 1751, 1821, 915, 410, 713, 716,
- 914, 1457, 1791, 1810, 782, 287, 1329, 1330, 1813, 946,
- 782, 127, 1832, 1831, 1932, 862, 1919, 770, 1391, 1392,
- 1394, 468, 506, 661, 1863, 1648, 1918, 1827, 73, 1400,
- 1882, 1881, 1880, 787, 787, 1648, 782, 1854, 232, 492,
- 1883, 1884, 1885, 1886, 1827, 1873, 99, 717, 1817, 1856,
- 1868, 1858, 1859, 1861, 1872, 688, 127, 770, 1069, 63,
- 863, 863, 1813, 863, 318, 863, 863, 863, 1813, 1832,
- 1813, 1393, 1393, 376, 688, 1714, 863, 1714, 1709, 376,
- 688, 1714, 151, 1712, 510, 553, 688, 1706, 1706, 1714,
- 1827, 863, 1714, 1831, 1709, 1714, 1821, 490, 701, 451,
- 127, 1700, 782, 435, 688, 1813, 1711, 1709, 1709, 127,
- 1714, 1714, 1714, 1481, 1665, 1813, 1394, 1657, 1659, 779,
- 1652, 2008, 782, 779, 1801, 154, 1636, 2028, 3, 151,
- 782, 217, 1344, 1346, 1347, 448, 614, 1292, 363, 239,
- 1400, 801, 99, 143, 804, 1400, 1660, 1661, 510, 510,
- 510, 510, 360, 510, 818, 510, 782, 1393, 1728, 1829,
- 914, 924, 782, 763, 1536, 1902, 120, 676, 1400, 1294,
- 1617, 287, 1749, 818, 1745, 1827, 47, 1279, 627, 683,
- 1286, 1287, 127, 820, 821, 673, 1283, 820, 1892, 1787,
- 596, 1989, 1829, 834, 1827, 828, 1915, 1931, 1829, 1069,
- 1069, 823, 1813, 2025, 1394, 1974, 848, 1394, 1069, 1069,
- 1069, 743, 1494, 782, 780, 780, 780, 780, 780, 782,
- 780, 1478, 47, 53, 55, 128, 1385, 1537, 158, 158,
- 210, 1517, 166, 249, 1505, 1517, 1478, 1496, 779, 1384,
- 1608, 1829, 782, 787, 1400, 65, 137, 1541, 1543, 251,
- 649, 1572, 1576, 572, 668, 746, 1390, 1817, 439, 251,
- 577, 782, 787, 664, 1565, 649, 1572, 1597, 1400, 1228,
- 1649, 1067, 73, 1167, 418, 191, 231, 268, 386, 398,
- 498, 568, 866, 868, 1632, 1829, 1632, 1236, 779, 480,
- 242, 782, 1939, 1813, 1233, 1232, 1813, 782, 595, 1305,
- 1827, 873, 780, 782, 283, 946, 971, 68, 108, 142,
- 179, 481, 511, 512, 514, 515, 516, 517, 518, 520,
- 521, 522, 523, 524, 525, 526, 527, 529, 530, 531,
- 532, 625, 626, 809, 810, 817, 127, 1322, 734, 1618,
- 1320, 1507, 703, 782, 1684, 787, 1690, 222, 1563, 1564,
- 1689, 128, 770, 1827, 203, 1827, 782, 782, 67, 244,
- 1274, 1617, 1617, 887, 779, 948, 951, 287, 314, 1914,
- 63, 770, 1813, 1827, 1929, 1929, 780, 782, 887, 1997,
- 1636, 1400, 1832, 1340, 1341, 1342, 1343, 1813, 146, 144,
- 321, 463, 1818, 1824, 1833, 1838, 1839, 1840, 1841, 1842,
- 1843, 1844, 1847, 2001, 178, 232, 755, 1896, 26, 769,
- 1585, 1587, 1895, 941, 946, 154, 649, 1827, 97, 886,
- 2029, 938, 946, 948, 949, 953, 1827, 978, 980, 981,
- 2007, 2028, 1892, 1863, 42, 1817, 1400, 780, 1468, 780,
- 780, 283, 427, 1400, 1400, 53, 299, 780, 299, 782,
- 1443, 780, 770, 780, 782, 782, 780, 780, 1365, 128,
- 780, 1445, 1446, 1400, 782, 782, 782, 769, 780, 782,
- 780, 782, 782, 780, 779, 1810, 1817, 1467, 780, 780,
- 1467, 780, 782, 782, 780, 780, 780, 151, 782, 782,
- 780, 780, 1467, 780, 780, 780, 780, 782, 128, 782,
- 780, 128, 1400, 128, 1400, 128, 1400, 128, 780, 782,
- 780, 1467, 780, 780, 782, 782, 780, 782, 782, 782,
- 780, 780, 780, 782, 780, 780, 782, 780, 780, 780,
- 1813, 780, 780, 780, 1813, 782, 780, 782, 782, 780,
- 782, 782, 782, 780, 780, 782, 1817, 1827, 780, 787,
- 53, 504, 782, 1190, 780, 780, 1532, 1532, 1473, 780,
- 785, 1817, 122, 201, 290, 732, 779, 50, 1400, 434,
- 1402, 1402, 779, 1375, 1402, 1402, 1400, 1400, 1550, 217,
- 1552, 779, 779, 779, 779, 779, 787, 1394, 1439, 1440,
- 1441, 378, 779, 1021, 1022, 1014, 1021, 1015, 591, 1024,
- 160, 472, 1400, 763, 1832, 1832, 782, 1892, 427, 131,
- 1918, 128, 782, 1929, 1929, 782, 1400, 1808, 1817, 787,
- 787, 787, 99, 144, 321, 463, 577, 750, 1818, 1821,
- 1826, 1835, 1838, 1839, 1840, 1841, 1843, 1844, 1847, 2001,
- 1876, 127, 1648, 99, 1173, 1174, 1832, 31, 578, 593,
- 1888, 47, 57, 99, 203, 1400, 1889, 1827, 1827, 1865,
- 1864, 127, 580, 755, 504, 782, 782, 1648, 1889, 787,
- 1857, 787, 1648, 782, 782, 1860, 1400, 780, 1827, 863,
- 863, 1821, 1400, 863, 1714, 1714, 863, 1714, 1821, 128,
- 1713, 860, 1714, 613, 1574, 1699, 1712, 820, 1709, 1813,
- 1714, 1714, 1400, 258, 1507, 1661, 780, 782, 1653, 887,
- 1798, 1802, 1804, 53, 1637, 1638, 886, 1829, 99, 1337,
- 1827, 1335, 1813, 1007, 1346, 145, 160, 1199, 1348, 802,
- 782, 100, 1738, 818, 1733, 1617, 1734, 922, 925, 926,
- 921, 573, 574, 650, 923, 454, 561, 1827, 1903, 1904,
- 1821, 1617, 448, 614, 736, 1297, 1298, 1299, 1587, 47,
- 1748, 670, 782, 365, 1278, 1695, 782, 127, 1990, 1065,
- 1066, 299, 723, 1211, 1827, 314, 1913, 1939, 845, 1827,
- 1827, 1813, 825, 863, 2020, 1069, 1069, 1813, 863, 1827,
- 863, 1069, 1400, 1478, 1478, 785, 576, 713, 717, 1380,
- 1381, 1427, 1381, 158, 1517, 1517, 1509, 158, 203, 299,
- 1531, 1827, 1536, 1167, 1170, 1604, 1827, 1400, 1544, 1809,
- 1542, 750, 1546, 1541, 314, 580, 1573, 1572, 507, 1587,
- 1576, 1577, 439, 1576, 1576, 1817, 549, 1566, 1809, 123,
- 779, 1065, 1821, 1649, 1649, 557, 268, 268, 657, 1821,
- 268, 268, 268, 182, 360, 406, 484, 547, 563, 564,
- 568, 569, 570, 636, 686, 841, 842, 88, 476, 586,
- 593, 599, 674, 735, 846, 847, 65, 314, 742, 1933,
- 270, 369, 494, 566, 695, 756, 1927, 1928, 1935, 314,
- 1942, 1892, 203, 856, 1241, 779, 1967, 1231, 1304, 127,
- 872, 1400, 1998, 972, 763, 763, 763, 763, 763, 763,
- 763, 763, 763, 763, 763, 763, 763, 763, 763, 763,
- 763, 763, 763, 763, 763, 763, 763, 763, 763, 782,
- 820, 734, 1381, 1621, 1827, 299, 1827, 576, 168, 1578,
- 1481, 787, 1690, 1813, 1918, 1832, 1892, 427, 898, 899,
- 952, 34, 1931, 333, 787, 787, 287, 287, 1803, 963,
- 1637, 782, 1344, 1346, 1823, 755, 506, 392, 24, 25,
- 28, 30, 32, 942, 154, 76, 77, 144, 443, 444,
- 463, 750, 892, 893, 895, 901, 928, 929, 1818, 1838,
- 1839, 1840, 1841, 1842, 1843, 1844, 1847, 2001, 2003, 2014,
- 2030, 427, 2033, 786, 939, 950, 780, 782, 987, 976,
- 982, 1828, 982, 982, 886, 1826, 1400, 782, 1400, 1400,
- 283, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 57, 58, 59, 60, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 87, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 128, 129, 130, 131,
- 132, 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, 177,
- 178, 179, 180, 181, 182, 183, 187, 189, 190, 191,
- 192, 193, 194, 196, 197, 198, 199, 200, 201, 203,
- 204, 205, 206, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 259, 260, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 280, 281, 282, 283, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 328, 329, 330, 409, 410, 559,
- 577, 666, 716, 739, 1131, 1469, 1470, 1471, 1818, 1837,
- 1838, 1839, 1840, 1841, 1842, 1847, 1848, 1999, 2000, 2001,
- 1168, 1168, 1469, 1473, 780, 153, 153, 1400, 1473, 1473,
- 782, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1403, 787,
- 780, 780, 1400, 1400, 1400, 1400, 1400, 780, 1400, 1400,
- 1400, 1400, 128, 1400, 128, 1400, 128, 1400, 153, 1400,
- 780, 1416, 1400, 1415, 1473, 1400, 1400, 1400, 1473, 28,
- 768, 1585, 1589, 153, 1400, 1400, 1400, 1400, 1400, 787,
- 787, 1827, 57, 71, 1185, 1186, 1187, 1188, 1189, 1588,
- 1587, 780, 769, 769, 1374, 1402, 780, 782, 1402, 50,
- 1400, 434, 1532, 1532, 1551, 1827, 65, 780, 1453, 1472,
- 1400, 1431, 1472, 1400, 1421, 1472, 1472, 1817, 1400, 780,
- 782, 779, 1030, 1403, 1022, 168, 1060, 1061, 1588, 697,
- 1025, 338, 1017, 1013, 914, 287, 1330, 287, 241, 584,
- 1930, 1831, 128, 128, 1392, 1395, 1395, 787, 787, 787,
- 1648, 1400, 1832, 1875, 1648, 779, 779, 1648, 1648, 1889,
- 793, 232, 632, 659, 1887, 1885, 1884, 1874, 1827, 1883,
- 1827, 1869, 1858, 1859, 1868, 433, 747, 1585, 1590, 1704,
- 30, 1713, 1539, 1709, 1670, 1671, 1811, 1382, 1395, 1394,
- 1656, 1658, 1661, 427, 780, 779, 1630, 1619, 1813, 427,
- 1345, 779, 1661, 763, 820, 127, 314, 1729, 1730, 763,
- 782, 36, 37, 454, 499, 561, 604, 763, 764, 765,
- 1905, 1907, 1539, 127, 128, 1300, 1298, 820, 1287, 1821,
- 733, 1288, 1994, 2004, 1587, 545, 358, 472, 652, 1217,
- 1217, 203, 1211, 333, 1942, 126, 203, 203, 824, 840,
- 841, 2021, 1975, 863, 835, 2027, 641, 2026, 1813, 782,
- 1381, 31, 1403, 50, 287, 1478, 1509, 158, 158, 1478,
- 1509, 1499, 1500, 780, 782, 1526, 1527, 1169, 1609, 16,
- 17, 782, 1545, 51, 104, 1567, 1400, 1456, 1547, 1548,
- 1546, 712, 1573, 1577, 1390, 782, 1567, 1571, 1394, 1598,
- 1599, 1600, 1174, 1169, 408, 408, 413, 489, 1649, 1649,
- 65, 1649, 1651, 1649, 182, 547, 314, 1649, 1650, 1650,
- 842, 1237, 1821, 1821, 1821, 1821, 1587, 1821, 1821, 780,
- 782, 31, 593, 1829, 1936, 1937, 31, 31, 31, 50,
- 1926, 533, 534, 537, 538, 539, 1940, 1941, 331, 593,
- 1240, 1226, 390, 654, 240, 1242, 1827, 1968, 53, 1967,
- 47, 378, 1306, 873, 283, 779, 779, 1587, 779, 1587,
- 1587, 1821, 1821, 1590, 1821, 1587, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1587, 1821, 404, 568, 671, 1792, 122,
- 290, 1587, 1595, 1821, 1587, 810, 787, 1481, 1690, 1393,
- 251, 1576, 245, 1686, 1539, 1892, 1274, 127, 900, 780,
- 1400, 951, 314, 1944, 584, 770, 770, 1931, 1931, 113,
- 114, 115, 964, 1627, 1342, 1813, 1346, 143, 1349, 1764,
- 56, 57, 61, 62, 71, 96, 109, 125, 153, 155,
- 174, 175, 176, 184, 185, 186, 202, 234, 258, 261,
- 284, 285, 286, 306, 307, 354, 356, 357, 373, 409,
- 410, 431, 455, 496, 558, 559, 574, 575, 616, 649,
- 710, 713, 716, 723, 739, 759, 1129, 1131, 1132, 1133,
- 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
- 470, 74, 86, 782, 786, 1400, 949, 2009, 427, 787,
- 1400, 1400, 779, 1150, 1151, 1153, 1153, 779, 1146, 1147,
- 1151, 779, 1147, 1155, 95, 155, 1151, 1150, 1152, 1154,
- 1153, 155, 1154, 1151, 780, 780, 780, 780, 1444, 1400,
- 1400, 780, 206, 1462, 1462, 1400, 782, 782, 780, 782,
- 780, 780, 780, 151, 1436, 1437, 1817, 780, 780, 780,
- 780, 780, 782, 127, 782, 1400, 1400, 1400, 1400, 780,
- 780, 53, 1410, 780, 53, 780, 780, 780, 28, 30,
- 30, 780, 782, 1400, 780, 780, 782, 782, 780, 1817,
- 1827, 787, 779, 1180, 1180, 51, 104, 643, 768, 1182,
- 1183, 1184, 782, 782, 1400, 1400, 780, 1473, 1402, 780,
- 782, 1402, 1552, 1544, 206, 1455, 780, 780, 780, 780,
- 780, 780, 779, 1395, 1441, 1018, 1019, 1020, 1827, 780,
- 1590, 153, 65, 779, 1032, 763, 779, 1022, 1832, 1813,
- 128, 1932, 1932, 53, 1396, 1821, 1827, 770, 1817, 1827,
- 1827, 1877, 1889, 1888, 31, 31, 1867, 1866, 387, 726,
- 232, 1889, 1648, 1648, 1889, 24, 25, 28, 30, 32,
- 1574, 1705, 1714, 782, 1668, 1648, 1536, 1661, 780, 782,
- 313, 1364, 11, 12, 258, 1002, 1364, 1639, 1641, 1644,
- 1507, 779, 225, 1528, 1529, 1530, 1827, 779, 1731, 232,
- 250, 362, 370, 385, 395, 396, 397, 405, 543, 555,
- 640, 655, 693, 707, 927, 926, 1906, 1574, 734, 554,
- 513, 817, 1289, 1813, 203, 1831, 1240, 408, 1813, 1813,
- 11, 13, 18, 145, 167, 215, 272, 273, 274, 292,
- 346, 348, 368, 386, 393, 408, 415, 430, 487, 497,
- 535, 548, 587, 593, 651, 658, 690, 705, 706, 718,
- 998, 1000, 1071, 1073, 1074, 1076, 1078, 1079, 1080, 1087,
- 1818, 1071, 779, 883, 863, 849, 1967, 779, 885, 96,
- 155, 234, 692, 1085, 885, 836, 1495, 1381, 1381, 203,
- 1502, 1509, 1509, 203, 1504, 1400, 779, 1007, 1827, 1524,
- 1525, 378, 1771, 1809, 53, 782, 1809, 1572, 1576, 1400,
- 780, 782, 1589, 1589, 1589, 1589, 1589, 1589, 1632, 847,
- 31, 53, 299, 1934, 1938, 208, 1927, 1587, 1587, 1587,
- 1792, 768, 1585, 1586, 1940, 173, 294, 1238, 446, 46,
- 48, 49, 70, 72, 78, 110, 173, 204, 206, 217,
- 240, 338, 375, 419, 420, 426, 438, 459, 483, 550,
- 618, 629, 630, 631, 722, 1005, 1072, 1074, 1245, 1250,
- 1252, 1255, 1261, 1262, 1263, 1265, 1266, 1560, 1406, 1950,
- 342, 437, 850, 287, 419, 426, 852, 780, 782, 1969,
- 1970, 53, 47, 779, 1307, 1998, 813, 814, 1587, 815,
- 816, 1587, 811, 812, 1587, 1827, 1539, 1827, 439, 251,
- 1687, 1683, 1350, 1794, 131, 1939, 1939, 961, 1997, 961,
- 1639, 1349, 502, 143, 328, 1770, 1153, 1153, 391, 1151,
- 1159, 1161, 1146, 224, 1146, 1159, 57, 71, 73, 306,
- 341, 359, 730, 1134, 1139, 1141, 1161, 1167, 1176, 1178,
- 1134, 1159, 1134, 1146, 779, 1159, 1134, 1153, 1153, 1134,
- 1153, 779, 1146, 1159, 71, 307, 307, 310, 1146, 1153,
- 723, 779, 891, 1153, 1153, 1153, 576, 1153, 1153, 894,
- 1146, 310, 1153, 1153, 1153, 1153, 1153, 1155, 127, 127,
- 2031, 1827, 988, 976, 1827, 24, 28, 30, 32, 1177,
- 1178, 30, 30, 1152, 1177, 1177, 780, 1532, 1532, 65,
- 256, 1461, 168, 1464, 1465, 780, 1400, 1400, 1473, 193,
- 357, 780, 314, 1438, 1400, 1400, 1400, 1532, 96, 109,
- 125, 155, 234, 295, 409, 410, 558, 559, 716, 1139,
- 1140, 1411, 1412, 1413, 1414, 1469, 1595, 1532, 1400, 1400,
- 1827, 1588, 780, 1190, 1185, 1183, 1185, 1186, 1587, 780,
- 1473, 206, 1553, 65, 780, 1472, 1396, 780, 782, 347,
- 1063, 1400, 1016, 217, 1033, 1034, 1035, 1588, 1018, 1932,
- 1821, 1827, 787, 1648, 1648, 1889, 780, 780, 1889, 1889,
- 1871, 1870, 1574, 1671, 1539, 99, 1660, 1526, 1395, 1661,
- 780, 1642, 1643, 1806, 1807, 1811, 1827, 1794, 1640, 1686,
- 1644, 47, 1251, 1259, 1260, 1827, 780, 782, 1590, 1739,
- 1740, 447, 173, 779, 763, 782, 827, 1813, 754, 831,
- 833, 75, 594, 787, 1088, 1089, 1090, 1091, 1099, 1100,
- 1105, 1106, 1107, 1199, 1202, 1203, 1812, 1827, 167, 741,
- 418, 1813, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
- 1649, 1649, 418, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
- 1649, 1649, 1649, 421, 541, 1827, 1649, 1649, 1003, 1004,
- 1005, 782, 1073, 999, 1648, 884, 865, 54, 335, 996,
- 203, 53, 876, 877, 641, 676, 641, 1967, 22, 29,
- 31, 1479, 1501, 299, 1503, 299, 1531, 143, 298, 459,
- 1519, 1520, 1523, 117, 118, 205, 282, 1772, 1773, 170,
- 1774, 1567, 1549, 1548, 1567, 1573, 1572, 1395, 1600, 593,
- 1821, 1936, 30, 30, 593, 99, 153, 560, 1239, 75,
- 217, 384, 594, 702, 1091, 1099, 1100, 1267, 1199, 1267,
- 217, 1267, 217, 217, 281, 287, 75, 126, 217, 594,
- 702, 1104, 1199, 1267, 1649, 217, 65, 1007, 53, 287,
- 384, 763, 1199, 1276, 1649, 217, 159, 705, 159, 217,
- 705, 1267, 217, 592, 217, 217, 217, 1072, 782, 1004,
- 1250, 779, 1090, 603, 1400, 1400, 203, 856, 863, 203,
- 386, 857, 1827, 1632, 1364, 1969, 1308, 485, 780, 782,
- 780, 782, 780, 782, 1685, 128, 439, 1391, 1632, 584,
- 314, 1943, 1943, 203, 1662, 154, 1159, 1158, 1648, 1159,
- 295, 317, 666, 1148, 1149, 1149, 1176, 99, 1173, 1159,
- 1134, 1177, 1168, 57, 73, 391, 1162, 1149, 1223, 1787,
- 1159, 1223, 1149, 310, 1149, 1159, 576, 889, 890, 1827,
- 2006, 99, 1994, 2013, 1134, 888, 928, 1134, 1149, 2013,
- 237, 1145, 1177, 57, 1179, 1134, 1159, 1149, 1149, 896,
- 904, 905, 1587, 779, 897, 982, 780, 780, 780, 780,
- 782, 780, 780, 1463, 1809, 1787, 1464, 1466, 1575, 780,
- 780, 782, 780, 498, 549, 613, 780, 780, 1146, 155,
- 1154, 71, 1154, 1177, 780, 780, 782, 780, 780, 780,
- 1181, 780, 782, 780, 65, 229, 251, 1554, 1555, 1809,
- 780, 1020, 1532, 160, 472, 780, 782, 1036, 780, 770,
- 1879, 1878, 1889, 1889, 820, 1563, 406, 1799, 780, 782,
- 787, 1365, 1646, 1647, 1811, 1632, 780, 782, 1529, 780,
- 782, 50, 1741, 1658, 1821, 817, 779, 829, 1829, 779,
- 779, 1222, 1812, 10, 127, 1101, 1827, 780, 782, 72,
- 126, 225, 293, 1103, 1198, 1105, 1069, 1199, 1200, 1200,
- 1108, 787, 1813, 1649, 99, 1587, 1594, 99, 1587, 99,
- 1587, 99, 1587, 1075, 1590, 1587, 1587, 1821, 1821, 1649,
- 1587, 1829, 454, 499, 568, 1084, 1587, 1590, 1590, 99,
- 1587, 1821, 99, 389, 391, 425, 455, 588, 622, 1083,
- 1594, 1587, 1594, 1001, 1770, 1073, 1071, 26, 28, 30,
- 32, 99, 1591, 1592, 1821, 1827, 148, 151, 212, 879,
- 880, 881, 882, 1827, 2015, 2016, 2017, 866, 867, 1950,
- 2022, 101, 150, 296, 997, 654, 1969, 780, 878, 2016,
- 1980, 1981, 1821, 1980, 53, 31, 378, 1482, 1400, 779,
- 1400, 779, 780, 1199, 1199, 1520, 65, 65, 117, 65,
- 1773, 271, 282, 1775, 1776, 1573, 779, 446, 30, 331,
- 141, 1069, 141, 1068, 741, 1068, 1622, 1622, 1325, 1622,
- 1251, 1260, 1813, 1167, 1622, 160, 1623, 10, 1622, 741,
- 225, 1622, 1622, 99, 1827, 1325, 1561, 1562, 1811, 1006,
- 1622, 1622, 1813, 99, 1827, 1325, 1260, 1622, 1325, 1325,
- 1325, 1251, 46, 78, 110, 1263, 1086, 1088, 335, 454,
- 1275, 1532, 669, 1821, 422, 1243, 314, 1971, 1632, 1311,
- 1827, 47, 779, 1309, 814, 816, 812, 1632, 1403, 131,
- 1940, 1945, 1946, 424, 1686, 281, 1827, 317, 295, 99,
- 1173, 1158, 780, 782, 780, 888, 780, 782, 1129, 1400,
- 2013, 787, 763, 1179, 209, 265, 269, 902, 903, 904,
- 907, 1406, 1827, 878, 127, 30, 782, 1567, 780, 1400,
- 549, 445, 1590, 780, 1587, 1566, 780, 55, 403, 410,
- 713, 716, 725, 1556, 1557, 1791, 1567, 685, 1062, 1017,
- 779, 1023, 1035, 1037, 1827, 1889, 1889, 1578, 1800, 1806,
- 770, 1827, 780, 782, 1648, 1260, 1740, 419, 780, 1219,
- 1221, 1827, 779, 583, 1219, 1219, 779, 1827, 1089, 779,
- 160, 160, 1200, 1069, 236, 1192, 1222, 1827, 1069, 1069,
+ 669, 672, 690, 721, 1741, 1746, 1747, 1832, 1908, 3,
+ 74, 926, 927, 928, 929, 1831, 582, 232, 374, 1420,
+ 1841, 802, 746, 1303, 1908, 1761, 360, 1760, 786, 653,
+ 1841, 1968, 127, 1294, 1295, 1294, 580, 758, 394, 786,
+ 1294, 1294, 1632, 1841, 1835, 786, 579, 2007, 701, 2008,
+ 766, 158, 639, 2006, 7, 796, 1841, 830, 1076, 864,
+ 864, 1076, 834, 836, 1076, 1076, 1076, 841, 842, 1076,
+ 1076, 746, 463, 463, 1980, 783, 1492, 1512, 1524, 1525,
+ 1526, 1527, 1528, 1841, 10, 1394, 81, 147, 158, 166,
+ 193, 249, 277, 1519, 1520, 786, 217, 1521, 1522, 31,
+ 1837, 1837, 3, 1617, 1618, 1619, 1841, 1843, 1554, 136,
+ 1557, 1553, 454, 561, 1585, 296, 8, 28, 30, 32,
+ 251, 1589, 1590, 1803, 1831, 151, 65, 1590, 1582, 1398,
+ 1841, 1398, 1399, 1399, 1382, 1732, 393, 1737, 1801, 1841,
+ 1841, 1594, 1597, 1835, 99, 386, 1073, 1074, 1088, 1089,
+ 1184, 408, 871, 1841, 1413, 3, 871, 1827, 583, 1844,
+ 1845, 1846, 1946, 1950, 1637, 1283, 413, 489, 870, 1827,
+ 746, 1313, 1314, 1632, 791, 878, 881, 882, 1414, 981,
+ 311, 976, 978, 1414, 894, 2018, 427, 812, 1631, 127,
+ 364, 448, 450, 540, 614, 786, 1329, 1330, 1331, 1827,
+ 54, 1691, 1634, 1841, 786, 1698, 127, 1392, 1393, 1553,
+ 791, 1704, 120, 1841, 1930, 1933, 1846, 1945, 1631, 791,
+ 1630, 1627, 422, 2041, 643, 984, 706, 784, 333, 647,
+ 1846, 333, 333, 1946, 281, 866, 1934, 353, 393, 436,
+ 441, 452, 453, 607, 617, 628, 634, 665, 669, 700,
+ 1938, 1940, 1817, 1818, 1831, 969, 141, 1278, 479, 737,
+ 1414, 1771, 1771, 1349, 506, 1782, 53, 766, 1549, 1550,
+ 1551, 572, 749, 786, 1907, 953, 311, 1841, 561, 128,
+ 154, 2014, 2055, 953, 311, 783, 961, 177, 790, 943,
+ 786, 993, 991, 996, 992, 2063, 1631, 3, 1473, 1843,
+ 791, 783, 47, 1481, 1552, 1481, 1481, 1414, 1491, 114,
+ 311, 427, 1414, 1487, 1414, 106, 1481, 1552, 784, 24,
+ 25, 26, 28, 30, 32, 784, 1602, 1606, 1607, 1414,
+ 1414, 1824, 784, 1374, 1375, 1384, 1808, 92, 93, 94,
+ 95, 138, 139, 140, 189, 190, 253, 316, 411, 478,
+ 544, 546, 552, 612, 656, 751, 762, 1546, 1547, 1414,
+ 106, 1474, 1474, 1461, 1414, 1414, 1414, 1546, 1414, 1414,
+ 1414, 1831, 1489, 336, 786, 791, 106, 1481, 1414, 106,
+ 1481, 1414, 1414, 1414, 1414, 1414, 784, 1417, 784, 1414,
+ 1414, 784, 648, 1481, 1481, 106, 1481, 784, 1602, 1481,
+ 1481, 784, 1414, 1414, 1443, 1444, 1445, 64, 163, 288,
+ 1414, 1433, 1434, 1435, 1414, 1414, 106, 1481, 1414, 1414,
+ 1414, 1429, 1430, 1414, 1414, 1486, 1487, 1414, 1414, 409,
+ 410, 715, 718, 1548, 1414, 1414, 1487, 1827, 1414, 1414,
+ 127, 1827, 1486, 1414, 127, 1414, 1414, 1827, 1414, 1414,
+ 1547, 1547, 1414, 1433, 1414, 784, 8, 791, 1825, 1841,
+ 1414, 1486, 1414, 1414, 1414, 784, 786, 1375, 1414, 791,
+ 1414, 1414, 1414, 1416, 122, 201, 290, 734, 1420, 47,
+ 340, 1416, 1423, 1416, 783, 1385, 1416, 1416, 167, 55,
+ 151, 167, 238, 1417, 1417, 1417, 1417, 1417, 1417, 1417,
+ 153, 1417, 153, 1417, 1417, 1417, 1417, 1417, 1182, 1843,
+ 1439, 783, 1470, 1563, 1841, 783, 136, 328, 329, 330,
+ 1831, 1449, 461, 493, 567, 648, 1431, 169, 229, 505,
+ 705, 1019, 1023, 1765, 1835, 922, 410, 715, 718, 921,
+ 1471, 1805, 1824, 786, 287, 1339, 1340, 1827, 953, 786,
+ 127, 1846, 1845, 1947, 866, 1934, 773, 1401, 1402, 1404,
+ 468, 506, 661, 1877, 1662, 1933, 1841, 73, 1414, 1896,
+ 1895, 1894, 791, 791, 1662, 786, 1868, 232, 492, 1897,
+ 1898, 1899, 1900, 1841, 1887, 99, 719, 1831, 1870, 1882,
+ 1872, 1873, 1875, 1886, 690, 127, 773, 1076, 63, 870,
+ 870, 1827, 870, 318, 870, 870, 870, 1827, 1846, 1827,
+ 1403, 1403, 376, 690, 1728, 870, 1728, 1723, 376, 690,
+ 1728, 151, 1726, 510, 553, 690, 1720, 1720, 1728, 1841,
+ 870, 1728, 1845, 1723, 1728, 1835, 490, 703, 451, 127,
+ 1714, 786, 435, 690, 1827, 1725, 1723, 1723, 127, 1728,
+ 1728, 1728, 1495, 1679, 1827, 1404, 1671, 1673, 783, 1666,
+ 2040, 786, 783, 1815, 154, 1650, 2055, 3, 151, 786,
+ 217, 1354, 1356, 1357, 448, 614, 1302, 363, 239, 1414,
+ 805, 99, 143, 808, 1414, 1674, 1675, 510, 510, 510,
+ 510, 360, 510, 822, 510, 786, 1403, 1742, 1843, 921,
+ 931, 786, 766, 1550, 1917, 120, 676, 1414, 1304, 1631,
+ 287, 1763, 822, 1759, 1841, 47, 1289, 627, 685, 1296,
+ 1297, 127, 824, 825, 673, 1293, 824, 1907, 1801, 596,
+ 2009, 1843, 838, 1841, 832, 1930, 1946, 1843, 1076, 1076,
+ 827, 1827, 2083, 1404, 1989, 852, 1404, 870, 870, 1076,
+ 1076, 1076, 746, 1508, 786, 784, 784, 784, 784, 784,
+ 786, 784, 1492, 47, 53, 55, 128, 1395, 1551, 158,
+ 158, 210, 1531, 166, 249, 1519, 1531, 1492, 1510, 783,
+ 1394, 1622, 1843, 786, 791, 1414, 65, 137, 1555, 1557,
+ 251, 649, 1586, 1590, 572, 668, 749, 1400, 1831, 439,
+ 251, 577, 786, 791, 664, 1579, 649, 1586, 1611, 1414,
+ 1237, 1663, 1074, 73, 1176, 418, 191, 231, 268, 386,
+ 398, 498, 568, 873, 875, 1646, 1843, 1646, 1245, 783,
+ 480, 242, 786, 1954, 1827, 1242, 1241, 1827, 786, 595,
+ 1315, 1841, 880, 784, 786, 283, 953, 978, 1405, 68,
+ 108, 142, 179, 481, 511, 512, 514, 515, 516, 517,
+ 518, 520, 521, 522, 523, 524, 525, 526, 527, 529,
+ 530, 531, 532, 625, 626, 813, 814, 821, 127, 1332,
+ 736, 1632, 1330, 1521, 705, 1693, 1700, 791, 1635, 128,
+ 222, 1577, 1578, 773, 1841, 203, 786, 786, 67, 244,
+ 1284, 1841, 1631, 1631, 894, 783, 955, 958, 287, 314,
+ 1929, 773, 1827, 1841, 1944, 1944, 784, 786, 894, 2017,
+ 1650, 1414, 1846, 1350, 1351, 1352, 1353, 1827, 146, 144,
+ 321, 463, 1832, 1838, 1847, 1852, 1853, 1854, 1855, 1856,
+ 1857, 1858, 1861, 2033, 178, 232, 758, 1911, 26, 772,
+ 1599, 1601, 1910, 948, 953, 154, 649, 1841, 97, 893,
+ 2056, 945, 953, 955, 956, 960, 1841, 985, 987, 988,
+ 2039, 2055, 1907, 1877, 42, 1831, 1414, 784, 1482, 784,
+ 784, 283, 427, 1414, 1414, 53, 299, 784, 299, 786,
+ 1457, 784, 773, 784, 786, 786, 784, 784, 1375, 128,
+ 784, 1459, 1460, 1414, 786, 786, 786, 772, 784, 786,
+ 784, 786, 786, 784, 783, 1824, 1831, 1481, 784, 784,
+ 1481, 784, 786, 786, 784, 784, 784, 151, 786, 786,
+ 784, 784, 1481, 784, 784, 784, 784, 786, 128, 786,
+ 784, 128, 1414, 128, 1414, 128, 1414, 128, 784, 786,
+ 784, 1481, 784, 784, 786, 786, 784, 786, 786, 786,
+ 784, 784, 784, 786, 784, 784, 786, 784, 784, 784,
+ 1827, 784, 784, 784, 1827, 786, 784, 786, 786, 784,
+ 786, 786, 786, 784, 784, 786, 1831, 1841, 784, 791,
+ 53, 504, 786, 1199, 784, 784, 1546, 1546, 1487, 784,
+ 789, 1831, 122, 201, 290, 734, 783, 50, 1414, 434,
+ 1416, 1416, 783, 1385, 1416, 1416, 1414, 1414, 1564, 217,
+ 1566, 783, 783, 783, 783, 783, 791, 1404, 1453, 1454,
+ 1455, 378, 783, 1028, 1029, 1021, 1028, 1022, 591, 1031,
+ 160, 472, 1414, 766, 1846, 1846, 786, 1907, 427, 131,
+ 1933, 128, 786, 1944, 1944, 786, 1414, 1822, 1831, 791,
+ 791, 791, 99, 144, 321, 463, 577, 753, 1832, 1835,
+ 1840, 1849, 1852, 1853, 1854, 1855, 1857, 1858, 1861, 2033,
+ 1890, 127, 1662, 99, 1182, 1183, 1846, 31, 578, 593,
+ 1902, 1406, 1903, 1841, 1841, 1879, 1878, 127, 580, 758,
+ 504, 786, 786, 1662, 1903, 791, 1871, 791, 1662, 786,
+ 786, 1874, 1414, 784, 1841, 870, 870, 1835, 1414, 870,
+ 1728, 1728, 870, 1728, 1835, 128, 1727, 864, 1728, 613,
+ 1588, 1713, 1726, 824, 1723, 1827, 1728, 1728, 1414, 258,
+ 1521, 1675, 784, 786, 1667, 894, 1812, 1816, 1818, 53,
+ 1651, 1652, 893, 1843, 99, 1347, 1841, 1345, 1827, 1014,
+ 1356, 145, 160, 1208, 1358, 806, 786, 100, 1752, 822,
+ 1747, 1631, 1748, 929, 932, 933, 928, 573, 574, 650,
+ 930, 454, 561, 1841, 1918, 1919, 1835, 1631, 448, 614,
+ 738, 1307, 1308, 1309, 1601, 47, 1762, 670, 786, 365,
+ 1288, 1709, 786, 127, 2010, 1072, 1073, 299, 725, 1220,
+ 1841, 314, 1928, 1954, 849, 1841, 1841, 1827, 829, 870,
+ 2052, 1076, 1076, 2000, 2001, 2000, 1827, 870, 1841, 870,
+ 1076, 1414, 1492, 1492, 789, 576, 715, 719, 1390, 1391,
+ 1441, 1391, 158, 1531, 1531, 1523, 158, 203, 299, 1545,
+ 1841, 1550, 1176, 1179, 1618, 1841, 1414, 1558, 1823, 1556,
+ 753, 1560, 1555, 314, 580, 1587, 1586, 507, 1601, 1590,
+ 1591, 439, 1590, 1590, 1831, 549, 1580, 1823, 123, 783,
+ 1072, 1835, 1663, 1663, 557, 268, 268, 657, 1835, 268,
+ 268, 268, 182, 360, 406, 484, 547, 563, 564, 568,
+ 569, 570, 636, 688, 845, 846, 88, 476, 586, 593,
+ 599, 674, 737, 850, 851, 65, 314, 745, 1948, 270,
+ 369, 494, 566, 697, 759, 1942, 1943, 1950, 314, 1957,
+ 1907, 203, 860, 1250, 783, 1982, 1240, 1314, 127, 879,
+ 1414, 2018, 979, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 786, 824,
+ 736, 1391, 1646, 299, 1841, 1495, 576, 168, 1592, 791,
+ 1704, 1827, 1933, 1846, 1907, 427, 905, 906, 959, 34,
+ 1946, 333, 791, 791, 287, 287, 1817, 970, 1651, 786,
+ 1354, 1356, 1837, 758, 506, 392, 24, 25, 28, 30,
+ 32, 949, 154, 76, 77, 144, 443, 444, 463, 753,
+ 899, 900, 902, 908, 935, 936, 1832, 1852, 1853, 1854,
+ 1855, 1856, 1857, 1858, 1861, 2033, 2035, 2046, 2057, 427,
+ 2060, 790, 946, 957, 784, 786, 994, 983, 989, 1842,
+ 989, 989, 893, 1840, 1414, 786, 1414, 1414, 283, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 57, 58, 59, 60, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 87, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 128, 129, 130, 131, 132, 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, 177, 178, 179,
+ 180, 181, 182, 183, 187, 189, 190, 191, 192, 193,
+ 194, 196, 197, 198, 199, 200, 201, 203, 204, 205,
+ 206, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 259,
+ 260, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 280, 281,
+ 282, 283, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 328, 329, 330, 409, 410, 559, 577, 666,
+ 718, 742, 1140, 1483, 1484, 1485, 1832, 1851, 1852, 1853,
+ 1854, 1855, 1856, 1861, 1862, 2031, 2032, 2033, 1177, 1177,
+ 1483, 1487, 784, 153, 153, 1414, 1487, 1487, 786, 1414,
+ 1414, 1414, 1414, 1414, 1414, 1414, 1417, 791, 784, 784,
+ 1414, 1414, 1414, 1414, 1414, 784, 1414, 1414, 1414, 1414,
+ 128, 1414, 128, 1414, 128, 1414, 153, 1414, 784, 1430,
+ 1414, 1429, 1487, 1414, 1414, 1414, 1487, 28, 771, 1599,
+ 1603, 153, 1414, 1414, 1414, 1414, 1414, 791, 791, 1841,
+ 57, 71, 1194, 1195, 1196, 1197, 1198, 1602, 1601, 784,
+ 772, 772, 1384, 1416, 784, 786, 1416, 50, 1414, 434,
+ 1546, 1546, 1565, 1841, 65, 784, 1467, 1486, 1414, 1445,
+ 1486, 1414, 1435, 1486, 1486, 1831, 1414, 784, 786, 783,
+ 1037, 1417, 1029, 168, 1067, 1068, 1602, 699, 1032, 338,
+ 1024, 1020, 921, 287, 1340, 287, 241, 584, 1945, 1845,
+ 128, 128, 1402, 1405, 1405, 791, 791, 791, 1662, 1406,
+ 1846, 1889, 1662, 783, 783, 47, 57, 99, 203, 1414,
+ 1904, 1662, 1662, 1903, 797, 232, 632, 659, 1901, 1899,
+ 1898, 1888, 1841, 1897, 1841, 1883, 1872, 1873, 1882, 433,
+ 750, 1599, 1604, 1718, 30, 1727, 1553, 1723, 1684, 1685,
+ 1825, 1392, 1405, 1404, 1670, 1672, 1675, 427, 784, 783,
+ 1644, 1633, 1827, 427, 1355, 783, 1675, 766, 824, 127,
+ 314, 1743, 1744, 766, 786, 36, 37, 454, 499, 561,
+ 604, 766, 767, 768, 1920, 1922, 1553, 127, 128, 1310,
+ 1308, 824, 1297, 1835, 735, 1298, 2014, 2036, 1601, 545,
+ 358, 472, 652, 1226, 1226, 203, 1220, 333, 1957, 126,
+ 203, 203, 828, 844, 845, 2053, 1990, 870, 2086, 386,
+ 875, 1997, 1998, 1999, 2087, 839, 2085, 641, 2084, 1827,
+ 786, 1391, 31, 1417, 50, 287, 1492, 1523, 158, 158,
+ 1492, 1523, 1513, 1514, 784, 786, 1540, 1541, 1178, 1623,
+ 16, 17, 786, 1559, 51, 104, 1581, 1414, 1470, 1561,
+ 1562, 1560, 714, 1587, 1591, 1400, 786, 1581, 1585, 1404,
+ 1612, 1613, 1614, 1183, 1178, 408, 408, 413, 489, 1663,
+ 1663, 65, 1663, 1665, 1663, 182, 547, 314, 1663, 1664,
+ 1664, 846, 1246, 1835, 1835, 1835, 1835, 1601, 1835, 1835,
+ 784, 786, 31, 593, 1843, 1951, 1952, 31, 31, 31,
+ 50, 1941, 533, 534, 537, 538, 539, 1955, 1956, 331,
+ 593, 1249, 1235, 390, 654, 240, 1251, 1841, 1983, 53,
+ 1982, 47, 378, 1316, 880, 283, 783, 783, 1601, 783,
+ 1601, 1601, 1835, 1835, 1604, 1835, 1601, 1835, 1835, 1835,
+ 1835, 1835, 1835, 1835, 1601, 1835, 404, 568, 671, 1806,
+ 122, 290, 1601, 1609, 1835, 1601, 814, 1495, 1553, 1403,
+ 251, 1590, 245, 1702, 1907, 1284, 127, 907, 784, 1406,
+ 958, 314, 1959, 584, 773, 773, 1946, 1946, 113, 114,
+ 115, 971, 1641, 1352, 1827, 1356, 143, 1359, 1778, 56,
+ 57, 61, 62, 71, 96, 109, 125, 153, 155, 174,
+ 175, 176, 184, 185, 186, 202, 234, 258, 261, 284,
+ 285, 286, 306, 307, 354, 356, 357, 373, 409, 410,
+ 431, 455, 496, 558, 559, 574, 575, 616, 649, 712,
+ 715, 718, 725, 742, 762, 1138, 1140, 1141, 1142, 1144,
+ 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 470,
+ 74, 86, 786, 790, 1406, 956, 2041, 427, 791, 1414,
+ 1414, 783, 1159, 1160, 1162, 1162, 783, 1155, 1156, 1160,
+ 783, 1156, 1164, 95, 155, 1160, 1159, 1161, 1163, 1162,
+ 155, 1163, 1160, 784, 784, 784, 784, 1458, 1414, 1414,
+ 784, 206, 1476, 1476, 1414, 786, 786, 784, 786, 784,
+ 784, 784, 151, 1450, 1451, 1831, 784, 784, 784, 784,
+ 784, 786, 127, 786, 1414, 1414, 1414, 1414, 784, 784,
+ 53, 1424, 784, 53, 784, 784, 784, 28, 30, 30,
+ 784, 786, 1414, 784, 784, 786, 786, 784, 1831, 1841,
+ 791, 783, 1189, 1189, 51, 104, 643, 771, 1191, 1192,
+ 1193, 786, 786, 1414, 1414, 784, 1487, 1416, 784, 786,
+ 1416, 1566, 1558, 206, 1469, 784, 784, 784, 784, 784,
+ 784, 783, 1405, 1455, 1025, 1026, 1027, 1841, 784, 1604,
+ 153, 65, 783, 1039, 766, 783, 1029, 1846, 1827, 128,
+ 1947, 1947, 53, 1410, 1835, 1841, 773, 1831, 1841, 1841,
+ 1891, 1414, 1903, 1902, 31, 31, 1405, 1405, 1405, 1881,
+ 1880, 387, 728, 232, 1903, 1662, 1662, 1903, 24, 25,
+ 28, 30, 32, 1588, 1719, 1728, 786, 1682, 1662, 1550,
+ 1675, 784, 786, 313, 1374, 11, 12, 258, 1009, 1374,
+ 1653, 1655, 1658, 1521, 783, 225, 1542, 1543, 1544, 1841,
+ 783, 1745, 232, 250, 362, 370, 385, 395, 396, 397,
+ 405, 543, 555, 640, 655, 695, 709, 934, 933, 1921,
+ 1588, 736, 554, 513, 679, 680, 821, 1299, 1827, 203,
+ 1845, 1249, 408, 1827, 1827, 11, 13, 18, 145, 167,
+ 215, 272, 273, 274, 292, 346, 348, 368, 386, 393,
+ 408, 415, 430, 487, 497, 535, 548, 587, 593, 617,
+ 651, 658, 692, 707, 708, 720, 757, 1005, 1007, 1078,
+ 1080, 1081, 1083, 1084, 1085, 1087, 1088, 1089, 1096, 1832,
+ 1078, 783, 890, 870, 853, 2019, 1835, 1997, 2019, 1982,
+ 783, 892, 2024, 96, 155, 234, 694, 1094, 2024, 840,
+ 1509, 1391, 1391, 203, 1516, 1523, 1523, 203, 1518, 1414,
+ 783, 1014, 1841, 1538, 1539, 378, 1785, 1823, 53, 786,
+ 1823, 1586, 1590, 1414, 784, 786, 1603, 1603, 1603, 1603,
+ 1603, 1603, 1646, 851, 31, 53, 299, 1949, 1953, 208,
+ 1942, 1601, 1601, 1601, 1806, 771, 1599, 1600, 1955, 173,
+ 294, 1247, 446, 46, 48, 49, 70, 72, 78, 110,
+ 173, 204, 206, 217, 240, 338, 375, 419, 420, 426,
+ 438, 459, 483, 550, 618, 629, 630, 631, 724, 1012,
+ 1079, 1081, 1254, 1259, 1261, 1264, 1270, 1271, 1272, 1275,
+ 1276, 1574, 1420, 1965, 342, 437, 854, 287, 419, 426,
+ 856, 784, 786, 1984, 1985, 53, 47, 783, 1317, 2018,
+ 817, 818, 1601, 819, 820, 1601, 815, 816, 1601, 1553,
+ 1699, 1841, 439, 251, 1703, 1697, 1404, 1414, 131, 1954,
+ 1954, 968, 2017, 968, 1653, 1359, 502, 143, 328, 1784,
+ 1162, 1162, 391, 1160, 1168, 1170, 1155, 224, 1155, 1168,
+ 57, 71, 73, 306, 341, 359, 732, 1143, 1148, 1150,
+ 1170, 1176, 1185, 1187, 1143, 1168, 1143, 1155, 783, 1168,
+ 1143, 1162, 1162, 1143, 1162, 783, 1155, 1168, 71, 307,
+ 307, 310, 1155, 1162, 725, 783, 898, 1162, 1162, 1162,
+ 576, 1162, 1162, 901, 1155, 310, 1162, 1162, 1162, 1162,
+ 1162, 1164, 127, 127, 2058, 1841, 1414, 995, 983, 1841,
+ 24, 28, 30, 32, 1186, 1187, 30, 30, 1161, 1186,
+ 1186, 784, 1546, 1546, 65, 256, 1475, 168, 1478, 1479,
+ 784, 1414, 1414, 1487, 193, 357, 784, 314, 1452, 1414,
+ 1414, 1414, 1546, 96, 109, 125, 155, 234, 295, 409,
+ 410, 558, 559, 718, 1148, 1149, 1425, 1426, 1427, 1428,
+ 1483, 1609, 1546, 1414, 1414, 1841, 1602, 784, 1199, 1194,
+ 1192, 1194, 1195, 1601, 784, 1487, 206, 1567, 65, 784,
+ 1486, 1410, 784, 786, 347, 1070, 1414, 1023, 217, 1040,
+ 1041, 1042, 1602, 1025, 1947, 1835, 1841, 791, 1662, 1662,
+ 1903, 1405, 784, 784, 1903, 1903, 1885, 1884, 1588, 1685,
+ 1553, 99, 1674, 1540, 1405, 1675, 784, 1656, 1657, 1820,
+ 1821, 1825, 1841, 1808, 1654, 1702, 1658, 47, 1260, 1268,
+ 1269, 1841, 784, 786, 1604, 1753, 1754, 447, 173, 783,
+ 766, 766, 766, 786, 831, 1827, 757, 835, 837, 75,
+ 594, 791, 1097, 1098, 1099, 1100, 1108, 1109, 1114, 1115,
+ 1116, 1208, 1211, 1212, 1826, 1841, 167, 744, 418, 1827,
+ 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
+ 418, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
+ 1663, 421, 541, 1841, 1663, 1663, 1010, 1011, 1012, 786,
+ 1080, 1662, 1006, 891, 872, 54, 335, 1003, 203, 226,
+ 463, 2014, 2079, 2080, 2081, 97, 226, 463, 2027, 2028,
+ 2029, 2068, 2069, 2074, 2081, 53, 883, 884, 641, 2026,
+ 676, 2026, 1982, 22, 29, 31, 1493, 1515, 299, 1517,
+ 299, 1545, 143, 298, 459, 1533, 1534, 1537, 117, 118,
+ 205, 282, 1786, 1787, 170, 1788, 1581, 1563, 1562, 1581,
+ 1587, 1586, 1405, 1614, 593, 1835, 1951, 30, 30, 593,
+ 99, 153, 560, 1248, 75, 217, 384, 594, 704, 1100,
+ 1108, 1109, 1277, 1208, 1277, 217, 1277, 217, 217, 281,
+ 287, 75, 126, 217, 594, 704, 1113, 1208, 1277, 1663,
+ 217, 65, 1014, 53, 287, 384, 766, 1208, 1286, 1663,
+ 217, 159, 707, 159, 217, 707, 1277, 217, 592, 217,
+ 217, 217, 1079, 786, 1011, 1259, 783, 1099, 603, 1414,
+ 1414, 203, 860, 870, 203, 386, 861, 1841, 1646, 1374,
+ 1984, 1318, 485, 784, 786, 784, 786, 784, 786, 1701,
+ 1646, 128, 439, 1401, 1646, 1360, 1808, 1405, 584, 314,
+ 1958, 1958, 203, 1676, 154, 1168, 1167, 1662, 1168, 295,
+ 317, 666, 1157, 1158, 1158, 1185, 99, 1182, 1168, 1143,
+ 1186, 1177, 57, 73, 391, 1171, 1158, 1232, 1801, 1168,
+ 1232, 1158, 310, 1158, 1168, 576, 896, 897, 1841, 2038,
+ 99, 2014, 2045, 1143, 895, 935, 1143, 1158, 2045, 237,
+ 1154, 1186, 57, 1188, 1143, 1168, 1158, 1158, 903, 911,
+ 912, 1601, 783, 904, 1405, 989, 784, 784, 784, 784,
+ 786, 784, 784, 1477, 1823, 1801, 1478, 1480, 1589, 784,
+ 784, 786, 784, 498, 549, 613, 784, 784, 1155, 155,
+ 1163, 71, 1163, 1186, 784, 784, 786, 784, 784, 784,
+ 1190, 784, 786, 784, 65, 229, 251, 1568, 1569, 1823,
+ 784, 1027, 1546, 160, 472, 784, 786, 1043, 784, 773,
+ 1893, 1892, 1903, 1903, 824, 1577, 406, 1813, 784, 786,
+ 791, 1375, 1660, 1661, 1825, 1646, 784, 786, 1543, 784,
+ 786, 50, 1755, 1672, 1835, 1835, 1835, 821, 783, 833,
+ 1843, 783, 783, 1231, 1826, 10, 127, 1110, 1841, 784,
+ 786, 72, 126, 225, 293, 1112, 1207, 1114, 1076, 1208,
+ 1209, 1209, 1117, 791, 1827, 1663, 99, 1601, 1608, 99,
+ 1601, 99, 1601, 99, 1601, 1082, 1604, 1601, 1601, 1835,
+ 1835, 1663, 1601, 1843, 454, 499, 568, 1093, 1601, 1604,
+ 1604, 99, 1601, 1835, 99, 389, 391, 425, 455, 588,
+ 622, 1092, 1608, 1601, 1608, 1008, 1784, 1080, 26, 28,
+ 30, 32, 99, 1605, 1606, 1835, 1841, 1078, 148, 151,
+ 212, 886, 887, 888, 889, 1841, 2047, 2048, 2049, 873,
+ 874, 1965, 2054, 101, 150, 296, 1004, 654, 1409, 2072,
+ 1409, 2070, 427, 2081, 900, 935, 2072, 2070, 893, 2030,
+ 2027, 2069, 2074, 1984, 784, 885, 2048, 1995, 1996, 872,
+ 2050, 1835, 2050, 53, 31, 378, 1496, 1414, 783, 1414,
+ 783, 784, 1208, 1208, 1534, 65, 65, 117, 65, 1787,
+ 271, 282, 1789, 1790, 1587, 783, 446, 30, 331, 141,
+ 1076, 141, 1075, 744, 1075, 1636, 1636, 1335, 1636, 1260,
+ 1269, 1827, 1176, 1636, 160, 1637, 10, 1636, 744, 225,
+ 1636, 1636, 99, 1841, 1335, 1575, 1576, 1825, 1013, 1636,
+ 1636, 1827, 99, 1841, 1335, 1269, 1636, 1335, 1335, 1335,
+ 1260, 46, 78, 110, 1272, 1095, 1097, 335, 454, 1285,
+ 1546, 669, 1835, 422, 1252, 314, 1986, 1646, 1321, 1841,
+ 47, 783, 1319, 818, 820, 816, 1646, 1417, 1405, 131,
+ 1955, 1960, 1961, 424, 1702, 281, 1841, 317, 295, 99,
+ 1182, 1167, 784, 786, 784, 895, 784, 786, 1138, 1406,
+ 2045, 791, 766, 1188, 209, 265, 269, 909, 910, 911,
+ 914, 1420, 1841, 885, 127, 30, 786, 1581, 784, 1414,
+ 549, 445, 1604, 784, 1601, 1580, 784, 55, 403, 410,
+ 715, 718, 727, 1570, 1571, 1805, 1581, 687, 1069, 1024,
+ 783, 1030, 1042, 1044, 1841, 1903, 1903, 1592, 1814, 1820,
+ 773, 1841, 784, 786, 1662, 1269, 1754, 419, 784, 1228,
+ 1230, 1841, 783, 583, 1228, 1228, 783, 1841, 1098, 783,
+ 160, 160, 1209, 1076, 236, 1201, 1231, 1841, 1076, 1076,
144, 354, 356, 357, 373, 409, 410, 431, 455, 496,
- 558, 559, 574, 575, 616, 660, 710, 713, 716, 739,
- 759, 928, 1109, 1130, 1132, 1818, 1838, 1839, 1840, 1841,
- 1842, 1847, 2001, 1827, 780, 1821, 779, 1821, 53, 1064,
- 1003, 780, 782, 879, 649, 723, 1129, 105, 2033, 203,
- 850, 782, 865, 2018, 1129, 2018, 1969, 779, 780, 1531,
- 1531, 127, 1518, 1518, 1787, 1787, 65, 1787, 65, 65,
- 1776, 31, 1239, 411, 1238, 1406, 1325, 1406, 1101, 1827,
- 1812, 1251, 1812, 1247, 287, 1249, 1169, 1812, 1622, 1259,
- 127, 160, 1812, 1812, 1251, 782, 1567, 1010, 1827, 1812,
- 1588, 314, 1107, 1251, 1256, 1251, 780, 1827, 851, 858,
- 859, 72, 361, 506, 780, 782, 1310, 287, 584, 1946,
- 1663, 1632, 1813, 1177, 1787, 1177, 2013, 889, 1827, 30,
- 782, 2033, 461, 780, 899, 780, 1809, 780, 780, 780,
- 725, 1557, 1558, 1791, 649, 601, 440, 1559, 601, 1791,
- 1063, 779, 1030, 1026, 99, 303, 304, 403, 475, 1038,
- 1669, 1804, 787, 1647, 1661, 367, 780, 782, 1567, 779,
- 1219, 779, 780, 780, 1827, 779, 1400, 1069, 1222, 1827,
- 1813, 299, 1210, 723, 1222, 1222, 1111, 787, 1102, 1103,
- 1110, 787, 1734, 1002, 1001, 2016, 723, 891, 576, 6,
- 843, 1394, 855, 856, 2016, 2019, 195, 1483, 1484, 1827,
- 1536, 780, 780, 136, 158, 206, 1522, 1521, 1787, 1787,
- 1787, 780, 120, 1253, 120, 144, 196, 1218, 110, 258,
- 1107, 1319, 281, 287, 73, 1812, 1827, 1274, 1246, 1562,
- 287, 287, 281, 1275, 1257, 1259, 1248, 685, 853, 2033,
- 584, 72, 72, 1827, 225, 1312, 1313, 1827, 1403, 160,
- 1507, 787, 903, 1567, 458, 50, 458, 136, 403, 568,
- 712, 1028, 1029, 1827, 780, 696, 1031, 1040, 711, 145,
- 386, 393, 408, 535, 548, 565, 705, 1054, 1055, 1056,
- 1059, 1076, 1708, 1632, 244, 770, 1892, 1221, 30, 782,
- 1220, 846, 1892, 1892, 782, 1827, 780, 1222, 1210, 723,
- 779, 1193, 1217, 1092, 1217, 1094, 1095, 18, 225, 293,
- 386, 495, 752, 1076, 1112, 1113, 1122, 1164, 1165, 1166,
- 1191, 1406, 1132, 73, 99, 201, 203, 346, 465, 660,
- 1116, 1118, 1156, 1157, 1165, 1827, 780, 1077, 1078, 576,
- 1827, 1976, 852, 2032, 218, 780, 782, 1485, 65, 65,
- 779, 779, 1812, 591, 779, 1254, 144, 99, 99, 1275,
- 1813, 217, 1174, 1325, 1827, 1812, 1813, 1258, 1297, 1400,
- 428, 854, 843, 584, 584, 780, 782, 296, 1765, 1827,
- 1558, 649, 209, 323, 780, 782, 1588, 779, 1042, 1044,
- 1039, 418, 1649, 1649, 418, 1649, 1649, 1649, 1649, 779,
- 1049, 1056, 430, 299, 386, 497, 723, 744, 1076, 1204,
- 1207, 1212, 1213, 1214, 1218, 1567, 780, 1827, 780, 780,
- 314, 1205, 1209, 1213, 1216, 1206, 1208, 1213, 1215, 1827,
- 782, 1098, 1096, 1217, 1194, 1827, 180, 1195, 779, 1093,
- 779, 779, 160, 1821, 702, 1165, 741, 160, 201, 1173,
- 19, 20, 768, 769, 779, 1126, 1127, 1128, 1375, 1422,
- 1790, 296, 339, 99, 53, 391, 1157, 1163, 1827, 787,
- 1813, 857, 843, 1479, 1484, 127, 1133, 1135, 1136, 1137,
- 1487, 1488, 1528, 1530, 1103, 1588, 1033, 1128, 1007, 1035,
- 1007, 154, 1400, 1313, 1664, 1170, 1027, 1029, 779, 1043,
- 1044, 1045, 182, 1041, 1044, 1649, 1821, 1821, 1649, 1591,
- 1591, 1588, 1829, 697, 1050, 1051, 1649, 1217, 1821, 1649,
- 1217, 1264, 1265, 1266, 1214, 752, 1892, 589, 1264, 1216,
- 1264, 1215, 780, 1827, 779, 779, 1097, 780, 782, 462,
- 590, 667, 203, 1196, 1219, 779, 1219, 1219, 426, 1160,
- 1792, 1792, 1125, 198, 737, 649, 1126, 1158, 1156, 787,
- 1827, 127, 422, 1486, 207, 120, 218, 780, 780, 780,
- 779, 1672, 1673, 1811, 1766, 1031, 780, 782, 182, 1047,
- 1048, 1403, 1821, 1821, 1052, 780, 782, 1081, 1829, 1587,
- 1266, 1265, 585, 1204, 1818, 780, 1219, 1219, 779, 1827,
- 101, 296, 780, 1219, 780, 780, 780, 779, 1397, 427,
- 686, 1117, 1827, 787, 1394, 858, 1482, 218, 1479, 1033,
- 782, 1648, 251, 1777, 1044, 782, 1046, 1053, 1829, 1051,
- 1264, 780, 1220, 1219, 67, 244, 258, 568, 1197, 1197,
- 1204, 780, 1205, 1206, 780, 1588, 1114, 1115, 1164, 1114,
- 595, 691, 745, 1119, 1827, 1977, 1479, 99, 201, 432,
- 1489, 1490, 1491, 1492, 780, 1673, 1661, 480, 1771, 1048,
- 780, 1057, 1058, 1059, 1192, 780, 1220, 99, 201, 332,
- 203, 203, 1204, 780, 1164, 1120, 1121, 1122, 112, 24,
- 25, 28, 30, 1479, 1480, 203, 1490, 1492, 1490, 1491,
- 65, 1774, 1059, 1204, 780, 296, 101, 1122, 649, 116,
- 432, 203, 203, 1787, 143, 1778, 1204, 1197, 1197, 1978,
- 30, 779, 1780, 457, 600, 1972, 1973, 170, 251, 1779,
- 3, 780, 1781, 1782, 1811, 258, 1783, 1829, 1979, 1829,
- 780, 782, 1784, 1785, 1811, 1632, 2033, 1782, 782, 1648,
- 843, 1785, 1394, 1661, 1395
+ 558, 559, 574, 575, 616, 660, 712, 715, 718, 742,
+ 762, 935, 1118, 1139, 1141, 1832, 1852, 1853, 1854, 1855,
+ 1856, 1861, 2033, 1841, 784, 1835, 783, 1835, 53, 1071,
+ 1010, 784, 786, 886, 649, 725, 1138, 105, 2060, 203,
+ 854, 1841, 790, 1841, 790, 1408, 790, 2019, 2077, 2019,
+ 2075, 427, 2088, 786, 1138, 2051, 2022, 2022, 1984, 783,
+ 784, 1545, 1545, 127, 1532, 1532, 1801, 1801, 65, 1801,
+ 65, 65, 1790, 31, 1248, 411, 1247, 1420, 1335, 1420,
+ 1110, 1841, 1826, 1260, 1826, 1256, 287, 1258, 1178, 1826,
+ 1636, 1268, 127, 160, 1826, 1826, 1260, 786, 1581, 1017,
+ 1841, 1826, 1602, 314, 1116, 1260, 1265, 1260, 784, 1841,
+ 855, 862, 863, 72, 361, 506, 784, 786, 1320, 287,
+ 584, 1961, 1677, 1646, 1827, 1186, 1801, 1186, 2045, 896,
+ 1414, 1841, 30, 786, 2060, 461, 784, 906, 784, 1823,
+ 784, 784, 784, 727, 1571, 1572, 1805, 649, 601, 440,
+ 1573, 601, 1805, 1070, 783, 1037, 1033, 99, 303, 304,
+ 403, 475, 1045, 1683, 1818, 791, 1661, 1675, 367, 784,
+ 786, 1581, 783, 1228, 783, 784, 784, 1841, 783, 1414,
+ 1076, 1231, 1841, 1827, 299, 1219, 725, 1231, 1231, 1120,
+ 791, 1111, 1112, 1119, 791, 1748, 1009, 1008, 2048, 725,
+ 898, 576, 6, 847, 1404, 859, 860, 2073, 2071, 2022,
+ 1409, 790, 1409, 790, 1408, 2048, 2059, 195, 1497, 1498,
+ 1841, 1550, 784, 784, 136, 158, 206, 1536, 1535, 1801,
+ 1801, 1801, 784, 120, 1262, 120, 144, 196, 1227, 110,
+ 258, 1116, 1329, 281, 287, 73, 1826, 1841, 1284, 1255,
+ 1576, 287, 287, 281, 1285, 1266, 1268, 1257, 687, 857,
+ 2060, 584, 72, 72, 1841, 225, 1322, 1323, 1841, 1417,
+ 160, 1521, 1405, 791, 910, 1581, 458, 50, 458, 136,
+ 403, 568, 714, 1035, 1036, 1841, 784, 698, 1038, 1047,
+ 713, 145, 386, 393, 408, 535, 548, 565, 707, 1061,
+ 1062, 1063, 1066, 1083, 1722, 1646, 244, 773, 1907, 1230,
+ 30, 786, 1229, 850, 1907, 1907, 786, 1841, 784, 1231,
+ 1219, 725, 783, 1202, 1226, 1101, 1226, 1103, 1104, 18,
+ 225, 293, 386, 495, 755, 1083, 1121, 1122, 1131, 1173,
+ 1174, 1175, 1200, 1420, 1141, 73, 99, 201, 203, 346,
+ 465, 660, 1125, 1127, 1165, 1166, 1174, 1841, 784, 1086,
+ 1087, 576, 1841, 1991, 856, 890, 2025, 2024, 2078, 2076,
+ 2022, 847, 218, 784, 786, 1499, 65, 65, 783, 783,
+ 1826, 591, 783, 1263, 144, 99, 99, 1285, 1827, 217,
+ 1183, 1335, 1841, 1826, 1827, 1267, 1307, 1414, 428, 858,
+ 847, 584, 584, 784, 786, 296, 1779, 1841, 1572, 649,
+ 209, 323, 784, 786, 1602, 783, 1049, 1051, 1046, 418,
+ 1663, 1663, 418, 1663, 1663, 1663, 1663, 783, 1056, 1063,
+ 430, 299, 386, 497, 725, 747, 1083, 1213, 1216, 1221,
+ 1222, 1223, 1227, 1581, 784, 1841, 784, 784, 314, 1214,
+ 1218, 1222, 1225, 1215, 1217, 1222, 1224, 1841, 786, 1107,
+ 1105, 1226, 1203, 1841, 180, 1204, 783, 1102, 783, 783,
+ 160, 1835, 704, 1174, 744, 160, 201, 1182, 19, 20,
+ 771, 772, 783, 1135, 1136, 1137, 1385, 1436, 1804, 296,
+ 339, 99, 53, 391, 1166, 1172, 1841, 791, 1827, 861,
+ 872, 2026, 2021, 2060, 2020, 2059, 1493, 1498, 127, 1142,
+ 1144, 1145, 1146, 1501, 1502, 1542, 1544, 1112, 1602, 1040,
+ 1137, 314, 755, 1273, 1042, 1273, 154, 1414, 1323, 1678,
+ 1179, 1034, 1036, 783, 1050, 1051, 1052, 182, 1048, 1051,
+ 1663, 1835, 1835, 1663, 1605, 1605, 1602, 1843, 699, 1057,
+ 1058, 1663, 1226, 1835, 1663, 1226, 1274, 1275, 1276, 1223,
+ 755, 1907, 589, 1274, 1225, 1274, 1224, 784, 1841, 783,
+ 783, 1106, 784, 786, 462, 590, 667, 203, 1205, 1228,
+ 783, 1228, 1228, 426, 1169, 1806, 1806, 1134, 198, 740,
+ 649, 1135, 1167, 1165, 791, 1841, 127, 422, 872, 6,
+ 2023, 2023, 1500, 207, 120, 218, 784, 784, 784, 739,
+ 739, 1014, 1273, 1014, 783, 1686, 1687, 1825, 1780, 1038,
+ 784, 786, 182, 1054, 1055, 1417, 1835, 1835, 1059, 784,
+ 786, 1090, 1843, 1601, 1276, 1275, 585, 1213, 1832, 784,
+ 1228, 1228, 783, 1841, 101, 296, 784, 1228, 784, 784,
+ 784, 783, 1411, 427, 688, 1126, 1841, 791, 1404, 862,
+ 1496, 218, 1493, 1014, 1040, 786, 1662, 251, 1791, 1051,
+ 786, 1053, 1060, 1843, 1058, 1274, 784, 1229, 1228, 67,
+ 244, 258, 568, 1206, 1206, 1213, 784, 1214, 1215, 784,
+ 1602, 1123, 1124, 1173, 1123, 595, 693, 748, 1128, 1841,
+ 1992, 1493, 99, 201, 432, 1503, 1504, 1505, 1506, 784,
+ 1687, 1675, 480, 1785, 1055, 784, 1064, 1065, 1066, 1201,
+ 784, 1229, 99, 201, 332, 203, 203, 1213, 784, 1173,
+ 1129, 1130, 1131, 112, 24, 25, 28, 30, 1493, 1494,
+ 203, 1504, 1506, 1504, 1505, 65, 1788, 1066, 1213, 784,
+ 296, 101, 1131, 649, 116, 432, 203, 203, 1801, 143,
+ 1792, 1213, 1206, 1206, 1993, 30, 783, 1794, 457, 600,
+ 1987, 1988, 170, 251, 1793, 3, 784, 1795, 1796, 1825,
+ 258, 1797, 1843, 1994, 1843, 784, 786, 1798, 1799, 1825,
+ 1646, 2060, 1796, 786, 1662, 847, 1799, 1404, 1675, 1405
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int16 yyr1[] =
{
- 0, 789, 790, 791, 790, 790, 792, 792, 793, 793,
- 793, 794, 794, 794, 794, 794, 794, 794, 794, 794,
- 794, 794, 794, 794, 794, 794, 794, 794, 794, 794,
- 794, 794, 794, 794, 794, 794, 794, 794, 794, 794,
- 794, 794, 794, 794, 794, 794, 794, 794, 794, 794,
- 794, 794, 794, 794, 794, 794, 794, 794, 794, 794,
- 794, 794, 794, 794, 794, 794, 794, 794, 794, 794,
- 794, 795, 796, 796, 798, 797, 799, 800, 801, 799,
- 802, 803, 802, 804, 804, 806, 805, 808, 807, 809,
- 809, 810, 810, 810, 810, 810, 810, 810, 810, 810,
- 810, 810, 810, 810, 810, 810, 810, 810, 810, 810,
- 810, 811, 811, 811, 812, 813, 813, 813, 814, 815,
- 815, 815, 816, 817, 817, 817, 817, 817, 817, 817,
- 817, 818, 818, 819, 820, 820, 821, 823, 824, 822,
- 825, 822, 826, 827, 822, 828, 829, 822, 830, 831,
- 822, 832, 833, 822, 834, 822, 835, 822, 836, 822,
- 837, 822, 838, 822, 822, 822, 839, 822, 822, 840,
- 840, 841, 841, 842, 842, 842, 842, 842, 842, 842,
- 842, 842, 842, 842, 842, 842, 842, 843, 843, 845,
- 844, 846, 846, 847, 847, 847, 847, 847, 847, 847,
- 849, 848, 851, 850, 850, 852, 852, 852, 852, 853,
- 853, 854, 854, 855, 855, 856, 857, 857, 859, 858,
- 860, 861, 861, 862, 862, 862, 862, 863, 863, 864,
- 864, 865, 865, 866, 866, 866, 866, 866, 866, 866,
- 867, 867, 868, 868, 870, 869, 871, 869, 872, 869,
- 873, 873, 874, 874, 875, 875, 876, 877, 876, 878,
- 878, 879, 880, 880, 881, 881, 882, 882, 882, 884,
- 883, 885, 886, 886, 887, 887, 888, 888, 888, 889,
- 890, 890, 891, 892, 894, 893, 893, 893, 896, 895,
- 897, 897, 898, 900, 899, 901, 901, 901, 901, 902,
- 902, 903, 904, 904, 905, 906, 906, 907, 907, 907,
- 907, 907, 907, 908, 908, 909, 910, 910, 911, 911,
- 912, 912, 913, 913, 914, 914, 914, 915, 915, 915,
- 915, 915, 915, 915, 915, 915, 915, 915, 915, 915,
- 916, 917, 918, 918, 919, 919, 920, 920, 921, 922,
- 922, 923, 923, 923, 924, 925, 925, 926, 927, 927,
- 927, 927, 927, 927, 927, 927, 927, 927, 927, 927,
- 927, 927, 928, 928, 929, 929, 931, 930, 933, 932,
- 934, 934, 936, 935, 935, 937, 937, 938, 937, 939,
- 937, 940, 940, 941, 940, 942, 940, 943, 944, 945,
- 947, 946, 948, 950, 949, 952, 951, 953, 953, 954,
- 954, 955, 955, 955, 956, 957, 957, 957, 958, 958,
- 959, 960, 960, 962, 963, 961, 964, 964, 964, 964,
- 966, 965, 968, 967, 967, 969, 969, 970, 970, 972,
- 971, 974, 973, 975, 975, 976, 976, 977, 977, 978,
- 979, 979, 979, 980, 981, 982, 984, 983, 985, 983,
- 986, 987, 988, 983, 989, 983, 991, 990, 992, 990,
- 993, 994, 990, 995, 990, 996, 996, 997, 997, 997,
- 999, 998, 998, 998, 1000, 1000, 1001, 1001, 1002, 1002,
- 1003, 1004, 1004, 1006, 1005, 1007, 1009, 1008, 1011, 1010,
- 1012, 1013, 1012, 1012, 1012, 1014, 1012, 1012, 1015, 1012,
- 1016, 1016, 1017, 1017, 1018, 1018, 1019, 1019, 1020, 1021,
- 1022, 1023, 1024, 1024, 1025, 1026, 1025, 1027, 1025, 1028,
- 1028, 1029, 1030, 1031, 1031, 1032, 1032, 1033, 1033, 1034,
- 1034, 1036, 1035, 1037, 1038, 1039, 1038, 1040, 1038, 1038,
- 1038, 1038, 1041, 1041, 1042, 1042, 1043, 1043, 1045, 1046,
- 1044, 1047, 1047, 1048, 1048, 1049, 1049, 1050, 1050, 1052,
- 1051, 1053, 1054, 1054, 1055, 1055, 1056, 1056, 1057, 1057,
- 1058, 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
- 1059, 1060, 1061, 1060, 1060, 1062, 1062, 1063, 1063, 1064,
- 1064, 1065, 1065, 1066, 1066, 1067, 1067, 1067, 1068, 1068,
- 1069, 1069, 1070, 1070, 1071, 1071, 1072, 1072, 1073, 1073,
- 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
- 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
- 1074, 1075, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
- 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1076, 1076, 1076,
- 1076, 1077, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1083,
- 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084, 1085, 1085,
- 1085, 1085, 1086, 1087, 1088, 1088, 1089, 1089, 1089, 1089,
- 1089, 1090, 1090, 1092, 1091, 1093, 1091, 1094, 1091, 1095,
- 1091, 1096, 1091, 1097, 1091, 1098, 1091, 1099, 1100, 1101,
- 1102, 1102, 1103, 1104, 1104, 1105, 1105, 1106, 1108, 1107,
- 1110, 1109, 1111, 1109, 1112, 1112, 1113, 1113, 1114, 1114,
- 1115, 1115, 1116, 1116, 1116, 1116, 1117, 1116, 1116, 1116,
- 1118, 1118, 1119, 1119, 1119, 1119, 1120, 1120, 1121, 1121,
- 1122, 1122, 1122, 1122, 1124, 1123, 1125, 1125, 1126, 1126,
- 1127, 1127, 1128, 1128, 1129, 1130, 1130, 1131, 1131, 1131,
- 1132, 1132, 1132, 1132, 1132, 1132, 1133, 1133, 1133, 1133,
- 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134, 1134,
- 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136,
- 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
- 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1138, 1138,
- 1139, 1140, 1140, 1141, 1141, 1142, 1142, 1142, 1142, 1142,
- 1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1145, 1145,
- 1146, 1146, 1146, 1147, 1148, 1148, 1148, 1148, 1148, 1148,
- 1149, 1150, 1150, 1150, 1150, 1151, 1152, 1153, 1153, 1154,
- 1154, 1155, 1155, 1156, 1156, 1157, 1157, 1157, 1157, 1157,
- 1157, 1157, 1158, 1158, 1159, 1159, 1160, 1160, 1161, 1162,
- 1163, 1164, 1164, 1164, 1165, 1165, 1165, 1166, 1166, 1167,
- 1167, 1168, 1168, 1169, 1169, 1170, 1170, 1171, 1171, 1172,
- 1172, 1173, 1174, 1174, 1175, 1175, 1176, 1176, 1176, 1177,
- 1177, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
- 1179, 1179, 1181, 1180, 1182, 1182, 1183, 1184, 1184, 1184,
- 1184, 1185, 1186, 1187, 1187, 1188, 1189, 1189, 1190, 1190,
- 1191, 1191, 1192, 1193, 1193, 1194, 1194, 1195, 1195, 1195,
- 1195, 1196, 1196, 1196, 1196, 1196, 1197, 1197, 1197, 1197,
- 1197, 1198, 1198, 1199, 1199, 1200, 1200, 1201, 1201, 1201,
- 1202, 1203, 1204, 1204, 1205, 1205, 1206, 1206, 1207, 1207,
- 1208, 1208, 1209, 1209, 1210, 1210, 1211, 1211, 1211, 1212,
- 1212, 1213, 1213, 1213, 1213, 1213, 1214, 1214, 1215, 1216,
- 1216, 1217, 1217, 1217, 1218, 1218, 1219, 1219, 1220, 1220,
- 1221, 1221, 1222, 1222, 1223, 1223, 1225, 1226, 1224, 1227,
- 1224, 1228, 1224, 1224, 1229, 1224, 1230, 1224, 1231, 1224,
- 1232, 1224, 1233, 1224, 1234, 1224, 1224, 1235, 1236, 1237,
- 1224, 1238, 1238, 1239, 1239, 1239, 1239, 1240, 1240, 1240,
- 1240, 1240, 1241, 1241, 1241, 1241, 1242, 1242, 1243, 1243,
- 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
- 1245, 1245, 1246, 1245, 1245, 1247, 1245, 1248, 1245, 1245,
- 1245, 1245, 1245, 1245, 1249, 1245, 1250, 1251, 1251, 1253,
- 1252, 1254, 1254, 1254, 1256, 1255, 1257, 1258, 1257, 1259,
- 1259, 1260, 1261, 1261, 1262, 1263, 1263, 1263, 1263, 1263,
- 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
- 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
- 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1264, 1264,
- 1264, 1264, 1264, 1265, 1265, 1266, 1266, 1267, 1267, 1268,
- 1268, 1270, 1269, 1271, 1271, 1272, 1272, 1273, 1273, 1274,
- 1274, 1274, 1275, 1275, 1275, 1276, 1276, 1276, 1276, 1278,
- 1277, 1279, 1277, 1277, 1277, 1280, 1281, 1281, 1282, 1282,
- 1283, 1283, 1283, 1285, 1284, 1286, 1286, 1287, 1287, 1287,
- 1288, 1288, 1288, 1289, 1289, 1291, 1290, 1292, 1292, 1292,
- 1293, 1294, 1293, 1296, 1295, 1297, 1297, 1298, 1298, 1299,
- 1299, 1299, 1300, 1300, 1300, 1302, 1301, 1303, 1303, 1304,
- 1305, 1305, 1306, 1306, 1307, 1308, 1307, 1309, 1310, 1309,
- 1311, 1311, 1311, 1312, 1312, 1312, 1313, 1313, 1314, 1314,
- 1315, 1316, 1315, 1318, 1317, 1319, 1319, 1320, 1320, 1321,
- 1321, 1321, 1321, 1321, 1321, 1322, 1322, 1324, 1323, 1325,
- 1325, 1325, 1327, 1326, 1326, 1328, 1328, 1329, 1329, 1330,
- 1332, 1331, 1333, 1333, 1334, 1334, 1335, 1336, 1337, 1337,
- 1339, 1338, 1340, 1340, 1341, 1341, 1342, 1343, 1345, 1344,
- 1347, 1346, 1348, 1348, 1349, 1349, 1351, 1350, 1352, 1350,
- 1354, 1353, 1355, 1353, 1356, 1356, 1358, 1357, 1360, 1361,
- 1359, 1362, 1363, 1364, 1364, 1365, 1365, 1367, 1366, 1368,
- 1366, 1369, 1369, 1370, 1371, 1370, 1370, 1372, 1372, 1373,
- 1374, 1375, 1375, 1376, 1376, 1377, 1378, 1378, 1379, 1379,
- 1380, 1380, 1380, 1381, 1381, 1381, 1382, 1383, 1383, 1384,
- 1384, 1385, 1385, 1385, 1385, 1386, 1386, 1387, 1387, 1387,
- 1388, 1388, 1389, 1389, 1390, 1390, 1390, 1390, 1391, 1391,
- 1391, 1392, 1392, 1393, 1394, 1395, 1396, 1396, 1396, 1396,
- 1396, 1397, 1397, 1397, 1398, 1398, 1398, 1399, 1399, 1400,
- 1400, 1400, 1400, 1400, 1401, 1401, 1401, 1401, 1401, 1401,
- 1401, 1401, 1401, 1401, 1401, 1401, 1402, 1402, 1402, 1402,
- 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402,
- 1402, 1402, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403,
- 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403,
- 1403, 1404, 1404, 1405, 1405, 1406, 1406, 1407, 1407, 1408,
- 1408, 1408, 1408, 1408, 1408, 1409, 1409, 1410, 1410, 1411,
- 1411, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1413, 1413,
- 1413, 1414, 1414, 1415, 1416, 1416, 1417, 1417, 1417, 1417,
- 1418, 1419, 1419, 1420, 1421, 1421, 1421, 1421, 1421, 1421,
- 1421, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422,
- 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422,
- 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422,
- 1423, 1423, 1423, 1423, 1424, 1424, 1425, 1425, 1425, 1425,
- 1425, 1425, 1426, 1426, 1427, 1427, 1428, 1428, 1428, 1428,
- 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428,
- 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1429, 1429, 1430,
- 1430, 1431, 1431, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
- 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
- 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1433,
- 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
- 1433, 1433, 1433, 1435, 1434, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1434, 1436, 1436, 1437, 1437, 1438,
- 1438, 1439, 1439, 1440, 1440, 1441, 1442, 1442, 1442, 1442,
- 1442, 1442, 1442, 1443, 1444, 1442, 1442, 1442, 1442, 1442,
- 1442, 1442, 1442, 1442, 1442, 1442, 1445, 1442, 1446, 1442,
- 1447, 1442, 1448, 1448, 1449, 1449, 1449, 1450, 1450, 1450,
- 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450,
- 1451, 1453, 1452, 1452, 1454, 1454, 1455, 1456, 1458, 1457,
- 1459, 1459, 1459, 1459, 1460, 1460, 1461, 1461, 1462, 1462,
- 1463, 1463, 1464, 1464, 1465, 1466, 1468, 1467, 1469, 1469,
- 1469, 1469, 1469, 1469, 1469, 1469, 1470, 1470, 1470, 1470,
- 1470, 1470, 1470, 1470, 1471, 1471, 1471, 1471, 1472, 1472,
- 1473, 1473, 1474, 1474, 1475, 1475, 1476, 1476, 1477, 1477,
- 1478, 1478, 1479, 1479, 1479, 1480, 1480, 1480, 1480, 1480,
- 1481, 1482, 1483, 1483, 1485, 1484, 1486, 1484, 1487, 1487,
- 1487, 1488, 1488, 1488, 1488, 1489, 1489, 1489, 1489, 1489,
- 1490, 1490, 1490, 1491, 1492, 1494, 1495, 1493, 1496, 1496,
- 1497, 1497, 1498, 1499, 1498, 1500, 1498, 1498, 1501, 1498,
- 1502, 1498, 1498, 1503, 1498, 1504, 1498, 1498, 1505, 1505,
- 1505, 1506, 1506, 1507, 1507, 1508, 1509, 1509, 1509, 1509,
- 1509, 1510, 1510, 1511, 1511, 1512, 1512, 1513, 1513, 1514,
- 1514, 1515, 1516, 1517, 1517, 1518, 1518, 1518, 1518, 1519,
- 1519, 1521, 1520, 1522, 1520, 1523, 1523, 1524, 1525, 1524,
- 1527, 1526, 1528, 1528, 1529, 1529, 1530, 1530, 1531, 1531,
- 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532,
- 1532, 1532, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533,
- 1533, 1534, 1534, 1534, 1534, 1535, 1535, 1535, 1536, 1536,
- 1537, 1538, 1538, 1539, 1540, 1539, 1541, 1542, 1541, 1543,
- 1543, 1544, 1544, 1545, 1545, 1545, 1546, 1546, 1547, 1547,
- 1548, 1550, 1549, 1551, 1551, 1552, 1552, 1553, 1553, 1554,
- 1554, 1555, 1555, 1556, 1556, 1557, 1557, 1557, 1558, 1558,
- 1558, 1559, 1559, 1559, 1559, 1559, 1559, 1560, 1561, 1561,
- 1562, 1563, 1563, 1565, 1564, 1566, 1566, 1567, 1567, 1567,
- 1568, 1568, 1569, 1569, 1569, 1569, 1570, 1570, 1570, 1570,
- 1570, 1571, 1571, 1572, 1572, 1573, 1573, 1574, 1575, 1575,
- 1575, 1576, 1576, 1576, 1576, 1576, 1576, 1577, 1578, 1578,
- 1578, 1578, 1579, 1579, 1579, 1580, 1580, 1581, 1582, 1583,
- 1583, 1583, 1584, 1584, 1585, 1585, 1586, 1586, 1587, 1587,
- 1587, 1587, 1587, 1587, 1588, 1588, 1588, 1588, 1588, 1589,
- 1589, 1589, 1589, 1590, 1590, 1590, 1590, 1590, 1591, 1591,
- 1591, 1591, 1591, 1592, 1593, 1593, 1594, 1594, 1595, 1595,
- 1595, 1597, 1596, 1598, 1598, 1599, 1599, 1600, 1602, 1601,
- 1603, 1603, 1604, 1605, 1605, 1605, 1606, 1608, 1609, 1607,
- 1607, 1607, 1611, 1610, 1613, 1612, 1614, 1612, 1612, 1612,
- 1612, 1615, 1612, 1612, 1612, 1612, 1616, 1612, 1612, 1617,
- 1617, 1618, 1619, 1620, 1620, 1621, 1622, 1622, 1623, 1623,
- 1624, 1624, 1626, 1627, 1625, 1629, 1630, 1628, 1631, 1632,
- 1633, 1633, 1633, 1634, 1634, 1635, 1635, 1636, 1636, 1638,
- 1637, 1639, 1639, 1640, 1639, 1641, 1642, 1642, 1643, 1643,
- 1644, 1645, 1645, 1646, 1646, 1647, 1648, 1648, 1649, 1649,
- 1650, 1650, 1651, 1651, 1653, 1652, 1655, 1654, 1656, 1656,
- 1657, 1657, 1658, 1658, 1659, 1659, 1660, 1660, 1661, 1661,
- 1662, 1663, 1664, 1662, 1665, 1665, 1667, 1668, 1669, 1666,
- 1670, 1670, 1671, 1671, 1672, 1672, 1673, 1674, 1674, 1676,
- 1675, 1677, 1677, 1678, 1678, 1679, 1680, 1681, 1682, 1683,
- 1681, 1684, 1685, 1681, 1686, 1687, 1686, 1688, 1688, 1689,
- 1689, 1690, 1690, 1691, 1691, 1692, 1692, 1692, 1694, 1695,
- 1693, 1696, 1696, 1697, 1697, 1698, 1698, 1699, 1699, 1699,
- 1699, 1699, 1699, 1699, 1699, 1699, 1700, 1700, 1702, 1701,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
- 1703, 1703, 1703, 1703, 1704, 1703, 1705, 1703, 1703, 1703,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1706, 1706, 1706,
- 1707, 1707, 1708, 1708, 1709, 1709, 1710, 1710, 1711, 1711,
- 1712, 1712, 1713, 1713, 1714, 1714, 1714, 1716, 1715, 1717,
- 1715, 1718, 1718, 1718, 1718, 1718, 1718, 1719, 1719, 1720,
- 1721, 1721, 1721, 1721, 1722, 1722, 1723, 1723, 1723, 1724,
- 1726, 1725, 1728, 1727, 1727, 1729, 1729, 1730, 1731, 1730,
- 1732, 1732, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733,
- 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733,
- 1734, 1734, 1735, 1736, 1737, 1736, 1736, 1738, 1738, 1739,
- 1739, 1739, 1740, 1741, 1741, 1743, 1742, 1744, 1744, 1746,
- 1745, 1747, 1745, 1745, 1748, 1748, 1749, 1749, 1750, 1751,
- 1750, 1753, 1752, 1754, 1754, 1754, 1755, 1755, 1755, 1756,
- 1756, 1757, 1757, 1759, 1758, 1760, 1760, 1761, 1763, 1764,
- 1765, 1766, 1762, 1767, 1767, 1768, 1768, 1769, 1769, 1769,
- 1770, 1770, 1770, 1771, 1771, 1772, 1772, 1773, 1773, 1773,
- 1773, 1774, 1774, 1775, 1775, 1776, 1776, 1777, 1777, 1778,
- 1778, 1779, 1779, 1780, 1780, 1780, 1781, 1781, 1782, 1782,
- 1783, 1783, 1784, 1784, 1785, 1786, 1786, 1786, 1786, 1787,
- 1787, 1788, 1788, 1788, 1789, 1789, 1789, 1790, 1790, 1791,
- 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1792,
- 1792, 1792, 1792, 1792, 1793, 1793, 1793, 1795, 1794, 1796,
- 1796, 1797, 1797, 1798, 1799, 1800, 1799, 1801, 1801, 1802,
- 1803, 1804, 1804, 1805, 1806, 1806, 1807, 1807, 1808, 1808,
- 1809, 1810, 1810, 1810, 1810, 1810, 1811, 1811, 1811, 1811,
- 1811, 1812, 1812, 1812, 1812, 1813, 1813, 1813, 1814, 1814,
- 1815, 1816, 1816, 1817, 1817, 1817, 1818, 1819, 1819, 1819,
- 1819, 1820, 1821, 1822, 1823, 1824, 1824, 1825, 1825, 1826,
- 1826, 1826, 1827, 1827, 1828, 1828, 1829, 1829, 1829, 1830,
- 1830, 1830, 1831, 1831, 1832, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1834, 1834, 1834,
- 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834,
- 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835,
- 1835, 1835, 1835, 1836, 1836, 1836, 1836, 1836, 1836, 1836,
- 1836, 1836, 1836, 1836, 1836, 1836, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1838, 1838, 1838, 1838, 1838, 1838,
- 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838,
- 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838,
- 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838,
- 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838,
- 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1839, 1839, 1839,
- 1839, 1839, 1839, 1840, 1840, 1840, 1840, 1840, 1840, 1840,
- 1840, 1840, 1840, 1841, 1841, 1841, 1842, 1842, 1842, 1843,
- 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843,
- 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843,
- 1843, 1843, 1843, 1843, 1843, 1844, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845,
- 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1846, 1846,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
- 1848, 1848, 1850, 1849, 1851, 1851, 1852, 1851, 1853, 1851,
- 1854, 1851, 1855, 1855, 1856, 1856, 1857, 1856, 1858, 1858,
- 1860, 1859, 1859, 1861, 1861, 1861, 1862, 1862, 1862, 1862,
- 1863, 1863, 1863, 1863, 1865, 1864, 1866, 1864, 1867, 1864,
- 1869, 1868, 1870, 1868, 1871, 1868, 1873, 1872, 1874, 1872,
- 1875, 1872, 1876, 1872, 1877, 1872, 1878, 1872, 1879, 1872,
- 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1880, 1872, 1881,
- 1872, 1882, 1872, 1883, 1883, 1883, 1883, 1884, 1885, 1886,
- 1886, 1887, 1887, 1887, 1887, 1888, 1888, 1888, 1889, 1889,
- 1889, 1889, 1889, 1891, 1890, 1892, 1892, 1892, 1893, 1893,
- 1894, 1894, 1895, 1896, 1896, 1896, 1896, 1896, 1898, 1897,
- 1900, 1899, 1901, 1901, 1902, 1901, 1903, 1903, 1904, 1904,
- 1905, 1905, 1905, 1905, 1906, 1905, 1907, 1907, 1907, 1907,
- 1907, 1908, 1909, 1909, 1909, 1909, 1909, 1910, 1910, 1911,
- 1912, 1912, 1912, 1912, 1913, 1913, 1914, 1914, 1915, 1915,
- 1916, 1917, 1918, 1918, 1919, 1919, 1920, 1920, 1921, 1921,
- 1922, 1922, 1922, 1922, 1923, 1924, 1924, 1924, 1924, 1925,
- 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
- 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
- 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
- 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
- 1925, 1926, 1926, 1927, 1927, 1928, 1928, 1928, 1929, 1929,
- 1929, 1929, 1930, 1930, 1931, 1931, 1932, 1932, 1933, 1933,
- 1934, 1934, 1935, 1935, 1935, 1935, 1936, 1936, 1937, 1938,
- 1938, 1938, 1939, 1939, 1939, 1939, 1939, 1940, 1940, 1940,
- 1940, 1940, 1941, 1941, 1942, 1942, 1943, 1943, 1944, 1944,
- 1945, 1945, 1946, 1946, 1948, 1947, 1949, 1950, 1950, 1951,
- 1951, 1952, 1952, 1952, 1953, 1953, 1953, 1954, 1955, 1955,
- 1955, 1956, 1957, 1958, 1958, 1958, 1959, 1959, 1959, 1960,
- 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1961, 1961,
- 1962, 1963, 1964, 1964, 1964, 1965, 1965, 1966, 1966, 1967,
- 1967, 1968, 1968, 1970, 1969, 1971, 1971, 1971, 1971, 1972,
- 1972, 1973, 1973, 1975, 1976, 1977, 1978, 1979, 1974, 1981,
- 1980, 1982, 1982, 1982, 1982, 1982, 1982, 1983, 1983, 1984,
- 1984, 1984, 1985, 1985, 1985, 1986, 1986, 1986, 1987, 1987,
- 1988, 1989, 1988, 1990, 1990, 1991, 1991, 1992, 1992, 1993,
- 1994, 1995, 1996, 1997, 1998, 1999, 1999, 1999, 2000, 2000,
- 2001, 2001, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2003,
- 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003,
- 2003, 2004, 2005, 2006, 2008, 2007, 2009, 2010, 2011, 2012,
- 2013, 2013, 2014, 2014, 2015, 2015, 2016, 2016, 2016, 2017,
- 2017, 2017, 2017, 2019, 2018, 2021, 2022, 2020, 2023, 2023,
- 2023, 2025, 2024, 2026, 2024, 2027, 2024, 2024, 2028, 2028,
- 2029, 2030, 2030, 2030, 2031, 2030, 2032, 2032, 2032, 2032,
- 2032, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2034,
- 2034, 2034, 2034, 2036, 2035, 2038, 2037, 2040, 2039
+ 0, 793, 794, 795, 794, 794, 796, 796, 797, 797,
+ 797, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+ 798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+ 798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+ 798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+ 798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+ 798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+ 798, 799, 800, 800, 802, 801, 803, 804, 805, 803,
+ 806, 807, 806, 808, 808, 810, 809, 812, 811, 813,
+ 813, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
+ 814, 815, 815, 815, 816, 817, 817, 817, 818, 819,
+ 819, 819, 820, 821, 821, 821, 821, 821, 821, 821,
+ 821, 822, 822, 823, 824, 824, 825, 827, 828, 826,
+ 829, 826, 830, 831, 826, 832, 833, 826, 834, 835,
+ 826, 836, 837, 826, 838, 826, 839, 826, 840, 826,
+ 841, 826, 842, 826, 826, 826, 843, 826, 826, 844,
+ 844, 845, 845, 846, 846, 846, 846, 846, 846, 846,
+ 846, 846, 846, 846, 846, 846, 846, 847, 847, 849,
+ 848, 850, 850, 851, 851, 851, 851, 851, 851, 851,
+ 853, 852, 855, 854, 854, 856, 856, 856, 856, 857,
+ 857, 858, 858, 859, 859, 860, 861, 861, 863, 862,
+ 864, 865, 865, 866, 866, 866, 866, 867, 867, 868,
+ 868, 869, 869, 870, 870, 871, 871, 872, 872, 873,
+ 873, 873, 873, 873, 873, 873, 874, 874, 875, 875,
+ 877, 876, 878, 876, 879, 876, 880, 880, 881, 881,
+ 882, 882, 883, 884, 883, 885, 885, 886, 887, 887,
+ 888, 888, 889, 889, 889, 891, 890, 892, 893, 893,
+ 894, 894, 895, 895, 895, 896, 897, 897, 898, 899,
+ 901, 900, 900, 900, 903, 902, 904, 904, 905, 907,
+ 906, 908, 908, 908, 908, 909, 909, 910, 911, 911,
+ 912, 913, 913, 914, 914, 914, 914, 914, 914, 915,
+ 915, 916, 917, 917, 918, 918, 919, 919, 920, 920,
+ 921, 921, 921, 922, 922, 922, 922, 922, 922, 922,
+ 922, 922, 922, 922, 922, 922, 923, 924, 925, 925,
+ 926, 926, 927, 927, 928, 929, 929, 930, 930, 930,
+ 931, 932, 932, 933, 934, 934, 934, 934, 934, 934,
+ 934, 934, 934, 934, 934, 934, 934, 934, 935, 935,
+ 936, 936, 938, 937, 940, 939, 941, 941, 943, 942,
+ 942, 944, 944, 945, 944, 946, 944, 947, 947, 948,
+ 947, 949, 947, 950, 951, 952, 954, 953, 955, 957,
+ 956, 959, 958, 960, 960, 961, 961, 962, 962, 962,
+ 963, 964, 964, 964, 965, 965, 966, 967, 967, 969,
+ 970, 968, 971, 971, 971, 971, 973, 972, 975, 974,
+ 974, 976, 976, 977, 977, 979, 978, 981, 980, 982,
+ 982, 983, 983, 984, 984, 985, 986, 986, 986, 987,
+ 988, 989, 991, 990, 992, 990, 993, 994, 995, 990,
+ 996, 990, 998, 997, 999, 997, 1000, 1001, 997, 1002,
+ 997, 1003, 1003, 1004, 1004, 1004, 1006, 1005, 1005, 1005,
+ 1007, 1007, 1008, 1008, 1009, 1009, 1010, 1011, 1011, 1013,
+ 1012, 1014, 1016, 1015, 1018, 1017, 1019, 1020, 1019, 1019,
+ 1019, 1021, 1019, 1019, 1022, 1019, 1023, 1023, 1024, 1024,
+ 1025, 1025, 1026, 1026, 1027, 1028, 1029, 1030, 1031, 1031,
+ 1032, 1033, 1032, 1034, 1032, 1035, 1035, 1036, 1037, 1038,
+ 1038, 1039, 1039, 1040, 1040, 1041, 1041, 1043, 1042, 1044,
+ 1045, 1046, 1045, 1047, 1045, 1045, 1045, 1045, 1048, 1048,
+ 1049, 1049, 1050, 1050, 1052, 1053, 1051, 1054, 1054, 1055,
+ 1055, 1056, 1056, 1057, 1057, 1059, 1058, 1060, 1061, 1061,
+ 1062, 1062, 1063, 1063, 1064, 1064, 1065, 1065, 1066, 1066,
+ 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1067, 1068, 1067,
+ 1067, 1069, 1069, 1070, 1070, 1071, 1071, 1072, 1072, 1073,
+ 1073, 1074, 1074, 1074, 1075, 1075, 1076, 1076, 1077, 1077,
+ 1078, 1078, 1079, 1079, 1080, 1080, 1080, 1081, 1081, 1081,
+ 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
+ 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, 1081, 1081,
+ 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
+ 1081, 1081, 1081, 1083, 1083, 1083, 1083, 1084, 1084, 1085,
+ 1085, 1086, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1092,
+ 1092, 1092, 1092, 1092, 1092, 1093, 1093, 1093, 1094, 1094,
+ 1094, 1094, 1095, 1096, 1097, 1097, 1098, 1098, 1098, 1098,
+ 1098, 1099, 1099, 1101, 1100, 1102, 1100, 1103, 1100, 1104,
+ 1100, 1105, 1100, 1106, 1100, 1107, 1100, 1108, 1109, 1110,
+ 1111, 1111, 1112, 1113, 1113, 1114, 1114, 1115, 1117, 1116,
+ 1119, 1118, 1120, 1118, 1121, 1121, 1122, 1122, 1123, 1123,
+ 1124, 1124, 1125, 1125, 1125, 1125, 1126, 1125, 1125, 1125,
+ 1127, 1127, 1128, 1128, 1128, 1128, 1129, 1129, 1130, 1130,
+ 1131, 1131, 1131, 1131, 1133, 1132, 1134, 1134, 1135, 1135,
+ 1136, 1136, 1137, 1137, 1138, 1139, 1139, 1140, 1140, 1140,
+ 1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142,
+ 1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1143,
+ 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145, 1145,
+ 1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
+ 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1147, 1147,
+ 1148, 1149, 1149, 1150, 1150, 1151, 1151, 1151, 1151, 1151,
+ 1152, 1152, 1152, 1152, 1152, 1153, 1153, 1153, 1154, 1154,
+ 1155, 1155, 1155, 1156, 1157, 1157, 1157, 1157, 1157, 1157,
+ 1158, 1159, 1159, 1159, 1159, 1160, 1161, 1162, 1162, 1163,
+ 1163, 1164, 1164, 1165, 1165, 1166, 1166, 1166, 1166, 1166,
+ 1166, 1166, 1167, 1167, 1168, 1168, 1169, 1169, 1170, 1171,
+ 1172, 1173, 1173, 1173, 1174, 1174, 1174, 1175, 1175, 1176,
+ 1176, 1177, 1177, 1178, 1178, 1179, 1179, 1180, 1180, 1181,
+ 1181, 1182, 1183, 1183, 1184, 1184, 1185, 1185, 1185, 1186,
+ 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
+ 1188, 1188, 1190, 1189, 1191, 1191, 1192, 1193, 1193, 1193,
+ 1193, 1194, 1195, 1196, 1196, 1197, 1198, 1198, 1199, 1199,
+ 1200, 1200, 1201, 1202, 1202, 1203, 1203, 1204, 1204, 1204,
+ 1204, 1205, 1205, 1205, 1205, 1205, 1206, 1206, 1206, 1206,
+ 1206, 1207, 1207, 1208, 1208, 1209, 1209, 1210, 1210, 1210,
+ 1211, 1212, 1213, 1213, 1214, 1214, 1215, 1215, 1216, 1216,
+ 1217, 1217, 1218, 1218, 1219, 1219, 1220, 1220, 1220, 1221,
+ 1221, 1222, 1222, 1222, 1222, 1222, 1223, 1223, 1224, 1225,
+ 1225, 1226, 1226, 1226, 1227, 1227, 1228, 1228, 1229, 1229,
+ 1230, 1230, 1231, 1231, 1232, 1232, 1234, 1235, 1233, 1236,
+ 1233, 1237, 1233, 1233, 1238, 1233, 1239, 1233, 1240, 1233,
+ 1241, 1233, 1242, 1233, 1243, 1233, 1233, 1244, 1245, 1246,
+ 1233, 1247, 1247, 1248, 1248, 1248, 1248, 1249, 1249, 1249,
+ 1249, 1249, 1250, 1250, 1250, 1250, 1251, 1251, 1252, 1252,
+ 1253, 1253, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ 1254, 1254, 1255, 1254, 1254, 1256, 1254, 1257, 1254, 1254,
+ 1254, 1254, 1254, 1254, 1258, 1254, 1259, 1260, 1260, 1262,
+ 1261, 1263, 1263, 1263, 1265, 1264, 1266, 1267, 1266, 1268,
+ 1268, 1269, 1270, 1270, 1271, 1272, 1272, 1272, 1272, 1272,
+ 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
+ 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
+ 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1273, 1273,
+ 1273, 1274, 1274, 1274, 1274, 1274, 1275, 1275, 1276, 1276,
+ 1277, 1277, 1278, 1278, 1280, 1279, 1281, 1281, 1282, 1282,
+ 1283, 1283, 1284, 1284, 1284, 1285, 1285, 1285, 1286, 1286,
+ 1286, 1286, 1288, 1287, 1289, 1287, 1287, 1287, 1290, 1291,
+ 1291, 1292, 1292, 1293, 1293, 1293, 1295, 1294, 1296, 1296,
+ 1297, 1297, 1297, 1298, 1298, 1298, 1298, 1298, 1299, 1299,
+ 1301, 1300, 1302, 1302, 1302, 1303, 1304, 1303, 1306, 1305,
+ 1307, 1307, 1308, 1308, 1309, 1309, 1309, 1310, 1310, 1310,
+ 1312, 1311, 1313, 1313, 1314, 1315, 1315, 1316, 1316, 1317,
+ 1318, 1317, 1319, 1320, 1319, 1321, 1321, 1321, 1322, 1322,
+ 1322, 1323, 1323, 1324, 1324, 1325, 1326, 1325, 1328, 1327,
+ 1329, 1329, 1330, 1330, 1331, 1331, 1331, 1331, 1331, 1331,
+ 1332, 1332, 1334, 1333, 1335, 1335, 1335, 1337, 1336, 1336,
+ 1338, 1338, 1339, 1339, 1340, 1342, 1341, 1343, 1343, 1344,
+ 1344, 1345, 1346, 1347, 1347, 1349, 1348, 1350, 1350, 1351,
+ 1351, 1352, 1353, 1355, 1354, 1357, 1356, 1358, 1358, 1359,
+ 1359, 1361, 1360, 1362, 1360, 1364, 1363, 1365, 1363, 1366,
+ 1366, 1368, 1367, 1370, 1371, 1369, 1372, 1373, 1374, 1374,
+ 1375, 1375, 1377, 1376, 1378, 1376, 1379, 1379, 1380, 1381,
+ 1380, 1380, 1382, 1382, 1383, 1384, 1385, 1385, 1386, 1386,
+ 1387, 1388, 1388, 1389, 1389, 1390, 1390, 1390, 1391, 1391,
+ 1391, 1392, 1393, 1393, 1394, 1394, 1395, 1395, 1395, 1395,
+ 1396, 1396, 1397, 1397, 1397, 1398, 1398, 1399, 1399, 1400,
+ 1400, 1400, 1400, 1401, 1401, 1401, 1402, 1402, 1403, 1404,
+ 1405, 1406, 1407, 1408, 1409, 1410, 1410, 1410, 1410, 1410,
+ 1411, 1411, 1411, 1412, 1412, 1412, 1413, 1413, 1414, 1414,
+ 1414, 1414, 1414, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
+ 1415, 1415, 1415, 1415, 1415, 1416, 1416, 1416, 1416, 1416,
+ 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416,
+ 1416, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417,
+ 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417,
+ 1418, 1418, 1419, 1419, 1420, 1420, 1421, 1421, 1422, 1422,
+ 1422, 1422, 1422, 1422, 1423, 1423, 1424, 1424, 1425, 1425,
+ 1425, 1426, 1426, 1426, 1426, 1426, 1426, 1427, 1427, 1427,
+ 1428, 1428, 1429, 1430, 1430, 1431, 1431, 1431, 1431, 1432,
+ 1433, 1433, 1434, 1435, 1435, 1435, 1435, 1435, 1435, 1435,
+ 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
+ 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
+ 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1437,
+ 1437, 1437, 1437, 1438, 1438, 1439, 1439, 1439, 1439, 1439,
+ 1439, 1440, 1440, 1441, 1441, 1442, 1442, 1442, 1442, 1442,
+ 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442,
+ 1442, 1442, 1442, 1442, 1442, 1442, 1443, 1443, 1444, 1444,
+ 1445, 1445, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
+ 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
+ 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1447, 1447,
+ 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
+ 1447, 1447, 1449, 1448, 1448, 1448, 1448, 1448, 1448, 1448,
+ 1448, 1448, 1448, 1448, 1450, 1450, 1451, 1451, 1452, 1452,
+ 1453, 1453, 1454, 1454, 1455, 1456, 1456, 1456, 1456, 1456,
+ 1456, 1456, 1457, 1458, 1456, 1456, 1456, 1456, 1456, 1456,
+ 1456, 1456, 1456, 1456, 1456, 1459, 1456, 1460, 1456, 1461,
+ 1456, 1462, 1462, 1463, 1463, 1463, 1464, 1464, 1464, 1464,
+ 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1465,
+ 1467, 1466, 1466, 1468, 1468, 1469, 1470, 1472, 1471, 1473,
+ 1473, 1473, 1473, 1474, 1474, 1475, 1475, 1476, 1476, 1477,
+ 1477, 1478, 1478, 1479, 1480, 1482, 1481, 1483, 1483, 1483,
+ 1483, 1483, 1483, 1483, 1483, 1484, 1484, 1484, 1484, 1484,
+ 1484, 1484, 1484, 1485, 1485, 1485, 1485, 1486, 1486, 1487,
+ 1487, 1488, 1488, 1489, 1489, 1490, 1490, 1491, 1491, 1492,
+ 1492, 1493, 1493, 1493, 1494, 1494, 1494, 1494, 1494, 1495,
+ 1496, 1497, 1497, 1499, 1498, 1500, 1498, 1501, 1501, 1501,
+ 1502, 1502, 1502, 1502, 1503, 1503, 1503, 1503, 1503, 1504,
+ 1504, 1504, 1505, 1506, 1508, 1509, 1507, 1510, 1510, 1511,
+ 1511, 1512, 1513, 1512, 1514, 1512, 1512, 1515, 1512, 1516,
+ 1512, 1512, 1517, 1512, 1518, 1512, 1512, 1519, 1519, 1519,
+ 1520, 1520, 1521, 1521, 1522, 1523, 1523, 1523, 1523, 1523,
+ 1524, 1524, 1525, 1525, 1526, 1526, 1527, 1527, 1528, 1528,
+ 1529, 1530, 1531, 1531, 1532, 1532, 1532, 1532, 1533, 1533,
+ 1535, 1534, 1536, 1534, 1537, 1537, 1538, 1539, 1538, 1541,
+ 1540, 1542, 1542, 1543, 1543, 1544, 1544, 1545, 1545, 1546,
+ 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546,
+ 1546, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
+ 1548, 1548, 1548, 1548, 1549, 1549, 1549, 1550, 1550, 1551,
+ 1552, 1552, 1553, 1554, 1553, 1555, 1556, 1555, 1557, 1557,
+ 1558, 1558, 1559, 1559, 1559, 1560, 1560, 1561, 1561, 1562,
+ 1564, 1563, 1565, 1565, 1566, 1566, 1567, 1567, 1568, 1568,
+ 1569, 1569, 1570, 1570, 1571, 1571, 1571, 1572, 1572, 1572,
+ 1573, 1573, 1573, 1573, 1573, 1573, 1574, 1575, 1575, 1576,
+ 1577, 1577, 1579, 1578, 1580, 1580, 1581, 1581, 1581, 1582,
+ 1582, 1583, 1583, 1583, 1583, 1584, 1584, 1584, 1584, 1584,
+ 1585, 1585, 1586, 1586, 1587, 1587, 1588, 1589, 1589, 1589,
+ 1590, 1590, 1590, 1590, 1590, 1590, 1591, 1592, 1592, 1592,
+ 1592, 1593, 1593, 1593, 1594, 1594, 1595, 1596, 1597, 1597,
+ 1597, 1598, 1598, 1599, 1599, 1600, 1600, 1601, 1601, 1601,
+ 1601, 1601, 1601, 1602, 1602, 1602, 1602, 1602, 1603, 1603,
+ 1603, 1603, 1604, 1604, 1604, 1604, 1604, 1605, 1605, 1605,
+ 1605, 1605, 1606, 1607, 1607, 1608, 1608, 1609, 1609, 1609,
+ 1611, 1610, 1612, 1612, 1613, 1613, 1614, 1616, 1615, 1617,
+ 1617, 1618, 1619, 1619, 1619, 1620, 1622, 1623, 1621, 1621,
+ 1621, 1625, 1624, 1627, 1626, 1628, 1626, 1626, 1626, 1626,
+ 1629, 1626, 1626, 1626, 1626, 1630, 1626, 1626, 1631, 1631,
+ 1632, 1633, 1634, 1634, 1635, 1636, 1636, 1637, 1637, 1638,
+ 1638, 1640, 1641, 1639, 1643, 1644, 1642, 1645, 1646, 1647,
+ 1647, 1647, 1648, 1648, 1649, 1649, 1650, 1650, 1652, 1651,
+ 1653, 1653, 1654, 1653, 1655, 1656, 1656, 1657, 1657, 1658,
+ 1659, 1659, 1660, 1660, 1661, 1662, 1662, 1663, 1663, 1664,
+ 1664, 1665, 1665, 1667, 1666, 1669, 1668, 1670, 1670, 1671,
+ 1671, 1672, 1672, 1673, 1673, 1674, 1674, 1675, 1675, 1676,
+ 1677, 1678, 1676, 1679, 1679, 1681, 1682, 1683, 1680, 1684,
+ 1684, 1685, 1685, 1686, 1686, 1687, 1688, 1688, 1690, 1689,
+ 1691, 1691, 1692, 1693, 1692, 1694, 1695, 1697, 1696, 1698,
+ 1699, 1696, 1700, 1701, 1696, 1702, 1703, 1702, 1704, 1704,
+ 1705, 1705, 1706, 1706, 1706, 1708, 1709, 1707, 1710, 1710,
+ 1711, 1711, 1712, 1712, 1713, 1713, 1713, 1713, 1713, 1713,
+ 1713, 1713, 1713, 1714, 1714, 1716, 1715, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1718, 1717, 1719, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1720, 1720, 1720, 1721, 1721, 1722,
+ 1722, 1723, 1723, 1724, 1724, 1725, 1725, 1726, 1726, 1727,
+ 1727, 1728, 1728, 1728, 1730, 1729, 1731, 1729, 1732, 1732,
+ 1732, 1732, 1732, 1732, 1733, 1733, 1734, 1735, 1735, 1735,
+ 1735, 1736, 1736, 1737, 1737, 1737, 1738, 1740, 1739, 1742,
+ 1741, 1741, 1743, 1743, 1744, 1745, 1744, 1746, 1746, 1747,
+ 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747,
+ 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1748, 1748, 1749,
+ 1750, 1751, 1750, 1750, 1752, 1752, 1753, 1753, 1753, 1754,
+ 1755, 1755, 1757, 1756, 1758, 1758, 1760, 1759, 1761, 1759,
+ 1759, 1762, 1762, 1763, 1763, 1764, 1765, 1764, 1767, 1766,
+ 1768, 1768, 1768, 1769, 1769, 1769, 1770, 1770, 1771, 1771,
+ 1773, 1772, 1774, 1774, 1775, 1777, 1778, 1779, 1780, 1776,
+ 1781, 1781, 1782, 1782, 1783, 1783, 1783, 1784, 1784, 1784,
+ 1785, 1785, 1786, 1786, 1787, 1787, 1787, 1787, 1788, 1788,
+ 1789, 1789, 1790, 1790, 1791, 1791, 1792, 1792, 1793, 1793,
+ 1794, 1794, 1794, 1795, 1795, 1796, 1796, 1797, 1797, 1798,
+ 1798, 1799, 1800, 1800, 1800, 1800, 1801, 1801, 1802, 1802,
+ 1802, 1803, 1803, 1803, 1804, 1804, 1805, 1805, 1805, 1805,
+ 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, 1806, 1806,
+ 1806, 1807, 1807, 1807, 1809, 1808, 1810, 1810, 1811, 1811,
+ 1812, 1813, 1814, 1813, 1815, 1815, 1816, 1817, 1818, 1818,
+ 1819, 1820, 1820, 1821, 1821, 1822, 1822, 1823, 1824, 1824,
+ 1824, 1824, 1824, 1825, 1825, 1825, 1825, 1825, 1826, 1826,
+ 1826, 1826, 1827, 1827, 1827, 1828, 1828, 1829, 1830, 1830,
+ 1831, 1831, 1831, 1832, 1833, 1833, 1833, 1833, 1834, 1835,
+ 1836, 1837, 1838, 1838, 1839, 1839, 1840, 1840, 1840, 1841,
+ 1841, 1842, 1842, 1843, 1843, 1843, 1844, 1844, 1844, 1845,
+ 1845, 1846, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
+ 1847, 1847, 1847, 1847, 1848, 1848, 1848, 1848, 1848, 1848,
+ 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1849, 1849, 1849,
+ 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849,
+ 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850,
+ 1850, 1850, 1850, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
+ 1851, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
+ 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
+ 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
+ 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
+ 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
+ 1852, 1852, 1852, 1852, 1853, 1853, 1853, 1853, 1853, 1853,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1855, 1855, 1855, 1856, 1856, 1856, 1857, 1857, 1857, 1857,
+ 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
+ 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
+ 1857, 1857, 1858, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859,
+ 1859, 1859, 1859, 1859, 1859, 1859, 1860, 1860, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+ 1864, 1863, 1865, 1865, 1866, 1865, 1867, 1865, 1868, 1865,
+ 1869, 1869, 1870, 1870, 1871, 1870, 1872, 1872, 1874, 1873,
+ 1873, 1875, 1875, 1875, 1876, 1876, 1876, 1876, 1877, 1877,
+ 1877, 1877, 1879, 1878, 1880, 1878, 1881, 1878, 1883, 1882,
+ 1884, 1882, 1885, 1882, 1887, 1886, 1888, 1886, 1889, 1886,
+ 1890, 1886, 1891, 1886, 1892, 1886, 1893, 1886, 1886, 1886,
+ 1886, 1886, 1886, 1886, 1886, 1894, 1886, 1895, 1886, 1896,
+ 1886, 1897, 1897, 1897, 1897, 1898, 1899, 1900, 1900, 1901,
+ 1901, 1901, 1901, 1902, 1902, 1902, 1903, 1903, 1903, 1904,
+ 1904, 1904, 1906, 1905, 1907, 1907, 1907, 1908, 1908, 1909,
+ 1909, 1910, 1911, 1911, 1911, 1911, 1911, 1913, 1912, 1915,
+ 1914, 1916, 1916, 1917, 1916, 1918, 1918, 1919, 1919, 1920,
+ 1920, 1920, 1920, 1921, 1920, 1922, 1922, 1922, 1922, 1922,
+ 1923, 1924, 1924, 1924, 1924, 1924, 1925, 1925, 1926, 1927,
+ 1927, 1927, 1927, 1928, 1928, 1929, 1929, 1930, 1930, 1931,
+ 1932, 1933, 1933, 1934, 1934, 1935, 1935, 1936, 1936, 1937,
+ 1937, 1937, 1937, 1938, 1939, 1939, 1939, 1939, 1940, 1940,
+ 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
+ 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
+ 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
+ 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
+ 1940, 1941, 1941, 1942, 1942, 1943, 1943, 1943, 1944, 1944,
+ 1944, 1944, 1945, 1945, 1946, 1946, 1947, 1947, 1948, 1948,
+ 1949, 1949, 1950, 1950, 1950, 1950, 1951, 1951, 1952, 1953,
+ 1953, 1953, 1954, 1954, 1954, 1954, 1954, 1955, 1955, 1955,
+ 1955, 1955, 1956, 1956, 1957, 1957, 1958, 1958, 1959, 1959,
+ 1960, 1960, 1961, 1961, 1963, 1962, 1964, 1965, 1965, 1966,
+ 1966, 1967, 1967, 1967, 1968, 1968, 1968, 1969, 1970, 1970,
+ 1970, 1971, 1972, 1973, 1973, 1973, 1974, 1974, 1974, 1975,
+ 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1976, 1976,
+ 1977, 1978, 1979, 1979, 1979, 1980, 1980, 1981, 1981, 1982,
+ 1982, 1983, 1983, 1985, 1984, 1986, 1986, 1986, 1986, 1987,
+ 1987, 1988, 1988, 1990, 1991, 1992, 1993, 1994, 1989, 1996,
+ 1995, 1997, 1997, 1998, 1998, 1999, 1999, 2001, 2000, 2002,
+ 2002, 2002, 2002, 2002, 2002, 2003, 2003, 2004, 2004, 2004,
+ 2005, 2005, 2005, 2006, 2006, 2006, 2007, 2007, 2008, 2009,
+ 2008, 2010, 2010, 2011, 2011, 2012, 2012, 2013, 2014, 2015,
+ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2023, 2024,
+ 2025, 2026, 2027, 2028, 2028, 2028, 2029, 2030, 2031, 2031,
+ 2031, 2032, 2032, 2033, 2033, 2034, 2034, 2034, 2034, 2034,
+ 2034, 2034, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035,
+ 2035, 2035, 2035, 2035, 2036, 2037, 2038, 2040, 2039, 2041,
+ 2042, 2043, 2044, 2045, 2045, 2046, 2046, 2047, 2047, 2048,
+ 2048, 2048, 2049, 2049, 2049, 2049, 2051, 2050, 2053, 2054,
+ 2052, 2055, 2055, 2056, 2057, 2057, 2057, 2058, 2057, 2059,
+ 2059, 2059, 2059, 2059, 2060, 2060, 2060, 2060, 2060, 2060,
+ 2060, 2060, 2061, 2061, 2061, 2061, 2063, 2062, 2065, 2064,
+ 2067, 2066, 2068, 2068, 2069, 2069, 2071, 2070, 2073, 2072,
+ 2074, 2074, 2074, 2076, 2075, 2078, 2077, 2079, 2079, 2080,
+ 2080, 2081, 2081, 2083, 2082, 2084, 2082, 2085, 2082, 2082,
+ 2086, 2082, 2087, 2088, 2082
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -28859,51 +28995,52 @@ static const yytype_int8 yyr2[] =
12, 1, 3, 2, 2, 2, 2, 2, 2, 2,
0, 12, 0, 6, 2, 0, 1, 3, 1, 0,
2, 0, 2, 0, 1, 4, 0, 2, 0, 3,
- 0, 0, 1, 1, 1, 1, 2, 3, 1, 0,
- 2, 0, 2, 2, 2, 2, 2, 3, 3, 1,
- 1, 2, 3, 3, 0, 4, 0, 6, 0, 8,
- 0, 3, 0, 1, 3, 1, 0, 0, 2, 3,
- 1, 1, 0, 1, 3, 1, 1, 1, 1, 0,
- 4, 3, 0, 3, 2, 3, 1, 3, 5, 2,
- 1, 3, 3, 1, 0, 4, 4, 1, 0, 6,
- 0, 3, 0, 0, 3, 1, 1, 1, 1, 1,
- 3, 1, 1, 1, 3, 0, 1, 1, 1, 1,
- 2, 1, 1, 2, 3, 3, 1, 1, 0, 1,
- 0, 2, 3, 5, 1, 1, 1, 1, 1, 1,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 6, 4, 3, 1, 0, 2, 0, 2, 2,
+ 2, 2, 2, 3, 3, 1, 1, 2, 3, 3,
+ 0, 4, 0, 6, 0, 8, 0, 3, 0, 1,
+ 3, 1, 0, 0, 2, 3, 1, 1, 0, 1,
+ 3, 1, 1, 1, 1, 0, 4, 3, 0, 3,
+ 2, 3, 1, 3, 5, 2, 1, 3, 3, 1,
+ 0, 4, 4, 1, 0, 6, 0, 3, 0, 0,
+ 5, 1, 1, 1, 1, 1, 3, 1, 1, 1,
+ 3, 0, 1, 1, 1, 1, 2, 1, 1, 2,
+ 3, 3, 1, 1, 0, 1, 0, 2, 3, 5,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 4, 0, 1, 1, 3, 1, 3, 3, 1,
- 2, 1, 1, 1, 1, 1, 3, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 4, 0, 1,
+ 1, 3, 1, 3, 3, 1, 2, 1, 1, 1,
+ 1, 1, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 0, 5, 0, 2,
- 1, 1, 0, 3, 1, 1, 2, 0, 4, 0,
- 5, 1, 2, 0, 4, 0, 5, 2, 2, 2,
- 0, 2, 0, 0, 3, 0, 3, 1, 3, 0,
- 3, 1, 1, 1, 3, 3, 4, 5, 2, 4,
- 2, 1, 3, 0, 0, 6, 0, 2, 2, 2,
- 0, 6, 0, 3, 1, 1, 2, 1, 2, 0,
- 5, 0, 5, 0, 2, 0, 1, 0, 1, 2,
- 5, 3, 5, 3, 5, 1, 0, 5, 0, 5,
- 0, 0, 0, 8, 0, 5, 0, 3, 0, 3,
- 0, 0, 5, 0, 3, 1, 1, 1, 1, 1,
- 0, 5, 3, 1, 2, 4, 0, 4, 1, 4,
- 1, 0, 1, 0, 4, 0, 0, 3, 0, 6,
- 6, 0, 4, 2, 2, 0, 3, 2, 0, 3,
- 0, 1, 0, 3, 0, 1, 1, 3, 1, 4,
- 3, 3, 0, 2, 0, 0, 7, 0, 10, 1,
- 3, 1, 1, 0, 2, 0, 3, 1, 3, 0,
- 1, 0, 6, 1, 0, 0, 4, 0, 3, 1,
- 1, 1, 1, 1, 1, 3, 1, 3, 0, 0,
- 5, 1, 3, 1, 1, 0, 3, 1, 3, 0,
- 4, 1, 0, 1, 2, 1, 1, 1, 0, 1,
- 2, 1, 3, 4, 3, 3, 3, 3, 4, 4,
- 3, 0, 0, 6, 3, 0, 2, 0, 1, 0,
- 1, 0, 1, 1, 2, 1, 1, 3, 0, 3,
- 0, 3, 1, 3, 0, 1, 1, 2, 1, 2,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 1, 3, 0, 5, 0, 2, 1, 1, 0, 3,
+ 1, 1, 2, 0, 4, 0, 5, 1, 2, 0,
+ 4, 0, 5, 2, 2, 2, 0, 4, 0, 0,
+ 5, 0, 5, 1, 3, 0, 3, 1, 1, 1,
+ 3, 3, 4, 5, 2, 4, 2, 1, 3, 0,
+ 0, 6, 0, 2, 2, 2, 0, 6, 0, 3,
+ 1, 1, 2, 1, 2, 0, 5, 0, 5, 0,
+ 2, 0, 1, 0, 1, 2, 5, 3, 5, 3,
+ 5, 1, 0, 5, 0, 5, 0, 0, 0, 8,
+ 0, 5, 0, 3, 0, 3, 0, 0, 5, 0,
+ 3, 1, 1, 1, 1, 1, 0, 5, 3, 1,
+ 2, 4, 0, 4, 1, 4, 1, 0, 1, 0,
+ 4, 0, 0, 3, 0, 6, 6, 0, 4, 2,
+ 2, 0, 3, 2, 0, 3, 0, 1, 0, 3,
+ 0, 1, 1, 3, 1, 4, 3, 3, 0, 2,
+ 0, 0, 7, 0, 10, 1, 3, 1, 1, 0,
+ 2, 0, 3, 1, 3, 0, 1, 0, 6, 1,
+ 0, 0, 4, 0, 3, 1, 1, 1, 1, 1,
+ 1, 3, 1, 3, 0, 0, 5, 1, 3, 1,
+ 1, 0, 3, 1, 3, 0, 4, 1, 0, 1,
+ 2, 1, 1, 1, 0, 1, 2, 1, 3, 4,
+ 3, 3, 3, 3, 4, 4, 3, 0, 0, 6,
+ 3, 0, 2, 0, 1, 0, 1, 0, 1, 1,
+ 2, 1, 1, 3, 0, 3, 0, 3, 1, 3,
+ 0, 1, 1, 2, 1, 2, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 0, 6, 1, 1, 3, 4, 4, 2, 2,
- 2, 3, 3, 3, 1, 3, 1, 3, 3, 3,
- 3, 0, 1, 2, 4, 4, 1, 1, 1, 1,
+ 3, 3, 3, 3, 3, 3, 3, 0, 6, 1,
+ 1, 3, 4, 4, 2, 2, 2, 3, 3, 3,
+ 1, 3, 1, 3, 3, 3, 3, 1, 1, 1,
+ 1, 0, 1, 2, 4, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 3, 1, 3, 1, 1, 1, 1,
2, 1, 3, 0, 9, 0, 10, 0, 9, 0,
@@ -28945,152 +29082,153 @@ static const yytype_int8 yyr2[] =
5, 5, 0, 3, 1, 4, 0, 3, 0, 2,
0, 1, 0, 2, 2, 2, 2, 1, 1, 1,
4, 4, 0, 6, 4, 0, 5, 0, 6, 4,
- 3, 1, 7, 7, 0, 7, 2, 1, 1, 0,
+ 3, 1, 8, 8, 0, 9, 2, 1, 1, 0,
6, 0, 3, 2, 0, 5, 0, 0, 6, 1,
3, 1, 1, 3, 3, 3, 2, 2, 4, 4,
2, 7, 6, 5, 5, 4, 5, 4, 4, 2,
2, 7, 5, 6, 3, 6, 6, 4, 6, 1,
- 1, 1, 1, 1, 3, 3, 3, 5, 0, 1,
- 1, 2, 2, 3, 3, 3, 3, 0, 1, 0,
- 1, 0, 2, 0, 1, 2, 1, 1, 1, 0,
- 1, 1, 0, 2, 1, 0, 1, 1, 1, 0,
- 7, 0, 5, 5, 4, 3, 0, 1, 1, 3,
- 3, 2, 2, 0, 2, 1, 3, 0, 1, 1,
- 0, 2, 4, 1, 3, 0, 5, 0, 1, 1,
- 3, 0, 4, 0, 4, 0, 1, 1, 2, 1,
- 1, 1, 0, 2, 2, 0, 5, 1, 3, 2,
- 0, 3, 1, 4, 1, 0, 4, 1, 0, 4,
- 0, 1, 3, 0, 1, 3, 1, 1, 2, 6,
- 3, 0, 4, 0, 3, 0, 1, 1, 2, 1,
- 1, 1, 1, 1, 2, 0, 2, 0, 6, 0,
- 1, 1, 0, 5, 4, 3, 5, 1, 3, 4,
- 0, 6, 1, 1, 1, 3, 2, 3, 1, 1,
- 0, 6, 1, 1, 1, 3, 3, 4, 0, 6,
- 0, 2, 0, 4, 0, 2, 0, 3, 0, 4,
- 0, 3, 0, 4, 1, 1, 0, 3, 0, 0,
- 5, 6, 7, 1, 2, 1, 1, 0, 3, 0,
- 3, 3, 3, 1, 0, 4, 3, 1, 1, 1,
- 1, 1, 4, 0, 1, 2, 1, 1, 0, 1,
- 0, 1, 1, 2, 1, 2, 9, 0, 1, 0,
- 2, 3, 1, 4, 4, 2, 1, 1, 1, 1,
- 3, 5, 0, 1, 0, 2, 1, 2, 3, 1,
- 1, 3, 4, 0, 0, 0, 0, 2, 2, 1,
- 1, 0, 2, 3, 0, 2, 3, 0, 2, 3,
- 3, 3, 2, 1, 3, 4, 3, 4, 3, 4,
- 3, 4, 3, 3, 6, 1, 3, 4, 5, 7,
- 6, 8, 5, 6, 4, 3, 5, 4, 6, 3,
- 4, 1, 3, 3, 3, 3, 3, 3, 3, 5,
- 5, 5, 6, 6, 3, 3, 3, 3, 3, 3,
+ 1, 1, 1, 1, 3, 3, 3, 5, 0, 2,
+ 2, 0, 1, 1, 2, 2, 3, 3, 3, 3,
+ 0, 1, 0, 1, 0, 2, 0, 1, 2, 1,
+ 1, 1, 0, 1, 1, 0, 2, 1, 0, 1,
+ 1, 1, 0, 7, 0, 5, 5, 4, 3, 0,
+ 1, 1, 3, 3, 2, 2, 0, 2, 1, 3,
+ 0, 1, 1, 0, 2, 4, 4, 4, 1, 3,
+ 0, 5, 0, 1, 1, 3, 0, 4, 0, 4,
+ 0, 1, 1, 2, 1, 1, 1, 0, 2, 2,
+ 0, 5, 1, 3, 2, 0, 3, 1, 4, 1,
+ 0, 4, 1, 0, 4, 0, 1, 3, 0, 1,
+ 3, 1, 1, 2, 6, 3, 0, 4, 0, 3,
+ 0, 1, 1, 2, 1, 1, 1, 1, 1, 2,
+ 0, 2, 0, 6, 0, 1, 1, 0, 5, 4,
+ 3, 5, 1, 3, 4, 0, 6, 1, 1, 1,
+ 3, 2, 3, 1, 1, 0, 6, 1, 1, 1,
+ 3, 3, 4, 0, 6, 0, 2, 0, 4, 0,
+ 2, 0, 3, 0, 4, 0, 3, 0, 4, 1,
+ 1, 0, 3, 0, 0, 5, 6, 7, 1, 2,
+ 1, 1, 0, 3, 0, 3, 3, 3, 1, 0,
+ 4, 3, 1, 1, 1, 1, 1, 4, 0, 1,
+ 2, 1, 1, 0, 1, 0, 1, 1, 2, 1,
+ 2, 9, 0, 1, 0, 2, 3, 1, 4, 4,
+ 2, 1, 1, 1, 1, 3, 5, 0, 1, 0,
+ 2, 1, 2, 3, 1, 1, 3, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 1, 1,
+ 0, 2, 3, 0, 2, 3, 0, 2, 3, 3,
+ 3, 2, 1, 3, 4, 3, 4, 3, 4, 3,
+ 4, 3, 3, 6, 1, 3, 4, 5, 7, 6,
+ 8, 5, 6, 4, 3, 5, 4, 6, 3, 4,
+ 1, 3, 3, 3, 3, 3, 3, 3, 5, 5,
+ 5, 6, 6, 3, 3, 3, 3, 3, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 2, 1,
- 1, 1, 1, 2, 1, 1, 1, 2, 1, 2,
- 2, 2, 1, 4, 1, 3, 1, 1, 1, 1,
- 3, 1, 1, 1, 4, 4, 4, 3, 3, 3,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 6, 4, 4, 7, 6, 3, 4, 6,
- 6, 4, 4, 4, 4, 4, 4, 6, 8, 10,
- 1, 1, 3, 1, 1, 3, 1, 2, 2, 2,
- 2, 2, 1, 3, 4, 6, 4, 6, 2, 2,
- 4, 4, 4, 10, 6, 8, 6, 4, 4, 6,
- 4, 3, 4, 1, 4, 3, 4, 1, 1, 5,
- 3, 5, 3, 6, 8, 2, 2, 8, 8, 6,
- 6, 2, 6, 3, 6, 8, 4, 3, 4, 8,
- 8, 4, 2, 2, 2, 6, 6, 4, 8, 4,
- 4, 8, 4, 6, 6, 4, 6, 8, 6, 5,
- 8, 7, 10, 0, 5, 4, 4, 4, 6, 8,
- 6, 6, 6, 6, 6, 2, 3, 0, 4, 0,
- 3, 0, 1, 1, 3, 4, 4, 5, 4, 4,
- 4, 5, 4, 0, 0, 7, 4, 5, 4, 5,
- 4, 4, 4, 4, 4, 5, 0, 9, 0, 8,
- 0, 7, 3, 3, 1, 1, 1, 3, 3, 3,
- 3, 3, 4, 4, 4, 6, 4, 6, 4, 6,
- 5, 0, 7, 4, 4, 4, 4, 1, 0, 3,
- 3, 1, 3, 5, 0, 1, 0, 2, 0, 3,
- 4, 2, 0, 1, 2, 1, 0, 3, 2, 3,
- 3, 3, 2, 1, 1, 1, 1, 1, 2, 1,
- 2, 2, 1, 2, 1, 2, 2, 3, 0, 1,
- 1, 3, 1, 3, 1, 3, 4, 5, 1, 3,
- 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 4, 1, 3, 0, 3, 0, 5, 2, 4,
- 4, 1, 1, 1, 1, 0, 1, 2, 1, 2,
- 1, 1, 2, 3, 3, 0, 0, 10, 1, 4,
- 1, 3, 3, 0, 6, 0, 8, 4, 0, 8,
- 0, 10, 6, 0, 8, 0, 10, 6, 1, 2,
- 1, 1, 2, 0, 1, 5, 1, 1, 1, 1,
- 1, 1, 3, 1, 3, 3, 3, 3, 3, 3,
- 3, 5, 3, 0, 1, 0, 2, 3, 3, 1,
- 1, 0, 7, 0, 7, 1, 2, 0, 0, 2,
- 0, 2, 0, 1, 1, 1, 1, 3, 1, 3,
+ 1, 1, 1, 1, 1, 1, 0, 2, 1, 1,
+ 1, 1, 2, 1, 1, 1, 2, 1, 2, 2,
+ 2, 1, 4, 1, 3, 1, 1, 1, 1, 3,
+ 1, 1, 1, 4, 4, 4, 3, 3, 3, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 6, 4, 4, 7, 6, 3, 4, 6, 6,
+ 4, 4, 4, 4, 4, 4, 6, 8, 10, 1,
+ 1, 3, 1, 1, 3, 1, 2, 2, 2, 2,
+ 2, 1, 3, 4, 6, 4, 6, 2, 2, 4,
+ 4, 4, 10, 6, 8, 6, 4, 4, 6, 4,
+ 3, 4, 1, 4, 3, 4, 1, 1, 5, 3,
+ 5, 3, 6, 8, 2, 2, 8, 8, 6, 6,
+ 2, 6, 3, 6, 8, 4, 3, 4, 8, 8,
+ 4, 2, 2, 2, 6, 6, 4, 8, 4, 4,
+ 8, 4, 6, 6, 4, 6, 8, 6, 5, 8,
+ 7, 10, 0, 5, 4, 4, 4, 6, 8, 6,
+ 6, 6, 6, 6, 2, 3, 0, 4, 0, 3,
+ 0, 1, 1, 3, 4, 4, 5, 4, 4, 4,
+ 5, 4, 0, 0, 7, 4, 5, 4, 5, 4,
+ 4, 4, 4, 4, 5, 0, 9, 0, 8, 0,
+ 7, 3, 3, 1, 1, 1, 3, 3, 3, 3,
+ 3, 4, 4, 4, 6, 4, 6, 4, 6, 5,
+ 0, 7, 4, 4, 4, 4, 1, 0, 3, 3,
+ 1, 3, 5, 0, 1, 0, 2, 0, 3, 4,
+ 2, 0, 1, 2, 1, 0, 3, 2, 3, 3,
+ 3, 2, 1, 1, 1, 1, 1, 2, 1, 2,
+ 2, 1, 2, 1, 2, 2, 3, 0, 1, 1,
+ 3, 1, 3, 1, 3, 4, 5, 1, 3, 1,
+ 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 4, 1, 3, 0, 3, 0, 5, 2, 4, 4,
+ 1, 1, 1, 1, 0, 1, 2, 1, 2, 1,
+ 1, 2, 3, 3, 0, 0, 10, 1, 4, 1,
+ 3, 3, 0, 6, 0, 8, 4, 0, 8, 0,
+ 10, 6, 0, 8, 0, 10, 6, 1, 2, 1,
+ 1, 2, 0, 1, 5, 1, 1, 1, 1, 1,
+ 1, 3, 1, 3, 3, 3, 3, 3, 3, 3,
+ 5, 3, 0, 1, 0, 2, 3, 3, 1, 1,
+ 0, 7, 0, 7, 1, 2, 0, 0, 2, 0,
+ 2, 0, 1, 1, 1, 1, 3, 1, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 1, 1, 0, 1,
- 2, 0, 1, 0, 0, 3, 0, 0, 3, 0,
- 4, 4, 2, 0, 1, 1, 0, 2, 3, 1,
- 3, 0, 7, 0, 1, 0, 3, 0, 3, 0,
- 3, 1, 1, 1, 4, 2, 2, 2, 1, 2,
- 2, 0, 3, 2, 2, 3, 3, 3, 3, 1,
- 2, 0, 1, 0, 4, 4, 2, 0, 1, 1,
- 0, 1, 2, 5, 4, 1, 4, 7, 5, 8,
- 3, 1, 1, 1, 1, 1, 2, 1, 1, 3,
- 3, 1, 3, 1, 1, 1, 1, 1, 0, 2,
- 3, 4, 1, 2, 1, 0, 1, 1, 1, 0,
- 2, 2, 2, 1, 0, 1, 2, 2, 2, 1,
- 2, 2, 2, 2, 1, 1, 1, 1, 1, 2,
- 1, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 0, 1, 1, 0, 1, 2,
+ 0, 1, 0, 0, 3, 0, 0, 3, 0, 4,
+ 4, 2, 0, 1, 1, 0, 2, 3, 1, 3,
+ 0, 7, 0, 1, 0, 3, 0, 3, 0, 3,
+ 1, 1, 1, 4, 2, 2, 2, 1, 2, 2,
+ 0, 3, 2, 2, 3, 3, 3, 3, 1, 2,
+ 0, 1, 0, 4, 4, 2, 0, 1, 1, 0,
+ 1, 2, 5, 4, 1, 4, 7, 5, 8, 3,
+ 1, 1, 1, 1, 1, 2, 1, 1, 3, 3,
+ 1, 3, 1, 1, 1, 1, 1, 0, 2, 3,
+ 4, 1, 2, 1, 0, 1, 1, 1, 0, 2,
+ 2, 2, 1, 0, 1, 2, 2, 2, 1, 2,
+ 2, 2, 2, 1, 1, 1, 1, 1, 2, 1,
+ 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 0, 6, 0, 1, 3, 1, 3, 0, 2,
- 3, 1, 1, 2, 1, 3, 2, 0, 0, 7,
- 2, 1, 0, 3, 0, 8, 0, 8, 4, 5,
- 5, 0, 6, 4, 4, 4, 0, 6, 1, 1,
- 3, 1, 2, 1, 3, 1, 0, 2, 0, 2,
- 0, 1, 0, 0, 12, 0, 0, 10, 0, 0,
- 0, 1, 1, 0, 1, 1, 1, 0, 1, 0,
- 2, 1, 2, 0, 3, 3, 0, 1, 3, 1,
- 1, 3, 1, 3, 1, 3, 1, 1, 0, 1,
- 1, 1, 1, 1, 0, 4, 0, 4, 0, 1,
- 0, 1, 3, 1, 5, 3, 1, 1, 1, 1,
- 0, 0, 0, 7, 5, 1, 0, 0, 0, 13,
- 3, 1, 3, 3, 3, 1, 3, 0, 1, 0,
- 3, 0, 3, 2, 3, 3, 2, 5, 0, 0,
- 7, 0, 0, 8, 0, 0, 3, 1, 3, 2,
- 4, 0, 2, 0, 2, 1, 1, 1, 0, 0,
- 7, 0, 1, 0, 1, 1, 3, 1, 1, 2,
- 2, 2, 1, 1, 1, 1, 0, 3, 0, 3,
- 2, 4, 4, 3, 4, 4, 1, 3, 3, 3,
- 3, 6, 2, 2, 0, 6, 0, 8, 5, 2,
- 1, 1, 1, 5, 5, 2, 2, 1, 4, 3,
- 2, 3, 2, 2, 1, 4, 4, 3, 3, 3,
- 2, 2, 3, 4, 3, 3, 3, 3, 4, 4,
- 3, 2, 3, 3, 3, 3, 3, 4, 4, 3,
- 3, 4, 4, 3, 4, 4, 3, 1, 1, 1,
- 1, 1, 0, 1, 0, 2, 0, 1, 1, 1,
- 0, 2, 0, 2, 0, 3, 3, 0, 4, 0,
- 4, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 2, 1, 1, 0, 3, 0, 1, 1, 5,
- 0, 4, 0, 4, 1, 0, 1, 4, 0, 3,
- 3, 1, 2, 2, 2, 2, 3, 4, 2, 1,
- 1, 1, 1, 2, 1, 1, 1, 1, 1, 2,
- 0, 1, 2, 2, 0, 3, 1, 0, 5, 0,
- 1, 3, 1, 0, 3, 0, 3, 3, 1, 0,
- 5, 0, 3, 2, 0, 1, 0, 2, 5, 0,
- 6, 0, 4, 0, 1, 1, 2, 2, 3, 0,
- 1, 1, 2, 0, 3, 0, 4, 2, 0, 0,
- 0, 0, 23, 1, 1, 0, 1, 0, 1, 1,
- 0, 1, 1, 0, 2, 2, 1, 3, 4, 3,
- 3, 0, 2, 2, 1, 3, 3, 0, 4, 0,
- 3, 1, 1, 0, 3, 2, 3, 1, 1, 2,
- 0, 2, 3, 1, 5, 1, 1, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 2, 2, 2, 0, 4, 0,
- 1, 1, 3, 7, 0, 0, 4, 0, 3, 1,
- 1, 1, 3, 1, 1, 1, 3, 5, 3, 5,
- 1, 1, 3, 4, 5, 4, 1, 3, 4, 4,
- 5, 1, 5, 3, 2, 1, 3, 2, 2, 4,
+ 0, 6, 0, 1, 3, 1, 3, 0, 2, 3,
+ 1, 1, 2, 1, 3, 2, 0, 0, 7, 2,
+ 1, 0, 3, 0, 8, 0, 8, 4, 5, 5,
+ 0, 6, 4, 4, 4, 0, 6, 1, 1, 3,
+ 1, 2, 1, 3, 1, 0, 2, 0, 2, 0,
+ 1, 0, 0, 12, 0, 0, 10, 0, 0, 0,
+ 1, 1, 0, 1, 1, 1, 0, 1, 0, 2,
+ 1, 2, 0, 3, 3, 0, 1, 3, 1, 1,
+ 3, 1, 3, 1, 3, 1, 1, 0, 1, 1,
+ 1, 1, 1, 0, 4, 0, 4, 0, 1, 0,
+ 1, 3, 1, 5, 3, 1, 1, 1, 1, 0,
+ 0, 0, 7, 5, 1, 0, 0, 0, 13, 3,
+ 1, 3, 3, 3, 1, 3, 0, 1, 0, 3,
+ 0, 3, 2, 0, 5, 3, 2, 0, 7, 0,
+ 0, 7, 0, 0, 8, 0, 0, 3, 0, 2,
+ 0, 2, 1, 1, 1, 0, 0, 7, 0, 1,
+ 0, 1, 1, 3, 1, 1, 2, 2, 2, 1,
+ 1, 1, 1, 0, 3, 0, 3, 2, 4, 4,
+ 3, 4, 4, 1, 3, 3, 3, 3, 6, 2,
+ 2, 0, 6, 0, 8, 5, 2, 1, 1, 1,
+ 5, 5, 2, 2, 1, 4, 3, 2, 3, 2,
+ 2, 1, 4, 4, 3, 3, 3, 2, 2, 3,
+ 4, 3, 3, 3, 3, 4, 4, 3, 2, 3,
+ 3, 3, 3, 3, 4, 4, 3, 3, 4, 4,
+ 3, 4, 4, 3, 1, 1, 1, 1, 1, 0,
+ 1, 0, 2, 0, 1, 1, 1, 0, 2, 0,
+ 2, 0, 3, 3, 0, 4, 0, 4, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 1, 2, 1,
+ 1, 0, 3, 0, 1, 1, 5, 0, 4, 0,
+ 4, 1, 0, 1, 4, 0, 3, 3, 1, 2,
+ 2, 2, 2, 3, 4, 2, 1, 1, 1, 1,
+ 2, 1, 1, 1, 1, 1, 2, 0, 1, 2,
+ 2, 0, 3, 1, 0, 5, 0, 1, 3, 1,
+ 0, 3, 0, 3, 3, 1, 0, 5, 0, 3,
+ 2, 0, 1, 0, 2, 5, 0, 6, 0, 4,
+ 0, 1, 1, 2, 2, 3, 0, 1, 1, 2,
+ 0, 3, 0, 4, 2, 0, 0, 0, 0, 23,
+ 1, 1, 0, 1, 0, 1, 1, 0, 1, 1,
+ 0, 2, 2, 1, 3, 4, 3, 3, 0, 2,
+ 2, 1, 3, 3, 0, 4, 0, 3, 1, 1,
+ 0, 3, 2, 3, 1, 1, 2, 0, 2, 3,
+ 1, 5, 1, 1, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
+ 1, 2, 2, 2, 0, 4, 0, 1, 1, 3,
+ 7, 0, 0, 4, 0, 3, 1, 1, 1, 3,
+ 1, 1, 1, 3, 5, 3, 5, 1, 1, 3,
+ 4, 5, 4, 1, 3, 4, 4, 5, 1, 5,
+ 3, 2, 1, 3, 2, 2, 4, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 3, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -29163,28 +29301,28 @@ static const yytype_int8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 3, 1, 3, 0, 3, 0, 3,
- 0, 5, 1, 3, 1, 3, 0, 3, 1, 3,
- 0, 3, 1, 1, 1, 1, 0, 1, 1, 1,
- 0, 2, 2, 2, 0, 4, 0, 6, 0, 6,
- 0, 4, 0, 6, 0, 6, 0, 4, 0, 6,
- 0, 6, 0, 5, 0, 7, 0, 9, 0, 9,
- 2, 3, 2, 4, 3, 5, 2, 0, 4, 0,
- 4, 0, 6, 1, 1, 3, 3, 1, 3, 2,
- 2, 2, 2, 2, 1, 1, 4, 4, 1, 1,
- 1, 1, 1, 0, 5, 0, 2, 1, 1, 1,
- 1, 3, 3, 1, 1, 2, 2, 2, 0, 3,
- 0, 3, 3, 2, 0, 6, 1, 2, 1, 1,
- 1, 1, 1, 1, 0, 5, 1, 1, 1, 1,
- 1, 3, 6, 6, 7, 5, 3, 4, 1, 3,
- 8, 8, 6, 4, 0, 3, 0, 3, 1, 3,
- 2, 1, 1, 1, 0, 1, 1, 2, 0, 1,
- 1, 1, 3, 3, 4, 1, 1, 1, 1, 1,
+ 0, 3, 1, 3, 0, 3, 0, 3, 0, 5,
+ 1, 3, 1, 3, 0, 3, 1, 3, 0, 3,
+ 1, 1, 1, 1, 0, 1, 1, 1, 0, 2,
+ 2, 2, 0, 4, 0, 6, 0, 6, 0, 4,
+ 0, 6, 0, 6, 0, 4, 0, 6, 0, 6,
+ 0, 7, 0, 7, 0, 9, 0, 9, 2, 3,
+ 2, 4, 3, 5, 2, 0, 4, 0, 4, 0,
+ 6, 1, 1, 3, 3, 1, 3, 2, 2, 2,
+ 2, 2, 1, 1, 4, 4, 3, 3, 3, 1,
+ 1, 1, 0, 5, 0, 2, 1, 1, 1, 1,
+ 3, 3, 1, 1, 2, 2, 2, 0, 3, 0,
+ 3, 3, 2, 0, 6, 1, 2, 1, 1, 1,
+ 1, 1, 1, 0, 5, 1, 1, 1, 1, 1,
+ 3, 6, 6, 7, 5, 3, 4, 1, 3, 8,
+ 8, 6, 4, 0, 3, 0, 3, 1, 3, 2,
+ 1, 1, 1, 0, 1, 1, 2, 0, 1, 1,
+ 1, 3, 3, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 1, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2, 3, 3,
- 2, 0, 1, 3, 1, 2, 2, 2, 1, 3,
+ 1, 1, 1, 2, 2, 1, 3, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 2, 2, 2,
+ 2, 2, 3, 2, 2, 2, 2, 3, 3, 2,
+ 3, 0, 1, 3, 1, 2, 2, 2, 1, 3,
3, 1, 1, 3, 1, 3, 1, 3, 1, 1,
1, 1, 4, 5, 4, 1, 3, 1, 2, 0,
2, 5, 0, 2, 2, 2, 2, 2, 2, 2,
@@ -29196,19 +29334,24 @@ static const yytype_int8 yyr2[] =
0, 3, 3, 3, 3, 0, 1, 3, 3, 0,
3, 1, 3, 0, 3, 0, 3, 4, 4, 1,
1, 0, 2, 0, 0, 0, 0, 0, 20, 0,
- 2, 4, 4, 3, 4, 3, 3, 0, 3, 1,
- 3, 5, 1, 1, 1, 0, 1, 1, 0, 2,
- 0, 0, 3, 0, 2, 6, 3, 4, 4, 1,
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 1, 1, 2, 0, 1, 0, 2, 4,
+ 4, 3, 4, 3, 3, 0, 3, 1, 3, 5,
+ 1, 1, 1, 0, 1, 1, 0, 2, 0, 0,
+ 3, 0, 2, 6, 3, 4, 4, 1, 0, 1,
+ 1, 1, 1, 0, 1, 1, 0, 0, 1, 1,
+ 1, 2, 3, 1, 1, 2, 1, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 0, 6, 4, 2, 1, 1,
- 1, 2, 5, 6, 2, 1, 2, 3, 1, 6,
- 8, 5, 7, 0, 4, 0, 0, 7, 6, 4,
- 4, 0, 6, 0, 11, 0, 11, 10, 1, 3,
- 2, 1, 4, 1, 0, 6, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 6, 4,
+ 2, 1, 1, 1, 4, 5, 6, 2, 1, 2,
+ 3, 1, 6, 8, 5, 7, 0, 4, 0, 0,
+ 7, 1, 3, 2, 1, 4, 1, 0, 6, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 7, 0, 5, 0, 7
+ 1, 1, 1, 1, 1, 1, 0, 7, 0, 5,
+ 0, 7, 1, 2, 1, 2, 0, 6, 0, 5,
+ 4, 4, 1, 0, 5, 0, 5, 1, 1, 1,
+ 2, 3, 3, 0, 6, 0, 11, 0, 11, 10,
+ 0, 12, 0, 0, 13
};
@@ -29414,7 +29557,7 @@ yydestruct (const char *yymsg,
switch (yykind)
{
case YYSYMBOL_expr_lex: /* expr_lex */
-#line 1551 "/home/buildbot/git/mkdist/sql/yy_mariadb.yy"
+#line 1572 "/home/buildbot/git/mkdist/sql/yy_mariadb.yy"
{
/*
In case of a syntax/oom error let's free the sp_expr_lex
@@ -29426,11 +29569,11 @@ yydestruct (const char *yymsg,
if (!((*yyvaluep).expr_lex)->sp_lex_in_use)
delete ((*yyvaluep).expr_lex);
}
-#line 29430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29573 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case YYSYMBOL_cursor_actual_parameters: /* cursor_actual_parameters */
-#line 1610 "/home/buildbot/git/mkdist/sql/yy_mariadb.yy"
+#line 1632 "/home/buildbot/git/mkdist/sql/yy_mariadb.yy"
{
if (((*yyvaluep).sp_assignment_lex_list))
{
@@ -29443,11 +29586,11 @@ yydestruct (const char *yymsg,
}
}
}
-#line 29447 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case YYSYMBOL_opt_parenthesized_cursor_actual_parameters: /* opt_parenthesized_cursor_actual_parameters */
-#line 1610 "/home/buildbot/git/mkdist/sql/yy_mariadb.yy"
+#line 1632 "/home/buildbot/git/mkdist/sql/yy_mariadb.yy"
{
if (((*yyvaluep).sp_assignment_lex_list))
{
@@ -29460,7 +29603,7 @@ yydestruct (const char *yymsg,
}
}
}
-#line 29464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
default:
@@ -29734,7 +29877,7 @@ yyreduce:
switch (yyn)
{
case 2: /* query: END_OF_INPUT */
-#line 1976 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2007 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!thd->bootstrap &&
(!(thd->lex->lex_options & OPTION_LEX_FOUND_COMMENT)))
@@ -29743,11 +29886,11 @@ yyreduce:
thd->lex->sql_command= SQLCOM_EMPTY_QUERY;
YYLIP->found_semicolon= NULL;
}
-#line 29747 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29890 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 3: /* $@1: %empty */
-#line 1985 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2016 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_input_stream *lip = YYLIP;
@@ -29770,186 +29913,186 @@ yyreduce:
lip->found_semicolon= NULL;
}
}
-#line 29774 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29917 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 5: /* query: directly_executable_statement END_OF_INPUT */
-#line 2010 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2041 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Single query, not terminated. */
YYLIP->found_semicolon= NULL;
}
-#line 29783 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29926 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 71: /* deallocate: deallocate_or_drop PREPARE_SYM ident */
-#line 2093 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2124 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_deallocate_prepare((yyvsp[0].ident_sys));
}
-#line 29791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 74: /* $@2: %empty */
-#line 2105 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2136 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "PREPARE..FROM"; }
-#line 29797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 75: /* prepare: PREPARE_SYM ident FROM $@2 expr */
-#line 2107 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2138 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->clause_that_disallows_subselect= NULL;
if (Lex->stmt_prepare((yyvsp[-3].ident_sys), (yyvsp[0].item)))
MYSQL_YYABORT;
}
-#line 29807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29950 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 76: /* execute: EXECUTE_SYM ident execute_using */
-#line 2116 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2147 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_execute((yyvsp[-1].ident_sys), (yyvsp[0].item_list)))
MYSQL_YYABORT;
}
-#line 29816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 77: /* $@3: %empty */
-#line 2121 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2152 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "EXECUTE IMMEDIATE"; }
-#line 29822 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 78: /* $@4: %empty */
-#line 2123 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2154 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= NULL; }
-#line 29828 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29971 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 79: /* execute: EXECUTE_SYM IMMEDIATE_SYM $@3 expr $@4 execute_using */
-#line 2125 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2156 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_execute_immediate((yyvsp[-2].item), (yyvsp[0].item_list)))
MYSQL_YYABORT;
}
-#line 29837 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29980 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 80: /* execute_using: %empty */
-#line 2132 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2163 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= NULL; }
-#line 29843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29986 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 81: /* $@5: %empty */
-#line 2134 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2165 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "EXECUTE..USING"; }
-#line 29849 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 29992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 82: /* execute_using: USING $@5 execute_params */
-#line 2136 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2167 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= (yyvsp[0].item_list);
Lex->clause_that_disallows_subselect= NULL;
}
-#line 29858 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 83: /* execute_params: expr_or_ignore_or_default */
-#line 2144 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2175 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_list)= List<Item>::make(thd->mem_root, (yyvsp[0].item)))))
MYSQL_YYABORT;
}
-#line 29867 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30010 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 84: /* execute_params: execute_params ',' expr_or_ignore_or_default */
-#line 2149 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2180 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.item_list)= (yyvsp[-2].item_list))->push_back((yyvsp[0].item), thd->mem_root))
MYSQL_YYABORT;
}
-#line 29876 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30019 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 85: /* $@6: %empty */
-#line 2160 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2191 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead))
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "HELP"));
}
-#line 29885 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30028 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 86: /* help: HELP_SYM $@6 ident_or_text */
-#line 2165 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2196 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_HELP;
lex->help_arg= (yyvsp[0].lex_str).str;
}
-#line 29895 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 87: /* $@7: %empty */
-#line 2176 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2207 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_CHANGE_MASTER;
}
-#line 29903 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30046 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 88: /* change: CHANGE MASTER_SYM optional_connection_name TO_SYM $@7 master_defs optional_for_channel */
-#line 2181 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2212 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 29909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30052 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 91: /* master_def: MASTER_HOST_SYM '=' TEXT_STRING_sys */
-#line 2191 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2222 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.host = (yyvsp[0].lex_str).str;
}
-#line 29917 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 92: /* master_def: MASTER_USER_SYM '=' TEXT_STRING_sys */
-#line 2195 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2226 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.user = (yyvsp[0].lex_str).str;
}
-#line 29925 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 93: /* master_def: MASTER_PASSWORD_SYM '=' TEXT_STRING_sys */
-#line 2199 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2230 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.password = (yyvsp[0].lex_str).str;
}
-#line 29933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30076 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 94: /* master_def: MASTER_PORT_SYM '=' ulong_num */
-#line 2203 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2234 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.port = (yyvsp[0].ulong_num);
}
-#line 29941 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 95: /* master_def: MASTER_CONNECT_RETRY_SYM '=' ulong_num */
-#line 2207 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2238 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.connect_retry = (yyvsp[0].ulong_num);
}
-#line 29949 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30092 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 96: /* master_def: MASTER_DELAY_SYM '=' ulong_num */
-#line 2211 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2242 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].ulong_num) > MASTER_DELAY_MAX)
{
@@ -29959,85 +30102,85 @@ yyreduce:
else
Lex->mi.sql_delay = (yyvsp[0].ulong_num);
}
-#line 29963 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30106 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 97: /* master_def: MASTER_SSL_SYM '=' ulong_num */
-#line 2221 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2252 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl= (yyvsp[0].ulong_num) ?
LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE;
}
-#line 29972 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30115 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 98: /* master_def: MASTER_SSL_CA_SYM '=' TEXT_STRING_sys */
-#line 2226 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2257 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_ca= (yyvsp[0].lex_str).str;
}
-#line 29980 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30123 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 99: /* master_def: MASTER_SSL_CAPATH_SYM '=' TEXT_STRING_sys */
-#line 2230 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2261 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_capath= (yyvsp[0].lex_str).str;
}
-#line 29988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 100: /* master_def: MASTER_SSL_CERT_SYM '=' TEXT_STRING_sys */
-#line 2234 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2265 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_cert= (yyvsp[0].lex_str).str;
}
-#line 29996 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30139 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 101: /* master_def: MASTER_SSL_CIPHER_SYM '=' TEXT_STRING_sys */
-#line 2238 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2269 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_cipher= (yyvsp[0].lex_str).str;
}
-#line 30004 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30147 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 102: /* master_def: MASTER_SSL_KEY_SYM '=' TEXT_STRING_sys */
-#line 2242 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2273 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_key= (yyvsp[0].lex_str).str;
}
-#line 30012 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30155 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 103: /* master_def: MASTER_SSL_VERIFY_SERVER_CERT_SYM '=' ulong_num */
-#line 2246 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2277 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_verify_server_cert= (yyvsp[0].ulong_num) ?
LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE;
}
-#line 30021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30164 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 104: /* master_def: MASTER_SSL_CRL_SYM '=' TEXT_STRING_sys */
-#line 2251 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2282 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_crl= (yyvsp[0].lex_str).str;
}
-#line 30029 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 105: /* master_def: MASTER_SSL_CRLPATH_SYM '=' TEXT_STRING_sys */
-#line 2255 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2286 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_crlpath= (yyvsp[0].lex_str).str;
}
-#line 30037 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30180 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 106: /* master_def: MASTER_HEARTBEAT_PERIOD_SYM '=' NUM_literal */
-#line 2260 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2291 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.heartbeat_period= (float) (yyvsp[0].item_num)->val_real();
if (unlikely(Lex->mi.heartbeat_period >
@@ -30065,67 +30208,67 @@ yyreduce:
}
Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 30069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 107: /* master_def: IGNORE_SERVER_IDS_SYM '=' '(' ignore_server_id_list ')' */
-#line 2288 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2319 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.repl_ignore_server_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 30077 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30220 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 108: /* master_def: DO_DOMAIN_IDS_SYM '=' '(' do_domain_id_list ')' */
-#line 2292 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2323 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.repl_do_domain_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 30085 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30228 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 109: /* master_def: IGNORE_DOMAIN_IDS_SYM '=' '(' ignore_domain_id_list ')' */
-#line 2296 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2327 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.repl_ignore_domain_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 30093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30236 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 114: /* ignore_server_id: ulong_num */
-#line 2311 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2342 "/home/buildbot/git/sql/sql_yacc.yy"
{
insert_dynamic(&Lex->mi.repl_ignore_server_ids, (uchar*) &((yyvsp[0].ulong_num)));
}
-#line 30101 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 118: /* do_domain_id: ulong_num */
-#line 2324 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2355 "/home/buildbot/git/sql/sql_yacc.yy"
{
insert_dynamic(&Lex->mi.repl_do_domain_ids, (uchar*) &((yyvsp[0].ulong_num)));
}
-#line 30109 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30252 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 122: /* ignore_domain_id: ulong_num */
-#line 2337 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2368 "/home/buildbot/git/sql/sql_yacc.yy"
{
insert_dynamic(&Lex->mi.repl_ignore_domain_ids, (uchar*) &((yyvsp[0].ulong_num)));
}
-#line 30117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 123: /* master_file_def: MASTER_LOG_FILE_SYM '=' TEXT_STRING_sys */
-#line 2344 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2375 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.log_file_name = (yyvsp[0].lex_str).str;
}
-#line 30125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 124: /* master_file_def: MASTER_LOG_POS_SYM '=' ulonglong_num */
-#line 2348 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2379 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
If the user specified a value < BIN_LOG_HEADER_SIZE, adjust it
@@ -30140,76 +30283,76 @@ yyreduce:
*/
Lex->mi.pos= MY_MAX(BIN_LOG_HEADER_SIZE, (yyvsp[0].ulonglong_number));
}
-#line 30144 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30287 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 125: /* master_file_def: RELAY_LOG_FILE_SYM '=' TEXT_STRING_sys */
-#line 2363 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2394 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.relay_log_name = (yyvsp[0].lex_str).str;
}
-#line 30152 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30295 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 126: /* master_file_def: RELAY_LOG_POS_SYM '=' ulong_num */
-#line 2367 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2398 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.relay_log_pos = (yyvsp[0].ulong_num);
/* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */
Lex->mi.relay_log_pos= MY_MAX(BIN_LOG_HEADER_SIZE, Lex->mi.relay_log_pos);
}
-#line 30162 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30305 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 127: /* master_file_def: MASTER_USE_GTID_SYM '=' CURRENT_POS_SYM */
-#line 2373 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2404 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->mi.use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_UNCHANGED))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_CURRENT_POS;
}
-#line 30172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30315 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 128: /* master_file_def: MASTER_USE_GTID_SYM '=' SLAVE_POS_SYM */
-#line 2379 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2410 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->mi.use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_UNCHANGED))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_SLAVE_POS;
}
-#line 30182 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 129: /* master_file_def: MASTER_USE_GTID_SYM '=' NO_SYM */
-#line 2385 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2416 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->mi.use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_UNCHANGED))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_NO;
}
-#line 30192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30335 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 130: /* master_file_def: MASTER_DEMOTE_TO_SLAVE_SYM '=' bool */
-#line 2391 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2422 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.is_demotion_opt= (bool) (yyvsp[0].ulong_num);
}
-#line 30200 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 131: /* optional_connection_name: %empty */
-#line 2398 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2429 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->mi.connection_name= null_clex_str;
}
-#line 30209 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30352 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 133: /* connection_name: TEXT_STRING_sys */
-#line 2407 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2438 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.connection_name= (yyvsp[0].lex_str);
#ifdef HAVE_REPLICATION
@@ -30217,19 +30360,19 @@ yyreduce:
my_yyabort_error((ER_WRONG_ARGUMENTS, MYF(0), "MASTER_CONNECTION_NAME"));
#endif
}
-#line 30221 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 134: /* optional_for_channel: %empty */
-#line 2418 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2449 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*do nothing */
}
-#line 30229 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30372 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 136: /* for_channel: FOR_SYM CHANNEL_SYM TEXT_STRING_sys */
-#line 2427 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2458 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->mi.connection_name.str != NULL)
{
@@ -30245,11 +30388,11 @@ yyreduce:
}
}
-#line 30249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 137: /* $@8: %empty */
-#line 2448 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2479 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
if (!(lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_create_table()))
@@ -30261,11 +30404,11 @@ yyreduce:
if (lex->set_command_with_check(SQLCOM_CREATE_TABLE, (yyvsp[-2].num), (yyvsp[-3].object_ddl_options) | (yyvsp[0].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 30265 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 138: /* $@9: %empty */
-#line 2460 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2491 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
if (!lex->first_select_lex()->
@@ -30282,21 +30425,21 @@ yyreduce:
lex->create_last_non_select_table= lex->last_table();
lex->inc_select_stack_outer_barrier();
}
-#line 30286 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30429 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 139: /* create: create_or_replace opt_temporary TABLE_SYM opt_if_not_exists $@8 table_ident $@9 create_body */
-#line 2477 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2508 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
create_table_set_open_action_and_adjust_tables(lex);
Lex->pop_select(); //main select
}
-#line 30296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 140: /* $@10: %empty */
-#line 2483 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2514 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
if (lex->main_select_push())
@@ -30326,11 +30469,11 @@ yyreduce:
new (thd->mem_root) sequence_definition())))
MYSQL_YYABORT;
}
-#line 30330 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 141: /* create: create_or_replace opt_temporary SEQUENCE_SYM opt_if_not_exists table_ident $@10 opt_sequence opt_create_table_options */
-#line 2513 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2544 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
@@ -30355,131 +30498,131 @@ yyreduce:
create_table_set_open_action_and_adjust_tables(lex);
Lex->pop_select(); //main select
}
-#line 30359 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30502 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 142: /* $@11: %empty */
-#line 2538 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2569 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 30368 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30511 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 143: /* $@12: %empty */
-#line 2545 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2576 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index(Key::MULTIPLE, &(yyvsp[-3].ident_sys), (yyvsp[-2].key_alg), (yyvsp[-7].object_ddl_options) | (yyvsp[-5].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 30379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 144: /* create: create_or_replace INDEX_SYM opt_if_not_exists $@11 ident opt_key_algorithm_clause ON table_ident $@12 '(' key_list ')' opt_lock_wait_timeout normal_key_options opt_index_lock_algorithm */
-#line 2553 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2584 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30530 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 145: /* $@13: %empty */
-#line 2557 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2588 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 30396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30539 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 146: /* $@14: %empty */
-#line 2564 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2595 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index(Key::UNIQUE, &(yyvsp[-3].ident_sys), (yyvsp[-2].key_alg), (yyvsp[-8].object_ddl_options) | (yyvsp[-5].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 30407 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 147: /* create: create_or_replace UNIQUE_SYM INDEX_SYM opt_if_not_exists $@13 ident opt_key_algorithm_clause ON table_ident $@14 '(' key_list opt_without_overlaps ')' opt_lock_wait_timeout normal_key_options opt_index_lock_algorithm */
-#line 2573 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2604 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30558 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 148: /* $@15: %empty */
-#line 2577 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2608 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 30424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30567 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 149: /* $@16: %empty */
-#line 2583 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2614 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index((yyvsp[-6].key_type), &(yyvsp[-2].ident_sys), HA_KEY_ALG_UNDEF, (yyvsp[-7].object_ddl_options) | (yyvsp[-3].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 30435 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30578 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 150: /* create: create_or_replace fulltext INDEX_SYM $@15 opt_if_not_exists ident ON table_ident $@16 '(' key_list ')' opt_lock_wait_timeout fulltext_key_options opt_index_lock_algorithm */
-#line 2591 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2622 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30586 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 151: /* $@17: %empty */
-#line 2595 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 30452 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30595 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 152: /* $@18: %empty */
-#line 2601 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2632 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index((yyvsp[-6].key_type), &(yyvsp[-2].ident_sys), HA_KEY_ALG_UNDEF, (yyvsp[-7].object_ddl_options) | (yyvsp[-3].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 30463 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 153: /* create: create_or_replace spatial INDEX_SYM $@17 opt_if_not_exists ident ON table_ident $@18 '(' key_list ')' opt_lock_wait_timeout spatial_key_options opt_index_lock_algorithm */
-#line 2609 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2640 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30471 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30614 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 154: /* $@19: %empty */
-#line 2613 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2644 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.init();
}
-#line 30479 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 155: /* create: create_or_replace DATABASE opt_if_not_exists ident $@19 opt_create_database_options */
-#line 2617 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2648 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(lex->set_command_with_check(SQLCOM_CREATE_DB, 0,
@@ -30487,11 +30630,11 @@ yyreduce:
MYSQL_YYABORT;
lex->name= (yyvsp[-2].ident_sys);
}
-#line 30491 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30634 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 156: /* $@20: %empty */
-#line 2626 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2657 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -30500,19 +30643,19 @@ yyreduce:
DTYPE_ALGORITHM_UNDEFINED, (yyvsp[-3].view_suid), (yyvsp[0].table)))
MYSQL_YYABORT;
}
-#line 30504 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 157: /* create: create_or_replace definer_opt opt_view_suid VIEW_SYM opt_if_not_exists table_ident $@20 view_list_opt AS view_select */
-#line 2635 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2666 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30512 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30655 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 158: /* $@21: %empty */
-#line 2640 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2671 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_create_view(thd, (yyvsp[-6].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-5].num), (yyvsp[-3].view_suid), (yyvsp[0].table))))
MYSQL_YYABORT;
@@ -30520,122 +30663,122 @@ yyreduce:
MYSQL_YYABORT;
Lex->inc_select_stack_outer_barrier();
}
-#line 30524 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30667 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 159: /* create: create_or_replace view_algorithm definer_opt opt_view_suid VIEW_SYM opt_if_not_exists table_ident $@21 view_list_opt AS view_select */
-#line 2648 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2679 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30532 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30675 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 160: /* $@22: %empty */
-#line 2652 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2683 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
Lex->create_info.set((yyvsp[-2].object_ddl_options));
}
-#line 30542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30685 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 161: /* create: create_or_replace definer_opt TRIGGER_SYM $@22 trigger_tail */
-#line 2658 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2689 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30693 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 162: /* $@23: %empty */
-#line 2662 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2693 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
Lex->create_info.set((yyvsp[-2].object_ddl_options));
}
-#line 30560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30703 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 163: /* create: create_or_replace definer_opt EVENT_SYM $@23 event_tail */
-#line 2668 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2699 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 30568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30711 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 164: /* create: create_or_replace USER_SYM opt_if_not_exists clear_privileges grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration */
-#line 2673 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2704 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->set_command_with_check(SQLCOM_CREATE_USER,
(yyvsp[-7].object_ddl_options) | (yyvsp[-5].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 30578 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30721 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 165: /* create: create_or_replace ROLE_SYM opt_if_not_exists clear_privileges role_list opt_with_admin */
-#line 2680 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2711 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->set_command_with_check(SQLCOM_CREATE_ROLE,
(yyvsp[-5].object_ddl_options) | (yyvsp[-3].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 30588 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 166: /* $@24: %empty */
-#line 2685 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2716 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->set_command(SQLCOM_CREATE_SERVER, (yyvsp[0].object_ddl_options)); }
-#line 30594 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 167: /* create: create_or_replace $@24 server_def */
-#line 2687 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2718 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 30600 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 169: /* opt_sequence: %empty */
-#line 2692 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2723 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 30606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 173: /* sequence_def: MINVALUE_SYM opt_equal longlong_num */
-#line 2703 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2734 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.seq_create_info->min_value= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_min_value;
}
-#line 30615 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30758 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 174: /* sequence_def: NO_SYM MINVALUE_SYM */
-#line 2708 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2739 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_min_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MINVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_min_value;
}
-#line 30625 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30768 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 175: /* sequence_def: NOMINVALUE_SYM */
-#line 2714 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2745 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_min_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MINVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_min_value;
}
-#line 30635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 176: /* sequence_def: MAXVALUE_SYM opt_equal longlong_num */
-#line 2720 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2751 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_max_value))
@@ -30643,31 +30786,31 @@ yyreduce:
Lex->create_info.seq_create_info->max_value= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_max_value;
}
-#line 30647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30790 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 177: /* sequence_def: NO_SYM MAXVALUE_SYM */
-#line 2728 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2759 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_max_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MAXVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_max_value;
}
-#line 30657 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 178: /* sequence_def: NOMAXVALUE_SYM */
-#line 2734 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2765 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_max_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MAXVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_max_value;
}
-#line 30667 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 179: /* sequence_def: START_SYM opt_with longlong_num */
-#line 2740 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2771 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_start))
@@ -30675,11 +30818,11 @@ yyreduce:
Lex->create_info.seq_create_info->start= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_start;
}
-#line 30679 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30822 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 180: /* sequence_def: INCREMENT_SYM opt_by longlong_num */
-#line 2748 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2779 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_increment))
@@ -30687,11 +30830,11 @@ yyreduce:
Lex->create_info.seq_create_info->increment= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_increment;
}
-#line 30691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30834 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 181: /* sequence_def: CACHE_SYM opt_equal longlong_num */
-#line 2756 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2787 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cache))
@@ -30699,11 +30842,11 @@ yyreduce:
Lex->create_info.seq_create_info->cache= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cache;
}
-#line 30703 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 182: /* sequence_def: NOCACHE_SYM */
-#line 2764 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2795 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cache))
@@ -30711,11 +30854,11 @@ yyreduce:
Lex->create_info.seq_create_info->cache= 0;
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cache;
}
-#line 30715 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30858 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 183: /* sequence_def: CYCLE_SYM */
-#line 2772 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2803 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cycle))
@@ -30723,11 +30866,11 @@ yyreduce:
Lex->create_info.seq_create_info->cycle= 1;
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cycle;
}
-#line 30727 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30870 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 184: /* sequence_def: NOCYCLE_SYM */
-#line 2780 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2811 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cycle))
@@ -30735,11 +30878,11 @@ yyreduce:
Lex->create_info.seq_create_info->cycle= 0;
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cycle;
}
-#line 30739 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 185: /* sequence_def: RESTART_SYM */
-#line 2788 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2819 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sql_command != SQLCOM_ALTER_SEQUENCE))
{
@@ -30751,11 +30894,11 @@ yyreduce:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "RESTART"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_restart;
}
-#line 30755 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 186: /* sequence_def: RESTART_SYM opt_with longlong_num */
-#line 2800 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2831 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sql_command != SQLCOM_ALTER_SEQUENCE))
{
@@ -30768,101 +30911,101 @@ yyreduce:
Lex->create_info.seq_create_info->restart= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_restart | seq_field_used_restart_value;
}
-#line 30772 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30915 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 187: /* force_lookahead: %empty */
-#line 2815 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2846 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30921 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 188: /* force_lookahead: FORCE_LOOKAHEAD */
-#line 2815 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2846 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30784 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30927 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 189: /* $@25: %empty */
-#line 2819 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2850 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_create_options_with_check((yyvsp[-1].object_ddl_options))))
MYSQL_YYABORT;
Lex->server_options.reset((yyvsp[0].lex_str));
}
-#line 30794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30937 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 190: /* server_def: SERVER_SYM opt_if_not_exists ident_or_text $@25 FOREIGN DATA_SYM WRAPPER_SYM ident_or_text OPTIONS_SYM '(' server_options_list ')' */
-#line 2826 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2857 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->server_options.scheme= (yyvsp[-4].lex_str); }
-#line 30800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30943 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 193: /* server_option: USER_SYM TEXT_STRING_sys */
-#line 2836 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2867 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.username.str == 0);
Lex->server_options.username= (yyvsp[0].lex_str);
}
-#line 30809 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 194: /* server_option: HOST_SYM TEXT_STRING_sys */
-#line 2841 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2872 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.host.str == 0);
Lex->server_options.host= (yyvsp[0].lex_str);
}
-#line 30818 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 195: /* server_option: DATABASE TEXT_STRING_sys */
-#line 2846 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2877 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.db.str == 0);
Lex->server_options.db= (yyvsp[0].lex_str);
}
-#line 30827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30970 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 196: /* server_option: OWNER_SYM TEXT_STRING_sys */
-#line 2851 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2882 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.owner.str == 0);
Lex->server_options.owner= (yyvsp[0].lex_str);
}
-#line 30836 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 197: /* server_option: PASSWORD_SYM TEXT_STRING_sys */
-#line 2856 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2887 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.password.str == 0);
Lex->server_options.password= (yyvsp[0].lex_str);
}
-#line 30845 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 198: /* server_option: SOCKET_SYM TEXT_STRING_sys */
-#line 2861 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2892 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.socket.str == 0);
Lex->server_options.socket= (yyvsp[0].lex_str);
}
-#line 30854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 30997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 199: /* server_option: PORT_SYM ulong_num */
-#line 2866 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2897 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->server_options.port= (yyvsp[0].ulong_num);
}
-#line 30862 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31005 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 200: /* $@26: %empty */
-#line 2873 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2904 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
@@ -30879,11 +31022,11 @@ yyreduce:
lex->sql_command= SQLCOM_CREATE_EVENT;
/* We need that for disallowing subqueries */
}
-#line 30883 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31026 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 201: /* event_tail: remember_name opt_if_not_exists sp_name $@26 ON SCHEDULE_SYM ev_schedule_time opt_ev_on_completion opt_ev_status opt_ev_comment DO_SYM ev_sql_stmt */
-#line 2894 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2925 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
sql_command is set here because some rules in ev_sql_stmt
@@ -30891,123 +31034,123 @@ yyreduce:
*/
Lex->sql_command= SQLCOM_CREATE_EVENT;
}
-#line 30895 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 202: /* $@27: %empty */
-#line 2905 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2936 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_expression= (yyvsp[-1].item);
Lex->event_parse_data->interval= (yyvsp[0].interval);
}
-#line 30904 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31047 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 204: /* ev_schedule_time: AT_SYM expr */
-#line 2912 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2943 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_execute_at= (yyvsp[0].item);
}
-#line 30912 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31055 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 205: /* opt_ev_status: %empty */
-#line 2918 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2949 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 30918 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31061 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 206: /* opt_ev_status: ENABLE_SYM */
-#line 2920 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2951 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->status= Event_parse_data::ENABLED;
Lex->event_parse_data->status_changed= true;
(yyval.num)= 1;
}
-#line 30928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31071 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 207: /* opt_ev_status: DISABLE_SYM ON SLAVE */
-#line 2926 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2957 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->status= Event_parse_data::SLAVESIDE_DISABLED;
Lex->event_parse_data->status_changed= true;
(yyval.num)= 1;
}
-#line 30938 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 208: /* opt_ev_status: DISABLE_SYM */
-#line 2932 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2963 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->status= Event_parse_data::DISABLED;
Lex->event_parse_data->status_changed= true;
(yyval.num)= 1;
}
-#line 30948 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31091 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 209: /* ev_starts: %empty */
-#line 2941 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2972 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_now_local(thd, 0);
if (unlikely(item == NULL))
MYSQL_YYABORT;
Lex->event_parse_data->item_starts= item;
}
-#line 30959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31102 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 210: /* ev_starts: STARTS_SYM expr */
-#line 2948 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2979 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_starts= (yyvsp[0].item);
}
-#line 30967 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 212: /* ev_ends: ENDS_SYM expr */
-#line 2956 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2987 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_ends= (yyvsp[0].item);
}
-#line 30975 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31118 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 213: /* opt_ev_on_completion: %empty */
-#line 2962 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2993 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 30981 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31124 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 215: /* ev_on_completion: ON COMPLETION_SYM opt_not PRESERVE_SYM */
-#line 2968 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2999 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->on_completion= (yyvsp[-1].num)
? Event_parse_data::ON_COMPLETION_DROP
: Event_parse_data::ON_COMPLETION_PRESERVE;
(yyval.num)= 1;
}
-#line 30992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 216: /* opt_ev_comment: %empty */
-#line 2977 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3008 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 30998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31141 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 217: /* opt_ev_comment: COMMENT_SYM TEXT_STRING_sys */
-#line 2979 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3010 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->comment= Lex->event_parse_data->comment= (yyvsp[0].lex_str);
(yyval.num)= 1;
}
-#line 31007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 218: /* $@28: %empty */
-#line 2986 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3017 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
@@ -31040,519 +31183,562 @@ yyreduce:
lex->sphead->set_body_start(thd, lip->get_cpp_ptr());
}
-#line 31044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 219: /* ev_sql_stmt: $@28 sp_proc_stmt force_lookahead */
-#line 3019 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3050 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* return back to the original memory root ASAP */
if (Lex->sp_body_finalize_event(thd))
MYSQL_YYABORT;
}
-#line 31054 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31197 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 220: /* clear_privileges: %empty */
-#line 3028 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3059 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->users_list.empty();
lex->first_select_lex()->db= null_clex_str;
lex->account_options.reset();
}
-#line 31065 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 221: /* opt_aggregate: %empty */
-#line 3037 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3068 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_aggregate_type)= NOT_AGGREGATE; }
-#line 31071 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31214 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 222: /* opt_aggregate: AGGREGATE_SYM */
-#line 3038 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3069 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_aggregate_type)= GROUP_AGGREGATE; }
-#line 31077 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31220 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 223: /* sp_handler: FUNCTION_SYM */
-#line 3043 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3074 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_handler)= &sp_handler_function; }
-#line 31083 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31226 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
case 224: /* sp_handler: PROCEDURE_SYM */
-#line 3044 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3075 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_handler)= &sp_handler_procedure; }
-#line 31089 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31232 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 227: /* sp_handler_package_spec: PACKAGE_ORACLE_SYM */
+#line 3081 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_spec; }
+#line 31238 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 228: /* sp_handler_package_spec: PACKAGE_MARIADB_SYM */
+#line 3082 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_spec; }
+#line 31244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 225: /* sp_handler: PACKAGE_ORACLE_SYM */
-#line 3045 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.sp_handler)= &sp_handler_package_spec; }
-#line 31095 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ case 229: /* sp_handler_package_body: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM */
+#line 3086 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_body; }
+#line 31250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 226: /* sp_handler: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM */
-#line 3046 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.sp_handler)= &sp_handler_package_body; }
-#line 31101 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ case 230: /* sp_handler_package_body: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM */
+#line 3087 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_body; }
+#line 31256 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 227: /* sp_name: ident '.' ident */
-#line 3052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 231: /* drop_routine: DROP sp_handler opt_if_exists ident '.' ident */
+#line 3092 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
+ if (Lex->stmt_drop_routine((yyvsp[-4].sp_handler), (yyvsp[-3].object_ddl_options), (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys)))
MYSQL_YYABORT;
}
-#line 31110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31265 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 232: /* drop_routine: DROP sp_handler opt_if_exists ident */
+#line 3097 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (Lex->stmt_drop_routine((yyvsp[-2].sp_handler), (yyvsp[-1].object_ddl_options), Lex_ident_sys(), (yyvsp[0].ident_sys)))
+ MYSQL_YYABORT;
+ }
+#line 31274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 233: /* sp_name: ident '.' ident */
+#line 3106 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys)))))
+ MYSQL_YYABORT;
+ }
+#line 31283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 228: /* sp_name: ident */
-#line 3057 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 234: /* sp_name: ident */
+#line 3111 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, &(yyvsp[0].ident_sys)))))
+ if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, (yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 31119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 229: /* sp_a_chistics: %empty */
-#line 3064 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 235: /* sp_a_chistics: %empty */
+#line 3118 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 230: /* sp_a_chistics: sp_a_chistics sp_chistic */
-#line 3065 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 236: /* sp_a_chistics: sp_a_chistics sp_chistic */
+#line 3119 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 231: /* sp_c_chistics: %empty */
-#line 3069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 237: /* sp_c_chistics: %empty */
+#line 3123 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31137 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 232: /* sp_c_chistics: sp_c_chistics sp_c_chistic */
-#line 3070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 238: /* sp_c_chistics: sp_c_chistics sp_c_chistic */
+#line 3124 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 233: /* sp_chistic: COMMENT_SYM TEXT_STRING_sys */
-#line 3076 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 239: /* sp_chistic: COMMENT_SYM TEXT_STRING_sys */
+#line 3130 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.comment= (yyvsp[0].lex_str); }
-#line 31149 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 234: /* sp_chistic: LANGUAGE_SYM SQL_SYM */
-#line 3078 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 240: /* sp_chistic: LANGUAGE_SYM SQL_SYM */
+#line 3132 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* Just parse it, we only have one language for now. */ }
-#line 31155 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 235: /* sp_chistic: NO_SYM SQL_SYM */
-#line 3080 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 241: /* sp_chistic: NO_SYM SQL_SYM */
+#line 3134 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_NO_SQL; }
-#line 31161 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 236: /* sp_chistic: CONTAINS_SYM SQL_SYM */
-#line 3082 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 242: /* sp_chistic: CONTAINS_SYM SQL_SYM */
+#line 3136 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_CONTAINS_SQL; }
-#line 31167 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 237: /* sp_chistic: READS_SYM SQL_SYM DATA_SYM */
-#line 3084 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 243: /* sp_chistic: READS_SYM SQL_SYM DATA_SYM */
+#line 3138 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_READS_SQL_DATA; }
-#line 31173 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 238: /* sp_chistic: MODIFIES_SYM SQL_SYM DATA_SYM */
-#line 3086 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 244: /* sp_chistic: MODIFIES_SYM SQL_SYM DATA_SYM */
+#line 3140 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_MODIFIES_SQL_DATA; }
-#line 31179 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31352 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 239: /* sp_chistic: sp_suid */
-#line 3088 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 245: /* sp_chistic: sp_suid */
+#line 3142 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.suid= (yyvsp[0].sp_suid); }
-#line 31185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31358 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 240: /* sp_c_chistic: sp_chistic */
-#line 3093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 246: /* sp_c_chistic: sp_chistic */
+#line 3147 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 31191 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 241: /* sp_c_chistic: opt_not DETERMINISTIC_SYM */
-#line 3094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 247: /* sp_c_chistic: opt_not DETERMINISTIC_SYM */
+#line 3148 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.detistic= ! (yyvsp[-1].num); }
-#line 31197 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31370 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 242: /* sp_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
-#line 3098 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 248: /* sp_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
+#line 3152 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_suid)= SP_IS_SUID; }
-#line 31203 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31376 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 243: /* sp_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
-#line 3099 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 249: /* sp_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
+#line 3153 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_suid)= SP_IS_NOT_SUID; }
-#line 31209 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31382 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 244: /* $@29: %empty */
-#line 3104 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 250: /* $@29: %empty */
+#line 3158 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->call_statement_start(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31391 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 245: /* call: CALL_SYM ident $@29 opt_sp_cparam_list */
-#line 3109 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 251: /* call: CALL_SYM ident $@29 opt_sp_cparam_list */
+#line 3163 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 31227 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31400 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 246: /* $@30: %empty */
-#line 3114 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 252: /* $@30: %empty */
+#line 3168 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->call_statement_start(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31236 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 247: /* call: CALL_SYM ident '.' ident $@30 opt_sp_cparam_list */
-#line 3119 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 253: /* call: CALL_SYM ident '.' ident $@30 opt_sp_cparam_list */
+#line 3173 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 31245 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31418 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 248: /* $@31: %empty */
-#line 3124 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 254: /* $@31: %empty */
+#line 3178 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->call_statement_start(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31427 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 249: /* call: CALL_SYM ident '.' ident '.' ident $@31 opt_sp_cparam_list */
-#line 3129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 255: /* call: CALL_SYM ident '.' ident '.' ident $@31 opt_sp_cparam_list */
+#line 3183 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 31263 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31436 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 254: /* sp_cparams: sp_cparams ',' expr */
-#line 3148 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 260: /* sp_cparams: sp_cparams ',' expr */
+#line 3202 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->value_list.push_back((yyvsp[0].item), thd->mem_root);
}
-#line 31271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31444 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 255: /* sp_cparams: expr */
-#line 3152 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 261: /* sp_cparams: expr */
+#line 3206 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->value_list.push_back((yyvsp[0].item), thd->mem_root);
}
-#line 31279 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31452 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 256: /* sp_fdparam_list: %empty */
-#line 3160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 262: /* sp_fdparam_list: %empty */
+#line 3214 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= YYLIP->get_cpp_tok_start();
Lex->sphead->m_param_end= Lex->sphead->m_param_begin;
}
-#line 31288 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 257: /* $@32: %empty */
-#line 3165 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 263: /* $@32: %empty */
+#line 3219 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= YYLIP->get_cpp_tok_start();
}
-#line 31296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31469 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 258: /* sp_fdparam_list: $@32 sp_fdparams */
-#line 3169 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 264: /* sp_fdparam_list: $@32 sp_fdparams */
+#line 3223 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
}
-#line 31304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 261: /* sp_param_name: ident */
-#line 3181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 267: /* sp_param_name: ident */
+#line 3235 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.spvar)= Lex->sp_param_init(&(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 31313 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31486 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 266: /* sp_parameter_type: IN_SYM */
-#line 3199 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 272: /* sp_parameter_type: IN_SYM */
+#line 3253 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_IN; }
-#line 31319 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31492 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 267: /* sp_parameter_type: OUT_SYM */
-#line 3200 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 273: /* sp_parameter_type: OUT_SYM */
+#line 3254 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_OUT; }
-#line 31325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31498 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 268: /* sp_parameter_type: INOUT_SYM */
-#line 3201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 274: /* sp_parameter_type: INOUT_SYM */
+#line 3255 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_INOUT; }
-#line 31331 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31504 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 269: /* $@33: %empty */
-#line 3206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 275: /* $@33: %empty */
+#line 3260 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= YYLIP->get_cpp_tok_start() + 1;
}
-#line 31339 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31512 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 270: /* sp_parenthesized_pdparam_list: '(' $@33 sp_pdparam_list ')' */
-#line 3211 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 276: /* sp_parenthesized_pdparam_list: '(' $@33 sp_pdparam_list ')' */
+#line 3265 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
}
-#line 31347 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31520 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 272: /* sp_proc_stmts: %empty */
-#line 3221 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 278: /* sp_proc_stmts: %empty */
+#line 3275 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31526 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 274: /* sp_proc_stmts1: sp_proc_stmt ';' */
-#line 3226 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 280: /* sp_proc_stmts1: sp_proc_stmt ';' */
+#line 3280 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31359 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31532 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 276: /* optionally_qualified_column_ident: sp_decl_ident */
-#line 3233 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 282: /* optionally_qualified_column_ident: sp_decl_ident */
+#line 3287 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.qualified_column_ident)= new (thd->mem_root)
Qualified_column_ident(&(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 31369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 277: /* optionally_qualified_column_ident: sp_decl_ident '.' ident */
-#line 3239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 283: /* optionally_qualified_column_ident: sp_decl_ident '.' ident */
+#line 3293 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.qualified_column_ident)= new (thd->mem_root)
Qualified_column_ident(&(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 31379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31552 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 278: /* optionally_qualified_column_ident: sp_decl_ident '.' ident '.' ident */
-#line 3245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 284: /* optionally_qualified_column_ident: sp_decl_ident '.' ident '.' ident */
+#line 3299 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.qualified_column_ident)= new (thd->mem_root)
Qualified_column_ident(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 31389 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31562 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 279: /* row_field_definition: row_field_name field_type */
-#line 3255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 285: /* row_field_definition: row_field_name field_type */
+#line 3309 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[0].Lex_field_type),
COLUMN_DEFINITION_ROUTINE_LOCAL);
}
-#line 31398 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31571 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 280: /* row_field_definition_list: row_field_definition */
-#line 3263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 286: /* row_field_definition_list: row_field_definition */
+#line 3317 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.spvar_definition_list)= Row_definition_list::make(thd->mem_root, (yyvsp[0].spvar_definition))))
MYSQL_YYABORT;
}
-#line 31407 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 281: /* row_field_definition_list: row_field_definition_list ',' row_field_definition */
-#line 3268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 287: /* row_field_definition_list: row_field_definition_list ',' row_field_definition */
+#line 3322 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.spvar_definition_list)= (yyvsp[-2].spvar_definition_list))->append_uniq(thd->mem_root, (yyvsp[0].spvar_definition)))
MYSQL_YYABORT;
}
-#line 31416 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31589 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 282: /* row_type_body: '(' row_field_definition_list ')' */
-#line 3275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 288: /* row_type_body: '(' row_field_definition_list ')' */
+#line 3329 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_definition_list)= (yyvsp[-1].spvar_definition_list); }
-#line 31422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31595 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 283: /* sp_decl_idents_init_vars: sp_decl_idents */
-#line 3280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 289: /* sp_decl_idents_init_vars: sp_decl_idents */
+#line 3334 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_variable_declarations_init(thd, (yyvsp[0].num));
}
-#line 31430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 284: /* $@34: %empty */
-#line 3288 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 290: /* $@34: %empty */
+#line 3342 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[0].Lex_field_type),
COLUMN_DEFINITION_ROUTINE_LOCAL);
}
-#line 31439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 285: /* sp_decl_variable_list: sp_decl_idents_init_vars field_type $@34 sp_opt_default */
-#line 3293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 291: /* sp_decl_variable_list: sp_decl_idents_init_vars field_type $@34 sp_opt_default */
+#line 3347 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_variable_declarations_finalize(thd, (yyvsp[-3].num),
&Lex->last_field[0],
- (yyvsp[0].item))))
+ (yyvsp[0].expr_and_query_str).expr,
+ (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-3].num));
}
-#line 31451 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31625 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 286: /* sp_decl_variable_list: sp_decl_idents_init_vars ROW_SYM row_type_body sp_opt_default */
-#line 3303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 292: /* sp_decl_variable_list: sp_decl_idents_init_vars ROW_SYM row_type_body sp_opt_default */
+#line 3358 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_variable_declarations_row_finalize(thd, (yyvsp[-3].num), (yyvsp[-1].spvar_definition_list), (yyvsp[0].item))))
+ if (unlikely(Lex->sp_variable_declarations_row_finalize(thd, (yyvsp[-3].num), (yyvsp[-1].spvar_definition_list),
+ (yyvsp[0].expr_and_query_str).expr,
+ (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-3].num));
}
-#line 31461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31637 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 288: /* $@35: %empty */
-#line 3313 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 294: /* $@35: %empty */
+#line 3370 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_handler_declaration_init(thd, (yyvsp[-2].num))))
MYSQL_YYABORT;
}
-#line 31470 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31646 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 289: /* sp_decl_handler: sp_handler_type HANDLER_SYM FOR_SYM $@35 sp_hcond_list sp_proc_stmt */
-#line 3318 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 295: /* sp_decl_handler: sp_handler_type HANDLER_SYM FOR_SYM $@35 sp_hcond_list sp_proc_stmt */
+#line 3375 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_handler_declaration_finalize(thd, (yyvsp[-5].num))))
MYSQL_YYABORT;
(yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).curs= 0;
(yyval.spblock).hndlrs= 1;
}
-#line 31481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31657 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 292: /* sp_cursor_stmt_lex: %empty */
-#line 3333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 298: /* sp_cursor_stmt_lex: %empty */
+#line 3390 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(thd->lex->sphead);
if (unlikely(!((yyval.sp_cursor_stmt)= new (thd->mem_root)
sp_lex_cursor(thd, thd->lex))))
MYSQL_YYABORT;
}
-#line 31492 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31668 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 293: /* $@36: %empty */
-#line 3343 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 299: /* $@36: %empty */
+#line 3400 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(thd->free_list == NULL);
Lex->sphead->reset_lex(thd, (yyvsp[0].sp_cursor_stmt));
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 31503 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31679 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 294: /* sp_cursor_stmt: sp_cursor_stmt_lex $@36 select */
-#line 3350 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 300: /* sp_cursor_stmt: sp_cursor_stmt_lex $@36 remember_name select remember_end */
+#line 3407 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT(Lex == (yyvsp[-2].sp_cursor_stmt));
+ DBUG_ASSERT(Lex == (yyvsp[-4].sp_cursor_stmt));
Lex->pop_select(); //main select
- if (unlikely((yyvsp[-2].sp_cursor_stmt)->stmt_finalize(thd)) ||
- unlikely((yyvsp[-2].sp_cursor_stmt)->sphead->restore_lex(thd)))
+ if (unlikely((yyvsp[-4].sp_cursor_stmt)->stmt_finalize(thd)))
+ MYSQL_YYABORT;
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyvsp[-4].sp_cursor_stmt)->set_expr_str(expr_str);
+ }
+ if (unlikely((yyvsp[-4].sp_cursor_stmt)->sphead->restore_lex(thd)))
MYSQL_YYABORT;
- (yyval.sp_cursor_stmt)= (yyvsp[-2].sp_cursor_stmt);
+
+ (yyval.sp_cursor_stmt)= (yyvsp[-4].sp_cursor_stmt);
}
-#line 31516 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31702 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 295: /* sp_handler_type: EXIT_MARIADB_SYM */
-#line 3361 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 301: /* sp_handler_type: EXIT_MARIADB_SYM */
+#line 3428 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::EXIT; }
-#line 31522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31708 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 296: /* sp_handler_type: CONTINUE_MARIADB_SYM */
-#line 3362 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 302: /* sp_handler_type: CONTINUE_MARIADB_SYM */
+#line 3429 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::CONTINUE; }
-#line 31528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 297: /* sp_handler_type: EXIT_ORACLE_SYM */
-#line 3363 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 303: /* sp_handler_type: EXIT_ORACLE_SYM */
+#line 3430 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::EXIT; }
-#line 31534 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 298: /* sp_handler_type: CONTINUE_ORACLE_SYM */
-#line 3364 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 304: /* sp_handler_type: CONTINUE_ORACLE_SYM */
+#line 3431 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::CONTINUE; }
-#line 31540 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31726 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 299: /* sp_hcond_list: sp_hcond_element */
-#line 3370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 305: /* sp_hcond_list: sp_hcond_element */
+#line 3437 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 31546 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31732 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 300: /* sp_hcond_list: sp_hcond_list ',' sp_hcond_element */
-#line 3372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 306: /* sp_hcond_list: sp_hcond_list ',' sp_hcond_element */
+#line 3439 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)+= 1; }
-#line 31552 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31738 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 301: /* sp_hcond_element: sp_hcond */
-#line 3377 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 307: /* sp_hcond_element: sp_hcond */
+#line 3444 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -31564,11 +31750,11 @@ yyreduce:
sp_instr_hpush_jump *i= (sp_instr_hpush_jump *)sp->last_instruction();
i->add_condition((yyvsp[0].spcondvalue));
}
-#line 31568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31754 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 302: /* sp_cond: ulong_num */
-#line 3392 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 308: /* sp_cond: ulong_num */
+#line 3459 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* mysql errno */
if (unlikely((yyvsp[0].ulong_num) == 0))
my_yyabort_error((ER_WRONG_VALUE, MYF(0), "CONDITION", "0"));
@@ -31576,11 +31762,11 @@ yyreduce:
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 31580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31766 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 304: /* sqlstate: SQLSTATE_SYM opt_value TEXT_STRING_literal */
-#line 3404 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 310: /* sqlstate: SQLSTATE_SYM opt_value TEXT_STRING_literal */
+#line 3471 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* SQLSTATE */
/*
@@ -31597,143 +31783,143 @@ yyreduce:
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 31601 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 305: /* opt_value: %empty */
-#line 3423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 311: /* opt_value: %empty */
+#line 3490 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 306: /* opt_value: VALUE_SYM */
-#line 3424 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 312: /* opt_value: VALUE_SYM */
+#line 3491 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 31613 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 307: /* sp_hcond: sp_cond */
-#line 3429 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 313: /* sp_hcond: sp_cond */
+#line 3496 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= (yyvsp[0].spcondvalue);
}
-#line 31621 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 308: /* sp_hcond: ident */
-#line 3433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 314: /* sp_hcond: ident */
+#line 3500 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= Lex->spcont->find_declared_or_predefined_condition(thd, &(yyvsp[0].ident_sys));
if (unlikely((yyval.spcondvalue) == NULL))
my_yyabort_error((ER_SP_COND_MISMATCH, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 31631 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 309: /* sp_hcond: SQLWARNING_SYM */
-#line 3439 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 315: /* sp_hcond: SQLWARNING_SYM */
+#line 3506 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::WARNING);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 31641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 310: /* sp_hcond: not FOUND_SYM */
-#line 3445 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 316: /* sp_hcond: not FOUND_SYM */
+#line 3512 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::NOT_FOUND);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 31651 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31837 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 311: /* sp_hcond: SQLEXCEPTION_SYM */
-#line 3451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 317: /* sp_hcond: SQLEXCEPTION_SYM */
+#line 3518 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::EXCEPTION);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 31661 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31847 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 312: /* sp_hcond: OTHERS_ORACLE_SYM */
-#line 3457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 318: /* sp_hcond: OTHERS_ORACLE_SYM */
+#line 3524 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::EXCEPTION);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 31671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31857 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 313: /* raise_stmt_oracle: RAISE_ORACLE_SYM opt_set_signal_information */
-#line 3467 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 319: /* raise_stmt_oracle: RAISE_ORACLE_SYM opt_set_signal_information */
+#line 3534 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_resignal_statement(thd, NULL)))
MYSQL_YYABORT;
}
-#line 31680 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31866 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 314: /* raise_stmt_oracle: RAISE_ORACLE_SYM signal_value opt_set_signal_information */
-#line 3472 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 320: /* raise_stmt_oracle: RAISE_ORACLE_SYM signal_value opt_set_signal_information */
+#line 3539 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_signal_statement(thd, (yyvsp[-1].spcondvalue))))
MYSQL_YYABORT;
}
-#line 31689 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 315: /* signal_stmt: SIGNAL_SYM signal_value opt_set_signal_information */
-#line 3480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 321: /* signal_stmt: SIGNAL_SYM signal_value opt_set_signal_information */
+#line 3547 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_signal_statement(thd, (yyvsp[-1].spcondvalue)))
MYSQL_YYABORT;
}
-#line 31698 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31884 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 316: /* signal_value: ident */
-#line 3488 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 322: /* signal_value: ident */
+#line 3555 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.spcondvalue)= Lex->stmt_signal_value((yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31893 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 317: /* signal_value: sqlstate */
-#line 3493 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 323: /* signal_value: sqlstate */
+#line 3560 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spcondvalue)= (yyvsp[0].spcondvalue); }
-#line 31713 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31899 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 318: /* opt_signal_value: %empty */
-#line 3498 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 324: /* opt_signal_value: %empty */
+#line 3565 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spcondvalue)= NULL; }
-#line 31719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31905 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 319: /* opt_signal_value: signal_value */
-#line 3500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 325: /* opt_signal_value: signal_value */
+#line 3567 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spcondvalue)= (yyvsp[0].spcondvalue); }
-#line 31725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31911 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 320: /* opt_set_signal_information: %empty */
-#line 3505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 326: /* opt_set_signal_information: %empty */
+#line 3572 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->m_parser_state->m_yacc.m_set_signal_info.clear();
}
-#line 31733 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31919 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 322: /* signal_information_item_list: signal_condition_information_item_name '=' signal_allowed_expr */
-#line 3513 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 328: /* signal_information_item_list: signal_condition_information_item_name '=' signal_allowed_expr */
+#line 3580 "/home/buildbot/git/sql/sql_yacc.yy"
{
Set_signal_information *info;
info= &thd->m_parser_state->m_yacc.m_set_signal_info;
@@ -31741,11 +31927,11 @@ yyreduce:
info->clear();
info->m_item[index]= (yyvsp[0].item);
}
-#line 31745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31931 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 323: /* signal_information_item_list: signal_information_item_list ',' signal_condition_information_item_name '=' signal_allowed_expr */
-#line 3522 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 329: /* signal_information_item_list: signal_information_item_list ',' signal_condition_information_item_name '=' signal_allowed_expr */
+#line 3589 "/home/buildbot/git/sql/sql_yacc.yy"
{
Set_signal_information *info;
info= &thd->m_parser_state->m_yacc.m_set_signal_info;
@@ -31755,17 +31941,17 @@ yyreduce:
Diag_condition_item_names[index].str));
info->m_item[index]= (yyvsp[0].item);
}
-#line 31759 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 324: /* signal_allowed_expr: literal */
-#line 3538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 330: /* signal_allowed_expr: literal */
+#line 3605 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 31765 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31951 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 325: /* signal_allowed_expr: variable */
-#line 3540 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 331: /* signal_allowed_expr: variable */
+#line 3607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].item)->type() == Item::FUNC_ITEM)
{
@@ -31783,104 +31969,104 @@ yyreduce:
}
(yyval.item)= (yyvsp[0].item);
}
-#line 31787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31973 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 326: /* signal_allowed_expr: simple_ident */
-#line 3558 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 332: /* signal_allowed_expr: simple_ident */
+#line 3625 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 31793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 327: /* signal_condition_information_item_name: CLASS_ORIGIN_SYM */
-#line 3564 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 333: /* signal_condition_information_item_name: CLASS_ORIGIN_SYM */
+#line 3631 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CLASS_ORIGIN; }
-#line 31799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31985 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 328: /* signal_condition_information_item_name: SUBCLASS_ORIGIN_SYM */
-#line 3566 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 334: /* signal_condition_information_item_name: SUBCLASS_ORIGIN_SYM */
+#line 3633 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_SUBCLASS_ORIGIN; }
-#line 31805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 329: /* signal_condition_information_item_name: CONSTRAINT_CATALOG_SYM */
-#line 3568 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 335: /* signal_condition_information_item_name: CONSTRAINT_CATALOG_SYM */
+#line 3635 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_CATALOG; }
-#line 31811 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 31997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 330: /* signal_condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
-#line 3570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 336: /* signal_condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
+#line 3637 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_SCHEMA; }
-#line 31817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 331: /* signal_condition_information_item_name: CONSTRAINT_NAME_SYM */
-#line 3572 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 337: /* signal_condition_information_item_name: CONSTRAINT_NAME_SYM */
+#line 3639 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_NAME; }
-#line 31823 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 332: /* signal_condition_information_item_name: CATALOG_NAME_SYM */
-#line 3574 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 338: /* signal_condition_information_item_name: CATALOG_NAME_SYM */
+#line 3641 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CATALOG_NAME; }
-#line 31829 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 333: /* signal_condition_information_item_name: SCHEMA_NAME_SYM */
-#line 3576 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 339: /* signal_condition_information_item_name: SCHEMA_NAME_SYM */
+#line 3643 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_SCHEMA_NAME; }
-#line 31835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 334: /* signal_condition_information_item_name: TABLE_NAME_SYM */
-#line 3578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 340: /* signal_condition_information_item_name: TABLE_NAME_SYM */
+#line 3645 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_TABLE_NAME; }
-#line 31841 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 335: /* signal_condition_information_item_name: COLUMN_NAME_SYM */
-#line 3580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 341: /* signal_condition_information_item_name: COLUMN_NAME_SYM */
+#line 3647 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_COLUMN_NAME; }
-#line 31847 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 336: /* signal_condition_information_item_name: CURSOR_NAME_SYM */
-#line 3582 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 342: /* signal_condition_information_item_name: CURSOR_NAME_SYM */
+#line 3649 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CURSOR_NAME; }
-#line 31853 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 337: /* signal_condition_information_item_name: MESSAGE_TEXT_SYM */
-#line 3584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 343: /* signal_condition_information_item_name: MESSAGE_TEXT_SYM */
+#line 3651 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_MESSAGE_TEXT; }
-#line 31859 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 338: /* signal_condition_information_item_name: MYSQL_ERRNO_SYM */
-#line 3586 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 344: /* signal_condition_information_item_name: MYSQL_ERRNO_SYM */
+#line 3653 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_MYSQL_ERRNO; }
-#line 31865 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 339: /* signal_condition_information_item_name: ROW_NUMBER_SYM */
-#line 3588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 345: /* signal_condition_information_item_name: ROW_NUMBER_SYM */
+#line 3655 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_ROW_NUMBER; }
-#line 31871 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 340: /* resignal_stmt: RESIGNAL_SYM opt_signal_value opt_set_signal_information */
-#line 3593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 346: /* resignal_stmt: RESIGNAL_SYM opt_signal_value opt_set_signal_information */
+#line 3660 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_resignal_statement(thd, (yyvsp[-1].spcondvalue))))
MYSQL_YYABORT;
}
-#line 31880 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 341: /* get_diagnostics: GET_SYM which_area DIAGNOSTICS_SYM diagnostics_information */
-#line 3601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 347: /* get_diagnostics: GET_SYM which_area DIAGNOSTICS_SYM diagnostics_information */
+#line 3668 "/home/buildbot/git/sql/sql_yacc.yy"
{
Diagnostics_information *info= (yyvsp[0].diag_info);
@@ -31892,83 +32078,83 @@ yyreduce:
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 31896 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32082 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 342: /* which_area: %empty */
-#line 3616 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 348: /* which_area: %empty */
+#line 3683 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_area)= Diagnostics_information::CURRENT_AREA; }
-#line 31902 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32088 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 343: /* which_area: CURRENT_SYM */
-#line 3618 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 349: /* which_area: CURRENT_SYM */
+#line 3685 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_area)= Diagnostics_information::CURRENT_AREA; }
-#line 31908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 344: /* diagnostics_information: statement_information */
-#line 3623 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 350: /* diagnostics_information: statement_information */
+#line 3690 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.diag_info)= new (thd->mem_root) Statement_information((yyvsp[0].stmt_info_list));
if (unlikely((yyval.diag_info) == NULL))
MYSQL_YYABORT;
}
-#line 31918 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32104 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 345: /* diagnostics_information: CONDITION_SYM condition_number condition_information */
-#line 3629 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 351: /* diagnostics_information: CONDITION_SYM condition_number condition_information */
+#line 3696 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.diag_info)= new (thd->mem_root) Condition_information((yyvsp[-1].item), (yyvsp[0].cond_info_list));
if (unlikely((yyval.diag_info) == NULL))
MYSQL_YYABORT;
}
-#line 31928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 346: /* statement_information: statement_information_item */
-#line 3638 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 352: /* statement_information: statement_information_item */
+#line 3705 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.stmt_info_list)= new (thd->mem_root) List<Statement_information_item>;
if (unlikely((yyval.stmt_info_list) == NULL) ||
unlikely((yyval.stmt_info_list)->push_back((yyvsp[0].stmt_info_item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 31939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 347: /* statement_information: statement_information ',' statement_information_item */
-#line 3645 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 353: /* statement_information: statement_information ',' statement_information_item */
+#line 3712 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-2].stmt_info_list)->push_back((yyvsp[0].stmt_info_item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.stmt_info_list)= (yyvsp[-2].stmt_info_list);
}
-#line 31949 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 348: /* statement_information_item: simple_target_specification '=' statement_information_item_name */
-#line 3654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 354: /* statement_information_item: simple_target_specification '=' statement_information_item_name */
+#line 3721 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.stmt_info_item)= new (thd->mem_root) Statement_information_item((yyvsp[0].stmt_info_item_name), (yyvsp[-2].item));
if (unlikely((yyval.stmt_info_item) == NULL))
MYSQL_YYABORT;
}
-#line 31959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 349: /* simple_target_specification: ident_cli */
-#line 3663 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 355: /* simple_target_specification: ident_cli */
+#line 3730 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= thd->lex->create_item_for_sp_var(&(yyvsp[0].ident_cli), NULL))))
MYSQL_YYABORT;
}
-#line 31968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32154 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 350: /* simple_target_specification: '@' ident_or_text */
-#line 3668 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 356: /* simple_target_specification: '@' ident_or_text */
+#line 3735 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -31979,159 +32165,159 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 31983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32169 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 351: /* statement_information_item_name: NUMBER_MARIADB_SYM */
-#line 3682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 357: /* statement_information_item_name: NUMBER_MARIADB_SYM */
+#line 3749 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.stmt_info_item_name)= Statement_information_item::NUMBER; }
-#line 31989 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 352: /* statement_information_item_name: NUMBER_ORACLE_SYM */
-#line 3684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 358: /* statement_information_item_name: NUMBER_ORACLE_SYM */
+#line 3751 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.stmt_info_item_name)= Statement_information_item::NUMBER; }
-#line 31995 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32181 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 353: /* statement_information_item_name: ROW_COUNT_SYM */
-#line 3686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 359: /* statement_information_item_name: ROW_COUNT_SYM */
+#line 3753 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.stmt_info_item_name)= Statement_information_item::ROW_COUNT; }
-#line 32001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 354: /* condition_number: signal_allowed_expr */
-#line 3695 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 360: /* condition_number: signal_allowed_expr */
+#line 3762 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 32007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32193 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 355: /* condition_information: condition_information_item */
-#line 3700 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 361: /* condition_information: condition_information_item */
+#line 3767 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.cond_info_list)= new (thd->mem_root) List<Condition_information_item>;
if (unlikely((yyval.cond_info_list) == NULL) ||
unlikely((yyval.cond_info_list)->push_back((yyvsp[0].cond_info_item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 32018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32204 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 356: /* condition_information: condition_information ',' condition_information_item */
-#line 3707 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 362: /* condition_information: condition_information ',' condition_information_item */
+#line 3774 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-2].cond_info_list)->push_back((yyvsp[0].cond_info_item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.cond_info_list)= (yyvsp[-2].cond_info_list);
}
-#line 32028 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32214 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 357: /* condition_information_item: simple_target_specification '=' condition_information_item_name */
-#line 3716 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 363: /* condition_information_item: simple_target_specification '=' condition_information_item_name */
+#line 3783 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.cond_info_item)= new (thd->mem_root) Condition_information_item((yyvsp[0].cond_info_item_name), (yyvsp[-2].item));
if (unlikely((yyval.cond_info_item) == NULL))
MYSQL_YYABORT;
}
-#line 32038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32224 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 358: /* condition_information_item_name: CLASS_ORIGIN_SYM */
-#line 3725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 364: /* condition_information_item_name: CLASS_ORIGIN_SYM */
+#line 3792 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CLASS_ORIGIN; }
-#line 32044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32230 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 359: /* condition_information_item_name: SUBCLASS_ORIGIN_SYM */
-#line 3727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 365: /* condition_information_item_name: SUBCLASS_ORIGIN_SYM */
+#line 3794 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::SUBCLASS_ORIGIN; }
-#line 32050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32236 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 360: /* condition_information_item_name: CONSTRAINT_CATALOG_SYM */
-#line 3729 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 366: /* condition_information_item_name: CONSTRAINT_CATALOG_SYM */
+#line 3796 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_CATALOG; }
-#line 32056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 361: /* condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
-#line 3731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 367: /* condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
+#line 3798 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_SCHEMA; }
-#line 32062 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 362: /* condition_information_item_name: CONSTRAINT_NAME_SYM */
-#line 3733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 368: /* condition_information_item_name: CONSTRAINT_NAME_SYM */
+#line 3800 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_NAME; }
-#line 32068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 363: /* condition_information_item_name: CATALOG_NAME_SYM */
-#line 3735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 369: /* condition_information_item_name: CATALOG_NAME_SYM */
+#line 3802 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CATALOG_NAME; }
-#line 32074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 364: /* condition_information_item_name: SCHEMA_NAME_SYM */
-#line 3737 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 370: /* condition_information_item_name: SCHEMA_NAME_SYM */
+#line 3804 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::SCHEMA_NAME; }
-#line 32080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 365: /* condition_information_item_name: TABLE_NAME_SYM */
-#line 3739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 371: /* condition_information_item_name: TABLE_NAME_SYM */
+#line 3806 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::TABLE_NAME; }
-#line 32086 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32272 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 366: /* condition_information_item_name: COLUMN_NAME_SYM */
-#line 3741 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 372: /* condition_information_item_name: COLUMN_NAME_SYM */
+#line 3808 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::COLUMN_NAME; }
-#line 32092 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 367: /* condition_information_item_name: CURSOR_NAME_SYM */
-#line 3743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 373: /* condition_information_item_name: CURSOR_NAME_SYM */
+#line 3810 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CURSOR_NAME; }
-#line 32098 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32284 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 368: /* condition_information_item_name: MESSAGE_TEXT_SYM */
-#line 3745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 374: /* condition_information_item_name: MESSAGE_TEXT_SYM */
+#line 3812 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::MESSAGE_TEXT; }
-#line 32104 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32290 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 369: /* condition_information_item_name: MYSQL_ERRNO_SYM */
-#line 3747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 375: /* condition_information_item_name: MYSQL_ERRNO_SYM */
+#line 3814 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::MYSQL_ERRNO; }
-#line 32110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 370: /* condition_information_item_name: RETURNED_SQLSTATE_SYM */
-#line 3749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 376: /* condition_information_item_name: RETURNED_SQLSTATE_SYM */
+#line 3816 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::RETURNED_SQLSTATE; }
-#line 32116 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 371: /* condition_information_item_name: ROW_NUMBER_SYM */
-#line 3751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 377: /* condition_information_item_name: ROW_NUMBER_SYM */
+#line 3818 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::ROW_NUMBER; }
-#line 32122 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 373: /* sp_decl_ident: keyword_sp_decl */
-#line 3757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 379: /* sp_decl_ident: keyword_sp_decl */
+#line 3824 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_ident_cli(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 32131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32317 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 374: /* sp_decl_idents: sp_decl_ident */
-#line 3765 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 380: /* sp_decl_idents: sp_decl_ident */
+#line 3832 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* NOTE: field definition is filled in sp_decl section. */
@@ -32143,11 +32329,11 @@ yyreduce:
spc->add_variable(thd, &(yyvsp[0].ident_sys));
(yyval.num)= 1;
}
-#line 32147 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32333 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 375: /* sp_decl_idents: sp_decl_idents ',' ident */
-#line 3777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 381: /* sp_decl_idents: sp_decl_idents ',' ident */
+#line 3844 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* NOTE: field definition is filled in sp_decl section. */
@@ -32159,27 +32345,27 @@ yyreduce:
spc->add_variable(thd, &(yyvsp[0].ident_sys));
(yyval.num)= (yyvsp[-2].num) + 1;
}
-#line 32163 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 376: /* $@37: %empty */
-#line 3792 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 382: /* $@37: %empty */
+#line 3859 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
Lex->sphead->new_cont_backpatch(NULL);
}
-#line 32173 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32359 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 377: /* sp_proc_stmt_if: IF_SYM $@37 sp_if END IF_SYM */
-#line 3798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 383: /* sp_proc_stmt_if: IF_SYM $@37 sp_if END IF_SYM */
+#line 3865 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sphead->do_cont_backpatch(); }
-#line 32179 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32365 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 378: /* $@38: %empty */
-#line 3802 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 384: /* $@38: %empty */
+#line 3869 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
@@ -32192,38 +32378,38 @@ yyreduce:
*/
lex->sphead->m_tmp_query= lip->get_tok_start();
}
-#line 32196 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32382 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 379: /* sp_proc_stmt_statement: $@38 sp_statement */
-#line 3815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 385: /* sp_proc_stmt_statement: $@38 sp_statement */
+#line 3882 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->sp_proc_stmt_statement_finalize(thd, yychar == YYEMPTY) ||
Lex->sphead->restore_lex(thd))
MYSQL_YYABORT;
}
-#line 32206 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 382: /* $@39: %empty */
-#line 3830 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 388: /* $@39: %empty */
+#line 3897 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_head *sp= (yyvsp[0].expr_lex)->sphead;
if (unlikely(sp->m_handler->add_instr_freturn(thd, sp, (yyvsp[0].expr_lex)->spcont,
(yyvsp[0].expr_lex)->get_item(), (yyvsp[0].expr_lex))))
MYSQL_YYABORT;
}
-#line 32217 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 383: /* sp_proc_stmt_return: RETURN_ALLMODES_SYM expr_lex $@39 */
-#line 3836 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 389: /* sp_proc_stmt_return: RETURN_ALLMODES_SYM expr_lex $@39 */
+#line 3903 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 32223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 384: /* sp_proc_stmt_return: RETURN_ORACLE_SYM */
-#line 3838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 390: /* sp_proc_stmt_return: RETURN_ORACLE_SYM */
+#line 3905 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -32231,134 +32417,137 @@ yyreduce:
lex->spcont)))
MYSQL_YYABORT;
}
-#line 32235 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32421 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 385: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM */
-#line 3849 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 391: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM */
+#line 3916 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_exit_statement(thd, NULL)))
+ if (unlikely(Lex->sp_exit_statement(thd, nullptr, empty_clex_str)))
MYSQL_YYABORT;
}
-#line 32244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 386: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident */
-#line 3854 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 392: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident */
+#line 3921 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_exit_statement(thd, &(yyvsp[0].ident_sys), NULL)))
+ if (unlikely(Lex->sp_exit_statement(thd, &(yyvsp[0].ident_sys), nullptr,
+ empty_clex_str)))
MYSQL_YYABORT;
}
-#line 32253 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32440 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 387: /* $@40: %empty */
-#line 3859 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 393: /* $@40: %empty */
+#line 3927 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, (yyvsp[0].expr_lex)->get_item())))
+ if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, (yyvsp[0].expr_lex)->get_item(),
+ (yyvsp[0].expr_lex)->get_expr_str())))
MYSQL_YYABORT;
}
-#line 32262 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32450 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 388: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM WHEN_SYM expr_lex $@40 */
-#line 3863 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 394: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM WHEN_SYM expr_lex $@40 */
+#line 3932 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 32268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32456 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 389: /* $@41: %empty */
-#line 3865 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 395: /* $@41: %empty */
+#line 3934 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, &(yyvsp[-2].ident_sys), (yyvsp[0].expr_lex)->get_item())))
+ if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, &(yyvsp[-2].ident_sys), (yyvsp[0].expr_lex)->get_item(),
+ (yyvsp[0].expr_lex)->get_expr_str())))
MYSQL_YYABORT;
}
-#line 32277 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 390: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident WHEN_SYM expr_lex $@41 */
-#line 3869 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 396: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident WHEN_SYM expr_lex $@41 */
+#line 3939 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 32283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 391: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM */
-#line 3874 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 397: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM */
+#line 3944 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_continue_statement(thd)))
MYSQL_YYABORT;
}
-#line 32292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 392: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident */
-#line 3879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 398: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident */
+#line 3949 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_continue_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 32301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 393: /* $@42: %empty */
-#line 3884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 399: /* $@42: %empty */
+#line 3954 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->sp_continue_when_statement(thd)))
MYSQL_YYABORT;
}
-#line 32310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 394: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM WHEN_SYM expr_lex $@42 */
-#line 3888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 400: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM WHEN_SYM expr_lex $@42 */
+#line 3958 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 32316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 395: /* $@43: %empty */
-#line 3890 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 401: /* $@43: %empty */
+#line 3960 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->sp_continue_when_statement(thd, &(yyvsp[-2].ident_sys))))
MYSQL_YYABORT;
}
-#line 32325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 396: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident WHEN_SYM expr_lex $@43 */
-#line 3894 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 402: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident WHEN_SYM expr_lex $@43 */
+#line 3964 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 32331 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32520 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 397: /* sp_proc_stmt_leave: LEAVE_SYM label_ident */
-#line 3900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 403: /* sp_proc_stmt_leave: LEAVE_SYM label_ident */
+#line 3970 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_leave_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 32340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32529 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 398: /* sp_proc_stmt_iterate: ITERATE_SYM label_ident */
-#line 3908 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 404: /* sp_proc_stmt_iterate: ITERATE_SYM label_ident */
+#line 3978 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_iterate_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 32349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 399: /* sp_proc_stmt_goto_oracle: GOTO_ORACLE_SYM label_ident */
-#line 3916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 405: /* sp_proc_stmt_goto_oracle: GOTO_ORACLE_SYM label_ident */
+#line 3986 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_goto_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 32358 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 400: /* @44: %empty */
-#line 3924 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 406: /* @44: %empty */
+#line 3994 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->sphead);
if (unlikely(!((yyval.expr_lex)= new (thd->mem_root)
@@ -32368,168 +32557,198 @@ yyreduce:
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 32372 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32561 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 401: /* expr_lex: @44 expr */
-#line 3934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 407: /* expr_lex: @44 remember_start_opt expr remember_end */
+#line 4004 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.expr_lex)= (yyvsp[-1].expr_lex);
- (yyval.expr_lex)->set_item((yyvsp[0].item));
+ (yyval.expr_lex)= (yyvsp[-3].expr_lex);
+ (yyval.expr_lex)->set_item((yyvsp[-1].item));
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyval.expr_lex)->set_expr_str(expr_str);
+ }
+
Lex->pop_select(); //min select
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
if ((yyval.expr_lex)->sphead->restore_lex(thd))
MYSQL_YYABORT;
}
-#line 32386 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32585 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 402: /* assignment_source_lex: %empty */
-#line 3947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 408: /* assignment_source_lex: %empty */
+#line 4027 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->sphead);
if (unlikely(!((yyval.assignment_lex)= new (thd->mem_root)
sp_assignment_lex(thd, thd->lex))))
MYSQL_YYABORT;
}
-#line 32397 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32596 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 403: /* $@45: %empty */
-#line 3957 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 409: /* $@45: %empty */
+#line 4037 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(thd->free_list == NULL);
Lex->sphead->reset_lex(thd, (yyvsp[0].assignment_lex));
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 32408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 404: /* assignment_source_expr: assignment_source_lex $@45 expr */
-#line 3964 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 410: /* assignment_source_expr: assignment_source_lex $@45 remember_cpp_ptr expr remember_end */
+#line 4044 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT((yyvsp[-2].assignment_lex) == thd->lex);
- (yyval.assignment_lex)= (yyvsp[-2].assignment_lex);
- (yyval.assignment_lex)->set_item_and_free_list((yyvsp[0].item), thd->free_list);
+ DBUG_ASSERT((yyvsp[-4].assignment_lex) == thd->lex);
+ (yyval.assignment_lex)= (yyvsp[-4].assignment_lex);
+ (yyval.assignment_lex)->set_item_and_free_list((yyvsp[-1].item), thd->free_list);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyval.assignment_lex)->set_expr_str(expr_str);
+ }
+
thd->free_list= NULL;
Lex->pop_select(); //min select
if ((yyval.assignment_lex)->sphead->restore_lex(thd))
MYSQL_YYABORT;
}
-#line 32422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32631 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 405: /* $@46: %empty */
-#line 3977 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 411: /* $@46: %empty */
+#line 4067 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->reset_lex(thd, (yyvsp[0].assignment_lex));
if (Lex->main_select_push(true))
MYSQL_YYABORT;
Lex->current_select->parsing_place= FOR_LOOP_BOUND;
}
-#line 32433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32642 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 406: /* for_loop_bound_expr: assignment_source_lex $@46 expr */
-#line 3984 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 412: /* for_loop_bound_expr: assignment_source_lex $@46 remember_cpp_ptr expr remember_end */
+#line 4074 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT((yyvsp[-2].assignment_lex) == thd->lex);
- (yyval.assignment_lex)= (yyvsp[-2].assignment_lex);
- (yyval.assignment_lex)->set_item_and_free_list((yyvsp[0].item), NULL);
+ DBUG_ASSERT((yyvsp[-4].assignment_lex) == thd->lex);
+ (yyval.assignment_lex)= (yyvsp[-4].assignment_lex);
+ (yyval.assignment_lex)->set_item_and_free_list((yyvsp[-1].item), nullptr);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyval.assignment_lex)->set_expr_str(expr_str);
+ }
+
Lex->pop_select(); //main select
if (unlikely((yyval.assignment_lex)->sphead->restore_lex(thd)))
MYSQL_YYABORT;
Lex->current_select->parsing_place= NO_MATTER;
}
-#line 32447 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 407: /* cursor_actual_parameters: assignment_source_expr */
-#line 3997 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 413: /* cursor_actual_parameters: assignment_source_expr */
+#line 4097 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.sp_assignment_lex_list)= new (thd->mem_root) List<sp_assignment_lex>)))
MYSQL_YYABORT;
(yyval.sp_assignment_lex_list)->push_back((yyvsp[0].assignment_lex), thd->mem_root);
}
-#line 32457 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32676 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 408: /* cursor_actual_parameters: cursor_actual_parameters ',' assignment_source_expr */
-#line 4003 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 414: /* cursor_actual_parameters: cursor_actual_parameters ',' assignment_source_expr */
+#line 4103 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.sp_assignment_lex_list)= (yyvsp[-2].sp_assignment_lex_list);
(yyval.sp_assignment_lex_list)->push_back((yyvsp[0].assignment_lex), thd->mem_root);
}
-#line 32466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32685 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 409: /* opt_parenthesized_cursor_actual_parameters: %empty */
-#line 4010 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 415: /* opt_parenthesized_cursor_actual_parameters: %empty */
+#line 4110 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_assignment_lex_list)= NULL; }
-#line 32472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 410: /* opt_parenthesized_cursor_actual_parameters: '(' cursor_actual_parameters ')' */
-#line 4011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 416: /* opt_parenthesized_cursor_actual_parameters: '(' cursor_actual_parameters ')' */
+#line 4111 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_assignment_lex_list)= (yyvsp[-1].sp_assignment_lex_list); }
-#line 32478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32697 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 414: /* sp_proc_stmt_open: OPEN_SYM ident opt_parenthesized_cursor_actual_parameters */
-#line 4022 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 420: /* sp_proc_stmt_open: OPEN_SYM ident opt_parenthesized_cursor_actual_parameters */
+#line 4122 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_open_cursor(thd, &(yyvsp[-1].ident_sys), (yyvsp[0].sp_assignment_lex_list))))
MYSQL_YYABORT;
}
-#line 32487 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32706 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 415: /* sp_proc_stmt_fetch_head: FETCH_SYM ident INTO */
-#line 4030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 421: /* sp_proc_stmt_fetch_head: FETCH_SYM ident INTO */
+#line 4130 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_cfetch(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
}
-#line 32496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32715 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 416: /* sp_proc_stmt_fetch_head: FETCH_SYM FROM ident INTO */
-#line 4035 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 422: /* sp_proc_stmt_fetch_head: FETCH_SYM FROM ident INTO */
+#line 4135 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_cfetch(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
}
-#line 32505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32724 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 417: /* sp_proc_stmt_fetch_head: FETCH_SYM NEXT_SYM FROM ident INTO */
-#line 4040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 423: /* sp_proc_stmt_fetch_head: FETCH_SYM NEXT_SYM FROM ident INTO */
+#line 4140 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_cfetch(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
}
-#line 32514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32733 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 418: /* sp_proc_stmt_fetch: sp_proc_stmt_fetch_head sp_fetch_list */
-#line 4047 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 424: /* sp_proc_stmt_fetch: sp_proc_stmt_fetch_head sp_fetch_list */
+#line 4147 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32520 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32739 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 419: /* sp_proc_stmt_fetch: FETCH_SYM GROUP_SYM NEXT_SYM ROW_SYM */
-#line 4049 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 425: /* sp_proc_stmt_fetch: FETCH_SYM GROUP_SYM NEXT_SYM ROW_SYM */
+#line 4149 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_agg_cfetch()))
MYSQL_YYABORT;
}
-#line 32529 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32748 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 420: /* sp_proc_stmt_close: CLOSE_SYM ident */
-#line 4057 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 426: /* sp_proc_stmt_close: CLOSE_SYM ident */
+#line 4157 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -32544,11 +32763,11 @@ yyreduce:
unlikely(sp->add_instr(i)))
MYSQL_YYABORT;
}
-#line 32548 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 421: /* sp_fetch_list: ident */
-#line 4075 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 427: /* sp_fetch_list: ident */
+#line 4175 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -32564,11 +32783,11 @@ yyreduce:
sp_instr_cfetch *i= (sp_instr_cfetch *)sp->last_instruction();
i->add_to_varlist(spv);
}
-#line 32568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 422: /* sp_fetch_list: sp_fetch_list ',' ident */
-#line 4091 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 428: /* sp_fetch_list: sp_fetch_list ',' ident */
+#line 4191 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -32584,39 +32803,39 @@ yyreduce:
sp_instr_cfetch *i= (sp_instr_cfetch *)sp->last_instruction();
i->add_to_varlist(spv);
}
-#line 32588 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 423: /* $@47: %empty */
-#line 4110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 429: /* $@47: %empty */
+#line 4210 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-1].expr_lex)->sp_if_expr(thd)))
MYSQL_YYABORT;
}
-#line 32597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 424: /* $@48: %empty */
-#line 4115 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 430: /* $@48: %empty */
+#line 4215 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-3].expr_lex)->sp_if_after_statements(thd)))
MYSQL_YYABORT;
}
-#line 32606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32825 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 425: /* sp_if: expr_lex THEN_SYM $@47 sp_if_then_statements $@48 sp_elseifs */
-#line 4120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 431: /* sp_if: expr_lex THEN_SYM $@47 sp_if_then_statements $@48 sp_elseifs */
+#line 4220 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sphead->backpatch(lex->spcont->pop_label());
}
-#line 32616 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 430: /* $@49: %empty */
-#line 4136 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 436: /* $@49: %empty */
+#line 4236 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
@@ -32666,11 +32885,11 @@ yyreduce:
*/
Lex->spcont->push_label(thd, &empty_clex_str, Lex->sphead->instructions());
}
-#line 32670 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32889 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 431: /* case_stmt_specification: CASE_SYM $@49 case_stmt_body else_clause_opt END CASE_SYM */
-#line 4189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 437: /* case_stmt_specification: CASE_SYM $@49 case_stmt_body else_clause_opt END CASE_SYM */
+#line 4289 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
BACKPATCH: Resolving forward jump from
@@ -32684,69 +32903,69 @@ yyreduce:
Lex->sphead->do_cont_backpatch();
}
-#line 32688 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 432: /* $@50: %empty */
-#line 4206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 438: /* $@50: %empty */
+#line 4306 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->case_stmt_action_expr()))
MYSQL_YYABORT;
}
-#line 32697 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32916 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 433: /* case_stmt_body: expr_lex $@50 simple_when_clause_list */
-#line 4211 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 439: /* case_stmt_body: expr_lex $@50 simple_when_clause_list */
+#line 4311 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 32703 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32922 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 434: /* case_stmt_body: searched_when_clause_list */
-#line 4213 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 440: /* case_stmt_body: searched_when_clause_list */
+#line 4313 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 32709 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 439: /* $@51: %empty */
-#line 4228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 445: /* $@51: %empty */
+#line 4328 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Simple case: <caseval> = <whenval> */
if (unlikely((yyvsp[0].expr_lex)->case_stmt_action_when(true)))
MYSQL_YYABORT;
}
-#line 32719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32938 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 440: /* simple_when_clause: WHEN_SYM expr_lex $@51 THEN_SYM sp_case_then_statements */
-#line 4235 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 446: /* simple_when_clause: WHEN_SYM expr_lex $@51 THEN_SYM sp_case_then_statements */
+#line 4335 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->case_stmt_action_then()))
MYSQL_YYABORT;
}
-#line 32728 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32947 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 441: /* $@52: %empty */
-#line 4243 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 447: /* $@52: %empty */
+#line 4343 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->case_stmt_action_when(false)))
MYSQL_YYABORT;
}
-#line 32737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32956 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 442: /* searched_when_clause: WHEN_SYM expr_lex $@52 THEN_SYM sp_case_then_statements */
-#line 4249 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 448: /* searched_when_clause: WHEN_SYM expr_lex $@52 THEN_SYM sp_case_then_statements */
+#line 4349 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->case_stmt_action_then()))
MYSQL_YYABORT;
}
-#line 32746 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 443: /* else_clause_opt: %empty */
-#line 4257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 449: /* else_clause_opt: %empty */
+#line 4357 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -32757,73 +32976,73 @@ yyreduce:
unlikely(sp->add_instr(i)))
MYSQL_YYABORT;
}
-#line 32761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32980 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 445: /* sp_opt_label: %empty */
-#line 4271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 451: /* sp_opt_label: %empty */
+#line 4371 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 32767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32986 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 446: /* sp_opt_label: label_ident */
-#line 4272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 452: /* sp_opt_label: label_ident */
+#line 4372 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 32773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 447: /* opt_sp_for_loop_direction: %empty */
-#line 4277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 453: /* opt_sp_for_loop_direction: %empty */
+#line 4377 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 32779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 32998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 448: /* opt_sp_for_loop_direction: REVERSE_SYM */
-#line 4278 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 454: /* opt_sp_for_loop_direction: REVERSE_SYM */
+#line 4378 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= -1; }
-#line 32785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33004 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 449: /* sp_for_loop_index_and_bounds: ident_for_loop_index sp_for_loop_bounds */
-#line 4283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 455: /* sp_for_loop_index_and_bounds: ident_for_loop_index sp_for_loop_bounds */
+#line 4383 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_declarations(thd, &(yyval.for_loop), &(yyvsp[-1].ident_sys), (yyvsp[0].for_loop_bounds))))
MYSQL_YYABORT;
}
-#line 32794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33013 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 450: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr DOT_DOT_SYM for_loop_bound_expr */
-#line 4292 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 456: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr DOT_DOT_SYM for_loop_bound_expr */
+#line 4392 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.for_loop_bounds)= Lex_for_loop_bounds_intrange((yyvsp[-3].num), (yyvsp[-2].assignment_lex), (yyvsp[0].assignment_lex));
}
-#line 32802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 451: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr */
-#line 4296 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 457: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr */
+#line 4396 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.for_loop_bounds).m_direction= (yyvsp[-1].num);
(yyval.for_loop_bounds).m_index= (yyvsp[0].assignment_lex);
(yyval.for_loop_bounds).m_target_bound= NULL;
(yyval.for_loop_bounds).m_implicit_cursor= false;
}
-#line 32813 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33032 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 452: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction '(' sp_cursor_stmt ')' */
-#line 4303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 458: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction '(' sp_cursor_stmt ')' */
+#line 4403 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_implicit_cursor_statement(thd, &(yyval.for_loop_bounds),
(yyvsp[-1].sp_cursor_stmt))))
MYSQL_YYABORT;
}
-#line 32823 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 453: /* loop_body: sp_proc_stmts1 END LOOP_SYM */
-#line 4312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 459: /* loop_body: sp_proc_stmts1 END LOOP_SYM */
+#line 4412 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
uint ip= lex->sphead->instructions();
@@ -32834,168 +33053,168 @@ yyreduce:
unlikely(lex->sphead->add_instr(i)))
MYSQL_YYABORT;
}
-#line 32838 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 454: /* repeat_body: sp_proc_stmts1 UNTIL_SYM expr_lex END REPEAT_SYM */
-#line 4326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 460: /* repeat_body: sp_proc_stmts1 UNTIL_SYM expr_lex END REPEAT_SYM */
+#line 4426 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-2].expr_lex)->sp_repeat_loop_finalize(thd))
MYSQL_YYABORT;
}
-#line 32847 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 455: /* pop_sp_loop_label: sp_opt_label */
-#line 4334 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 461: /* pop_sp_loop_label: sp_opt_label */
+#line 4434 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_pop_loop_label(thd, &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 32856 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 456: /* $@53: %empty */
-#line 4342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 462: /* $@53: %empty */
+#line 4442 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-1].lex_str))))
MYSQL_YYABORT;
}
-#line 32865 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 457: /* sp_labeled_control: sp_control_label LOOP_SYM $@53 loop_body pop_sp_loop_label */
-#line 4347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 463: /* sp_labeled_control: sp_control_label LOOP_SYM $@53 loop_body pop_sp_loop_label */
+#line 4447 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32871 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33090 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 458: /* $@54: %empty */
-#line 4349 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 464: /* $@54: %empty */
+#line 4449 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-1].lex_str))))
MYSQL_YYABORT;
}
-#line 32880 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 459: /* sp_labeled_control: sp_control_label WHILE_SYM $@54 while_body pop_sp_loop_label */
-#line 4354 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 465: /* sp_labeled_control: sp_control_label WHILE_SYM $@54 while_body pop_sp_loop_label */
+#line 4454 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32886 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 460: /* $@55: %empty */
-#line 4356 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 466: /* $@55: %empty */
+#line 4456 "/home/buildbot/git/sql/sql_yacc.yy"
{
// See "The FOR LOOP statement" comments in sql_lex.cc
Lex->sp_block_init(thd); // The outer DECLARE..BEGIN..END block
}
-#line 32895 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 461: /* $@56: %empty */
-#line 4361 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 467: /* $@56: %empty */
+#line 4461 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-3].lex_str)))) // The inner WHILE block
MYSQL_YYABORT;
if (unlikely(Lex->sp_for_loop_condition_test(thd, (yyvsp[0].for_loop))))
MYSQL_YYABORT;
}
-#line 32906 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 462: /* $@57: %empty */
-#line 4368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 468: /* $@57: %empty */
+#line 4468 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_finalize(thd, (yyvsp[-2].for_loop))))
MYSQL_YYABORT;
}
-#line 32915 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 463: /* sp_labeled_control: sp_control_label FOR_SYM $@55 sp_for_loop_index_and_bounds $@56 for_loop_statements $@57 pop_sp_loop_label */
-#line 4373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 469: /* sp_labeled_control: sp_control_label FOR_SYM $@55 sp_for_loop_index_and_bounds $@56 for_loop_statements $@57 pop_sp_loop_label */
+#line 4473 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_outer_block_finalize(thd, (yyvsp[-4].for_loop))))
MYSQL_YYABORT;
}
-#line 32924 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 464: /* $@58: %empty */
-#line 4378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 470: /* $@58: %empty */
+#line 4478 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-1].lex_str))))
MYSQL_YYABORT;
}
-#line 32933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33152 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 465: /* sp_labeled_control: sp_control_label REPEAT_SYM $@58 repeat_body pop_sp_loop_label */
-#line 4383 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 471: /* sp_labeled_control: sp_control_label REPEAT_SYM $@58 repeat_body pop_sp_loop_label */
+#line 4483 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33158 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 466: /* $@59: %empty */
-#line 4388 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 472: /* $@59: %empty */
+#line 4488 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd)))
MYSQL_YYABORT;
}
-#line 32948 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33167 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 467: /* sp_unlabeled_control: LOOP_SYM $@59 loop_body */
-#line 4393 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 473: /* sp_unlabeled_control: LOOP_SYM $@59 loop_body */
+#line 4493 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_pop_loop_empty_label(thd);
}
-#line 32956 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 468: /* $@60: %empty */
-#line 4397 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 474: /* $@60: %empty */
+#line 4497 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd)))
MYSQL_YYABORT;
}
-#line 32965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 469: /* sp_unlabeled_control: WHILE_SYM $@60 while_body */
-#line 4402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 475: /* sp_unlabeled_control: WHILE_SYM $@60 while_body */
+#line 4502 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_pop_loop_empty_label(thd);
}
-#line 32973 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 470: /* $@61: %empty */
-#line 4406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 476: /* $@61: %empty */
+#line 4506 "/home/buildbot/git/sql/sql_yacc.yy"
{
// See "The FOR LOOP statement" comments in sql_lex.cc
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
Lex->sp_block_init(thd); // The outer DECLARE..BEGIN..END block
}
-#line 32984 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33203 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 471: /* $@62: %empty */
-#line 4413 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 477: /* $@62: %empty */
+#line 4513 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd))) // The inner WHILE block
MYSQL_YYABORT;
if (unlikely(Lex->sp_for_loop_condition_test(thd, (yyvsp[0].for_loop))))
MYSQL_YYABORT;
}
-#line 32995 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33214 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 472: /* sp_unlabeled_control: FOR_SYM $@61 sp_for_loop_index_and_bounds $@62 for_loop_statements */
-#line 4420 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 478: /* sp_unlabeled_control: FOR_SYM $@61 sp_for_loop_index_and_bounds $@62 for_loop_statements */
+#line 4520 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_finalize(thd, (yyvsp[-2].for_loop))))
MYSQL_YYABORT;
@@ -33003,76 +33222,76 @@ yyreduce:
if (unlikely(Lex->sp_for_loop_outer_block_finalize(thd, (yyvsp[-2].for_loop))))
MYSQL_YYABORT;
}
-#line 33007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33226 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 473: /* $@63: %empty */
-#line 4428 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 479: /* $@63: %empty */
+#line 4528 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd)))
MYSQL_YYABORT;
}
-#line 33016 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33235 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 474: /* sp_unlabeled_control: REPEAT_SYM $@63 repeat_body */
-#line 4433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 480: /* sp_unlabeled_control: REPEAT_SYM $@63 repeat_body */
+#line 4533 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_pop_loop_empty_label(thd);
}
-#line 33024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 475: /* trg_action_time: BEFORE_SYM */
-#line 4440 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 481: /* trg_action_time: BEFORE_SYM */
+#line 4540 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.action_time= TRG_ACTION_BEFORE; }
-#line 33030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 476: /* trg_action_time: AFTER_SYM */
-#line 4442 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 482: /* trg_action_time: AFTER_SYM */
+#line 4542 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.action_time= TRG_ACTION_AFTER; }
-#line 33036 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 477: /* trg_event: INSERT */
-#line 4447 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 483: /* trg_event: INSERT */
+#line 4547 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.event= TRG_EVENT_INSERT; }
-#line 33042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33261 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 478: /* trg_event: UPDATE_SYM */
-#line 4449 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 484: /* trg_event: UPDATE_SYM */
+#line 4549 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.event= TRG_EVENT_UPDATE; }
-#line 33048 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33267 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 479: /* trg_event: DELETE_SYM */
-#line 4451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 485: /* trg_event: DELETE_SYM */
+#line 4551 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.event= TRG_EVENT_DELETE; }
-#line 33054 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 480: /* $@64: %empty */
-#line 4456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 486: /* $@64: %empty */
+#line 4556 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->create_info.option_list= NULL; }
-#line 33060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33279 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 481: /* create_body: create_field_list_parens $@64 opt_create_table_options opt_create_partitioning opt_create_select */
-#line 4457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 487: /* create_body: create_field_list_parens $@64 opt_create_table_options opt_create_partitioning opt_create_select */
+#line 4557 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33285 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 482: /* create_body: opt_create_table_options opt_create_partitioning opt_create_select */
-#line 4458 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 488: /* create_body: opt_create_table_options opt_create_partitioning opt_create_select */
+#line 4558 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33072 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33291 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 483: /* create_body: create_like */
-#line 4460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 489: /* create_body: create_like */
+#line 4560 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.add(DDL_options_st::OPT_LIKE);
@@ -33083,48 +33302,48 @@ yyreduce:
/* CREATE TABLE ... LIKE is not allowed for views. */
src_table->required_type= TABLE_TYPE_NORMAL;
}
-#line 33087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33306 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 484: /* create_like: LIKE table_ident */
-#line 4473 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 490: /* create_like: LIKE table_ident */
+#line 4573 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table)= (yyvsp[0].table); }
-#line 33093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33312 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 485: /* create_like: LEFT_PAREN_LIKE LIKE table_ident ')' */
-#line 4474 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 491: /* create_like: LEFT_PAREN_LIKE LIKE table_ident ')' */
+#line 4574 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table)= (yyvsp[-1].table); }
-#line 33099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33318 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 486: /* opt_create_select: %empty */
-#line 4478 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 492: /* opt_create_select: %empty */
+#line 4578 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33324 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 487: /* opt_create_select: opt_duplicate opt_as create_select_query_expression opt_versioning_option */
-#line 4481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 493: /* opt_create_select: opt_duplicate opt_as create_select_query_expression opt_versioning_option */
+#line 4581 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.add(DDL_options_st::OPT_CREATE_SELECT);
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 33115 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 488: /* create_select_query_expression: query_expression */
-#line 4490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 494: /* create_select_query_expression: query_expression */
+#line 4590 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->parsed_insert_select((yyvsp[0].select_lex_unit)->first_select()))
MYSQL_YYABORT;
}
-#line 33124 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 489: /* create_select_query_expression: LEFT_PAREN_WITH with_clause query_expression_no_with_clause ')' */
-#line 4495 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 495: /* create_select_query_expression: LEFT_PAREN_WITH with_clause query_expression_no_with_clause ')' */
+#line 4595 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *first_select= (yyvsp[-1].select_lex_unit)->first_select();
(yyvsp[-1].select_lex_unit)->set_with_clause((yyvsp[-2].with_clause));
@@ -33132,11 +33351,11 @@ yyreduce:
if (Lex->parsed_insert_select(first_select))
MYSQL_YYABORT;
}
-#line 33136 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 490: /* opt_create_partitioning: opt_partitioning */
-#line 4506 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 496: /* opt_create_partitioning: opt_partitioning */
+#line 4606 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Remove all tables used in PARTITION clause from the global table
@@ -33146,17 +33365,17 @@ yyreduce:
last_non_sel_table->next_global= 0;
Lex->query_tables_last= &last_non_sel_table->next_global;
}
-#line 33150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 491: /* opt_partitioning: %empty */
-#line 4542 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 497: /* opt_partitioning: %empty */
+#line 4642 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33156 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33375 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 493: /* $@65: %empty */
-#line 4548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 499: /* $@65: %empty */
+#line 4648 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
@@ -33167,11 +33386,11 @@ yyreduce:
lex->alter_info.partition_flags|= ALTER_PARTITION_INFO;
}
}
-#line 33171 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33390 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 495: /* have_partitioning: %empty */
-#line 4563 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 501: /* have_partitioning: %empty */
+#line 4663 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
LEX_CSTRING partition_name={STRING_WITH_LEN("partition")};
@@ -33183,11 +33402,11 @@ yyreduce:
"--with-plugin-partition"));
#endif
}
-#line 33187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33406 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 496: /* $@66: %empty */
-#line 4578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 502: /* $@66: %empty */
+#line 4678 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Lex->part_info))
{
@@ -33201,110 +33420,110 @@ yyreduce:
partition info string into part_info data structure.
*/
}
-#line 33205 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 497: /* partition_entry: PARTITION_SYM $@66 partition */
-#line 4592 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 503: /* partition_entry: PARTITION_SYM $@66 partition */
+#line 4692 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 33213 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33432 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 498: /* $@67: %empty */
-#line 4599 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 504: /* $@67: %empty */
+#line 4699 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->safe_to_cache_query= 1; }
-#line 33219 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33438 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 500: /* part_type_def: opt_linear KEY_SYM opt_key_algo '(' part_field_list ')' */
-#line 4605 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 506: /* part_type_def: opt_linear KEY_SYM opt_key_algo '(' part_field_list ')' */
+#line 4705 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->list_of_part_fields= TRUE;
part_info->column_list= FALSE;
part_info->part_type= HASH_PARTITION;
}
-#line 33230 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33449 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 501: /* $@68: %empty */
-#line 4612 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 507: /* $@68: %empty */
+#line 4712 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= HASH_PARTITION; }
-#line 33236 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 502: /* part_type_def: opt_linear HASH_SYM $@68 part_func */
-#line 4613 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 508: /* part_type_def: opt_linear HASH_SYM $@68 part_func */
+#line 4713 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 503: /* part_type_def: RANGE_SYM part_func */
-#line 4615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 509: /* part_type_def: RANGE_SYM part_func */
+#line 4715 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= RANGE_PARTITION; }
-#line 33248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33467 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 504: /* part_type_def: RANGE_SYM part_column_list */
-#line 4617 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 510: /* part_type_def: RANGE_SYM part_column_list */
+#line 4717 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= RANGE_PARTITION; }
-#line 33254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 505: /* $@69: %empty */
-#line 4619 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 511: /* $@69: %empty */
+#line 4719 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_PART_FUNC;
}
-#line 33262 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 506: /* part_type_def: LIST_SYM $@69 part_func */
-#line 4623 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 512: /* part_type_def: LIST_SYM $@69 part_func */
+#line 4723 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->part_info->part_type= LIST_PARTITION;
Select->parsing_place= NO_MATTER;
}
-#line 33271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 507: /* part_type_def: LIST_SYM part_column_list */
-#line 4628 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 513: /* part_type_def: LIST_SYM part_column_list */
+#line 4728 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= LIST_PARTITION; }
-#line 33277 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 508: /* $@70: %empty */
-#line 4630 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 514: /* $@70: %empty */
+#line 4730 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->part_info->vers_init_info(thd)))
MYSQL_YYABORT;
}
-#line 33286 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 510: /* opt_linear: %empty */
-#line 4638 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 516: /* opt_linear: %empty */
+#line 4738 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33511 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 511: /* opt_linear: LINEAR_SYM */
-#line 4640 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 517: /* opt_linear: LINEAR_SYM */
+#line 4740 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->linear_hash_ind= TRUE;}
-#line 33298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33517 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 512: /* opt_key_algo: %empty */
-#line 4645 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 518: /* opt_key_algo: %empty */
+#line 4745 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->key_algorithm= partition_info::KEY_ALGORITHM_NONE;}
-#line 33304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 513: /* opt_key_algo: ALGORITHM_SYM '=' real_ulong_num */
-#line 4647 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 519: /* opt_key_algo: ALGORITHM_SYM '=' real_ulong_num */
+#line 4747 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch ((yyvsp[0].ulong_num)) {
case 1:
@@ -33318,35 +33537,35 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33541 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 514: /* part_field_list: %empty */
-#line 4663 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 520: /* part_field_list: %empty */
+#line 4763 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 515: /* part_field_list: part_field_item_list */
-#line 4664 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 521: /* part_field_list: part_field_item_list */
+#line 4764 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33553 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 516: /* part_field_item_list: part_field_item */
-#line 4668 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 522: /* part_field_item_list: part_field_item */
+#line 4768 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33559 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 517: /* part_field_item_list: part_field_item_list ',' part_field_item */
-#line 4669 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 523: /* part_field_item_list: part_field_item_list ',' part_field_item */
+#line 4769 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33565 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 518: /* part_field_item: ident */
-#line 4674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 524: /* part_field_item: ident */
+#line 4774 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->num_columns++;
@@ -33357,21 +33576,21 @@ yyreduce:
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of partition fields"));
}
-#line 33361 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 519: /* part_column_list: COLUMNS '(' part_field_list ')' */
-#line 4688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 525: /* part_column_list: COLUMNS '(' part_field_list ')' */
+#line 4788 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->column_list= TRUE;
part_info->list_of_part_fields= TRUE;
}
-#line 33371 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 520: /* part_func: '(' part_func_expr ')' */
-#line 4698 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 526: /* part_func: '(' part_func_expr ')' */
+#line 4798 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->set_part_expr(thd, (yyvsp[-1].item), FALSE)))
@@ -33379,26 +33598,26 @@ yyreduce:
part_info->num_columns= 1;
part_info->column_list= FALSE;
}
-#line 33383 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33602 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 521: /* sub_part_func: '(' part_func_expr ')' */
-#line 4709 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 527: /* sub_part_func: '(' part_func_expr ')' */
+#line 4809 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->part_info->set_part_expr(thd, (yyvsp[-1].item), TRUE)))
MYSQL_YYABORT;
}
-#line 33392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33611 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 522: /* opt_num_parts: %empty */
-#line 4717 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 528: /* opt_num_parts: %empty */
+#line 4817 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33398 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33617 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 523: /* opt_num_parts: PARTITIONS_SYM real_ulong_num */
-#line 4719 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 529: /* opt_num_parts: PARTITIONS_SYM real_ulong_num */
+#line 4819 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint num_parts= (yyvsp[0].ulong_num);
partition_info *part_info= Lex->part_info;
@@ -33408,57 +33627,57 @@ yyreduce:
part_info->num_parts= num_parts;
part_info->use_default_num_partitions= FALSE;
}
-#line 33412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33631 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 524: /* opt_sub_part: %empty */
-#line 4731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 530: /* opt_sub_part: %empty */
+#line 4831 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33418 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33637 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 525: /* $@71: %empty */
-#line 4733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 531: /* $@71: %empty */
+#line 4833 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->subpart_type= HASH_PARTITION; }
-#line 33424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33643 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 526: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear HASH_SYM sub_part_func $@71 opt_num_subparts */
-#line 4734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 532: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear HASH_SYM sub_part_func $@71 opt_num_subparts */
+#line 4834 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33649 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 527: /* $@72: %empty */
-#line 4737 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 533: /* $@72: %empty */
+#line 4837 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->subpart_type= HASH_PARTITION;
part_info->list_of_subpart_fields= TRUE;
}
-#line 33440 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33659 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 528: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear KEY_SYM opt_key_algo '(' sub_part_field_list ')' $@72 opt_num_subparts */
-#line 4742 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 534: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear KEY_SYM opt_key_algo '(' sub_part_field_list ')' $@72 opt_num_subparts */
+#line 4842 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33446 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33665 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 529: /* sub_part_field_list: sub_part_field_item */
-#line 4746 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 535: /* sub_part_field_list: sub_part_field_item */
+#line 4846 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33452 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 530: /* sub_part_field_list: sub_part_field_list ',' sub_part_field_item */
-#line 4747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 536: /* sub_part_field_list: sub_part_field_list ',' sub_part_field_item */
+#line 4847 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33458 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 531: /* sub_part_field_item: ident */
-#line 4752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 537: /* sub_part_field_item: ident */
+#line 4852 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->subpart_field_list.push_back((yyvsp[0].ident_sys).str,
@@ -33469,11 +33688,11 @@ yyreduce:
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of subpartition fields"));
}
-#line 33473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33692 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 532: /* part_func_expr: bit_expr */
-#line 4766 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 538: /* part_func_expr: bit_expr */
+#line 4866 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Lex->safe_to_cache_query))
{
@@ -33482,17 +33701,17 @@ yyreduce:
}
(yyval.item)=(yyvsp[0].item);
}
-#line 33486 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33705 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 533: /* opt_num_subparts: %empty */
-#line 4777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 539: /* opt_num_subparts: %empty */
+#line 4877 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33492 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33711 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 534: /* opt_num_subparts: SUBPARTITIONS_SYM real_ulong_num */
-#line 4779 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 540: /* opt_num_subparts: SUBPARTITIONS_SYM real_ulong_num */
+#line 4879 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint num_parts= (yyvsp[0].ulong_num);
LEX *lex= Lex;
@@ -33501,11 +33720,11 @@ yyreduce:
lex->part_info->num_subparts= num_parts;
lex->part_info->use_default_num_subpartitions= FALSE;
}
-#line 33505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33724 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 535: /* part_defs: %empty */
-#line 4791 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 541: /* part_defs: %empty */
+#line 4891 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->part_type == RANGE_PARTITION))
@@ -33515,11 +33734,11 @@ yyreduce:
my_yyabort_error((ER_PARTITIONS_MUST_BE_DEFINED_ERROR, MYF(0),
"LIST"));
}
-#line 33519 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33738 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 536: /* part_defs: '(' part_def_list ')' */
-#line 4801 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 542: /* part_defs: '(' part_def_list ')' */
+#line 4901 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
uint count_curr_parts= part_info->partitions.elements;
@@ -33538,23 +33757,23 @@ yyreduce:
}
part_info->count_curr_subparts= 0;
}
-#line 33542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 537: /* part_def_list: part_definition */
-#line 4822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 543: /* part_def_list: part_definition */
+#line 4922 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33548 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 538: /* part_def_list: part_def_list ',' part_definition */
-#line 4823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 544: /* part_def_list: part_def_list ',' part_definition */
+#line 4923 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 541: /* $@73: %empty */
-#line 4833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 547: /* $@73: %empty */
+#line 4933 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
partition_element *p_elem= new (thd->mem_root) partition_element();
@@ -33570,17 +33789,17 @@ yyreduce:
part_info->use_default_partitions= FALSE;
part_info->use_default_num_partitions= FALSE;
}
-#line 33574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 542: /* part_definition: opt_partition $@73 part_name opt_part_values opt_part_options opt_sub_partition */
-#line 4852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 548: /* part_definition: opt_partition $@73 part_name opt_part_values opt_part_options opt_sub_partition */
+#line 4952 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 543: /* part_name: ident */
-#line 4857 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 549: /* part_name: ident */
+#line 4957 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
partition_element *p_elem= part_info->curr_part_elem;
@@ -33588,11 +33807,11 @@ yyreduce:
MYSQL_YYABORT;
p_elem->partition_name= (yyvsp[0].ident_sys).str;
}
-#line 33592 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33811 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 544: /* opt_part_values: %empty */
-#line 4868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 550: /* opt_part_values: %empty */
+#line 4968 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33608,11 +33827,11 @@ yyreduce:
else
part_info->part_type= HASH_PARTITION;
}
-#line 33612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 545: /* $@74: %empty */
-#line 4884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 551: /* $@74: %empty */
+#line 4984 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33625,17 +33844,17 @@ yyreduce:
else
part_info->part_type= RANGE_PARTITION;
}
-#line 33629 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33848 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 546: /* opt_part_values: VALUES_LESS_SYM THAN_SYM $@74 part_func_max */
-#line 4896 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 552: /* opt_part_values: VALUES_LESS_SYM THAN_SYM $@74 part_func_max */
+#line 4996 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 547: /* $@75: %empty */
-#line 4898 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 553: /* $@75: %empty */
+#line 4998 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33648,39 +33867,39 @@ yyreduce:
else
part_info->part_type= LIST_PARTITION;
}
-#line 33652 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33871 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 548: /* opt_part_values: VALUES_IN_SYM $@75 part_values_in */
-#line 4910 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 554: /* opt_part_values: VALUES_IN_SYM $@75 part_values_in */
+#line 5010 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33658 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33877 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 549: /* opt_part_values: CURRENT_SYM */
-#line 4912 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 555: /* opt_part_values: CURRENT_SYM */
+#line 5012 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (Lex->part_values_current(thd))
MYSQL_YYABORT;
#endif
}
-#line 33669 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 550: /* opt_part_values: HISTORY_SYM */
-#line 4919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 556: /* opt_part_values: HISTORY_SYM */
+#line 5019 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (Lex->part_values_history(thd))
MYSQL_YYABORT;
#endif
}
-#line 33680 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33899 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 551: /* opt_part_values: DEFAULT */
-#line 4926 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 557: /* opt_part_values: DEFAULT */
+#line 5026 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33697,11 +33916,11 @@ yyreduce:
if (unlikely(part_info->add_max_value(thd)))
MYSQL_YYABORT;
}
-#line 33701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33920 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 552: /* part_func_max: MAXVALUE_SYM */
-#line 4946 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 558: /* part_func_max: MAXVALUE_SYM */
+#line 5046 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
@@ -33719,17 +33938,17 @@ yyreduce:
if (unlikely(part_info->add_max_value(thd)))
MYSQL_YYABORT;
}
-#line 33723 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33942 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 553: /* part_func_max: part_value_item */
-#line 4963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 559: /* part_func_max: part_value_item */
+#line 5063 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33729 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33948 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 554: /* part_values_in: part_value_item */
-#line 4968 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 560: /* part_values_in: part_value_item */
+#line 5068 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33756,11 +33975,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33760 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 555: /* part_values_in: '(' part_value_list ')' */
-#line 4995 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 561: /* part_values_in: '(' part_value_list ')' */
+#line 5095 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->num_columns < 2U))
@@ -33769,23 +33988,23 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 556: /* part_value_list: part_value_item */
-#line 5006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 562: /* part_value_list: part_value_item */
+#line 5106 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 33998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 557: /* part_value_list: part_value_list ',' part_value_item */
-#line 5007 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 563: /* part_value_list: part_value_list ',' part_value_item */
+#line 5107 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34004 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 558: /* $@76: %empty */
-#line 5012 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 564: /* $@76: %empty */
+#line 5112 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->print_debug("( part_value_item", NULL);
@@ -33795,17 +34014,17 @@ yyreduce:
part_info->init_column_part(thd)))
MYSQL_YYABORT;
}
-#line 33799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 559: /* $@77: %empty */
-#line 5021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 565: /* $@77: %empty */
+#line 5121 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 560: /* part_value_item: '(' $@76 part_value_item_list $@77 ')' */
-#line 5023 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 566: /* part_value_item: '(' $@76 part_value_item_list $@77 ')' */
+#line 5123 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->print_debug(") part_value_item", NULL);
@@ -33826,23 +34045,23 @@ yyreduce:
}
part_info->curr_list_object= 0;
}
-#line 33830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34049 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 561: /* part_value_item_list: part_value_expr_item */
-#line 5046 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 567: /* part_value_item_list: part_value_expr_item */
+#line 5146 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33836 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34055 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 562: /* part_value_item_list: part_value_item_list ',' part_value_expr_item */
-#line 5047 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 568: /* part_value_item_list: part_value_item_list ',' part_value_expr_item */
+#line 5147 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33842 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34061 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 563: /* part_value_expr_item: MAXVALUE_SYM */
-#line 5052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 569: /* part_value_expr_item: MAXVALUE_SYM */
+#line 5152 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->part_type == LIST_PARTITION))
@@ -33853,11 +34072,11 @@ yyreduce:
if (unlikely(part_info->add_max_value(thd)))
MYSQL_YYABORT;
}
-#line 33857 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34076 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 564: /* part_value_expr_item: bit_expr */
-#line 5063 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 570: /* part_value_expr_item: bit_expr */
+#line 5163 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33871,11 +34090,11 @@ yyreduce:
if (unlikely(part_info->add_column_list_value(thd, part_expr)))
MYSQL_YYABORT;
}
-#line 33875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 565: /* opt_sub_partition: %empty */
-#line 5081 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 571: /* opt_sub_partition: %empty */
+#line 5181 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->num_subparts != 0 &&
@@ -33889,11 +34108,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33893 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34112 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 566: /* opt_sub_partition: '(' sub_part_list ')' */
-#line 5095 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 572: /* opt_sub_partition: '(' sub_part_list ')' */
+#line 5195 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (part_info->num_subparts != 0)
@@ -33916,23 +34135,23 @@ yyreduce:
}
part_info->count_curr_subparts= 0;
}
-#line 33920 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34139 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 567: /* sub_part_list: sub_part_definition */
-#line 5120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 573: /* sub_part_list: sub_part_definition */
+#line 5220 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33926 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 568: /* sub_part_list: sub_part_list ',' sub_part_definition */
-#line 5121 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 574: /* sub_part_list: sub_part_list ',' sub_part_definition */
+#line 5221 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33932 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 569: /* $@78: %empty */
-#line 5126 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 575: /* $@78: %empty */
+#line 5226 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
partition_element *curr_part= part_info->current_partition;
@@ -33965,164 +34184,164 @@ yyreduce:
part_info->use_default_num_subpartitions= FALSE;
part_info->count_curr_subparts++;
}
-#line 33969 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34188 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 570: /* sub_part_definition: SUBPARTITION_SYM $@78 sub_name opt_subpart_options */
-#line 5158 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 576: /* sub_part_definition: SUBPARTITION_SYM $@78 sub_name opt_subpart_options */
+#line 5258 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33975 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 571: /* sub_name: ident_or_text */
-#line 5163 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 577: /* sub_name: ident_or_text */
+#line 5263 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(check_ident_length(&(yyvsp[0].lex_str))))
MYSQL_YYABORT;
Lex->part_info->curr_part_elem->partition_name= (yyvsp[0].lex_str).str;
}
-#line 33985 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34204 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 572: /* opt_part_options: %empty */
-#line 5171 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 578: /* opt_part_options: %empty */
+#line 5271 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34210 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 573: /* opt_part_options: part_option_list */
-#line 5172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 579: /* opt_part_options: part_option_list */
+#line 5272 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34216 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 574: /* part_option_list: part_option_list part_option */
-#line 5176 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 580: /* part_option_list: part_option_list part_option */
+#line 5276 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34222 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 575: /* part_option_list: part_option */
-#line 5177 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 581: /* part_option_list: part_option */
+#line 5277 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34228 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 576: /* part_option: server_part_option */
-#line 5181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 582: /* part_option: server_part_option */
+#line 5281 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34234 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 577: /* part_option: engine_defined_option */
-#line 5183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 583: /* part_option: engine_defined_option */
+#line 5283 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->part_info->curr_part_elem->option_list,
&Lex->option_list_last);
}
-#line 34024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 578: /* opt_subpart_options: %empty */
-#line 5190 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 584: /* opt_subpart_options: %empty */
+#line 5290 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 579: /* opt_subpart_options: subpart_option_list */
-#line 5191 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 585: /* opt_subpart_options: subpart_option_list */
+#line 5291 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34036 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 580: /* subpart_option_list: subpart_option_list server_part_option */
-#line 5195 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 586: /* subpart_option_list: subpart_option_list server_part_option */
+#line 5295 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34261 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 581: /* subpart_option_list: server_part_option */
-#line 5196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 587: /* subpart_option_list: server_part_option */
+#line 5296 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34048 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34267 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 582: /* server_part_option: TABLESPACE opt_equal ident_or_text */
-#line 5201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 588: /* server_part_option: TABLESPACE opt_equal ident_or_text */
+#line 5301 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* Compatibility with MySQL */ }
-#line 34054 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 583: /* server_part_option: opt_storage ENGINE_SYM opt_equal storage_engines */
-#line 5203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 589: /* server_part_option: opt_storage ENGINE_SYM opt_equal storage_engines */
+#line 5303 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->curr_part_elem->engine_type= (yyvsp[0].db_type);
part_info->default_engine_type= (yyvsp[0].db_type);
}
-#line 34064 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 584: /* server_part_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
-#line 5209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 590: /* server_part_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
+#line 5309 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info->curr_part_elem->connect_string.str= (yyvsp[0].lex_str).str;
lex->part_info->curr_part_elem->connect_string.length= (yyvsp[0].lex_str).length;
}
-#line 34074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34293 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 585: /* server_part_option: NODEGROUP_SYM opt_equal real_ulong_num */
-#line 5215 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 591: /* server_part_option: NODEGROUP_SYM opt_equal real_ulong_num */
+#line 5315 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->nodegroup_id= (uint16) (yyvsp[0].ulong_num); }
-#line 34080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34299 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 586: /* server_part_option: MAX_ROWS opt_equal real_ulonglong_num */
-#line 5217 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 592: /* server_part_option: MAX_ROWS opt_equal real_ulonglong_num */
+#line 5317 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->part_max_rows= (ha_rows) (yyvsp[0].ulonglong_number); }
-#line 34086 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34305 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 587: /* server_part_option: MIN_ROWS opt_equal real_ulonglong_num */
-#line 5219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 593: /* server_part_option: MIN_ROWS opt_equal real_ulonglong_num */
+#line 5319 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->part_min_rows= (ha_rows) (yyvsp[0].ulonglong_number); }
-#line 34092 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34311 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 588: /* server_part_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5221 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 594: /* server_part_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5321 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->data_file_name= (yyvsp[0].lex_str).str; }
-#line 34098 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34317 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 589: /* server_part_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5223 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 595: /* server_part_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5323 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->index_file_name= (yyvsp[0].lex_str).str; }
-#line 34104 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34323 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 590: /* server_part_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
-#line 5225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 596: /* server_part_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
+#line 5325 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->part_comment= (yyvsp[0].lex_str).str; }
-#line 34110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 591: /* opt_versioning_rotation: %empty */
-#line 5229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 597: /* opt_versioning_rotation: %empty */
+#line 5329 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34116 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34335 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 592: /* $@79: %empty */
-#line 5230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 598: /* $@79: %empty */
+#line 5330 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "INTERVAL"; }
-#line 34122 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34341 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 593: /* opt_versioning_rotation: $@79 INTERVAL_SYM expr interval opt_versioning_interval_start opt_vers_auto_part */
-#line 5232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 599: /* opt_versioning_rotation: $@79 INTERVAL_SYM expr interval opt_versioning_interval_start opt_vers_auto_part */
+#line 5332 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
const char *table_name= Lex->create_last_non_select_table->table_name.str;
@@ -34130,159 +34349,159 @@ yyreduce:
table_name)))
MYSQL_YYABORT;
}
-#line 34134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 594: /* opt_versioning_rotation: LIMIT ulonglong_num opt_vers_auto_part */
-#line 5240 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 600: /* opt_versioning_rotation: LIMIT ulonglong_num opt_vers_auto_part */
+#line 5340 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
const char *table_name= Lex->create_last_non_select_table->table_name.str;
if (unlikely(part_info->vers_set_limit((yyvsp[-1].ulonglong_number), (yyvsp[0].num), table_name)))
MYSQL_YYABORT;
}
-#line 34145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 595: /* opt_versioning_interval_start: %empty */
-#line 5251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 601: /* opt_versioning_interval_start: %empty */
+#line 5351 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= NULL;
}
-#line 34153 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34372 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 596: /* opt_versioning_interval_start: STARTS_SYM literal */
-#line 5255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 602: /* opt_versioning_interval_start: STARTS_SYM literal */
+#line 5355 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 34161 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34380 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 597: /* opt_vers_auto_part: %empty */
-#line 5262 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 603: /* opt_vers_auto_part: %empty */
+#line 5362 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= 0;
}
-#line 34169 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34388 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 598: /* opt_vers_auto_part: AUTO_SYM */
-#line 5266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 604: /* opt_vers_auto_part: AUTO_SYM */
+#line 5366 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= 1;
}
-#line 34177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 599: /* opt_as: %empty */
-#line 5275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 605: /* opt_as: %empty */
+#line 5375 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34402 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 600: /* opt_as: AS */
-#line 5276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 606: /* opt_as: AS */
+#line 5376 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34189 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 601: /* opt_create_database_options: %empty */
-#line 5280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 607: /* opt_create_database_options: %empty */
+#line 5380 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34414 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 602: /* opt_create_database_options: create_database_options */
-#line 5281 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 608: /* opt_create_database_options: create_database_options */
+#line 5381 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34420 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 603: /* create_database_options: create_database_option */
-#line 5285 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 609: /* create_database_options: create_database_option */
+#line 5385 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34207 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34426 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 604: /* create_database_options: create_database_options create_database_option */
-#line 5286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 610: /* create_database_options: create_database_options create_database_option */
+#line 5386 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34213 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34432 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 605: /* create_database_option: default_collation */
-#line 5290 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 611: /* create_database_option: default_collation */
+#line 5390 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34219 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34438 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 606: /* create_database_option: default_charset */
-#line 5291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 612: /* create_database_option: default_charset */
+#line 5391 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34225 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34444 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 607: /* create_database_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
-#line 5293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 613: /* create_database_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
+#line 5393 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.schema_comment= thd->make_clex_string((yyvsp[0].lex_str));
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
}
-#line 34234 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34453 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 608: /* opt_if_not_exists_table_element: %empty */
-#line 5301 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 614: /* opt_if_not_exists_table_element: %empty */
+#line 5401 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= FALSE;
}
-#line 34242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 609: /* opt_if_not_exists_table_element: IF_SYM not EXISTS */
-#line 5305 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 615: /* opt_if_not_exists_table_element: IF_SYM not EXISTS */
+#line 5405 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= TRUE;
}
-#line 34250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34469 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 610: /* opt_if_not_exists: %empty */
-#line 5312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 616: /* opt_if_not_exists: %empty */
+#line 5412 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).init();
}
-#line 34258 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 611: /* opt_if_not_exists: IF_SYM not EXISTS */
-#line 5316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 617: /* opt_if_not_exists: IF_SYM not EXISTS */
+#line 5416 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_IF_NOT_EXISTS);
}
-#line 34266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34485 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 612: /* create_or_replace: CREATE */
-#line 5323 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 618: /* create_or_replace: CREATE */
+#line 5423 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).init();
}
-#line 34274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34493 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 613: /* create_or_replace: CREATE OR_SYM REPLACE */
-#line 5327 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 619: /* create_or_replace: CREATE OR_SYM REPLACE */
+#line 5427 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_OR_REPLACE);
}
-#line 34282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34501 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 621: /* create_table_option: ENGINE_SYM opt_equal ident_or_text */
-#line 5350 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 627: /* create_table_option: ENGINE_SYM opt_equal ident_or_text */
+#line 5450 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!lex->m_sql_cmd)
@@ -34297,65 +34516,65 @@ yyreduce:
*opt= Storage_engine_name((yyvsp[0].lex_str));
lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;
}
-#line 34301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34520 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 622: /* create_table_option: MAX_ROWS opt_equal ulonglong_num */
-#line 5365 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 628: /* create_table_option: MAX_ROWS opt_equal ulonglong_num */
+#line 5465 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.max_rows= (yyvsp[0].ulonglong_number);
Lex->create_info.used_fields|= HA_CREATE_USED_MAX_ROWS;
}
-#line 34310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34529 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 623: /* create_table_option: MIN_ROWS opt_equal ulonglong_num */
-#line 5370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 629: /* create_table_option: MIN_ROWS opt_equal ulonglong_num */
+#line 5470 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.min_rows= (yyvsp[0].ulonglong_number);
Lex->create_info.used_fields|= HA_CREATE_USED_MIN_ROWS;
}
-#line 34319 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 624: /* create_table_option: AVG_ROW_LENGTH opt_equal ulong_num */
-#line 5375 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 630: /* create_table_option: AVG_ROW_LENGTH opt_equal ulong_num */
+#line 5475 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.avg_row_length=(yyvsp[0].ulong_num);
Lex->create_info.used_fields|= HA_CREATE_USED_AVG_ROW_LENGTH;
}
-#line 34328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 625: /* create_table_option: PASSWORD_SYM opt_equal TEXT_STRING_sys */
-#line 5380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 631: /* create_table_option: PASSWORD_SYM opt_equal TEXT_STRING_sys */
+#line 5480 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.password=(yyvsp[0].lex_str).str;
Lex->create_info.used_fields|= HA_CREATE_USED_PASSWORD;
}
-#line 34337 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34556 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 626: /* create_table_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
-#line 5385 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 632: /* create_table_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
+#line 5485 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.comment=(yyvsp[0].lex_str);
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
}
-#line 34346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34565 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 627: /* create_table_option: AUTO_INC opt_equal ulonglong_num */
-#line 5390 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 633: /* create_table_option: AUTO_INC opt_equal ulonglong_num */
+#line 5490 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.auto_increment_value=(yyvsp[0].ulonglong_number);
Lex->create_info.used_fields|= HA_CREATE_USED_AUTO;
}
-#line 34355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 628: /* create_table_option: PACK_KEYS_SYM opt_equal ulong_num */
-#line 5395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 634: /* create_table_option: PACK_KEYS_SYM opt_equal ulong_num */
+#line 5495 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch((yyvsp[0].ulong_num)) {
case 0:
@@ -34370,21 +34589,21 @@ yyreduce:
}
Lex->create_info.used_fields|= HA_CREATE_USED_PACK_KEYS;
}
-#line 34374 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34593 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 629: /* create_table_option: PACK_KEYS_SYM opt_equal DEFAULT */
-#line 5410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 635: /* create_table_option: PACK_KEYS_SYM opt_equal DEFAULT */
+#line 5510 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options&=
~(HA_OPTION_PACK_KEYS | HA_OPTION_NO_PACK_KEYS);
Lex->create_info.used_fields|= HA_CREATE_USED_PACK_KEYS;
}
-#line 34384 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 630: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal ulong_num */
-#line 5416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 636: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal ulong_num */
+#line 5516 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch((yyvsp[0].ulong_num)) {
case 0:
@@ -34399,20 +34618,20 @@ yyreduce:
}
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_AUTO_RECALC;
}
-#line 34403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 631: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal DEFAULT */
-#line 5431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 637: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal DEFAULT */
+#line 5531 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.stats_auto_recalc= HA_STATS_AUTO_RECALC_DEFAULT;
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_AUTO_RECALC;
}
-#line 34412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34631 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 632: /* create_table_option: STATS_PERSISTENT_SYM opt_equal ulong_num */
-#line 5436 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 638: /* create_table_option: STATS_PERSISTENT_SYM opt_equal ulong_num */
+#line 5536 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch((yyvsp[0].ulong_num)) {
case 0:
@@ -34427,21 +34646,21 @@ yyreduce:
}
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_PERSISTENT;
}
-#line 34431 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34650 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 633: /* create_table_option: STATS_PERSISTENT_SYM opt_equal DEFAULT */
-#line 5451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 639: /* create_table_option: STATS_PERSISTENT_SYM opt_equal DEFAULT */
+#line 5551 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options&=
~(HA_OPTION_STATS_PERSISTENT | HA_OPTION_NO_STATS_PERSISTENT);
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_PERSISTENT;
}
-#line 34441 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 634: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal ulong_num */
-#line 5457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 640: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal ulong_num */
+#line 5557 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* From user point of view STATS_SAMPLE_PAGES can be specified as
STATS_SAMPLE_PAGES=N (where 0<N<=65535, it does not make sense to
@@ -34459,73 +34678,73 @@ yyreduce:
Lex->create_info.stats_sample_pages=(yyvsp[0].ulong_num);
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_SAMPLE_PAGES;
}
-#line 34463 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34682 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 635: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal DEFAULT */
-#line 5475 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 641: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal DEFAULT */
+#line 5575 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.stats_sample_pages=0;
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_SAMPLE_PAGES;
}
-#line 34472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 636: /* create_table_option: CHECKSUM_SYM opt_equal ulong_num */
-#line 5480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 642: /* create_table_option: CHECKSUM_SYM opt_equal ulong_num */
+#line 5580 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM;
Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM;
}
-#line 34481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34700 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 637: /* create_table_option: TABLE_CHECKSUM_SYM opt_equal ulong_num */
-#line 5485 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 643: /* create_table_option: TABLE_CHECKSUM_SYM opt_equal ulong_num */
+#line 5585 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM;
Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM;
}
-#line 34490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34709 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 638: /* create_table_option: PAGE_CHECKSUM_SYM opt_equal choice */
-#line 5490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 644: /* create_table_option: PAGE_CHECKSUM_SYM opt_equal choice */
+#line 5590 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_PAGE_CHECKSUM;
Lex->create_info.page_checksum= (yyvsp[0].choice);
}
-#line 34499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34718 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 639: /* create_table_option: DELAY_KEY_WRITE_SYM opt_equal ulong_num */
-#line 5495 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 645: /* create_table_option: DELAY_KEY_WRITE_SYM opt_equal ulong_num */
+#line 5595 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_DELAY_KEY_WRITE : HA_OPTION_NO_DELAY_KEY_WRITE;
Lex->create_info.used_fields|= HA_CREATE_USED_DELAY_KEY_WRITE;
}
-#line 34508 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34727 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 640: /* create_table_option: ROW_FORMAT_SYM opt_equal row_types */
-#line 5500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 646: /* create_table_option: ROW_FORMAT_SYM opt_equal row_types */
+#line 5600 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.row_type= (yyvsp[0].row_type);
Lex->create_info.used_fields|= HA_CREATE_USED_ROW_FORMAT;
}
-#line 34517 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34736 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 641: /* $@80: %empty */
-#line 5505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 647: /* $@80: %empty */
+#line 5605 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->first_select_lex()->table_list.save_and_clear(&Lex->save_list);
}
-#line 34525 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34744 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 642: /* create_table_option: UNION_SYM opt_equal $@80 '(' opt_table_list ')' */
-#line 5509 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 648: /* create_table_option: UNION_SYM opt_equal $@80 '(' opt_table_list ')' */
+#line 5609 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Move the union list to the merge_list and exclude its tables
@@ -34547,141 +34766,150 @@ yyreduce:
lex->create_info.used_fields|= HA_CREATE_USED_UNION;
}
-#line 34551 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34770 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 645: /* create_table_option: INSERT_METHOD opt_equal merge_insert_types */
-#line 5533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 651: /* create_table_option: INSERT_METHOD opt_equal merge_insert_types */
+#line 5633 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.merge_insert_method= (yyvsp[0].ulong_num);
Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;
}
-#line 34560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 646: /* create_table_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 652: /* create_table_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5638 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.data_file_name= (yyvsp[0].lex_str).str;
Lex->create_info.used_fields|= HA_CREATE_USED_DATADIR;
}
-#line 34569 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34788 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 647: /* create_table_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 653: /* create_table_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5643 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.index_file_name= (yyvsp[0].lex_str).str;
Lex->create_info.used_fields|= HA_CREATE_USED_INDEXDIR;
}
-#line 34578 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 648: /* create_table_option: TABLESPACE ident */
-#line 5548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 654: /* create_table_option: TABLESPACE ident */
+#line 5648 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* Compatiblity with MySQL */ }
-#line 34584 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 649: /* create_table_option: STORAGE_SYM DISK_SYM */
-#line 5550 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 655: /* create_table_option: STORAGE_SYM DISK_SYM */
+#line 5650 "/home/buildbot/git/sql/sql_yacc.yy"
{Lex->create_info.storage_media= HA_SM_DISK;}
-#line 34590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34809 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 650: /* create_table_option: STORAGE_SYM MEMORY_SYM */
-#line 5552 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 656: /* create_table_option: STORAGE_SYM MEMORY_SYM */
+#line 5652 "/home/buildbot/git/sql/sql_yacc.yy"
{Lex->create_info.storage_media= HA_SM_MEMORY;}
-#line 34596 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 651: /* create_table_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
-#line 5554 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 657: /* create_table_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
+#line 5654 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.connect_string.str= (yyvsp[0].lex_str).str;
Lex->create_info.connect_string.length= (yyvsp[0].lex_str).length;
Lex->create_info.used_fields|= HA_CREATE_USED_CONNECTION;
}
-#line 34606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34825 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 652: /* create_table_option: KEY_BLOCK_SIZE opt_equal ulong_num */
-#line 5560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 658: /* create_table_option: KEY_BLOCK_SIZE opt_equal ulong_num */
+#line 5660 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_KEY_BLOCK_SIZE;
Lex->create_info.key_block_size= (yyvsp[0].ulong_num);
}
-#line 34615 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34834 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 653: /* create_table_option: TRANSACTIONAL_SYM opt_equal choice */
-#line 5565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 659: /* create_table_option: TRANSACTIONAL_SYM opt_equal choice */
+#line 5665 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_TRANSACTIONAL;
Lex->create_info.transactional= (yyvsp[0].choice);
}
-#line 34624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 654: /* create_table_option: engine_defined_option */
-#line 5570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 660: /* create_table_option: engine_defined_option */
+#line 5670 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->create_info.option_list, &Lex->option_list_last);
}
-#line 34632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34851 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 655: /* create_table_option: SEQUENCE_SYM opt_equal choice */
-#line 5574 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 661: /* create_table_option: SEQUENCE_SYM opt_equal choice */
+#line 5674 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_SEQUENCE;
Lex->create_info.sequence= ((yyvsp[0].choice) == HA_CHOICE_YES);
}
-#line 34641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34860 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 657: /* engine_defined_option: IDENT_sys equal TEXT_STRING_sys */
-#line 5583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 663: /* engine_defined_option: ident_options equal TEXT_STRING_sys */
+#line 5683 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].lex_str).length > ENGINE_OPTION_MAX_LENGTH))
my_yyabort_error((ER_VALUE_TOO_LONG, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys), (yyvsp[0].lex_str), true);
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 34652 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34871 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 658: /* engine_defined_option: IDENT_sys equal ident */
-#line 5590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 664: /* engine_defined_option: ident_options equal ident */
+#line 5690 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].ident_sys).length > ENGINE_OPTION_MAX_LENGTH))
my_yyabort_error((ER_VALUE_TOO_LONG, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys), (yyvsp[0].ident_sys), false);
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 34663 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 659: /* engine_defined_option: IDENT_sys equal real_ulonglong_num */
-#line 5597 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 665: /* engine_defined_option: ident_options equal real_ulonglong_num */
+#line 5697 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys), (yyvsp[0].ulonglong_number), thd->mem_root);
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 34672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 660: /* engine_defined_option: IDENT_sys equal DEFAULT */
-#line 5602 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 666: /* engine_defined_option: ident_options equal DEFAULT */
+#line 5702 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys));
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 34681 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34900 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 668: /* ident_options: keyword_options */
+#line 5711 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
+ MYSQL_YYABORT;
+ }
+#line 34909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 663: /* versioning_option: WITH_SYSTEM_SYM VERSIONING_SYM */
-#line 5615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 673: /* versioning_option: WITH_SYSTEM_SYM VERSIONING_SYM */
+#line 5732 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.options & HA_LEX_CREATE_TMP_TABLE))
{
@@ -34697,41 +34925,43 @@ yyreduce:
Lex->create_info.options|= HA_VERSIONED_TABLE;
}
}
-#line 34701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34929 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 664: /* default_charset: opt_default charset opt_equal charset_name_or_default */
-#line 5634 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 674: /* default_charset: opt_default charset opt_equal charset_name_or_default */
+#line 5751 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->create_info.add_table_option_default_charset((yyvsp[0].charset))))
+ if (unlikely(Lex->create_info.add_table_option_default_charset(
+ thd, thd->variables.character_set_collations, (yyvsp[0].charset))))
MYSQL_YYABORT;
}
-#line 34710 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 665: /* default_collation: opt_default COLLATE_SYM opt_equal collation_name_or_default */
-#line 5642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 675: /* default_collation: opt_default COLLATE_SYM opt_equal collation_name_or_default */
+#line 5760 "/home/buildbot/git/sql/sql_yacc.yy"
{
Table_specification_st *cinfo= &Lex->create_info;
- if (unlikely(cinfo->add_table_option_default_collation((yyvsp[0].Lex_extended_collation))))
+ if (unlikely(cinfo->add_table_option_default_collation(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_extended_collation))))
MYSQL_YYABORT;
}
-#line 34720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34950 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 666: /* storage_engines: ident_or_text */
-#line 5651 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 676: /* storage_engines: ident_or_text */
+#line 5770 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Storage_engine_name((yyvsp[0].lex_str)).
resolve_storage_engine_with_error(thd, &(yyval.db_type),
thd->lex->create_info.tmp_table()))
MYSQL_YYABORT;
}
-#line 34731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 667: /* known_storage_engines: ident_or_text */
-#line 5661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 677: /* known_storage_engines: ident_or_text */
+#line 5780 "/home/buildbot/git/sql/sql_yacc.yy"
{
plugin_ref plugin;
if (likely((plugin= ha_resolve_by_name(thd, &(yyvsp[0].lex_str), false))))
@@ -34739,236 +34969,236 @@ yyreduce:
else
my_yyabort_error((ER_UNKNOWN_STORAGE_ENGINE, MYF(0), (yyvsp[0].lex_str).str));
}
-#line 34743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34973 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 668: /* row_types: DEFAULT */
-#line 5671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 678: /* row_types: DEFAULT */
+#line 5790 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_DEFAULT; }
-#line 34749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 669: /* row_types: FIXED_SYM */
-#line 5672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 679: /* row_types: FIXED_SYM */
+#line 5791 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_FIXED; }
-#line 34755 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34985 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 670: /* row_types: DYNAMIC_SYM */
-#line 5673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 680: /* row_types: DYNAMIC_SYM */
+#line 5792 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_DYNAMIC; }
-#line 34761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 671: /* row_types: COMPRESSED_SYM */
-#line 5674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 681: /* row_types: COMPRESSED_SYM */
+#line 5793 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_COMPRESSED; }
-#line 34767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 34997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 672: /* row_types: REDUNDANT_SYM */
-#line 5675 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 682: /* row_types: REDUNDANT_SYM */
+#line 5794 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_REDUNDANT; }
-#line 34773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 673: /* row_types: COMPACT_SYM */
-#line 5676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 683: /* row_types: COMPACT_SYM */
+#line 5795 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_COMPACT; }
-#line 34779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 674: /* row_types: PAGE_SYM */
-#line 5677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 684: /* row_types: PAGE_SYM */
+#line 5796 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_PAGE; }
-#line 34785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 675: /* merge_insert_types: NO_SYM */
-#line 5681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 685: /* merge_insert_types: NO_SYM */
+#line 5800 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= MERGE_INSERT_DISABLED; }
-#line 34791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 676: /* merge_insert_types: FIRST_SYM */
-#line 5682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 686: /* merge_insert_types: FIRST_SYM */
+#line 5801 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= MERGE_INSERT_TO_FIRST; }
-#line 34797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 677: /* merge_insert_types: LAST_SYM */
-#line 5683 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 687: /* merge_insert_types: LAST_SYM */
+#line 5802 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= MERGE_INSERT_TO_LAST; }
-#line 34803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 678: /* udf_type: STRING_SYM */
-#line 5687 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 688: /* udf_type: STRING_SYM */
+#line 5806 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) STRING_RESULT; }
-#line 34809 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 679: /* udf_type: REAL */
-#line 5688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 689: /* udf_type: REAL */
+#line 5807 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) REAL_RESULT; }
-#line 34815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 680: /* udf_type: DECIMAL_SYM */
-#line 5689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 690: /* udf_type: DECIMAL_SYM */
+#line 5808 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) DECIMAL_RESULT; }
-#line 34821 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 681: /* udf_type: INT_SYM */
-#line 5690 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 691: /* udf_type: INT_SYM */
+#line 5809 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) INT_RESULT; }
-#line 34827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 682: /* create_field_list: field_list */
-#line 5696 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 692: /* create_field_list: field_list */
+#line 5815 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_last_non_select_table= Lex->last_table();
}
-#line 34835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35065 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 683: /* create_field_list_parens: LEFT_PAREN_ALT field_list ')' */
-#line 5703 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 693: /* create_field_list_parens: LEFT_PAREN_ALT field_list ')' */
+#line 5822 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_last_non_select_table= Lex->last_table();
}
-#line 34843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35073 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 686: /* field_list_item: column_def */
-#line 5714 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 696: /* field_list_item: column_def */
+#line 5833 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34849 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35079 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 690: /* field_list_item: PERIOD_SYM period_for_application_time */
-#line 5718 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 700: /* field_list_item: PERIOD_SYM period_for_application_time */
+#line 5837 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34855 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35085 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 691: /* column_def: field_spec */
-#line 5723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 701: /* column_def: field_spec */
+#line 5842 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.create_field)= (yyvsp[0].create_field); }
-#line 34861 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35091 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 692: /* column_def: field_spec opt_constraint references */
-#line 5725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 702: /* column_def: field_spec opt_constraint references */
+#line 5844 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_column_foreign_key(&((yyvsp[-2].create_field)->field_name), &(yyvsp[-1].lex_str),
(yyvsp[0].table), DDL_options())))
MYSQL_YYABORT;
(yyval.create_field)= (yyvsp[-2].create_field);
}
-#line 34872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35102 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 693: /* $@81: %empty */
-#line 5735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 703: /* $@81: %empty */
+#line 5854 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key(Key::MULTIPLE, &(yyvsp[-1].lex_str), (yyvsp[0].key_alg), (yyvsp[-2].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35112 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 694: /* key_def: key_or_index opt_if_not_exists opt_ident opt_USING_key_algorithm $@81 '(' key_list ')' normal_key_options */
-#line 5740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 704: /* key_def: key_or_index opt_if_not_exists opt_ident opt_USING_key_algorithm $@81 '(' key_list ')' normal_key_options */
+#line 5859 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35118 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 695: /* $@82: %empty */
-#line 5742 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 705: /* $@82: %empty */
+#line 5861 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key(Key::MULTIPLE, &(yyvsp[-2].ident_sys), (yyvsp[0].key_alg), (yyvsp[-3].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35128 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 696: /* key_def: key_or_index opt_if_not_exists ident TYPE_SYM btree_or_rtree $@82 '(' key_list ')' normal_key_options */
-#line 5747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 706: /* key_def: key_or_index opt_if_not_exists ident TYPE_SYM btree_or_rtree $@82 '(' key_list ')' normal_key_options */
+#line 5866 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34904 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 697: /* $@83: %empty */
-#line 5749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 707: /* $@83: %empty */
+#line 5868 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-3].key_type), &(yyvsp[0].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-1].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34914 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35144 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 698: /* key_def: fulltext opt_key_or_index opt_if_not_exists opt_ident $@83 '(' key_list ')' fulltext_key_options */
-#line 5754 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 708: /* key_def: fulltext opt_key_or_index opt_if_not_exists opt_ident $@83 '(' key_list ')' fulltext_key_options */
+#line 5873 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34920 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 699: /* $@84: %empty */
-#line 5756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 709: /* $@84: %empty */
+#line 5875 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-3].key_type), &(yyvsp[0].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-1].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34930 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35160 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 700: /* key_def: spatial opt_key_or_index opt_if_not_exists opt_ident $@84 '(' key_list ')' spatial_key_options */
-#line 5761 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 710: /* key_def: spatial opt_key_or_index opt_if_not_exists opt_ident $@84 '(' key_list ')' spatial_key_options */
+#line 5880 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34936 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35166 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 701: /* $@85: %empty */
-#line 5765 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 711: /* $@85: %empty */
+#line 5884 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-3].key_type), (yyvsp[-1].lex_str).str ? &(yyvsp[-1].lex_str) : &(yyvsp[-4].lex_str), (yyvsp[0].key_alg), (yyvsp[-2].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35176 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 702: /* key_def: opt_constraint constraint_key_type opt_if_not_exists opt_ident opt_USING_key_algorithm $@85 '(' key_list opt_without_overlaps ')' normal_key_options */
-#line 5770 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 712: /* key_def: opt_constraint constraint_key_type opt_if_not_exists opt_ident opt_USING_key_algorithm $@85 '(' key_list opt_without_overlaps ')' normal_key_options */
+#line 5889 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35182 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 703: /* $@86: %empty */
-#line 5773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 713: /* $@86: %empty */
+#line 5892 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-4].key_type), (yyvsp[-2].ident_sys).str ? &(yyvsp[-2].ident_sys) : &(yyvsp[-5].lex_str), (yyvsp[0].key_alg), (yyvsp[-3].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34962 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 704: /* key_def: opt_constraint constraint_key_type opt_if_not_exists ident TYPE_SYM btree_or_rtree $@86 '(' key_list opt_without_overlaps ')' normal_key_options */
-#line 5778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 714: /* key_def: opt_constraint constraint_key_type opt_if_not_exists ident TYPE_SYM btree_or_rtree $@86 '(' key_list opt_without_overlaps ')' normal_key_options */
+#line 5897 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35198 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 705: /* $@87: %empty */
-#line 5780 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 715: /* $@87: %empty */
+#line 5899 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->check_add_key((yyvsp[-1].object_ddl_options))) ||
unlikely(!(Lex->last_key= (new (thd->mem_root)
@@ -34978,100 +35208,100 @@ yyreduce:
MYSQL_YYABORT;
Lex->option_list= NULL;
}
-#line 34982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 706: /* key_def: opt_constraint FOREIGN KEY_SYM opt_if_not_exists opt_ident $@87 '(' key_list ')' references */
-#line 5790 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 716: /* key_def: opt_constraint FOREIGN KEY_SYM opt_if_not_exists opt_ident $@87 '(' key_list ')' references */
+#line 5909 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_table_foreign_key((yyvsp[-5].lex_str).str ? &(yyvsp[-5].lex_str) : &(yyvsp[-9].lex_str),
(yyvsp[-9].lex_str).str ? &(yyvsp[-9].lex_str) : &(yyvsp[-5].lex_str), (yyvsp[0].table), (yyvsp[-6].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35222 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 707: /* constraint_def: opt_constraint check_constraint */
-#line 5799 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 717: /* constraint_def: opt_constraint check_constraint */
+#line 5918 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->add_constraint((yyvsp[-1].lex_str), (yyvsp[0].virtual_column), FALSE);
}
-#line 35000 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35230 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 708: /* period_for_system_time: PERIOD_SYM FOR_SYSTEM_TIME_SYM '(' ident ',' ident ')' */
-#line 5807 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 718: /* period_for_system_time: PERIOD_SYM FOR_SYSTEM_TIME_SYM '(' ident ',' ident ')' */
+#line 5926 "/home/buildbot/git/sql/sql_yacc.yy"
{
Vers_parse_info &info= Lex->vers_get_info();
info.set_period((yyvsp[-3].ident_sys), (yyvsp[-1].ident_sys));
}
-#line 35009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35239 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 709: /* period_for_application_time: FOR_SYM ident '(' ident ',' ident ')' */
-#line 5815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 719: /* period_for_application_time: FOR_SYM ident '(' ident ',' ident ')' */
+#line 5934 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_period((yyvsp[-5].ident_sys), (yyvsp[-3].ident_sys), (yyvsp[-1].ident_sys)))
MYSQL_YYABORT;
}
-#line 35018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 710: /* opt_check_constraint: %empty */
-#line 5822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 720: /* opt_check_constraint: %empty */
+#line 5941 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.virtual_column)= (Virtual_column_info*) 0; }
-#line 35024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 711: /* opt_check_constraint: check_constraint */
-#line 5823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 721: /* opt_check_constraint: check_constraint */
+#line 5942 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.virtual_column)= (yyvsp[0].virtual_column);}
-#line 35030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 712: /* check_constraint: CHECK_SYM '(' expr ')' */
-#line 5828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 722: /* check_constraint: CHECK_SYM '(' expr ')' */
+#line 5947 "/home/buildbot/git/sql/sql_yacc.yy"
{
Virtual_column_info *v= add_virtual_expression(thd, (yyvsp[-1].item));
if (unlikely(!v))
MYSQL_YYABORT;
(yyval.virtual_column)= v;
}
-#line 35041 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 713: /* opt_constraint_no_id: %empty */
-#line 5837 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 723: /* opt_constraint_no_id: %empty */
+#line 5956 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35047 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35277 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 714: /* opt_constraint_no_id: CONSTRAINT */
-#line 5838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 724: /* opt_constraint_no_id: CONSTRAINT */
+#line 5957 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35053 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 715: /* opt_constraint: %empty */
-#line 5842 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 725: /* opt_constraint: %empty */
+#line 5961 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 35059 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 716: /* opt_constraint: constraint */
-#line 5843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 726: /* opt_constraint: constraint */
+#line 5962 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].lex_str); }
-#line 35065 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35295 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 717: /* constraint: CONSTRAINT opt_ident */
-#line 5847 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 727: /* constraint: CONSTRAINT opt_ident */
+#line 5966 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str); }
-#line 35071 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 718: /* @88: %empty */
-#line 5852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 728: /* @88: %empty */
+#line 5971 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Create_field *f= new (thd->mem_root) Create_field();
@@ -35087,11 +35317,11 @@ yyreduce:
(yyval.create_field)= f;
lex->parsing_options.lookup_keywords_after_qualifier= true;
}
-#line 35091 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35321 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 719: /* field_spec: field_ident @88 field_type_or_serial opt_check_constraint */
-#line 5868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 729: /* field_spec: field_ident @88 field_type_or_serial opt_check_constraint */
+#line 5987 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->parsing_options.lookup_keywords_after_qualifier= false;
@@ -35110,231 +35340,235 @@ yyreduce:
else if ((yyval.create_field)->flags & UNIQUE_KEY_FLAG)
lex->add_key_to_list(&(yyvsp[-3].lex_str), Key::UNIQUE, lex->check_exists);
}
-#line 35114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35344 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 720: /* $@89: %empty */
-#line 5890 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 730: /* $@89: %empty */
+#line 6009 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[0].Lex_field_type),
COLUMN_DEFINITION_TABLE_FIELD);
}
-#line 35123 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 721: /* field_type_or_serial: qualified_field_type $@89 field_def */
-#line 5895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 731: /* field_type_or_serial: qualified_field_type $@89 field_def */
+#line 6014 "/home/buildbot/git/sql/sql_yacc.yy"
{
auto tmp= (yyvsp[-2].Lex_field_type).charset_collation_attrs();
- if (tmp.merge_column_charset_clause_and_collate_clause((yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
+ if (tmp.merge_column_charset_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
MYSQL_YYABORT;
- Lex->last_field->set_charset_collation_attrs(tmp);
+ Lex->last_field->set_charset_collation_attrs(
+ thd, thd->variables.character_set_collations,
+ tmp);
}
-#line 35134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35367 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 722: /* $@90: %empty */
-#line 5902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 732: /* $@90: %empty */
+#line 6024 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_handler(&type_handler_ulonglong);
Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG
| UNSIGNED_FLAG | UNIQUE_KEY_FLAG;
Lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 35145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35378 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 724: /* opt_serial_attribute: %empty */
-#line 5912 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 734: /* opt_serial_attribute: %empty */
+#line 6034 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35384 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 725: /* opt_serial_attribute: opt_serial_attribute_list */
-#line 5913 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 735: /* opt_serial_attribute: opt_serial_attribute_list */
+#line 6035 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35390 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 726: /* opt_serial_attribute_list: opt_serial_attribute_list serial_attribute */
-#line 5917 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 736: /* opt_serial_attribute_list: opt_serial_attribute_list serial_attribute */
+#line 6039 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35163 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 728: /* opt_asrow_attribute: %empty */
-#line 5922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 738: /* opt_asrow_attribute: %empty */
+#line 6044 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35169 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35402 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 729: /* opt_asrow_attribute: opt_asrow_attribute_list */
-#line 5923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 739: /* opt_asrow_attribute: opt_asrow_attribute_list */
+#line 6045 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 730: /* opt_asrow_attribute_list: opt_asrow_attribute_list asrow_attribute */
-#line 5927 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 740: /* opt_asrow_attribute_list: opt_asrow_attribute_list asrow_attribute */
+#line 6049 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35181 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35414 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 732: /* field_def: %empty */
-#line 5932 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 742: /* field_def: %empty */
+#line 6054 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 35187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35420 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 734: /* field_def: attribute_list compressed_deprecated_column_attribute */
-#line 5934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 744: /* field_def: attribute_list compressed_deprecated_column_attribute */
+#line 6056 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs); }
-#line 35193 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35426 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 735: /* field_def: attribute_list compressed_deprecated_column_attribute attribute_list */
-#line 5936 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 745: /* field_def: attribute_list compressed_deprecated_column_attribute attribute_list */
+#line 6058 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-2].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause((yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
+ if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-2].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
MYSQL_YYABORT;
}
-#line 35202 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35436 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 736: /* $@91: %empty */
-#line 5941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 746: /* $@91: %empty */
+#line 6064 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->vcol_info= (yyvsp[0].virtual_column);
}
-#line 35210 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35444 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 737: /* field_def: opt_generated_always AS virtual_column_func $@91 vcol_opt_specifier vcol_opt_attribute */
-#line 5945 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 747: /* field_def: opt_generated_always AS virtual_column_func $@91 vcol_opt_specifier vcol_opt_attribute */
+#line 6068 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35452 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 738: /* field_def: opt_generated_always AS ROW_SYM START_SYM opt_asrow_attribute */
-#line 5949 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 748: /* field_def: opt_generated_always AS ROW_SYM START_SYM opt_asrow_attribute */
+#line 6072 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->last_field_generated_always_as_row_start())
MYSQL_YYABORT;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35228 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35462 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 739: /* field_def: opt_generated_always AS ROW_SYM END opt_asrow_attribute */
-#line 5955 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 749: /* field_def: opt_generated_always AS ROW_SYM END opt_asrow_attribute */
+#line 6078 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->last_field_generated_always_as_row_end())
MYSQL_YYABORT;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35238 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 740: /* opt_generated_always: %empty */
-#line 5963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 750: /* opt_generated_always: %empty */
+#line 6086 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 741: /* opt_generated_always: GENERATED_SYM ALWAYS_SYM */
-#line 5964 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 751: /* opt_generated_always: GENERATED_SYM ALWAYS_SYM */
+#line 6087 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35484 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 742: /* vcol_opt_specifier: %empty */
-#line 5969 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 752: /* vcol_opt_specifier: %empty */
+#line 6092 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
}
-#line 35258 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35492 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 743: /* vcol_opt_specifier: VIRTUAL_SYM */
-#line 5973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 753: /* vcol_opt_specifier: VIRTUAL_SYM */
+#line 6096 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
}
-#line 35266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35500 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 744: /* vcol_opt_specifier: PERSISTENT_SYM */
-#line 5977 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 754: /* vcol_opt_specifier: PERSISTENT_SYM */
+#line 6100 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_STORED);
}
-#line 35274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35508 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 745: /* vcol_opt_specifier: STORED_SYM */
-#line 5981 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 755: /* vcol_opt_specifier: STORED_SYM */
+#line 6104 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_STORED);
}
-#line 35282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35516 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 746: /* vcol_opt_attribute: %empty */
-#line 5987 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 756: /* vcol_opt_attribute: %empty */
+#line 6110 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35288 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 747: /* vcol_opt_attribute: vcol_opt_attribute_list */
-#line 5988 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 757: /* vcol_opt_attribute: vcol_opt_attribute_list */
+#line 6111 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35294 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 748: /* vcol_opt_attribute_list: vcol_opt_attribute_list vcol_attribute */
-#line 5992 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 758: /* vcol_opt_attribute_list: vcol_opt_attribute_list vcol_attribute */
+#line 6115 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35300 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35534 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 750: /* vcol_attribute: UNIQUE_SYM */
-#line 5998 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 760: /* vcol_attribute: UNIQUE_SYM */
+#line 6121 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= UNIQUE_KEY_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 35310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35544 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 751: /* vcol_attribute: UNIQUE_SYM KEY_SYM */
-#line 6004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 761: /* vcol_attribute: UNIQUE_SYM KEY_SYM */
+#line 6127 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= UNIQUE_KEY_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 35320 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 752: /* vcol_attribute: COMMENT_SYM TEXT_STRING_sys */
-#line 6009 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 762: /* vcol_attribute: COMMENT_SYM TEXT_STRING_sys */
+#line 6132 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->comment= (yyvsp[0].lex_str); }
-#line 35326 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 753: /* vcol_attribute: INVISIBLE_SYM */
-#line 6011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 763: /* vcol_attribute: INVISIBLE_SYM */
+#line 6134 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->invisible= INVISIBLE_USER;
}
-#line 35334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 754: /* $@92: %empty */
-#line 6018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 764: /* $@92: %empty */
+#line 6141 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
"PARSE_VCOL_EXPR" can only be used by the SQL server
@@ -35345,11 +35579,11 @@ yyreduce:
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 35349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35583 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 755: /* parse_vcol_expr: PARSE_VCOL_EXPR_SYM $@92 expr */
-#line 6029 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 765: /* parse_vcol_expr: PARSE_VCOL_EXPR_SYM $@92 expr */
+#line 6152 "/home/buildbot/git/sql/sql_yacc.yy"
{
Virtual_column_info *v= add_virtual_expression(thd, (yyvsp[0].item));
if (unlikely(!v))
@@ -35357,22 +35591,22 @@ yyreduce:
Lex->last_field->vcol_info= v;
Lex->pop_select(); //main select
}
-#line 35361 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35595 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 757: /* parenthesized_expr: expr ',' expr_list */
-#line 6041 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 767: /* parenthesized_expr: expr ',' expr_list */
+#line 6164 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].item_list)->push_front((yyvsp[-2].item), thd->mem_root);
(yyval.item)= new (thd->mem_root) Item_row(thd, *(yyvsp[0].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 35372 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 758: /* virtual_column_func: '(' parenthesized_expr ')' */
-#line 6051 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 768: /* virtual_column_func: '(' parenthesized_expr ')' */
+#line 6174 "/home/buildbot/git/sql/sql_yacc.yy"
{
Virtual_column_info *v=
add_virtual_expression(thd, (yyvsp[-1].item));
@@ -35380,11 +35614,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.virtual_column)= v;
}
-#line 35384 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35618 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 759: /* virtual_column_func: subquery */
-#line 6059 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 769: /* virtual_column_func: subquery */
+#line 6182 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item;
if (!(item= new (thd->mem_root) Item_singlerow_subselect(thd, (yyvsp[0].select_lex))))
@@ -35394,86 +35628,86 @@ yyreduce:
MYSQL_YYABORT;
(yyval.virtual_column)= v;
}
-#line 35398 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 763: /* column_default_expr: expr_or_literal */
-#line 6075 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 773: /* column_default_expr: expr_or_literal */
+#line 6198 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.virtual_column)= add_virtual_expression(thd, (yyvsp[0].item)))))
MYSQL_YYABORT;
}
-#line 35407 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 764: /* field_type: field_type_all */
-#line 6082 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 774: /* field_type: field_type_all */
+#line 6205 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->map_data_type(Lex_ident_sys(), &((yyval.Lex_field_type)= (yyvsp[0].Lex_field_type)));
}
-#line 35415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35649 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 765: /* qualified_field_type: field_type_all */
-#line 6089 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 775: /* qualified_field_type: field_type_all */
+#line 6212 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->map_data_type(Lex_ident_sys(), &((yyval.Lex_field_type)= (yyvsp[0].Lex_field_type)));
}
-#line 35423 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35657 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 766: /* qualified_field_type: sp_decl_ident '.' field_type_all */
-#line 6093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 776: /* qualified_field_type: sp_decl_ident '.' field_type_all */
+#line 6216 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->map_data_type((yyvsp[-2].ident_sys), &((yyval.Lex_field_type)= (yyvsp[0].Lex_field_type))))
MYSQL_YYABORT;
}
-#line 35432 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 767: /* udt_name: IDENT_sys */
-#line 6100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 777: /* udt_name: IDENT_sys */
+#line 6223 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 35438 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 768: /* udt_name: reserved_keyword_udt */
-#line 6101 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 778: /* udt_name: reserved_keyword_udt */
+#line 6224 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].kwd); }
-#line 35444 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35678 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 769: /* udt_name: non_reserved_keyword_udt */
-#line 6102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 779: /* udt_name: non_reserved_keyword_udt */
+#line 6225 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].kwd); }
-#line 35450 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35684 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 775: /* field_type_all: udt_name float_options srid_option */
-#line 6112 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 785: /* field_type_all: udt_name float_options srid_option */
+#line 6235 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->set_field_type_udt(&(yyval.Lex_field_type), (yyvsp[-2].lex_str), (yyvsp[-1].Lex_length_and_dec)))
MYSQL_YYABORT;
}
-#line 35459 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35693 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 776: /* field_type_numeric: int_type opt_field_length last_field_options */
-#line 6120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 786: /* field_type_numeric: int_type opt_field_length last_field_options */
+#line 6243 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set_handler_length_flags((yyvsp[-2].type_handler), (yyvsp[-1].Lex_length_and_dec), (uint32) (yyvsp[0].ulong_num));
}
-#line 35467 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 777: /* field_type_numeric: real_type opt_precision last_field_options */
-#line 6123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 787: /* field_type_numeric: real_type opt_precision last_field_options */
+#line 6246 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set((yyvsp[-2].type_handler), (yyvsp[-1].Lex_length_and_dec)); }
-#line 35473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 778: /* field_type_numeric: FLOAT_SYM float_options last_field_options */
-#line 6125 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 788: /* field_type_numeric: FLOAT_SYM float_options last_field_options */
+#line 6248 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_float, (yyvsp[-1].Lex_length_and_dec));
if ((yyvsp[-1].Lex_length_and_dec).has_explicit_length() && !(yyvsp[-1].Lex_length_and_dec).has_explicit_dec())
@@ -35487,154 +35721,154 @@ yyreduce:
(yyval.Lex_field_type).set(&type_handler_float);
}
}
-#line 35491 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 779: /* field_type_numeric: BIT_SYM opt_field_length */
-#line 6139 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 789: /* field_type_numeric: BIT_SYM opt_field_length */
+#line 6262 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_bit, (yyvsp[0].Lex_length_and_dec));
}
-#line 35499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35733 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 780: /* field_type_numeric: BOOL_SYM */
-#line 6143 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 790: /* field_type_numeric: BOOL_SYM */
+#line 6266 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set_handler_length(&type_handler_stiny, 1);
}
-#line 35507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35741 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 781: /* field_type_numeric: BOOLEAN_SYM */
-#line 6147 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 791: /* field_type_numeric: BOOLEAN_SYM */
+#line 6270 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set_handler_length(&type_handler_stiny, 1);
}
-#line 35515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 782: /* field_type_numeric: DECIMAL_SYM float_options last_field_options */
-#line 6151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 792: /* field_type_numeric: DECIMAL_SYM float_options last_field_options */
+#line 6274 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));}
-#line 35521 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35755 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 783: /* field_type_numeric: NUMBER_ORACLE_SYM float_options last_field_options */
-#line 6153 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 793: /* field_type_numeric: NUMBER_ORACLE_SYM float_options last_field_options */
+#line 6276 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-1].Lex_length_and_dec).has_explicit_length())
(yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));
else
(yyval.Lex_field_type).set(&type_handler_double);
}
-#line 35532 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35766 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 784: /* field_type_numeric: NUMERIC_SYM float_options last_field_options */
-#line 6160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 794: /* field_type_numeric: NUMERIC_SYM float_options last_field_options */
+#line 6283 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));}
-#line 35538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35772 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 785: /* field_type_numeric: FIXED_SYM float_options last_field_options */
-#line 6162 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 795: /* field_type_numeric: FIXED_SYM float_options last_field_options */
+#line 6285 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));}
-#line 35544 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 786: /* opt_binary_and_compression: %empty */
-#line 6167 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 796: /* opt_binary_and_compression: %empty */
+#line 6290 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 35550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35784 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 787: /* opt_binary_and_compression: binary */
-#line 6168 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 797: /* opt_binary_and_compression: binary */
+#line 6291 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[0].Lex_exact_charset_extended_collation_attrs); }
-#line 35556 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35790 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 788: /* opt_binary_and_compression: binary compressed_deprecated_data_type_attribute */
-#line 6169 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 798: /* opt_binary_and_compression: binary compressed_deprecated_data_type_attribute */
+#line 6292 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs); }
-#line 35562 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 789: /* opt_binary_and_compression: compressed opt_binary */
-#line 6170 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 799: /* opt_binary_and_compression: compressed opt_binary */
+#line 6293 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[0].Lex_exact_charset_extended_collation_attrs); }
-#line 35568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 790: /* field_type_string: char opt_field_length opt_binary */
-#line 6175 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 800: /* field_type_string: char opt_field_length opt_binary */
+#line 6298 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_string, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs));
}
-#line 35576 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 791: /* field_type_string: nchar opt_field_length opt_bin_mod */
-#line 6179 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 801: /* field_type_string: nchar opt_field_length opt_bin_mod */
+#line 6302 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_string, (yyvsp[-1].Lex_length_and_dec),
Lex_exact_charset_extended_collation_attrs::national((yyvsp[0].num)));
}
-#line 35585 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35819 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 792: /* field_type_string: BINARY opt_field_length */
-#line 6184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 802: /* field_type_string: BINARY opt_field_length */
+#line 6307 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_string, (yyvsp[0].Lex_length_and_dec), &my_charset_bin);
}
-#line 35593 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 793: /* field_type_string: varchar opt_field_length opt_binary_and_compression */
-#line 6188 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 803: /* field_type_string: varchar opt_field_length opt_binary_and_compression */
+#line 6311 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs));
}
-#line 35601 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 794: /* field_type_string: VARCHAR2_ORACLE_SYM opt_field_length opt_binary_and_compression */
-#line 6192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 804: /* field_type_string: VARCHAR2_ORACLE_SYM opt_field_length opt_binary_and_compression */
+#line 6315 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs));
}
-#line 35609 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 795: /* field_type_string: nvarchar opt_field_length opt_compressed opt_bin_mod */
-#line 6196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 805: /* field_type_string: nvarchar opt_field_length opt_compressed opt_bin_mod */
+#line 6319 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-2].Lex_length_and_dec),
Lex_exact_charset_extended_collation_attrs::national((yyvsp[0].num)));
}
-#line 35618 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 796: /* field_type_string: VARBINARY opt_field_length opt_compressed */
-#line 6201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 806: /* field_type_string: VARBINARY opt_field_length opt_compressed */
+#line 6324 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 35626 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35860 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 797: /* field_type_string: RAW_ORACLE_SYM opt_field_length opt_compressed */
-#line 6205 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 807: /* field_type_string: RAW_ORACLE_SYM opt_field_length opt_compressed */
+#line 6328 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 35634 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 798: /* field_type_temporal: YEAR_SYM opt_field_length last_field_options */
-#line 6212 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 808: /* field_type_temporal: YEAR_SYM opt_field_length last_field_options */
+#line 6335 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-1].Lex_length_and_dec).has_explicit_length())
{
@@ -35642,441 +35876,439 @@ yyreduce:
{
char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
my_snprintf(buff, sizeof(buff), "YEAR(%u)", (uint) (yyvsp[-1].Lex_length_and_dec).length());
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- buff, "YEAR(4)");
+ warn_deprecated<1007>(thd, buff, "YEAR(4)");
}
}
(yyval.Lex_field_type).set(&type_handler_year, (yyvsp[-1].Lex_length_and_dec));
}
-#line 35654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35885 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 799: /* field_type_temporal: DATE_SYM */
-#line 6227 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 809: /* field_type_temporal: DATE_SYM */
+#line 6347 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdate); }
-#line 35660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 800: /* field_type_temporal: TIME_SYM opt_field_length */
-#line 6229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 810: /* field_type_temporal: TIME_SYM opt_field_length */
+#line 6349 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(opt_mysql56_temporal_format ?
static_cast<const Type_handler*>(&type_handler_time2) :
static_cast<const Type_handler*>(&type_handler_time),
(yyvsp[0].Lex_length_and_dec));
}
-#line 35671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35902 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 801: /* field_type_temporal: TIMESTAMP opt_field_length */
-#line 6236 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 811: /* field_type_temporal: TIMESTAMP opt_field_length */
+#line 6356 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(opt_mysql56_temporal_format ?
static_cast<const Type_handler*>(&type_handler_timestamp2):
static_cast<const Type_handler*>(&type_handler_timestamp),
(yyvsp[0].Lex_length_and_dec));
}
-#line 35682 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35913 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 802: /* field_type_temporal: DATETIME opt_field_length */
-#line 6243 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 812: /* field_type_temporal: DATETIME opt_field_length */
+#line 6363 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(thd->type_handler_for_datetime(), (yyvsp[0].Lex_length_and_dec));
}
-#line 35690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35921 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 803: /* field_type_lob: TINYBLOB opt_compressed */
-#line 6251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 813: /* field_type_lob: TINYBLOB opt_compressed */
+#line 6371 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_tiny_blob, &my_charset_bin);
}
-#line 35698 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35929 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 804: /* field_type_lob: BLOB_MARIADB_SYM opt_field_length opt_compressed */
-#line 6255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 814: /* field_type_lob: BLOB_MARIADB_SYM opt_field_length opt_compressed */
+#line 6375 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_blob, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 35706 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35937 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 805: /* field_type_lob: BLOB_ORACLE_SYM field_length opt_compressed */
-#line 6259 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 815: /* field_type_lob: BLOB_ORACLE_SYM field_length opt_compressed */
+#line 6379 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_blob, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 35714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 806: /* field_type_lob: BLOB_ORACLE_SYM opt_compressed */
-#line 6263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 816: /* field_type_lob: BLOB_ORACLE_SYM opt_compressed */
+#line 6383 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_long_blob, &my_charset_bin);
}
-#line 35722 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 807: /* field_type_lob: MEDIUMBLOB opt_compressed */
-#line 6267 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 817: /* field_type_lob: MEDIUMBLOB opt_compressed */
+#line 6387 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_medium_blob, &my_charset_bin);
}
-#line 35730 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 808: /* field_type_lob: LONGBLOB opt_compressed */
-#line 6271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 818: /* field_type_lob: LONGBLOB opt_compressed */
+#line 6391 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_long_blob, &my_charset_bin);
}
-#line 35738 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35969 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 809: /* field_type_lob: LONG_SYM VARBINARY opt_compressed */
-#line 6275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 819: /* field_type_lob: LONG_SYM VARBINARY opt_compressed */
+#line 6395 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_medium_blob, &my_charset_bin);
}
-#line 35746 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35977 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 810: /* field_type_lob: LONG_SYM varchar opt_binary_and_compression */
-#line 6279 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 820: /* field_type_lob: LONG_SYM varchar opt_binary_and_compression */
+#line 6399 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_medium_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35752 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 811: /* field_type_lob: TINYTEXT opt_binary_and_compression */
-#line 6281 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 821: /* field_type_lob: TINYTEXT opt_binary_and_compression */
+#line 6401 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_tiny_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35758 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35989 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 812: /* field_type_lob: TEXT_SYM opt_field_length opt_binary_and_compression */
-#line 6283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 822: /* field_type_lob: TEXT_SYM opt_field_length opt_binary_and_compression */
+#line 6403 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35764 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 35995 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 813: /* field_type_lob: MEDIUMTEXT opt_binary_and_compression */
-#line 6285 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 823: /* field_type_lob: MEDIUMTEXT opt_binary_and_compression */
+#line 6405 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_medium_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35770 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 814: /* field_type_lob: LONGTEXT opt_binary_and_compression */
-#line 6287 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 824: /* field_type_lob: LONGTEXT opt_binary_and_compression */
+#line 6407 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_long_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35776 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 815: /* field_type_lob: CLOB_ORACLE_SYM opt_binary_and_compression */
-#line 6289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 825: /* field_type_lob: CLOB_ORACLE_SYM opt_binary_and_compression */
+#line 6409 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_long_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35782 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36013 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 816: /* field_type_lob: LONG_SYM opt_binary_and_compression */
-#line 6291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 826: /* field_type_lob: LONG_SYM opt_binary_and_compression */
+#line 6411 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_medium_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35788 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36019 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 817: /* field_type_lob: JSON_SYM opt_compressed */
-#line 6293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 827: /* field_type_lob: JSON_SYM opt_compressed */
+#line 6413 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_long_blob_json, &my_charset_utf8mb4_bin);
}
-#line 35796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 818: /* field_type_misc: ENUM '(' string_list ')' opt_binary */
-#line 6300 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 828: /* field_type_misc: ENUM '(' string_list ')' opt_binary */
+#line 6420 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_enum, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 819: /* field_type_misc: SET '(' string_list ')' opt_binary */
-#line 6302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 829: /* field_type_misc: SET '(' string_list ')' opt_binary */
+#line 6422 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_set, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35808 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 820: /* char: CHAR_SYM */
-#line 6306 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 830: /* char: CHAR_SYM */
+#line 6426 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 821: /* nchar: NCHAR_SYM */
-#line 6310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 831: /* nchar: NCHAR_SYM */
+#line 6430 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35820 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 822: /* nchar: NATIONAL_SYM CHAR_SYM */
-#line 6311 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 832: /* nchar: NATIONAL_SYM CHAR_SYM */
+#line 6431 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35826 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 823: /* varchar: char VARYING */
-#line 6315 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 833: /* varchar: char VARYING */
+#line 6435 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35832 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36063 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 824: /* varchar: VARCHAR */
-#line 6316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 834: /* varchar: VARCHAR */
+#line 6436 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35838 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 825: /* nvarchar: NATIONAL_SYM VARCHAR */
-#line 6320 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 835: /* nvarchar: NATIONAL_SYM VARCHAR */
+#line 6440 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35844 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 826: /* nvarchar: NVARCHAR_SYM */
-#line 6321 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 836: /* nvarchar: NVARCHAR_SYM */
+#line 6441 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35850 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 827: /* nvarchar: NCHAR_SYM VARCHAR */
-#line 6322 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 837: /* nvarchar: NCHAR_SYM VARCHAR */
+#line 6442 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35856 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 828: /* nvarchar: NATIONAL_SYM CHAR_SYM VARYING */
-#line 6323 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 838: /* nvarchar: NATIONAL_SYM CHAR_SYM VARYING */
+#line 6443 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35862 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 829: /* nvarchar: NCHAR_SYM VARYING */
-#line 6324 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 839: /* nvarchar: NCHAR_SYM VARYING */
+#line 6444 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 830: /* int_type: INT_SYM */
-#line 6328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 840: /* int_type: INT_SYM */
+#line 6448 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_slong; }
-#line 35874 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 831: /* int_type: TINYINT */
-#line 6329 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 841: /* int_type: TINYINT */
+#line 6449 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_stiny; }
-#line 35880 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36111 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 832: /* int_type: SMALLINT */
-#line 6330 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 842: /* int_type: SMALLINT */
+#line 6450 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_sshort; }
-#line 35886 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 833: /* int_type: MEDIUMINT */
-#line 6331 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 843: /* int_type: MEDIUMINT */
+#line 6451 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_sint24; }
-#line 35892 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36123 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 834: /* int_type: BIGINT */
-#line 6332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 844: /* int_type: BIGINT */
+#line 6452 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_slonglong; }
-#line 35898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36129 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 835: /* real_type: REAL */
-#line 6337 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 845: /* real_type: REAL */
+#line 6457 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.type_handler)= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ?
static_cast<const Type_handler *>(&type_handler_float) :
static_cast<const Type_handler *>(&type_handler_double);
}
-#line 35908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36139 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 836: /* real_type: DOUBLE_SYM */
-#line 6342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 846: /* real_type: DOUBLE_SYM */
+#line 6462 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_double; }
-#line 35914 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 837: /* real_type: DOUBLE_SYM PRECISION */
-#line 6343 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 847: /* real_type: DOUBLE_SYM PRECISION */
+#line 6463 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_double; }
-#line 35920 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 838: /* srid_option: %empty */
-#line 6348 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 848: /* srid_option: %empty */
+#line 6468 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->srid= 0; }
-#line 35926 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 839: /* srid_option: REF_SYSTEM_ID_SYM '=' NUM */
-#line 6351 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 849: /* srid_option: REF_SYSTEM_ID_SYM '=' NUM */
+#line 6471 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->srid=atoi((yyvsp[0].lex_str).str);
}
-#line 35934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36165 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 840: /* float_options: %empty */
-#line 6357 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 850: /* float_options: %empty */
+#line 6477 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); }
-#line 35940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36171 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 843: /* precision: '(' NUM ',' NUM ')' */
-#line 6363 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 853: /* precision: '(' NUM ',' NUM ')' */
+#line 6483 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).set((yyvsp[-3].lex_str).str, (yyvsp[-1].lex_str).str); }
-#line 35946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 844: /* field_options: %empty */
-#line 6367 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 854: /* field_options: %empty */
+#line 6487 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 845: /* field_options: SIGNED_SYM */
-#line 6368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 855: /* field_options: SIGNED_SYM */
+#line 6488 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36189 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 846: /* field_options: UNSIGNED */
-#line 6369 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 856: /* field_options: UNSIGNED */
+#line 6489 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG; }
-#line 35964 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 847: /* field_options: ZEROFILL */
-#line 6370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 857: /* field_options: ZEROFILL */
+#line 6490 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG | ZEROFILL_FLAG; }
-#line 35970 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 848: /* field_options: UNSIGNED ZEROFILL */
-#line 6371 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 858: /* field_options: UNSIGNED ZEROFILL */
+#line 6491 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG | ZEROFILL_FLAG; }
-#line 35976 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36207 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 849: /* field_options: ZEROFILL UNSIGNED */
-#line 6372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 859: /* field_options: ZEROFILL UNSIGNED */
+#line 6492 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG | ZEROFILL_FLAG; }
-#line 35982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36213 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 850: /* last_field_options: field_options */
-#line 6376 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 860: /* last_field_options: field_options */
+#line 6496 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->flags|= ((yyval.ulong_num)= (yyvsp[0].ulong_num)); }
-#line 35988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36219 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 851: /* field_length_str: '(' LONG_NUM ')' */
-#line 6380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 861: /* field_length_str: '(' LONG_NUM ')' */
+#line 6500 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 35994 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36225 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 852: /* field_length_str: '(' ULONGLONG_NUM ')' */
-#line 6381 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 862: /* field_length_str: '(' ULONGLONG_NUM ')' */
+#line 6501 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 36000 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36231 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 853: /* field_length_str: '(' DECIMAL_NUM ')' */
-#line 6382 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 863: /* field_length_str: '(' DECIMAL_NUM ')' */
+#line 6502 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 36006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36237 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 854: /* field_length_str: '(' NUM ')' */
-#line 6383 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 864: /* field_length_str: '(' NUM ')' */
+#line 6503 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 36012 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 855: /* field_length: field_length_str */
-#line 6386 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 865: /* field_length: field_length_str */
+#line 6506 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).set((yyvsp[0].const_simple_string), NULL); }
-#line 36018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 856: /* field_scale: field_length_str */
-#line 6390 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 866: /* field_scale: field_length_str */
+#line 6510 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).set(NULL, (yyvsp[0].const_simple_string)); }
-#line 36024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 857: /* opt_field_length: %empty */
-#line 6395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 867: /* opt_field_length: %empty */
+#line 6515 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); /* use default length */ }
-#line 36030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36261 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 859: /* opt_field_scale: %empty */
-#line 6400 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 869: /* opt_field_scale: %empty */
+#line 6520 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); }
-#line 36036 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36267 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 861: /* opt_precision: %empty */
-#line 6405 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 871: /* opt_precision: %empty */
+#line 6525 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); }
-#line 36042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 862: /* opt_precision: precision */
-#line 6406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 872: /* opt_precision: precision */
+#line 6526 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec)= (yyvsp[0].Lex_length_and_dec); }
-#line 36048 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36279 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 863: /* attribute_list: attribute_list attribute */
-#line 6412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 873: /* attribute_list: attribute_list attribute */
+#line 6532 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause((yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
- MYSQL_YYABORT;
+ if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
+ MYSQL_YYABORT;
}
-#line 36057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 865: /* attribute: NULL_SYM */
-#line 6421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 875: /* attribute: NULL_SYM */
+#line 6542 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->flags&= ~NOT_NULL_FLAG;
Lex->last_field->explicitly_nullable= true;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 36067 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36299 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 866: /* attribute: DEFAULT column_default_expr */
-#line 6427 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 876: /* attribute: DEFAULT column_default_expr */
+#line 6548 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->default_value= (yyvsp[0].virtual_column);
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 36076 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 867: /* attribute: ON UPDATE_SYM NOW_SYM opt_default_time_precision */
-#line 6432 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 877: /* attribute: ON UPDATE_SYM NOW_SYM opt_default_time_precision */
+#line 6553 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_now_local(thd, (yyvsp[0].num));
if (unlikely(item == NULL))
@@ -36084,132 +36316,132 @@ yyreduce:
Lex->last_field->on_update= item;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 36088 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36320 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 868: /* attribute: AUTO_INC */
-#line 6439 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 878: /* attribute: AUTO_INC */
+#line 6560 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG; (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 36094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36326 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 869: /* attribute: SERIAL_SYM DEFAULT VALUE_SYM */
-#line 6441 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 879: /* attribute: SERIAL_SYM DEFAULT VALUE_SYM */
+#line 6562 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG | UNIQUE_KEY_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 36105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36337 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 870: /* attribute: COLLATE_SYM collation_name */
-#line 6448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 880: /* attribute: COLLATE_SYM collation_name */
+#line 6569 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs)= Lex_exact_charset_extended_collation_attrs((yyvsp[0].Lex_extended_collation));
}
-#line 36113 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36345 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 871: /* attribute: serial_attribute */
-#line 6451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 881: /* attribute: serial_attribute */
+#line 6572 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 36119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36351 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 872: /* opt_compression_method: %empty */
-#line 6455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 882: /* opt_compression_method: %empty */
+#line 6576 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= NULL; }
-#line 36125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 873: /* opt_compression_method: equal ident */
-#line 6456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 883: /* opt_compression_method: equal ident */
+#line 6577 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[0].ident_sys).str; }
-#line 36131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36363 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 874: /* opt_compressed: %empty */
-#line 6460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 884: /* opt_compressed: %empty */
+#line 6581 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36137 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 875: /* opt_compressed: compressed */
-#line 6461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 885: /* opt_compressed: compressed */
+#line 6582 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 36143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36375 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 876: /* opt_enable: %empty */
-#line 6465 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 886: /* opt_enable: %empty */
+#line 6586 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36149 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36381 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 877: /* opt_enable: ENABLE_SYM */
-#line 6466 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 887: /* opt_enable: ENABLE_SYM */
+#line 6587 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 36155 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 878: /* compressed: COMPRESSED_SYM opt_compression_method */
-#line 6471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 888: /* compressed: COMPRESSED_SYM opt_compression_method */
+#line 6592 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->last_field->set_compressed((yyvsp[0].const_simple_string))))
MYSQL_YYABORT;
}
-#line 36164 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 879: /* compressed_deprecated_data_type_attribute: COMPRESSED_SYM opt_compression_method */
-#line 6479 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 889: /* compressed_deprecated_data_type_attribute: COMPRESSED_SYM opt_compression_method */
+#line 6600 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->last_field->set_compressed_deprecated(thd, (yyvsp[0].const_simple_string))))
MYSQL_YYABORT;
}
-#line 36173 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36405 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 880: /* compressed_deprecated_column_attribute: COMPRESSED_SYM opt_compression_method */
-#line 6487 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 890: /* compressed_deprecated_column_attribute: COMPRESSED_SYM opt_compression_method */
+#line 6608 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->last_field->
set_compressed_deprecated_column_attribute(thd, (yyvsp[-1].kwd).pos(), (yyvsp[0].const_simple_string))))
MYSQL_YYABORT;
}
-#line 36183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 881: /* asrow_attribute: not NULL_SYM opt_enable */
-#line 6496 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 891: /* asrow_attribute: not NULL_SYM opt_enable */
+#line 6617 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->flags|= NOT_NULL_FLAG;
}
-#line 36191 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36423 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 882: /* asrow_attribute: opt_primary KEY_SYM */
-#line 6500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 892: /* asrow_attribute: opt_primary KEY_SYM */
+#line 6621 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= PRI_KEY_FLAG | NOT_NULL_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 36201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 885: /* serial_attribute: engine_defined_option */
-#line 6511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 895: /* serial_attribute: engine_defined_option */
+#line 6632 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->last_field->option_list, &Lex->option_list_last);
}
-#line 36209 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36441 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 886: /* serial_attribute: with_or_without_system VERSIONING_SYM */
-#line 6515 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 896: /* serial_attribute: with_or_without_system VERSIONING_SYM */
+#line 6636 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->versioning= (yyvsp[-1].vers_column_versioning);
Lex->create_info.options|= HA_VERSIONED_TABLE;
@@ -36219,84 +36451,84 @@ yyreduce:
Lex->create_last_non_select_table->table_name.str));
}
}
-#line 36223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 887: /* with_or_without_system: WITH_SYSTEM_SYM */
-#line 6528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 897: /* with_or_without_system: WITH_SYSTEM_SYM */
+#line 6649 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_COLUMN_UNVERSIONED;
Lex->create_info.vers_info.versioned_fields= true;
(yyval.vers_column_versioning)= Column_definition::WITH_VERSIONING;
}
-#line 36233 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36465 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 888: /* with_or_without_system: WITHOUT SYSTEM */
-#line 6534 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 898: /* with_or_without_system: WITHOUT SYSTEM */
+#line 6655 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_COLUMN_UNVERSIONED;
Lex->create_info.vers_info.unversioned_fields= true;
(yyval.vers_column_versioning)= Column_definition::WITHOUT_VERSIONING;
}
-#line 36243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36475 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 889: /* charset: CHAR_SYM SET */
-#line 6543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 899: /* charset: CHAR_SYM SET */
+#line 6664 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.kwd)= (yyvsp[-1].kwd); }
-#line 36249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 890: /* charset: CHARSET */
-#line 6544 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 900: /* charset: CHARSET */
+#line 6665 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.kwd)= (yyvsp[0].kwd); }
-#line 36255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36487 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 891: /* charset_name: ident_or_text */
-#line 6549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 901: /* charset_name: ident_or_text */
+#line 6670 "/home/buildbot/git/sql/sql_yacc.yy"
{
myf utf8_flag= thd->get_utf8_flag();
if (unlikely(!((yyval.charset)=get_charset_by_csname((yyvsp[0].lex_str).str, MY_CS_PRIMARY,
MYF(utf8_flag)))))
my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), (yyvsp[0].lex_str).str));
}
-#line 36266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36498 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 892: /* charset_name: BINARY */
-#line 6555 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 902: /* charset_name: BINARY */
+#line 6676 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= &my_charset_bin; }
-#line 36272 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36504 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 893: /* charset_name_or_default: charset_name */
-#line 6559 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 903: /* charset_name_or_default: charset_name */
+#line 6680 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=(yyvsp[0].charset); }
-#line 36278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36510 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 894: /* charset_name_or_default: DEFAULT */
-#line 6560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 904: /* charset_name_or_default: DEFAULT */
+#line 6681 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=NULL; }
-#line 36284 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36516 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 895: /* opt_load_data_charset: %empty */
-#line 6564 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 905: /* opt_load_data_charset: %empty */
+#line 6685 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= NULL; }
-#line 36290 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 896: /* opt_load_data_charset: charset charset_name_or_default */
-#line 6565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 906: /* opt_load_data_charset: charset charset_name_or_default */
+#line 6686 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= (yyvsp[0].charset); }
-#line 36296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 897: /* old_or_new_charset_name: ident_or_text */
-#line 6570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 907: /* old_or_new_charset_name: ident_or_text */
+#line 6691 "/home/buildbot/git/sql/sql_yacc.yy"
{
myf utf8_flag= thd->get_utf8_flag();
if (unlikely(!((yyval.charset)=get_charset_by_csname((yyvsp[0].lex_str).str,
@@ -36305,175 +36537,181 @@ yyreduce:
!((yyval.charset)=get_old_charset_by_name((yyvsp[0].lex_str).str))))
my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), (yyvsp[0].lex_str).str));
}
-#line 36309 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36541 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 898: /* old_or_new_charset_name: BINARY */
-#line 6578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 908: /* old_or_new_charset_name: BINARY */
+#line 6699 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= &my_charset_bin; }
-#line 36315 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 899: /* old_or_new_charset_name_or_default: old_or_new_charset_name */
-#line 6582 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 909: /* old_or_new_charset_name_or_default: old_or_new_charset_name */
+#line 6703 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=(yyvsp[0].charset); }
-#line 36321 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36553 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 900: /* old_or_new_charset_name_or_default: DEFAULT */
-#line 6583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 910: /* old_or_new_charset_name_or_default: DEFAULT */
+#line 6704 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=NULL; }
-#line 36327 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36559 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 901: /* collation_name: ident_or_text */
-#line 6588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 911: /* collation_name: ident_or_text */
+#line 6709 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyval.Lex_extended_collation).set_by_name((yyvsp[0].lex_str).str, thd->get_utf8_flag()))
MYSQL_YYABORT;
}
-#line 36336 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 902: /* collation_name_or_default: collation_name */
-#line 6595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 912: /* collation_name_or_default: collation_name */
+#line 6716 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_extended_collation)=(yyvsp[0].Lex_extended_collation); }
-#line 36342 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 903: /* collation_name_or_default: DEFAULT */
-#line 6596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 913: /* collation_name_or_default: DEFAULT */
+#line 6717 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_extended_collation).set_collate_default(); }
-#line 36348 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 904: /* opt_default: %empty */
-#line 6600 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 914: /* opt_default: %empty */
+#line 6721 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36354 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36586 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 905: /* opt_default: DEFAULT */
-#line 6601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 915: /* opt_default: DEFAULT */
+#line 6722 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36360 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36592 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 906: /* charset_or_alias: charset charset_name */
-#line 6605 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 916: /* charset_or_alias: charset charset_name */
+#line 6726 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= (yyvsp[0].charset); }
-#line 36366 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36598 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 907: /* charset_or_alias: ASCII_SYM */
-#line 6606 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 917: /* charset_or_alias: ASCII_SYM */
+#line 6727 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= &my_charset_latin1; }
-#line 36372 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36604 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 908: /* charset_or_alias: UNICODE_SYM */
-#line 6608 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 918: /* charset_or_alias: UNICODE_SYM */
+#line 6729 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.charset)= get_charset_by_csname("ucs2", MY_CS_PRIMARY,MYF(0)))))
my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), "ucs2"));
}
-#line 36381 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36613 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 909: /* opt_binary: %empty */
-#line 6615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 919: /* opt_binary: %empty */
+#line 6736 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 36387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36619 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 911: /* binary: BYTE_SYM */
-#line 6621 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 921: /* binary: BYTE_SYM */
+#line 6742 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).set_charset(Lex_exact_charset(&my_charset_bin));
}
-#line 36395 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36627 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 912: /* binary: charset_or_alias */
-#line 6625 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 922: /* binary: charset_or_alias */
+#line 6746 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).set_charset(Lex_exact_charset((yyvsp[0].charset)));
}
-#line 36403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 913: /* binary: charset_or_alias BINARY */
-#line 6629 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 923: /* binary: charset_or_alias BINARY */
+#line 6750 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_binary(Lex_exact_charset((yyvsp[-1].charset))))
MYSQL_YYABORT;
}
-#line 36412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36644 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 914: /* binary: BINARY */
-#line 6633 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 924: /* binary: BINARY */
+#line 6754 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).set_contextually_typed_binary_style(); }
-#line 36418 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36650 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 915: /* binary: BINARY charset_or_alias */
-#line 6635 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 925: /* binary: BINARY charset_or_alias */
+#line 6756 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_binary(Lex_exact_charset((yyvsp[0].charset))))
MYSQL_YYABORT;
}
-#line 36427 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36659 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 916: /* binary: charset_or_alias COLLATE_SYM DEFAULT */
-#line 6640 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 926: /* binary: charset_or_alias COLLATE_SYM DEFAULT */
+#line 6761 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_default(Lex_exact_charset((yyvsp[-2].charset)));
+ (yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_default(
+ thd,
+ thd->variables.character_set_collations,
+ Lex_exact_charset((yyvsp[-2].charset)));
}
-#line 36435 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36670 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 917: /* binary: charset_or_alias COLLATE_SYM collation_name */
-#line 6644 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 927: /* binary: charset_or_alias COLLATE_SYM collation_name */
+#line 6768 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyvsp[0].Lex_extended_collation).merge_exact_charset(Lex_exact_charset((yyvsp[-2].charset))))
+ if ((yyvsp[0].Lex_extended_collation).merge_exact_charset(
+ thd,
+ thd->variables.character_set_collations,
+ Lex_exact_charset((yyvsp[-2].charset))))
MYSQL_YYABORT;
(yyval.Lex_exact_charset_extended_collation_attrs)= Lex_exact_charset_extended_collation_attrs((yyvsp[0].Lex_extended_collation));
}
-#line 36445 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 918: /* binary: COLLATE_SYM collation_name */
-#line 6650 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 928: /* binary: COLLATE_SYM collation_name */
+#line 6777 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs)= Lex_exact_charset_extended_collation_attrs((yyvsp[0].Lex_extended_collation));
}
-#line 36453 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 919: /* binary: COLLATE_SYM DEFAULT */
-#line 6654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 929: /* binary: COLLATE_SYM DEFAULT */
+#line 6781 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).set_collate_default();
}
-#line 36461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36699 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 920: /* opt_bin_mod: %empty */
-#line 6660 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 930: /* opt_bin_mod: %empty */
+#line 6787 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 36467 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36705 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 921: /* opt_bin_mod: BINARY */
-#line 6661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 931: /* opt_bin_mod: BINARY */
+#line 6788 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= true; }
-#line 36473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36711 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 922: /* $@93: %empty */
-#line 6666 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 932: /* $@93: %empty */
+#line 6793 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].ulong_num) == 0))
{
@@ -36481,148 +36719,148 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 36485 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36723 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 923: /* ws_nweights: '(' real_ulong_num $@93 ')' */
-#line 6674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 933: /* ws_nweights: '(' real_ulong_num $@93 ')' */
+#line 6801 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[-2].ulong_num); }
-#line 36491 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36729 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 924: /* ws_level_flag_desc: ASC */
-#line 6678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 934: /* ws_level_flag_desc: ASC */
+#line 6805 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 36497 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36735 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 925: /* ws_level_flag_desc: DESC */
-#line 6679 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 935: /* ws_level_flag_desc: DESC */
+#line 6806 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 1 << MY_STRXFRM_DESC_SHIFT; }
-#line 36503 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36741 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 926: /* ws_level_flag_reverse: REVERSE_SYM */
-#line 6683 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 936: /* ws_level_flag_reverse: REVERSE_SYM */
+#line 6810 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 1 << MY_STRXFRM_REVERSE_SHIFT; }
-#line 36509 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36747 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 927: /* ws_level_flags: %empty */
-#line 6686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 937: /* ws_level_flags: %empty */
+#line 6813 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 36515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 928: /* ws_level_flags: ws_level_flag_desc */
-#line 6687 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 938: /* ws_level_flags: ws_level_flag_desc */
+#line 6814 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 36521 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36759 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 929: /* ws_level_flags: ws_level_flag_desc ws_level_flag_reverse */
-#line 6688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 939: /* ws_level_flags: ws_level_flag_desc ws_level_flag_reverse */
+#line 6815 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[-1].ulong_num) | (yyvsp[0].ulong_num); }
-#line 36527 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36765 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 930: /* ws_level_flags: ws_level_flag_reverse */
-#line 6689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 940: /* ws_level_flags: ws_level_flag_reverse */
+#line 6816 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num) ; }
-#line 36533 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36771 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 931: /* ws_level_number: real_ulong_num */
-#line 6694 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 941: /* ws_level_number: real_ulong_num */
+#line 6821 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ulong_num)= (yyvsp[0].ulong_num) < 1 ? 1 : ((yyvsp[0].ulong_num) > MY_STRXFRM_NLEVELS ? MY_STRXFRM_NLEVELS : (yyvsp[0].ulong_num));
(yyval.ulong_num)--;
}
-#line 36542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36780 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 932: /* ws_level_list_item: ws_level_number ws_level_flags */
-#line 6702 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 942: /* ws_level_list_item: ws_level_number ws_level_flags */
+#line 6829 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ulong_num)= (1 | (yyvsp[0].ulong_num)) << (yyvsp[-1].ulong_num);
}
-#line 36550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36788 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 933: /* ws_level_list: ws_level_list_item */
-#line 6708 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 943: /* ws_level_list: ws_level_list_item */
+#line 6835 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 36556 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 934: /* ws_level_list: ws_level_list ',' ws_level_list_item */
-#line 6709 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 944: /* ws_level_list: ws_level_list ',' ws_level_list_item */
+#line 6836 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)|= (yyvsp[0].ulong_num); }
-#line 36562 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 935: /* ws_level_range: ws_level_number '-' ws_level_number */
-#line 6714 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 945: /* ws_level_range: ws_level_number '-' ws_level_number */
+#line 6841 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint start= (yyvsp[-2].ulong_num);
uint end= (yyvsp[0].ulong_num);
for ((yyval.ulong_num)= 0; start <= end; start++)
(yyval.ulong_num)|= (1 << start);
}
-#line 36573 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36811 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 936: /* ws_level_list_or_range: ws_level_list */
-#line 6723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 946: /* ws_level_list_or_range: ws_level_list */
+#line 6850 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 36579 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 937: /* ws_level_list_or_range: ws_level_range */
-#line 6724 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 947: /* ws_level_list_or_range: ws_level_range */
+#line 6851 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 36585 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36823 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 938: /* opt_ws_levels: %empty */
-#line 6728 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 948: /* opt_ws_levels: %empty */
+#line 6855 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 36591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36829 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 939: /* opt_ws_levels: LEVEL_SYM ws_level_list_or_range */
-#line 6729 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 949: /* opt_ws_levels: LEVEL_SYM ws_level_list_or_range */
+#line 6856 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 36597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 942: /* references: REFERENCES table_ident opt_ref_list opt_match_clause opt_on_update_delete */
-#line 6743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 952: /* references: REFERENCES table_ident opt_ref_list opt_match_clause opt_on_update_delete */
+#line 6870 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)=(yyvsp[-3].table);
}
-#line 36605 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 943: /* opt_ref_list: %empty */
-#line 6750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 953: /* opt_ref_list: %empty */
+#line 6877 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ref_list.empty(); }
-#line 36611 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36849 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 945: /* ref_list: ref_list ',' ident */
-#line 6756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 955: /* ref_list: ref_list ',' ident */
+#line 6883 "/home/buildbot/git/sql/sql_yacc.yy"
{
Key_part_spec *key= new (thd->mem_root) Key_part_spec(&(yyvsp[0].ident_sys), 0);
if (unlikely(key == NULL))
MYSQL_YYABORT;
Lex->ref_list.push_back(key, thd->mem_root);
}
-#line 36622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36860 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 946: /* ref_list: ident */
-#line 6763 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 956: /* ref_list: ident */
+#line 6890 "/home/buildbot/git/sql/sql_yacc.yy"
{
Key_part_spec *key= new (thd->mem_root) Key_part_spec(&(yyvsp[0].ident_sys), 0);
if (unlikely(key == NULL))
@@ -36631,169 +36869,169 @@ yyreduce:
lex->ref_list.empty();
lex->ref_list.push_back(key, thd->mem_root);
}
-#line 36635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36873 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 947: /* opt_match_clause: %empty */
-#line 6775 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 957: /* opt_match_clause: %empty */
+#line 6902 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_UNDEF; }
-#line 36641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36879 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 948: /* opt_match_clause: MATCH FULL */
-#line 6777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 958: /* opt_match_clause: MATCH FULL */
+#line 6904 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_FULL; }
-#line 36647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36885 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 949: /* opt_match_clause: MATCH PARTIAL */
-#line 6779 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 959: /* opt_match_clause: MATCH PARTIAL */
+#line 6906 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_PARTIAL; }
-#line 36653 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 950: /* opt_match_clause: MATCH SIMPLE_SYM */
-#line 6781 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 960: /* opt_match_clause: MATCH SIMPLE_SYM */
+#line 6908 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_SIMPLE; }
-#line 36659 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36897 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 951: /* opt_on_update_delete: %empty */
-#line 6786 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 961: /* opt_on_update_delete: %empty */
+#line 6913 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= FK_OPTION_UNDEF;
lex->fk_delete_opt= FK_OPTION_UNDEF;
}
-#line 36669 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 952: /* opt_on_update_delete: ON UPDATE_SYM delete_option */
-#line 6792 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 962: /* opt_on_update_delete: ON UPDATE_SYM delete_option */
+#line 6919 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= (yyvsp[0].m_fk_option);
lex->fk_delete_opt= FK_OPTION_UNDEF;
}
-#line 36679 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36917 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 953: /* opt_on_update_delete: ON DELETE_SYM delete_option */
-#line 6798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 963: /* opt_on_update_delete: ON DELETE_SYM delete_option */
+#line 6925 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= FK_OPTION_UNDEF;
lex->fk_delete_opt= (yyvsp[0].m_fk_option);
}
-#line 36689 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36927 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 954: /* opt_on_update_delete: ON UPDATE_SYM delete_option ON DELETE_SYM delete_option */
-#line 6805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 964: /* opt_on_update_delete: ON UPDATE_SYM delete_option ON DELETE_SYM delete_option */
+#line 6932 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= (yyvsp[-3].m_fk_option);
lex->fk_delete_opt= (yyvsp[0].m_fk_option);
}
-#line 36699 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36937 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 955: /* opt_on_update_delete: ON DELETE_SYM delete_option ON UPDATE_SYM delete_option */
-#line 6812 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 965: /* opt_on_update_delete: ON DELETE_SYM delete_option ON UPDATE_SYM delete_option */
+#line 6939 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= (yyvsp[0].m_fk_option);
lex->fk_delete_opt= (yyvsp[-3].m_fk_option);
}
-#line 36709 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36947 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 956: /* delete_option: RESTRICT */
-#line 6820 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 966: /* delete_option: RESTRICT */
+#line 6947 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_RESTRICT; }
-#line 36715 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 957: /* delete_option: CASCADE */
-#line 6821 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 967: /* delete_option: CASCADE */
+#line 6948 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_CASCADE; }
-#line 36721 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 958: /* delete_option: SET NULL_SYM */
-#line 6822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 968: /* delete_option: SET NULL_SYM */
+#line 6949 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_SET_NULL; }
-#line 36727 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 959: /* delete_option: NO_SYM ACTION */
-#line 6823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 969: /* delete_option: NO_SYM ACTION */
+#line 6950 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_NO_ACTION; }
-#line 36733 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36971 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 960: /* delete_option: SET DEFAULT */
-#line 6824 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 970: /* delete_option: SET DEFAULT */
+#line 6951 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_SET_DEFAULT; }
-#line 36739 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36977 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 961: /* constraint_key_type: PRIMARY_SYM KEY_SYM */
-#line 6828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 971: /* constraint_key_type: PRIMARY_SYM KEY_SYM */
+#line 6955 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_type)= Key::PRIMARY; }
-#line 36745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 962: /* constraint_key_type: UNIQUE_SYM opt_key_or_index */
-#line 6829 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 972: /* constraint_key_type: UNIQUE_SYM opt_key_or_index */
+#line 6956 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_type)= Key::UNIQUE; }
-#line 36751 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36989 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 963: /* key_or_index: KEY_SYM */
-#line 6833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 973: /* key_or_index: KEY_SYM */
+#line 6960 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36757 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 36995 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 964: /* key_or_index: INDEX_SYM */
-#line 6834 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 974: /* key_or_index: INDEX_SYM */
+#line 6961 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36763 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 965: /* opt_key_or_index: %empty */
-#line 6838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 975: /* opt_key_or_index: %empty */
+#line 6965 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36769 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 967: /* keys_or_index: KEYS */
-#line 6843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 977: /* keys_or_index: KEYS */
+#line 6970 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36775 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37013 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 968: /* keys_or_index: INDEX_SYM */
-#line 6844 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 978: /* keys_or_index: INDEX_SYM */
+#line 6971 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37019 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 969: /* keys_or_index: INDEXES */
-#line 6845 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 979: /* keys_or_index: INDEXES */
+#line 6972 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37025 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 970: /* fulltext: FULLTEXT_SYM */
-#line 6849 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 980: /* fulltext: FULLTEXT_SYM */
+#line 6976 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_type)= Key::FULLTEXT;}
-#line 36793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37031 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 971: /* spatial: SPATIAL_SYM */
-#line 6854 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 981: /* spatial: SPATIAL_SYM */
+#line 6981 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef HAVE_SPATIAL
(yyval.key_type)= Key::SPATIAL;
@@ -36802,212 +37040,212 @@ yyreduce:
sym_group_geom.needed_define));
#endif
}
-#line 36806 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 972: /* normal_key_options: %empty */
-#line 6865 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 982: /* normal_key_options: %empty */
+#line 6992 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36812 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 973: /* normal_key_options: normal_key_opts */
-#line 6866 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 983: /* normal_key_options: normal_key_opts */
+#line 6993 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->option_list= Lex->option_list; }
-#line 36818 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 974: /* fulltext_key_options: %empty */
-#line 6870 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 984: /* fulltext_key_options: %empty */
+#line 6997 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36824 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37062 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 975: /* fulltext_key_options: fulltext_key_opts */
-#line 6871 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 985: /* fulltext_key_options: fulltext_key_opts */
+#line 6998 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->option_list= Lex->option_list; }
-#line 36830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 976: /* spatial_key_options: %empty */
-#line 6875 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 986: /* spatial_key_options: %empty */
+#line 7002 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36836 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 977: /* spatial_key_options: spatial_key_opts */
-#line 6876 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 987: /* spatial_key_options: spatial_key_opts */
+#line 7003 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->option_list= Lex->option_list; }
-#line 36842 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 984: /* opt_USING_key_algorithm: %empty */
-#line 6895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 994: /* opt_USING_key_algorithm: %empty */
+#line 7022 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_UNDEF; }
-#line 36848 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37086 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 985: /* opt_USING_key_algorithm: USING btree_or_rtree */
-#line 6896 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 995: /* opt_USING_key_algorithm: USING btree_or_rtree */
+#line 7023 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= (yyvsp[0].key_alg); }
-#line 36854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37092 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 986: /* opt_key_algorithm_clause: %empty */
-#line 6901 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 996: /* opt_key_algorithm_clause: %empty */
+#line 7028 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_UNDEF; }
-#line 36860 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37098 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 987: /* opt_key_algorithm_clause: USING btree_or_rtree */
-#line 6902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 997: /* opt_key_algorithm_clause: USING btree_or_rtree */
+#line 7029 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= (yyvsp[0].key_alg); }
-#line 36866 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37104 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 988: /* opt_key_algorithm_clause: TYPE_SYM btree_or_rtree */
-#line 6903 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 998: /* opt_key_algorithm_clause: TYPE_SYM btree_or_rtree */
+#line 7030 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= (yyvsp[0].key_alg); }
-#line 36872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 989: /* key_using_alg: USING btree_or_rtree */
-#line 6908 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 999: /* key_using_alg: USING btree_or_rtree */
+#line 7035 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->key_create_info.algorithm= (yyvsp[0].key_alg); }
-#line 36878 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37116 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 990: /* key_using_alg: TYPE_SYM btree_or_rtree */
-#line 6910 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1000: /* key_using_alg: TYPE_SYM btree_or_rtree */
+#line 7037 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->key_create_info.algorithm= (yyvsp[0].key_alg); }
-#line 36884 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37122 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 991: /* all_key_opt: KEY_BLOCK_SIZE opt_equal ulong_num */
-#line 6915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1001: /* all_key_opt: KEY_BLOCK_SIZE opt_equal ulong_num */
+#line 7042 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_key->key_create_info.block_size= (yyvsp[0].ulong_num);
Lex->last_key->key_create_info.flags|= HA_USES_BLOCK_SIZE;
}
-#line 36893 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 992: /* all_key_opt: COMMENT_SYM TEXT_STRING_sys */
-#line 6920 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1002: /* all_key_opt: COMMENT_SYM TEXT_STRING_sys */
+#line 7047 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->key_create_info.comment= (yyvsp[0].lex_str); }
-#line 36899 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37137 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 993: /* all_key_opt: VISIBLE_SYM */
-#line 6922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1003: /* all_key_opt: VISIBLE_SYM */
+#line 7049 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* This is mainly for MySQL 8.0 compatibility */
}
-#line 36907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 994: /* all_key_opt: ignorability */
-#line 6926 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1004: /* all_key_opt: ignorability */
+#line 7053 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_key->key_create_info.is_ignored= (yyvsp[0].num);
}
-#line 36915 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37153 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 995: /* all_key_opt: engine_defined_option */
-#line 6930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1005: /* all_key_opt: engine_defined_option */
+#line 7057 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->option_list, &Lex->option_list_last);
}
-#line 36923 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37161 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1000: /* fulltext_key_opt: WITH PARSER_SYM IDENT_sys */
-#line 6947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1010: /* fulltext_key_opt: WITH PARSER_SYM IDENT_sys */
+#line 7074 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (likely(plugin_is_ready(&(yyvsp[0].ident_sys), MYSQL_FTPARSER_PLUGIN)))
Lex->last_key->key_create_info.parser_name= (yyvsp[0].ident_sys);
else
my_yyabort_error((ER_FUNCTION_NOT_DEFINED, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 36934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1001: /* btree_or_rtree: BTREE_SYM */
-#line 6956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1011: /* btree_or_rtree: BTREE_SYM */
+#line 7083 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_BTREE; }
-#line 36940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37178 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1002: /* btree_or_rtree: RTREE_SYM */
-#line 6957 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1012: /* btree_or_rtree: RTREE_SYM */
+#line 7084 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_RTREE; }
-#line 36946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1003: /* btree_or_rtree: HASH_SYM */
-#line 6958 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1013: /* btree_or_rtree: HASH_SYM */
+#line 7085 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_HASH; }
-#line 36952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37190 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1004: /* ignorability: IGNORED_SYM */
-#line 6962 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1014: /* ignorability: IGNORED_SYM */
+#line 7089 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= true; }
-#line 36958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37196 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1005: /* ignorability: NOT_SYM IGNORED_SYM */
-#line 6963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1015: /* ignorability: NOT_SYM IGNORED_SYM */
+#line 7090 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 36964 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37202 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1006: /* key_list: key_list ',' key_part order_dir */
-#line 6968 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1016: /* key_list: key_list ',' key_part order_dir */
+#line 7095 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].key_part)->asc= (yyvsp[0].num);
Lex->last_key->columns.push_back((yyvsp[-1].key_part), thd->mem_root);
}
-#line 36973 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37211 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1007: /* key_list: key_part order_dir */
-#line 6973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1017: /* key_list: key_part order_dir */
+#line 7100 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].key_part)->asc= (yyvsp[0].num);
Lex->last_key->columns.push_back((yyvsp[-1].key_part), thd->mem_root);
}
-#line 36982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37220 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1008: /* opt_without_overlaps: %empty */
-#line 6980 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1018: /* opt_without_overlaps: %empty */
+#line 7107 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37226 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1009: /* opt_without_overlaps: ',' ident WITHOUT OVERLAPS_SYM */
-#line 6982 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1019: /* opt_without_overlaps: ',' ident WITHOUT OVERLAPS_SYM */
+#line 7109 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_key->without_overlaps= true;
Lex->last_key->period= (yyvsp[-2].ident_sys);
}
-#line 36997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37235 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1010: /* key_part: ident */
-#line 6990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1020: /* key_part: ident */
+#line 7117 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.key_part)= new (thd->mem_root) Key_part_spec(&(yyvsp[0].ident_sys), 0);
if (unlikely((yyval.key_part) == NULL))
MYSQL_YYABORT;
}
-#line 37007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37245 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1011: /* key_part: ident '(' NUM ')' */
-#line 6996 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1021: /* key_part: ident '(' NUM ')' */
+#line 7123 "/home/buildbot/git/sql/sql_yacc.yy"
{
int key_part_len= atoi((yyvsp[-1].lex_str).str);
if (unlikely(!key_part_len))
@@ -37016,35 +37254,35 @@ yyreduce:
if (unlikely((yyval.key_part) == NULL))
MYSQL_YYABORT;
}
-#line 37020 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37258 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1012: /* opt_ident: %empty */
-#line 7007 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1022: /* opt_ident: %empty */
+#line 7134 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 37026 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37264 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1013: /* opt_ident: field_ident */
-#line 7008 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1023: /* opt_ident: field_ident */
+#line 7135 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].lex_str); }
-#line 37032 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37270 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1014: /* string_list: text_string */
-#line 7013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1024: /* string_list: text_string */
+#line 7140 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->interval_list.push_back((yyvsp[0].string), thd->mem_root); }
-#line 37038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37276 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1015: /* string_list: string_list ',' text_string */
-#line 7015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1025: /* string_list: string_list ',' text_string */
+#line 7142 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->interval_list.push_back((yyvsp[0].string), thd->mem_root); }
-#line 37044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1016: /* $@94: %empty */
-#line 7024 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1026: /* $@94: %empty */
+#line 7151 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->name= null_clex_str;
Lex->table_type= TABLE_TYPE_UNKNOWN;
@@ -37060,11 +37298,11 @@ yyreduce:
MYSQL_YYABORT;
DBUG_ASSERT(!Lex->m_sql_cmd);
}
-#line 37064 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1017: /* $@95: %empty */
-#line 7040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1027: /* $@95: %empty */
+#line 7167 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.set((yyvsp[-2].object_ddl_options));
if (!Lex->first_select_lex()->
@@ -37076,11 +37314,11 @@ yyreduce:
Lex->create_last_non_select_table= Lex->last_table();
Lex->mark_first_table_as_inserting();
}
-#line 37080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37318 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1018: /* alter: ALTER $@94 alter_options TABLE_SYM opt_if_exists table_ident opt_lock_wait_timeout $@95 alter_commands */
-#line 7052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1028: /* alter: ALTER $@94 alter_options TABLE_SYM opt_if_exists table_ident opt_lock_wait_timeout $@95 alter_commands */
+#line 7179 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (likely(!Lex->m_sql_cmd))
{
@@ -37091,21 +37329,21 @@ yyreduce:
}
Lex->pop_select(); //main select
}
-#line 37095 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37333 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1019: /* $@96: %empty */
-#line 7063 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1029: /* $@96: %empty */
+#line 7190 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.init();
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 37105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1020: /* alter: ALTER DATABASE ident_or_empty $@96 create_database_options */
-#line 7069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1030: /* alter: ALTER DATABASE ident_or_empty $@96 create_database_options */
+#line 7196 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_ALTER_DB;
@@ -37115,21 +37353,21 @@ yyreduce:
MYSQL_YYABORT;
Lex->pop_select(); //main select
}
-#line 37119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1021: /* $@97: %empty */
-#line 7079 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1031: /* $@97: %empty */
+#line 7206 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.init();
Lex->create_info.schema_comment= thd->make_clex_string((yyvsp[0].lex_str));
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
}
-#line 37129 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37367 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1022: /* alter: ALTER DATABASE COMMENT_SYM opt_equal TEXT_STRING_sys $@97 opt_create_database_options */
-#line 7085 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1032: /* alter: ALTER DATABASE COMMENT_SYM opt_equal TEXT_STRING_sys $@97 opt_create_database_options */
+#line 7212 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_ALTER_DB;
@@ -37138,11 +37376,11 @@ yyreduce:
unlikely(lex->copy_db_to(&lex->name)))
MYSQL_YYABORT;
}
-#line 37142 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37380 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1023: /* alter: ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM */
-#line 7094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1033: /* alter: ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM */
+#line 7221 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->sphead))
@@ -37150,75 +37388,75 @@ yyreduce:
lex->sql_command= SQLCOM_ALTER_DB_UPGRADE;
lex->name= (yyvsp[-4].ident_sys);
}
-#line 37154 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1024: /* $@98: %empty */
-#line 7102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1034: /* $@98: %empty */
+#line 7229 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_alter_procedure_start((yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 37163 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37401 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1025: /* alter: ALTER PROCEDURE_SYM sp_name $@98 sp_a_chistics stmt_end */
-#line 7107 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1035: /* alter: ALTER PROCEDURE_SYM sp_name $@98 sp_a_chistics stmt_end */
+#line 7234 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37169 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37407 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1026: /* $@99: %empty */
-#line 7109 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1036: /* $@99: %empty */
+#line 7236 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_alter_function_start((yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 37178 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37416 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1027: /* alter: ALTER FUNCTION_SYM sp_name $@99 sp_a_chistics stmt_end */
-#line 7114 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1037: /* alter: ALTER FUNCTION_SYM sp_name $@99 sp_a_chistics stmt_end */
+#line 7241 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1028: /* $@100: %empty */
-#line 7116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1038: /* $@100: %empty */
+#line 7243 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
if (Lex->add_alter_view(thd, (yyvsp[-4].num), (yyvsp[-2].view_suid), (yyvsp[0].table)))
MYSQL_YYABORT;
}
-#line 37195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1029: /* alter: ALTER view_algorithm definer_opt opt_view_suid VIEW_SYM table_ident $@100 view_list_opt AS view_select stmt_end */
-#line 7122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1039: /* alter: ALTER view_algorithm definer_opt opt_view_suid VIEW_SYM table_ident $@100 view_list_opt AS view_select stmt_end */
+#line 7249 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1030: /* $@101: %empty */
-#line 7129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1040: /* $@101: %empty */
+#line 7256 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
if (Lex->add_alter_view(thd, VIEW_ALGORITHM_INHERIT, (yyvsp[-2].view_suid), (yyvsp[0].table)))
MYSQL_YYABORT;
}
-#line 37212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37450 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1031: /* alter: ALTER definer_opt opt_view_suid VIEW_SYM table_ident $@101 view_list_opt AS view_select stmt_end */
-#line 7135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1041: /* alter: ALTER definer_opt opt_view_suid VIEW_SYM table_ident $@101 view_list_opt AS view_select stmt_end */
+#line 7262 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37456 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1032: /* $@102: %empty */
-#line 7137 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1042: /* $@102: %empty */
+#line 7264 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -37237,11 +37475,11 @@ yyreduce:
Lex->sql_command= SQLCOM_ALTER_EVENT;
Lex->stmt_definition_begin= (yyvsp[-2].simple_string);
}
-#line 37241 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37479 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1033: /* alter: ALTER definer_opt remember_name EVENT_SYM sp_name $@102 ev_alter_on_schedule_completion opt_ev_rename_to opt_ev_status opt_ev_comment opt_ev_sql_stmt */
-#line 7160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1043: /* alter: ALTER definer_opt remember_name EVENT_SYM sp_name $@102 ev_alter_on_schedule_completion opt_ev_rename_to opt_ev_status opt_ev_comment opt_ev_sql_stmt */
+#line 7287 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyvsp[-4].num) || (yyvsp[-3].num) || (yyvsp[-2].num) || (yyvsp[-1].num) || (yyvsp[0].num))))
{
@@ -37257,36 +37495,36 @@ yyreduce:
Lex->pop_select(); //main select
}
-#line 37261 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1034: /* $@103: %empty */
-#line 7176 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1044: /* $@103: %empty */
+#line 7303 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_ALTER_SERVER;
lex->server_options.reset((yyvsp[0].lex_str));
}
-#line 37271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37509 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1035: /* alter: ALTER SERVER_SYM ident_or_text $@103 OPTIONS_SYM '(' server_options_list ')' */
-#line 7180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1045: /* alter: ALTER SERVER_SYM ident_or_text $@103 OPTIONS_SYM '(' server_options_list ')' */
+#line 7307 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 37277 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1036: /* alter: ALTER USER_SYM opt_if_exists clear_privileges grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration */
-#line 7184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1046: /* alter: ALTER USER_SYM opt_if_exists clear_privileges grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration */
+#line 7311 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.set((yyvsp[-5].object_ddl_options));
Lex->sql_command= SQLCOM_ALTER_USER;
}
-#line 37286 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37524 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1037: /* $@104: %empty */
-#line 7189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1047: /* $@104: %empty */
+#line 7316 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_ALTER_SEQUENCE;
@@ -37294,11 +37532,11 @@ yyreduce:
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 37298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1038: /* $@105: %empty */
-#line 7197 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1048: /* $@105: %empty */
+#line 7324 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!(lex->create_info.seq_create_info= new (thd->mem_root)
@@ -37308,108 +37546,108 @@ yyreduce:
TL_WRITE, MDL_EXCLUSIVE))
MYSQL_YYABORT;
}
-#line 37312 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1039: /* $@106: %empty */
-#line 7207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1049: /* $@106: %empty */
+#line 7334 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Create a generic ALTER SEQUENCE statment. */
Lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_sequence((yyvsp[-4].object_ddl_options));
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37323 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37561 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1040: /* alter: ALTER SEQUENCE_SYM opt_if_exists $@104 table_ident $@105 sequence_defs $@106 stmt_end */
-#line 7212 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1050: /* alter: ALTER SEQUENCE_SYM opt_if_exists $@104 table_ident $@105 sequence_defs $@106 stmt_end */
+#line 7339 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37567 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1041: /* account_locking_option: LOCK_SYM */
-#line 7217 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1051: /* account_locking_option: LOCK_SYM */
+#line 7344 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.account_locked= ACCOUNTLOCK_LOCKED;
}
-#line 37337 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37575 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1042: /* account_locking_option: UNLOCK_SYM */
-#line 7221 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1052: /* account_locking_option: UNLOCK_SYM */
+#line 7348 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.account_locked= ACCOUNTLOCK_UNLOCKED;
}
-#line 37345 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37583 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1043: /* opt_password_expire_option: %empty */
-#line 7228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1053: /* opt_password_expire_option: %empty */
+#line 7355 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_NOW;
}
-#line 37353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1044: /* opt_password_expire_option: NEVER_SYM */
-#line 7232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1054: /* opt_password_expire_option: NEVER_SYM */
+#line 7359 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_NEVER;
}
-#line 37361 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37599 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1045: /* opt_password_expire_option: DEFAULT */
-#line 7236 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1055: /* opt_password_expire_option: DEFAULT */
+#line 7363 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_DEFAULT;
}
-#line 37369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1046: /* opt_password_expire_option: INTERVAL_SYM NUM DAY_SYM */
-#line 7240 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1056: /* opt_password_expire_option: INTERVAL_SYM NUM DAY_SYM */
+#line 7367 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_INTERVAL;
if (!(Lex->account_options.num_expiration_days= atoi((yyvsp[-1].lex_str).str)))
my_yyabort_error((ER_WRONG_VALUE, MYF(0), "DAY", (yyvsp[-1].lex_str).str));
}
-#line 37379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37617 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1052: /* ev_alter_on_schedule_completion: %empty */
-#line 7256 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1062: /* ev_alter_on_schedule_completion: %empty */
+#line 7383 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0;}
-#line 37385 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37623 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1053: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time */
-#line 7257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1063: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time */
+#line 7384 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 37391 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37629 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1054: /* ev_alter_on_schedule_completion: ev_on_completion */
-#line 7258 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1064: /* ev_alter_on_schedule_completion: ev_on_completion */
+#line 7385 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 37397 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1055: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time ev_on_completion */
-#line 7259 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1065: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time ev_on_completion */
+#line 7386 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 37403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1056: /* opt_ev_rename_to: %empty */
-#line 7263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1066: /* opt_ev_rename_to: %empty */
+#line 7390 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0;}
-#line 37409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1057: /* opt_ev_rename_to: RENAME TO_SYM sp_name */
-#line 7265 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1067: /* opt_ev_rename_to: RENAME TO_SYM sp_name */
+#line 7392 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Use lex's spname to hold the new name.
@@ -37418,29 +37656,29 @@ yyreduce:
Lex->spname= (yyvsp[0].spname);
(yyval.num)= 1;
}
-#line 37422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1058: /* opt_ev_sql_stmt: %empty */
-#line 7276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1068: /* opt_ev_sql_stmt: %empty */
+#line 7403 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0;}
-#line 37428 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1059: /* opt_ev_sql_stmt: DO_SYM ev_sql_stmt */
-#line 7277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1069: /* opt_ev_sql_stmt: DO_SYM ev_sql_stmt */
+#line 7404 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 37434 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1060: /* ident_or_empty: %empty */
-#line 7282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1070: /* ident_or_empty: %empty */
+#line 7409 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_sys)= Lex_ident_sys(); }
-#line 37440 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37678 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1063: /* alter_commands: DISCARD TABLESPACE */
-#line 7289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1073: /* alter_commands: DISCARD TABLESPACE */
+#line 7416 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_discard_import_tablespace(
@@ -37448,43 +37686,44 @@ yyreduce:
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37452 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1064: /* alter_commands: IMPORT TABLESPACE */
-#line 7297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1074: /* alter_commands: IMPORT TABLESPACE */
+#line 7424 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_discard_import_tablespace(
Sql_cmd_discard_import_tablespace::IMPORT_TABLESPACE);
+ Lex->create_info.add(DDL_options_st::OPT_IMPORT_TABLESPACE);
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37703 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1070: /* alter_commands: DROP PARTITION_SYM opt_if_exists alt_part_name_list */
-#line 7319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1080: /* alter_commands: DROP PARTITION_SYM opt_if_exists alt_part_name_list */
+#line 7447 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_DROP;
DBUG_ASSERT(!Lex->if_exists());
Lex->create_info.add((yyvsp[-1].object_ddl_options));
}
-#line 37474 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37713 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1071: /* alter_commands: REBUILD_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
-#line 7326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1081: /* alter_commands: REBUILD_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
+#line 7454 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->alter_info.partition_flags|= ALTER_PARTITION_REBUILD;
lex->no_write_to_binlog= (yyvsp[-1].num);
}
-#line 37484 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37723 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1072: /* $@107: %empty */
-#line 7333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1082: /* $@107: %empty */
+#line 7461 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->no_write_to_binlog= (yyvsp[-1].num);
@@ -37495,11 +37734,11 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37738 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1074: /* alter_commands: ANALYZE_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
-#line 7346 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1084: /* alter_commands: ANALYZE_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
+#line 7474 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->no_write_to_binlog= (yyvsp[-1].num);
@@ -37510,11 +37749,11 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1075: /* $@108: %empty */
-#line 7357 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1085: /* $@108: %empty */
+#line 7485 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->check_opt.init();
@@ -37524,11 +37763,11 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1077: /* $@109: %empty */
-#line 7369 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1087: /* $@109: %empty */
+#line 7497 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->no_write_to_binlog= (yyvsp[-1].num);
@@ -37539,22 +37778,22 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37543 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37782 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1079: /* alter_commands: COALESCE PARTITION_SYM opt_no_write_to_binlog real_ulong_num */
-#line 7381 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1089: /* alter_commands: COALESCE PARTITION_SYM opt_no_write_to_binlog real_ulong_num */
+#line 7509 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->alter_info.partition_flags|= ALTER_PARTITION_COALESCE;
lex->no_write_to_binlog= (yyvsp[-1].num);
lex->alter_info.num_parts= (yyvsp[0].ulong_num);
}
-#line 37554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1080: /* alter_commands: TRUNCATE_SYM PARTITION_SYM all_or_alt_part_name_list */
-#line 7388 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1090: /* alter_commands: TRUNCATE_SYM PARTITION_SYM all_or_alt_part_name_list */
+#line 7516 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->check_opt.init();
@@ -37564,34 +37803,34 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1082: /* alter_commands: EXCHANGE_SYM PARTITION_SYM alt_part_name_item WITH TABLE_SYM table_ident have_partitioning */
-#line 7400 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1092: /* alter_commands: EXCHANGE_SYM PARTITION_SYM alt_part_name_item WITH TABLE_SYM table_ident opt_without_validation have_partitioning */
+#line 7528 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_alter_table_exchange_partition((yyvsp[-1].table)))
+ if (Lex->stmt_alter_table_exchange_partition((yyvsp[-2].table)))
MYSQL_YYABORT;
}
-#line 37577 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1083: /* alter_commands: CONVERT_SYM PARTITION_SYM alt_part_name_item TO_SYM TABLE_SYM table_ident have_partitioning */
-#line 7406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1093: /* alter_commands: CONVERT_SYM PARTITION_SYM alt_part_name_item TO_SYM TABLE_SYM table_ident opt_without_validation have_partitioning */
+#line 7534 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
- if (Lex->stmt_alter_table((yyvsp[-1].table)))
+ if (Lex->stmt_alter_table((yyvsp[-2].table)))
MYSQL_YYABORT;
lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_table();
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
lex->alter_info.partition_flags|= ALTER_PARTITION_CONVERT_OUT;
}
-#line 37591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1084: /* $@110: %empty */
-#line 7416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1094: /* $@110: %empty */
+#line 7544 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!lex->first_select_lex()->add_table_to_list(thd, (yyvsp[0].table), nullptr, 0,
@@ -37621,38 +37860,38 @@ yyreduce:
lex->alter_info.partition_flags|= ALTER_PARTITION_ADD |
ALTER_PARTITION_CONVERT_IN;
}
-#line 37625 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37864 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1085: /* alter_commands: CONVERT_SYM TABLE_SYM table_ident $@110 TO_SYM PARTITION_SYM part_definition */
-#line 7446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1095: /* alter_commands: CONVERT_SYM TABLE_SYM table_ident $@110 TO_SYM PARTITION_SYM part_definition opt_without_validation have_partitioning */
+#line 7574 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_table();
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37636 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1086: /* remove_partitioning: REMOVE_SYM PARTITIONING_SYM */
-#line 7456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1096: /* remove_partitioning: REMOVE_SYM PARTITIONING_SYM */
+#line 7584 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_REMOVE;
}
-#line 37644 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37883 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1087: /* all_or_alt_part_name_list: ALL */
-#line 7463 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1097: /* all_or_alt_part_name_list: ALL */
+#line 7591 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_ALL;
}
-#line 37652 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1089: /* $@111: %empty */
-#line 7472 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1099: /* $@111: %empty */
+#line 7600 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
@@ -37664,34 +37903,34 @@ yyreduce:
lex->create_info.set((yyvsp[-1].object_ddl_options));
lex->no_write_to_binlog= (yyvsp[0].num);
}
-#line 37668 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1090: /* add_partition_rule: ADD PARTITION_SYM opt_if_not_exists opt_no_write_to_binlog $@111 add_part_extra */
-#line 7484 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1100: /* add_partition_rule: ADD PARTITION_SYM opt_if_not_exists opt_no_write_to_binlog $@111 add_part_extra */
+#line 7612 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37674 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37913 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1092: /* add_part_extra: '(' part_def_list ')' */
-#line 7490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1102: /* add_part_extra: '(' part_def_list ')' */
+#line 7618 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info->num_parts= lex->part_info->partitions.elements;
}
-#line 37683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37922 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1093: /* add_part_extra: PARTITIONS_SYM real_ulong_num */
-#line 7495 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1103: /* add_part_extra: PARTITIONS_SYM real_ulong_num */
+#line 7623 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->part_info->num_parts= (yyvsp[0].ulong_num);
}
-#line 37691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37930 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1094: /* $@112: %empty */
-#line 7502 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1104: /* $@112: %empty */
+#line 7630 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
@@ -37700,146 +37939,146 @@ yyreduce:
lex->no_write_to_binlog= (yyvsp[0].num);
}
-#line 37704 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37943 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1096: /* reorg_parts_rule: %empty */
-#line 7515 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1106: /* reorg_parts_rule: %empty */
+#line 7643 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_TABLE_REORG;
}
-#line 37712 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37951 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1097: /* $@113: %empty */
-#line 7519 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1107: /* $@113: %empty */
+#line 7647 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_REORGANIZE;
}
-#line 37720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1098: /* reorg_parts_rule: alt_part_name_list $@113 INTO '(' part_def_list ')' */
-#line 7523 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1108: /* reorg_parts_rule: alt_part_name_list $@113 INTO '(' part_def_list ')' */
+#line 7651 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->num_parts= part_info->partitions.elements;
}
-#line 37729 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1099: /* alt_part_name_list: alt_part_name_item */
-#line 7530 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1109: /* alt_part_name_list: alt_part_name_item */
+#line 7658 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37735 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1100: /* alt_part_name_list: alt_part_name_list ',' alt_part_name_item */
-#line 7531 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1110: /* alt_part_name_list: alt_part_name_list ',' alt_part_name_item */
+#line 7659 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37741 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37980 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1101: /* alt_part_name_item: ident */
-#line 7536 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1111: /* alt_part_name_item: ident */
+#line 7664 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->alter_info.partition_names.push_back((yyvsp[0].ident_sys).str,
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 37751 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 37990 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1105: /* alter_list_item: add_column column_def opt_place */
-#line 7558 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1115: /* alter_list_item: add_column column_def opt_place */
+#line 7686 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->create_last_non_select_table= lex->last_table();
lex->alter_info.flags|= ALTER_PARSER_ADD_COLUMN;
(yyvsp[-1].create_field)->after= (yyvsp[0].lex_str);
}
-#line 37762 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1106: /* alter_list_item: ADD key_def */
-#line 7565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1116: /* alter_list_item: ADD key_def */
+#line 7693 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_last_non_select_table= Lex->last_table();
Lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 37771 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38010 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1107: /* alter_list_item: ADD period_for_system_time */
-#line 7570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1117: /* alter_list_item: ADD period_for_system_time */
+#line 7698 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_PERIOD;
}
-#line 37779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1108: /* alter_list_item: ADD PERIOD_SYM opt_if_not_exists_table_element period_for_application_time */
-#line 7575 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1118: /* alter_list_item: ADD PERIOD_SYM opt_if_not_exists_table_element period_for_application_time */
+#line 7703 "/home/buildbot/git/sql/sql_yacc.yy"
{
Table_period_info &period= Lex->create_info.period_info;
period.create_if_not_exists= Lex->check_exists;
Lex->alter_info.flags|= ALTER_ADD_CHECK_CONSTRAINT;
}
-#line 37789 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38028 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1109: /* alter_list_item: add_column '(' create_field_list ')' */
-#line 7581 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1119: /* alter_list_item: add_column '(' create_field_list ')' */
+#line 7709 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.flags|= ALTER_PARSER_ADD_COLUMN;
if (!lex->alter_info.key_list.is_empty())
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 37800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1110: /* alter_list_item: ADD constraint_def */
-#line 7588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1120: /* alter_list_item: ADD constraint_def */
+#line 7716 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_CHECK_CONSTRAINT;
}
-#line 37808 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38047 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1111: /* alter_list_item: ADD CONSTRAINT IF_SYM not EXISTS field_ident check_constraint */
-#line 7592 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1121: /* alter_list_item: ADD CONSTRAINT IF_SYM not EXISTS field_ident check_constraint */
+#line 7720 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_CHECK_CONSTRAINT;
Lex->add_constraint((yyvsp[-1].lex_str), (yyvsp[0].virtual_column), TRUE);
}
-#line 37817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1112: /* alter_list_item: CHANGE opt_column opt_if_exists_table_element field_ident field_spec opt_place */
-#line 7598 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1122: /* alter_list_item: CHANGE opt_column opt_if_exists_table_element field_ident field_spec opt_place */
+#line 7726 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_CHANGE_COLUMN | ALTER_RENAME_COLUMN;
Lex->create_last_non_select_table= Lex->last_table();
(yyvsp[-1].create_field)->change= (yyvsp[-2].lex_str);
(yyvsp[-1].create_field)->after= (yyvsp[0].lex_str);
}
-#line 37828 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38067 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1113: /* alter_list_item: MODIFY_SYM opt_column opt_if_exists_table_element field_spec opt_place */
-#line 7606 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1123: /* alter_list_item: MODIFY_SYM opt_column opt_if_exists_table_element field_spec opt_place */
+#line 7734 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_CHANGE_COLUMN;
Lex->create_last_non_select_table= Lex->last_table();
(yyvsp[-1].create_field)->change= (yyvsp[-1].create_field)->field_name;
(yyvsp[-1].create_field)->after= (yyvsp[0].lex_str);
}
-#line 37839 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38078 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1114: /* alter_list_item: DROP opt_column opt_if_exists_table_element field_ident opt_restrict */
-#line 7613 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1124: /* alter_list_item: DROP opt_column opt_if_exists_table_element field_ident opt_restrict */
+#line 7741 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37849,11 +38088,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_PARSER_DROP_COLUMN;
}
-#line 37853 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38092 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1115: /* alter_list_item: DROP CONSTRAINT opt_if_exists_table_element field_ident */
-#line 7623 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1125: /* alter_list_item: DROP CONSTRAINT opt_if_exists_table_element field_ident */
+#line 7751 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37864,11 +38103,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_CHECK_CONSTRAINT;
}
-#line 37868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38107 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1116: /* alter_list_item: DROP FOREIGN KEY_SYM opt_if_exists_table_element field_ident */
-#line 7634 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1126: /* alter_list_item: DROP FOREIGN KEY_SYM opt_if_exists_table_element field_ident */
+#line 7762 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37878,11 +38117,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_FOREIGN_KEY;
}
-#line 37882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38121 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1117: /* alter_list_item: DROP opt_constraint_no_id PRIMARY_SYM KEY_SYM */
-#line 7644 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1127: /* alter_list_item: DROP opt_constraint_no_id PRIMARY_SYM KEY_SYM */
+#line 7772 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37893,11 +38132,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_INDEX;
}
-#line 37897 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38136 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1118: /* alter_list_item: DROP key_or_index opt_if_exists_table_element field_ident */
-#line 7655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1128: /* alter_list_item: DROP key_or_index opt_if_exists_table_element field_ident */
+#line 7783 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37907,42 +38146,42 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_INDEX;
}
-#line 37911 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1119: /* alter_list_item: DISABLE_SYM KEYS */
-#line 7665 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1129: /* alter_list_item: DISABLE_SYM KEYS */
+#line 7793 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.keys_onoff= Alter_info::DISABLE;
lex->alter_info.flags|= ALTER_KEYS_ONOFF;
}
-#line 37921 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38160 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1120: /* alter_list_item: ENABLE_SYM KEYS */
-#line 7671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1130: /* alter_list_item: ENABLE_SYM KEYS */
+#line 7799 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.keys_onoff= Alter_info::ENABLE;
lex->alter_info.flags|= ALTER_KEYS_ONOFF;
}
-#line 37931 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38170 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1121: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident SET DEFAULT column_default_expr */
-#line 7677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1131: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident SET DEFAULT column_default_expr */
+#line 7805 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (check_expression((yyvsp[0].virtual_column), &(yyvsp[-3].lex_str), VCOL_DEFAULT))
MYSQL_YYABORT;
if (unlikely(Lex->add_alter_list((yyvsp[-3].lex_str), (yyvsp[0].virtual_column), (yyvsp[-4].num))))
MYSQL_YYABORT;
}
-#line 37942 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38181 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1122: /* alter_list_item: ALTER key_or_index opt_if_exists_table_element ident ignorability */
-#line 7684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1132: /* alter_list_item: ALTER key_or_index opt_if_exists_table_element ident ignorability */
+#line 7812 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
Alter_index_ignorability *ac= new (thd->mem_root)
@@ -37952,39 +38191,39 @@ yyreduce:
lex->alter_info.alter_index_ignorability_list.push_back(ac);
lex->alter_info.flags|= ALTER_INDEX_IGNORABILITY;
}
-#line 37956 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1123: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident DROP DEFAULT */
-#line 7694 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1133: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident DROP DEFAULT */
+#line 7822 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_alter_list((yyvsp[-2].lex_str), (Virtual_column_info*) 0, (yyvsp[-3].num))))
MYSQL_YYABORT;
}
-#line 37965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38204 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1124: /* alter_list_item: RENAME opt_to table_ident */
-#line 7699 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1134: /* alter_list_item: RENAME opt_to table_ident */
+#line 7827 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_alter_table((yyvsp[0].table)))
MYSQL_YYABORT;
Lex->alter_info.flags|= ALTER_RENAME;
}
-#line 37975 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38214 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1125: /* alter_list_item: RENAME COLUMN_SYM opt_if_exists_table_element ident TO_SYM ident */
-#line 7705 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1135: /* alter_list_item: RENAME COLUMN_SYM opt_if_exists_table_element ident TO_SYM ident */
+#line 7833 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_alter_list((yyvsp[-2].ident_sys), (yyvsp[0].ident_sys), (yyvsp[-3].num))))
MYSQL_YYABORT;
}
-#line 37984 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1126: /* alter_list_item: RENAME key_or_index opt_if_exists_table_element field_ident TO_SYM field_ident */
-#line 7710 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1136: /* alter_list_item: RENAME key_or_index opt_if_exists_table_element field_ident TO_SYM field_ident */
+#line 7838 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_rename_key *ak= new (thd->mem_root)
@@ -37994,81 +38233,83 @@ yyreduce:
lex->alter_info.alter_rename_key_list.push_back(ak);
lex->alter_info.flags|= ALTER_RENAME_INDEX;
}
-#line 37998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38237 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1127: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default */
-#line 7720 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1137: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default */
+#line 7848 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->add_alter_list_item_convert_to_charset((yyvsp[0].charset)))
+ if (Lex->add_alter_list_item_convert_to_charset(
+ thd, thd->variables.character_set_collations, (yyvsp[0].charset)))
MYSQL_YYABORT;
}
-#line 38007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38247 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1128: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default COLLATE_SYM collation_name_or_default */
-#line 7726 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1138: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default COLLATE_SYM collation_name_or_default */
+#line 7855 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->add_alter_list_item_convert_to_charset((yyvsp[-2].charset), (yyvsp[0].Lex_extended_collation)))
+ if (Lex->add_alter_list_item_convert_to_charset(
+ thd, thd->variables.character_set_collations, (yyvsp[-2].charset), (yyvsp[0].Lex_extended_collation)))
MYSQL_YYABORT;
}
-#line 38016 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38257 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1129: /* alter_list_item: create_table_options_space_separated */
-#line 7731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1139: /* alter_list_item: create_table_options_space_separated */
+#line 7861 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.flags|= ALTER_OPTIONS;
}
-#line 38025 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1130: /* alter_list_item: FORCE_SYM */
-#line 7736 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1140: /* alter_list_item: FORCE_SYM */
+#line 7866 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_RECREATE;
}
-#line 38033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1131: /* alter_list_item: alter_order_clause */
-#line 7740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1141: /* alter_list_item: alter_order_clause */
+#line 7870 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.flags|= ALTER_ORDER;
}
-#line 38042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1134: /* alter_list_item: ADD SYSTEM VERSIONING_SYM */
-#line 7747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1144: /* alter_list_item: ADD SYSTEM VERSIONING_SYM */
+#line 7877 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_SYSTEM_VERSIONING;
Lex->create_info.options|= HA_VERSIONED_TABLE;
}
-#line 38051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1135: /* alter_list_item: DROP SYSTEM VERSIONING_SYM */
-#line 7752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1145: /* alter_list_item: DROP SYSTEM VERSIONING_SYM */
+#line 7882 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_DROP_SYSTEM_VERSIONING;
Lex->create_info.options&= ~HA_VERSIONED_TABLE;
}
-#line 38060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1136: /* alter_list_item: DROP PERIOD_SYM FOR_SYSTEM_TIME_SYM */
-#line 7757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1146: /* alter_list_item: DROP PERIOD_SYM FOR_SYSTEM_TIME_SYM */
+#line 7887 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_DROP_PERIOD;
}
-#line 38068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38309 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1137: /* alter_list_item: DROP PERIOD_SYM opt_if_exists_table_element FOR_SYM ident */
-#line 7761 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1147: /* alter_list_item: DROP PERIOD_SYM opt_if_exists_table_element FOR_SYM ident */
+#line 7891 "/home/buildbot/git/sql/sql_yacc.yy"
{
Alter_drop *ad= new Alter_drop(Alter_drop::PERIOD, (yyvsp[0].ident_sys).str, (yyvsp[-2].num));
if (unlikely(ad == NULL))
@@ -38076,215 +38317,231 @@ yyreduce:
Lex->alter_info.drop_list.push_back(ad, thd->mem_root);
Lex->alter_info.flags|= ALTER_DROP_CHECK_CONSTRAINT;
}
-#line 38080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38321 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1149: /* opt_without_validation: WITH VALIDATION_SYM */
+#line 7903 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->without_validation= 0;
+ }
+#line 38329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1143: /* alter_algorithm_option: ALGORITHM_SYM opt_equal DEFAULT */
-#line 7780 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1150: /* opt_without_validation: WITHOUT VALIDATION_SYM */
+#line 7907 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->without_validation= 1;
+ }
+#line 38337 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1156: /* alter_algorithm_option: ALGORITHM_SYM opt_equal DEFAULT */
+#line 7922 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.set_requested_algorithm(
Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT);
}
-#line 38089 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1144: /* alter_algorithm_option: ALGORITHM_SYM opt_equal ident */
-#line 7785 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1157: /* alter_algorithm_option: ALGORITHM_SYM opt_equal ident */
+#line 7927 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->alter_info.set_requested_algorithm(&(yyvsp[0].ident_sys))))
my_yyabort_error((ER_UNKNOWN_ALTER_ALGORITHM, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 38098 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1145: /* alter_lock_option: LOCK_SYM opt_equal DEFAULT */
-#line 7793 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1158: /* alter_lock_option: LOCK_SYM opt_equal DEFAULT */
+#line 7935 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.requested_lock=
Alter_info::ALTER_TABLE_LOCK_DEFAULT;
}
-#line 38107 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1146: /* alter_lock_option: LOCK_SYM opt_equal ident */
-#line 7798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1159: /* alter_lock_option: LOCK_SYM opt_equal ident */
+#line 7940 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->alter_info.set_requested_lock(&(yyvsp[0].ident_sys))))
my_yyabort_error((ER_UNKNOWN_ALTER_LOCK, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 38116 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1147: /* opt_column: %empty */
-#line 7805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1160: /* opt_column: %empty */
+#line 7947 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38122 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1148: /* opt_column: COLUMN_SYM */
-#line 7806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1161: /* opt_column: COLUMN_SYM */
+#line 7948 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38128 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38385 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1149: /* opt_ignore: %empty */
-#line 7810 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1162: /* opt_ignore: %empty */
+#line 7952 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 0;}
-#line 38134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38391 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1150: /* opt_ignore: IGNORE_SYM */
-#line 7811 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1163: /* opt_ignore: IGNORE_SYM */
+#line 7953 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1;}
-#line 38140 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38397 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1151: /* $@114: %empty */
-#line 7815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1164: /* $@114: %empty */
+#line 7957 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 0;}
-#line 38146 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1157: /* alter_option: IGNORE_SYM */
-#line 7829 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1170: /* alter_option: IGNORE_SYM */
+#line 7971 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1;}
-#line 38152 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1158: /* alter_option: ONLINE_SYM */
-#line 7831 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1171: /* alter_option: ONLINE_SYM */
+#line 7973 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.requested_lock=
Alter_info::ALTER_TABLE_LOCK_NONE;
}
-#line 38161 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38418 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1159: /* opt_restrict: %empty */
-#line 7838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1172: /* opt_restrict: %empty */
+#line 7980 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->drop_mode= DROP_DEFAULT; }
-#line 38167 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1160: /* opt_restrict: RESTRICT */
-#line 7839 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1173: /* opt_restrict: RESTRICT */
+#line 7981 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->drop_mode= DROP_RESTRICT; }
-#line 38173 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1161: /* opt_restrict: CASCADE */
-#line 7840 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1174: /* opt_restrict: CASCADE */
+#line 7982 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->drop_mode= DROP_CASCADE; }
-#line 38179 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38436 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1162: /* opt_place: %empty */
-#line 7844 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1175: /* opt_place: %empty */
+#line 7986 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 38185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38442 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1163: /* opt_place: AFTER_SYM ident */
-#line 7846 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1176: /* opt_place: AFTER_SYM ident */
+#line 7988 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str)= (yyvsp[0].ident_sys);
Lex->alter_info.flags |= ALTER_COLUMN_ORDER;
}
-#line 38194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38451 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1164: /* opt_place: FIRST_SYM */
-#line 7851 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1177: /* opt_place: FIRST_SYM */
+#line 7993 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str).str= first_keyword;
(yyval.lex_str).length= 5; /* Length of "first" */
Lex->alter_info.flags |= ALTER_COLUMN_ORDER;
}
-#line 38204 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1165: /* opt_to: %empty */
-#line 7859 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1178: /* opt_to: %empty */
+#line 8001 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38210 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38467 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1166: /* opt_to: TO_SYM */
-#line 7860 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1179: /* opt_to: TO_SYM */
+#line 8002 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38216 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1167: /* opt_to: '=' */
-#line 7861 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1180: /* opt_to: '=' */
+#line 8003 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38222 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38479 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1168: /* opt_to: AS */
-#line 7862 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1181: /* opt_to: AS */
+#line 8004 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38228 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38485 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1169: /* $@115: %empty */
-#line 7867 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1182: /* $@115: %empty */
+#line 8009 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_START;
lex->type = 0;
/* If you change this code don't forget to update SLAVE START too */
}
-#line 38239 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1170: /* slave: START_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel $@115 slave_until */
-#line 7874 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1183: /* slave: START_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel $@115 slave_until */
+#line 8016 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38245 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38502 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1171: /* $@116: %empty */
-#line 7876 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1184: /* $@116: %empty */
+#line 8018 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_ALL_START;
lex->type = 0;
/* If you change this code don't forget to update STOP SLAVE too */
}
-#line 38256 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38513 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1172: /* slave: START_SYM ALL SLAVES slave_thread_opts $@116 */
-#line 7882 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1185: /* slave: START_SYM ALL SLAVES slave_thread_opts $@116 */
+#line 8024 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38262 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38519 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1173: /* slave: STOP_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel */
-#line 7884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1186: /* slave: STOP_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel */
+#line 8026 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_STOP;
lex->type = 0;
/* If you change this code don't forget to update SLAVE STOP too */
}
-#line 38273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38530 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1174: /* slave: STOP_SYM ALL SLAVES slave_thread_opts */
-#line 7891 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1187: /* slave: STOP_SYM ALL SLAVES slave_thread_opts */
+#line 8033 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_ALL_STOP;
lex->type = 0;
/* If you change this code don't forget to update SLAVE STOP too */
}
-#line 38284 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38541 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1175: /* start: START_SYM TRANSACTION_SYM opt_start_transaction_option_list */
-#line 7901 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1188: /* start: START_SYM TRANSACTION_SYM opt_start_transaction_option_list */
+#line 8043 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_BEGIN;
@@ -38297,103 +38554,103 @@ yyreduce:
}
lex->start_transaction_opt= (yyvsp[0].num);
}
-#line 38301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38558 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1176: /* opt_start_transaction_option_list: %empty */
-#line 7917 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1189: /* opt_start_transaction_option_list: %empty */
+#line 8059 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= 0;
}
-#line 38309 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1177: /* opt_start_transaction_option_list: start_transaction_option_list */
-#line 7921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1190: /* opt_start_transaction_option_list: start_transaction_option_list */
+#line 8063 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (yyvsp[0].num);
}
-#line 38317 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1178: /* start_transaction_option_list: start_transaction_option */
-#line 7928 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1191: /* start_transaction_option_list: start_transaction_option */
+#line 8070 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (yyvsp[0].num);
}
-#line 38325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38582 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1179: /* start_transaction_option_list: start_transaction_option_list ',' start_transaction_option */
-#line 7932 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1192: /* start_transaction_option_list: start_transaction_option_list ',' start_transaction_option */
+#line 8074 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (yyvsp[-2].num) | (yyvsp[0].num);
}
-#line 38333 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1180: /* start_transaction_option: WITH CONSISTENT_SYM SNAPSHOT_SYM */
-#line 7939 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1193: /* start_transaction_option: WITH CONSISTENT_SYM SNAPSHOT_SYM */
+#line 8081 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= MYSQL_START_TRANS_OPT_WITH_CONS_SNAPSHOT;
}
-#line 38341 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38598 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1181: /* start_transaction_option: READ_SYM ONLY_SYM */
-#line 7943 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1194: /* start_transaction_option: READ_SYM ONLY_SYM */
+#line 8085 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= MYSQL_START_TRANS_OPT_READ_ONLY;
}
-#line 38349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1182: /* start_transaction_option: READ_SYM WRITE_SYM */
-#line 7947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1195: /* start_transaction_option: READ_SYM WRITE_SYM */
+#line 8089 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= MYSQL_START_TRANS_OPT_READ_WRITE;
}
-#line 38357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38614 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1183: /* $@117: %empty */
-#line 7953 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1196: /* $@117: %empty */
+#line 8095 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->slave_thd_opt= 0; }
-#line 38363 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38620 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1184: /* slave_thread_opts: $@117 slave_thread_opt_list */
-#line 7955 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1197: /* slave_thread_opts: $@117 slave_thread_opt_list */
+#line 8097 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38626 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1187: /* slave_thread_opt: %empty */
-#line 7964 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1200: /* slave_thread_opt: %empty */
+#line 8106 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38375 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1188: /* slave_thread_opt: SQL_THREAD */
-#line 7965 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1201: /* slave_thread_opt: SQL_THREAD */
+#line 8107 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->slave_thd_opt|=SLAVE_SQL; }
-#line 38381 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38638 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1189: /* slave_thread_opt: RELAY_THREAD */
-#line 7966 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1202: /* slave_thread_opt: RELAY_THREAD */
+#line 8108 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->slave_thd_opt|=SLAVE_IO; }
-#line 38387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38644 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1190: /* slave_until: %empty */
-#line 7970 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1203: /* slave_until: %empty */
+#line 8112 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38650 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1191: /* slave_until: UNTIL_SYM slave_until_opts */
-#line 7972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1204: /* slave_until: UNTIL_SYM slave_until_opts */
+#line 8114 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(((lex->mi.log_file_name || lex->mi.pos) &&
@@ -38402,60 +38659,79 @@ yyreduce:
(lex->mi.relay_log_name && lex->mi.relay_log_pos))))
my_yyabort_error((ER_BAD_SLAVE_UNTIL_COND, MYF(0)));
}
-#line 38406 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38663 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1192: /* slave_until: UNTIL_SYM MASTER_GTID_POS_SYM '=' TEXT_STRING_sys */
-#line 7981 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1205: /* slave_until: UNTIL_SYM MASTER_GTID_POS_SYM '=' TEXT_STRING_sys */
+#line 8123 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.gtid_pos_str = (yyvsp[0].lex_str);
+ Lex->mi.is_until_before_gtids= false;
}
-#line 38414 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1195: /* $@118: %empty */
-#line 7993 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1206: /* slave_until: UNTIL_SYM SQL_AFTER_GTIDS_SYM '=' TEXT_STRING_sys */
+#line 8128 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->mi.gtid_pos_str = (yyvsp[0].lex_str);
+ Lex->mi.is_until_before_gtids= false;
+ }
+#line 38681 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1207: /* slave_until: UNTIL_SYM SQL_BEFORE_GTIDS_SYM '=' TEXT_STRING_sys */
+#line 8133 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->mi.gtid_pos_str = (yyvsp[0].lex_str);
+ Lex->mi.is_until_before_gtids= true;
+ }
+#line 38690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1210: /* $@118: %empty */
+#line 8146 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_CHECKSUM;
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 38425 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1196: /* checksum: CHECKSUM_SYM table_or_tables $@118 table_list opt_checksum_type */
-#line 8000 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1211: /* checksum: CHECKSUM_SYM table_or_tables $@118 table_list opt_checksum_type */
+#line 8153 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38431 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1197: /* opt_checksum_type: %empty */
-#line 8004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1212: /* opt_checksum_type: %empty */
+#line 8157 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags= 0; }
-#line 38437 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38713 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1198: /* opt_checksum_type: QUICK */
-#line 8005 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1213: /* opt_checksum_type: QUICK */
+#line 8158 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags= T_QUICK; }
-#line 38443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1199: /* opt_checksum_type: EXTENDED_SYM */
-#line 8006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1214: /* opt_checksum_type: EXTENDED_SYM */
+#line 8159 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags= T_EXTEND; }
-#line 38449 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1201: /* $@119: %empty */
-#line 8012 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1216: /* $@119: %empty */
+#line 8165 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->table_type= TABLE_TYPE_VIEW; }
-#line 38455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1203: /* $@120: %empty */
-#line 8018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1218: /* $@120: %empty */
+#line 8171 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_REPAIR;
@@ -38465,11 +38741,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 38469 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1204: /* repair: REPAIR opt_no_write_to_binlog $@120 repair_table_or_view */
-#line 8028 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1219: /* repair: REPAIR opt_no_write_to_binlog $@120 repair_table_or_view */
+#line 8181 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -38477,71 +38753,71 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 38481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38757 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1205: /* opt_mi_repair_type: %empty */
-#line 8038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1220: /* opt_mi_repair_type: %empty */
+#line 8191 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags = T_MEDIUM; }
-#line 38487 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38763 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1206: /* opt_mi_repair_type: mi_repair_types */
-#line 8039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1221: /* opt_mi_repair_type: mi_repair_types */
+#line 8192 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38493 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38769 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1207: /* mi_repair_types: mi_repair_type */
-#line 8043 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1222: /* mi_repair_types: mi_repair_type */
+#line 8196 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38775 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1208: /* mi_repair_types: mi_repair_type mi_repair_types */
-#line 8044 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1223: /* mi_repair_types: mi_repair_type mi_repair_types */
+#line 8197 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1209: /* mi_repair_type: QUICK */
-#line 8048 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1224: /* mi_repair_type: QUICK */
+#line 8201 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_QUICK; }
-#line 38511 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1210: /* mi_repair_type: EXTENDED_SYM */
-#line 8049 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1225: /* mi_repair_type: EXTENDED_SYM */
+#line 8202 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_EXTEND; }
-#line 38517 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1211: /* mi_repair_type: USE_FRM */
-#line 8050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1226: /* mi_repair_type: USE_FRM */
+#line 8203 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_USEFRM; }
-#line 38523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1212: /* opt_view_repair_type: %empty */
-#line 8054 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1227: /* opt_view_repair_type: %empty */
+#line 8207 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 38529 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1213: /* opt_view_repair_type: FOR_SYM UPGRADE_SYM */
-#line 8055 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1228: /* opt_view_repair_type: FOR_SYM UPGRADE_SYM */
+#line 8208 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; }
-#line 38535 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38811 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1214: /* opt_view_repair_type: FROM MYSQL_SYM */
-#line 8056 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1229: /* opt_view_repair_type: FROM MYSQL_SYM */
+#line 8209 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FROM_MYSQL; }
-#line 38541 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1215: /* $@121: %empty */
-#line 8061 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1230: /* $@121: %empty */
+#line 8214 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_ANALYZE;
@@ -38551,11 +38827,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 38555 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1216: /* analyze: ANALYZE_SYM opt_no_write_to_binlog table_or_tables $@121 analyze_table_list */
-#line 8071 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1231: /* analyze: ANALYZE_SYM opt_no_write_to_binlog table_or_tables $@121 analyze_table_list */
+#line 8224 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -38563,161 +38839,161 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 38567 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1220: /* opt_persistent_stat_clause: %empty */
-#line 8091 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1235: /* opt_persistent_stat_clause: %empty */
+#line 8244 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38573 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38849 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1221: /* opt_persistent_stat_clause: PERSISTENT_SYM FOR_SYM persistent_stat_spec */
-#line 8093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1236: /* opt_persistent_stat_clause: PERSISTENT_SYM FOR_SYM persistent_stat_spec */
+#line 8246 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->lex->with_persistent_for_clause= TRUE;
}
-#line 38581 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38857 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1222: /* persistent_stat_spec: ALL */
-#line 8100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1237: /* persistent_stat_spec: ALL */
+#line 8253 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38587 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1223: /* persistent_stat_spec: COLUMNS persistent_column_stat_spec INDEXES persistent_index_stat_spec */
-#line 8102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1238: /* persistent_stat_spec: COLUMNS persistent_column_stat_spec INDEXES persistent_index_stat_spec */
+#line 8255 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38593 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38869 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1224: /* persistent_column_stat_spec: ALL */
-#line 8106 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1239: /* persistent_column_stat_spec: ALL */
+#line 8259 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38599 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1225: /* $@122: %empty */
-#line 8108 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1240: /* $@122: %empty */
+#line 8261 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
lex->column_list= new (thd->mem_root) List<LEX_STRING>;
if (unlikely(lex->column_list == NULL))
MYSQL_YYABORT;
}
-#line 38610 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38886 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1226: /* persistent_column_stat_spec: '(' $@122 table_column_list ')' */
-#line 8116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1241: /* persistent_column_stat_spec: '(' $@122 table_column_list ')' */
+#line 8269 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 38616 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38892 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1227: /* persistent_index_stat_spec: ALL */
-#line 8120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1242: /* persistent_index_stat_spec: ALL */
+#line 8273 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1228: /* $@123: %empty */
-#line 8122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1243: /* $@123: %empty */
+#line 8275 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
lex->index_list= new (thd->mem_root) List<LEX_STRING>;
if (unlikely(lex->index_list == NULL))
MYSQL_YYABORT;
}
-#line 38633 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1229: /* persistent_index_stat_spec: '(' $@123 table_index_list ')' */
-#line 8130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1244: /* persistent_index_stat_spec: '(' $@123 table_index_list ')' */
+#line 8283 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 38639 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38915 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1230: /* table_column_list: %empty */
-#line 8135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1245: /* table_column_list: %empty */
+#line 8288 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38645 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38921 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1231: /* table_column_list: ident */
-#line 8137 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1246: /* table_column_list: ident */
+#line 8290 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->column_list->push_back((LEX_STRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_STRING)), thd->mem_root);
}
-#line 38654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38930 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1232: /* table_column_list: table_column_list ',' ident */
-#line 8142 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1247: /* table_column_list: table_column_list ',' ident */
+#line 8295 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->column_list->push_back((LEX_STRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_STRING)), thd->mem_root);
}
-#line 38663 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1233: /* table_index_list: %empty */
-#line 8150 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1248: /* table_index_list: %empty */
+#line 8303 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38669 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1236: /* table_index_name: ident */
-#line 8157 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1251: /* table_index_name: ident */
+#line 8310 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->index_list->push_back((LEX_STRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_STRING)),
thd->mem_root);
}
-#line 38679 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38955 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1237: /* table_index_name: PRIMARY_SYM */
-#line 8164 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1252: /* table_index_name: PRIMARY_SYM */
+#line 8317 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_STRING str= {(char*) "PRIMARY", 7};
Lex->index_list->push_back((LEX_STRING*)
thd->memdup(&str, sizeof(LEX_STRING)),
thd->mem_root);
}
-#line 38690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38966 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1238: /* binlog_base64_event: BINLOG_SYM TEXT_STRING_sys */
-#line 8174 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1253: /* binlog_base64_event: BINLOG_SYM TEXT_STRING_sys */
+#line 8327 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT;
Lex->comment= (yyvsp[0].lex_str);
Lex->ident.str= NULL;
Lex->ident.length= 0;
}
-#line 38701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38977 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1239: /* binlog_base64_event: BINLOG_SYM '@' ident_or_text ',' '@' ident_or_text */
-#line 8182 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1254: /* binlog_base64_event: BINLOG_SYM '@' ident_or_text ',' '@' ident_or_text */
+#line 8335 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT;
Lex->comment= (yyvsp[-3].lex_str);
Lex->ident= (yyvsp[0].lex_str);
}
-#line 38711 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38987 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1241: /* $@124: %empty */
-#line 8192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1256: /* $@124: %empty */
+#line 8345 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->table_type= TABLE_TYPE_VIEW; }
-#line 38717 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 38993 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1243: /* $@125: %empty */
-#line 8197 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1258: /* $@125: %empty */
+#line 8350 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
@@ -38727,11 +39003,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 38731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1244: /* check: CHECK_SYM $@125 check_view_or_table */
-#line 8207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1259: /* check: CHECK_SYM $@125 check_view_or_table */
+#line 8360 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
if (unlikely(lex->sphead))
@@ -38741,83 +39017,83 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 38745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1245: /* opt_mi_check_type: %empty */
-#line 8219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1260: /* opt_mi_check_type: %empty */
+#line 8372 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags = T_MEDIUM; }
-#line 38751 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1246: /* opt_mi_check_type: mi_check_types */
-#line 8220 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1261: /* opt_mi_check_type: mi_check_types */
+#line 8373 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38757 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1247: /* mi_check_types: mi_check_type */
-#line 8224 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1262: /* mi_check_types: mi_check_type */
+#line 8377 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38763 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1248: /* mi_check_types: mi_check_type mi_check_types */
-#line 8225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1263: /* mi_check_types: mi_check_type mi_check_types */
+#line 8378 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38769 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1249: /* mi_check_type: QUICK */
-#line 8229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1264: /* mi_check_type: QUICK */
+#line 8382 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_QUICK; }
-#line 38775 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1250: /* mi_check_type: FAST_SYM */
-#line 8230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1265: /* mi_check_type: FAST_SYM */
+#line 8383 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_FAST; }
-#line 38781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1251: /* mi_check_type: MEDIUM_SYM */
-#line 8231 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1266: /* mi_check_type: MEDIUM_SYM */
+#line 8384 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_MEDIUM; }
-#line 38787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39063 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1252: /* mi_check_type: EXTENDED_SYM */
-#line 8232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1267: /* mi_check_type: EXTENDED_SYM */
+#line 8385 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_EXTEND; }
-#line 38793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1253: /* mi_check_type: CHANGED */
-#line 8233 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1268: /* mi_check_type: CHANGED */
+#line 8386 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; }
-#line 38799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1254: /* mi_check_type: FOR_SYM UPGRADE_SYM */
-#line 8234 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1269: /* mi_check_type: FOR_SYM UPGRADE_SYM */
+#line 8387 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; }
-#line 38805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1255: /* opt_view_check_type: %empty */
-#line 8238 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1270: /* opt_view_check_type: %empty */
+#line 8391 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 38811 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1256: /* opt_view_check_type: FOR_SYM UPGRADE_SYM */
-#line 8239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1271: /* opt_view_check_type: FOR_SYM UPGRADE_SYM */
+#line 8392 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; }
-#line 38817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1257: /* $@126: %empty */
-#line 8244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1272: /* $@126: %empty */
+#line 8397 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_OPTIMIZE;
@@ -38827,11 +39103,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 38831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39107 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1258: /* optimize: OPTIMIZE opt_no_write_to_binlog table_or_tables $@126 table_list opt_lock_wait_timeout */
-#line 8254 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1273: /* optimize: OPTIMIZE opt_no_write_to_binlog table_or_tables $@126 table_list opt_lock_wait_timeout */
+#line 8407 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -38839,76 +39115,76 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 38843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1259: /* opt_no_write_to_binlog: %empty */
-#line 8264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1274: /* opt_no_write_to_binlog: %empty */
+#line 8417 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 38849 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1260: /* opt_no_write_to_binlog: NO_WRITE_TO_BINLOG */
-#line 8265 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1275: /* opt_no_write_to_binlog: NO_WRITE_TO_BINLOG */
+#line 8418 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 38855 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1261: /* opt_no_write_to_binlog: LOCAL_SYM */
-#line 8266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1276: /* opt_no_write_to_binlog: LOCAL_SYM */
+#line 8419 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 38861 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39137 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1262: /* $@127: %empty */
-#line 8271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1277: /* $@127: %empty */
+#line 8424 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_RENAME_TABLE;
Lex->create_info.set((yyvsp[0].object_ddl_options));
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 38872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39148 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1263: /* rename: RENAME table_or_tables opt_if_exists $@127 table_to_table_list */
-#line 8278 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1278: /* rename: RENAME table_or_tables opt_if_exists $@127 table_to_table_list */
+#line 8431 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 38880 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39156 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1264: /* rename: RENAME USER_SYM clear_privileges rename_list */
-#line 8282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1279: /* rename: RENAME USER_SYM clear_privileges rename_list */
+#line 8435 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_RENAME_USER;
}
-#line 38888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39164 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1265: /* rename_list: user TO_SYM user */
-#line 8289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1280: /* rename_list: user TO_SYM user */
+#line 8442 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[-2].lex_user), thd->mem_root) ||
Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 38898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39174 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1266: /* rename_list: rename_list ',' user TO_SYM user */
-#line 8295 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1281: /* rename_list: rename_list ',' user TO_SYM user */
+#line 8448 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[-2].lex_user), thd->mem_root) ||
Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 38908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1269: /* table_to_table: table_ident opt_lock_wait_timeout TO_SYM table_ident */
-#line 8309 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1284: /* table_to_table: table_ident opt_lock_wait_timeout TO_SYM table_ident */
+#line 8462 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
SELECT_LEX *sl= lex->current_select;
@@ -38920,29 +39196,29 @@ yyreduce:
TL_IGNORE, MDL_EXCLUSIVE)))
MYSQL_YYABORT;
}
-#line 38924 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39200 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1270: /* $@128: %empty */
-#line 8324 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1285: /* $@128: %empty */
+#line 8477 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.reset();
}
-#line 38932 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1271: /* keycache: CACHE_SYM INDEX_SYM $@128 keycache_list_or_parts IN_SYM key_cache_name */
-#line 8328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1286: /* keycache: CACHE_SYM INDEX_SYM $@128 keycache_list_or_parts IN_SYM key_cache_name */
+#line 8481 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ASSIGN_TO_KEYCACHE;
lex->ident= (yyvsp[0].lex_str);
}
-#line 38942 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1276: /* assign_to_keycache: table_ident cache_keys_spec */
-#line 8347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1291: /* assign_to_keycache: table_ident cache_keys_spec */
+#line 8500 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL, 0, TL_READ,
MDL_SHARED_READ,
@@ -38950,11 +39226,11 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 38954 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39230 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1277: /* assign_to_keycache_parts: table_ident adm_partition cache_keys_spec */
-#line 8358 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1292: /* assign_to_keycache_parts: table_ident adm_partition cache_keys_spec */
+#line 8511 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-2].table), NULL, 0, TL_READ,
MDL_SHARED_READ,
@@ -38962,23 +39238,23 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 38966 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1278: /* key_cache_name: ident */
-#line 8368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1293: /* key_cache_name: ident */
+#line 8521 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 38972 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1279: /* key_cache_name: DEFAULT */
-#line 8369 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.lex_str) = default_key_cache_base; }
-#line 38978 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ case 1294: /* key_cache_name: DEFAULT */
+#line 8522 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.lex_str) = default_base; }
+#line 39254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1280: /* $@129: %empty */
-#line 8374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1295: /* $@129: %empty */
+#line 8527 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_PRELOAD_KEYS;
@@ -38986,19 +39262,19 @@ yyreduce:
if (lex->main_select_push())
MYSQL_YYABORT;
}
-#line 38990 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1281: /* preload: LOAD INDEX_SYM INTO CACHE_SYM $@129 preload_list_or_parts */
-#line 8382 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1296: /* preload: LOAD INDEX_SYM INTO CACHE_SYM $@129 preload_list_or_parts */
+#line 8535 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 38998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1286: /* preload_keys: table_ident cache_keys_spec opt_ignore_leaves */
-#line 8399 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1301: /* preload_keys: table_ident cache_keys_spec opt_ignore_leaves */
+#line 8552 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-2].table), NULL, (yyvsp[0].num), TL_READ,
MDL_SHARED_READ,
@@ -39006,11 +39282,11 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 39010 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39286 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1287: /* preload_keys_parts: table_ident adm_partition cache_keys_spec opt_ignore_leaves */
-#line 8410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1302: /* preload_keys_parts: table_ident adm_partition cache_keys_spec opt_ignore_leaves */
+#line 8563 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-3].table), NULL, (yyvsp[0].num), TL_READ,
MDL_SHARED_READ,
@@ -39018,80 +39294,80 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 39022 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1288: /* $@130: %empty */
-#line 8421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1303: /* $@130: %empty */
+#line 8574 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_ADMIN;
}
-#line 39030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39306 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1290: /* $@131: %empty */
-#line 8428 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1305: /* $@131: %empty */
+#line 8581 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->first_select_lex()->alloc_index_hints(thd);
Select->set_index_hint_type(INDEX_HINT_USE,
INDEX_HINT_MASK_ALL);
}
-#line 39040 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1292: /* cache_key_list_or_empty: %empty */
-#line 8437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1307: /* cache_key_list_or_empty: %empty */
+#line 8590 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 39046 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1294: /* opt_ignore_leaves: %empty */
-#line 8443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1309: /* opt_ignore_leaves: %empty */
+#line 8596 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 39052 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1295: /* opt_ignore_leaves: IGNORE_SYM LEAVES */
-#line 8444 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1310: /* opt_ignore_leaves: IGNORE_SYM LEAVES */
+#line 8597 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_OPTION_IGNORE_LEAVES; }
-#line 39058 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1296: /* $@132: %empty */
-#line 8454 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1311: /* $@132: %empty */
+#line 8607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex_unit)->fake_select_lex ?
(yyvsp[0].select_lex_unit)->fake_select_lex :
(yyvsp[0].select_lex_unit)->first_select()))
MYSQL_YYABORT;
}
-#line 39069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39345 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1297: /* select: query_expression_no_with_clause $@132 opt_procedure_or_into */
-#line 8461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1312: /* select: query_expression_no_with_clause $@132 opt_procedure_or_into */
+#line 8614 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select();
(yyvsp[-2].select_lex_unit)->set_with_clause(NULL);
if (Lex->select_finalize((yyvsp[-2].select_lex_unit), (yyvsp[0].select_lock)))
MYSQL_YYABORT;
}
-#line 39080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39356 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1298: /* $@133: %empty */
-#line 8468 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1313: /* $@133: %empty */
+#line 8621 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex_unit)->fake_select_lex ?
(yyvsp[0].select_lex_unit)->fake_select_lex :
(yyvsp[0].select_lex_unit)->first_select()))
MYSQL_YYABORT;
}
-#line 39091 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39367 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1299: /* select: with_clause query_expression_no_with_clause $@133 opt_procedure_or_into */
-#line 8475 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1314: /* select: with_clause query_expression_no_with_clause $@133 opt_procedure_or_into */
+#line 8628 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select();
(yyvsp[-2].select_lex_unit)->set_with_clause((yyvsp[-3].with_clause));
@@ -39099,20 +39375,20 @@ yyreduce:
if (Lex->select_finalize((yyvsp[-2].select_lex_unit), (yyvsp[0].select_lock)))
MYSQL_YYABORT;
}
-#line 39103 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1300: /* $@134: %empty */
-#line 8486 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1315: /* $@134: %empty */
+#line 8639 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex)))
MYSQL_YYABORT;
}
-#line 39112 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39388 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1301: /* select_into: select_into_query_specification $@134 opt_order_limit_lock */
-#line 8491 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1316: /* select_into: select_into_query_specification $@134 opt_order_limit_lock */
+#line 8644 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX_UNIT *unit;
if (!(unit = Lex->create_unit((yyvsp[-2].select_lex))))
@@ -39122,20 +39398,20 @@ yyreduce:
if (Lex->select_finalize(unit))
MYSQL_YYABORT;
}
-#line 39126 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39402 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1302: /* $@135: %empty */
-#line 8502 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1317: /* $@135: %empty */
+#line 8655 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex)))
MYSQL_YYABORT;
}
-#line 39135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39411 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1303: /* select_into: with_clause select_into_query_specification $@135 opt_order_limit_lock */
-#line 8507 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1318: /* select_into: with_clause select_into_query_specification $@135 opt_order_limit_lock */
+#line 8660 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX_UNIT *unit;
if (!(unit = Lex->create_unit((yyvsp[-2].select_lex))))
@@ -39147,41 +39423,41 @@ yyreduce:
if (Lex->select_finalize(unit))
MYSQL_YYABORT;
}
-#line 39151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39427 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1304: /* simple_table: query_specification */
-#line 8521 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1319: /* simple_table: query_specification */
+#line 8674 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex); }
-#line 39157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1305: /* simple_table: table_value_constructor */
-#line 8522 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1320: /* simple_table: table_value_constructor */
+#line 8675 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex); }
-#line 39163 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1306: /* $@136: %empty */
-#line 8527 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1321: /* $@136: %empty */
+#line 8680 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->parsed_TVC_start())
MYSQL_YYABORT;
}
-#line 39172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39448 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1307: /* table_value_constructor: VALUES $@136 values_list */
-#line 8532 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1322: /* table_value_constructor: VALUES $@136 values_list */
+#line 8685 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex)= Lex->parsed_TVC_end()))
MYSQL_YYABORT;
}
-#line 39181 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39457 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1308: /* $@137: %empty */
-#line 8540 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1323: /* $@137: %empty */
+#line 8693 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel;
LEX *lex= Lex;
@@ -39190,74 +39466,74 @@ yyreduce:
sel->init_select();
sel->braces= FALSE;
}
-#line 39194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39470 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1309: /* $@138: %empty */
-#line 8549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1324: /* $@138: %empty */
+#line 8702 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= SELECT_LIST;
}
-#line 39202 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1310: /* query_specification_start: SELECT_SYM $@137 select_options $@138 select_item_list */
-#line 8553 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1325: /* query_specification_start: SELECT_SYM $@137 select_options $@138 select_item_list */
+#line 8706 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
}
-#line 39210 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39486 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1311: /* query_specification: query_specification_start opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
-#line 8565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1326: /* query_specification: query_specification_start opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
+#line 8718 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lex)= Lex->pop_select();
}
-#line 39218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1312: /* select_into_query_specification: query_specification_start into opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
-#line 8578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1327: /* select_into_query_specification: query_specification_start into opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
+#line 8731 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lex)= Lex->pop_select();
}
-#line 39226 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39502 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1313: /* query_expression: query_expression_no_with_clause */
-#line 8636 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1328: /* query_expression: query_expression_no_with_clause */
+#line 8789 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].select_lex_unit)->set_with_clause(NULL);
(yyval.select_lex_unit)= (yyvsp[0].select_lex_unit);
}
-#line 39235 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39511 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1314: /* query_expression: with_clause query_expression_no_with_clause */
-#line 8642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1329: /* query_expression: with_clause query_expression_no_with_clause */
+#line 8795 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].select_lex_unit)->set_with_clause((yyvsp[-1].with_clause));
(yyvsp[-1].with_clause)->attach_to((yyvsp[0].select_lex_unit)->first_select());
(yyval.select_lex_unit)= (yyvsp[0].select_lex_unit);
}
-#line 39245 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39521 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1315: /* query_expression_no_with_clause: query_expression_body_ext */
-#line 8655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1330: /* query_expression_no_with_clause: query_expression_body_ext */
+#line 8808 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex_unit)= (yyvsp[0].select_lex_unit); }
-#line 39251 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39527 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1316: /* query_expression_no_with_clause: query_expression_body_ext_parens */
-#line 8656 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1331: /* query_expression_no_with_clause: query_expression_body_ext_parens */
+#line 8809 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex_unit)= (yyvsp[0].select_lex_unit); }
-#line 39257 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39533 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1317: /* $@139: %empty */
-#line 8671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1332: /* $@139: %empty */
+#line 8824 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].select_lex_unit)->first_select()->next_select())
{
@@ -39265,89 +39541,89 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39269 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39545 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1318: /* query_expression_body_ext: query_expression_body $@139 opt_query_expression_tail */
-#line 8679 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1333: /* query_expression_body_ext: query_expression_body $@139 opt_query_expression_tail */
+#line 8832 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].order_limit_lock))
(yyval.select_lex_unit)= (yyvsp[-2].select_lex_unit);
else
(yyval.select_lex_unit)= Lex->add_tail_to_query_expression_body((yyvsp[-2].select_lex_unit), (yyvsp[0].order_limit_lock));
}
-#line 39280 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39556 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1319: /* $@140: %empty */
-#line 8686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1334: /* $@140: %empty */
+#line 8839 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->push_select(!(yyvsp[0].select_lex_unit)->first_select()->next_select() ?
(yyvsp[0].select_lex_unit)->first_select() : (yyvsp[0].select_lex_unit)->fake_select_lex);
}
-#line 39289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39565 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1320: /* query_expression_body_ext: query_expression_body_ext_parens $@140 query_expression_tail */
-#line 8691 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1335: /* query_expression_body_ext: query_expression_body_ext_parens $@140 query_expression_tail */
+#line 8844 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex_unit)= Lex->add_tail_to_query_expression_body_ext_parens((yyvsp[-2].select_lex_unit), (yyvsp[0].order_limit_lock))))
MYSQL_YYABORT;
}
-#line 39298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1321: /* query_expression_body_ext_parens: '(' query_expression_body_ext_parens ')' */
-#line 8699 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1336: /* query_expression_body_ext_parens: '(' query_expression_body_ext_parens ')' */
+#line 8852 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex_unit)= (yyvsp[-1].select_lex_unit); }
-#line 39304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1322: /* query_expression_body_ext_parens: '(' query_expression_body_ext ')' */
-#line 8701 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1337: /* query_expression_body_ext_parens: '(' query_expression_body_ext ')' */
+#line 8854 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= (yyvsp[-1].select_lex_unit)->first_select()->next_select() ?
(yyvsp[-1].select_lex_unit)->fake_select_lex : (yyvsp[-1].select_lex_unit)->first_select();
sel->braces= true;
(yyval.select_lex_unit)= (yyvsp[-1].select_lex_unit);
}
-#line 39315 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1323: /* query_expression_body: query_simple */
-#line 8716 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1338: /* query_expression_body: query_simple */
+#line 8869 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->push_select((yyvsp[0].select_lex));
if (!((yyval.select_lex_unit)= Lex->create_unit((yyvsp[0].select_lex))))
MYSQL_YYABORT;
}
-#line 39325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39601 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1324: /* $@141: %empty */
-#line 8723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1339: /* $@141: %empty */
+#line 8876 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[-1].select_lex_unit)->first_select()->next_select())
{
Lex->pop_select();
}
}
-#line 39336 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1325: /* query_expression_body: query_expression_body unit_type_decl $@141 query_primary */
-#line 8730 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1340: /* query_expression_body: query_expression_body unit_type_decl $@141 query_primary */
+#line 8883 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex_unit)= Lex->add_primary_to_query_expression_body((yyvsp[-3].select_lex_unit), (yyvsp[0].select_lex),
(yyvsp[-2].unit_operation).unit_type,
(yyvsp[-2].unit_operation).distinct)))
MYSQL_YYABORT;
}
-#line 39347 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39623 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1326: /* query_expression_body: query_expression_body_ext_parens unit_type_decl query_primary */
-#line 8739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1341: /* query_expression_body: query_expression_body_ext_parens unit_type_decl query_primary */
+#line 8892 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex_unit)= Lex->add_primary_to_query_expression_body_ext_parens(
(yyvsp[-2].select_lex_unit), (yyvsp[0].select_lex),
@@ -39355,38 +39631,38 @@ yyreduce:
(yyvsp[-1].unit_operation).distinct)))
MYSQL_YYABORT;
}
-#line 39359 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1327: /* query_primary: query_simple */
-#line 8755 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1342: /* query_primary: query_simple */
+#line 8908 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex); }
-#line 39365 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1328: /* query_primary: query_expression_body_ext_parens */
-#line 8757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1343: /* query_primary: query_expression_body_ext_parens */
+#line 8910 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex_unit)->first_select(); }
-#line 39371 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1329: /* query_simple: simple_table */
-#line 8766 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1344: /* query_simple: simple_table */
+#line 8919 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex);}
-#line 39377 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39653 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1330: /* subselect: query_expression */
-#line 8771 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1345: /* subselect: query_expression */
+#line 8924 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex)= Lex->parsed_subselect((yyvsp[0].select_lex_unit))))
MYSQL_YYABORT;
}
-#line 39386 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39662 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1331: /* subquery: query_expression_body_ext_parens */
-#line 8812 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1346: /* subquery: query_expression_body_ext_parens */
+#line 8965 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].select_lex_unit)->fake_select_lex)
(yyvsp[0].select_lex_unit)->first_select()->braces= false;
@@ -39395,66 +39671,66 @@ yyreduce:
if (!((yyval.select_lex)= Lex->parsed_subselect((yyvsp[0].select_lex_unit))))
MYSQL_YYABORT;
}
-#line 39399 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39675 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1332: /* subquery: '(' with_clause query_expression_no_with_clause ')' */
-#line 8821 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1347: /* subquery: '(' with_clause query_expression_no_with_clause ')' */
+#line 8974 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].select_lex_unit)->set_with_clause((yyvsp[-2].with_clause));
(yyvsp[-2].with_clause)->attach_to((yyvsp[-1].select_lex_unit)->first_select());
if (!((yyval.select_lex)= Lex->parsed_subselect((yyvsp[-1].select_lex_unit))))
MYSQL_YYABORT;
}
-#line 39410 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39686 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1336: /* table_reference_list: join_table_list */
-#line 8840 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1351: /* table_reference_list: join_table_list */
+#line 8993 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->context.table_list=
Select->context.first_name_resolution_table=
Select->table_list.first;
}
-#line 39420 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1339: /* select_options: select_option_list */
-#line 8855 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1354: /* select_options: select_option_list */
+#line 9008 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((Select->options & SELECT_DISTINCT) &&
(Select->options & SELECT_ALL)))
my_yyabort_error((ER_WRONG_USAGE, MYF(0), "ALL", "DISTINCT"));
}
-#line 39430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39706 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1340: /* opt_history_unit: %empty */
-#line 8864 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1355: /* opt_history_unit: %empty */
+#line 9017 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_range_unit)= VERS_TIMESTAMP;
}
-#line 39438 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1341: /* opt_history_unit: TRANSACTION_SYM */
-#line 8868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1356: /* opt_history_unit: TRANSACTION_SYM */
+#line 9021 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_range_unit)= VERS_TRX_ID;
}
-#line 39446 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39722 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1342: /* opt_history_unit: TIMESTAMP */
-#line 8872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1357: /* opt_history_unit: TIMESTAMP */
+#line 9025 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_range_unit)= VERS_TIMESTAMP;
}
-#line 39454 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39730 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1343: /* history_point: TIMESTAMP TEXT_STRING */
-#line 8879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1358: /* history_point: TIMESTAMP TEXT_STRING */
+#line 9032 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item;
if (!(item= type_handler_datetime.create_literal_item(thd,
@@ -39463,27 +39739,27 @@ yyreduce:
MYSQL_YYABORT;
(yyval.vers_history_point)= Vers_history_point(VERS_TIMESTAMP, item);
}
-#line 39467 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1344: /* history_point: function_call_keyword_timestamp */
-#line 8888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1359: /* history_point: function_call_keyword_timestamp */
+#line 9041 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_history_point)= Vers_history_point(VERS_TIMESTAMP, (yyvsp[0].item));
}
-#line 39475 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39751 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1345: /* history_point: opt_history_unit bit_expr */
-#line 8892 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1360: /* history_point: opt_history_unit bit_expr */
+#line 9045 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_history_point)= Vers_history_point((yyvsp[-1].vers_range_unit), (yyvsp[0].item));
}
-#line 39483 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39759 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1346: /* for_portion_of_time_clause: FOR_SYM PORTION_SYM OF_SYM remember_tok_start ident FROM bit_expr TO_SYM bit_expr */
-#line 8900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1361: /* for_portion_of_time_clause: FOR_SYM PORTION_SYM OF_SYM remember_tok_start ident FROM bit_expr TO_SYM bit_expr */
+#line 9053 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(0 == strcasecmp((yyvsp[-4].ident_sys).str, "SYSTEM_TIME")))
{
@@ -39495,75 +39771,75 @@ yyreduce:
Vers_history_point(VERS_TIMESTAMP, (yyvsp[0].item)),
(yyvsp[-4].ident_sys));
}
-#line 39499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39775 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1347: /* opt_for_portion_of_time_clause: %empty */
-#line 8915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1362: /* opt_for_portion_of_time_clause: %empty */
+#line 9068 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= false;
}
-#line 39507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39783 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1348: /* opt_for_portion_of_time_clause: for_portion_of_time_clause */
-#line 8919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1363: /* opt_for_portion_of_time_clause: for_portion_of_time_clause */
+#line 9072 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= true;
}
-#line 39515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1349: /* opt_for_system_time_clause: %empty */
-#line 8926 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1364: /* opt_for_system_time_clause: %empty */
+#line 9079 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= false;
}
-#line 39523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1350: /* opt_for_system_time_clause: FOR_SYSTEM_TIME_SYM system_time_expr */
-#line 8930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1365: /* opt_for_system_time_clause: FOR_SYSTEM_TIME_SYM system_time_expr */
+#line 9083 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= true;
}
-#line 39531 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1351: /* system_time_expr: AS OF_SYM history_point */
-#line 8937 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1366: /* system_time_expr: AS OF_SYM history_point */
+#line 9090 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_AS_OF, (yyvsp[0].vers_history_point));
}
-#line 39539 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1352: /* system_time_expr: ALL */
-#line 8941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1367: /* system_time_expr: ALL */
+#line 9094 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_ALL);
}
-#line 39547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39823 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1353: /* system_time_expr: FROM history_point TO_SYM history_point */
-#line 8945 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1368: /* system_time_expr: FROM history_point TO_SYM history_point */
+#line 9098 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_FROM_TO, (yyvsp[-2].vers_history_point), (yyvsp[0].vers_history_point));
}
-#line 39555 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1354: /* system_time_expr: BETWEEN_SYM history_point AND_SYM history_point */
-#line 8949 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1369: /* system_time_expr: BETWEEN_SYM history_point AND_SYM history_point */
+#line 9102 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_BETWEEN, (yyvsp[-2].vers_history_point), (yyvsp[0].vers_history_point));
}
-#line 39563 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39839 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1358: /* select_option: SQL_NO_CACHE_SYM */
-#line 8962 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1373: /* select_option: SQL_NO_CACHE_SYM */
+#line 9115 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Allow this flag once per query.
@@ -39572,11 +39848,11 @@ yyreduce:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SQL_NO_CACHE"));
Select->options|= OPTION_NO_QUERY_CACHE;
}
-#line 39576 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1359: /* select_option: SQL_CACHE_SYM */
-#line 8971 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1374: /* select_option: SQL_CACHE_SYM */
+#line 9124 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Allow this flag once per query.
@@ -39585,85 +39861,85 @@ yyreduce:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SQL_CACHE"));
Select->options|= OPTION_TO_QUERY_CACHE;
}
-#line 39589 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39865 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1360: /* select_lock_type: FOR_SYM UPDATE_SYM opt_lock_wait_timeout_new */
-#line 8984 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1375: /* select_lock_type: FOR_SYM UPDATE_SYM opt_lock_wait_timeout_new */
+#line 9137 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
(yyval.select_lock).defined_lock= TRUE;
(yyval.select_lock).update_lock= TRUE;
}
-#line 39599 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1361: /* select_lock_type: LOCK_SYM IN_SYM SHARE_SYM MODE_SYM opt_lock_wait_timeout_new */
-#line 8990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1376: /* select_lock_type: LOCK_SYM IN_SYM SHARE_SYM MODE_SYM opt_lock_wait_timeout_new */
+#line 9143 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
(yyval.select_lock).defined_lock= TRUE;
(yyval.select_lock).update_lock= FALSE;
}
-#line 39609 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39885 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1362: /* opt_select_lock_type: %empty */
-#line 9000 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1377: /* opt_select_lock_type: %empty */
+#line 9153 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
}
-#line 39617 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39893 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1363: /* opt_select_lock_type: select_lock_type */
-#line 9004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1378: /* opt_select_lock_type: select_lock_type */
+#line 9157 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
}
-#line 39625 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39901 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1364: /* opt_lock_wait_timeout_new: %empty */
-#line 9011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1379: /* opt_lock_wait_timeout_new: %empty */
+#line 9164 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
}
-#line 39633 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1365: /* opt_lock_wait_timeout_new: WAIT_SYM ulong_num */
-#line 9015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1380: /* opt_lock_wait_timeout_new: WAIT_SYM ulong_num */
+#line 9168 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
(yyval.select_lock).defined_timeout= TRUE;
(yyval.select_lock).timeout= (yyvsp[0].ulong_num);
}
-#line 39643 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39919 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1366: /* opt_lock_wait_timeout_new: NOWAIT_SYM */
-#line 9021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1381: /* opt_lock_wait_timeout_new: NOWAIT_SYM */
+#line 9174 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
(yyval.select_lock).defined_timeout= TRUE;
(yyval.select_lock).timeout= 0;
}
-#line 39653 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39929 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1367: /* opt_lock_wait_timeout_new: SKIP_SYM LOCKED_SYM */
-#line 9027 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1382: /* opt_lock_wait_timeout_new: SKIP_SYM LOCKED_SYM */
+#line 9180 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
(yyval.select_lock).skip_locked= 1;
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SKIP_LOCKED);
}
-#line 39663 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1370: /* select_item_list: '*' */
-#line 9038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1385: /* select_item_list: '*' */
+#line 9191 "/home/buildbot/git/sql/sql_yacc.yy"
{
bool is_parsing_returning=
thd->lex->current_select->parsing_place ==
@@ -39680,20 +39956,20 @@ yyreduce:
MYSQL_YYABORT;
correct_select->with_wild++;
}
-#line 39684 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39960 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1371: /* select_item: remember_name select_sublist_qualified_asterisk remember_end */
-#line 9058 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1386: /* select_item: remember_name select_sublist_qualified_asterisk remember_end */
+#line 9211 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_item_to_list(thd, (yyvsp[-1].item))))
MYSQL_YYABORT;
}
-#line 39693 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39969 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1372: /* select_item: remember_name expr remember_end select_alias */
-#line 9063 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1387: /* select_item: remember_name expr remember_end select_alias */
+#line 9216 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT((yyvsp[-3].simple_string) < (yyvsp[-1].simple_string));
@@ -39712,113 +39988,151 @@ yyreduce:
(yyvsp[-2].item)->set_name(thd, (yyvsp[-3].simple_string), (uint) ((yyvsp[-1].simple_string) - (yyvsp[-3].simple_string)), thd->charset());
}
}
-#line 39716 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 39992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1373: /* remember_tok_start: %empty */
-#line 9084 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1388: /* remember_tok_start: %empty */
+#line 9237 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.simple_string)= (char*) YYLIP->get_tok_start();
}
-#line 39724 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40000 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1374: /* remember_name: %empty */
-#line 9090 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1389: /* remember_name: %empty */
+#line 9243 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.simple_string)= (char*) YYLIP->get_cpp_tok_start();
}
-#line 39732 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40008 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1375: /* remember_end: %empty */
-#line 9096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1390: /* remember_end: %empty */
+#line 9249 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.simple_string)= (char*) YYLIP->get_cpp_tok_end_rtrim();
}
-#line 39740 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40016 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1376: /* select_alias: %empty */
-#line 9102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1391: /* remember_cpp_ptr: %empty */
+#line 9255 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr();
+ }
+#line 40024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1392: /* remember_start_opt: %empty */
+#line 9261 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (yychar == YYEMPTY)
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr();
+ else
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_start();
+ }
+#line 40035 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1393: /* remember_end_opt: %empty */
+#line 9270 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (yychar == YYEMPTY)
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr_rtrim();
+ else
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_end_rtrim();
+ }
+#line 40046 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1394: /* remember_lex: %empty */
+#line 9279 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.lex)= thd->lex;
+ }
+#line 40054 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 1395: /* select_alias: %empty */
+#line 9285 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=null_clex_str;}
-#line 39746 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1377: /* select_alias: AS ident */
-#line 9103 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1396: /* select_alias: AS ident */
+#line 9286 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys); }
-#line 39752 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1378: /* select_alias: AS TEXT_STRING_sys */
-#line 9104 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1397: /* select_alias: AS TEXT_STRING_sys */
+#line 9287 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str); }
-#line 39758 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40072 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1379: /* select_alias: ident */
-#line 9105 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1398: /* select_alias: ident */
+#line 9288 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys); }
-#line 39764 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40078 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1380: /* select_alias: TEXT_STRING_sys */
-#line 9106 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1399: /* select_alias: TEXT_STRING_sys */
+#line 9289 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str); }
-#line 39770 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1381: /* opt_default_time_precision: %empty */
-#line 9110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1400: /* opt_default_time_precision: %empty */
+#line 9293 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= NOT_FIXED_DEC; }
-#line 39776 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40090 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1382: /* opt_default_time_precision: '(' ')' */
-#line 9111 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1401: /* opt_default_time_precision: '(' ')' */
+#line 9294 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= NOT_FIXED_DEC; }
-#line 39782 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40096 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1383: /* opt_default_time_precision: '(' real_ulong_num ')' */
-#line 9112 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1402: /* opt_default_time_precision: '(' real_ulong_num ')' */
+#line 9295 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].ulong_num); }
-#line 39788 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40102 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1384: /* opt_time_precision: %empty */
-#line 9116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1403: /* opt_time_precision: %empty */
+#line 9299 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 39794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40108 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1385: /* opt_time_precision: '(' ')' */
-#line 9117 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1404: /* opt_time_precision: '(' ')' */
+#line 9300 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 39800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1386: /* opt_time_precision: '(' real_ulong_num ')' */
-#line 9118 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1405: /* opt_time_precision: '(' real_ulong_num ')' */
+#line 9301 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].ulong_num); }
-#line 39806 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40120 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1387: /* optional_braces: %empty */
-#line 9122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1406: /* optional_braces: %empty */
+#line 9305 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 39812 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40126 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1388: /* optional_braces: '(' ')' */
-#line 9123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1407: /* optional_braces: '(' ')' */
+#line 9306 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 39818 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40132 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1389: /* expr: expr or expr */
-#line 9129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1408: /* expr: expr or expr */
+#line 9312 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Design notes:
@@ -39869,22 +40183,22 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39873 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1390: /* expr: expr XOR expr */
-#line 9180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1409: /* expr: expr XOR expr */
+#line 9363 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* XOR is a proprietary extension */
(yyval.item)= new (thd->mem_root) Item_func_xor(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39884 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40198 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1391: /* expr: expr and expr */
-#line 9187 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1410: /* expr: expr and expr */
+#line 9370 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* See comments in rule expr: expr or expr */
Item_cond_and *item1;
@@ -39927,141 +40241,141 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39931 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40245 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1392: /* expr: NOT_SYM expr */
-#line 9230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1411: /* expr: NOT_SYM expr */
+#line 9413 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= negate_expression(thd, (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39941 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1394: /* boolean_test: boolean_test IS TRUE_SYM */
-#line 9240 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1413: /* boolean_test: boolean_test IS TRUE_SYM */
+#line 9423 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_istrue(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39951 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40265 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1395: /* boolean_test: boolean_test IS not TRUE_SYM */
-#line 9246 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1414: /* boolean_test: boolean_test IS not TRUE_SYM */
+#line 9429 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnottrue(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40275 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1396: /* boolean_test: boolean_test IS FALSE_SYM */
-#line 9252 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1415: /* boolean_test: boolean_test IS FALSE_SYM */
+#line 9435 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isfalse(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39971 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40285 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1397: /* boolean_test: boolean_test IS not FALSE_SYM */
-#line 9258 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1416: /* boolean_test: boolean_test IS not FALSE_SYM */
+#line 9441 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnotfalse(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39981 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40295 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1398: /* boolean_test: boolean_test IS UNKNOWN_SYM */
-#line 9264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1417: /* boolean_test: boolean_test IS UNKNOWN_SYM */
+#line 9447 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnull(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40305 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1399: /* boolean_test: boolean_test IS not UNKNOWN_SYM */
-#line 9270 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1418: /* boolean_test: boolean_test IS not UNKNOWN_SYM */
+#line 9453 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnotnull(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40315 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1400: /* boolean_test: boolean_test IS NULL_SYM */
-#line 9276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1419: /* boolean_test: boolean_test IS NULL_SYM */
+#line 9459 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnull(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40011 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1401: /* boolean_test: boolean_test IS not NULL_SYM */
-#line 9282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1420: /* boolean_test: boolean_test IS not NULL_SYM */
+#line 9465 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnotnull(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40335 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1402: /* boolean_test: boolean_test EQUAL_SYM predicate */
-#line 9288 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1421: /* boolean_test: boolean_test EQUAL_SYM predicate */
+#line 9471 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_equal(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40031 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40345 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1403: /* boolean_test: boolean_test comp_op predicate */
-#line 9294 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1422: /* boolean_test: boolean_test comp_op predicate */
+#line 9477 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (*(yyvsp[-1].boolfunc2creator))(0)->create(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40041 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1404: /* boolean_test: boolean_test comp_op all_or_any '(' subselect ')' */
-#line 9300 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1423: /* boolean_test: boolean_test comp_op all_or_any '(' subselect ')' */
+#line 9483 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= all_any_subquery_creator(thd, (yyvsp[-5].item), (yyvsp[-4].boolfunc2creator), (yyvsp[-3].num), (yyvsp[-1].select_lex));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40365 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1406: /* predicate: predicate IN_SYM subquery */
-#line 9310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1425: /* predicate: predicate IN_SYM subquery */
+#line 9493 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_in_subselect(thd, (yyvsp[-2].item), (yyvsp[0].select_lex));
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 40061 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40375 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1407: /* predicate: predicate not IN_SYM subquery */
-#line 9316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1426: /* predicate: predicate not IN_SYM subquery */
+#line 9499 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_in_subselect(thd, (yyvsp[-3].item), (yyvsp[0].select_lex));
if (unlikely(!item))
@@ -40070,21 +40384,21 @@ yyreduce:
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 40074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40388 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1408: /* predicate: predicate IN_SYM '(' expr ')' */
-#line 9325 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1427: /* predicate: predicate IN_SYM '(' expr ')' */
+#line 9508 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= handle_sql2003_note184_exception(thd, (yyvsp[-4].item), true, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40398 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1409: /* predicate: predicate IN_SYM '(' expr ',' expr_list ')' */
-#line 9331 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1428: /* predicate: predicate IN_SYM '(' expr ',' expr_list ')' */
+#line 9514 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyvsp[-1].item_list)->push_front((yyvsp[-6].item), thd->mem_root);
@@ -40092,21 +40406,21 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40096 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40410 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1410: /* predicate: predicate not IN_SYM '(' expr ')' */
-#line 9339 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1429: /* predicate: predicate not IN_SYM '(' expr ')' */
+#line 9522 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= handle_sql2003_note184_exception(thd, (yyvsp[-5].item), false, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40106 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40420 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1411: /* predicate: predicate not IN_SYM '(' expr ',' expr_list ')' */
-#line 9345 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1430: /* predicate: predicate not IN_SYM '(' expr ',' expr_list ')' */
+#line 9528 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyvsp[-1].item_list)->push_front((yyvsp[-7].item), thd->mem_root);
@@ -40115,21 +40429,21 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 40119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1412: /* predicate: predicate BETWEEN_SYM predicate AND_SYM predicate */
-#line 9354 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1431: /* predicate: predicate BETWEEN_SYM predicate AND_SYM predicate */
+#line 9537 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_between(thd, (yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40129 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1413: /* predicate: predicate not BETWEEN_SYM predicate AND_SYM predicate */
-#line 9360 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1432: /* predicate: predicate not BETWEEN_SYM predicate AND_SYM predicate */
+#line 9543 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_func_between *item;
item= new (thd->mem_root) Item_func_between(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[0].item));
@@ -40137,11 +40451,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 40141 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1414: /* predicate: predicate SOUNDS_SYM LIKE predicate */
-#line 9368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1433: /* predicate: predicate SOUNDS_SYM LIKE predicate */
+#line 9551 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item1= new (thd->mem_root) Item_func_soundex(thd, (yyvsp[-3].item));
Item *item4= new (thd->mem_root) Item_func_soundex(thd, (yyvsp[0].item));
@@ -40151,43 +40465,43 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40155 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40469 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1415: /* predicate: predicate LIKE predicate */
-#line 9378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1434: /* predicate: predicate LIKE predicate */
+#line 9561 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_like(thd, (yyvsp[-2].item), (yyvsp[0].item), escape(thd), false);
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 40165 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40479 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1416: /* predicate: predicate LIKE predicate ESCAPE_SYM predicate */
-#line 9384 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1435: /* predicate: predicate LIKE predicate ESCAPE_SYM predicate */
+#line 9567 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->escape_used= true;
(yyval.item)= new (thd->mem_root) Item_func_like(thd, (yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item), true);
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 40176 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1417: /* predicate: predicate not LIKE predicate */
-#line 9391 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1436: /* predicate: predicate not LIKE predicate */
+#line 9574 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_like(thd, (yyvsp[-3].item), (yyvsp[0].item), escape(thd), false);
if (unlikely(!item))
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 40187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40501 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1418: /* predicate: predicate not LIKE predicate ESCAPE_SYM predicate */
-#line 9398 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1437: /* predicate: predicate not LIKE predicate ESCAPE_SYM predicate */
+#line 9581 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->escape_used= true;
Item *item= new (thd->mem_root) Item_func_like(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[0].item), true);
@@ -40195,21 +40509,21 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 40199 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40513 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1419: /* predicate: predicate REGEXP predicate */
-#line 9406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1438: /* predicate: predicate REGEXP predicate */
+#line 9589 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_regex(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40209 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1420: /* predicate: predicate not REGEXP predicate */
-#line 9412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1439: /* predicate: predicate not REGEXP predicate */
+#line 9595 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_regex(thd, (yyvsp[-3].item), (yyvsp[0].item));
if (unlikely(item == NULL))
@@ -40218,325 +40532,327 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40222 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1422: /* bit_expr: bit_expr '|' bit_expr */
-#line 9425 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1441: /* bit_expr: bit_expr '|' bit_expr */
+#line 9608 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_or(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40232 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40546 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1423: /* bit_expr: bit_expr '&' bit_expr */
-#line 9431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1442: /* bit_expr: bit_expr '&' bit_expr */
+#line 9614 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_and(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40556 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1424: /* bit_expr: bit_expr SHIFT_LEFT bit_expr */
-#line 9437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1443: /* bit_expr: bit_expr SHIFT_LEFT bit_expr */
+#line 9620 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_shift_left(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40252 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1425: /* bit_expr: bit_expr SHIFT_RIGHT bit_expr */
-#line 9443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1444: /* bit_expr: bit_expr SHIFT_RIGHT bit_expr */
+#line 9626 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_shift_right(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40262 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40576 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1426: /* bit_expr: bit_expr ORACLE_CONCAT_SYM bit_expr */
-#line 9449 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1445: /* bit_expr: bit_expr ORACLE_CONCAT_SYM bit_expr */
+#line 9632 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_concat_operator_oracle(thd,
(yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40587 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1427: /* bit_expr: bit_expr '+' bit_expr */
-#line 9456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1446: /* bit_expr: bit_expr '+' bit_expr */
+#line 9639 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_plus(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1428: /* bit_expr: bit_expr '-' bit_expr */
-#line 9462 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1447: /* bit_expr: bit_expr '-' bit_expr */
+#line 9645 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_minus(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40293 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1429: /* bit_expr: bit_expr '+' INTERVAL_SYM expr interval */
-#line 9468 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1448: /* bit_expr: bit_expr '+' INTERVAL_SYM expr interval */
+#line 9651 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40303 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40617 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1430: /* bit_expr: bit_expr '-' INTERVAL_SYM expr interval */
-#line 9474 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1449: /* bit_expr: bit_expr '-' INTERVAL_SYM expr interval */
+#line 9657 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40313 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40627 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1431: /* bit_expr: INTERVAL_SYM expr interval '+' expr */
-#line 9481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1450: /* bit_expr: INTERVAL_SYM expr interval '+' expr */
+#line 9664 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40323 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40637 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1432: /* bit_expr: '+' INTERVAL_SYM expr interval '+' expr */
-#line 9487 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1451: /* bit_expr: '+' INTERVAL_SYM expr interval '+' expr */
+#line 9670 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40333 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1433: /* bit_expr: '-' INTERVAL_SYM expr interval '+' expr */
-#line 9493 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1452: /* bit_expr: '-' INTERVAL_SYM expr interval '+' expr */
+#line 9676 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40657 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1434: /* bit_expr: bit_expr '*' bit_expr */
-#line 9499 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1453: /* bit_expr: bit_expr '*' bit_expr */
+#line 9682 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mul(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40667 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1435: /* bit_expr: bit_expr '/' bit_expr */
-#line 9505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1454: /* bit_expr: bit_expr '/' bit_expr */
+#line 9688 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_div(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40363 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1436: /* bit_expr: bit_expr '%' bit_expr */
-#line 9511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1455: /* bit_expr: bit_expr '%' bit_expr */
+#line 9694 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40687 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1437: /* bit_expr: bit_expr DIV_SYM bit_expr */
-#line 9517 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1456: /* bit_expr: bit_expr DIV_SYM bit_expr */
+#line 9700 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_int_div(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40383 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40697 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1438: /* bit_expr: bit_expr MOD_SYM bit_expr */
-#line 9523 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1457: /* bit_expr: bit_expr MOD_SYM bit_expr */
+#line 9706 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1439: /* bit_expr: bit_expr '^' bit_expr */
-#line 9529 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1458: /* bit_expr: bit_expr '^' bit_expr */
+#line 9712 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_xor(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40717 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1449: /* comp_op: '=' */
-#line 9558 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1468: /* comp_op: '=' */
+#line 9741 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_eq_creator; }
-#line 40409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40723 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1450: /* comp_op: GE */
-#line 9559 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1469: /* comp_op: GE */
+#line 9742 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_ge_creator; }
-#line 40415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40729 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1451: /* comp_op: '>' */
-#line 9560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1470: /* comp_op: '>' */
+#line 9743 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_gt_creator; }
-#line 40421 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40735 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1452: /* comp_op: LE */
-#line 9561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1471: /* comp_op: LE */
+#line 9744 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_le_creator; }
-#line 40427 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40741 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1453: /* comp_op: '<' */
-#line 9562 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1472: /* comp_op: '<' */
+#line 9745 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_lt_creator; }
-#line 40433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40747 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1454: /* comp_op: NE */
-#line 9563 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1473: /* comp_op: NE */
+#line 9746 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_ne_creator; }
-#line 40439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1455: /* all_or_any: ALL */
-#line 9567 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1474: /* all_or_any: ALL */
+#line 9750 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 40445 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40759 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1456: /* all_or_any: ANY_SYM */
-#line 9568 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1475: /* all_or_any: ANY_SYM */
+#line 9751 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 40451 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40765 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1457: /* opt_dyncol_type: %empty */
-#line 9573 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1476: /* opt_dyncol_type: %empty */
+#line 9756 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_dyncol_type).set(DYN_COL_NULL); /* automatic type */
}
-#line 40459 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1458: /* opt_dyncol_type: AS dyncol_type */
-#line 9576 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1477: /* opt_dyncol_type: AS dyncol_type */
+#line 9759 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type)= (yyvsp[0].Lex_dyncol_type); }
-#line 40465 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1462: /* numeric_dyncol_type: INT_SYM */
-#line 9586 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1481: /* numeric_dyncol_type: INT_SYM */
+#line 9769 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_INT); }
-#line 40471 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1463: /* numeric_dyncol_type: UNSIGNED INT_SYM */
-#line 9587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1482: /* numeric_dyncol_type: UNSIGNED INT_SYM */
+#line 9770 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_UINT); }
-#line 40477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1464: /* numeric_dyncol_type: DOUBLE_SYM */
-#line 9588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1483: /* numeric_dyncol_type: DOUBLE_SYM */
+#line 9771 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DOUBLE); }
-#line 40483 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1465: /* numeric_dyncol_type: REAL */
-#line 9589 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1484: /* numeric_dyncol_type: REAL */
+#line 9772 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DOUBLE); }
-#line 40489 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1466: /* numeric_dyncol_type: FLOAT_SYM */
-#line 9590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1485: /* numeric_dyncol_type: FLOAT_SYM */
+#line 9773 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DOUBLE); }
-#line 40495 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40809 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1467: /* numeric_dyncol_type: DECIMAL_SYM float_options */
-#line 9591 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1486: /* numeric_dyncol_type: DECIMAL_SYM float_options */
+#line 9774 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DECIMAL, (yyvsp[0].Lex_length_and_dec)); }
-#line 40501 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1468: /* temporal_dyncol_type: DATE_SYM */
-#line 9595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1487: /* temporal_dyncol_type: DATE_SYM */
+#line 9778 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DATE); }
-#line 40507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40821 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1469: /* temporal_dyncol_type: TIME_SYM opt_field_scale */
-#line 9596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1488: /* temporal_dyncol_type: TIME_SYM opt_field_scale */
+#line 9779 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_TIME, (yyvsp[0].Lex_length_and_dec)); }
-#line 40513 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1470: /* temporal_dyncol_type: DATETIME opt_field_scale */
-#line 9597 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1489: /* temporal_dyncol_type: DATETIME opt_field_scale */
+#line 9780 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DATETIME, (yyvsp[0].Lex_length_and_dec)); }
-#line 40519 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40833 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1471: /* string_dyncol_type: char opt_binary */
-#line 9602 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1490: /* string_dyncol_type: char opt_binary */
+#line 9785 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_dyncol_type).set(DYN_COL_STRING, (yyvsp[0].Lex_exact_charset_extended_collation_attrs), thd->variables.collation_connection))
+ if ((yyval.Lex_dyncol_type).set(DYN_COL_STRING, thd,
+ thd->variables.character_set_collations,
+ (yyvsp[0].Lex_exact_charset_extended_collation_attrs), thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 40528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40844 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1472: /* string_dyncol_type: nchar */
-#line 9607 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1491: /* string_dyncol_type: nchar */
+#line 9792 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_dyncol_type).set(DYN_COL_STRING, national_charset_info);
}
-#line 40536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1473: /* dyncall_create_element: expr ',' expr opt_dyncol_type */
-#line 9614 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1492: /* dyncall_create_element: expr ',' expr opt_dyncol_type */
+#line 9799 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.dyncol_def)= (DYNCALL_CREATE_DEF *)
alloc_root(thd->mem_root, sizeof(DYNCALL_CREATE_DEF));
@@ -40555,118 +40871,118 @@ yyreduce:
else
(yyval.dyncol_def)->len= 0;
}
-#line 40559 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1474: /* dyncall_create_list: dyncall_create_element */
-#line 9636 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1493: /* dyncall_create_list: dyncall_create_element */
+#line 9821 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.dyncol_def_list)= new (thd->mem_root) List<DYNCALL_CREATE_DEF>;
if (unlikely((yyval.dyncol_def_list) == NULL))
MYSQL_YYABORT;
(yyval.dyncol_def_list)->push_back((yyvsp[0].dyncol_def), thd->mem_root);
}
-#line 40570 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40886 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1475: /* dyncall_create_list: dyncall_create_list ',' dyncall_create_element */
-#line 9643 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1494: /* dyncall_create_list: dyncall_create_list ',' dyncall_create_element */
+#line 9828 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].dyncol_def_list)->push_back((yyvsp[0].dyncol_def), thd->mem_root);
(yyval.dyncol_def_list)= (yyvsp[-2].dyncol_def_list);
}
-#line 40579 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40895 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1476: /* plsql_cursor_attr: ISOPEN_SYM */
-#line 9651 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1495: /* plsql_cursor_attr: ISOPEN_SYM */
+#line 9836 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_ISOPEN; }
-#line 40585 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40901 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1477: /* plsql_cursor_attr: FOUND_SYM */
-#line 9652 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1496: /* plsql_cursor_attr: FOUND_SYM */
+#line 9837 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_FOUND; }
-#line 40591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1478: /* plsql_cursor_attr: NOTFOUND_SYM */
-#line 9653 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1497: /* plsql_cursor_attr: NOTFOUND_SYM */
+#line 9838 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_NOTFOUND; }
-#line 40597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40913 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1479: /* plsql_cursor_attr: ROWCOUNT_SYM */
-#line 9654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1498: /* plsql_cursor_attr: ROWCOUNT_SYM */
+#line 9839 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_ROWCOUNT; }
-#line 40603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40919 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1480: /* explicit_cursor_attr: ident PERCENT_ORACLE_SYM plsql_cursor_attr */
-#line 9659 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1499: /* explicit_cursor_attr: ident PERCENT_ORACLE_SYM plsql_cursor_attr */
+#line 9844 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_plsql_cursor_attr(thd, &(yyvsp[-2].ident_sys), (yyvsp[0].plsql_cursor_attr)))))
MYSQL_YYABORT;
}
-#line 40612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1483: /* trim_operands_regular: expr */
-#line 9672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1502: /* trim_operands_regular: expr */
+#line 9857 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[0].item)); }
-#line 40618 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1484: /* trim_operands_special: LEADING expr FROM expr */
-#line 9676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1503: /* trim_operands_special: LEADING expr FROM expr */
+#line 9861 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_LEADING, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 40624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1485: /* trim_operands_special: TRAILING expr FROM expr */
-#line 9677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1504: /* trim_operands_special: TRAILING expr FROM expr */
+#line 9862 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_TRAILING, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 40630 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1486: /* trim_operands_special: BOTH expr FROM expr */
-#line 9678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1505: /* trim_operands_special: BOTH expr FROM expr */
+#line 9863 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 40636 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1487: /* trim_operands_special: LEADING FROM expr */
-#line 9679 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1506: /* trim_operands_special: LEADING FROM expr */
+#line 9864 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_LEADING, (yyvsp[0].item)); }
-#line 40642 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1488: /* trim_operands_special: TRAILING FROM expr */
-#line 9680 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1507: /* trim_operands_special: TRAILING FROM expr */
+#line 9865 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_TRAILING, (yyvsp[0].item)); }
-#line 40648 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40964 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1489: /* trim_operands_special: BOTH FROM expr */
-#line 9681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1508: /* trim_operands_special: BOTH FROM expr */
+#line 9866 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[0].item)); }
-#line 40654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40970 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1490: /* trim_operands_special: expr FROM expr */
-#line 9682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1509: /* trim_operands_special: expr FROM expr */
+#line 9867 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 40660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40976 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1497: /* column_default_non_parenthesized_expr: param_marker */
-#line 9720 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1516: /* column_default_non_parenthesized_expr: param_marker */
+#line 9905 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item_param); }
-#line 40666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1499: /* column_default_non_parenthesized_expr: sum_expr */
-#line 9723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1518: /* column_default_non_parenthesized_expr: sum_expr */
+#line 9908 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!Lex->select_stack_top || Lex->json_table)
{
@@ -40674,11 +40990,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 40678 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 40994 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1500: /* column_default_non_parenthesized_expr: window_func_expr */
-#line 9731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1519: /* column_default_non_parenthesized_expr: window_func_expr */
+#line 9916 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!Lex->select_stack_top)
{
@@ -40686,41 +41002,41 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 40690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1502: /* column_default_non_parenthesized_expr: ROW_SYM '(' expr ',' expr_list ')' */
-#line 9740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1521: /* column_default_non_parenthesized_expr: ROW_SYM '(' expr ',' expr_list ')' */
+#line 9925 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyval.item)= new (thd->mem_root) Item_row(thd, *(yyvsp[-1].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41017 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1503: /* column_default_non_parenthesized_expr: EXISTS '(' subselect ')' */
-#line 9747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1522: /* column_default_non_parenthesized_expr: EXISTS '(' subselect ')' */
+#line 9932 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_exists_subselect(thd, (yyvsp[-1].select_lex));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40711 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1504: /* column_default_non_parenthesized_expr: '{' ident expr '}' */
-#line 9753 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1523: /* column_default_non_parenthesized_expr: '{' ident expr '}' */
+#line 9938 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].item)->make_odbc_literal(thd, &(yyvsp[-2].ident_sys)))))
MYSQL_YYABORT;
}
-#line 40720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41036 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1505: /* column_default_non_parenthesized_expr: MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' */
-#line 9758 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1524: /* column_default_non_parenthesized_expr: MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' */
+#line 9943 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-5].item_list)->push_front((yyvsp[-2].item), thd->mem_root);
Item_func_match *i1= new (thd->mem_root) Item_func_match(thd, *(yyvsp[-5].item_list),
@@ -40730,58 +41046,60 @@ yyreduce:
Select->add_ftfunc_to_list(thd, i1);
(yyval.item)= i1;
}
-#line 40734 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1506: /* column_default_non_parenthesized_expr: CAST_SYM '(' expr AS cast_type ')' */
-#line 9768 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1525: /* column_default_non_parenthesized_expr: CAST_SYM '(' expr AS cast_type ')' */
+#line 9953 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].Lex_cast_type).create_typecast_item_or_error(thd, (yyvsp[-3].item)))))
MYSQL_YYABORT;
}
-#line 40743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41059 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1507: /* column_default_non_parenthesized_expr: CASE_SYM when_list_opt_else END */
-#line 9773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1526: /* column_default_non_parenthesized_expr: CASE_SYM when_list_opt_else END */
+#line 9958 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= new(thd->mem_root) Item_func_case_searched(thd, *(yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 40752 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1508: /* column_default_non_parenthesized_expr: CASE_SYM expr when_list_opt_else END */
-#line 9778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1527: /* column_default_non_parenthesized_expr: CASE_SYM expr when_list_opt_else END */
+#line 9963 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-2].item), thd->mem_root);
if (unlikely(!((yyval.item)= new (thd->mem_root) Item_func_case_simple(thd, *(yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 40762 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41078 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1509: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr ',' cast_type ')' */
-#line 9784 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1528: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr ',' cast_type ')' */
+#line 9969 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].Lex_cast_type).create_typecast_item_or_error(thd, (yyvsp[-3].item)))))
MYSQL_YYABORT;
}
-#line 40771 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1510: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr USING charset_name ')' */
-#line 9789 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1529: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr USING charset_name ')' */
+#line 9974 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
(yyval.item)= new (thd->mem_root) Item_func_conv_charset(thd, (yyvsp[-3].item), (yyvsp[-1].charset));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1511: /* column_default_non_parenthesized_expr: DEFAULT '(' simple_ident ')' */
-#line 9795 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1530: /* column_default_non_parenthesized_expr: DEFAULT '(' simple_ident ')' */
+#line 9982 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_splocal *il= (yyvsp[-1].item)->get_item_splocal();
if (unlikely(il))
@@ -40792,209 +41110,211 @@ yyreduce:
MYSQL_YYABORT;
Lex->default_used= TRUE;
}
-#line 40796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1512: /* column_default_non_parenthesized_expr: VALUE_SYM '(' simple_ident_nospvar ')' */
-#line 9806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1531: /* column_default_non_parenthesized_expr: VALUE_SYM '(' simple_ident_nospvar ')' */
+#line 9993 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_insert_value(thd, Lex->current_context(),
(yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1513: /* column_default_non_parenthesized_expr: NEXT_SYM VALUE_SYM FOR_SYM table_ident */
-#line 9813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1532: /* column_default_non_parenthesized_expr: NEXT_SYM VALUE_SYM FOR_SYM table_ident */
+#line 10000 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_nextval(thd, (yyvsp[0].table)))))
MYSQL_YYABORT;
}
-#line 40816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1514: /* column_default_non_parenthesized_expr: NEXTVAL_SYM '(' table_ident ')' */
-#line 9818 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1533: /* column_default_non_parenthesized_expr: NEXTVAL_SYM '(' table_ident ')' */
+#line 10005 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_nextval(thd, (yyvsp[-1].table)))))
MYSQL_YYABORT;
}
-#line 40825 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1515: /* column_default_non_parenthesized_expr: PREVIOUS_SYM VALUE_SYM FOR_SYM table_ident */
-#line 9823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1534: /* column_default_non_parenthesized_expr: PREVIOUS_SYM VALUE_SYM FOR_SYM table_ident */
+#line 10010 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_lastval(thd, (yyvsp[0].table)))))
MYSQL_YYABORT;
}
-#line 40834 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41152 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1516: /* column_default_non_parenthesized_expr: LASTVAL_SYM '(' table_ident ')' */
-#line 9828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1535: /* column_default_non_parenthesized_expr: LASTVAL_SYM '(' table_ident ')' */
+#line 10015 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_lastval(thd, (yyvsp[-1].table)))))
MYSQL_YYABORT;
}
-#line 40843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41161 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1517: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ')' */
-#line 9833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1536: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ')' */
+#line 10020 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_setval(thd, (yyvsp[-3].table), (yyvsp[-1].longlong_number), 0, 1))))
MYSQL_YYABORT;
}
-#line 40852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41170 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1518: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ')' */
-#line 9838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1537: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ')' */
+#line 10025 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_setval(thd, (yyvsp[-5].table), (yyvsp[-3].longlong_number), 0, (yyvsp[-1].ulong_num)))))
MYSQL_YYABORT;
}
-#line 40861 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41179 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1519: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ',' ulonglong_num ')' */
-#line 9843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1538: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ',' ulonglong_num ')' */
+#line 10030 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_setval(thd, (yyvsp[-7].table), (yyvsp[-5].longlong_number), (yyvsp[-1].ulonglong_number), (yyvsp[-3].ulong_num)))))
MYSQL_YYABORT;
}
-#line 40870 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41188 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1522: /* primary_expr: '(' parenthesized_expr ')' */
-#line 9852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1541: /* primary_expr: '(' parenthesized_expr ')' */
+#line 10039 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[-1].item); }
-#line 40876 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1523: /* primary_expr: subquery */
-#line 9854 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1542: /* primary_expr: subquery */
+#line 10041 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->create_item_query_expression(thd, (yyvsp[0].select_lex)->master_unit())))
MYSQL_YYABORT;
}
-#line 40885 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41203 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1525: /* string_factor_expr: string_factor_expr COLLATE_SYM collation_name */
-#line 9863 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1544: /* string_factor_expr: string_factor_expr COLLATE_SYM collation_name */
+#line 10050 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= new (thd->mem_root)
Item_func_set_collation(thd, (yyvsp[-2].item), (yyvsp[0].Lex_extended_collation)))))
MYSQL_YYABORT;
}
-#line 40895 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41213 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1527: /* simple_expr: BINARY simple_expr */
-#line 9873 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1546: /* simple_expr: BINARY simple_expr */
+#line 10060 "/home/buildbot/git/sql/sql_yacc.yy"
{
Type_cast_attributes at(&my_charset_bin);
if (unlikely(!((yyval.item)= type_handler_long_blob.create_typecast_item(thd, (yyvsp[0].item), at))))
MYSQL_YYABORT;
}
-#line 40905 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1528: /* simple_expr: '+' simple_expr */
-#line 9879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1547: /* simple_expr: '+' simple_expr */
+#line 10066 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 40913 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41231 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1529: /* simple_expr: '-' simple_expr */
-#line 9883 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1548: /* simple_expr: '-' simple_expr */
+#line 10070 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item)->neg(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40923 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41241 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1530: /* simple_expr: '~' simple_expr */
-#line 9889 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1549: /* simple_expr: '~' simple_expr */
+#line 10076 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_neg(thd, (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41251 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1531: /* simple_expr: not2 simple_expr */
-#line 9895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1550: /* simple_expr: not2 simple_expr */
+#line 10082 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= negate_expression(thd, (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40943 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41261 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1533: /* mysql_concatenation_expr: mysql_concatenation_expr MYSQL_CONCAT_SYM simple_expr */
-#line 9905 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1552: /* mysql_concatenation_expr: mysql_concatenation_expr MYSQL_CONCAT_SYM simple_expr */
+#line 10092 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_concat(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1534: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ')' */
-#line 9914 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1553: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ')' */
+#line 10101 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_datetime_typecast(thd, (yyvsp[-1].item),
AUTO_SEC_PART_DIGITS);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40964 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1535: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ',' expr ')' */
-#line 9921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1554: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ',' expr ')' */
+#line 10108 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_timestamp(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1536: /* function_call_keyword: CHAR_SYM '(' expr_list ')' */
-#line 9935 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1555: /* function_call_keyword: CHAR_SYM '(' expr_list ')' */
+#line 10122 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_char(thd, *(yyvsp[-1].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40984 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1537: /* function_call_keyword: CHAR_SYM '(' expr_list USING charset_name ')' */
-#line 9941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1556: /* function_call_keyword: CHAR_SYM '(' expr_list USING charset_name ')' */
+#line 10128 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
(yyval.item)= new (thd->mem_root) Item_func_char(thd, *(yyvsp[-3].item_list), (yyvsp[-1].charset));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40994 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41314 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1538: /* function_call_keyword: CURRENT_USER optional_braces */
-#line 9947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1557: /* function_call_keyword: CURRENT_USER optional_braces */
+#line 10136 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_current_user(thd,
Lex->current_context());
@@ -41003,11 +41323,11 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query= 0;
}
-#line 41007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41327 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1539: /* function_call_keyword: CURRENT_ROLE optional_braces */
-#line 9956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1558: /* function_call_keyword: CURRENT_ROLE optional_braces */
+#line 10145 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_current_role(thd,
Lex->current_context());
@@ -41016,51 +41336,52 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query= 0;
}
-#line 41020 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1540: /* function_call_keyword: DATE_SYM '(' expr ')' */
-#line 9965 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1559: /* function_call_keyword: DATE_SYM '(' expr ')' */
+#line 10154 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_typecast(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
-#line 41030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41351 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1541: /* function_call_keyword: DAY_SYM '(' expr ')' */
-#line 9971 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1560: /* function_call_keyword: DAY_SYM '(' expr ')' */
+#line 10161 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_dayofmonth(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41040 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41361 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1542: /* function_call_keyword: HOUR_SYM '(' expr ')' */
-#line 9977 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1561: /* function_call_keyword: HOUR_SYM '(' expr ')' */
+#line 10167 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_hour(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41371 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1543: /* function_call_keyword: INSERT '(' expr ',' expr ',' expr ',' expr ')' */
-#line 9983 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1562: /* function_call_keyword: INSERT '(' expr ',' expr ',' expr ',' expr ')' */
+#line 10173 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_insert(thd, (yyvsp[-7].item), (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41381 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1544: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ')' */
-#line 9989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1563: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ')' */
+#line 10179 "/home/buildbot/git/sql/sql_yacc.yy"
{
List<Item> *list= new (thd->mem_root) List<Item>;
if (unlikely(list == NULL))
@@ -41075,11 +41396,11 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41079 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41400 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1545: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' */
-#line 10004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1564: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' */
+#line 10194 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyvsp[-1].item_list)->push_front((yyvsp[-5].item), thd->mem_root);
@@ -41090,61 +41411,62 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1546: /* function_call_keyword: LEFT '(' expr ',' expr ')' */
-#line 10015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1565: /* function_call_keyword: LEFT '(' expr ',' expr ')' */
+#line 10205 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_left(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41104 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41425 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1547: /* function_call_keyword: MINUTE_SYM '(' expr ')' */
-#line 10021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1566: /* function_call_keyword: MINUTE_SYM '(' expr ')' */
+#line 10211 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_minute(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41435 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1548: /* function_call_keyword: MONTH_SYM '(' expr ')' */
-#line 10027 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1567: /* function_call_keyword: MONTH_SYM '(' expr ')' */
+#line 10217 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_month(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
-#line 41124 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41446 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1549: /* function_call_keyword: RIGHT '(' expr ',' expr ')' */
-#line 10033 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1568: /* function_call_keyword: RIGHT '(' expr ',' expr ')' */
+#line 10224 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_right(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41134 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41456 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1550: /* function_call_keyword: SECOND_SYM '(' expr ')' */
-#line 10039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1569: /* function_call_keyword: SECOND_SYM '(' expr ')' */
+#line 10230 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_second(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41144 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1551: /* function_call_keyword: SQL_SYM PERCENT_ORACLE_SYM ROWCOUNT_SYM */
-#line 10045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1570: /* function_call_keyword: SQL_SYM PERCENT_ORACLE_SYM ROWCOUNT_SYM */
+#line 10236 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_oracle_sql_rowcount(thd);
if (unlikely((yyval.item) == NULL))
@@ -41152,40 +41474,40 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query= 0;
}
-#line 41156 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1552: /* function_call_keyword: TIME_SYM '(' expr ')' */
-#line 10053 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1571: /* function_call_keyword: TIME_SYM '(' expr ')' */
+#line 10244 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_time_typecast(thd, (yyvsp[-1].item),
AUTO_SEC_PART_DIGITS);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41167 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41489 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1553: /* function_call_keyword: function_call_keyword_timestamp */
-#line 10060 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1572: /* function_call_keyword: function_call_keyword_timestamp */
+#line 10251 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 41175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41497 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1554: /* function_call_keyword: TRIM '(' trim_operands ')' */
-#line 10064 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1573: /* function_call_keyword: TRIM '(' trim_operands ')' */
+#line 10255 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Schema::find_implied(thd)->
make_item_func_trim(thd, (yyvsp[-1].trim)))))
MYSQL_YYABORT;
}
-#line 41185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1555: /* function_call_keyword: USER_SYM '(' ')' */
-#line 10070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1574: /* function_call_keyword: USER_SYM '(' ')' */
+#line 10261 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_user(thd);
if (unlikely((yyval.item) == NULL))
@@ -41193,349 +41515,350 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query=0;
}
-#line 41197 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41519 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1556: /* function_call_keyword: YEAR_SYM '(' expr ')' */
-#line 10078 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1575: /* function_call_keyword: YEAR_SYM '(' expr ')' */
+#line 10269 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_year(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
-#line 41207 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41530 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1559: /* substring_operands_regular: expr ',' expr ',' expr */
-#line 10092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1578: /* substring_operands_regular: expr ',' expr ',' expr */
+#line 10284 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item));
}
-#line 41215 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1560: /* substring_operands_regular: expr ',' expr */
-#line 10096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1579: /* substring_operands_regular: expr ',' expr */
+#line 10288 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-2].item), (yyvsp[0].item));
}
-#line 41223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41546 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1561: /* substring_operands_special: expr FROM expr FOR_SYM expr */
-#line 10103 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1580: /* substring_operands_special: expr FROM expr FOR_SYM expr */
+#line 10295 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item));
}
-#line 41231 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1562: /* substring_operands_special: expr FROM expr */
-#line 10107 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1581: /* substring_operands_special: expr FROM expr */
+#line 10299 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-2].item), (yyvsp[0].item));
}
-#line 41239 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41562 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1563: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' expr ')' */
-#line 10127 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1582: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' expr ')' */
+#line 10319 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-3].item), (yyvsp[-1].item),
INTERVAL_DAY, 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41573 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1564: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10134 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1583: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10326 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41583 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1565: /* function_call_nonkeyword: CURDATE optional_braces */
-#line 10140 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1584: /* function_call_nonkeyword: CURDATE optional_braces */
+#line 10332 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curdate_local(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 41271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41594 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1566: /* function_call_nonkeyword: CURTIME opt_time_precision */
-#line 10147 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1585: /* function_call_nonkeyword: CURTIME opt_time_precision */
+#line 10339 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curtime_local(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 41282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41605 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1567: /* function_call_nonkeyword: DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10154 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1586: /* function_call_nonkeyword: DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10346 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41615 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1568: /* function_call_nonkeyword: DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1587: /* function_call_nonkeyword: DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10352 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41625 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1569: /* function_call_nonkeyword: EXTRACT_SYM '(' interval FROM expr ')' */
-#line 10166 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1588: /* function_call_nonkeyword: EXTRACT_SYM '(' interval FROM expr ')' */
+#line 10358 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)=new (thd->mem_root) Item_extract(thd, (yyvsp[-3].interval), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41312 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1570: /* function_call_nonkeyword: GET_FORMAT '(' date_time_type ',' expr ')' */
-#line 10172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1589: /* function_call_nonkeyword: GET_FORMAT '(' date_time_type ',' expr ')' */
+#line 10364 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_get_format(thd, (yyvsp[-3].date_time_type), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41645 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1571: /* function_call_nonkeyword: NOW_SYM opt_time_precision */
-#line 10178 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1590: /* function_call_nonkeyword: NOW_SYM opt_time_precision */
+#line 10370 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_now_local(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 41333 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41656 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1572: /* function_call_nonkeyword: POSITION_SYM '(' bit_expr IN_SYM expr ')' */
-#line 10185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1591: /* function_call_nonkeyword: POSITION_SYM '(' bit_expr IN_SYM expr ')' */
+#line 10377 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_locate(thd, (yyvsp[-1].item), (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1573: /* function_call_nonkeyword: ROWNUM_SYM '(' ')' */
-#line 10196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1592: /* function_call_nonkeyword: ROWNUM_SYM '(' ')' */
+#line 10388 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_rownum(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41676 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1574: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' expr ')' */
-#line 10202 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1593: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' expr ')' */
+#line 10394 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-3].item), (yyvsp[-1].item),
INTERVAL_DAY, 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41687 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1575: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1594: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10401 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41374 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41697 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1576: /* function_call_nonkeyword: SUBSTRING '(' substring_operands ')' */
-#line 10215 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1595: /* function_call_nonkeyword: SUBSTRING '(' substring_operands ')' */
+#line 10407 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Schema::find_implied(thd)->
make_item_func_substr(thd, (yyvsp[-1].substring_spec)))))
MYSQL_YYABORT;
}
-#line 41384 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1577: /* function_call_nonkeyword: SYSDATE '(' ')' */
-#line 10228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1596: /* function_call_nonkeyword: SYSDATE '(' ')' */
+#line 10420 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_sysdate(thd, 0))))
MYSQL_YYABORT;
}
-#line 41393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41716 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1578: /* function_call_nonkeyword: SYSDATE '(' real_ulong_num ')' */
-#line 10233 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1597: /* function_call_nonkeyword: SYSDATE '(' real_ulong_num ')' */
+#line 10425 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_sysdate(thd, (uint) (yyvsp[-1].ulong_num)))))
MYSQL_YYABORT;
}
-#line 41402 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1579: /* function_call_nonkeyword: TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' */
-#line 10238 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1598: /* function_call_nonkeyword: TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' */
+#line 10430 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-1].item), (yyvsp[-3].item), (yyvsp[-5].interval_time_st), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41735 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1580: /* function_call_nonkeyword: TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' */
-#line 10244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1599: /* function_call_nonkeyword: TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' */
+#line 10436 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_timestamp_diff(thd, (yyvsp[-3].item), (yyvsp[-1].item), (yyvsp[-5].interval_time_st));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1581: /* function_call_nonkeyword: TRIM_ORACLE '(' trim_operands ')' */
-#line 10250 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1600: /* function_call_nonkeyword: TRIM_ORACLE '(' trim_operands ')' */
+#line 10442 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].trim).make_item_func_trim_oracle(thd))))
MYSQL_YYABORT;
}
-#line 41431 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41754 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1582: /* function_call_nonkeyword: UTC_DATE_SYM optional_braces */
-#line 10255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1601: /* function_call_nonkeyword: UTC_DATE_SYM optional_braces */
+#line 10447 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curdate_utc(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 41442 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41765 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1583: /* function_call_nonkeyword: UTC_TIME_SYM opt_time_precision */
-#line 10262 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1602: /* function_call_nonkeyword: UTC_TIME_SYM opt_time_precision */
+#line 10454 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curtime_utc(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 41453 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41776 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1584: /* function_call_nonkeyword: UTC_TIMESTAMP_SYM opt_time_precision */
-#line 10269 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1603: /* function_call_nonkeyword: UTC_TIMESTAMP_SYM opt_time_precision */
+#line 10461 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_now_utc(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 41464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1585: /* function_call_nonkeyword: COLUMN_ADD_SYM '(' expr ',' dyncall_create_list ')' */
-#line 10277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1604: /* function_call_nonkeyword: COLUMN_ADD_SYM '(' expr ',' dyncall_create_list ')' */
+#line 10469 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_add(thd, (yyvsp[-3].item), *(yyvsp[-1].dyncol_def_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41474 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1586: /* function_call_nonkeyword: COLUMN_DELETE_SYM '(' expr ',' expr_list ')' */
-#line 10284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1605: /* function_call_nonkeyword: COLUMN_DELETE_SYM '(' expr ',' expr_list ')' */
+#line 10476 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_delete(thd, (yyvsp[-3].item), *(yyvsp[-1].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41484 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1587: /* function_call_nonkeyword: COLUMN_CREATE_SYM '(' dyncall_create_list ')' */
-#line 10291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1606: /* function_call_nonkeyword: COLUMN_CREATE_SYM '(' dyncall_create_list ')' */
+#line 10483 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_create(thd, *(yyvsp[-1].dyncol_def_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1588: /* function_call_nonkeyword: COLUMN_GET_SYM '(' expr ',' expr AS cast_type ')' */
-#line 10298 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1607: /* function_call_nonkeyword: COLUMN_GET_SYM '(' expr ',' expr AS cast_type ')' */
+#line 10490 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_get(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].Lex_cast_type).type_handler(),
(yyvsp[-1].Lex_cast_type), (yyvsp[-1].Lex_cast_type).charset());
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41828 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1589: /* function_call_conflict: ASCII_SYM '(' expr ')' */
-#line 10313 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1608: /* function_call_conflict: ASCII_SYM '(' expr ')' */
+#line 10505 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_ascii(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41838 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1590: /* function_call_conflict: CHARSET '(' expr ')' */
-#line 10319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1609: /* function_call_conflict: CHARSET '(' expr ')' */
+#line 10511 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_charset(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41525 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41848 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1591: /* function_call_conflict: IF_SYM '(' expr ',' expr ',' expr ')' */
-#line 10325 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1610: /* function_call_conflict: IF_SYM '(' expr ',' expr ',' expr ')' */
+#line 10517 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_if(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41535 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41858 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1592: /* function_call_conflict: LAST_VALUE '(' expr ')' */
-#line 10334 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1611: /* function_call_conflict: LAST_VALUE '(' expr ')' */
+#line 10526 "/home/buildbot/git/sql/sql_yacc.yy"
{
List<Item> *list= new (thd->mem_root) List<Item>;
if (unlikely(list == NULL))
@@ -41546,32 +41869,32 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41873 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1593: /* function_call_conflict: LAST_VALUE '(' expr_list ',' expr ')' */
-#line 10345 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1612: /* function_call_conflict: LAST_VALUE '(' expr_list ',' expr ')' */
+#line 10537 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-3].item_list)->push_back((yyvsp[-1].item), thd->mem_root);
(yyval.item)= new (thd->mem_root) Item_func_last_value(thd, *(yyvsp[-3].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41561 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41884 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1594: /* function_call_conflict: MOD_SYM '(' expr ',' expr ')' */
-#line 10352 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1613: /* function_call_conflict: MOD_SYM '(' expr ',' expr ')' */
+#line 10544 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41571 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41894 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1595: /* function_call_conflict: PASSWORD_SYM '(' expr ')' */
-#line 10358 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1614: /* function_call_conflict: PASSWORD_SYM '(' expr ')' */
+#line 10550 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item* i1;
i1= new (thd->mem_root) Item_func_password(thd, (yyvsp[-1].item));
@@ -41579,51 +41902,51 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= i1;
}
-#line 41583 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41906 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1596: /* function_call_conflict: REPEAT_SYM '(' expr ',' expr ')' */
-#line 10366 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1615: /* function_call_conflict: REPEAT_SYM '(' expr ',' expr ')' */
+#line 10558 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_repeat(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41593 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41916 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1597: /* function_call_conflict: REPLACE '(' expr ',' expr ',' expr ')' */
-#line 10372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1616: /* function_call_conflict: REPLACE '(' expr ',' expr ',' expr ')' */
+#line 10564 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Schema::find_implied(thd)->
make_item_func_replace(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)))))
MYSQL_YYABORT;
}
-#line 41603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41926 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1598: /* function_call_conflict: TRUNCATE_SYM '(' expr ',' expr ')' */
-#line 10378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1617: /* function_call_conflict: TRUNCATE_SYM '(' expr ',' expr ')' */
+#line 10570 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_round(thd, (yyvsp[-3].item), (yyvsp[-1].item), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41613 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41936 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1599: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr opt_ws_levels ')' */
-#line 10384 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1618: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr opt_ws_levels ')' */
+#line 10576 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-2].item), 0, 0, (yyvsp[-1].ulong_num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41623 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1600: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS CHAR_SYM ws_nweights opt_ws_levels ')' */
-#line 10390 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1619: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS CHAR_SYM ws_nweights opt_ws_levels ')' */
+#line 10582 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root)
Item_func_weight_string(thd, (yyvsp[-5].item), 0, (yyvsp[-2].ulong_num),
@@ -41631,11 +41954,11 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1601: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS BINARY ws_nweights ')' */
-#line 10398 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1620: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS BINARY ws_nweights ')' */
+#line 10590 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_char_typecast(thd, (yyvsp[-4].item), (yyvsp[-1].ulong_num),
&my_charset_bin);
@@ -41647,22 +41970,22 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41651 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1602: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr ',' ulong_num ',' ulong_num ',' ulong_num ')' */
-#line 10410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1621: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr ',' ulong_num ',' ulong_num ',' ulong_num ')' */
+#line 10602 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-7].item), (yyvsp[-5].ulong_num), (yyvsp[-3].ulong_num),
(yyvsp[-1].ulong_num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41662 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 41985 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1603: /* @142: %empty */
-#line 10429 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1622: /* @142: %empty */
+#line 10621 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef HAVE_DLOPEN
udf_func *udf= 0;
@@ -41681,11 +42004,11 @@ yyreduce:
(yyval.udf)= udf;
#endif
}
-#line 41685 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42008 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1604: /* function_call_generic: ident_func '(' @142 opt_udf_expr_list ')' */
-#line 10448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1623: /* function_call_generic: ident_func '(' @142 opt_udf_expr_list ')' */
+#line 10640 "/home/buildbot/git/sql/sql_yacc.yy"
{
const Type_handler *h;
Create_func *builder;
@@ -41742,172 +42065,172 @@ yyreduce:
if (unlikely(! ((yyval.item)= item)))
MYSQL_YYABORT;
}
-#line 41746 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1605: /* function_call_generic: CONTAINS_SYM '(' opt_expr_list ')' */
-#line 10505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1624: /* function_call_generic: CONTAINS_SYM '(' opt_expr_list ')' */
+#line 10697 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->make_item_func_call_native_or_parse_error(thd,
(yyvsp[-3].kwd), (yyvsp[-1].item_list))))
MYSQL_YYABORT;
}
-#line 41756 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42079 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1606: /* function_call_generic: OVERLAPS_SYM '(' opt_expr_list ')' */
-#line 10511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1625: /* function_call_generic: OVERLAPS_SYM '(' opt_expr_list ')' */
+#line 10703 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->make_item_func_call_native_or_parse_error(thd,
(yyvsp[-3].kwd), (yyvsp[-1].item_list))))
MYSQL_YYABORT;
}
-#line 41766 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42089 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1607: /* function_call_generic: WITHIN '(' opt_expr_list ')' */
-#line 10517 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1626: /* function_call_generic: WITHIN '(' opt_expr_list ')' */
+#line 10709 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->make_item_func_call_native_or_parse_error(thd,
(yyvsp[-3].kwd), (yyvsp[-1].item_list))))
MYSQL_YYABORT;
}
-#line 41776 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1608: /* function_call_generic: ident_cli '.' ident_cli '(' opt_expr_list ')' */
-#line 10523 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1627: /* function_call_generic: ident_cli '.' ident_cli '(' opt_expr_list ')' */
+#line 10715 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_call_generic(thd, &(yyvsp[-5].ident_cli), &(yyvsp[-3].ident_cli), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42108 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1609: /* function_call_generic: ident_cli '.' ident_cli '.' ident_cli '(' opt_expr_list ')' */
-#line 10528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1628: /* function_call_generic: ident_cli '.' ident_cli '.' ident_cli '(' opt_expr_list ')' */
+#line 10720 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_call_generic(thd, &(yyvsp[-7].ident_cli), &(yyvsp[-5].ident_cli), &(yyvsp[-3].ident_cli), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1610: /* function_call_generic: ident_cli '.' REPLACE '(' opt_expr_list ')' */
-#line 10533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1629: /* function_call_generic: ident_cli '.' REPLACE '(' opt_expr_list ')' */
+#line 10725 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_replace(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42126 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1611: /* function_call_generic: ident_cli '.' SUBSTRING '(' opt_expr_list ')' */
-#line 10538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1630: /* function_call_generic: ident_cli '.' SUBSTRING '(' opt_expr_list ')' */
+#line 10730 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_substr(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41812 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1612: /* function_call_generic: ident_cli '.' SUBSTRING '(' substring_operands_special ')' */
-#line 10543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1631: /* function_call_generic: ident_cli '.' SUBSTRING '(' substring_operands_special ')' */
+#line 10735 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_substr(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].substring_spec)))))
MYSQL_YYABORT;
}
-#line 41821 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42144 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1613: /* function_call_generic: ident_cli '.' TRIM '(' opt_expr_list ')' */
-#line 10548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1632: /* function_call_generic: ident_cli '.' TRIM '(' opt_expr_list ')' */
+#line 10740 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_trim(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42153 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1614: /* function_call_generic: ident_cli '.' TRIM '(' trim_operands_special ')' */
-#line 10553 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1633: /* function_call_generic: ident_cli '.' TRIM '(' trim_operands_special ')' */
+#line 10745 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_trim(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].trim)))))
MYSQL_YYABORT;
}
-#line 41839 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42162 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1615: /* fulltext_options: opt_natural_language_mode opt_query_expansion */
-#line 10573 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1634: /* fulltext_options: opt_natural_language_mode opt_query_expansion */
+#line 10765 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].num) | (yyvsp[0].num); }
-#line 41845 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42168 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1616: /* fulltext_options: IN_SYM BOOLEAN_SYM MODE_SYM */
-#line 10575 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1635: /* fulltext_options: IN_SYM BOOLEAN_SYM MODE_SYM */
+#line 10767 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_BOOL; }
-#line 41851 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42174 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1617: /* opt_natural_language_mode: %empty */
-#line 10579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1636: /* opt_natural_language_mode: %empty */
+#line 10771 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_NL; }
-#line 41857 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42180 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1618: /* opt_natural_language_mode: IN_SYM NATURAL LANGUAGE_SYM MODE_SYM */
-#line 10580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1637: /* opt_natural_language_mode: IN_SYM NATURAL LANGUAGE_SYM MODE_SYM */
+#line 10772 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_NL; }
-#line 41863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42186 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1619: /* opt_query_expansion: %empty */
-#line 10584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1638: /* opt_query_expansion: %empty */
+#line 10776 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 41869 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1620: /* opt_query_expansion: WITH QUERY_SYM EXPANSION_SYM */
-#line 10585 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1639: /* opt_query_expansion: WITH QUERY_SYM EXPANSION_SYM */
+#line 10777 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_EXPAND; }
-#line 41875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42198 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1621: /* opt_udf_expr_list: %empty */
-#line 10589 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1640: /* opt_udf_expr_list: %empty */
+#line 10781 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= NULL; }
-#line 41881 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42204 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1622: /* opt_udf_expr_list: udf_expr_list */
-#line 10590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1641: /* opt_udf_expr_list: udf_expr_list */
+#line 10782 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[0].item_list); }
-#line 41887 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42210 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1623: /* udf_expr_list: udf_expr */
-#line 10595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1642: /* udf_expr_list: udf_expr */
+#line 10787 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= new (thd->mem_root) List<Item>;
if (unlikely((yyval.item_list) == NULL))
MYSQL_YYABORT;
(yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root);
}
-#line 41898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42221 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1624: /* udf_expr_list: udf_expr_list ',' udf_expr */
-#line 10602 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1643: /* udf_expr_list: udf_expr_list ',' udf_expr */
+#line 10794 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root);
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 41907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42230 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1625: /* udf_expr: remember_name expr remember_end select_alias */
-#line 10610 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1644: /* udf_expr: remember_name expr remember_end select_alias */
+#line 10802 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Use Item::name as a storage for the attribute value of user
@@ -41931,61 +42254,61 @@ yyreduce:
(yyvsp[-2].item)->set_name(thd, (yyvsp[-3].simple_string), (uint) ((yyvsp[-1].simple_string) - (yyvsp[-3].simple_string)), thd->charset());
(yyval.item)= (yyvsp[-2].item);
}
-#line 41935 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42258 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1626: /* sum_expr: AVG_SYM '(' in_sum_expr ')' */
-#line 10637 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1645: /* sum_expr: AVG_SYM '(' in_sum_expr ')' */
+#line 10829 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_avg(thd, (yyvsp[-1].item), FALSE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1627: /* sum_expr: AVG_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10643 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1646: /* sum_expr: AVG_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10835 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_avg(thd, (yyvsp[-1].item), TRUE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41955 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1628: /* sum_expr: BIT_AND '(' in_sum_expr ')' */
-#line 10649 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1647: /* sum_expr: BIT_AND '(' in_sum_expr ')' */
+#line 10841 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_and(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42288 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1629: /* sum_expr: BIT_OR '(' in_sum_expr ')' */
-#line 10655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1648: /* sum_expr: BIT_OR '(' in_sum_expr ')' */
+#line 10847 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_or(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41975 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1630: /* sum_expr: BIT_XOR '(' in_sum_expr ')' */
-#line 10661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1649: /* sum_expr: BIT_XOR '(' in_sum_expr ')' */
+#line 10853 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_xor(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41985 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1631: /* sum_expr: COUNT_SYM '(' opt_all '*' ')' */
-#line 10667 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1650: /* sum_expr: COUNT_SYM '(' opt_all '*' ')' */
+#line 10859 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_int(thd, (int32) 0L, 1);
if (unlikely(item == NULL))
@@ -41994,149 +42317,149 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42321 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1632: /* sum_expr: COUNT_SYM '(' in_sum_expr ')' */
-#line 10676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1651: /* sum_expr: COUNT_SYM '(' in_sum_expr ')' */
+#line 10868 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_count(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42008 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42331 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1633: /* $@143: %empty */
-#line 10682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1652: /* $@143: %empty */
+#line 10874 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 42014 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42337 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1634: /* $@144: %empty */
-#line 10684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1653: /* $@144: %empty */
+#line 10876 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr--; }
-#line 42020 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1635: /* sum_expr: COUNT_SYM '(' DISTINCT $@143 expr_list $@144 ')' */
-#line 10686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1654: /* sum_expr: COUNT_SYM '(' DISTINCT $@143 expr_list $@144 ')' */
+#line 10878 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_count(thd, *(yyvsp[-2].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1636: /* sum_expr: MIN_SYM '(' in_sum_expr ')' */
-#line 10692 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1655: /* sum_expr: MIN_SYM '(' in_sum_expr ')' */
+#line 10884 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_min(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42040 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42363 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1637: /* sum_expr: MIN_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10703 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1656: /* sum_expr: MIN_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10895 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_min(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1638: /* sum_expr: MAX_SYM '(' in_sum_expr ')' */
-#line 10709 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1657: /* sum_expr: MAX_SYM '(' in_sum_expr ')' */
+#line 10901 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_max(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42383 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1639: /* sum_expr: MAX_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10715 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1658: /* sum_expr: MAX_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10907 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_max(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42070 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1640: /* sum_expr: STD_SYM '(' in_sum_expr ')' */
-#line 10721 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1659: /* sum_expr: STD_SYM '(' in_sum_expr ')' */
+#line 10913 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_std(thd, (yyvsp[-1].item), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1641: /* sum_expr: VARIANCE_SYM '(' in_sum_expr ')' */
-#line 10727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1660: /* sum_expr: VARIANCE_SYM '(' in_sum_expr ')' */
+#line 10919 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_variance(thd, (yyvsp[-1].item), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42090 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42413 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1642: /* sum_expr: STDDEV_SAMP_SYM '(' in_sum_expr ')' */
-#line 10733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1661: /* sum_expr: STDDEV_SAMP_SYM '(' in_sum_expr ')' */
+#line 10925 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_std(thd, (yyvsp[-1].item), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42100 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42423 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1643: /* sum_expr: VAR_SAMP_SYM '(' in_sum_expr ')' */
-#line 10739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1662: /* sum_expr: VAR_SAMP_SYM '(' in_sum_expr ')' */
+#line 10931 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_variance(thd, (yyvsp[-1].item), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1644: /* sum_expr: SUM_SYM '(' in_sum_expr ')' */
-#line 10745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1663: /* sum_expr: SUM_SYM '(' in_sum_expr ')' */
+#line 10937 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_sum(thd, (yyvsp[-1].item), FALSE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42120 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1645: /* sum_expr: SUM_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1664: /* sum_expr: SUM_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10943 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_sum(thd, (yyvsp[-1].item), TRUE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42130 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42453 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1646: /* $@145: %empty */
-#line 10757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1665: /* $@145: %empty */
+#line 10949 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 42136 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42459 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1647: /* sum_expr: GROUP_CONCAT_SYM '(' opt_distinct $@145 expr_list opt_gorder_clause opt_gconcat_separator opt_glimit_clause ')' */
-#line 10761 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1666: /* sum_expr: GROUP_CONCAT_SYM '(' opt_distinct $@145 expr_list opt_gorder_clause opt_gconcat_separator opt_glimit_clause ')' */
+#line 10953 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->in_sum_expr--;
@@ -42152,17 +42475,17 @@ yyreduce:
(yyvsp[-4].item_list)->empty();
sel->gorder_list.empty();
}
-#line 42156 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42479 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1648: /* $@146: %empty */
-#line 10777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1667: /* $@146: %empty */
+#line 10969 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 42162 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42485 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1649: /* sum_expr: JSON_ARRAYAGG_SYM '(' opt_distinct $@146 expr_list opt_gorder_clause opt_glimit_clause ')' */
-#line 10780 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1668: /* sum_expr: JSON_ARRAYAGG_SYM '(' opt_distinct $@146 expr_list opt_gorder_clause opt_glimit_clause ')' */
+#line 10972 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
List<Item> *args= (yyvsp[-3].item_list);
@@ -42189,17 +42512,17 @@ yyreduce:
(yyvsp[-3].item_list)->empty();
sel->gorder_list.empty();
}
-#line 42193 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42516 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1650: /* $@147: %empty */
-#line 10807 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1669: /* $@147: %empty */
+#line 10999 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 42199 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1651: /* sum_expr: JSON_OBJECTAGG_SYM '(' $@147 expr ',' expr ')' */
-#line 10809 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1670: /* sum_expr: JSON_OBJECTAGG_SYM '(' $@147 expr ',' expr ')' */
+#line 11001 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->in_sum_expr--;
@@ -42208,11 +42531,11 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42535 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1652: /* window_func_expr: window_func OVER_SYM window_name */
-#line 10821 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1671: /* window_func_expr: window_func OVER_SYM window_name */
+#line 11013 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_window_func(thd, (Item_sum *) (yyvsp[-2].item), (yyvsp[0].lex_str_ptr));
if (unlikely((yyval.item) == NULL))
@@ -42220,11 +42543,11 @@ yyreduce:
if (unlikely(Select->add_window_func((Item_window_func *) (yyval.item))))
MYSQL_YYABORT;
}
-#line 42224 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1653: /* window_func_expr: window_func OVER_SYM window_spec */
-#line 10830 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1672: /* window_func_expr: window_func OVER_SYM window_spec */
+#line 11022 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(Select->add_window_spec(thd, lex->win_ref,
@@ -42239,11 +42562,11 @@ yyreduce:
if (unlikely(Select->add_window_func((Item_window_func *) (yyval.item))))
MYSQL_YYABORT;
}
-#line 42243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1656: /* window_func: function_call_generic */
-#line 10852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1675: /* window_func: function_call_generic */
+#line 11044 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item* item = (Item*)(yyvsp[0].item);
/* Only UDF aggregate here possible */
@@ -42255,101 +42578,101 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 42259 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42582 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1657: /* simple_window_func: ROW_NUMBER_SYM '(' ')' */
-#line 10867 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1676: /* simple_window_func: ROW_NUMBER_SYM '(' ')' */
+#line 11059 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_row_number(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42269 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42592 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1658: /* simple_window_func: RANK_SYM '(' ')' */
-#line 10874 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1677: /* simple_window_func: RANK_SYM '(' ')' */
+#line 11066 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_rank(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42279 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42602 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1659: /* simple_window_func: DENSE_RANK_SYM '(' ')' */
-#line 10881 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1678: /* simple_window_func: DENSE_RANK_SYM '(' ')' */
+#line 11073 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_dense_rank(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1660: /* simple_window_func: PERCENT_RANK_SYM '(' ')' */
-#line 10888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1679: /* simple_window_func: PERCENT_RANK_SYM '(' ')' */
+#line 11080 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_percent_rank(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42299 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1661: /* simple_window_func: CUME_DIST_SYM '(' ')' */
-#line 10895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1680: /* simple_window_func: CUME_DIST_SYM '(' ')' */
+#line 11087 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_cume_dist(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42309 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1662: /* simple_window_func: NTILE_SYM '(' expr ')' */
-#line 10902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1681: /* simple_window_func: NTILE_SYM '(' expr ')' */
+#line 11094 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_ntile(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42319 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42642 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1663: /* simple_window_func: FIRST_VALUE_SYM '(' expr ')' */
-#line 10909 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1682: /* simple_window_func: FIRST_VALUE_SYM '(' expr ')' */
+#line 11101 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_first_value(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42652 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1664: /* simple_window_func: LAST_VALUE '(' expr ')' */
-#line 10916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1683: /* simple_window_func: LAST_VALUE '(' expr ')' */
+#line 11108 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_last_value(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42339 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42662 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1665: /* simple_window_func: NTH_VALUE_SYM '(' expr ',' expr ')' */
-#line 10923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1684: /* simple_window_func: NTH_VALUE_SYM '(' expr ',' expr ')' */
+#line 11115 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_nth_value(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1666: /* simple_window_func: LEAD_SYM '(' expr ')' */
-#line 10930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1685: /* simple_window_func: LEAD_SYM '(' expr ')' */
+#line 11122 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* No second argument defaults to 1. */
Item* item_offset= new (thd->mem_root) Item_uint(thd, 1);
@@ -42359,21 +42682,21 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42363 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42686 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1667: /* simple_window_func: LEAD_SYM '(' expr ',' expr ')' */
-#line 10941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1686: /* simple_window_func: LEAD_SYM '(' expr ',' expr ')' */
+#line 11133 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_lead(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1668: /* simple_window_func: LAG_SYM '(' expr ')' */
-#line 10948 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1687: /* simple_window_func: LAG_SYM '(' expr ')' */
+#line 11140 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* No second argument defaults to 1. */
Item* item_offset= new (thd->mem_root) Item_uint(thd, 1);
@@ -42383,21 +42706,21 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42710 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1669: /* simple_window_func: LAG_SYM '(' expr ',' expr ')' */
-#line 10959 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1688: /* simple_window_func: LAG_SYM '(' expr ',' expr ')' */
+#line 11151 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_lag(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42397 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1670: /* inverse_distribution_function: percentile_function OVER_SYM '(' opt_window_partition_clause ')' */
-#line 10971 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1689: /* inverse_distribution_function: percentile_function OVER_SYM '(' opt_window_partition_clause ')' */
+#line 11163 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(Select->add_window_spec(thd, lex->win_ref,
@@ -42412,25 +42735,25 @@ yyreduce:
if (unlikely(Select->add_window_func((Item_window_func *) (yyval.item))))
MYSQL_YYABORT;
}
-#line 42416 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42739 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1671: /* $@148: %empty */
-#line 10989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1690: /* $@148: %empty */
+#line 11181 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->prepare_add_window_spec(thd); }
-#line 42422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1672: /* percentile_function: inverse_distribution_function_def WITHIN GROUP_SYM '(' $@148 order_by_single_element_list ')' */
-#line 10991 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1691: /* percentile_function: inverse_distribution_function_def WITHIN GROUP_SYM '(' $@148 order_by_single_element_list ')' */
+#line 11183 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[-6].item);
}
-#line 42430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1673: /* percentile_function: MEDIAN_SYM '(' expr ')' */
-#line 10995 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1692: /* percentile_function: MEDIAN_SYM '(' expr ')' */
+#line 11187 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *args= new (thd->mem_root) Item_decimal(thd, "0.5", 3,
thd->charset());
@@ -42444,67 +42767,67 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42448 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42771 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1674: /* inverse_distribution_function_def: PERCENTILE_CONT_SYM '(' expr ')' */
-#line 11012 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1693: /* inverse_distribution_function_def: PERCENTILE_CONT_SYM '(' expr ')' */
+#line 11204 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_percentile_cont(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42458 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1675: /* inverse_distribution_function_def: PERCENTILE_DISC_SYM '(' expr ')' */
-#line 11018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1694: /* inverse_distribution_function_def: PERCENTILE_DISC_SYM '(' expr ')' */
+#line 11210 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_percentile_disc(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 42468 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1676: /* order_by_single_element_list: ORDER_SYM BY order_ident order_dir */
-#line 11027 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1695: /* order_by_single_element_list: ORDER_SYM BY order_ident order_dir */
+#line 11219 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_order_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 42477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1677: /* window_name: ident */
-#line 11036 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1696: /* window_name: ident */
+#line 11228 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str_ptr)= (LEX_CSTRING *) thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING));
if (unlikely((yyval.lex_str_ptr) == NULL))
MYSQL_YYABORT;
}
-#line 42487 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1678: /* $@149: %empty */
-#line 11045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1697: /* $@149: %empty */
+#line 11237 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(! Lex->parsing_options.allows_variable))
my_yyabort_error((ER_VIEW_SELECT_VARIABLE, MYF(0)));
}
-#line 42496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42819 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1679: /* variable: '@' $@149 variable_aux */
-#line 11050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1698: /* variable: '@' $@149 variable_aux */
+#line 11242 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 42504 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1680: /* variable_aux: ident_or_text SET_VAR expr */
-#line 11057 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1699: /* variable_aux: ident_or_text SET_VAR expr */
+#line 11249 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_func_set_user_var *item;
if (!(yyvsp[-2].lex_str).length)
@@ -42519,11 +42842,11 @@ yyreduce:
lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
lex->set_var_list.push_back(item, thd->mem_root);
}
-#line 42523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1681: /* variable_aux: ident_or_text */
-#line 11072 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1700: /* variable_aux: ident_or_text */
+#line 11264 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -42536,103 +42859,103 @@ yyreduce:
LEX *lex= Lex;
lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
}
-#line 42540 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1682: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name */
-#line 11085 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1701: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name */
+#line 11277 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_sysvar(thd, (yyvsp[-1].var_type), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 42549 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1683: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name '.' ident */
-#line 11090 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1702: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name '.' ident */
+#line 11282 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_sysvar(thd, (yyvsp[-3].var_type), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 42558 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42881 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1684: /* opt_distinct: %empty */
-#line 11097 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1703: /* opt_distinct: %empty */
+#line 11289 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 42564 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42887 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1685: /* opt_distinct: DISTINCT */
-#line 11098 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1704: /* opt_distinct: DISTINCT */
+#line 11290 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 42570 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42893 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1686: /* opt_gconcat_separator: %empty */
-#line 11103 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1705: /* opt_gconcat_separator: %empty */
+#line 11295 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.string)= new (thd->mem_root) String(",", 1, &my_charset_latin1);
if (unlikely((yyval.string) == NULL))
MYSQL_YYABORT;
}
-#line 42580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42903 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1687: /* opt_gconcat_separator: SEPARATOR_SYM text_string */
-#line 11108 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1706: /* opt_gconcat_separator: SEPARATOR_SYM text_string */
+#line 11300 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.string) = (yyvsp[0].string); }
-#line 42586 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1690: /* gorder_list: gorder_list ',' order_ident order_dir */
-#line 11118 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1709: /* gorder_list: gorder_list ',' order_ident order_dir */
+#line 11310 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_gorder_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 42595 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42918 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1691: /* gorder_list: order_ident order_dir */
-#line 11123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1710: /* gorder_list: order_ident order_dir */
+#line 11315 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_gorder_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 42604 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42927 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1692: /* opt_glimit_clause: %empty */
-#line 11130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1711: /* opt_glimit_clause: %empty */
+#line 11322 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 42610 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1693: /* opt_glimit_clause: glimit_clause */
-#line 11131 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1712: /* opt_glimit_clause: glimit_clause */
+#line 11323 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 42616 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1694: /* glimit_clause: LIMIT glimit_options */
-#line 11137 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1713: /* glimit_clause: LIMIT glimit_options */
+#line 11329 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 42624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42947 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1695: /* glimit_options: limit_options */
-#line 11144 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1714: /* glimit_options: limit_options */
+#line 11336 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->limit_params= (yyvsp[0].select_limit);
}
-#line 42632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42955 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1696: /* $@150: %empty */
-#line 11153 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1715: /* $@150: %empty */
+#line 11345 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->current_select->inc_in_sum_expr()))
@@ -42641,221 +42964,224 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 42645 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1697: /* in_sum_expr: opt_all $@150 expr */
-#line 11162 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1716: /* in_sum_expr: opt_all $@150 expr */
+#line 11354 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->in_sum_expr--;
(yyval.item)= (yyvsp[0].item);
}
-#line 42654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42977 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1698: /* cast_type: BINARY opt_field_length */
-#line 11170 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1717: /* cast_type: BINARY opt_field_length */
+#line 11362 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[0].Lex_length_and_dec), &my_charset_bin); }
-#line 42660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1699: /* cast_type: CHAR_SYM opt_field_length opt_binary */
-#line 11172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1718: /* cast_type: CHAR_SYM opt_field_length opt_binary */
+#line 11364 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
+ if ((yyval.Lex_cast_type).set(&type_handler_long_blob,
+ (yyvsp[-1].Lex_length_and_dec), thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 42670 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 42994 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1700: /* cast_type: VARCHAR field_length opt_binary */
-#line 11178 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1719: /* cast_type: VARCHAR field_length opt_binary */
+#line 11371 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
+ if ((yyval.Lex_cast_type).set(&type_handler_long_blob,
+ (yyvsp[-1].Lex_length_and_dec), thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 42680 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43005 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1701: /* cast_type: VARCHAR2_ORACLE_SYM field_length opt_binary */
-#line 11184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1720: /* cast_type: VARCHAR2_ORACLE_SYM field_length opt_binary */
+#line 11378 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
+ if ((yyval.Lex_cast_type).set(&type_handler_long_blob,
+ (yyvsp[-1].Lex_length_and_dec), thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 42690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43016 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1702: /* cast_type: NCHAR_SYM opt_field_length */
-#line 11190 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1721: /* cast_type: NCHAR_SYM opt_field_length */
+#line 11385 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[0].Lex_length_and_dec), national_charset_info);
}
-#line 42698 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1703: /* cast_type: cast_type_numeric */
-#line 11193 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1722: /* cast_type: cast_type_numeric */
+#line 11388 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type)= (yyvsp[0].Lex_cast_type); }
-#line 42704 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1704: /* cast_type: cast_type_temporal */
-#line 11194 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1723: /* cast_type: cast_type_temporal */
+#line 11389 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type)= (yyvsp[0].Lex_cast_type); }
-#line 42710 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43036 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1705: /* cast_type: udt_name */
-#line 11196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1724: /* cast_type: udt_name */
+#line 11391 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->set_cast_type_udt(&(yyval.Lex_cast_type), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 42719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1706: /* cast_type_numeric: INT_SYM */
-#line 11203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1725: /* cast_type_numeric: INT_SYM */
+#line 11398 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_slonglong); }
-#line 42725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1707: /* cast_type_numeric: SIGNED_SYM */
-#line 11204 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1726: /* cast_type_numeric: SIGNED_SYM */
+#line 11399 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_slonglong); }
-#line 42731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1708: /* cast_type_numeric: SIGNED_SYM INT_SYM */
-#line 11205 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1727: /* cast_type_numeric: SIGNED_SYM INT_SYM */
+#line 11400 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_slonglong); }
-#line 42737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43063 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1709: /* cast_type_numeric: UNSIGNED */
-#line 11206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1728: /* cast_type_numeric: UNSIGNED */
+#line 11401 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_ulonglong); }
-#line 42743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1710: /* cast_type_numeric: UNSIGNED INT_SYM */
-#line 11207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1729: /* cast_type_numeric: UNSIGNED INT_SYM */
+#line 11402 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_ulonglong); }
-#line 42749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1711: /* cast_type_numeric: DECIMAL_SYM float_options */
-#line 11208 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1730: /* cast_type_numeric: DECIMAL_SYM float_options */
+#line 11403 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_newdecimal, (yyvsp[0].Lex_length_and_dec)); }
-#line 42755 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1712: /* cast_type_numeric: FLOAT_SYM */
-#line 11209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1731: /* cast_type_numeric: FLOAT_SYM */
+#line 11404 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_float); }
-#line 42761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1713: /* cast_type_numeric: DOUBLE_SYM opt_precision */
-#line 11210 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1732: /* cast_type_numeric: DOUBLE_SYM opt_precision */
+#line 11405 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_double, (yyvsp[0].Lex_length_and_dec)); }
-#line 42767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1714: /* cast_type_temporal: DATE_SYM */
-#line 11214 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1733: /* cast_type_temporal: DATE_SYM */
+#line 11409 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_newdate); }
-#line 42773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1715: /* cast_type_temporal: TIME_SYM opt_field_scale */
-#line 11215 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1734: /* cast_type_temporal: TIME_SYM opt_field_scale */
+#line 11410 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_time2, (yyvsp[0].Lex_length_and_dec)); }
-#line 42779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1716: /* cast_type_temporal: DATETIME opt_field_scale */
-#line 11216 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1735: /* cast_type_temporal: DATETIME opt_field_scale */
+#line 11411 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_datetime2, (yyvsp[0].Lex_length_and_dec)); }
-#line 42785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43111 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1717: /* cast_type_temporal: INTERVAL_SYM DAY_SECOND_SYM field_scale */
-#line 11218 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1736: /* cast_type_temporal: INTERVAL_SYM DAY_SECOND_SYM field_scale */
+#line 11413 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_cast_type).set(&type_handler_interval_DDhhmmssff, (yyvsp[0].Lex_length_and_dec));
}
-#line 42793 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1718: /* opt_expr_list: %empty */
-#line 11224 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1737: /* opt_expr_list: %empty */
+#line 11419 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= NULL; }
-#line 42799 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1719: /* opt_expr_list: expr_list */
-#line 11225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1738: /* opt_expr_list: expr_list */
+#line 11420 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[0].item_list);}
-#line 42805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1720: /* expr_list: expr */
-#line 11230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1739: /* expr_list: expr */
+#line 11425 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_list)= List<Item>::make(thd->mem_root, (yyvsp[0].item)))))
MYSQL_YYABORT;
}
-#line 42814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43140 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1721: /* expr_list: expr_list ',' expr */
-#line 11235 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1740: /* expr_list: expr_list ',' expr */
+#line 11430 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root);
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 42823 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43149 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1722: /* ident_list_arg: ident_list */
-#line 11242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1741: /* ident_list_arg: ident_list */
+#line 11437 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[0].item_list); }
-#line 42829 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43155 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1723: /* ident_list_arg: '(' ident_list ')' */
-#line 11243 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1742: /* ident_list_arg: '(' ident_list ')' */
+#line 11438 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[-1].item_list); }
-#line 42835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43161 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1724: /* ident_list: simple_ident */
-#line 11248 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1743: /* ident_list: simple_ident */
+#line 11443 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= new (thd->mem_root) List<Item>;
if (unlikely((yyval.item_list) == NULL) ||
unlikely((yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 42846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1725: /* ident_list: ident_list ',' simple_ident */
-#line 11255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1744: /* ident_list: ident_list ',' simple_ident */
+#line 11450 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root);
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 42855 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43181 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1726: /* when_list: WHEN_SYM expr THEN_SYM expr */
-#line 11263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1745: /* when_list: WHEN_SYM expr THEN_SYM expr */
+#line 11458 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= new (thd->mem_root) List<Item>;
if (unlikely((yyval.item_list) == NULL))
@@ -42864,38 +43190,38 @@ yyreduce:
(yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 42868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1727: /* when_list: when_list WHEN_SYM expr THEN_SYM expr */
-#line 11272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1746: /* when_list: when_list WHEN_SYM expr THEN_SYM expr */
+#line 11467 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-4].item_list)->push_back((yyvsp[-2].item), thd->mem_root) ||
(yyvsp[-4].item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.item_list)= (yyvsp[-4].item_list);
}
-#line 42879 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43205 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1729: /* when_list_opt_else: when_list ELSE expr */
-#line 11283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1748: /* when_list_opt_else: when_list ELSE expr */
+#line 11478 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 42889 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43215 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1730: /* table_ref: table_factor */
-#line 11293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1749: /* table_ref: table_factor */
+#line 11488 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42895 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43221 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1731: /* table_ref: join_table */
-#line 11295 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1750: /* table_ref: join_table */
+#line 11490 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!((yyval.table_list)= lex->current_select->nest_last_join(thd))))
@@ -42904,86 +43230,86 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 42908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43234 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1732: /* json_text_literal: TEXT_STRING */
-#line 11307 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1751: /* json_text_literal: TEXT_STRING */
+#line 11502 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42916 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1733: /* json_text_literal: NCHAR_STRING */
-#line 11311 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1752: /* json_text_literal: NCHAR_STRING */
+#line 11506 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= national_charset_info;
}
-#line 42924 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1734: /* json_text_literal: UNDERSCORE_CHARSET TEXT_STRING */
-#line 11315 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1753: /* json_text_literal: UNDERSCORE_CHARSET TEXT_STRING */
+#line 11510 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= (yyvsp[-1].charset);
(yyval.lex_string_with_metadata)= (yyvsp[0].lex_string_with_metadata);
}
-#line 42933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43259 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1736: /* json_text_literal_or_num: NUM */
-#line 11324 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1755: /* json_text_literal_or_num: NUM */
+#line 11519 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42941 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43267 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1737: /* json_text_literal_or_num: LONG_NUM */
-#line 11328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1756: /* json_text_literal_or_num: LONG_NUM */
+#line 11523 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42949 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43275 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1738: /* json_text_literal_or_num: DECIMAL_NUM */
-#line 11332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1757: /* json_text_literal_or_num: DECIMAL_NUM */
+#line 11527 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42957 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1739: /* json_text_literal_or_num: FLOAT_NUM */
-#line 11336 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1758: /* json_text_literal_or_num: FLOAT_NUM */
+#line 11531 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43291 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1740: /* join_table_list: derived_table_list */
-#line 11342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1759: /* join_table_list: derived_table_list */
+#line 11537 "/home/buildbot/git/sql/sql_yacc.yy"
{ MYSQL_YYABORT_UNLESS((yyval.table_list)=(yyvsp[0].table_list)); }
-#line 42971 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43297 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1741: /* json_table_columns_clause: COLUMNS '(' json_table_columns_list ')' */
-#line 11347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1760: /* json_table_columns_clause: COLUMNS '(' json_table_columns_list ')' */
+#line 11542 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42977 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43303 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1743: /* json_table_columns_list: json_table_columns_list ',' json_table_column */
-#line 11353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1762: /* json_table_columns_list: json_table_columns_list ',' json_table_column */
+#line 11548 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43309 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1744: /* $@151: %empty */
-#line 11358 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1763: /* $@151: %empty */
+#line 11553 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Create_field *f= new (thd->mem_root) Create_field();
@@ -43002,11 +43328,11 @@ yyreduce:
lex->init_last_field(f, &(yyvsp[0].ident_sys));
}
-#line 43006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43332 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1745: /* json_table_column: ident $@151 json_table_column_type */
-#line 11377 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1764: /* json_table_column: ident $@151 json_table_column_type */
+#line 11572 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(lex->json_table->
@@ -43015,11 +43341,11 @@ yyreduce:
lex->json_table->m_columns.push_back(
lex->json_table->m_cur_json_table_column, thd->mem_root);
}
-#line 43019 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43345 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1746: /* $@152: %empty */
-#line 11386 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1765: /* $@152: %empty */
+#line 11581 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Json_table_nested_path *np= new (thd->mem_root)
@@ -43027,20 +43353,20 @@ yyreduce:
np->set_path(thd, (yyvsp[0].lex_string_with_metadata));
lex->json_table->start_nested_path(np);
}
-#line 43031 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1747: /* json_table_column: NESTED_SYM PATH_SYM json_text_literal $@152 json_table_columns_clause */
-#line 11394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1766: /* json_table_column: NESTED_SYM PATH_SYM json_text_literal $@152 json_table_columns_clause */
+#line 11589 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->json_table->end_nested_path();
}
-#line 43040 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43366 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1748: /* json_table_column_type: FOR_SYM ORDINALITY_SYM */
-#line 11402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1767: /* json_table_column_type: FOR_SYM ORDINALITY_SYM */
+#line 11597 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_field_type_st type;
type.set(&type_handler_slong);
@@ -43049,11 +43375,11 @@ yyreduce:
Lex->json_table->m_cur_json_table_column->
set(Json_table_column::FOR_ORDINALITY);
}
-#line 43053 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1749: /* json_table_column_type: json_table_field_type PATH_SYM json_text_literal json_opt_on_empty_or_error */
-#line 11412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1768: /* json_table_column_type: json_table_field_type PATH_SYM json_text_literal json_opt_on_empty_or_error */
+#line 11607 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[-3].Lex_field_type),
COLUMN_DEFINITION_TABLE_FIELD);
@@ -43064,11 +43390,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 43068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43394 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1750: /* json_table_column_type: json_table_field_type EXISTS PATH_SYM json_text_literal */
-#line 11423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1769: /* json_table_column_type: json_table_field_type EXISTS PATH_SYM json_text_literal */
+#line 11618 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[-3].Lex_field_type),
COLUMN_DEFINITION_TABLE_FIELD);
@@ -43077,70 +43403,70 @@ yyreduce:
(yyvsp[-3].Lex_field_type).charset_collation_attrs()))
MYSQL_YYABORT;
}
-#line 43081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43407 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1755: /* json_opt_on_empty_or_error: %empty */
-#line 11442 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1774: /* json_opt_on_empty_or_error: %empty */
+#line 11637 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43413 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1760: /* json_on_response: ERROR_SYM */
-#line 11451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1779: /* json_on_response: ERROR_SYM */
+#line 11646 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.json_on_response).m_response= Json_table_column::RESPONSE_ERROR;
}
-#line 43095 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43421 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1761: /* json_on_response: NULL_SYM */
-#line 11455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1780: /* json_on_response: NULL_SYM */
+#line 11650 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.json_on_response).m_response= Json_table_column::RESPONSE_NULL;
}
-#line 43103 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43429 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1762: /* json_on_response: DEFAULT json_text_literal_or_num */
-#line 11459 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1781: /* json_on_response: DEFAULT json_text_literal_or_num */
+#line 11654 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.json_on_response).m_response= Json_table_column::RESPONSE_DEFAULT;
(yyval.json_on_response).m_default= (yyvsp[0].lex_string_with_metadata);
Lex->json_table->m_cur_json_table_column->m_defaults_cs=
thd->variables.collation_connection;
}
-#line 43114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43440 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1763: /* json_on_error_response: json_on_response ON ERROR_SYM */
-#line 11469 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1782: /* json_on_error_response: json_on_response ON ERROR_SYM */
+#line 11664 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_cur_json_table_column->m_on_error= (yyvsp[-2].json_on_response);
}
-#line 43122 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43448 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1764: /* json_on_empty_response: json_on_response ON EMPTY_SYM */
-#line 11476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1783: /* json_on_empty_response: json_on_response ON EMPTY_SYM */
+#line 11671 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_cur_json_table_column->m_on_empty= (yyvsp[-2].json_on_response);
}
-#line 43130 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43456 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1765: /* $@153: %empty */
-#line 11483 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1784: /* $@153: %empty */
+#line 11678 "/home/buildbot/git/sql/sql_yacc.yy"
{
push_table_function_arg_context(Lex, thd->mem_root);
//TODO: introduce IN_TABLE_FUNC_ARGUMENT?
Select->parsing_place= IN_ON;
}
-#line 43140 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1766: /* $@154: %empty */
-#line 11489 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1785: /* $@154: %empty */
+#line 11684 "/home/buildbot/git/sql/sql_yacc.yy"
{
Table_function_json_table *jt=
new (thd->mem_root) Table_function_json_table((yyvsp[-1].item));
@@ -43153,11 +43479,11 @@ yyreduce:
Select->parsing_place= NO_MATTER;
jt->set_name_resolution_context(Lex->pop_context());
}
-#line 43157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43483 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1767: /* table_function: JSON_TABLE_SYM '(' $@153 expr ',' $@154 json_text_literal json_table_columns_clause ')' opt_table_alias_clause */
-#line 11502 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1786: /* table_function: JSON_TABLE_SYM '(' $@153 expr ',' $@154 json_text_literal json_table_columns_clause ')' opt_table_alias_clause */
+#line 11697 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
if (unlikely((yyvsp[0].lex_str_ptr) == NULL))
@@ -43181,51 +43507,51 @@ yyreduce:
Lex->json_table= 0;
status_var_increment(thd->status_var.feature_json);
}
-#line 43185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43511 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1768: /* esc_table_ref: table_ref */
-#line 11535 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1787: /* esc_table_ref: table_ref */
+#line 11730 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)=(yyvsp[0].table_list); }
-#line 43191 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43517 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1769: /* esc_table_ref: '{' ident table_ref '}' */
-#line 11536 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1788: /* esc_table_ref: '{' ident table_ref '}' */
+#line 11731 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)=(yyvsp[-1].table_list); }
-#line 43197 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1770: /* derived_table_list: esc_table_ref */
-#line 11543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1789: /* derived_table_list: esc_table_ref */
+#line 11738 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table_list)=(yyvsp[0].table_list);
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 43206 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43532 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1771: /* derived_table_list: derived_table_list ',' esc_table_ref */
-#line 11548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1790: /* derived_table_list: derived_table_list ',' esc_table_ref */
+#line 11743 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-2].table_list) && ((yyval.table_list)=(yyvsp[0].table_list)));
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 43215 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43541 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1772: /* join_table: table_ref normal_join table_ref */
-#line 11562 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1791: /* join_table: table_ref normal_join table_ref */
+#line 11757 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-2].table_list) && ((yyval.table_list)=(yyvsp[0].table_list)));
if (unlikely(Select->add_cross_joined_table((yyvsp[-2].table_list), (yyvsp[0].table_list), (yyvsp[-1].num))))
MYSQL_YYABORT;
}
-#line 43225 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43551 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1773: /* $@155: %empty */
-#line 11569 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1792: /* $@155: %empty */
+#line 11764 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-3].table_list));
@@ -43235,42 +43561,42 @@ yyreduce:
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-#line 43239 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43565 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1774: /* join_table: table_ref normal_join table_ref ON $@155 expr */
-#line 11579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1793: /* join_table: table_ref normal_join table_ref ON $@155 expr */
+#line 11774 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-3].table_list)->straight=(yyvsp[-4].num);
add_join_on(thd, (yyvsp[-3].table_list), (yyvsp[0].item));
(yyvsp[-3].table_list)->on_context= Lex->pop_context();
Select->parsing_place= NO_MATTER;
}
-#line 43250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43576 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1775: /* $@156: %empty */
-#line 11587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1794: /* $@156: %empty */
+#line 11782 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-3].table_list));
Select->add_joined_table((yyvsp[-1].table_list));
}
-#line 43260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43586 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1776: /* join_table: table_ref normal_join table_ref USING $@156 '(' using_list ')' */
-#line 11593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1795: /* join_table: table_ref normal_join table_ref USING $@156 '(' using_list ')' */
+#line 11788 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-5].table_list)->straight=(yyvsp[-6].num);
add_join_natural((yyvsp[-7].table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select);
(yyval.table_list)=(yyvsp[-5].table_list);
}
-#line 43270 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43596 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1777: /* join_table: table_ref NATURAL inner_join table_factor */
-#line 11599 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1796: /* join_table: table_ref NATURAL inner_join table_factor */
+#line 11794 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && ((yyval.table_list)=(yyvsp[0].table_list)));
Select->add_joined_table((yyvsp[-3].table_list));
@@ -43278,11 +43604,11 @@ yyreduce:
(yyvsp[0].table_list)->straight=(yyvsp[-1].num);
add_join_natural((yyvsp[-3].table_list),(yyvsp[0].table_list),NULL,Select);
}
-#line 43282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43608 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1778: /* $@157: %empty */
-#line 11610 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1797: /* $@157: %empty */
+#line 11805 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -43292,11 +43618,11 @@ yyreduce:
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-#line 43296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1779: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_ref ON $@157 expr */
-#line 11620 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1798: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_ref ON $@157 expr */
+#line 11815 "/home/buildbot/git/sql/sql_yacc.yy"
{
add_join_on(thd, (yyvsp[-3].table_list), (yyvsp[0].item));
(yyvsp[-3].table_list)->on_context= Lex->pop_context();
@@ -43304,31 +43630,31 @@ yyreduce:
(yyval.table_list)=(yyvsp[-3].table_list);
Select->parsing_place= NO_MATTER;
}
-#line 43308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43634 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1780: /* $@158: %empty */
-#line 11628 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1799: /* $@158: %empty */
+#line 11823 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-4].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-4].table_list));
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 43318 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43644 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1781: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_factor $@158 USING '(' using_list ')' */
-#line 11634 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1800: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_factor $@158 USING '(' using_list ')' */
+#line 11829 "/home/buildbot/git/sql/sql_yacc.yy"
{
add_join_natural((yyvsp[-9].table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select);
(yyvsp[-5].table_list)->outer_join|=JOIN_TYPE_LEFT;
(yyval.table_list)=(yyvsp[-5].table_list);
}
-#line 43328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1782: /* join_table: table_ref NATURAL LEFT opt_outer JOIN_SYM table_factor */
-#line 11640 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1801: /* join_table: table_ref NATURAL LEFT opt_outer JOIN_SYM table_factor */
+#line 11835 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -43337,11 +43663,11 @@ yyreduce:
(yyvsp[0].table_list)->outer_join|=JOIN_TYPE_LEFT;
(yyval.table_list)=(yyvsp[0].table_list);
}
-#line 43341 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43667 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1783: /* $@159: %empty */
-#line 11652 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1802: /* $@159: %empty */
+#line 11847 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -43351,11 +43677,11 @@ yyreduce:
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-#line 43355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43681 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1784: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_ref ON $@159 expr */
-#line 11662 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1803: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_ref ON $@159 expr */
+#line 11857 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!((yyval.table_list)= lex->current_select->convert_right_join())))
@@ -43364,32 +43690,32 @@ yyreduce:
(yyvsp[-7].table_list)->on_context= Lex->pop_context();
Select->parsing_place= NO_MATTER;
}
-#line 43368 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43694 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1785: /* $@160: %empty */
-#line 11671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1804: /* $@160: %empty */
+#line 11866 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-4].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-4].table_list));
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 43378 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43704 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1786: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_factor $@160 USING '(' using_list ')' */
-#line 11677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1805: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_factor $@160 USING '(' using_list ')' */
+#line 11872 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!((yyval.table_list)= lex->current_select->convert_right_join())))
MYSQL_YYABORT;
add_join_natural((yyval.table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select);
}
-#line 43389 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43715 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1787: /* join_table: table_ref NATURAL RIGHT opt_outer JOIN_SYM table_factor */
-#line 11684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1806: /* join_table: table_ref NATURAL RIGHT opt_outer JOIN_SYM table_factor */
+#line 11879 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -43399,129 +43725,129 @@ yyreduce:
if (unlikely(!((yyval.table_list)= lex->current_select->convert_right_join())))
MYSQL_YYABORT;
}
-#line 43403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43729 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1788: /* inner_join: JOIN_SYM */
-#line 11697 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1807: /* inner_join: JOIN_SYM */
+#line 11892 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 43409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43735 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1789: /* inner_join: INNER_SYM JOIN_SYM */
-#line 11698 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1808: /* inner_join: INNER_SYM JOIN_SYM */
+#line 11893 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 43415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43741 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1790: /* inner_join: STRAIGHT_JOIN */
-#line 11699 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1809: /* inner_join: STRAIGHT_JOIN */
+#line 11894 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 43421 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43747 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1791: /* normal_join: inner_join */
-#line 11703 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1810: /* normal_join: inner_join */
+#line 11898 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = (yyvsp[0].num); }
-#line 43427 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1792: /* normal_join: CROSS JOIN_SYM */
-#line 11704 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1811: /* normal_join: CROSS JOIN_SYM */
+#line 11899 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 43433 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43759 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1793: /* opt_use_partition: %empty */
-#line 11712 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1812: /* opt_use_partition: %empty */
+#line 11907 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.string_list)= 0;}
-#line 43439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43765 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1795: /* use_partition: PARTITION_SYM '(' using_list ')' have_partitioning */
-#line 11718 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1814: /* use_partition: PARTITION_SYM '(' using_list ')' have_partitioning */
+#line 11913 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.string_list)= (yyvsp[-2].string_list);
Select->parsing_place= Select->save_parsing_place;
Select->save_parsing_place= NO_MATTER;
}
-#line 43449 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43775 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1796: /* table_factor: table_primary_ident_opt_parens */
-#line 11726 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1815: /* table_factor: table_primary_ident_opt_parens */
+#line 11921 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 43455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1797: /* table_factor: table_primary_derived_opt_parens */
-#line 11727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1816: /* table_factor: table_primary_derived_opt_parens */
+#line 11922 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 43461 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1798: /* table_factor: join_table_parens */
-#line 11729 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1817: /* table_factor: join_table_parens */
+#line 11924 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].table_list)->nested_join->nest_type= 0;
(yyval.table_list)= (yyvsp[0].table_list);
}
-#line 43470 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1799: /* table_factor: table_reference_list_parens */
-#line 11733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1818: /* table_factor: table_reference_list_parens */
+#line 11928 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 43476 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1800: /* table_factor: table_function */
-#line 11734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1819: /* table_factor: table_function */
+#line 11929 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 43482 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43808 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1801: /* table_primary_ident_opt_parens: table_primary_ident */
-#line 11738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1820: /* table_primary_ident_opt_parens: table_primary_ident */
+#line 11933 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 43488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1802: /* table_primary_ident_opt_parens: '(' table_primary_ident_opt_parens ')' */
-#line 11739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1821: /* table_primary_ident_opt_parens: '(' table_primary_ident_opt_parens ')' */
+#line 11934 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 43494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43820 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1803: /* table_primary_derived_opt_parens: table_primary_derived */
-#line 11743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1822: /* table_primary_derived_opt_parens: table_primary_derived */
+#line 11938 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 43500 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43826 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1804: /* table_primary_derived_opt_parens: '(' table_primary_derived_opt_parens ')' */
-#line 11744 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1823: /* table_primary_derived_opt_parens: '(' table_primary_derived_opt_parens ')' */
+#line 11939 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 43506 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43832 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1805: /* table_reference_list_parens: '(' table_reference_list_parens ')' */
-#line 11748 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1824: /* table_reference_list_parens: '(' table_reference_list_parens ')' */
+#line 11943 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 43512 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43838 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1806: /* table_reference_list_parens: '(' nested_table_reference_list ')' */
-#line 11750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1825: /* table_reference_list_parens: '(' nested_table_reference_list ')' */
+#line 11945 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Select->end_nested_join(thd)))
MYSQL_YYABORT;
}
-#line 43521 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43847 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1807: /* nested_table_reference_list: table_ref ',' table_ref */
-#line 11758 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1826: /* nested_table_reference_list: table_ref ',' table_ref */
+#line 11953 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Select->init_nested_join(thd))
MYSQL_YYABORT;
@@ -43529,26 +43855,26 @@ yyreduce:
Select->add_joined_table((yyvsp[0].table_list));
(yyval.table_list)= (yyvsp[-2].table_list)->embedding;
}
-#line 43533 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43859 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1808: /* nested_table_reference_list: nested_table_reference_list ',' table_ref */
-#line 11766 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1827: /* nested_table_reference_list: nested_table_reference_list ',' table_ref */
+#line 11961 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->add_joined_table((yyvsp[0].table_list));
(yyval.table_list)= (yyvsp[-2].table_list);
}
-#line 43542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1809: /* join_table_parens: '(' join_table_parens ')' */
-#line 11773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1828: /* join_table_parens: '(' join_table_parens ')' */
+#line 11968 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 43548 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43874 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1810: /* join_table_parens: '(' join_table ')' */
-#line 11775 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1829: /* join_table_parens: '(' join_table ')' */
+#line 11970 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!((yyval.table_list)= lex->current_select->nest_last_join(thd)))
@@ -43557,11 +43883,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 43561 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43887 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1811: /* table_primary_ident: table_ident opt_use_partition opt_for_system_time_clause opt_table_alias_clause opt_key_definition */
-#line 11789 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1830: /* table_primary_ident: table_ident opt_use_partition opt_for_system_time_clause opt_table_alias_clause opt_key_definition */
+#line 11984 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Select->add_table_to_list(thd, (yyvsp[-4].table), (yyvsp[-1].lex_str_ptr),
0,
@@ -43573,123 +43899,123 @@ yyreduce:
if ((yyvsp[-2].num))
(yyval.table_list)->vers_conditions= Lex->vers_conditions;
}
-#line 43577 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43903 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1812: /* table_primary_derived: subquery opt_for_system_time_clause table_alias_clause */
-#line 11805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1831: /* table_primary_derived: subquery opt_for_system_time_clause table_alias_clause */
+#line 12000 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Lex->parsed_derived_table((yyvsp[-2].select_lex)->master_unit(), (yyvsp[-1].num), (yyvsp[0].lex_str_ptr))))
MYSQL_YYABORT;
}
-#line 43586 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43912 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1813: /* opt_outer: %empty */
-#line 11822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1832: /* opt_outer: %empty */
+#line 12017 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43592 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43918 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1814: /* opt_outer: OUTER */
-#line 11823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1833: /* opt_outer: OUTER */
+#line 12018 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43598 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43924 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1815: /* index_hint_clause: %empty */
-#line 11828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1834: /* index_hint_clause: %empty */
+#line 12023 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (thd->variables.old_behavior & OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN) ?
INDEX_HINT_MASK_JOIN : INDEX_HINT_MASK_ALL;
}
-#line 43607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1816: /* index_hint_clause: FOR_SYM JOIN_SYM */
-#line 11832 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1835: /* index_hint_clause: FOR_SYM JOIN_SYM */
+#line 12027 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= INDEX_HINT_MASK_JOIN; }
-#line 43613 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1817: /* index_hint_clause: FOR_SYM ORDER_SYM BY */
-#line 11833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1836: /* index_hint_clause: FOR_SYM ORDER_SYM BY */
+#line 12028 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= INDEX_HINT_MASK_ORDER; }
-#line 43619 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1818: /* index_hint_clause: FOR_SYM GROUP_SYM BY */
-#line 11834 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1837: /* index_hint_clause: FOR_SYM GROUP_SYM BY */
+#line 12029 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= INDEX_HINT_MASK_GROUP; }
-#line 43625 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43951 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1819: /* index_hint_type: FORCE_SYM */
-#line 11838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1838: /* index_hint_type: FORCE_SYM */
+#line 12033 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.index_hint)= INDEX_HINT_FORCE; }
-#line 43631 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43957 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1820: /* index_hint_type: IGNORE_SYM */
-#line 11839 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1839: /* index_hint_type: IGNORE_SYM */
+#line 12034 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.index_hint)= INDEX_HINT_IGNORE; }
-#line 43637 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43963 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1821: /* $@161: %empty */
-#line 11844 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1840: /* $@161: %empty */
+#line 12039 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_index_hint_type((yyvsp[-2].index_hint), (yyvsp[0].num));
}
-#line 43645 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43971 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1823: /* $@162: %empty */
-#line 11849 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1842: /* $@162: %empty */
+#line 12044 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_index_hint_type(INDEX_HINT_USE, (yyvsp[0].num));
}
-#line 43653 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1828: /* $@163: %empty */
-#line 11862 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1847: /* $@163: %empty */
+#line 12057 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->alloc_index_hints(thd); }
-#line 43659 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43985 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1830: /* $@164: %empty */
-#line 11866 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1849: /* $@164: %empty */
+#line 12061 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->clear_index_hints(); }
-#line 43665 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1832: /* opt_key_usage_list: %empty */
-#line 11871 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1851: /* opt_key_usage_list: %empty */
+#line 12066 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->add_index_hint(thd, NULL, 0); }
-#line 43671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 43997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1833: /* opt_key_usage_list: key_usage_list */
-#line 11872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1852: /* opt_key_usage_list: key_usage_list */
+#line 12067 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1834: /* key_usage_element: ident */
-#line 11877 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1853: /* key_usage_element: ident */
+#line 12072 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->add_index_hint(thd, (yyvsp[0].ident_sys).str, (yyvsp[0].ident_sys).length); }
-#line 43683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1835: /* key_usage_element: PRIMARY_SYM */
-#line 11879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1854: /* key_usage_element: PRIMARY_SYM */
+#line 12074 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->add_index_hint(thd, "PRIMARY", 7); }
-#line 43689 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1838: /* using_list: ident */
-#line 11889 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1857: /* using_list: ident */
+#line 12084 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.string_list)= new (thd->mem_root) List<String>)))
MYSQL_YYABORT;
@@ -43700,11 +44026,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string_list)->push_back(s, thd->mem_root);
}
-#line 43704 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44030 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1839: /* using_list: using_list ',' ident */
-#line 11900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1858: /* using_list: using_list ',' ident */
+#line 12095 "/home/buildbot/git/sql/sql_yacc.yy"
{
String *s= new (thd->mem_root) String((const char*) (yyvsp[0].ident_sys).str,
(yyvsp[0].ident_sys).length,
@@ -43715,197 +44041,197 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string_list)= (yyvsp[-2].string_list);
}
-#line 43719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1840: /* interval: interval_time_stamp */
-#line 11913 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1859: /* interval: interval_time_stamp */
+#line 12108 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1841: /* interval: DAY_HOUR_SYM */
-#line 11914 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1860: /* interval: DAY_HOUR_SYM */
+#line 12109 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_HOUR; }
-#line 43731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1842: /* interval: DAY_MICROSECOND_SYM */
-#line 11915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1861: /* interval: DAY_MICROSECOND_SYM */
+#line 12110 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_MICROSECOND; }
-#line 43737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44063 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1843: /* interval: DAY_MINUTE_SYM */
-#line 11916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1862: /* interval: DAY_MINUTE_SYM */
+#line 12111 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_MINUTE; }
-#line 43743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1844: /* interval: DAY_SECOND_SYM */
-#line 11917 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1863: /* interval: DAY_SECOND_SYM */
+#line 12112 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_SECOND; }
-#line 43749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1845: /* interval: HOUR_MICROSECOND_SYM */
-#line 11918 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1864: /* interval: HOUR_MICROSECOND_SYM */
+#line 12113 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_HOUR_MICROSECOND; }
-#line 43755 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1846: /* interval: HOUR_MINUTE_SYM */
-#line 11919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1865: /* interval: HOUR_MINUTE_SYM */
+#line 12114 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_HOUR_MINUTE; }
-#line 43761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1847: /* interval: HOUR_SECOND_SYM */
-#line 11920 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1866: /* interval: HOUR_SECOND_SYM */
+#line 12115 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_HOUR_SECOND; }
-#line 43767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1848: /* interval: MINUTE_MICROSECOND_SYM */
-#line 11921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1867: /* interval: MINUTE_MICROSECOND_SYM */
+#line 12116 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_MINUTE_MICROSECOND; }
-#line 43773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1849: /* interval: MINUTE_SECOND_SYM */
-#line 11922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1868: /* interval: MINUTE_SECOND_SYM */
+#line 12117 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_MINUTE_SECOND; }
-#line 43779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1850: /* interval: SECOND_MICROSECOND_SYM */
-#line 11923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1869: /* interval: SECOND_MICROSECOND_SYM */
+#line 12118 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_SECOND_MICROSECOND; }
-#line 43785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44111 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1851: /* interval: YEAR_MONTH_SYM */
-#line 11924 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1870: /* interval: YEAR_MONTH_SYM */
+#line 12119 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_YEAR_MONTH; }
-#line 43791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1852: /* interval_time_stamp: DAY_SYM */
-#line 11928 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1871: /* interval_time_stamp: DAY_SYM */
+#line 12123 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_DAY; }
-#line 43797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44123 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1853: /* interval_time_stamp: WEEK_SYM */
-#line 11929 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1872: /* interval_time_stamp: WEEK_SYM */
+#line 12124 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_WEEK; }
-#line 43803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44129 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1854: /* interval_time_stamp: HOUR_SYM */
-#line 11930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1873: /* interval_time_stamp: HOUR_SYM */
+#line 12125 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_HOUR; }
-#line 43809 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1855: /* interval_time_stamp: MINUTE_SYM */
-#line 11931 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1874: /* interval_time_stamp: MINUTE_SYM */
+#line 12126 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_MINUTE; }
-#line 43815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44141 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1856: /* interval_time_stamp: MONTH_SYM */
-#line 11932 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1875: /* interval_time_stamp: MONTH_SYM */
+#line 12127 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_MONTH; }
-#line 43821 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44147 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1857: /* interval_time_stamp: QUARTER_SYM */
-#line 11933 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1876: /* interval_time_stamp: QUARTER_SYM */
+#line 12128 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_QUARTER; }
-#line 43827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44153 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1858: /* interval_time_stamp: SECOND_SYM */
-#line 11934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1877: /* interval_time_stamp: SECOND_SYM */
+#line 12129 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_SECOND; }
-#line 43833 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44159 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1859: /* interval_time_stamp: MICROSECOND_SYM */
-#line 11935 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1878: /* interval_time_stamp: MICROSECOND_SYM */
+#line 12130 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_MICROSECOND; }
-#line 43839 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44165 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1860: /* interval_time_stamp: YEAR_SYM */
-#line 11936 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1879: /* interval_time_stamp: YEAR_SYM */
+#line 12131 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_YEAR; }
-#line 43845 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44171 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1861: /* date_time_type: DATE_SYM */
-#line 11940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1880: /* date_time_type: DATE_SYM */
+#line 12135 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_DATE;}
-#line 43851 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1862: /* date_time_type: TIME_SYM */
-#line 11941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1881: /* date_time_type: TIME_SYM */
+#line 12136 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_TIME;}
-#line 43857 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1863: /* date_time_type: DATETIME */
-#line 11942 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1882: /* date_time_type: DATETIME */
+#line 12137 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_DATETIME;}
-#line 43863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44189 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1864: /* date_time_type: TIMESTAMP */
-#line 11943 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1883: /* date_time_type: TIMESTAMP */
+#line 12138 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_DATETIME;}
-#line 43869 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1868: /* opt_table_alias_clause: %empty */
-#line 11953 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1887: /* opt_table_alias_clause: %empty */
+#line 12148 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str_ptr)=0; }
-#line 43875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1869: /* opt_table_alias_clause: table_alias_clause */
-#line 11954 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1888: /* opt_table_alias_clause: table_alias_clause */
+#line 12149 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str_ptr)= (yyvsp[0].lex_str_ptr); }
-#line 43881 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44207 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1870: /* table_alias_clause: table_alias ident_table_alias */
-#line 11959 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1889: /* table_alias_clause: table_alias ident_table_alias */
+#line 12154 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str_ptr)= (LEX_CSTRING*) thd->memdup(&(yyvsp[0].ident_sys),sizeof(LEX_STRING));
if (unlikely((yyval.lex_str_ptr) == NULL))
MYSQL_YYABORT;
}
-#line 43891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44217 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1873: /* opt_where_clause: %empty */
-#line 11972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1892: /* opt_where_clause: %empty */
+#line 12167 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->where= 0; }
-#line 43897 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1874: /* $@165: %empty */
-#line 11974 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1893: /* $@165: %empty */
+#line 12169 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_WHERE;
}
-#line 43905 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44231 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1875: /* opt_where_clause: WHERE $@165 expr */
-#line 11978 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1894: /* opt_where_clause: WHERE $@165 expr */
+#line 12173 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *select= Select;
select->where= normalize_cond(thd, (yyvsp[0].item));
@@ -43913,19 +44239,19 @@ yyreduce:
if ((yyvsp[0].item))
(yyvsp[0].item)->top_level_item();
}
-#line 43917 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1877: /* $@166: %empty */
-#line 11990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1896: /* $@166: %empty */
+#line 12185 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_HAVING;
}
-#line 43925 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44251 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1878: /* opt_having_clause: HAVING $@166 expr */
-#line 11994 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1897: /* opt_having_clause: HAVING $@166 expr */
+#line 12189 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->having= normalize_cond(thd, (yyvsp[0].item));
@@ -43933,35 +44259,35 @@ yyreduce:
if ((yyvsp[0].item))
(yyvsp[0].item)->top_level_item();
}
-#line 43937 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44263 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1881: /* group_list: group_list ',' order_ident order_dir */
-#line 12014 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1900: /* group_list: group_list ',' order_ident order_dir */
+#line 12209 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_group_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 43946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44272 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1882: /* group_list: order_ident order_dir */
-#line 12019 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1901: /* group_list: order_ident order_dir */
+#line 12214 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_group_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 43955 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44281 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1883: /* olap_opt: %empty */
-#line 12026 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1902: /* olap_opt: %empty */
+#line 12221 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44287 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1884: /* olap_opt: WITH_CUBE_SYM */
-#line 12028 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1903: /* olap_opt: WITH_CUBE_SYM */
+#line 12223 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
'WITH CUBE' is reserved in the MySQL syntax, but not implemented,
@@ -43978,11 +44304,11 @@ yyreduce:
my_yyabort_error((ER_NOT_SUPPORTED_YET, MYF(0), "CUBE"));
}
-#line 43982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1885: /* olap_opt: WITH_ROLLUP_SYM */
-#line 12045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1904: /* olap_opt: WITH_ROLLUP_SYM */
+#line 12240 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
'WITH ROLLUP' is needed for backward compatibility,
@@ -43997,23 +44323,23 @@ yyreduce:
"global union parameters"));
lex->current_select->olap= ROLLUP_TYPE;
}
-#line 44001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44327 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1886: /* opt_window_clause: %empty */
-#line 12067 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1905: /* opt_window_clause: %empty */
+#line 12262 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44007 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44333 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1887: /* opt_window_clause: WINDOW_SYM window_def_list */
-#line 12070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1906: /* opt_window_clause: WINDOW_SYM window_def_list */
+#line 12265 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44013 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44339 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1890: /* window_def: window_name AS window_spec */
-#line 12080 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1909: /* window_def: window_name AS window_spec */
+#line 12275 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(Select->add_window_def(thd, (yyvsp[-2].lex_str_ptr), lex->win_ref,
@@ -44022,63 +44348,63 @@ yyreduce:
lex->win_frame)))
MYSQL_YYABORT;
}
-#line 44026 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44352 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1891: /* $@167: %empty */
-#line 12092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1910: /* $@167: %empty */
+#line 12287 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->prepare_add_window_spec(thd); }
-#line 44032 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44358 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1892: /* window_spec: '(' $@167 opt_window_ref opt_window_partition_clause opt_window_order_clause opt_window_frame_clause ')' */
-#line 12096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1911: /* window_spec: '(' $@167 opt_window_ref opt_window_partition_clause opt_window_order_clause opt_window_frame_clause ')' */
+#line 12291 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 44038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1893: /* opt_window_ref: %empty */
-#line 12100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1912: /* opt_window_ref: %empty */
+#line 12295 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44370 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1894: /* opt_window_ref: ident */
-#line 12102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1913: /* opt_window_ref: ident */
+#line 12297 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->lex->win_ref= (LEX_CSTRING *) thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING));
if (unlikely(thd->lex->win_ref == NULL))
MYSQL_YYABORT;
}
-#line 44054 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44380 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1895: /* opt_window_partition_clause: %empty */
-#line 12110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1914: /* opt_window_partition_clause: %empty */
+#line 12305 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 44060 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44386 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1897: /* opt_window_order_clause: %empty */
-#line 12115 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1916: /* opt_window_order_clause: %empty */
+#line 12310 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 44066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1898: /* opt_window_order_clause: ORDER_SYM BY order_list */
-#line 12116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1917: /* opt_window_order_clause: ORDER_SYM BY order_list */
+#line 12311 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->order_list= *((yyvsp[0].select_order)); }
-#line 44072 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44398 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1899: /* opt_window_frame_clause: %empty */
-#line 12120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1918: /* opt_window_frame_clause: %empty */
+#line 12315 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44078 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44404 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1900: /* opt_window_frame_clause: window_frame_units window_frame_extent opt_window_frame_exclusion */
-#line 12122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1919: /* opt_window_frame_clause: window_frame_units window_frame_extent opt_window_frame_exclusion */
+#line 12317 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->win_frame=
@@ -44089,23 +44415,23 @@ yyreduce:
if (unlikely(lex->win_frame == NULL))
MYSQL_YYABORT;
}
-#line 44093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44419 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1901: /* window_frame_units: ROWS_SYM */
-#line 12135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1920: /* window_frame_units: ROWS_SYM */
+#line 12330 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_units)= Window_frame::UNITS_ROWS; }
-#line 44099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44425 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1902: /* window_frame_units: RANGE_SYM */
-#line 12136 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1921: /* window_frame_units: RANGE_SYM */
+#line 12331 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_units)= Window_frame::UNITS_RANGE; }
-#line 44105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44431 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1903: /* window_frame_extent: window_frame_start */
-#line 12141 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1922: /* window_frame_extent: window_frame_start */
+#line 12336 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->frame_top_bound= (yyvsp[0].window_frame_bound);
@@ -44115,235 +44441,235 @@ yyreduce:
if (unlikely(lex->frame_bottom_bound == NULL))
MYSQL_YYABORT;
}
-#line 44119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44445 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1904: /* window_frame_extent: BETWEEN_SYM window_frame_bound AND_SYM window_frame_bound */
-#line 12151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1923: /* window_frame_extent: BETWEEN_SYM window_frame_bound AND_SYM window_frame_bound */
+#line 12346 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->frame_top_bound= (yyvsp[-2].window_frame_bound);
lex->frame_bottom_bound= (yyvsp[0].window_frame_bound);
}
-#line 44129 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1905: /* window_frame_start: UNBOUNDED_SYM PRECEDING_SYM */
-#line 12160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1924: /* window_frame_start: UNBOUNDED_SYM PRECEDING_SYM */
+#line 12355 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::PRECEDING, NULL);
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 44140 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1906: /* window_frame_start: CURRENT_SYM ROW_SYM */
-#line 12167 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1925: /* window_frame_start: CURRENT_SYM ROW_SYM */
+#line 12362 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::CURRENT, NULL);
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 44151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1907: /* window_frame_start: literal PRECEDING_SYM */
-#line 12174 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1926: /* window_frame_start: literal PRECEDING_SYM */
+#line 12369 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::PRECEDING, (yyvsp[-1].item));
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 44162 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1908: /* window_frame_bound: window_frame_start */
-#line 12183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1927: /* window_frame_bound: window_frame_start */
+#line 12378 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.window_frame_bound)= (yyvsp[0].window_frame_bound); }
-#line 44168 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1909: /* window_frame_bound: UNBOUNDED_SYM FOLLOWING_SYM */
-#line 12185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1928: /* window_frame_bound: UNBOUNDED_SYM FOLLOWING_SYM */
+#line 12380 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::FOLLOWING, NULL);
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 44179 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1910: /* window_frame_bound: literal FOLLOWING_SYM */
-#line 12192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1929: /* window_frame_bound: literal FOLLOWING_SYM */
+#line 12387 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::FOLLOWING, (yyvsp[-1].item));
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 44190 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44516 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1911: /* opt_window_frame_exclusion: %empty */
-#line 12201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1930: /* opt_window_frame_exclusion: %empty */
+#line 12396 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_NONE; }
-#line 44196 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1912: /* opt_window_frame_exclusion: EXCLUDE_SYM CURRENT_SYM ROW_SYM */
-#line 12203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1931: /* opt_window_frame_exclusion: EXCLUDE_SYM CURRENT_SYM ROW_SYM */
+#line 12398 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_CURRENT_ROW; }
-#line 44202 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1913: /* opt_window_frame_exclusion: EXCLUDE_SYM GROUP_SYM */
-#line 12205 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1932: /* opt_window_frame_exclusion: EXCLUDE_SYM GROUP_SYM */
+#line 12400 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_GROUP; }
-#line 44208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44534 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1914: /* opt_window_frame_exclusion: EXCLUDE_SYM TIES_SYM */
-#line 12207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1933: /* opt_window_frame_exclusion: EXCLUDE_SYM TIES_SYM */
+#line 12402 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_TIES; }
-#line 44214 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44540 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1915: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_MARIADB_SYM */
-#line 12209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1934: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_MARIADB_SYM */
+#line 12404 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_NONE; }
-#line 44220 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44546 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1916: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_ORACLE_SYM */
-#line 12211 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1935: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_ORACLE_SYM */
+#line 12406 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_NONE; }
-#line 44226 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44552 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1920: /* alter_order_item: simple_ident_nospvar order_dir */
-#line 12229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1939: /* alter_order_item: simple_ident_nospvar order_dir */
+#line 12424 "/home/buildbot/git/sql/sql_yacc.yy"
{
bool ascending= ((yyvsp[0].num) == 1) ? true : false;
if (unlikely(add_order_to_list(thd, (yyvsp[-1].item), ascending)))
MYSQL_YYABORT;
}
-#line 44236 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44562 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1921: /* opt_order_clause: %empty */
-#line 12242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1940: /* opt_order_clause: %empty */
+#line 12437 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_order)= NULL; }
-#line 44242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1922: /* opt_order_clause: order_clause */
-#line 12244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1941: /* opt_order_clause: order_clause */
+#line 12439 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_order)= (yyvsp[0].select_order); }
-#line 44248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1923: /* $@168: %empty */
-#line 12249 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1942: /* $@168: %empty */
+#line 12444 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->where= "ORDER clause";
}
-#line 44256 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44582 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1924: /* order_clause: ORDER_SYM BY $@168 order_list */
-#line 12253 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1943: /* order_clause: ORDER_SYM BY $@168 order_list */
+#line 12448 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_order)= (yyvsp[0].select_order);
}
-#line 44264 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1925: /* order_list: order_list ',' order_ident order_dir */
-#line 12260 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1944: /* order_list: order_list ',' order_ident order_dir */
+#line 12455 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_order)= (yyvsp[-3].select_order);
if (add_to_list(thd, *(yyval.select_order), (yyvsp[-1].item),(bool) (yyvsp[0].num)))
MYSQL_YYABORT;
}
-#line 44274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44600 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1926: /* order_list: order_ident order_dir */
-#line 12266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1945: /* order_list: order_ident order_dir */
+#line 12461 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_order)= new (thd->mem_root) SQL_I_List<ORDER>();
if (add_to_list(thd, *(yyval.select_order), (yyvsp[-1].item), (bool) (yyvsp[0].num)))
MYSQL_YYABORT;
}
-#line 44284 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44610 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1927: /* order_dir: %empty */
-#line 12274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1946: /* order_dir: %empty */
+#line 12469 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 44290 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44616 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1928: /* order_dir: ASC */
-#line 12275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1947: /* order_dir: ASC */
+#line 12470 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 44296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44622 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1929: /* order_dir: DESC */
-#line 12276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1948: /* order_dir: DESC */
+#line 12471 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 44302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44628 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1930: /* opt_limit_clause: %empty */
-#line 12282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1949: /* opt_limit_clause: %empty */
+#line 12477 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_limit).clear(); }
-#line 44308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44634 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1931: /* opt_limit_clause: limit_clause */
-#line 12284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1950: /* opt_limit_clause: limit_clause */
+#line 12479 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_limit)= (yyvsp[0].select_limit); }
-#line 44314 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44640 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1932: /* limit_clause: LIMIT limit_options */
-#line 12289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1951: /* limit_clause: LIMIT limit_options */
+#line 12484 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit)= (yyvsp[0].select_limit);
if (!(yyval.select_limit).select_limit->basic_const_item() ||
(yyval.select_limit).select_limit->val_int() > 0)
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 44325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44651 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1933: /* limit_clause: LIMIT limit_options ROWS_SYM EXAMINED_SYM limit_rows_option */
-#line 12297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1952: /* limit_clause: LIMIT limit_options ROWS_SYM EXAMINED_SYM limit_rows_option */
+#line 12492 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit)= (yyvsp[-3].select_limit);
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 44334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1934: /* limit_clause: LIMIT ROWS_SYM EXAMINED_SYM limit_rows_option */
-#line 12302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1953: /* limit_clause: LIMIT ROWS_SYM EXAMINED_SYM limit_rows_option */
+#line 12497 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).clear();
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 44343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44669 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1935: /* limit_clause: fetch_first_clause */
-#line 12307 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1954: /* limit_clause: fetch_first_clause */
+#line 12502 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit)= (yyvsp[0].select_limit);
if (!(yyval.select_limit).select_limit ||
@@ -44351,11 +44677,11 @@ yyreduce:
(yyval.select_limit).select_limit->val_int() > 0)
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 44355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44681 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1936: /* fetch_first_clause: FETCH_SYM first_or_next row_or_rows only_or_with_ties */
-#line 12318 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1955: /* fetch_first_clause: FETCH_SYM first_or_next row_or_rows only_or_with_ties */
+#line 12513 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *one= new (thd->mem_root) Item_int(thd, (int32) 1);
if (unlikely(one == NULL))
@@ -44365,11 +44691,11 @@ yyreduce:
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 44369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44695 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1937: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next row_or_rows only_or_with_ties */
-#line 12329 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1956: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next row_or_rows only_or_with_ties */
+#line 12524 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *one= new (thd->mem_root) Item_int(thd, (int32) 1);
if (unlikely(one == NULL))
@@ -44379,211 +44705,211 @@ yyreduce:
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 44383 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44709 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1938: /* fetch_first_clause: FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
-#line 12339 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1957: /* fetch_first_clause: FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
+#line 12534 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[-2].item);
(yyval.select_limit).offset_limit= 0;
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 44394 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1939: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
-#line 12347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1958: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
+#line 12542 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[-2].item);
(yyval.select_limit).offset_limit= (yyvsp[-6].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 44405 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1940: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows */
-#line 12354 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1959: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows */
+#line 12549 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= 0;
(yyval.select_limit).offset_limit= (yyvsp[-1].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 44416 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44742 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1945: /* only_or_with_ties: ONLY_SYM */
-#line 12373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1964: /* only_or_with_ties: ONLY_SYM */
+#line 12568 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 44422 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44748 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1946: /* only_or_with_ties: WITH TIES_SYM */
-#line 12374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1965: /* only_or_with_ties: WITH TIES_SYM */
+#line 12569 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 44428 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44754 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1947: /* opt_global_limit_clause: opt_limit_clause */
-#line 12380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1966: /* opt_global_limit_clause: opt_limit_clause */
+#line 12575 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->limit_params= (yyvsp[0].select_limit);
}
-#line 44436 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44762 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1948: /* limit_options: limit_option */
-#line 12387 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1967: /* limit_options: limit_option */
+#line 12582 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[0].item);
(yyval.select_limit).offset_limit= NULL;
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 44447 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1949: /* limit_options: limit_option ',' limit_option */
-#line 12394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1968: /* limit_options: limit_option ',' limit_option */
+#line 12589 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[0].item);
(yyval.select_limit).offset_limit= (yyvsp[-2].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 44458 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44784 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1950: /* limit_options: limit_option OFFSET_SYM limit_option */
-#line 12401 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1969: /* limit_options: limit_option OFFSET_SYM limit_option */
+#line 12596 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[-2].item);
(yyval.select_limit).offset_limit= (yyvsp[0].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 44469 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44795 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1951: /* limit_option: ident_cli */
-#line 12411 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1970: /* limit_option: ident_cli */
+#line 12606 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_limit(thd, &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 44478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44804 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1952: /* limit_option: ident_cli '.' ident_cli */
-#line 12416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1971: /* limit_option: ident_cli '.' ident_cli */
+#line 12611 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_limit(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 44487 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44813 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1953: /* limit_option: param_marker */
-#line 12421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1972: /* limit_option: param_marker */
+#line 12616 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].item_param)->limit_clause_param= TRUE;
}
-#line 44495 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44821 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1954: /* limit_option: ULONGLONG_NUM */
-#line 12425 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1973: /* limit_option: ULONGLONG_NUM */
+#line 12620 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 44505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1955: /* limit_option: LONG_NUM */
-#line 12431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1974: /* limit_option: LONG_NUM */
+#line 12626 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 44515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44841 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1956: /* limit_option: NUM */
-#line 12437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1975: /* limit_option: NUM */
+#line 12632 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 44525 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44851 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1957: /* limit_rows_option: limit_option */
-#line 12446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1976: /* limit_rows_option: limit_option */
+#line 12641 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->limit_rows_examined= (yyvsp[0].item);
}
-#line 44533 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44859 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1958: /* delete_limit_clause: %empty */
-#line 12453 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1977: /* delete_limit_clause: %empty */
+#line 12648 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->current_select->limit_params.select_limit= 0;
}
-#line 44542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1959: /* delete_limit_clause: LIMIT limit_option */
-#line 12458 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1978: /* delete_limit_clause: LIMIT limit_option */
+#line 12653 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->limit_params.select_limit= (yyvsp[0].item);
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
sel->limit_params.explicit_limit= 1;
}
-#line 44553 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44879 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1960: /* delete_limit_clause: LIMIT ROWS_SYM EXAMINED_SYM */
-#line 12464 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1979: /* delete_limit_clause: LIMIT ROWS_SYM EXAMINED_SYM */
+#line 12659 "/home/buildbot/git/sql/sql_yacc.yy"
{ thd->parse_error(); MYSQL_YYABORT; }
-#line 44559 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44885 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1961: /* delete_limit_clause: LIMIT limit_option ROWS_SYM EXAMINED_SYM */
-#line 12465 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1980: /* delete_limit_clause: LIMIT limit_option ROWS_SYM EXAMINED_SYM */
+#line 12660 "/home/buildbot/git/sql/sql_yacc.yy"
{ thd->parse_error(); MYSQL_YYABORT; }
-#line 44565 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1962: /* order_limit_lock: order_or_limit */
-#line 12470 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1981: /* order_limit_lock: order_or_limit */
+#line 12665 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= (yyvsp[0].order_limit_lock);
(yyval.order_limit_lock)->lock.empty();
}
-#line 44574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44900 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1963: /* order_limit_lock: order_or_limit select_lock_type */
-#line 12475 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1982: /* order_limit_lock: order_or_limit select_lock_type */
+#line 12670 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= (yyvsp[-1].order_limit_lock);
(yyval.order_limit_lock)->lock= (yyvsp[0].select_lock);
}
-#line 44583 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1964: /* order_limit_lock: select_lock_type */
-#line 12480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1983: /* order_limit_lock: select_lock_type */
+#line 12675 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= new(thd->mem_root) Lex_order_limit_lock;
if (!(yyval.order_limit_lock))
@@ -44592,56 +44918,51 @@ yyreduce:
(yyval.order_limit_lock)->limit.clear();
(yyval.order_limit_lock)->lock= (yyvsp[0].select_lock);
}
-#line 44596 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44922 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1965: /* opt_order_limit_lock: %empty */
-#line 12492 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1984: /* opt_order_limit_lock: %empty */
+#line 12687 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select();
(yyval.order_limit_lock)= NULL;
}
-#line 44605 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44931 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1966: /* opt_order_limit_lock: order_limit_lock */
-#line 12496 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1985: /* opt_order_limit_lock: order_limit_lock */
+#line 12691 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.order_limit_lock)= (yyvsp[0].order_limit_lock); }
-#line 44611 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44937 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1969: /* opt_procedure_or_into: %empty */
-#line 12509 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1988: /* opt_procedure_or_into: %empty */
+#line 12704 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
}
-#line 44619 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1970: /* opt_procedure_or_into: procedure_clause opt_select_lock_type */
-#line 12513 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1989: /* opt_procedure_or_into: procedure_clause opt_select_lock_type */
+#line 12708 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
}
-#line 44627 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1971: /* opt_procedure_or_into: into opt_select_lock_type */
-#line 12517 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1990: /* opt_procedure_or_into: into opt_select_lock_type */
+#line 12712 "/home/buildbot/git/sql/sql_yacc.yy"
{
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- "<select expression> INTO <destination>;",
- "'SELECT <select list> INTO <destination>"
- " FROM...'");
(yyval.select_lock)= (yyvsp[0].select_lock);
+ status_var_increment(thd->status_var.feature_into_outfile);
}
-#line 44641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44962 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1972: /* order_or_limit: order_clause opt_limit_clause */
-#line 12531 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1991: /* order_or_limit: order_clause opt_limit_clause */
+#line 12721 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= new(thd->mem_root) Lex_order_limit_lock;
if (!(yyval.order_limit_lock))
@@ -44649,11 +44970,11 @@ yyreduce:
(yyval.order_limit_lock)->order_list= (yyvsp[-1].select_order);
(yyval.order_limit_lock)->limit= (yyvsp[0].select_limit);
}
-#line 44653 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1973: /* order_or_limit: limit_clause */
-#line 12539 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1992: /* order_or_limit: limit_clause */
+#line 12729 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= new(thd->mem_root) Lex_order_limit_lock;
if (!(yyval.order_limit_lock))
@@ -44661,209 +44982,209 @@ yyreduce:
(yyval.order_limit_lock)->order_list= NULL;
(yyval.order_limit_lock)->limit= (yyvsp[0].select_limit);
}
-#line 44665 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44986 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1976: /* int_num: opt_plus NUM */
-#line 12555 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1995: /* int_num: opt_plus NUM */
+#line 12745 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.num)= (int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1977: /* int_num: '-' NUM */
-#line 12556 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1996: /* int_num: '-' NUM */
+#line 12746 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.num)= -(int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 44998 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1978: /* ulong_num: opt_plus NUM */
-#line 12560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1997: /* ulong_num: opt_plus NUM */
+#line 12750 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45004 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1979: /* ulong_num: HEX_NUM */
-#line 12561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1998: /* ulong_num: HEX_NUM */
+#line 12751 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= strtoul((yyvsp[0].lex_str).str, (char**) 0, 16); }
-#line 44689 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45010 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1980: /* ulong_num: opt_plus LONG_NUM */
-#line 12562 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1999: /* ulong_num: opt_plus LONG_NUM */
+#line 12752 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44695 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45016 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1981: /* ulong_num: opt_plus ULONGLONG_NUM */
-#line 12563 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2000: /* ulong_num: opt_plus ULONGLONG_NUM */
+#line 12753 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45022 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1982: /* ulong_num: opt_plus DECIMAL_NUM */
-#line 12564 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2001: /* ulong_num: opt_plus DECIMAL_NUM */
+#line 12754 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45028 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1983: /* ulong_num: opt_plus FLOAT_NUM */
-#line 12565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2002: /* ulong_num: opt_plus FLOAT_NUM */
+#line 12755 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44713 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45034 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1984: /* real_ulong_num: NUM */
-#line 12569 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2003: /* real_ulong_num: NUM */
+#line 12759 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45040 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1985: /* real_ulong_num: HEX_NUM */
-#line 12570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2004: /* real_ulong_num: HEX_NUM */
+#line 12760 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (ulong) strtol((yyvsp[0].lex_str).str, (char**) 0, 16); }
-#line 44725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45046 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1986: /* real_ulong_num: LONG_NUM */
-#line 12571 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2005: /* real_ulong_num: LONG_NUM */
+#line 12761 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45052 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1987: /* real_ulong_num: ULONGLONG_NUM */
-#line 12572 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2006: /* real_ulong_num: ULONGLONG_NUM */
+#line 12762 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45058 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1988: /* real_ulong_num: dec_num_error */
-#line 12573 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2007: /* real_ulong_num: dec_num_error */
+#line 12763 "/home/buildbot/git/sql/sql_yacc.yy"
{ MYSQL_YYABORT; }
-#line 44743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45064 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1989: /* longlong_num: opt_plus NUM */
-#line 12577 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2008: /* longlong_num: opt_plus NUM */
+#line 12767 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= (longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45070 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1990: /* longlong_num: LONG_NUM */
-#line 12578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2009: /* longlong_num: LONG_NUM */
+#line 12768 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= (longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44755 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45076 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1991: /* longlong_num: '-' NUM */
-#line 12579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2010: /* longlong_num: '-' NUM */
+#line 12769 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= -(longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45082 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1992: /* longlong_num: '-' LONG_NUM */
-#line 12580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2011: /* longlong_num: '-' LONG_NUM */
+#line 12770 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= -(longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45088 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1993: /* ulonglong_num: opt_plus NUM */
-#line 12584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2012: /* ulonglong_num: opt_plus NUM */
+#line 12774 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44773 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1994: /* ulonglong_num: opt_plus ULONGLONG_NUM */
-#line 12585 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2013: /* ulonglong_num: opt_plus ULONGLONG_NUM */
+#line 12775 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44779 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45100 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1995: /* ulonglong_num: opt_plus LONG_NUM */
-#line 12586 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2014: /* ulonglong_num: opt_plus LONG_NUM */
+#line 12776 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45106 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1996: /* ulonglong_num: opt_plus DECIMAL_NUM */
-#line 12587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2015: /* ulonglong_num: opt_plus DECIMAL_NUM */
+#line 12777 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45112 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1997: /* ulonglong_num: opt_plus FLOAT_NUM */
-#line 12588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2016: /* ulonglong_num: opt_plus FLOAT_NUM */
+#line 12778 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44797 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45118 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1998: /* real_ulonglong_num: NUM */
-#line 12592 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2017: /* real_ulonglong_num: NUM */
+#line 12782 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45124 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 1999: /* real_ulonglong_num: ULONGLONG_NUM */
-#line 12593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2018: /* real_ulonglong_num: ULONGLONG_NUM */
+#line 12783 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44809 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45130 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2000: /* real_ulonglong_num: HEX_NUM */
-#line 12594 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2019: /* real_ulonglong_num: HEX_NUM */
+#line 12784 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulonglong_number)= strtoull((yyvsp[0].lex_str).str, (char**) 0, 16); }
-#line 44815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45136 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2001: /* real_ulonglong_num: LONG_NUM */
-#line 12595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2020: /* real_ulonglong_num: LONG_NUM */
+#line 12785 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44821 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45142 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2002: /* real_ulonglong_num: dec_num_error */
-#line 12596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2021: /* real_ulonglong_num: dec_num_error */
+#line 12786 "/home/buildbot/git/sql/sql_yacc.yy"
{ MYSQL_YYABORT; }
-#line 44827 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45148 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2003: /* dec_num_error: dec_num */
-#line 12601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2022: /* dec_num_error: dec_num */
+#line 12791 "/home/buildbot/git/sql/sql_yacc.yy"
{ thd->parse_error(ER_ONLY_INTEGERS_ALLOWED); }
-#line 44833 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45154 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2006: /* choice: ulong_num */
-#line 12610 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2025: /* choice: ulong_num */
+#line 12800 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.choice)= (yyvsp[0].ulong_num) != 0 ? HA_CHOICE_YES : HA_CHOICE_NO; }
-#line 44839 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45160 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2007: /* choice: DEFAULT */
-#line 12611 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2026: /* choice: DEFAULT */
+#line 12801 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.choice)= HA_CHOICE_UNDEF; }
-#line 44845 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45166 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2008: /* bool: ulong_num */
-#line 12615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2027: /* bool: ulong_num */
+#line 12805 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num) != 0; }
-#line 44851 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2009: /* bool: TRUE_SYM */
-#line 12616 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2028: /* bool: TRUE_SYM */
+#line 12806 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 1; }
-#line 44857 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45178 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2010: /* bool: FALSE_SYM */
-#line 12617 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2029: /* bool: FALSE_SYM */
+#line 12807 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 44863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2011: /* $@169: %empty */
-#line 12622 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2030: /* $@169: %empty */
+#line 12812 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
@@ -44887,43 +45208,43 @@ yyreduce:
Lex->clause_that_disallows_subselect= "PROCEDURE";
Select->options|= OPTION_PROCEDURE_CLAUSE;
}
-#line 44891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2012: /* procedure_clause: PROCEDURE_SYM ident $@169 '(' procedure_list ')' */
-#line 12646 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2031: /* procedure_clause: PROCEDURE_SYM ident $@169 '(' procedure_list ')' */
+#line 12836 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Subqueries are allowed from now.*/
Lex->clause_that_disallows_subselect= NULL;
}
-#line 44900 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45221 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2013: /* procedure_list: %empty */
-#line 12653 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2032: /* procedure_list: %empty */
+#line 12843 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44906 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45227 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2014: /* procedure_list: procedure_list2 */
-#line 12654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2033: /* procedure_list: procedure_list2 */
+#line 12844 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44912 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45233 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2017: /* procedure_item: remember_name expr remember_end */
-#line 12664 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2036: /* procedure_item: remember_name expr remember_end */
+#line 12854 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_proc_to_list(thd, (yyvsp[-1].item))))
MYSQL_YYABORT;
if (!(yyvsp[-1].item)->name.str || (yyvsp[-1].item)->name.str == item_empty_name)
(yyvsp[-1].item)->set_name(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 44923 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2018: /* $@170: %empty */
-#line 12673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2037: /* $@170: %empty */
+#line 12863 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (!lex->describe &&
@@ -44931,23 +45252,23 @@ yyreduce:
select_dumpvar(thd)))))
MYSQL_YYABORT;
}
-#line 44935 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45256 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2019: /* select_var_list_init: $@170 select_var_list */
-#line 12681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2038: /* select_var_list_init: $@170 select_var_list */
+#line 12871 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44941 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45262 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2021: /* select_var_list: select_var_ident */
-#line 12686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2040: /* select_var_list: select_var_ident */
+#line 12876 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44947 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2022: /* select_var_ident: select_outvar */
-#line 12690 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2041: /* select_var_ident: select_outvar */
+#line 12880 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->result)
{
@@ -44964,11 +45285,11 @@ yyreduce:
DBUG_ASSERT(Lex->describe);
}
}
-#line 44968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2023: /* select_outvar: '@' ident_or_text */
-#line 12710 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2042: /* select_outvar: '@' ident_or_text */
+#line 12900 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -44978,35 +45299,35 @@ yyreduce:
(yyval.myvar) = Lex->result ? new (thd->mem_root) my_var_user(&(yyvsp[0].lex_str)) : NULL;
}
-#line 44982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45303 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2024: /* select_outvar: ident_or_text */
-#line 12720 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2043: /* select_outvar: ident_or_text */
+#line 12910 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.myvar)= Lex->create_outvar(thd, &(yyvsp[0].lex_str))) && Lex->result))
MYSQL_YYABORT;
}
-#line 44991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45312 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2025: /* select_outvar: ident '.' ident */
-#line 12725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2044: /* select_outvar: ident '.' ident */
+#line 12915 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.myvar)= Lex->create_outvar(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))) && Lex->result))
MYSQL_YYABORT;
}
-#line 45000 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45321 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2026: /* into: INTO into_destination */
-#line 12733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2045: /* into: INTO into_destination */
+#line 12923 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45327 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2027: /* $@171: %empty */
-#line 12738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2046: /* $@171: %empty */
+#line 12928 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
@@ -45016,18 +45337,19 @@ yyreduce:
new (thd->mem_root)
select_export(thd, lex->exchange))))
MYSQL_YYABORT;
+ status_var_increment(thd->status_var.feature_into_outfile);
}
-#line 45021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45343 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2028: /* $@172: %empty */
-#line 12749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2047: /* $@172: %empty */
+#line 12940 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->exchange->cs= (yyvsp[0].charset); }
-#line 45027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2030: /* into_destination: DUMPFILE TEXT_STRING_filesystem */
-#line 12752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2049: /* into_destination: DUMPFILE TEXT_STRING_filesystem */
+#line 12943 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (!lex->describe)
@@ -45042,19 +45364,20 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 45046 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45368 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2031: /* into_destination: select_var_list_init */
-#line 12767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2050: /* into_destination: select_var_list_init */
+#line 12958 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
+ status_var_increment(thd->status_var.feature_into_variable);
}
-#line 45054 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45377 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2032: /* $@173: %empty */
-#line 12778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2051: /* $@173: %empty */
+#line 12970 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_DO;
@@ -45062,48 +45385,48 @@ yyreduce:
MYSQL_YYABORT;
lex->init_select();
}
-#line 45066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45389 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2033: /* do: DO_SYM $@173 expr_list */
-#line 12786 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2052: /* do: DO_SYM $@173 expr_list */
+#line 12978 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->insert_list= (yyvsp[0].item_list);
Lex->pop_select(); //main select
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 45077 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45400 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2034: /* $@174: %empty */
-#line 12800 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2053: /* $@174: %empty */
+#line 12992 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_command(SQLCOM_DROP_TABLE, (yyvsp[-2].num), (yyvsp[0].object_ddl_options));
YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 45088 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45411 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2035: /* drop: DROP opt_temporary table_or_tables opt_if_exists $@174 table_list opt_lock_wait_timeout opt_restrict */
-#line 12807 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2054: /* drop: DROP opt_temporary table_or_tables opt_if_exists $@174 table_list opt_lock_wait_timeout opt_restrict */
+#line 12999 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45417 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2036: /* $@175: %empty */
-#line 12809 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2055: /* $@175: %empty */
+#line 13001 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 45103 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45426 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2037: /* drop: DROP INDEX_SYM $@175 opt_if_exists_table_element ident ON table_ident opt_lock_wait_timeout */
-#line 12814 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2056: /* drop: DROP INDEX_SYM $@175 opt_if_exists_table_element ident ON table_ident opt_lock_wait_timeout */
+#line 13006 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -45121,82 +45444,82 @@ yyreduce:
MYSQL_YYABORT;
Lex->pop_select(); //main select
}
-#line 45125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45448 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2038: /* drop: DROP DATABASE opt_if_exists ident */
-#line 12832 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2057: /* drop: DROP DATABASE opt_if_exists ident */
+#line 13024 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_command(SQLCOM_DROP_DB, (yyvsp[-1].object_ddl_options));
lex->name= (yyvsp[0].ident_sys);
}
-#line 45135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45458 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2039: /* drop: DROP USER_SYM opt_if_exists clear_privileges user_list */
-#line 12838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2058: /* drop: DROP USER_SYM opt_if_exists clear_privileges user_list */
+#line 13030 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_DROP_USER, (yyvsp[-2].object_ddl_options));
}
-#line 45143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2040: /* drop: DROP ROLE_SYM opt_if_exists clear_privileges role_list */
-#line 12842 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2059: /* drop: DROP ROLE_SYM opt_if_exists clear_privileges role_list */
+#line 13034 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_DROP_ROLE, (yyvsp[-2].object_ddl_options));
}
-#line 45151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45474 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2041: /* $@176: %empty */
-#line 12846 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2060: /* $@176: %empty */
+#line 13038 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->set_command(SQLCOM_DROP_VIEW, (yyvsp[0].object_ddl_options));
YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 45162 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45485 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2042: /* drop: DROP VIEW_SYM opt_if_exists $@176 table_list opt_restrict */
-#line 12853 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2061: /* drop: DROP VIEW_SYM opt_if_exists $@176 table_list opt_restrict */
+#line 13045 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45168 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45491 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2043: /* drop: DROP EVENT_SYM opt_if_exists sp_name */
-#line 12855 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2062: /* drop: DROP EVENT_SYM opt_if_exists sp_name */
+#line 13047 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->spname= (yyvsp[0].spname);
Lex->set_command(SQLCOM_DROP_EVENT, (yyvsp[-1].object_ddl_options));
}
-#line 45177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45500 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2044: /* drop: DROP TRIGGER_SYM opt_if_exists sp_name */
-#line 12860 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2063: /* drop: DROP TRIGGER_SYM opt_if_exists sp_name */
+#line 13052 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->set_command(SQLCOM_DROP_TRIGGER, (yyvsp[-1].object_ddl_options));
lex->spname= (yyvsp[0].spname);
}
-#line 45187 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45510 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2045: /* drop: DROP SERVER_SYM opt_if_exists ident_or_text */
-#line 12866 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2064: /* drop: DROP SERVER_SYM opt_if_exists ident_or_text */
+#line 13058 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_DROP_SERVER, (yyvsp[-1].object_ddl_options));
Lex->server_options.reset((yyvsp[0].lex_str));
}
-#line 45196 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45519 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2046: /* $@177: %empty */
-#line 12872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2065: /* $@177: %empty */
+#line 13064 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->set_command(SQLCOM_DROP_SEQUENCE, (yyvsp[-2].num), (yyvsp[0].object_ddl_options));
@@ -45204,17 +45527,17 @@ yyreduce:
YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 45208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45531 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2047: /* drop: DROP opt_temporary SEQUENCE_SYM opt_if_exists $@177 table_list */
-#line 12880 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2066: /* drop: DROP opt_temporary SEQUENCE_SYM opt_if_exists $@177 table_list */
+#line 13072 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45214 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45537 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2051: /* table_name: table_ident */
-#line 12891 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2070: /* table_name: table_ident */
+#line 13083 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!thd->lex->current_select_or_default()->
add_table_to_list(thd, (yyvsp[0].table), NULL,
@@ -45223,11 +45546,11 @@ yyreduce:
YYPS->m_mdl_type))
MYSQL_YYABORT;
}
-#line 45227 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45550 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2052: /* table_name_with_opt_use_partition: table_ident opt_use_partition */
-#line 12903 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2071: /* table_name_with_opt_use_partition: table_ident opt_use_partition */
+#line 13095 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL,
TL_OPTION_UPDATING,
@@ -45237,11 +45560,11 @@ yyreduce:
(yyvsp[0].string_list))))
MYSQL_YYABORT;
}
-#line 45241 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45564 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2055: /* table_alias_ref: table_ident_opt_wild */
-#line 12921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2074: /* table_alias_ref: table_ident_opt_wild */
+#line 13113 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->
add_table_to_list(thd, (yyvsp[0].table), NULL,
@@ -45251,113 +45574,113 @@ yyreduce:
YYPS->m_mdl_type)))
MYSQL_YYABORT;
}
-#line 45255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45578 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2056: /* opt_if_exists_table_element: %empty */
-#line 12934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2075: /* opt_if_exists_table_element: %empty */
+#line 13126 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= FALSE;
(yyval.num)= 0;
}
-#line 45264 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45587 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2057: /* opt_if_exists_table_element: IF_SYM EXISTS */
-#line 12939 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2076: /* opt_if_exists_table_element: IF_SYM EXISTS */
+#line 13131 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= TRUE;
(yyval.num)= 1;
}
-#line 45273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45596 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2058: /* opt_if_exists: %empty */
-#line 12947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2077: /* opt_if_exists: %empty */
+#line 13139 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_NONE);
}
-#line 45281 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45604 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2059: /* opt_if_exists: IF_SYM EXISTS */
-#line 12951 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2078: /* opt_if_exists: IF_SYM EXISTS */
+#line 13143 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_IF_EXISTS);
}
-#line 45289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2060: /* opt_temporary: %empty */
-#line 12957 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2079: /* opt_temporary: %empty */
+#line 13149 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 45295 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45618 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2061: /* opt_temporary: TEMPORARY */
-#line 12958 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2080: /* opt_temporary: TEMPORARY */
+#line 13150 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= HA_LEX_CREATE_TMP_TABLE; }
-#line 45301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2062: /* $@178: %empty */
-#line 12966 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2081: /* $@178: %empty */
+#line 13158 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_INSERT;
Lex->duplicates= DUP_ERROR;
thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
thd->get_stmt_da()->reset_current_row_for_warning(1);
}
-#line 45312 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2063: /* $@179: %empty */
-#line 12973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2082: /* $@179: %empty */
+#line 13165 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_lock_for_tables((yyvsp[-3].lock_type), true, false);
}
-#line 45320 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45643 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2064: /* insert: INSERT $@178 insert_start insert_lock_option opt_ignore opt_into insert_table $@179 insert_field_spec opt_insert_update opt_returning stmt_end */
-#line 12978 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2083: /* insert: INSERT $@178 insert_start insert_lock_option opt_ignore opt_into insert_table $@179 insert_field_spec opt_insert_update opt_returning stmt_end */
+#line 13170 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mark_first_table_as_inserting();
thd->get_stmt_da()->reset_current_row_for_warning(0);
}
-#line 45329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45652 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2065: /* $@180: %empty */
-#line 12986 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2084: /* $@180: %empty */
+#line 13178 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_REPLACE;
Lex->duplicates= DUP_REPLACE;
thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
thd->get_stmt_da()->reset_current_row_for_warning(1);
}
-#line 45340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45663 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2066: /* $@181: %empty */
-#line 12993 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2085: /* $@181: %empty */
+#line 13185 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_lock_for_tables((yyvsp[-2].lock_type), true, false);
}
-#line 45348 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2067: /* replace: REPLACE $@180 insert_start replace_lock_option opt_into insert_table $@181 insert_field_spec opt_returning stmt_end */
-#line 12998 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2086: /* replace: REPLACE $@180 insert_start replace_lock_option opt_into insert_table $@181 insert_field_spec opt_returning stmt_end */
+#line 13190 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mark_first_table_as_inserting();
thd->get_stmt_da()->reset_current_row_for_warning(0);
}
-#line 45357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45680 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2068: /* insert_start: %empty */
-#line 13004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2087: /* insert_start: %empty */
+#line 13196 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -45365,21 +45688,21 @@ yyreduce:
Lex->inc_select_stack_outer_barrier();
Lex->current_select->parsing_place= BEFORE_OPT_LIST;
}
-#line 45369 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45692 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2069: /* stmt_end: %empty */
-#line 13013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2088: /* stmt_end: %empty */
+#line 13205 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 45379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45702 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2070: /* insert_lock_option: %empty */
-#line 13022 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2089: /* insert_lock_option: %empty */
+#line 13214 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
If it is SP we do not allow insert optimisation when result of
@@ -45388,70 +45711,70 @@ yyreduce:
*/
(yyval.lock_type)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT);
}
-#line 45392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45715 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2072: /* insert_lock_option: HIGH_PRIORITY */
-#line 13031 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2091: /* insert_lock_option: HIGH_PRIORITY */
+#line 13223 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE; }
-#line 45398 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45721 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2073: /* replace_lock_option: %empty */
-#line 13035 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2092: /* replace_lock_option: %empty */
+#line 13227 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_DEFAULT; }
-#line 45404 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45727 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2075: /* insert_replace_option: LOW_PRIORITY */
-#line 13040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2094: /* insert_replace_option: LOW_PRIORITY */
+#line 13232 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; }
-#line 45410 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45733 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2076: /* insert_replace_option: DELAYED_SYM */
-#line 13042 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2095: /* insert_replace_option: DELAYED_SYM */
+#line 13234 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->keyword_delayed_begin_offset= (uint)((yyvsp[0].kwd).pos() - thd->query());
Lex->keyword_delayed_end_offset= (uint)((yyvsp[0].kwd).end() - thd->query());
(yyval.lock_type)= TL_WRITE_DELAYED;
}
-#line 45420 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2079: /* $@182: %empty */
-#line 13052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2098: /* $@182: %empty */
+#line 13244 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->save_parsing_place= Select->parsing_place;
}
-#line 45428 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45751 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2080: /* insert_table: $@182 table_name_with_opt_use_partition */
-#line 13056 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2099: /* insert_table: $@182 table_name_with_opt_use_partition */
+#line 13248 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
//lex->field_list.empty();
lex->many_values.empty();
lex->insert_list=0;
}
-#line 45439 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45762 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2081: /* insert_field_spec: insert_values */
-#line 13065 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2100: /* insert_field_spec: insert_values */
+#line 13257 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45445 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45768 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2082: /* insert_field_spec: insert_field_list insert_values */
-#line 13066 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2101: /* insert_field_spec: insert_field_list insert_values */
+#line 13258 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45451 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45774 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2083: /* $@183: %empty */
-#line 13068 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2102: /* $@183: %empty */
+#line 13260 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(!(lex->insert_list= new (thd->mem_root) List_item)) ||
@@ -45460,105 +45783,105 @@ yyreduce:
MYSQL_YYABORT;
lex->current_select->parsing_place= NO_MATTER;
}
-#line 45464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2085: /* insert_field_list: LEFT_PAREN_ALT opt_fields ')' */
-#line 13081 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2104: /* insert_field_list: LEFT_PAREN_ALT opt_fields ')' */
+#line 13273 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->current_select->parsing_place= AFTER_LIST;
}
-#line 45472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45795 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2088: /* fields: fields ',' insert_ident */
-#line 13093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2107: /* fields: fields ',' insert_ident */
+#line 13285 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 45478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45801 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2089: /* fields: insert_ident */
-#line 13094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2108: /* fields: insert_ident */
+#line 13286 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 45484 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45807 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2090: /* insert_values: create_select_query_expression */
-#line 13100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2109: /* insert_values: create_select_query_expression */
+#line 13292 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45813 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2095: /* ident_eq_value: simple_ident_nospvar equal expr_or_ignore_or_default */
-#line 13115 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2114: /* ident_eq_value: simple_ident_nospvar equal expr_or_ignore_or_default */
+#line 13307 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(lex->field_list.push_back((yyvsp[-2].item), thd->mem_root)) ||
unlikely(lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45501 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45824 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2096: /* equal: '=' */
-#line 13124 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2115: /* equal: '=' */
+#line 13316 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2097: /* equal: SET_VAR */
-#line 13125 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2116: /* equal: SET_VAR */
+#line 13317 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45513 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45836 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2098: /* opt_equal: %empty */
-#line 13129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2117: /* opt_equal: %empty */
+#line 13321 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45519 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45842 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2099: /* opt_equal: equal */
-#line 13130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2118: /* opt_equal: equal */
+#line 13322 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45525 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45848 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2100: /* opt_with: opt_equal */
-#line 13134 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2119: /* opt_with: opt_equal */
+#line 13326 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45531 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2101: /* opt_with: WITH */
-#line 13135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2120: /* opt_with: WITH */
+#line 13327 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45537 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45860 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2102: /* opt_by: opt_equal */
-#line 13139 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2121: /* opt_by: opt_equal */
+#line 13331 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45543 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45866 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2103: /* opt_by: BY */
-#line 13140 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2122: /* opt_by: BY */
+#line 13332 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45549 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2104: /* $@184: %empty */
-#line 13145 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2123: /* $@184: %empty */
+#line 13337 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!(Lex->insert_list= new (thd->mem_root) List_item)))
MYSQL_YYABORT;
}
-#line 45558 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45881 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2105: /* no_braces: '(' $@184 opt_values ')' */
-#line 13150 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2124: /* no_braces: '(' $@184 opt_values ')' */
+#line 13342 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
thd->get_stmt_da()->inc_current_row_for_warning();
@@ -45566,20 +45889,20 @@ yyreduce:
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45570 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45893 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2106: /* $@185: %empty */
-#line 13161 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2125: /* $@185: %empty */
+#line 13353 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!(Lex->insert_list= new (thd->mem_root) List_item)))
MYSQL_YYABORT;
}
-#line 45579 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45902 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2107: /* no_braces_with_names: '(' $@185 opt_values_with_names ')' */
-#line 13166 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2126: /* no_braces_with_names: '(' $@185 opt_values_with_names ')' */
+#line 13358 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
thd->get_stmt_da()->inc_current_row_for_warning();
@@ -45587,41 +45910,41 @@ yyreduce:
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45914 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2108: /* opt_values: %empty */
-#line 13176 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2127: /* opt_values: %empty */
+#line 13368 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45920 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2110: /* opt_values_with_names: %empty */
-#line 13181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2129: /* opt_values_with_names: %empty */
+#line 13373 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45926 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2112: /* values: values ',' expr_or_ignore_or_default */
-#line 13187 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2131: /* values: values ',' expr_or_ignore_or_default */
+#line 13379 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45935 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2113: /* values: expr_or_ignore_or_default */
-#line 13192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2132: /* values: expr_or_ignore_or_default */
+#line 13384 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45621 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45944 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2114: /* values_with_names: values_with_names ',' remember_name expr_or_ignore_or_default remember_end */
-#line 13200 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2133: /* values_with_names: values_with_names ',' remember_name expr_or_ignore_or_default remember_end */
+#line 13392 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[-1].item), thd->mem_root)))
MYSQL_YYABORT;
@@ -45629,11 +45952,11 @@ yyreduce:
if (!(yyvsp[-1].item)->name.str || (yyvsp[-1].item)->name.str == item_empty_name)
(yyvsp[-1].item)->set_name(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 45633 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45956 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2115: /* values_with_names: remember_name expr_or_ignore_or_default remember_end */
-#line 13208 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2134: /* values_with_names: remember_name expr_or_ignore_or_default remember_end */
+#line 13400 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[-1].item), thd->mem_root)))
MYSQL_YYABORT;
@@ -45641,65 +45964,65 @@ yyreduce:
if (!(yyvsp[-1].item)->name.str || (yyvsp[-1].item)->name.str == item_empty_name)
(yyvsp[-1].item)->set_name(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 45645 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2116: /* expr_or_ignore: expr */
-#line 13218 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2135: /* expr_or_ignore: expr */
+#line 13410 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item);}
-#line 45651 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2117: /* expr_or_ignore: IGNORE_SYM */
-#line 13220 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2136: /* expr_or_ignore: IGNORE_SYM */
+#line 13412 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_ignore_specification(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 45661 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45984 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2118: /* expr_or_ignore_or_default: expr_or_ignore */
-#line 13228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2137: /* expr_or_ignore_or_default: expr_or_ignore */
+#line 13420 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item);}
-#line 45667 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 45990 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2119: /* expr_or_ignore_or_default: DEFAULT */
-#line 13230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2138: /* expr_or_ignore_or_default: DEFAULT */
+#line 13422 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_default_specification(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 45677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46000 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2121: /* $@186: %empty */
-#line 13239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2140: /* $@186: %empty */
+#line 13431 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->duplicates= DUP_UPDATE; }
-#line 45683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2122: /* $@187: %empty */
-#line 13241 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2141: /* $@187: %empty */
+#line 13433 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_UPDATE_ON_DUP_KEY;
}
-#line 45691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46014 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2123: /* opt_insert_update: ON DUPLICATE_SYM $@186 KEY_SYM UPDATE_SYM $@187 insert_update_list */
-#line 13245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2142: /* opt_insert_update: ON DUPLICATE_SYM $@186 KEY_SYM UPDATE_SYM $@187 insert_update_list */
+#line 13437 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
}
-#line 45699 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46022 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2124: /* update_table_list: table_ident opt_use_partition for_portion_of_time_clause opt_table_alias_clause opt_key_definition */
-#line 13253 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2143: /* update_table_list: table_ident opt_use_partition for_portion_of_time_clause opt_table_alias_clause opt_key_definition */
+#line 13445 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Select->add_table_to_list(thd, (yyvsp[-4].table), (yyvsp[-1].lex_str_ptr),
0,
@@ -45710,17 +46033,17 @@ yyreduce:
MYSQL_YYABORT;
(yyval.table_list)->period_conditions= Lex->period_conditions;
}
-#line 45714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46037 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2125: /* update_table_list: join_table_list */
-#line 13263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2144: /* update_table_list: join_table_list */
+#line 13455 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 45720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46043 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2126: /* $@188: %empty */
-#line 13270 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2145: /* $@188: %empty */
+#line 13462 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (Lex->main_select_push())
@@ -45729,15 +46052,20 @@ yyreduce:
lex->sql_command= SQLCOM_UPDATE;
lex->duplicates= DUP_ERROR;
}
-#line 45733 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2127: /* $@189: %empty */
-#line 13280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2146: /* $@189: %empty */
+#line 13472 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ bool is_multiupdate= false;
+ LEX *lex= Lex;
SELECT_LEX *slex= Lex->first_select_lex();
if (slex->table_list.elements > 1)
+ {
Lex->sql_command= SQLCOM_UPDATE_MULTI;
+ is_multiupdate= true;
+ }
else if (slex->get_table_list()->derived)
{
/* it is single table update and it is update of derived table */
@@ -45745,229 +46073,276 @@ yyreduce:
slex->get_table_list()->alias.str, "UPDATE");
MYSQL_YYABORT;
}
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_update(is_multiupdate)))
+ MYSQL_YYABORT;
/*
In case of multi-update setting write lock for all tables may
- be too pessimistic. We will decrease lock level if possible in
- mysql_multi_update().
+ be too pessimistic. We will decrease lock level if possible
+ later while processing the statement.
*/
slex->set_lock_for_tables((yyvsp[-4].lock_type), slex->table_list.elements == 1, false);
}
-#line 45756 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46087 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2128: /* $@190: %empty */
-#line 13299 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2147: /* $@190: %empty */
+#line 13499 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-1].select_order))
Select->order_list= *((yyvsp[-1].select_order));
}
-#line 45765 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46096 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2129: /* update: UPDATE_SYM $@188 opt_low_priority opt_ignore update_table_list SET update_list $@189 opt_where_clause opt_order_clause delete_limit_clause $@190 stmt_end */
-#line 13302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2148: /* update: UPDATE_SYM $@188 opt_low_priority opt_ignore update_table_list SET update_list $@189 opt_where_clause opt_order_clause delete_limit_clause $@190 stmt_end */
+#line 13502 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45771 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46102 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2132: /* update_elem: simple_ident_nospvar equal DEFAULT */
-#line 13312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2151: /* update_elem: simple_ident_nospvar equal DEFAULT */
+#line 13512 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *def= new (thd->mem_root) Item_default_value(thd,
Lex->current_context(), (yyvsp[-2].item), 1);
if (!def || add_item_to_list(thd, (yyvsp[-2].item)) || add_value_to_list(thd, def))
MYSQL_YYABORT;
}
-#line 45782 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46113 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2133: /* update_elem: simple_ident_nospvar equal expr_or_ignore */
-#line 13319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2152: /* update_elem: simple_ident_nospvar equal expr_or_ignore */
+#line 13519 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (add_item_to_list(thd, (yyvsp[-2].item)) || add_value_to_list(thd, (yyvsp[0].item)))
MYSQL_YYABORT;
}
-#line 45791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46122 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2136: /* insert_update_elem: simple_ident_nospvar equal expr_or_ignore_or_default */
-#line 13332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2155: /* insert_update_elem: simple_ident_nospvar equal expr_or_ignore_or_default */
+#line 13532 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->update_list.push_back((yyvsp[-2].item), thd->mem_root)) ||
unlikely(lex->value_list.push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46133 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2137: /* opt_low_priority: %empty */
-#line 13341 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2156: /* opt_low_priority: %empty */
+#line 13541 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_DEFAULT; }
-#line 45808 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46139 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2138: /* opt_low_priority: LOW_PRIORITY */
-#line 13342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2157: /* opt_low_priority: LOW_PRIORITY */
+#line 13542 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; }
-#line 45814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2139: /* $@191: %empty */
-#line 13349 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2158: /* $@191: %empty */
+#line 13549 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
- lex->sql_command= SQLCOM_DELETE;
YYPS->m_lock_type= TL_WRITE_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_WRITE;
if (Lex->main_select_push())
MYSQL_YYABORT;
- lex->init_select();
+ mysql_init_delete(lex);
lex->ignore= 0;
lex->first_select_lex()->order_list.empty();
}
-#line 45830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46160 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2140: /* delete: DELETE_SYM $@191 delete_part2 */
-#line 13361 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2159: /* delete: DELETE_SYM $@191 delete_part2 */
+#line 13560 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 45839 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46169 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2141: /* opt_delete_system_time: %empty */
-#line 13369 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2160: /* opt_delete_system_time: %empty */
+#line 13568 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_HISTORY);
}
-#line 45847 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2142: /* opt_delete_system_time: BEFORE_SYM SYSTEM_TIME_SYM history_point */
-#line 13373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2161: /* opt_delete_system_time: BEFORE_SYM SYSTEM_TIME_SYM history_point */
+#line 13572 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_BEFORE, (yyvsp[0].vers_history_point));
}
-#line 45855 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2143: /* delete_part2: opt_delete_options single_multi */
-#line 13379 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2162: /* delete_part2: opt_delete_options single_multi */
+#line 13578 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45861 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46191 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2144: /* delete_part2: HISTORY_SYM delete_single_table opt_delete_system_time */
-#line 13381 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2163: /* $@192: %empty */
+#line 13580 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_table()->vers_conditions= Lex->vers_conditions;
- Lex->pop_select(); //main select
- if (Lex->check_main_unit_semantics())
+ LEX *lex= Lex;
+ lex->last_table()->vers_conditions= lex->vers_conditions;
+ lex->sql_command= SQLCOM_DELETE;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(false)))
+ MYSQL_YYABORT;
+ if (lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 45872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46206 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2145: /* delete_single_table: FROM table_ident opt_use_partition */
-#line 13391 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2164: /* delete_part2: HISTORY_SYM delete_single_table opt_delete_system_time $@192 stmt_end */
+#line 13591 "/home/buildbot/git/sql/sql_yacc.yy"
+ {}
+#line 46212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 2165: /* delete_single_table: FROM table_ident opt_use_partition */
+#line 13596 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->
add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING,
YYPS->m_lock_type,
YYPS->m_mdl_type,
NULL,
+ 0)))
+ MYSQL_YYABORT;
+ Select->table_list.save_and_clear(&Lex->auxiliary_table_list);
+ /* Save the number of auxiliary tables */
+ Lex->table_count_update= 1;
+
+ Lex->query_tables= 0;
+ Lex->query_tables_last= &Lex->query_tables;
+ if (unlikely(!Select->
+ add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING,
+ YYPS->m_lock_type,
+ YYPS->m_mdl_type,
+ NULL,
(yyvsp[0].string_list))))
MYSQL_YYABORT;
+ Lex->auxiliary_table_list.first->correspondent_table=
+ Lex->query_tables;
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
-#line 45888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2146: /* delete_single_table_for_period: delete_single_table opt_for_portion_of_time_clause */
-#line 13406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2166: /* delete_single_table_for_period: delete_single_table opt_for_portion_of_time_clause */
+#line 13626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].num))
Lex->last_table()->period_conditions= Lex->period_conditions;
}
-#line 45897 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46252 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2147: /* single_multi: delete_single_table_for_period opt_where_clause opt_order_clause delete_limit_clause opt_returning */
-#line 13418 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2167: /* $@193: %empty */
+#line 13638 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ LEX *lex= Lex;
if ((yyvsp[-2].select_order))
Select->order_list= *((yyvsp[-2].select_order));
- Lex->pop_select(); //main select
+ lex->sql_command= SQLCOM_DELETE;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(false)))
+ MYSQL_YYABORT;
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 45909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2148: /* $@192: %empty */
-#line 13426 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2168: /* single_multi: delete_single_table_for_period opt_where_clause opt_order_clause delete_limit_clause opt_returning $@193 stmt_end */
+#line 13649 "/home/buildbot/git/sql/sql_yacc.yy"
+ {}
+#line 46274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 2169: /* $@194: %empty */
+#line 13651 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE_MULTI;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(true)))
+ MYSQL_YYABORT;
mysql_init_multi_delete(Lex);
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
-#line 45919 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2149: /* $@193: %empty */
-#line 13432 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2170: /* $@195: %empty */
+#line 13662 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(multi_delete_set_locks_and_link_aux_tables(Lex)))
MYSQL_YYABORT;
}
-#line 45928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2150: /* single_multi: table_wild_list $@192 FROM join_table_list opt_where_clause $@193 stmt_end */
-#line 13435 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2171: /* single_multi: table_alias_ref_list $@194 FROM join_table_list opt_where_clause $@195 stmt_end */
+#line 13665 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2151: /* $@194: %empty */
-#line 13437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2172: /* $@196: %empty */
+#line 13667 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE_MULTI;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(true)))
+ MYSQL_YYABORT;
mysql_init_multi_delete(Lex);
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
-#line 45944 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46319 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2152: /* $@195: %empty */
-#line 13443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2173: /* $@197: %empty */
+#line 13678 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(multi_delete_set_locks_and_link_aux_tables(Lex)))
MYSQL_YYABORT;
}
-#line 45953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2153: /* single_multi: FROM table_alias_ref_list $@194 USING join_table_list opt_where_clause $@195 stmt_end */
-#line 13446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2174: /* single_multi: FROM table_alias_ref_list $@196 USING join_table_list opt_where_clause $@197 stmt_end */
+#line 13681 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2154: /* opt_returning: %empty */
-#line 13451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2175: /* opt_returning: %empty */
+#line 13686 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(!Lex->has_returning());
}
-#line 45967 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46342 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2155: /* $@196: %empty */
-#line 13455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2176: /* $@198: %empty */
+#line 13690 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(!Lex->has_returning());
/*
@@ -45993,100 +46368,62 @@ yyreduce:
thd->lex->current_select->parsing_place= IN_RETURNING;
thd->lex->push_context(&thd->lex->returning()->context);
}
-#line 45997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46372 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2156: /* opt_returning: RETURNING_SYM $@196 select_item_list */
-#line 13481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2177: /* opt_returning: RETURNING_SYM $@198 select_item_list */
+#line 13716 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->lex->pop_context();
thd->lex->current_select->parsing_place= NO_MATTER;
}
-#line 46006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
- break;
-
- case 2159: /* table_wild_one: ident opt_wild */
-#line 13494 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- Table_ident *ti= new (thd->mem_root) Table_ident(&(yyvsp[-1].ident_sys));
- if (unlikely(ti == NULL))
- MYSQL_YYABORT;
- if (unlikely(!Select->
- add_table_to_list(thd,
- ti,
- NULL,
- (TL_OPTION_UPDATING |
- TL_OPTION_ALIAS),
- YYPS->m_lock_type,
- YYPS->m_mdl_type)))
- MYSQL_YYABORT;
- }
-#line 46025 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
- break;
-
- case 2160: /* table_wild_one: ident '.' ident opt_wild */
-#line 13509 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- Table_ident *ti= new (thd->mem_root) Table_ident(thd, &(yyvsp[-3].ident_sys), &(yyvsp[-1].ident_sys), 0);
- if (unlikely(ti == NULL))
- MYSQL_YYABORT;
- if (unlikely(!Select->
- add_table_to_list(thd,
- ti,
- NULL,
- (TL_OPTION_UPDATING |
- TL_OPTION_ALIAS),
- YYPS->m_lock_type,
- YYPS->m_mdl_type)))
- MYSQL_YYABORT;
- }
-#line 46044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46381 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2161: /* opt_wild: %empty */
-#line 13526 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2178: /* opt_wild: %empty */
+#line 13723 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2162: /* opt_wild: '.' '*' */
-#line 13527 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2179: /* opt_wild: '.' '*' */
+#line 13724 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2163: /* opt_delete_options: %empty */
-#line 13531 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2180: /* opt_delete_options: %empty */
+#line 13728 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46062 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46399 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2164: /* opt_delete_options: opt_delete_option opt_delete_options */
-#line 13532 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2181: /* opt_delete_options: opt_delete_option opt_delete_options */
+#line 13729 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46405 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2165: /* opt_delete_option: QUICK */
-#line 13536 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2182: /* opt_delete_option: QUICK */
+#line 13733 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= OPTION_QUICK; }
-#line 46074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46411 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2166: /* opt_delete_option: LOW_PRIORITY */
-#line 13537 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2183: /* opt_delete_option: LOW_PRIORITY */
+#line 13734 "/home/buildbot/git/sql/sql_yacc.yy"
{ YYPS->m_lock_type= TL_WRITE_LOW_PRIORITY; }
-#line 46080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46417 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2167: /* opt_delete_option: IGNORE_SYM */
-#line 13538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2184: /* opt_delete_option: IGNORE_SYM */
+#line 13735 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1; }
-#line 46086 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46423 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2168: /* $@197: %empty */
-#line 13543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2185: /* $@199: %empty */
+#line 13740 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= Lex;
lex->sql_command= SQLCOM_TRUNCATE;
@@ -46097,11 +46434,11 @@ yyreduce:
YYPS->m_lock_type= TL_WRITE;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 46101 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46438 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2169: /* $@198: %empty */
-#line 13554 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2186: /* $@200: %empty */
+#line 13751 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -46109,105 +46446,105 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 46113 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46450 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2170: /* truncate: TRUNCATE_SYM $@197 opt_table_sym table_name opt_lock_wait_timeout $@198 opt_truncate_table_storage_clause */
-#line 13561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2187: /* truncate: TRUNCATE_SYM $@199 opt_table_sym table_name opt_lock_wait_timeout $@200 opt_truncate_table_storage_clause */
+#line 13758 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 46119 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46456 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2177: /* profile_def: CPU_SYM */
-#line 13579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2194: /* profile_def: CPU_SYM */
+#line 13776 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_CPU;
}
-#line 46127 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2178: /* profile_def: MEMORY_SYM */
-#line 13583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2195: /* profile_def: MEMORY_SYM */
+#line 13780 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_MEMORY;
}
-#line 46135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2179: /* profile_def: BLOCK_SYM IO_SYM */
-#line 13587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2196: /* profile_def: BLOCK_SYM IO_SYM */
+#line 13784 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_BLOCK_IO;
}
-#line 46143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46480 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2180: /* profile_def: CONTEXT_SYM SWITCHES_SYM */
-#line 13591 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2197: /* profile_def: CONTEXT_SYM SWITCHES_SYM */
+#line 13788 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_CONTEXT;
}
-#line 46151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2181: /* profile_def: PAGE_SYM FAULTS_SYM */
-#line 13595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2198: /* profile_def: PAGE_SYM FAULTS_SYM */
+#line 13792 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_PAGE_FAULTS;
}
-#line 46159 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2182: /* profile_def: IPC_SYM */
-#line 13599 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2199: /* profile_def: IPC_SYM */
+#line 13796 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_IPC;
}
-#line 46167 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46504 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2183: /* profile_def: SWAPS_SYM */
-#line 13603 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2200: /* profile_def: SWAPS_SYM */
+#line 13800 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_SWAPS;
}
-#line 46175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46512 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2184: /* profile_def: SOURCE_SYM */
-#line 13607 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2201: /* profile_def: SOURCE_SYM */
+#line 13804 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_SOURCE;
}
-#line 46183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46520 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2185: /* profile_def: ALL */
-#line 13611 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2202: /* profile_def: ALL */
+#line 13808 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_ALL;
}
-#line 46191 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2186: /* opt_profile_args: %empty */
-#line 13618 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2203: /* opt_profile_args: %empty */
+#line 13815 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_query_id= 0;
}
-#line 46199 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2187: /* opt_profile_args: FOR_SYM QUERY_SYM NUM */
-#line 13622 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2204: /* opt_profile_args: FOR_SYM QUERY_SYM NUM */
+#line 13819 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_query_id= atoi((yyvsp[0].lex_str).str);
}
-#line 46207 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46544 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2188: /* $@199: %empty */
-#line 13631 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2205: /* $@201: %empty */
+#line 13828 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->wild=0;
@@ -46218,31 +46555,31 @@ yyreduce:
lex->current_select->parsing_place= SELECT_LIST;
lex->create_info.init();
}
-#line 46222 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46559 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2189: /* show: SHOW $@199 show_param */
-#line 13642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2206: /* show: SHOW $@201 show_param */
+#line 13839 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
Lex->pop_select(); //main select
}
-#line 46231 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46568 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2190: /* show_param: DATABASES wild_and_where */
-#line 13650 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2207: /* show_param: DATABASES wild_and_where */
+#line 13847 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_DATABASES;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_SCHEMATA)))
MYSQL_YYABORT;
}
-#line 46242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46579 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2191: /* show_param: opt_full TABLES opt_db wild_and_where */
-#line 13657 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2208: /* show_param: opt_full TABLES opt_db wild_and_where */
+#line 13854 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLES;
@@ -46250,11 +46587,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))
MYSQL_YYABORT;
}
-#line 46254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2192: /* show_param: opt_full TRIGGERS_SYM opt_db wild_and_where */
-#line 13665 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2209: /* show_param: opt_full TRIGGERS_SYM opt_db wild_and_where */
+#line 13862 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TRIGGERS;
@@ -46262,11 +46599,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS))
MYSQL_YYABORT;
}
-#line 46266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2193: /* show_param: EVENTS_SYM opt_db wild_and_where */
-#line 13673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2210: /* show_param: EVENTS_SYM opt_db wild_and_where */
+#line 13870 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_EVENTS;
@@ -46274,11 +46611,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_EVENTS))
MYSQL_YYABORT;
}
-#line 46278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46615 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2194: /* show_param: TABLE_SYM STATUS_SYM opt_db wild_and_where */
-#line 13681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2211: /* show_param: TABLE_SYM STATUS_SYM opt_db wild_and_where */
+#line 13878 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;
@@ -46286,11 +46623,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_TABLES))
MYSQL_YYABORT;
}
-#line 46290 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46627 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2195: /* show_param: OPEN_SYM TABLES opt_db wild_and_where */
-#line 13689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2212: /* show_param: OPEN_SYM TABLES opt_db wild_and_where */
+#line 13886 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
@@ -46298,55 +46635,55 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES))
MYSQL_YYABORT;
}
-#line 46302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46639 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2196: /* show_param: PLUGINS_SYM */
-#line 13697 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2213: /* show_param: PLUGINS_SYM */
+#line 13894 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_PLUGINS;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PLUGINS)))
MYSQL_YYABORT;
}
-#line 46313 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46650 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2197: /* show_param: PLUGINS_SYM SONAME_SYM TEXT_STRING_sys */
-#line 13704 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2214: /* show_param: PLUGINS_SYM SONAME_SYM TEXT_STRING_sys */
+#line 13901 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->ident= (yyvsp[0].lex_str);
Lex->sql_command= SQLCOM_SHOW_PLUGINS;
if (unlikely(prepare_schema_table(thd, Lex, 0, SCH_ALL_PLUGINS)))
MYSQL_YYABORT;
}
-#line 46324 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46661 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2198: /* show_param: PLUGINS_SYM SONAME_SYM wild_and_where */
-#line 13711 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2215: /* show_param: PLUGINS_SYM SONAME_SYM wild_and_where */
+#line 13908 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PLUGINS;
if (unlikely(prepare_schema_table(thd, Lex, 0, SCH_ALL_PLUGINS)))
MYSQL_YYABORT;
}
-#line 46334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2199: /* show_param: ENGINE_SYM known_storage_engines show_engine_param */
-#line 13717 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2216: /* show_param: ENGINE_SYM known_storage_engines show_engine_param */
+#line 13914 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->create_info.db_type= (yyvsp[-1].db_type); }
-#line 46340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2200: /* show_param: ENGINE_SYM ALL show_engine_param */
-#line 13719 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2217: /* show_param: ENGINE_SYM ALL show_engine_param */
+#line 13916 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->create_info.db_type= NULL; }
-#line 46346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2201: /* show_param: opt_full COLUMNS from_or_in table_ident opt_db wild_and_where */
-#line 13721 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2218: /* show_param: opt_full COLUMNS from_or_in table_ident opt_db wild_and_where */
+#line 13918 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_FIELDS;
@@ -46355,51 +46692,51 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, (yyvsp[-2].table), SCH_COLUMNS)))
MYSQL_YYABORT;
}
-#line 46359 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2202: /* show_param: master_or_binary LOGS_SYM */
-#line 13730 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2219: /* show_param: master_or_binary LOGS_SYM */
+#line 13927 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_BINLOGS;
}
-#line 46367 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46704 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2203: /* show_param: SLAVE HOSTS_SYM */
-#line 13734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2220: /* show_param: SLAVE HOSTS_SYM */
+#line 13931 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_SLAVE_HOSTS;
}
-#line 46375 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46712 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2204: /* $@200: %empty */
-#line 13738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2221: /* $@202: %empty */
+#line 13935 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_BINLOG_EVENTS;
}
-#line 46384 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46721 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2206: /* $@201: %empty */
-#line 13744 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2223: /* $@203: %empty */
+#line 13941 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_RELAYLOG_EVENTS;
}
-#line 46393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46730 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2207: /* show_param: RELAYLOG_SYM optional_connection_name EVENTS_SYM binlog_in binlog_from $@201 opt_global_limit_clause optional_for_channel */
-#line 13749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2224: /* show_param: RELAYLOG_SYM optional_connection_name EVENTS_SYM binlog_in binlog_from $@203 opt_global_limit_clause optional_for_channel */
+#line 13946 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 46399 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46736 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2208: /* show_param: keys_or_index from_or_in table_ident opt_db opt_where_clause */
-#line 13751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2225: /* show_param: keys_or_index from_or_in table_ident opt_db opt_where_clause */
+#line 13948 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_KEYS;
@@ -46408,96 +46745,96 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, (yyvsp[-2].table), SCH_STATISTICS)))
MYSQL_YYABORT;
}
-#line 46412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2209: /* show_param: opt_storage ENGINES_SYM */
-#line 13760 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2226: /* show_param: opt_storage ENGINES_SYM */
+#line 13957 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_ENGINES)))
MYSQL_YYABORT;
}
-#line 46423 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46760 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2210: /* show_param: AUTHORS_SYM */
-#line 13767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2227: /* show_param: AUTHORS_SYM */
+#line 13964 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_AUTHORS;
}
-#line 46432 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46769 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2211: /* show_param: CONTRIBUTORS_SYM */
-#line 13772 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2228: /* show_param: CONTRIBUTORS_SYM */
+#line 13969 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_CONTRIBUTORS;
}
-#line 46441 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2212: /* show_param: PRIVILEGES */
-#line 13777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2229: /* show_param: PRIVILEGES */
+#line 13974 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_PRIVILEGES;
}
-#line 46450 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2213: /* show_param: COUNT_SYM '(' '*' ')' WARNINGS */
-#line 13782 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2230: /* show_param: COUNT_SYM '(' '*' ')' WARNINGS */
+#line 13979 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING var= {STRING_WITH_LEN("warning_count")};
(void) create_select_for_variable(thd, &var);
}
-#line 46459 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2214: /* show_param: COUNT_SYM '(' '*' ')' ERRORS */
-#line 13787 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2231: /* show_param: COUNT_SYM '(' '*' ')' ERRORS */
+#line 13984 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING var= {STRING_WITH_LEN("error_count")};
(void) create_select_for_variable(thd, &var);
}
-#line 46468 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2215: /* show_param: WARNINGS opt_global_limit_clause */
-#line 13792 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2232: /* show_param: WARNINGS opt_global_limit_clause */
+#line 13989 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command = SQLCOM_SHOW_WARNS;}
-#line 46474 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46811 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2216: /* show_param: ERRORS opt_global_limit_clause */
-#line 13794 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2233: /* show_param: ERRORS opt_global_limit_clause */
+#line 13991 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command = SQLCOM_SHOW_ERRORS;}
-#line 46480 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46817 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2217: /* show_param: PROFILES_SYM */
-#line 13796 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2234: /* show_param: PROFILES_SYM */
+#line 13993 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command = SQLCOM_SHOW_PROFILES; }
-#line 46486 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46823 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2218: /* show_param: PROFILE_SYM opt_profile_defs opt_profile_args opt_global_limit_clause */
-#line 13798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2235: /* show_param: PROFILE_SYM opt_profile_defs opt_profile_args opt_global_limit_clause */
+#line 13995 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_PROFILE;
if (unlikely(prepare_schema_table(thd, lex, NULL, SCH_PROFILES)))
MYSQL_YYABORT;
}
-#line 46497 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46834 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2219: /* show_param: opt_var_type STATUS_SYM wild_and_where */
-#line 13805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2236: /* show_param: opt_var_type STATUS_SYM wild_and_where */
+#line 14002 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS;
@@ -46505,17 +46842,17 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_SESSION_STATUS)))
MYSQL_YYABORT;
}
-#line 46509 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2220: /* show_param: opt_full PROCESSLIST_SYM */
-#line 13813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2237: /* show_param: opt_full PROCESSLIST_SYM */
+#line 14010 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}
-#line 46515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2221: /* show_param: opt_var_type VARIABLES wild_and_where */
-#line 13815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2238: /* show_param: opt_var_type VARIABLES wild_and_where */
+#line 14012 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_VARIABLES;
@@ -46523,33 +46860,33 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_SESSION_VARIABLES)))
MYSQL_YYABORT;
}
-#line 46527 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46864 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2222: /* show_param: charset wild_and_where */
-#line 13823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2239: /* show_param: charset wild_and_where */
+#line 14020 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_CHARSETS;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_CHARSETS)))
MYSQL_YYABORT;
}
-#line 46538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2223: /* show_param: COLLATION_SYM wild_and_where */
-#line 13830 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2240: /* show_param: COLLATION_SYM wild_and_where */
+#line 14027 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_COLLATIONS;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_COLLATIONS)))
MYSQL_YYABORT;
}
-#line 46549 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46886 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2224: /* show_param: GRANTS */
-#line 13837 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2241: /* show_param: GRANTS */
+#line 14034 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_GRANTS;
if (unlikely(!(Lex->grant_user=
@@ -46557,30 +46894,30 @@ yyreduce:
MYSQL_YYABORT;
Lex->grant_user->user= current_user_and_current_role;
}
-#line 46561 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2225: /* show_param: GRANTS FOR_SYM user_or_role clear_privileges */
-#line 13845 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2242: /* show_param: GRANTS FOR_SYM user_or_role clear_privileges */
+#line 14042 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_GRANTS;
lex->grant_user=(yyvsp[-1].lex_user);
}
-#line 46571 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2226: /* show_param: CREATE DATABASE opt_if_not_exists ident */
-#line 13851 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2243: /* show_param: CREATE DATABASE opt_if_not_exists ident */
+#line 14048 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_SHOW_CREATE_DB, (yyvsp[-1].object_ddl_options));
Lex->name= (yyvsp[0].ident_sys);
}
-#line 46580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46917 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2227: /* show_param: CREATE TABLE_SYM table_ident */
-#line 13856 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2244: /* show_param: CREATE TABLE_SYM table_ident */
+#line 14053 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -46588,11 +46925,11 @@ yyreduce:
MYSQL_YYABORT;
lex->create_info.storage_media= HA_SM_DEFAULT;
}
-#line 46592 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46929 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2228: /* show_param: CREATE VIEW_SYM table_ident */
-#line 13864 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2245: /* show_param: CREATE VIEW_SYM table_ident */
+#line 14061 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -46600,11 +46937,11 @@ yyreduce:
MYSQL_YYABORT;
lex->table_type= TABLE_TYPE_VIEW;
}
-#line 46604 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46941 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2229: /* show_param: CREATE SEQUENCE_SYM table_ident */
-#line 13872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2246: /* show_param: CREATE SEQUENCE_SYM table_ident */
+#line 14069 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -46612,121 +46949,121 @@ yyreduce:
MYSQL_YYABORT;
lex->table_type= TABLE_TYPE_SEQUENCE;
}
-#line 46616 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2230: /* show_param: BINLOG_SYM STATUS_SYM */
-#line 13880 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2247: /* show_param: BINLOG_SYM STATUS_SYM */
+#line 14077 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_BINLOG_STAT;
}
-#line 46624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2231: /* show_param: MASTER_SYM STATUS_SYM */
-#line 13884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2248: /* show_param: MASTER_SYM STATUS_SYM */
+#line 14081 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_BINLOG_STAT;
}
-#line 46632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46969 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2232: /* show_param: ALL SLAVES STATUS_SYM */
-#line 13888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2249: /* show_param: ALL SLAVES STATUS_SYM */
+#line 14085 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_show_slave_status(true)))
MYSQL_YYABORT;
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
}
-#line 46643 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46980 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2233: /* show_param: SLAVE optional_connection_name STATUS_SYM optional_for_channel */
-#line 13895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2250: /* show_param: SLAVE optional_connection_name STATUS_SYM optional_for_channel */
+#line 14092 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_show_slave_status()))
MYSQL_YYABORT;
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
}
-#line 46654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 46991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2234: /* show_param: CREATE PROCEDURE_SYM sp_name */
-#line 13902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2251: /* show_param: CREATE PROCEDURE_SYM sp_name */
+#line 14099 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PROC;
lex->spname= (yyvsp[0].spname);
}
-#line 46665 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47002 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2235: /* show_param: CREATE FUNCTION_SYM sp_name */
-#line 13909 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2252: /* show_param: CREATE FUNCTION_SYM sp_name */
+#line 14106 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_FUNC;
lex->spname= (yyvsp[0].spname);
}
-#line 46676 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47013 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2236: /* show_param: CREATE PACKAGE_MARIADB_SYM sp_name */
-#line 13916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2253: /* show_param: CREATE PACKAGE_MARIADB_SYM sp_name */
+#line 14113 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE;
lex->spname= (yyvsp[0].spname);
}
-#line 46686 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47023 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2237: /* show_param: CREATE PACKAGE_ORACLE_SYM sp_name */
-#line 13922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2254: /* show_param: CREATE PACKAGE_ORACLE_SYM sp_name */
+#line 14119 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE;
lex->spname= (yyvsp[0].spname);
}
-#line 46696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2238: /* show_param: CREATE PACKAGE_MARIADB_SYM BODY_MARIADB_SYM sp_name */
-#line 13928 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2255: /* show_param: CREATE PACKAGE_MARIADB_SYM BODY_MARIADB_SYM sp_name */
+#line 14125 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE_BODY;
lex->spname= (yyvsp[0].spname);
}
-#line 46706 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47043 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2239: /* show_param: CREATE PACKAGE_ORACLE_SYM BODY_ORACLE_SYM sp_name */
-#line 13934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2256: /* show_param: CREATE PACKAGE_ORACLE_SYM BODY_ORACLE_SYM sp_name */
+#line 14131 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE_BODY;
lex->spname= (yyvsp[0].spname);
}
-#line 46716 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47053 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2240: /* show_param: CREATE TRIGGER_SYM sp_name */
-#line 13940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2257: /* show_param: CREATE TRIGGER_SYM sp_name */
+#line 14137 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_CREATE_TRIGGER;
lex->spname= (yyvsp[0].spname);
}
-#line 46726 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47063 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2241: /* show_param: CREATE USER_SYM */
-#line 13946 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2258: /* show_param: CREATE USER_SYM */
+#line 14143 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_CREATE_USER;
if (unlikely(!(Lex->grant_user=
@@ -46734,131 +47071,131 @@ yyreduce:
MYSQL_YYABORT;
Lex->grant_user->user= current_user;
}
-#line 46738 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2242: /* show_param: CREATE USER_SYM user */
-#line 13954 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2259: /* show_param: CREATE USER_SYM user */
+#line 14151 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_CREATE_USER;
Lex->grant_user= (yyvsp[0].lex_user);
}
-#line 46747 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2243: /* show_param: PROCEDURE_SYM STATUS_SYM wild_and_where */
-#line 13959 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2260: /* show_param: PROCEDURE_SYM STATUS_SYM wild_and_where */
+#line 14156 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PROC;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46758 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47095 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2244: /* show_param: FUNCTION_SYM STATUS_SYM wild_and_where */
-#line 13966 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2261: /* show_param: FUNCTION_SYM STATUS_SYM wild_and_where */
+#line 14163 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_FUNC;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46769 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47106 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2245: /* show_param: PACKAGE_MARIADB_SYM STATUS_SYM wild_and_where */
-#line 13973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2262: /* show_param: PACKAGE_MARIADB_SYM STATUS_SYM wild_and_where */
+#line 14170 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46780 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2246: /* show_param: PACKAGE_ORACLE_SYM STATUS_SYM wild_and_where */
-#line 13980 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2263: /* show_param: PACKAGE_ORACLE_SYM STATUS_SYM wild_and_where */
+#line 14177 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46791 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47128 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2247: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM STATUS_SYM wild_and_where */
-#line 13987 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2264: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM STATUS_SYM wild_and_where */
+#line 14184 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE_BODY;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47139 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2248: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM STATUS_SYM wild_and_where */
-#line 13994 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2265: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM STATUS_SYM wild_and_where */
+#line 14191 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE_BODY;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46813 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2249: /* show_param: PROCEDURE_SYM CODE_SYM sp_name */
-#line 14001 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2266: /* show_param: PROCEDURE_SYM CODE_SYM sp_name */
+#line 14198 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PROC_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46822 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47159 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2250: /* show_param: FUNCTION_SYM CODE_SYM sp_name */
-#line 14006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2267: /* show_param: FUNCTION_SYM CODE_SYM sp_name */
+#line 14203 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_FUNC_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47168 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2251: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM CODE_SYM sp_name */
-#line 14011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2268: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM CODE_SYM sp_name */
+#line 14208 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PACKAGE_BODY_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46840 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2252: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM CODE_SYM sp_name */
-#line 14016 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2269: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM CODE_SYM sp_name */
+#line 14213 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PACKAGE_BODY_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46849 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47186 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2253: /* show_param: CREATE EVENT_SYM sp_name */
-#line 14021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2270: /* show_param: CREATE EVENT_SYM sp_name */
+#line 14218 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->spname= (yyvsp[0].spname);
Lex->sql_command = SQLCOM_SHOW_CREATE_EVENT;
}
-#line 46858 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2254: /* show_param: describe_command opt_format_json FOR_SYM expr */
-#line 14030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2271: /* show_param: describe_command opt_format_json FOR_SYM expr */
+#line 14227 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_EXPLAIN;
if (unlikely(prepare_schema_table(thd, Lex, 0,
@@ -46866,11 +47203,11 @@ yyreduce:
MYSQL_YYABORT;
add_value_to_list(thd, (yyvsp[0].item));
}
-#line 46870 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47207 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2255: /* show_param: ANALYZE_SYM opt_format_json FOR_SYM expr */
-#line 14038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2272: /* show_param: ANALYZE_SYM opt_format_json FOR_SYM expr */
+#line 14235 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_ANALYZE;
if (unlikely(prepare_schema_table(thd, Lex, 0,
@@ -46878,11 +47215,11 @@ yyreduce:
MYSQL_YYABORT;
add_value_to_list(thd, (yyvsp[0].item));
}
-#line 46882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47219 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2256: /* show_param: IDENT_sys remember_tok_start wild_and_where */
-#line 14046 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2273: /* show_param: IDENT_sys remember_tok_start wild_and_where */
+#line 14243 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
bool in_plugin;
@@ -46901,83 +47238,83 @@ yyreduce:
if (unlikely(make_schema_select(thd, Lex->current_select, table)))
MYSQL_YYABORT;
}
-#line 46905 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2257: /* show_engine_param: STATUS_SYM */
-#line 14068 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2274: /* show_engine_param: STATUS_SYM */
+#line 14265 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_ENGINE_STATUS; }
-#line 46911 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2258: /* show_engine_param: MUTEX_SYM */
-#line 14070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2275: /* show_engine_param: MUTEX_SYM */
+#line 14267 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_ENGINE_MUTEX; }
-#line 46917 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2259: /* show_engine_param: LOGS_SYM */
-#line 14072 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2276: /* show_engine_param: LOGS_SYM */
+#line 14269 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_ENGINE_LOGS; }
-#line 46923 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2264: /* opt_db: %empty */
-#line 14086 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2281: /* opt_db: %empty */
+#line 14283 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 46929 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2265: /* opt_db: from_or_in ident */
-#line 14087 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2282: /* opt_db: from_or_in ident */
+#line 14284 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 46935 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47272 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2266: /* opt_full: %empty */
-#line 14091 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2283: /* opt_full: %empty */
+#line 14288 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->verbose=0; }
-#line 46941 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2267: /* opt_full: FULL */
-#line 14092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2284: /* opt_full: FULL */
+#line 14289 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->verbose=1; }
-#line 46947 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47284 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2270: /* binlog_in: %empty */
-#line 14101 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2287: /* binlog_in: %empty */
+#line 14298 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.log_file_name = 0; }
-#line 46953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47290 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2271: /* binlog_in: IN_SYM TEXT_STRING_sys */
-#line 14102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2288: /* binlog_in: IN_SYM TEXT_STRING_sys */
+#line 14299 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.log_file_name = (yyvsp[0].lex_str).str; }
-#line 46959 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2272: /* binlog_from: %empty */
-#line 14106 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2289: /* binlog_from: %empty */
+#line 14303 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.pos = 4; /* skip magic number */ }
-#line 46965 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2273: /* binlog_from: FROM ulonglong_num */
-#line 14107 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2290: /* binlog_from: FROM ulonglong_num */
+#line 14304 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.pos = (yyvsp[0].ulonglong_number); }
-#line 46971 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2274: /* wild_and_where: %empty */
-#line 14111 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2291: /* wild_and_where: %empty */
+#line 14308 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.simple_string)= 0; }
-#line 46977 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47314 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2275: /* wild_and_where: LIKE remember_tok_start TEXT_STRING_sys */
-#line 14113 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2292: /* wild_and_where: LIKE remember_tok_start TEXT_STRING_sys */
+#line 14310 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->wild= new (thd->mem_root) String((const char*) (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length,
@@ -46986,22 +47323,22 @@ yyreduce:
MYSQL_YYABORT;
(yyval.simple_string)= (yyvsp[-1].simple_string);
}
-#line 46990 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47327 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2276: /* wild_and_where: WHERE remember_tok_start expr */
-#line 14122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2293: /* wild_and_where: WHERE remember_tok_start expr */
+#line 14319 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->where= normalize_cond(thd, (yyvsp[0].item));
if ((yyvsp[0].item))
(yyvsp[0].item)->top_level_item();
(yyval.simple_string)= (yyvsp[-1].simple_string);
}
-#line 47001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47338 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2277: /* $@202: %empty */
-#line 14133 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2294: /* $@204: %empty */
+#line 14330 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (lex->main_select_push())
@@ -47014,73 +47351,73 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, (yyvsp[0].table), SCH_COLUMNS)))
MYSQL_YYABORT;
}
-#line 47018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2278: /* describe: describe_command table_ident $@202 opt_describe_column */
-#line 14146 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2295: /* describe: describe_command table_ident $@204 opt_describe_column */
+#line 14343 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
Lex->pop_select(); //main select
}
-#line 47027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2279: /* $@203: %empty */
-#line 14151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2296: /* $@205: %empty */
+#line 14348 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_NORMAL; }
-#line 47033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47370 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2280: /* describe: describe_command opt_extended_describe $@203 explainable_command */
-#line 14153 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2297: /* describe: describe_command opt_extended_describe $@205 explainable_command */
+#line 14350 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->first_select_lex()->options|= SELECT_DESCRIBE;
}
-#line 47042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2289: /* analyze_stmt_command: ANALYZE_SYM opt_format_json explainable_command */
-#line 14175 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2306: /* analyze_stmt_command: ANALYZE_SYM opt_format_json explainable_command */
+#line 14372 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->analyze_stmt= true;
}
-#line 47050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47387 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2290: /* opt_extended_describe: EXTENDED_SYM */
-#line 14181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2307: /* opt_extended_describe: EXTENDED_SYM */
+#line 14378 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_EXTENDED; }
-#line 47056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2291: /* opt_extended_describe: EXTENDED_SYM ALL */
-#line 14183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2308: /* opt_extended_describe: EXTENDED_SYM ALL */
+#line 14380 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_EXTENDED | DESCRIBE_EXTENDED2; }
-#line 47062 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47399 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2292: /* opt_extended_describe: PARTITIONS_SYM */
-#line 14184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2309: /* opt_extended_describe: PARTITIONS_SYM */
+#line 14381 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_PARTITIONS; }
-#line 47068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47405 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2293: /* opt_extended_describe: opt_format_json */
-#line 14185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2310: /* opt_extended_describe: opt_format_json */
+#line 14382 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47411 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2294: /* opt_format_json: %empty */
-#line 14189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2311: /* opt_format_json: %empty */
+#line 14386 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47417 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2295: /* opt_format_json: FORMAT_SYM '=' ident_or_text */
-#line 14191 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2312: /* opt_format_json: FORMAT_SYM '=' ident_or_text */
+#line 14388 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (lex_string_eq(&(yyvsp[0].lex_str), STRING_WITH_LEN("JSON")))
Lex->explain_json= true;
@@ -47090,23 +47427,23 @@ yyreduce:
my_yyabort_error((ER_UNKNOWN_EXPLAIN_FORMAT, MYF(0),
"EXPLAIN/ANALYZE", (yyvsp[0].lex_str).str));
}
-#line 47094 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47431 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2296: /* opt_describe_column: %empty */
-#line 14203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2313: /* opt_describe_column: %empty */
+#line 14400 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47100 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47437 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2297: /* opt_describe_column: text_string */
-#line 14204 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2314: /* opt_describe_column: text_string */
+#line 14401 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->wild= (yyvsp[0].string); }
-#line 47106 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2298: /* opt_describe_column: ident */
-#line 14206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2315: /* opt_describe_column: ident */
+#line 14403 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->wild= new (thd->mem_root) String((const char*) (yyvsp[0].ident_sys).str,
(yyvsp[0].ident_sys).length,
@@ -47114,11 +47451,11 @@ yyreduce:
if (unlikely(Lex->wild == NULL))
MYSQL_YYABORT;
}
-#line 47118 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47455 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2299: /* explain_for_connection: describe_command opt_format_json FOR_SYM CONNECTION_SYM expr */
-#line 14222 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2316: /* explain_for_connection: describe_command opt_format_json FOR_SYM CONNECTION_SYM expr */
+#line 14419 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->wild=0;
@@ -47136,28 +47473,28 @@ yyreduce:
MYSQL_YYABORT;
add_value_to_list(thd, (yyvsp[0].item));
}
-#line 47140 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2300: /* $@204: %empty */
-#line 14245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2317: /* $@206: %empty */
+#line 14442 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_FLUSH;
lex->type= 0;
lex->no_write_to_binlog= (yyvsp[0].num);
}
-#line 47151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2301: /* flush: FLUSH_SYM opt_no_write_to_binlog $@204 flush_options */
-#line 14251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2318: /* flush: FLUSH_SYM opt_no_write_to_binlog $@206 flush_options */
+#line 14448 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2302: /* $@205: %empty */
-#line 14256 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2319: /* $@207: %empty */
+#line 14453 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_TABLES;
/*
@@ -47167,29 +47504,29 @@ yyreduce:
YYPS->m_lock_type= TL_READ_NO_INSERT;
YYPS->m_mdl_type= MDL_SHARED_HIGH_PRIO;
}
-#line 47171 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47508 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2303: /* flush_options: table_or_tables $@205 opt_table_list opt_flush_lock */
-#line 14266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2320: /* flush_options: table_or_tables $@207 opt_table_list opt_flush_lock */
+#line 14463 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47177 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2304: /* flush_options: flush_options_list */
-#line 14268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2321: /* flush_options: flush_options_list */
+#line 14465 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47520 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2305: /* opt_flush_lock: %empty */
-#line 14272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2322: /* opt_flush_lock: %empty */
+#line 14469 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47189 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47526 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2306: /* opt_flush_lock: flush_lock */
-#line 14274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2323: /* opt_flush_lock: flush_lock */
+#line 14471 "/home/buildbot/git/sql/sql_yacc.yy"
{
TABLE_LIST *tables= Lex->query_tables;
for (; tables; tables= tables->next_global)
@@ -47199,17 +47536,17 @@ yyreduce:
tables->open_type= OT_BASE_ONLY;
}
}
-#line 47203 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47540 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2307: /* flush_lock: WITH READ_SYM LOCK_SYM optional_flush_tables_arguments */
-#line 14287 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2324: /* flush_lock: WITH READ_SYM LOCK_SYM optional_flush_tables_arguments */
+#line 14484 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_READ_LOCK | (yyvsp[0].num); }
-#line 47209 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47546 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2308: /* $@206: %empty */
-#line 14289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2325: /* $@208: %empty */
+#line 14486 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->query_tables == NULL))
{
@@ -47219,53 +47556,53 @@ yyreduce:
}
Lex->type|= REFRESH_FOR_EXPORT;
}
-#line 47223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2309: /* flush_lock: FOR_SYM $@206 EXPORT_SYM */
-#line 14297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2326: /* flush_lock: FOR_SYM $@208 EXPORT_SYM */
+#line 14494 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47229 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2311: /* flush_options_list: flush_option */
-#line 14303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2328: /* flush_options_list: flush_option */
+#line 14500 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47235 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47572 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2312: /* flush_option: ERROR_SYM LOGS_SYM */
-#line 14308 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2329: /* flush_option: ERROR_SYM LOGS_SYM */
+#line 14505 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_ERROR_LOG; }
-#line 47241 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47578 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2313: /* flush_option: ENGINE_SYM LOGS_SYM */
-#line 14310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2330: /* flush_option: ENGINE_SYM LOGS_SYM */
+#line 14507 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_ENGINE_LOG; }
-#line 47247 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47584 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2314: /* flush_option: GENERAL LOGS_SYM */
-#line 14312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2331: /* flush_option: GENERAL LOGS_SYM */
+#line 14509 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_GENERAL_LOG; }
-#line 47253 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2315: /* flush_option: SLOW LOGS_SYM */
-#line 14314 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2332: /* flush_option: SLOW LOGS_SYM */
+#line 14511 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_SLOW_LOG; }
-#line 47259 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47596 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2316: /* flush_option: BINARY LOGS_SYM opt_delete_gtid_domain */
-#line 14316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2333: /* flush_option: BINARY LOGS_SYM opt_delete_gtid_domain */
+#line 14513 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_BINARY_LOG; }
-#line 47265 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47602 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2317: /* flush_option: RELAY LOGS_SYM optional_connection_name optional_for_channel */
-#line 14318 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2334: /* flush_option: RELAY LOGS_SYM optional_connection_name optional_for_channel */
+#line 14515 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->type & REFRESH_RELAY_LOG))
@@ -47273,44 +47610,44 @@ yyreduce:
lex->type|= REFRESH_RELAY_LOG;
lex->relay_log_connection_name= lex->mi.connection_name;
}
-#line 47277 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47614 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2318: /* flush_option: QUERY_SYM CACHE_SYM */
-#line 14326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2335: /* flush_option: QUERY_SYM CACHE_SYM */
+#line 14523 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_QUERY_CACHE_FREE; }
-#line 47283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47620 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2319: /* flush_option: HOSTS_SYM */
-#line 14328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2336: /* flush_option: HOSTS_SYM */
+#line 14525 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_HOSTS; }
-#line 47289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47626 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2320: /* flush_option: PRIVILEGES */
-#line 14330 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2337: /* flush_option: PRIVILEGES */
+#line 14527 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_GRANT; }
-#line 47295 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47632 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2321: /* flush_option: LOGS_SYM */
-#line 14332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2338: /* flush_option: LOGS_SYM */
+#line 14529 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_LOG;
Lex->relay_log_connection_name= empty_clex_str;
}
-#line 47304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2322: /* flush_option: STATUS_SYM */
-#line 14337 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2339: /* flush_option: STATUS_SYM */
+#line 14534 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_STATUS; }
-#line 47310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2323: /* flush_option: SLAVE optional_connection_name */
-#line 14339 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2340: /* flush_option: SLAVE optional_connection_name */
+#line 14536 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->type & REFRESH_SLAVE))
@@ -47318,41 +47655,41 @@ yyreduce:
lex->type|= REFRESH_SLAVE;
lex->reset_slave_info.all= false;
}
-#line 47322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47659 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2324: /* flush_option: MASTER_SYM */
-#line 14347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2341: /* flush_option: MASTER_SYM */
+#line 14544 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_MASTER; }
-#line 47328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47665 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2325: /* flush_option: DES_KEY_FILE */
-#line 14349 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2342: /* flush_option: DES_KEY_FILE */
+#line 14546 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_DES_KEY_FILE; }
-#line 47334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2326: /* flush_option: RESOURCES */
-#line 14351 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2343: /* flush_option: RESOURCES */
+#line 14548 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_USER_RESOURCES; }
-#line 47340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47677 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2327: /* flush_option: SSL_SYM */
-#line 14353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2344: /* flush_option: SSL_SYM */
+#line 14550 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_SSL;}
-#line 47346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47683 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2328: /* flush_option: THREADS_SYM */
-#line 14355 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2345: /* flush_option: THREADS_SYM */
+#line 14552 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_THREADS;}
-#line 47352 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47689 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2329: /* flush_option: IDENT_sys remember_tok_start */
-#line 14357 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2346: /* flush_option: IDENT_sys remember_tok_start */
+#line 14554 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_GENERIC;
ST_SCHEMA_TABLE *table= find_schema_table(thd, &(yyvsp[-1].ident_sys));
@@ -47366,29 +47703,29 @@ yyreduce:
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 47370 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47707 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2330: /* opt_table_list: %empty */
-#line 14373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2347: /* opt_table_list: %empty */
+#line 14570 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47376 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47713 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2331: /* opt_table_list: table_list */
-#line 14374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2348: /* opt_table_list: table_list */
+#line 14571 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47382 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2332: /* backup: BACKUP_SYM backup_statements */
-#line 14378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2349: /* backup: BACKUP_SYM backup_statements */
+#line 14575 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47388 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2333: /* backup_statements: STAGE_SYM ident */
-#line 14383 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2350: /* backup_statements: STAGE_SYM ident */
+#line 14580 "/home/buildbot/git/sql/sql_yacc.yy"
{
int type;
if (unlikely(Lex->sphead))
@@ -47400,22 +47737,22 @@ yyreduce:
Lex->backup_stage= (backup_stages) (type-1);
break;
}
-#line 47404 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47741 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2334: /* $@207: %empty */
-#line 14395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2351: /* $@209: %empty */
+#line 14592 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead))
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "BACKUP LOCK"));
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 47415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47752 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2335: /* backup_statements: LOCK_SYM $@207 table_ident */
-#line 14402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2352: /* backup_statements: LOCK_SYM $@209 table_ident */
+#line 14599 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[0].table), NULL, 0,
TL_READ, MDL_SHARED_HIGH_PRIO)))
@@ -47423,34 +47760,34 @@ yyreduce:
Lex->sql_command= SQLCOM_BACKUP_LOCK;
Lex->pop_select(); //main select
}
-#line 47427 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47764 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2336: /* backup_statements: UNLOCK_SYM */
-#line 14410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2353: /* backup_statements: UNLOCK_SYM */
+#line 14607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead))
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "BACKUP UNLOCK"));
/* Table list is empty for unlock */
Lex->sql_command= SQLCOM_BACKUP_LOCK;
}
-#line 47438 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47775 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2337: /* opt_delete_gtid_domain: %empty */
-#line 14419 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2354: /* opt_delete_gtid_domain: %empty */
+#line 14616 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47444 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2338: /* opt_delete_gtid_domain: DELETE_DOMAIN_ID_SYM '=' '(' delete_domain_id_list ')' */
-#line 14421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2355: /* opt_delete_gtid_domain: DELETE_DOMAIN_ID_SYM '=' '(' delete_domain_id_list ')' */
+#line 14618 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47450 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2342: /* delete_domain_id: ulonglong_num */
-#line 14431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2359: /* delete_domain_id: ulonglong_num */
+#line 14628 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint32 value= (uint32) (yyvsp[0].ulonglong_number);
if ((yyvsp[0].ulonglong_number) > UINT_MAX32)
@@ -47463,115 +47800,115 @@ yyreduce:
}
insert_dynamic(&Lex->delete_gtid_domain, (uchar*) &value);
}
-#line 47467 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47804 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2343: /* optional_flush_tables_arguments: %empty */
-#line 14446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2360: /* optional_flush_tables_arguments: %empty */
+#line 14643 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num)= 0;}
-#line 47473 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2344: /* optional_flush_tables_arguments: AND_SYM DISABLE_SYM CHECKPOINT_SYM */
-#line 14447 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2361: /* optional_flush_tables_arguments: AND_SYM DISABLE_SYM CHECKPOINT_SYM */
+#line 14644 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num)= REFRESH_CHECKPOINT; }
-#line 47479 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2345: /* $@208: %empty */
-#line 14452 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2362: /* $@210: %empty */
+#line 14649 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_RESET; lex->type=0;
}
-#line 47488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47825 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2346: /* reset: RESET_SYM $@208 reset_options */
-#line 14457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2363: /* reset: RESET_SYM $@210 reset_options */
+#line 14654 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2349: /* $@209: %empty */
-#line 14466 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2366: /* $@211: %empty */
+#line 14663 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_SLAVE; }
-#line 47500 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47837 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2350: /* reset_option: SLAVE $@209 optional_connection_name slave_reset_options optional_for_channel */
-#line 14469 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2367: /* reset_option: SLAVE $@211 optional_connection_name slave_reset_options optional_for_channel */
+#line 14666 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47506 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47843 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2351: /* $@210: %empty */
-#line 14471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2368: /* $@212: %empty */
+#line 14668 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_MASTER;
Lex->next_binlog_file_number= 0;
}
-#line 47515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2353: /* reset_option: QUERY_SYM CACHE_SYM */
-#line 14476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2370: /* reset_option: QUERY_SYM CACHE_SYM */
+#line 14673 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_QUERY_CACHE;}
-#line 47521 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47858 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2354: /* slave_reset_options: %empty */
-#line 14480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2371: /* slave_reset_options: %empty */
+#line 14677 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->reset_slave_info.all= false; }
-#line 47527 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47864 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2355: /* slave_reset_options: ALL */
-#line 14481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2372: /* slave_reset_options: ALL */
+#line 14678 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->reset_slave_info.all= true; }
-#line 47533 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47870 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2356: /* master_reset_options: %empty */
-#line 14485 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2373: /* master_reset_options: %empty */
+#line 14682 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47539 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47876 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2357: /* master_reset_options: TO_SYM ulong_num */
-#line 14487 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2374: /* master_reset_options: TO_SYM ulong_num */
+#line 14684 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->next_binlog_file_number = (yyvsp[0].ulong_num);
}
-#line 47547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47884 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2358: /* purge: PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys */
-#line 14494 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2375: /* purge: PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys */
+#line 14691 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_purge_to((yyvsp[0].lex_str));
}
-#line 47555 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47892 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2359: /* $@211: %empty */
-#line 14498 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2376: /* $@213: %empty */
+#line 14695 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "PURGE..BEFORE"; }
-#line 47561 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2360: /* purge: PURGE master_or_binary LOGS_SYM BEFORE_SYM $@211 expr */
-#line 14500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2377: /* purge: PURGE master_or_binary LOGS_SYM BEFORE_SYM $@213 expr */
+#line 14697 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->clause_that_disallows_subselect= NULL;
if (Lex->stmt_purge_before((yyvsp[0].item)))
MYSQL_YYABORT;
}
-#line 47571 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2361: /* $@212: %empty */
-#line 14512 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2378: /* $@214: %empty */
+#line 14709 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->value_list.empty();
@@ -47579,124 +47916,124 @@ yyreduce:
lex->sql_command= SQLCOM_KILL;
lex->kill_type= KILL_TYPE_ID;
}
-#line 47583 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47920 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2362: /* kill: KILL_SYM $@212 kill_type kill_option */
-#line 14520 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2379: /* kill: KILL_SYM $@214 kill_type kill_option */
+#line 14717 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->kill_signal= (killed_state) ((yyvsp[-1].num) | (yyvsp[0].num));
}
-#line 47591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2363: /* kill_type: %empty */
-#line 14526 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2380: /* kill_type: %empty */
+#line 14723 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_HARD_BIT; }
-#line 47597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2364: /* kill_type: HARD_SYM */
-#line 14527 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2381: /* kill_type: HARD_SYM */
+#line 14724 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_HARD_BIT; }
-#line 47603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2365: /* kill_type: SOFT_SYM */
-#line 14528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2382: /* kill_type: SOFT_SYM */
+#line 14725 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 47609 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2366: /* kill_option: opt_connection kill_expr */
-#line 14532 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2383: /* kill_option: opt_connection kill_expr */
+#line 14729 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_CONNECTION; }
-#line 47615 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2367: /* kill_option: QUERY_SYM kill_expr */
-#line 14533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2384: /* kill_option: QUERY_SYM kill_expr */
+#line 14730 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_QUERY; }
-#line 47621 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2368: /* kill_option: QUERY_SYM ID_SYM expr */
-#line 14535 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2385: /* kill_option: QUERY_SYM ID_SYM expr */
+#line 14732 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (int) KILL_QUERY;
Lex->kill_type= KILL_TYPE_QUERY;
Lex->value_list.push_front((yyvsp[0].item), thd->mem_root);
}
-#line 47631 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2369: /* opt_connection: %empty */
-#line 14543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2386: /* opt_connection: %empty */
+#line 14740 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47637 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2370: /* opt_connection: CONNECTION_SYM */
-#line 14544 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2387: /* opt_connection: CONNECTION_SYM */
+#line 14741 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47643 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47980 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2371: /* kill_expr: expr */
-#line 14549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2388: /* kill_expr: expr */
+#line 14746 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->value_list.push_front((yyval.item), thd->mem_root);
}
-#line 47651 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2372: /* kill_expr: USER_SYM user */
-#line 14553 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2389: /* kill_expr: USER_SYM user */
+#line 14750 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root);
Lex->kill_type= KILL_TYPE_USER;
}
-#line 47660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 47997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2373: /* $@213: %empty */
-#line 14560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2390: /* $@215: %empty */
+#line 14757 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHUTDOWN; }
-#line 47666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2374: /* shutdown: SHUTDOWN $@213 shutdown_option */
-#line 14561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2391: /* shutdown: SHUTDOWN $@215 shutdown_option */
+#line 14758 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2375: /* shutdown_option: %empty */
-#line 14565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2392: /* shutdown_option: %empty */
+#line 14762 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->is_shutdown_wait_for_slaves= false; }
-#line 47678 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2376: /* shutdown_option: WAIT_SYM FOR_SYM ALL SLAVES */
-#line 14567 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2393: /* shutdown_option: WAIT_SYM FOR_SYM ALL SLAVES */
+#line 14764 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->is_shutdown_wait_for_slaves= true;
}
-#line 47686 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48023 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2377: /* use: USE_SYM ident */
-#line 14576 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2394: /* use: USE_SYM ident */
+#line 14773 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_CHANGE_DB;
lex->first_select_lex()->db= (yyvsp[0].ident_sys);
}
-#line 47696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48033 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2378: /* $@214: %empty */
-#line 14587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2395: /* $@216: %empty */
+#line 14784 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
@@ -47710,11 +48047,11 @@ yyreduce:
MYSQL_YYABORT;
lex->init_select();
}
-#line 47714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2379: /* $@215: %empty */
-#line 14601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2396: /* $@217: %empty */
+#line 14798 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_LOAD;
@@ -47725,11 +48062,11 @@ yyreduce:
sql_exchange((yyvsp[0].lex_str).str, 0, (yyvsp[-5].filetype)))))
MYSQL_YYABORT;
}
-#line 47729 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2380: /* $@216: %empty */
-#line 14612 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2397: /* $@218: %empty */
+#line 14809 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL,
@@ -47742,55 +48079,55 @@ yyreduce:
lex->value_list.empty();
lex->many_values.empty();
}
-#line 47746 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48083 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2381: /* $@217: %empty */
-#line 14625 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2398: /* $@219: %empty */
+#line 14822 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->exchange->cs= (yyvsp[0].charset); }
-#line 47752 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48089 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2382: /* load: LOAD data_or_xml $@214 load_data_lock opt_local INFILE TEXT_STRING_filesystem $@215 opt_duplicate INTO TABLE_SYM table_ident opt_use_partition $@216 opt_load_data_charset $@217 opt_xml_rows_identified_by opt_field_term opt_line_term opt_ignore_lines opt_field_or_var_spec opt_load_data_set_spec stmt_end */
-#line 14630 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2399: /* load: LOAD data_or_xml $@216 load_data_lock opt_local INFILE TEXT_STRING_filesystem $@217 opt_duplicate INTO TABLE_SYM table_ident opt_use_partition $@218 opt_load_data_charset $@219 opt_xml_rows_identified_by opt_field_term opt_line_term opt_ignore_lines opt_field_or_var_spec opt_load_data_set_spec stmt_end */
+#line 14827 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mark_first_table_as_inserting();
}
-#line 47760 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48097 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2383: /* data_or_xml: DATA_SYM */
-#line 14636 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2400: /* data_or_xml: DATA_SYM */
+#line 14833 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.filetype)= FILETYPE_CSV; }
-#line 47766 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48103 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2384: /* data_or_xml: XML_SYM */
-#line 14637 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2401: /* data_or_xml: XML_SYM */
+#line 14834 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.filetype)= FILETYPE_XML; }
-#line 47772 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48109 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2385: /* opt_local: %empty */
-#line 14641 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2402: /* opt_local: %empty */
+#line 14838 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=0;}
-#line 47778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48115 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2386: /* opt_local: LOCAL_SYM */
-#line 14642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2403: /* opt_local: LOCAL_SYM */
+#line 14839 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=1;}
-#line 47784 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48121 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2387: /* load_data_lock: %empty */
-#line 14646 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2404: /* load_data_lock: %empty */
+#line 14843 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_DEFAULT; }
-#line 47790 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48127 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2388: /* load_data_lock: CONCURRENT */
-#line 14648 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2405: /* load_data_lock: CONCURRENT */
+#line 14845 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Ignore this option in SP to avoid problem with query cache and
@@ -47798,160 +48135,160 @@ yyreduce:
*/
(yyval.lock_type)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT);
}
-#line 47802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48139 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2389: /* load_data_lock: LOW_PRIORITY */
-#line 14655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2406: /* load_data_lock: LOW_PRIORITY */
+#line 14852 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; }
-#line 47808 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2390: /* opt_duplicate: %empty */
-#line 14659 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2407: /* opt_duplicate: %empty */
+#line 14856 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->duplicates=DUP_ERROR; }
-#line 47814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2391: /* opt_duplicate: REPLACE */
-#line 14660 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2408: /* opt_duplicate: REPLACE */
+#line 14857 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->duplicates=DUP_REPLACE; }
-#line 47820 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2392: /* opt_duplicate: IGNORE_SYM */
-#line 14661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2409: /* opt_duplicate: IGNORE_SYM */
+#line 14858 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1; }
-#line 47826 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48163 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2397: /* field_term: TERMINATED BY text_string */
-#line 14676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2414: /* field_term: TERMINATED BY text_string */
+#line 14873 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->field_term= (yyvsp[0].string);
}
-#line 47835 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48172 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2398: /* field_term: OPTIONALLY ENCLOSED BY text_string */
-#line 14681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2415: /* field_term: OPTIONALLY ENCLOSED BY text_string */
+#line 14878 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
DBUG_ASSERT(lex->exchange != 0);
lex->exchange->enclosed= (yyvsp[0].string);
lex->exchange->opt_enclosed= 1;
}
-#line 47846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2399: /* field_term: ENCLOSED BY text_string */
-#line 14688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2416: /* field_term: ENCLOSED BY text_string */
+#line 14885 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->enclosed= (yyvsp[0].string);
}
-#line 47855 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2400: /* field_term: ESCAPED BY text_string */
-#line 14693 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2417: /* field_term: ESCAPED BY text_string */
+#line 14890 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->escaped= (yyvsp[0].string);
}
-#line 47864 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2405: /* line_term: TERMINATED BY text_string */
-#line 14711 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2422: /* line_term: TERMINATED BY text_string */
+#line 14908 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->line_term= (yyvsp[0].string);
}
-#line 47873 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48210 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2406: /* line_term: STARTING BY text_string */
-#line 14716 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2423: /* line_term: STARTING BY text_string */
+#line 14913 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->line_start= (yyvsp[0].string);
}
-#line 47882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48219 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2407: /* opt_xml_rows_identified_by: %empty */
-#line 14723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2424: /* opt_xml_rows_identified_by: %empty */
+#line 14920 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48225 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2408: /* opt_xml_rows_identified_by: ROWS_SYM IDENTIFIED_SYM BY text_string */
-#line 14725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2425: /* opt_xml_rows_identified_by: ROWS_SYM IDENTIFIED_SYM BY text_string */
+#line 14922 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->exchange->line_term = (yyvsp[0].string); }
-#line 47894 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48231 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2410: /* opt_ignore_lines: IGNORE_SYM NUM lines_or_rows */
-#line 14731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2427: /* opt_ignore_lines: IGNORE_SYM NUM lines_or_rows */
+#line 14928 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->skip_lines= atol((yyvsp[-1].lex_str).str);
}
-#line 47903 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48240 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2411: /* lines_or_rows: LINES */
-#line 14738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2428: /* lines_or_rows: LINES */
+#line 14935 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47909 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48246 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2412: /* lines_or_rows: ROWS_SYM */
-#line 14739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2429: /* lines_or_rows: ROWS_SYM */
+#line 14936 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47915 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48252 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2413: /* opt_field_or_var_spec: %empty */
-#line 14743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2430: /* opt_field_or_var_spec: %empty */
+#line 14940 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47921 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48258 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2414: /* opt_field_or_var_spec: '(' fields_or_vars ')' */
-#line 14744 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2431: /* opt_field_or_var_spec: '(' fields_or_vars ')' */
+#line 14941 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47927 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48264 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2415: /* opt_field_or_var_spec: '(' ')' */
-#line 14745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2432: /* opt_field_or_var_spec: '(' ')' */
+#line 14942 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47933 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48270 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2416: /* fields_or_vars: fields_or_vars ',' field_or_var */
-#line 14750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2433: /* fields_or_vars: fields_or_vars ',' field_or_var */
+#line 14947 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 47939 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48276 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2417: /* fields_or_vars: field_or_var */
-#line 14752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2434: /* fields_or_vars: field_or_var */
+#line 14949 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 47945 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48282 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2418: /* field_or_var: simple_ident_nospvar */
-#line 14756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2435: /* field_or_var: simple_ident_nospvar */
+#line 14953 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.item)= (yyvsp[0].item);}
-#line 47951 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48288 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2419: /* field_or_var: '@' ident_or_text */
-#line 14758 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2436: /* field_or_var: '@' ident_or_text */
+#line 14955 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -47963,23 +48300,23 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47967 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2420: /* opt_load_data_set_spec: %empty */
-#line 14772 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2437: /* opt_load_data_set_spec: %empty */
+#line 14969 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47973 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2421: /* opt_load_data_set_spec: SET load_data_set_list */
-#line 14773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2438: /* opt_load_data_set_spec: SET load_data_set_list */
+#line 14970 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2424: /* load_data_set_elem: simple_ident_nospvar equal remember_name expr_or_ignore_or_default remember_end */
-#line 14783 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2441: /* load_data_set_elem: simple_ident_nospvar equal remember_name expr_or_ignore_or_default remember_end */
+#line 14980 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->update_list.push_back((yyvsp[-4].item), thd->mem_root)) ||
@@ -47987,47 +48324,49 @@ yyreduce:
MYSQL_YYABORT;
(yyvsp[-1].item)->set_name_no_truncate(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 47991 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2425: /* text_literal: TEXT_STRING */
-#line 14796 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2442: /* text_literal: TEXT_STRING */
+#line 14993 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_basic_constant)= thd->make_string_literal((yyvsp[0].lex_string_with_metadata)))))
MYSQL_YYABORT;
}
-#line 48000 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48337 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2426: /* text_literal: NCHAR_STRING */
-#line 14801 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2443: /* text_literal: NCHAR_STRING */
+#line 14998 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_basic_constant)= thd->make_string_literal_nchar((yyvsp[0].lex_string_with_metadata)))))
MYSQL_YYABORT;
}
-#line 48009 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2427: /* text_literal: UNDERSCORE_CHARSET TEXT_STRING */
-#line 14806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2444: /* text_literal: UNDERSCORE_CHARSET TEXT_STRING */
+#line 15003 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
if (unlikely(!((yyval.item_basic_constant)= thd->make_string_literal_charset((yyvsp[0].lex_string_with_metadata), (yyvsp[-1].charset)))))
MYSQL_YYABORT;
}
-#line 48018 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2428: /* text_literal: text_literal TEXT_STRING_literal */
-#line 14811 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2445: /* text_literal: text_literal TEXT_STRING_literal */
+#line 15010 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_basic_constant)= (yyvsp[-1].item_basic_constant)->make_string_literal_concat(thd, &(yyvsp[0].lex_str)))))
MYSQL_YYABORT;
}
-#line 48027 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48366 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2429: /* text_string: TEXT_STRING_literal */
-#line 14819 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2446: /* text_string: TEXT_STRING_literal */
+#line 15018 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.string)= new (thd->mem_root) String((const char*) (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length,
@@ -48035,17 +48374,17 @@ yyreduce:
if (unlikely((yyval.string) == NULL))
MYSQL_YYABORT;
}
-#line 48039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48378 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2430: /* text_string: hex_or_bin_String */
-#line 14826 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2447: /* text_string: hex_or_bin_String */
+#line 15025 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.string)= (yyvsp[0].string); }
-#line 48045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48384 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2431: /* hex_or_bin_String: HEX_NUM */
-#line 14832 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2448: /* hex_or_bin_String: HEX_NUM */
+#line 15031 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *tmp= new (thd->mem_root) Item_hex_hybrid(thd, (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length);
@@ -48053,11 +48392,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string)= tmp->val_str((String*) 0);
}
-#line 48057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2432: /* hex_or_bin_String: HEX_STRING */
-#line 14840 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2449: /* hex_or_bin_String: HEX_STRING */
+#line 15039 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *tmp= new (thd->mem_root) Item_hex_string(thd, (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length);
@@ -48065,11 +48404,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string)= tmp->val_str((String*) 0);
}
-#line 48069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2433: /* hex_or_bin_String: BIN_NUM */
-#line 14848 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2450: /* hex_or_bin_String: BIN_NUM */
+#line 15047 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *tmp= new (thd->mem_root) Item_bin_string(thd, (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length);
@@ -48081,76 +48420,76 @@ yyreduce:
*/
(yyval.string)= tmp->val_str((String*) 0);
}
-#line 48085 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2434: /* param_marker: PARAM_MARKER */
-#line 14863 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2451: /* param_marker: PARAM_MARKER */
+#line 15062 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_param)= Lex->add_placeholder(thd, &param_clex_str,
YYLIP->get_tok_start(),
YYLIP->get_tok_start() + 1))))
MYSQL_YYABORT;
}
-#line 48096 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48435 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2435: /* param_marker: COLON_ORACLE_SYM ident_cli */
-#line 14870 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2452: /* param_marker: COLON_ORACLE_SYM ident_cli */
+#line 15069 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_param)= Lex->add_placeholder(thd, &null_clex_str,
(yyvsp[-1].kwd).pos(), (yyvsp[0].ident_cli).end()))))
MYSQL_YYABORT;
}
-#line 48106 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48445 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2436: /* param_marker: COLON_ORACLE_SYM NUM */
-#line 14876 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2453: /* param_marker: COLON_ORACLE_SYM NUM */
+#line 15075 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_param)= Lex->add_placeholder(thd, &null_clex_str,
(yyvsp[-1].kwd).pos(),
YYLIP->get_ptr()))))
MYSQL_YYABORT;
}
-#line 48117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48456 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2437: /* signed_literal: '+' NUM_literal */
-#line 14885 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2454: /* signed_literal: '+' NUM_literal */
+#line 15084 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item) = (yyvsp[0].item_num); }
-#line 48123 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48462 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2438: /* signed_literal: '-' NUM_literal */
-#line 14887 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2455: /* signed_literal: '-' NUM_literal */
+#line 15086 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].item_num)->max_length++;
(yyval.item)= (yyvsp[0].item_num)->neg(thd);
}
-#line 48132 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48471 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2439: /* literal: text_literal */
-#line 14894 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2456: /* literal: text_literal */
+#line 15093 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item) = (yyvsp[0].item_basic_constant); }
-#line 48138 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48477 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2440: /* literal: NUM_literal */
-#line 14895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2457: /* literal: NUM_literal */
+#line 15094 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item) = (yyvsp[0].item_num); }
-#line 48144 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48483 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2441: /* literal: temporal_literal */
-#line 14896 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2458: /* literal: temporal_literal */
+#line 15095 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 48150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48489 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2442: /* literal: NULL_SYM */
-#line 14898 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2459: /* literal: NULL_SYM */
+#line 15097 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
For the digest computation, in this context only,
@@ -48164,65 +48503,67 @@ yyreduce:
MYSQL_YYABORT;
YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT;
}
-#line 48168 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2443: /* literal: FALSE_SYM */
-#line 14912 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2460: /* literal: FALSE_SYM */
+#line 15111 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_bool(thd, (char*) "FALSE",0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 48178 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48517 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2444: /* literal: TRUE_SYM */
-#line 14918 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2461: /* literal: TRUE_SYM */
+#line 15117 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_bool(thd, (char*) "TRUE",1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 48188 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48527 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2445: /* literal: HEX_NUM */
-#line 14924 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2462: /* literal: HEX_NUM */
+#line 15123 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_hex_hybrid(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 48198 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48537 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2446: /* literal: HEX_STRING */
-#line 14930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2463: /* literal: HEX_STRING */
+#line 15129 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_hex_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 48208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2447: /* literal: BIN_NUM */
-#line 14936 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2464: /* literal: BIN_NUM */
+#line 15135 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_bin_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 48218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48557 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2448: /* literal: UNDERSCORE_CHARSET hex_or_bin_String */
-#line 14942 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2465: /* literal: UNDERSCORE_CHARSET hex_or_bin_String */
+#line 15141 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_string_with_introducer *item_str;
LEX_CSTRING tmp;
(yyvsp[0].string)->get_value(&tmp);
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
/*
Pass NULL as name. Name will be set in the "select_item" rule and
will include the introducer and the original hex/bin notation.
@@ -48236,11 +48577,11 @@ yyreduce:
(yyval.item)= item_str;
}
-#line 48240 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48581 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2449: /* NUM_literal: NUM */
-#line 14963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2466: /* NUM_literal: NUM */
+#line 15164 "/home/buildbot/git/sql/sql_yacc.yy"
{
int error;
(yyval.item_num)= new (thd->mem_root)
@@ -48250,11 +48591,11 @@ yyreduce:
if (unlikely((yyval.item_num) == NULL))
MYSQL_YYABORT;
}
-#line 48254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48595 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2450: /* NUM_literal: LONG_NUM */
-#line 14973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2467: /* NUM_literal: LONG_NUM */
+#line 15174 "/home/buildbot/git/sql/sql_yacc.yy"
{
int error;
(yyval.item_num)= new (thd->mem_root)
@@ -48264,75 +48605,75 @@ yyreduce:
if (unlikely((yyval.item_num) == NULL))
MYSQL_YYABORT;
}
-#line 48268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48609 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2451: /* NUM_literal: ULONGLONG_NUM */
-#line 14983 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2468: /* NUM_literal: ULONGLONG_NUM */
+#line 15184 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_num)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item_num) == NULL))
MYSQL_YYABORT;
}
-#line 48278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48619 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2452: /* NUM_literal: DECIMAL_NUM */
-#line 14989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2469: /* NUM_literal: DECIMAL_NUM */
+#line 15190 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_num)= new (thd->mem_root) Item_decimal(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length,
thd->charset());
if (unlikely((yyval.item_num) == NULL) || unlikely(thd->is_error()))
MYSQL_YYABORT;
}
-#line 48289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48630 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2453: /* NUM_literal: FLOAT_NUM */
-#line 14996 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2470: /* NUM_literal: FLOAT_NUM */
+#line 15197 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_num)= new (thd->mem_root) Item_float(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item_num) == NULL) || unlikely(thd->is_error()))
MYSQL_YYABORT;
}
-#line 48299 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48640 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2454: /* temporal_literal: DATE_SYM TEXT_STRING */
-#line 15006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2471: /* temporal_literal: DATE_SYM TEXT_STRING */
+#line 15207 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= type_handler_newdate.create_literal_item(thd,
(yyvsp[0].lex_string_with_metadata).str, (yyvsp[0].lex_string_with_metadata).length,
YYCSCL, true))))
MYSQL_YYABORT;
}
-#line 48310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48651 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2455: /* temporal_literal: TIME_SYM TEXT_STRING */
-#line 15013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2472: /* temporal_literal: TIME_SYM TEXT_STRING */
+#line 15214 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= type_handler_time2.create_literal_item(thd,
(yyvsp[0].lex_string_with_metadata).str, (yyvsp[0].lex_string_with_metadata).length,
YYCSCL, true))))
MYSQL_YYABORT;
}
-#line 48321 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48662 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2456: /* temporal_literal: TIMESTAMP TEXT_STRING */
-#line 15020 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2473: /* temporal_literal: TIMESTAMP TEXT_STRING */
+#line 15221 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= type_handler_datetime.create_literal_item(thd,
(yyvsp[0].lex_string_with_metadata).str, (yyvsp[0].lex_string_with_metadata).length,
YYCSCL, true))))
MYSQL_YYABORT;
}
-#line 48332 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48673 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2457: /* $@218: %empty */
-#line 15030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2474: /* $@220: %empty */
+#line 15231 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
With_clause *with_clause=
@@ -48348,32 +48689,32 @@ yyreduce:
lex->current_select->parsing_place == BEFORE_OPT_LIST)
lex->current_select->parsing_place= NO_MATTER;
}
-#line 48352 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48693 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2458: /* with_clause: WITH opt_recursive $@218 with_list */
-#line 15046 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2475: /* with_clause: WITH opt_recursive $@220 with_list */
+#line 15247 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.with_clause)= Lex->curr_with_clause;
Lex->curr_with_clause= Lex->curr_with_clause->pop();
}
-#line 48361 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48702 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2459: /* opt_recursive: %empty */
-#line 15054 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2476: /* opt_recursive: %empty */
+#line 15255 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 48367 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48708 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2460: /* opt_recursive: RECURSIVE_SYM */
-#line 15055 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2477: /* opt_recursive: RECURSIVE_SYM */
+#line 15256 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 48373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2463: /* with_list_element: with_element_head opt_with_column_list AS '(' query_expression ')' opt_cycle */
-#line 15069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2480: /* with_list_element: with_element_head opt_with_column_list AS '(' query_expression ')' opt_cycle */
+#line 15270 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
const char *query_start= lex->sphead ? lex->sphead->m_tmp_query
@@ -48391,78 +48732,78 @@ yyreduce:
}
elem->set_tables_end_pos(lex->query_tables_last);
}
-#line 48395 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48736 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2464: /* opt_cycle: %empty */
-#line 15090 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2481: /* opt_cycle: %empty */
+#line 15291 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_sys_list)= NULL; }
-#line 48401 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48742 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2465: /* $@219: %empty */
-#line 15093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2482: /* $@221: %empty */
+#line 15294 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!Lex->curr_with_clause->with_recursive)
{
thd->parse_error(ER_SYNTAX_ERROR, (yyvsp[0].kwd).pos());
}
}
-#line 48412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2466: /* opt_cycle: CYCLE_SYM $@219 comma_separated_ident_list RESTRICT */
-#line 15100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2483: /* opt_cycle: CYCLE_SYM $@221 comma_separated_ident_list RESTRICT */
+#line 15301 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ident_sys_list)= (yyvsp[-1].ident_sys_list);
}
-#line 48420 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2467: /* opt_with_column_list: %empty */
-#line 15108 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2484: /* opt_with_column_list: %empty */
+#line 15309 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.ident_sys_list)= new (thd->mem_root) List<Lex_ident_sys>) == NULL)
MYSQL_YYABORT;
}
-#line 48429 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48770 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2468: /* opt_with_column_list: '(' with_column_list ')' */
-#line 15113 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2485: /* opt_with_column_list: '(' with_column_list ')' */
+#line 15314 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_sys_list)= (yyvsp[-1].ident_sys_list); }
-#line 48435 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48776 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2470: /* ident_sys_alloc: ident_cli */
-#line 15122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2487: /* ident_sys_alloc: ident_cli */
+#line 15323 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ident_sys_ptr)= new (thd->mem_root) Lex_ident_sys(thd, &(yyvsp[0].ident_cli));
}
-#line 48443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48784 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2471: /* comma_separated_ident_list: ident_sys_alloc */
-#line 15129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2488: /* comma_separated_ident_list: ident_sys_alloc */
+#line 15330 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ident_sys_list)= new (thd->mem_root) List<Lex_ident_sys>;
if (unlikely((yyval.ident_sys_list) == NULL || (yyval.ident_sys_list)->push_back((yyvsp[0].ident_sys_ptr))))
MYSQL_YYABORT;
}
-#line 48453 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2472: /* comma_separated_ident_list: comma_separated_ident_list ',' ident_sys_alloc */
-#line 15135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2489: /* comma_separated_ident_list: comma_separated_ident_list ',' ident_sys_alloc */
+#line 15336 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.ident_sys_list)= (yyvsp[-2].ident_sys_list))->push_back((yyvsp[0].ident_sys_ptr)))
MYSQL_YYABORT;
}
-#line 48462 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48803 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2473: /* with_element_head: ident */
-#line 15144 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2490: /* with_element_head: ident */
+#line 15345 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING *name=
(LEX_CSTRING *) thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING));
@@ -48471,163 +48812,163 @@ yyreduce:
MYSQL_YYABORT;
(yyval.with_element_head)->tables_pos.set_start_pos(Lex->query_tables_last);
}
-#line 48475 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2474: /* insert_ident: simple_ident_nospvar */
-#line 15161 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2491: /* insert_ident: simple_ident_nospvar */
+#line 15362 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)=(yyvsp[0].item); }
-#line 48481 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48822 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2475: /* insert_ident: table_wild */
-#line 15162 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2492: /* insert_ident: table_wild */
+#line 15363 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)=(yyvsp[0].item); }
-#line 48487 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48828 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2476: /* table_wild: ident '.' '*' */
-#line 15167 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2493: /* table_wild: ident '.' '*' */
+#line 15368 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-2].ident_sys)))))
MYSQL_YYABORT;
}
-#line 48496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48837 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2477: /* table_wild: ident '.' ident '.' '*' */
-#line 15172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2494: /* table_wild: ident '.' ident '.' '*' */
+#line 15373 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys)))))
MYSQL_YYABORT;
}
-#line 48505 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2478: /* select_sublist_qualified_asterisk: ident_cli '.' '*' */
-#line 15180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2495: /* select_sublist_qualified_asterisk: ident_cli '.' '*' */
+#line 15381 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-2].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48855 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2479: /* select_sublist_qualified_asterisk: ident_cli '.' ident_cli '.' '*' */
-#line 15185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2496: /* select_sublist_qualified_asterisk: ident_cli '.' ident_cli '.' '*' */
+#line 15386 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-4].ident_cli), &(yyvsp[-2].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48523 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48864 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2480: /* order_ident: expr */
-#line 15192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2497: /* order_ident: expr */
+#line 15393 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)=(yyvsp[0].item); }
-#line 48529 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48870 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2481: /* simple_ident: ident_cli */
-#line 15198 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2498: /* simple_ident: ident_cli */
+#line 15399 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48879 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2482: /* simple_ident: ident_cli '.' ident_cli */
-#line 15203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2499: /* simple_ident: ident_cli '.' ident_cli */
+#line 15404 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2483: /* simple_ident: '.' ident_cli '.' ident_cli */
-#line 15208 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2500: /* simple_ident: '.' ident_cli '.' ident_cli */
+#line 15409 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_cli empty((yyvsp[-2].ident_cli).pos(), 0);
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &empty, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48557 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2484: /* simple_ident: ident_cli '.' ident_cli '.' ident_cli */
-#line 15214 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2501: /* simple_ident: ident_cli '.' ident_cli '.' ident_cli */
+#line 15415 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[-4].ident_cli), &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48907 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2485: /* simple_ident: COLON_ORACLE_SYM ident_cli '.' ident_cli */
-#line 15219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2502: /* simple_ident: COLON_ORACLE_SYM ident_cli '.' ident_cli */
+#line 15420 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_colon_ident_ident(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48575 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48916 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2486: /* simple_ident_nospvar: ident */
-#line 15227 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2503: /* simple_ident_nospvar: ident */
+#line 15428 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident_nosp(thd, &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 48584 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48925 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2487: /* simple_ident_nospvar: ident '.' ident */
-#line 15232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2504: /* simple_ident_nospvar: ident '.' ident */
+#line 15433 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident_nospvar(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 48593 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2488: /* simple_ident_nospvar: COLON_ORACLE_SYM ident_cli '.' ident_cli */
-#line 15237 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2505: /* simple_ident_nospvar: COLON_ORACLE_SYM ident_cli '.' ident_cli */
+#line 15438 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_colon_ident_ident(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 48602 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48943 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2489: /* simple_ident_nospvar: '.' ident '.' ident */
-#line 15242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2506: /* simple_ident_nospvar: '.' ident '.' ident */
+#line 15443 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys none;
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &none, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 48612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48953 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2490: /* simple_ident_nospvar: ident '.' ident '.' ident */
-#line 15248 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2507: /* simple_ident_nospvar: ident '.' ident '.' ident */
+#line 15449 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 48621 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48962 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2491: /* field_ident: ident */
-#line 15255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2508: /* field_ident: ident */
+#line 15456 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys);}
-#line 48627 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48968 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2492: /* field_ident: ident '.' ident '.' ident */
-#line 15257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2509: /* field_ident: ident '.' ident '.' ident */
+#line 15458 "/home/buildbot/git/sql/sql_yacc.yy"
{
TABLE_LIST *table= Select->table_list.first;
if (unlikely(my_strcasecmp(table_alias_charset, (yyvsp[-4].ident_sys).str,
@@ -48638,11 +48979,11 @@ yyreduce:
my_yyabort_error((ER_WRONG_TABLE_NAME, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.lex_str)=(yyvsp[0].ident_sys);
}
-#line 48642 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2493: /* field_ident: ident '.' ident */
-#line 15268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2510: /* field_ident: ident '.' ident */
+#line 15469 "/home/buildbot/git/sql/sql_yacc.yy"
{
TABLE_LIST *table= Select->table_list.first;
if (unlikely(my_strcasecmp(table_alias_charset, (yyvsp[-2].ident_sys).str,
@@ -48650,217 +48991,217 @@ yyreduce:
my_yyabort_error((ER_WRONG_TABLE_NAME, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.lex_str)=(yyvsp[0].ident_sys);
}
-#line 48654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 48995 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2494: /* field_ident: '.' ident */
-#line 15275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2511: /* field_ident: '.' ident */
+#line 15476 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys);}
-#line 48660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49001 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2495: /* table_ident: ident */
-#line 15280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2512: /* table_ident: ident */
+#line 15481 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(&(yyvsp[0].ident_sys));
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48670 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49011 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2496: /* table_ident: ident '.' ident */
-#line 15286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2513: /* table_ident: ident '.' ident */
+#line 15487 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys), 0);
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48680 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49021 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2497: /* table_ident: '.' ident */
-#line 15292 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2514: /* table_ident: '.' ident */
+#line 15493 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* For Delphi */
(yyval.table)= new (thd->mem_root) Table_ident(&(yyvsp[0].ident_sys));
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49032 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2498: /* table_ident_opt_wild: ident opt_wild */
-#line 15302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2515: /* table_ident_opt_wild: ident opt_wild */
+#line 15503 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(&(yyvsp[-1].ident_sys));
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48701 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49042 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2499: /* table_ident_opt_wild: ident '.' ident opt_wild */
-#line 15308 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2516: /* table_ident_opt_wild: ident '.' ident opt_wild */
+#line 15509 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(thd, &(yyvsp[-3].ident_sys), &(yyvsp[-1].ident_sys), 0);
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48711 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49052 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2500: /* table_ident_nodb: ident */
-#line 15317 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2517: /* table_ident_nodb: ident */
+#line 15518 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING db= any_db;
(yyval.table)= new (thd->mem_root) Table_ident(thd, &db, &(yyvsp[0].ident_sys), 0);
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48722 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49063 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2505: /* ident_cli: keyword_ident */
-#line 15333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2522: /* ident_cli: keyword_ident */
+#line 15534 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48728 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49069 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2506: /* IDENT_sys: IDENT_cli */
-#line 15338 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2523: /* IDENT_sys: IDENT_cli */
+#line 15539 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(thd->to_ident_sys_alloc(&(yyval.ident_sys), &(yyvsp[0].ident_cli))))
MYSQL_YYABORT;
}
-#line 48737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49078 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2509: /* ident_cli_func: keyword_func_sp_var_and_label */
-#line 15347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2526: /* ident_cli_func: keyword_func_sp_var_and_label */
+#line 15548 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48743 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2510: /* ident_cli_func: keyword_func_sp_var_not_label */
-#line 15348 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2527: /* ident_cli_func: keyword_func_sp_var_not_label */
+#line 15549 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48749 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49090 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2511: /* ident_func: ident_cli_func */
-#line 15353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2528: /* ident_func: ident_cli_func */
+#line 15554 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(thd->to_ident_sys_alloc(&(yyval.ident_sys), &(yyvsp[0].ident_cli))))
MYSQL_YYABORT;
}
-#line 48758 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2512: /* TEXT_STRING_sys: TEXT_STRING */
-#line 15362 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2529: /* TEXT_STRING_sys: TEXT_STRING */
+#line 15563 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (thd->make_text_string_sys(&(yyval.lex_str), &(yyvsp[0].lex_string_with_metadata)))
MYSQL_YYABORT;
}
-#line 48767 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49108 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2513: /* TEXT_STRING_literal: TEXT_STRING */
-#line 15370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2530: /* TEXT_STRING_literal: TEXT_STRING */
+#line 15571 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (thd->make_text_string_connection(&(yyval.lex_str), &(yyvsp[0].lex_string_with_metadata)))
MYSQL_YYABORT;
}
-#line 48776 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2514: /* TEXT_STRING_filesystem: TEXT_STRING */
-#line 15378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2531: /* TEXT_STRING_filesystem: TEXT_STRING */
+#line 15579 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (thd->make_text_string_filesystem(&(yyval.lex_str), &(yyvsp[0].lex_string_with_metadata)))
MYSQL_YYABORT;
}
-#line 48785 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49126 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2516: /* ident_table_alias: keyword_table_alias */
-#line 15387 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2533: /* ident_table_alias: keyword_table_alias */
+#line 15588 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48794 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2517: /* ident_cli_set_usual_case: IDENT_cli */
-#line 15394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2534: /* ident_cli_set_usual_case: IDENT_cli */
+#line 15595 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].ident_cli); }
-#line 48800 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49141 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2518: /* ident_cli_set_usual_case: keyword_set_usual_case */
-#line 15395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2535: /* ident_cli_set_usual_case: keyword_set_usual_case */
+#line 15596 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48806 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49147 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2520: /* ident_sysvar_name: keyword_sysvar_name */
-#line 15401 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2537: /* ident_sysvar_name: keyword_sysvar_name */
+#line 15602 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48815 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49156 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2521: /* ident_sysvar_name: TEXT_STRING_sys */
-#line 15406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2538: /* ident_sysvar_name: TEXT_STRING_sys */
+#line 15607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_sys(thd, &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 48824 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49165 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2523: /* ident: keyword_ident */
-#line 15416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2540: /* ident: keyword_ident */
+#line 15617 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48833 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49174 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2525: /* label_ident: keyword_label */
-#line 15425 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2542: /* label_ident: keyword_label */
+#line 15626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48842 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49183 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2526: /* ident_or_text: ident */
-#line 15432 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2543: /* ident_or_text: ident */
+#line 15633 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys);}
-#line 48848 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49189 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2527: /* ident_or_text: TEXT_STRING_sys */
-#line 15433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2544: /* ident_or_text: TEXT_STRING_sys */
+#line 15634 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str);}
-#line 48854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49195 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2528: /* ident_or_text: LEX_HOSTNAME */
-#line 15434 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2545: /* ident_or_text: LEX_HOSTNAME */
+#line 15635 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str);}
-#line 48860 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49201 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2529: /* user_maybe_role: ident_or_text */
-#line 15439 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2546: /* user_maybe_role: ident_or_text */
+#line 15640 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
@@ -48871,11 +49212,11 @@ yyreduce:
system_charset_info, 0)))
MYSQL_YYABORT;
}
-#line 48875 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49216 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2530: /* user_maybe_role: ident_or_text '@' ident_or_text */
-#line 15450 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2547: /* user_maybe_role: ident_or_text '@' ident_or_text */
+#line 15651 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
@@ -48904,77 +49245,77 @@ yyreduce:
(yyval.lex_user)->host= host_not_specified;
}
}
-#line 48908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2531: /* user_maybe_role: CURRENT_USER optional_braces */
-#line 15479 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2548: /* user_maybe_role: CURRENT_USER optional_braces */
+#line 15680 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*)thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
(yyval.lex_user)->user= current_user;
(yyval.lex_user)->auth= new (thd->mem_root) USER_AUTH();
}
-#line 48919 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 2534: /* user: user_maybe_role */
-#line 15490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2551: /* user: user_maybe_role */
+#line 15691 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].lex_user)->user.str != current_user.str && (yyvsp[0].lex_user)->host.str == 0)
(yyvsp[0].lex_user)->host= host_not_specified;
(yyval.lex_user)= (yyvsp[0].lex_user);
}
-#line 48929 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49270 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3262: /* $@220: %empty */
-#line 16359 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3280: /* $@222: %empty */
+#line 16561 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_stmt_init();
}
-#line 48938 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49279 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3263: /* set: SET $@220 set_param */
-#line 16364 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3281: /* set: SET $@222 set_param */
+#line 16566 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 48947 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49288 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3266: /* $@221: %empty */
-#line 16374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3284: /* $@223: %empty */
+#line 16576 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_type= OPT_DEFAULT;
if (sp_create_assignment_lex(thd, (yyvsp[0].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48957 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3267: /* set_param: TRANSACTION_SYM $@221 transaction_characteristics */
-#line 16380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3285: /* set_param: TRANSACTION_SYM $@223 transaction_characteristics */
+#line 16582 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48966 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49307 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3268: /* $@222: %empty */
-#line 16385 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3286: /* $@224: %empty */
+#line 16587 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_type= (yyvsp[0].var_type);
}
-#line 48974 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49315 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3270: /* $@223: %empty */
-#line 16391 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3288: /* $@225: %empty */
+#line 16593 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->table_or_sp_used()))
@@ -48984,289 +49325,296 @@ yyreduce:
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 48988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3276: /* $@224: %empty */
-#line 16418 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3294: /* $@226: %empty */
+#line 16620 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[0].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49338 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3277: /* start_option_value_list_following_option_type: TRANSACTION_SYM $@224 transaction_characteristics */
-#line 16423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3295: /* start_option_value_list_following_option_type: TRANSACTION_SYM $@226 transaction_characteristics */
+#line 16625 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49347 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3280: /* $@225: %empty */
-#line 16438 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3298: /* $@227: %empty */
+#line 16640 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_type= (yyvsp[0].var_type);
}
-#line 49014 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49355 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3283: /* option_type: GLOBAL_SYM */
-#line 16446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3301: /* option_type: GLOBAL_SYM */
+#line 16648 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_GLOBAL; }
-#line 49020 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49361 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3284: /* option_type: LOCAL_SYM */
-#line 16447 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3302: /* option_type: LOCAL_SYM */
+#line 16649 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49026 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49367 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3285: /* option_type: SESSION_SYM */
-#line 16448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3303: /* option_type: SESSION_SYM */
+#line 16650 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49032 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3286: /* opt_var_type: %empty */
-#line 16452 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3304: /* opt_var_type: %empty */
+#line 16654 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49379 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3287: /* opt_var_type: GLOBAL_SYM */
-#line 16453 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3305: /* opt_var_type: GLOBAL_SYM */
+#line 16655 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_GLOBAL; }
-#line 49044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49385 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3288: /* opt_var_type: LOCAL_SYM */
-#line 16454 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3306: /* opt_var_type: LOCAL_SYM */
+#line 16656 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49391 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3289: /* opt_var_type: SESSION_SYM */
-#line 16455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3307: /* opt_var_type: SESSION_SYM */
+#line 16657 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49397 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3290: /* opt_var_ident_type: %empty */
-#line 16459 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3308: /* opt_var_ident_type: %empty */
+#line 16661 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_DEFAULT; }
-#line 49062 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3291: /* opt_var_ident_type: GLOBAL_SYM '.' */
-#line 16460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3309: /* opt_var_ident_type: GLOBAL_SYM '.' */
+#line 16662 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_GLOBAL; }
-#line 49068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49409 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3292: /* opt_var_ident_type: LOCAL_SYM '.' */
-#line 16461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3310: /* opt_var_ident_type: LOCAL_SYM '.' */
+#line 16663 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49074 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49415 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3293: /* opt_var_ident_type: SESSION_SYM '.' */
-#line 16462 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3311: /* opt_var_ident_type: SESSION_SYM '.' */
+#line 16664 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 49080 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49421 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3294: /* $@226: %empty */
-#line 16471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3312: /* $@228: %empty */
+#line 16673 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push(false))
MYSQL_YYABORT;
}
-#line 49089 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3295: /* set_stmt_option: ident_cli equal $@226 set_expr_or_default */
-#line 16476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3313: /* set_stmt_option: ident_cli equal $@228 set_expr_or_default */
+#line 16678 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(Lex->option_type, &tmp, (yyvsp[0].item))))
+ unlikely(Lex->set_system_variable(Lex->option_type, &tmp,
+ (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
-#line 49101 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49443 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3296: /* $@227: %empty */
-#line 16484 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3314: /* $@229: %empty */
+#line 16687 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push(false))
MYSQL_YYABORT;
}
-#line 49110 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49452 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3297: /* set_stmt_option: ident_cli '.' ident equal $@227 set_expr_or_default */
-#line 16489 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3315: /* set_stmt_option: ident_cli '.' ident equal $@229 set_expr_or_default */
+#line 16692 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
if (unlikely(!tmp.str) ||
unlikely(Lex->set_system_variable(thd, Lex->option_type,
- &tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))))
+ &tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
-#line 49123 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49465 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3298: /* $@228: %empty */
-#line 16498 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3316: /* $@230: %empty */
+#line 16701 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push(false))
MYSQL_YYABORT;
}
-#line 49132 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49474 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3299: /* set_stmt_option: DEFAULT '.' ident equal $@228 set_expr_or_default */
-#line 16503 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3317: /* set_stmt_option: DEFAULT '.' ident equal $@230 set_expr_or_default */
+#line 16706 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->set_default_system_variable(Lex->option_type,
- &(yyvsp[-3].ident_sys), (yyvsp[0].item))))
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
-#line 49143 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49485 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3300: /* $@229: %empty */
-#line 16515 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3318: /* $@231: %empty */
+#line 16718 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 49152 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3301: /* option_value_following_option_type: ident_cli equal $@229 set_expr_or_default */
-#line 16520 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3319: /* option_value_following_option_type: ident_cli equal $@231 set_expr_or_default */
+#line 16723 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(Lex->option_type, &tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_system_variable(Lex->option_type, &tmp,
+ (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49164 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49507 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3302: /* $@230: %empty */
-#line 16528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3320: /* $@232: %empty */
+#line 16732 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 49173 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49516 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3303: /* option_value_following_option_type: ident_cli '.' ident equal $@230 set_expr_or_default */
-#line 16533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3321: /* option_value_following_option_type: ident_cli '.' ident equal $@232 set_expr_or_default */
+#line 16737 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(thd, Lex->option_type, &tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ unlikely(Lex->set_system_variable(thd, Lex->option_type, &tmp,
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49529 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3304: /* $@231: %empty */
-#line 16541 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3322: /* $@233: %empty */
+#line 16746 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].kwd).pos()))
MYSQL_YYABORT;
}
-#line 49194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3305: /* option_value_following_option_type: DEFAULT '.' ident equal $@231 set_expr_or_default */
-#line 16546 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3323: /* option_value_following_option_type: DEFAULT '.' ident equal $@233 set_expr_or_default */
+#line 16751 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_default_system_variable(Lex->option_type, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_default_system_variable(Lex->option_type,
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49204 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49549 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3306: /* $@232: %empty */
-#line 16556 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3324: /* $@234: %empty */
+#line 16762 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 49213 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49558 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3307: /* option_value_no_option_type: ident_cli_set_usual_case equal $@232 set_expr_or_default */
-#line 16561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3325: /* option_value_no_option_type: ident_cli_set_usual_case equal $@234 set_expr_or_default */
+#line 16767 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49225 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49571 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3308: /* $@233: %empty */
-#line 16569 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3326: /* $@235: %empty */
+#line 16776 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 49234 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49580 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3309: /* option_value_no_option_type: ident_cli_set_usual_case '.' ident equal $@233 set_expr_or_default */
-#line 16574 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3327: /* option_value_no_option_type: ident_cli_set_usual_case '.' ident equal $@235 set_expr_or_default */
+#line 16781 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49246 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49593 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3310: /* $@234: %empty */
-#line 16582 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3328: /* $@236: %empty */
+#line 16790 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].kwd).pos()))
MYSQL_YYABORT;
}
-#line 49255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49602 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3311: /* option_value_no_option_type: DEFAULT '.' ident equal $@234 set_expr_or_default */
-#line 16587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3329: /* option_value_no_option_type: DEFAULT '.' ident equal $@236 set_expr_or_default */
+#line 16795 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_default_system_variable(Lex->option_type, &(yyvsp[-3].ident_sys), (yyvsp[0].item))))
+ if (unlikely(Lex->set_default_system_variable(Lex->option_type,
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49614 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3312: /* $@235: %empty */
-#line 16594 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3330: /* $@237: %empty */
+#line 16803 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[-1].lex_str).length)
{
@@ -49277,78 +49625,87 @@ yyreduce:
if (sp_create_assignment_lex(thd, (yyvsp[-2].lex_str).str))
MYSQL_YYABORT;
}
-#line 49281 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49629 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3313: /* option_value_no_option_type: '@' ident_or_text equal $@235 expr */
-#line 16605 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3331: /* option_value_no_option_type: '@' ident_or_text equal $@237 remember_cpp_ptr expr remember_end */
+#line 16814 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_user_variable(thd, &(yyvsp[-3].lex_str), (yyvsp[0].item))) ||
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+ if (unlikely(Lex->set_user_variable(thd, &(yyvsp[-5].lex_str), (yyvsp[-1].item))) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49291 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3314: /* $@236: %empty */
-#line 16611 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3332: /* $@238: %empty */
+#line 16828 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-4].lex_str).str))
MYSQL_YYABORT;
}
-#line 49300 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49656 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3315: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name equal $@236 set_expr_or_default */
-#line 16616 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3333: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name equal $@238 set_expr_or_default */
+#line 16833 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_system_variable((yyvsp[-4].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_system_variable((yyvsp[-4].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3316: /* $@237: %empty */
-#line 16622 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3334: /* $@239: %empty */
+#line 16839 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-6].lex_str).str))
MYSQL_YYABORT;
}
-#line 49319 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49675 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3317: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name '.' ident equal $@237 set_expr_or_default */
-#line 16627 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3335: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name '.' ident equal $@239 set_expr_or_default */
+#line 16844 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_system_variable(thd, (yyvsp[-6].var_type), &(yyvsp[-5].ident_sys), &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_system_variable(thd, (yyvsp[-6].var_type), &(yyvsp[-5].ident_sys), &(yyvsp[-3].ident_sys),
+ (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49329 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49686 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3318: /* $@238: %empty */
-#line 16633 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3336: /* $@240: %empty */
+#line 16851 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-6].lex_str).str))
MYSQL_YYABORT;
}
-#line 49338 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49695 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3319: /* option_value_no_option_type: '@' '@' opt_var_ident_type DEFAULT '.' ident equal $@238 set_expr_or_default */
-#line 16638 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3337: /* option_value_no_option_type: '@' '@' opt_var_ident_type DEFAULT '.' ident equal $@240 set_expr_or_default */
+#line 16856 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_default_system_variable((yyvsp[-6].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_default_system_variable((yyvsp[-6].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49348 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49705 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3320: /* option_value_no_option_type: charset old_or_new_charset_name_or_default */
-#line 16644 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3338: /* option_value_no_option_type: charset old_or_new_charset_name_or_default */
+#line 16862 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
@@ -49366,11 +49723,11 @@ yyreduce:
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49370 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49727 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3321: /* option_value_no_option_type: NAMES_SYM equal expr */
-#line 16662 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3339: /* option_value_no_option_type: NAMES_SYM equal expr */
+#line 16880 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_pcontext *spc= lex->spcont;
@@ -49381,34 +49738,39 @@ yyreduce:
thd->parse_error();
MYSQL_YYABORT;
}
-#line 49385 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49742 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3322: /* option_value_no_option_type: NAMES_SYM charset_name_or_default */
-#line 16673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3340: /* option_value_no_option_type: NAMES_SYM charset_name_or_default */
+#line 16891 "/home/buildbot/git/sql/sql_yacc.yy"
{
CHARSET_INFO *def= global_system_variables.character_set_client;
Lex_exact_charset_opt_extended_collate tmp((yyvsp[0].charset) ? (yyvsp[0].charset) : def, false);
- if (Lex->set_names((yyvsp[-1].kwd).pos(), tmp, yychar == YYEMPTY))
+ Lex_extended_collation_st cl;
+ cl.set_collate_default();
+ if (tmp.merge_collation(thd, thd->variables.
+ character_set_collations, cl) ||
+ Lex->set_names((yyvsp[-1].kwd).pos(), tmp, yychar == YYEMPTY))
MYSQL_YYABORT;
}
-#line 49396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49757 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3323: /* option_value_no_option_type: NAMES_SYM charset_name_or_default COLLATE_SYM collation_name_or_default */
-#line 16681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3341: /* option_value_no_option_type: NAMES_SYM charset_name_or_default COLLATE_SYM collation_name_or_default */
+#line 16903 "/home/buildbot/git/sql/sql_yacc.yy"
{
CHARSET_INFO *def= global_system_variables.character_set_client;
Lex_exact_charset_opt_extended_collate tmp((yyvsp[-2].charset) ? (yyvsp[-2].charset) : def, false);
- if (tmp.merge_collation((yyvsp[0].Lex_extended_collation)) ||
+ if (tmp.merge_collation(thd, thd->variables.
+ character_set_collations, (yyvsp[0].Lex_extended_collation)) ||
Lex->set_names((yyvsp[-3].kwd).pos(), tmp, yychar == YYEMPTY))
MYSQL_YYABORT;
}
-#line 49408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49770 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3324: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role */
-#line 16689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3342: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role */
+#line 16912 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-2].kwd).pos()))
MYSQL_YYABORT;
@@ -49430,11 +49792,11 @@ yyreduce:
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49434 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3325: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role FOR_SYM user */
-#line 16711 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3343: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role FOR_SYM user */
+#line 16934 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-4].kwd).pos()))
MYSQL_YYABORT;
@@ -49450,11 +49812,11 @@ yyreduce:
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49454 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3326: /* option_value_no_option_type: ROLE_SYM role_name */
-#line 16727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3344: /* option_value_no_option_type: ROLE_SYM role_name */
+#line 16950 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
@@ -49465,70 +49827,71 @@ yyreduce:
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49469 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3327: /* $@239: %empty */
-#line 16738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3345: /* $@241: %empty */
+#line 16961 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
}
-#line 49478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49840 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3328: /* option_value_no_option_type: ROLE_SYM equal $@239 set_expr_or_default */
-#line 16743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3346: /* option_value_no_option_type: ROLE_SYM equal $@241 set_expr_or_default */
+#line 16966 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].kwd));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49853 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3329: /* $@240: %empty */
-#line 16751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3347: /* $@242: %empty */
+#line 16975 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
}
-#line 49499 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49862 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3330: /* option_value_no_option_type: PASSWORD_SYM equal $@240 text_or_password */
-#line 16756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3348: /* option_value_no_option_type: PASSWORD_SYM equal $@242 text_or_password */
+#line 16980 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_create_set_password_instr(thd, (yyvsp[0].user_auth),
yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49509 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49872 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3331: /* $@241: %empty */
-#line 16762 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3349: /* $@243: %empty */
+#line 16986 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
}
-#line 49518 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49881 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3332: /* option_value_no_option_type: PASSWORD_SYM FOR_SYM $@241 user equal text_or_password */
-#line 16767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3350: /* option_value_no_option_type: PASSWORD_SYM FOR_SYM $@243 user equal text_or_password */
+#line 16991 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_create_set_password_instr(thd, (yyvsp[-2].lex_user), (yyvsp[0].user_auth),
yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 49528 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49891 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3337: /* transaction_access_mode: transaction_access_mode_types */
-#line 16783 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3355: /* transaction_access_mode: transaction_access_mode_types */
+#line 17007 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Item *item= new (thd->mem_root) Item_int(thd, (int32) (yyvsp[0].num));
@@ -49536,7 +49899,7 @@ yyreduce:
MYSQL_YYABORT;
set_var *var= (new (thd->mem_root)
set_var(thd, lex->option_type,
- find_sys_var(thd, "tx_read_only"),
+ find_sys_var(thd, "transaction_read_only"),
&null_clex_str,
item));
if (unlikely(var == NULL))
@@ -49544,11 +49907,11 @@ yyreduce:
if (unlikely(lex->var_list.push_back(var, thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49548 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49911 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3338: /* isolation_level: ISOLATION LEVEL_SYM isolation_types */
-#line 16802 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3356: /* isolation_level: ISOLATION LEVEL_SYM isolation_types */
+#line 17026 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Item *item= new (thd->mem_root) Item_int(thd, (int32) (yyvsp[0].tx_isolation));
@@ -49556,72 +49919,72 @@ yyreduce:
MYSQL_YYABORT;
set_var *var= (new (thd->mem_root)
set_var(thd, lex->option_type,
- find_sys_var(thd, "tx_isolation"),
+ find_sys_var(thd, "transaction_isolation"),
&null_clex_str,
item));
if (unlikely(var == NULL) ||
unlikely(lex->var_list.push_back(var, thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49567 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49930 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3339: /* transaction_access_mode_types: READ_SYM ONLY_SYM */
-#line 16819 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3357: /* transaction_access_mode_types: READ_SYM ONLY_SYM */
+#line 17043 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= true; }
-#line 49573 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49936 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3340: /* transaction_access_mode_types: READ_SYM WRITE_SYM */
-#line 16820 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3358: /* transaction_access_mode_types: READ_SYM WRITE_SYM */
+#line 17044 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 49579 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49942 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3341: /* isolation_types: READ_SYM UNCOMMITTED_SYM */
-#line 16824 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3359: /* isolation_types: READ_SYM UNCOMMITTED_SYM */
+#line 17048 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_READ_UNCOMMITTED; }
-#line 49585 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49948 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3342: /* isolation_types: READ_SYM COMMITTED_SYM */
-#line 16825 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3360: /* isolation_types: READ_SYM COMMITTED_SYM */
+#line 17049 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_READ_COMMITTED; }
-#line 49591 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49954 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3343: /* isolation_types: REPEATABLE_SYM READ_SYM */
-#line 16826 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3361: /* isolation_types: REPEATABLE_SYM READ_SYM */
+#line 17050 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_REPEATABLE_READ; }
-#line 49597 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49960 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3344: /* isolation_types: SERIALIZABLE_SYM */
-#line 16827 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3362: /* isolation_types: SERIALIZABLE_SYM */
+#line 17051 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_SERIALIZABLE; }
-#line 49603 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49966 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3345: /* text_or_password: TEXT_STRING */
-#line 16833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3363: /* text_or_password: TEXT_STRING */
+#line 17057 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= new (thd->mem_root) USER_AUTH();
(yyval.user_auth)->auth_str= (yyvsp[0].lex_string_with_metadata);
}
-#line 49612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49975 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3346: /* text_or_password: PASSWORD_SYM '(' TEXT_STRING ')' */
-#line 16838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3364: /* text_or_password: PASSWORD_SYM '(' TEXT_STRING ')' */
+#line 17062 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= new (thd->mem_root) USER_AUTH();
(yyval.user_auth)->pwtext= (yyvsp[-1].lex_string_with_metadata);
}
-#line 49621 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49984 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3347: /* text_or_password: OLD_PASSWORD_SYM '(' TEXT_STRING ')' */
-#line 16843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3365: /* text_or_password: OLD_PASSWORD_SYM '(' TEXT_STRING ')' */
+#line 17067 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= new (thd->mem_root) USER_AUTH();
(yyval.user_auth)->pwtext= (yyvsp[-1].lex_string_with_metadata);
@@ -49629,53 +49992,64 @@ yyreduce:
(yyvsp[-1].lex_string_with_metadata).str, (yyvsp[-1].lex_string_with_metadata).length, Item_func_password::OLD);
(yyval.user_auth)->auth_str.length= SCRAMBLED_PASSWORD_CHAR_LENGTH_323;
}
-#line 49633 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 49996 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3348: /* set_expr_or_default: expr */
-#line 16853 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item)=(yyvsp[0].item); }
-#line 49639 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
- break;
+ case 3366: /* set_expr_or_default: remember_cpp_ptr expr remember_end */
+#line 17078 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ LEX_CSTRING expr_str= empty_clex_str;
- case 3349: /* set_expr_or_default: DEFAULT */
-#line 16854 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item)=0; }
-#line 49645 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
- break;
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
- case 3350: /* set_expr_or_default: ON */
-#line 16856 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "ON", 2);
- if (unlikely((yyval.item) == NULL))
- MYSQL_YYABORT;
+ (yyval.expr_and_query_str)= { (yyvsp[-1].item), expr_str };
}
-#line 49655 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50013 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3351: /* set_expr_or_default: ALL */
-#line 16862 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3367: /* set_expr_or_default: remember_cpp_ptr set_expr_misc remember_end */
+#line 17091 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "ALL", 3);
- if (unlikely((yyval.item) == NULL))
+ if (unlikely((yyvsp[-1].item) == nullptr))
MYSQL_YYABORT;
+ (yyval.expr_and_query_str)= {(yyvsp[-1].item), empty_clex_str};
}
-#line 49665 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50023 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3352: /* set_expr_or_default: BINARY */
-#line 16868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3368: /* set_expr_or_default: remember_cpp_ptr DEFAULT remember_end */
+#line 17097 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "binary", 6);
- if (unlikely((yyval.item) == NULL))
- MYSQL_YYABORT;
+ (yyval.expr_and_query_str)= { nullptr, empty_clex_str };
}
-#line 49675 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50031 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3369: /* set_expr_misc: ON */
+#line 17103 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.item)= new (thd->mem_root) Item_string_sys(thd, "ON", 2); }
+#line 50037 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3370: /* set_expr_misc: ALL */
+#line 17104 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.item)= new (thd->mem_root) Item_string_sys(thd, "ALL", 3); }
+#line 50043 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3353: /* $@242: %empty */
-#line 16879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3371: /* set_expr_misc: BINARY */
+#line 17105 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.item)= new (thd->mem_root) Item_string_sys(thd, "binary", 6); }
+#line 50049 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3372: /* $@244: %empty */
+#line 17112 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
@@ -49683,55 +50057,55 @@ yyreduce:
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "LOCK"));
lex->sql_command= SQLCOM_LOCK_TABLES;
}
-#line 49687 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50061 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3354: /* lock: LOCK_SYM table_or_tables $@242 table_lock_list opt_lock_wait_timeout */
-#line 16887 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3373: /* lock: LOCK_SYM table_or_tables $@244 table_lock_list opt_lock_wait_timeout */
+#line 17120 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49693 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50067 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3355: /* opt_lock_wait_timeout: %empty */
-#line 16892 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3374: /* opt_lock_wait_timeout: %empty */
+#line 17125 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49699 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50073 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3356: /* opt_lock_wait_timeout: WAIT_SYM ulong_num */
-#line 16894 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3375: /* opt_lock_wait_timeout: WAIT_SYM ulong_num */
+#line 17127 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("lock_wait_timeout"), (yyvsp[0].ulong_num))) ||
unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("innodb_lock_wait_timeout"), (yyvsp[0].ulong_num))))
MYSQL_YYABORT;
}
-#line 49709 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50083 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3357: /* opt_lock_wait_timeout: NOWAIT_SYM */
-#line 16900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3376: /* opt_lock_wait_timeout: NOWAIT_SYM */
+#line 17133 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("lock_wait_timeout"), 0)) ||
unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("innodb_lock_wait_timeout"), 0)))
MYSQL_YYABORT;
}
-#line 49719 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50093 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3358: /* table_or_tables: TABLE_SYM */
-#line 16908 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3377: /* table_or_tables: TABLE_SYM */
+#line 17141 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 49725 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3359: /* table_or_tables: TABLES */
-#line 16909 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3378: /* table_or_tables: TABLES */
+#line 17142 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 49731 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50105 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3362: /* table_lock: table_ident opt_table_alias_clause lock_option */
-#line 16919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3381: /* table_lock: table_ident opt_table_alias_clause lock_option */
+#line 17152 "/home/buildbot/git/sql/sql_yacc.yy"
{
thr_lock_type lock_type= (thr_lock_type) (yyvsp[0].num);
bool lock_for_write= (lock_type >= TL_FIRST_WRITE);
@@ -49747,43 +50121,43 @@ yyreduce:
lock_type, mdl_type)))
MYSQL_YYABORT;
}
-#line 49751 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3363: /* lock_option: READ_SYM */
-#line 16937 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3382: /* lock_option: READ_SYM */
+#line 17170 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_READ_NO_INSERT; }
-#line 49757 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50131 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3364: /* lock_option: WRITE_SYM */
-#line 16938 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3383: /* lock_option: WRITE_SYM */
+#line 17171 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_WRITE_DEFAULT; }
-#line 49763 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50137 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3365: /* lock_option: WRITE_SYM CONCURRENT */
-#line 16940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3384: /* lock_option: WRITE_SYM CONCURRENT */
+#line 17173 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT);
}
-#line 49771 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50145 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3366: /* lock_option: LOW_PRIORITY WRITE_SYM */
-#line 16944 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3385: /* lock_option: LOW_PRIORITY WRITE_SYM */
+#line 17177 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_WRITE_LOW_PRIORITY; }
-#line 49777 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50151 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3367: /* lock_option: READ_SYM LOCAL_SYM */
-#line 16945 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3386: /* lock_option: READ_SYM LOCAL_SYM */
+#line 17178 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_READ; }
-#line 49783 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50157 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3368: /* $@243: %empty */
-#line 16950 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3387: /* $@245: %empty */
+#line 17183 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
@@ -49791,34 +50165,34 @@ yyreduce:
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "UNLOCK"));
lex->sql_command= SQLCOM_UNLOCK_TABLES;
}
-#line 49795 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50169 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3369: /* unlock: UNLOCK_SYM $@243 table_or_tables */
-#line 16958 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3388: /* unlock: UNLOCK_SYM $@245 table_or_tables */
+#line 17191 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49801 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3370: /* $@244: %empty */
-#line 16967 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3389: /* $@246: %empty */
+#line 17200 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 49810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3371: /* handler: HANDLER_SYM $@244 handler_tail */
-#line 16972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3390: /* handler: HANDLER_SYM $@246 handler_tail */
+#line 17205 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 49818 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3372: /* handler_tail: table_ident OPEN_SYM opt_table_alias_clause */
-#line 16979 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3391: /* handler_tail: table_ident OPEN_SYM opt_table_alias_clause */
+#line 17212 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->sphead))
@@ -49827,11 +50201,11 @@ yyreduce:
if (!lex->current_select->add_table_to_list(thd, (yyvsp[-2].table), (yyvsp[0].lex_str_ptr), 0))
MYSQL_YYABORT;
}
-#line 49831 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50205 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3373: /* handler_tail: table_ident_nodb CLOSE_SYM */
-#line 16988 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3392: /* handler_tail: table_ident_nodb CLOSE_SYM */
+#line 17221 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->sphead))
@@ -49840,11 +50214,11 @@ yyreduce:
if (!lex->current_select->add_table_to_list(thd, (yyvsp[-1].table), 0, 0))
MYSQL_YYABORT;
}
-#line 49844 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3374: /* $@245: %empty */
-#line 16997 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3393: /* $@247: %empty */
+#line 17230 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
SELECT_LEX *select= Select;
@@ -49862,11 +50236,11 @@ yyreduce:
if (!lex->current_select->add_table_to_list(thd, (yyvsp[-1].table), 0, 0))
MYSQL_YYABORT;
}
-#line 49866 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50240 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3375: /* handler_tail: table_ident_nodb READ_SYM $@245 handler_read_or_scan opt_where_clause opt_global_limit_clause */
-#line 17015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3394: /* handler_tail: table_ident_nodb READ_SYM $@247 handler_read_or_scan opt_where_clause opt_global_limit_clause */
+#line 17248 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
SELECT_LEX *select= Select;
@@ -49888,59 +50262,59 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 49892 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50266 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3376: /* handler_read_or_scan: handler_scan_function */
-#line 17039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3395: /* handler_read_or_scan: handler_scan_function */
+#line 17272 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ident= null_clex_str; }
-#line 49898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50272 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3377: /* handler_read_or_scan: ident handler_rkey_function */
-#line 17040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3396: /* handler_read_or_scan: ident handler_rkey_function */
+#line 17273 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ident= (yyvsp[-1].ident_sys); }
-#line 49904 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50278 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3378: /* handler_scan_function: FIRST_SYM */
-#line 17044 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3397: /* handler_scan_function: FIRST_SYM */
+#line 17277 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RFIRST; }
-#line 49910 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50284 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3379: /* handler_scan_function: NEXT_SYM */
-#line 17045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3398: /* handler_scan_function: NEXT_SYM */
+#line 17278 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RNEXT; }
-#line 49916 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50290 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3380: /* handler_rkey_function: FIRST_SYM */
-#line 17049 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3399: /* handler_rkey_function: FIRST_SYM */
+#line 17282 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RFIRST; }
-#line 49922 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50296 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3381: /* handler_rkey_function: NEXT_SYM */
-#line 17050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3400: /* handler_rkey_function: NEXT_SYM */
+#line 17283 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RNEXT; }
-#line 49928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50302 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3382: /* handler_rkey_function: PREV_SYM */
-#line 17051 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3401: /* handler_rkey_function: PREV_SYM */
+#line 17284 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RPREV; }
-#line 49934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50308 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3383: /* handler_rkey_function: LAST_SYM */
-#line 17052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3402: /* handler_rkey_function: LAST_SYM */
+#line 17285 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RLAST; }
-#line 49940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50314 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3384: /* $@246: %empty */
-#line 17054 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3403: /* $@248: %empty */
+#line 17287 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->ha_read_mode = RKEY;
@@ -49948,143 +50322,143 @@ yyreduce:
if (unlikely(!(lex->insert_list= new (thd->mem_root) List_item)))
MYSQL_YYABORT;
}
-#line 49952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50326 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3385: /* handler_rkey_function: handler_rkey_mode $@246 '(' values ')' */
-#line 17062 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3404: /* handler_rkey_function: handler_rkey_mode $@248 '(' values ')' */
+#line 17295 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50332 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3386: /* handler_rkey_mode: '=' */
-#line 17066 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3405: /* handler_rkey_mode: '=' */
+#line 17299 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_KEY_EXACT; }
-#line 49964 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50338 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3387: /* handler_rkey_mode: GE */
-#line 17067 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3406: /* handler_rkey_mode: GE */
+#line 17300 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_KEY_OR_NEXT; }
-#line 49970 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50344 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3388: /* handler_rkey_mode: LE */
-#line 17068 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3407: /* handler_rkey_mode: LE */
+#line 17301 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_KEY_OR_PREV; }
-#line 49976 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50350 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3389: /* handler_rkey_mode: '>' */
-#line 17069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3408: /* handler_rkey_mode: '>' */
+#line 17302 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_AFTER_KEY; }
-#line 49982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50356 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3390: /* handler_rkey_mode: '<' */
-#line 17070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3409: /* handler_rkey_mode: '<' */
+#line 17303 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_BEFORE_KEY; }
-#line 49988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50362 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3391: /* revoke: REVOKE clear_privileges revoke_command */
-#line 17077 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3410: /* revoke: REVOKE clear_privileges revoke_command */
+#line 17310 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49994 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50368 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3392: /* revoke_command: grant_privileges ON opt_table grant_ident FROM user_and_role_list */
-#line 17082 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3411: /* revoke_command: grant_privileges ON opt_table grant_ident FROM user_and_role_list */
+#line 17315 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_revoke_table(thd, (yyvsp[-5].lex_grant), *(yyvsp[-2].lex_grant_ident)))
MYSQL_YYABORT;
}
-#line 50003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50377 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3393: /* revoke_command: grant_privileges ON sp_handler grant_ident FROM user_and_role_list */
-#line 17087 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3412: /* revoke_command: grant_privileges ON sp_handler grant_ident FROM user_and_role_list */
+#line 17320 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_revoke_sp(thd, (yyvsp[-5].lex_grant), *(yyvsp[-2].lex_grant_ident), *(yyvsp[-3].sp_handler)))
MYSQL_YYABORT;
}
-#line 50012 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50386 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3394: /* revoke_command: ALL opt_privileges ',' GRANT OPTION FROM user_and_role_list */
-#line 17092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3413: /* revoke_command: ALL opt_privileges ',' GRANT OPTION FROM user_and_role_list */
+#line 17325 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_REVOKE_ALL;
}
-#line 50020 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50394 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3395: /* revoke_command: PROXY_SYM ON user FROM user_list */
-#line 17096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3414: /* revoke_command: PROXY_SYM ON user FROM user_list */
+#line 17329 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_revoke_proxy(thd, (yyvsp[-2].lex_user)))
MYSQL_YYABORT;
}
-#line 50029 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50403 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3396: /* revoke_command: admin_option_for_role FROM user_and_role_list */
-#line 17101 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3415: /* revoke_command: admin_option_for_role FROM user_and_role_list */
+#line 17334 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_REVOKE_ROLE;
if (unlikely(Lex->users_list.push_front((yyvsp[-2].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50039 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50413 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3397: /* admin_option_for_role: ADMIN_SYM OPTION FOR_SYM grant_role */
-#line 17110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3416: /* admin_option_for_role: ADMIN_SYM OPTION FOR_SYM grant_role */
+#line 17343 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= true; (yyval.lex_user)= (yyvsp[0].lex_user); }
-#line 50045 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50419 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3398: /* admin_option_for_role: grant_role */
-#line 17112 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3417: /* admin_option_for_role: grant_role */
+#line 17345 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= false; (yyval.lex_user)= (yyvsp[0].lex_user); }
-#line 50051 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50425 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3399: /* grant: GRANT clear_privileges grant_command */
-#line 17117 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3418: /* grant: GRANT clear_privileges grant_command */
+#line 17350 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50057 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50431 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3400: /* grant_command: grant_privileges ON opt_table grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
-#line 17123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3419: /* grant_command: grant_privileges ON opt_table grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
+#line 17356 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_grant_table(thd, (yyvsp[-7].lex_grant), *(yyvsp[-4].lex_grant_ident), (yyvsp[0].privilege)))
MYSQL_YYABORT;
}
-#line 50066 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50440 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3401: /* grant_command: grant_privileges ON sp_handler grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
-#line 17129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3420: /* grant_command: grant_privileges ON sp_handler grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
+#line 17362 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_grant_sp(thd, (yyvsp[-7].lex_grant), *(yyvsp[-4].lex_grant_ident), *(yyvsp[-5].sp_handler), (yyvsp[0].privilege)))
MYSQL_YYABORT;
}
-#line 50075 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50449 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3402: /* grant_command: PROXY_SYM ON user TO_SYM grant_list opt_grant_option */
-#line 17134 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3421: /* grant_command: PROXY_SYM ON user TO_SYM grant_list opt_grant_option */
+#line 17367 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_grant_proxy(thd, (yyvsp[-3].lex_user), (yyvsp[0].privilege)))
MYSQL_YYABORT;
}
-#line 50084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50458 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3403: /* grant_command: grant_role TO_SYM grant_list opt_with_admin_option */
-#line 17139 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3422: /* grant_command: grant_role TO_SYM grant_list opt_with_admin_option */
+#line 17372 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_GRANT_ROLE;
@@ -50092,63 +50466,63 @@ yyreduce:
if (unlikely(Lex->users_list.push_front((yyvsp[-3].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50096 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50470 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3404: /* opt_with_admin: %empty */
-#line 17150 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3423: /* opt_with_admin: %empty */
+#line 17383 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->definer = 0; }
-#line 50102 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50476 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3405: /* opt_with_admin: WITH ADMIN_SYM user_or_role */
-#line 17151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3424: /* opt_with_admin: WITH ADMIN_SYM user_or_role */
+#line 17384 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->definer = (yyvsp[0].lex_user); }
-#line 50108 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50482 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3406: /* opt_with_admin_option: %empty */
-#line 17155 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3425: /* opt_with_admin_option: %empty */
+#line 17388 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= false; }
-#line 50114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3407: /* opt_with_admin_option: WITH ADMIN_SYM OPTION */
-#line 17156 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3426: /* opt_with_admin_option: WITH ADMIN_SYM OPTION */
+#line 17389 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= true; }
-#line 50120 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3408: /* role_list: grant_role */
-#line 17161 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3427: /* role_list: grant_role */
+#line 17394 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50129 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50503 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3409: /* role_list: role_list ',' grant_role */
-#line 17166 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3428: /* role_list: role_list ',' grant_role */
+#line 17399 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50138 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50512 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3410: /* current_role: CURRENT_ROLE optional_braces */
-#line 17174 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3429: /* current_role: CURRENT_ROLE optional_braces */
+#line 17407 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
(yyval.lex_user)->user= current_role;
}
-#line 50148 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50522 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3411: /* role_name: ident_or_text */
-#line 17183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3430: /* role_name: ident_or_text */
+#line 17416 "/home/buildbot/git/sql/sql_yacc.yy"
{
CHARSET_INFO *cs= system_charset_info;
/* trim end spaces (as they'll be lost in mysql.user anyway) */
@@ -50167,387 +50541,393 @@ yyreduce:
MYSQL_YYABORT;
(yyval.lex_user)->host= empty_clex_str;
}
-#line 50171 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50545 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3417: /* grant_privileges: ALL opt_privileges */
-#line 17213 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3436: /* grant_privileges: ALL opt_privileges */
+#line 17446 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant)= new (thd->mem_root) Lex_grant_privilege(GLOBAL_ACLS, true)))
MYSQL_YYABORT;
}
-#line 50180 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3420: /* object_privilege_list: object_privilege */
-#line 17226 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3439: /* object_privilege_list: object_privilege */
+#line 17459 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant)= new (thd->mem_root) Lex_grant_privilege((yyvsp[0].privilege))))
MYSQL_YYABORT;
}
-#line 50189 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50563 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3421: /* object_privilege_list: column_list_privilege */
-#line 17231 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3440: /* object_privilege_list: column_list_privilege */
+#line 17464 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant)= new (thd->mem_root) Lex_grant_privilege()) ||
(yyval.lex_grant)->add_column_list_privilege(thd, (yyvsp[0].column_list_privilege).m_columns[0],
(yyvsp[0].column_list_privilege).m_privilege))
MYSQL_YYABORT;
}
-#line 50200 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50574 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3422: /* object_privilege_list: object_privilege_list ',' object_privilege */
-#line 17238 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3441: /* object_privilege_list: object_privilege_list ',' object_privilege */
+#line 17471 "/home/buildbot/git/sql/sql_yacc.yy"
{
((yyval.lex_grant)= (yyvsp[-2].lex_grant))->add_object_privilege((yyvsp[0].privilege));
}
-#line 50208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50582 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3423: /* object_privilege_list: object_privilege_list ',' column_list_privilege */
-#line 17242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3442: /* object_privilege_list: object_privilege_list ',' column_list_privilege */
+#line 17475 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.lex_grant)= (yyvsp[-2].lex_grant))->add_column_list_privilege(thd, (yyvsp[0].column_list_privilege).m_columns[0],
(yyvsp[0].column_list_privilege).m_privilege))
MYSQL_YYABORT;
}
-#line 50218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50592 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3424: /* column_list_privilege: column_privilege '(' comma_separated_ident_list ')' */
-#line 17251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3443: /* column_list_privilege: column_privilege '(' comma_separated_ident_list ')' */
+#line 17484 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.column_list_privilege)= Lex_column_list_privilege((yyvsp[-1].ident_sys_list), (yyvsp[-3].privilege));
}
-#line 50226 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50600 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3425: /* column_privilege: SELECT_SYM */
-#line 17257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3444: /* column_privilege: SELECT_SYM */
+#line 17490 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SELECT_ACL; }
-#line 50232 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50606 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3426: /* column_privilege: INSERT */
-#line 17258 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3445: /* column_privilege: INSERT */
+#line 17491 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= INSERT_ACL; }
-#line 50238 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50612 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3427: /* column_privilege: UPDATE_SYM */
-#line 17259 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3446: /* column_privilege: UPDATE_SYM */
+#line 17492 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= UPDATE_ACL; }
-#line 50244 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50618 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3428: /* column_privilege: REFERENCES */
-#line 17260 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3447: /* column_privilege: REFERENCES */
+#line 17493 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REFERENCES_ACL; }
-#line 50250 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3429: /* object_privilege: SELECT_SYM */
-#line 17264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3448: /* object_privilege: SELECT_SYM */
+#line 17497 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SELECT_ACL; }
-#line 50256 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50630 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3430: /* object_privilege: INSERT */
-#line 17265 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3449: /* object_privilege: INSERT */
+#line 17498 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= INSERT_ACL; }
-#line 50262 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50636 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3431: /* object_privilege: UPDATE_SYM */
-#line 17266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3450: /* object_privilege: UPDATE_SYM */
+#line 17499 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= UPDATE_ACL; }
-#line 50268 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50642 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3432: /* object_privilege: REFERENCES */
-#line 17267 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3451: /* object_privilege: REFERENCES */
+#line 17500 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REFERENCES_ACL; }
-#line 50274 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50648 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3433: /* object_privilege: DELETE_SYM */
-#line 17268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3452: /* object_privilege: DELETE_SYM */
+#line 17501 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= DELETE_ACL;}
-#line 50280 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3434: /* object_privilege: USAGE */
-#line 17269 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3453: /* object_privilege: USAGE */
+#line 17502 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50286 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50660 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3435: /* object_privilege: INDEX_SYM */
-#line 17270 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3454: /* object_privilege: INDEX_SYM */
+#line 17503 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= INDEX_ACL;}
-#line 50292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50666 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3436: /* object_privilege: ALTER */
-#line 17271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3455: /* object_privilege: ALTER */
+#line 17504 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= ALTER_ACL;}
-#line 50298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3437: /* object_privilege: CREATE */
-#line 17272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3456: /* object_privilege: CREATE */
+#line 17505 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_ACL;}
-#line 50304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50678 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3438: /* object_privilege: DROP */
-#line 17273 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3457: /* object_privilege: DROP */
+#line 17506 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= DROP_ACL;}
-#line 50310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50684 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3439: /* object_privilege: EXECUTE_SYM */
-#line 17274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3458: /* object_privilege: EXECUTE_SYM */
+#line 17507 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= EXECUTE_ACL;}
-#line 50316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50690 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3440: /* object_privilege: RELOAD */
-#line 17275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3459: /* object_privilege: RELOAD */
+#line 17508 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= RELOAD_ACL;}
-#line 50322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3441: /* object_privilege: SHUTDOWN */
-#line 17276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3460: /* object_privilege: SHUTDOWN */
+#line 17509 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SHUTDOWN_ACL;}
-#line 50328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50702 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3442: /* object_privilege: PROCESS */
-#line 17277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3461: /* object_privilege: PROCESS */
+#line 17510 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= PROCESS_ACL;}
-#line 50334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50708 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3443: /* object_privilege: FILE_SYM */
-#line 17278 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3462: /* object_privilege: FILE_SYM */
+#line 17511 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= FILE_ACL;}
-#line 50340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3444: /* object_privilege: GRANT OPTION */
-#line 17279 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3463: /* object_privilege: GRANT OPTION */
+#line 17512 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= GRANT_ACL;}
-#line 50346 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50720 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3445: /* object_privilege: SHOW DATABASES */
-#line 17280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3464: /* object_privilege: SHOW DATABASES */
+#line 17513 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SHOW_DB_ACL;}
-#line 50352 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50726 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3446: /* object_privilege: SUPER_SYM */
-#line 17281 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3465: /* object_privilege: SUPER_SYM */
+#line 17514 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SUPER_ACL;}
-#line 50358 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50732 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3447: /* object_privilege: CREATE TEMPORARY TABLES */
-#line 17282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3466: /* object_privilege: CREATE TEMPORARY TABLES */
+#line 17515 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_TMP_ACL;}
-#line 50364 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50738 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3448: /* object_privilege: LOCK_SYM TABLES */
-#line 17283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3467: /* object_privilege: LOCK_SYM TABLES */
+#line 17516 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= LOCK_TABLES_ACL; }
-#line 50370 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50744 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3449: /* object_privilege: REPLICATION SLAVE */
-#line 17284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3468: /* object_privilege: REPLICATION SLAVE */
+#line 17517 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REPL_SLAVE_ACL; }
-#line 50376 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50750 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3450: /* object_privilege: REPLICATION CLIENT_SYM */
-#line 17285 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3469: /* object_privilege: REPLICATION CLIENT_SYM */
+#line 17518 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_MONITOR_ACL; /*Compatibility*/ }
-#line 50382 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50756 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3451: /* object_privilege: CREATE VIEW_SYM */
-#line 17286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3470: /* object_privilege: CREATE VIEW_SYM */
+#line 17519 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_VIEW_ACL; }
-#line 50388 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50762 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3452: /* object_privilege: SHOW VIEW_SYM */
-#line 17287 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3471: /* object_privilege: SHOW VIEW_SYM */
+#line 17520 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SHOW_VIEW_ACL; }
-#line 50394 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50768 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3453: /* object_privilege: CREATE ROUTINE_SYM */
-#line 17288 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3472: /* object_privilege: CREATE ROUTINE_SYM */
+#line 17521 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_PROC_ACL; }
-#line 50400 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50774 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3454: /* object_privilege: ALTER ROUTINE_SYM */
-#line 17289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3473: /* object_privilege: ALTER ROUTINE_SYM */
+#line 17522 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= ALTER_PROC_ACL; }
-#line 50406 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50780 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3455: /* object_privilege: CREATE USER_SYM */
-#line 17290 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3474: /* object_privilege: CREATE USER_SYM */
+#line 17523 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_USER_ACL; }
-#line 50412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50786 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3456: /* object_privilege: EVENT_SYM */
-#line 17291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3475: /* object_privilege: EVENT_SYM */
+#line 17524 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= EVENT_ACL;}
-#line 50418 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50792 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3457: /* object_privilege: TRIGGER_SYM */
-#line 17292 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3476: /* object_privilege: TRIGGER_SYM */
+#line 17525 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= TRIGGER_ACL; }
-#line 50424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50798 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3458: /* object_privilege: CREATE TABLESPACE */
-#line 17293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3477: /* object_privilege: CREATE TABLESPACE */
+#line 17526 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_TABLESPACE_ACL; }
-#line 50430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50804 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3459: /* object_privilege: DELETE_SYM HISTORY_SYM */
-#line 17294 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3478: /* object_privilege: DELETE_SYM HISTORY_SYM */
+#line 17527 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= DELETE_HISTORY_ACL; }
-#line 50436 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3460: /* object_privilege: SET USER_SYM */
-#line 17295 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3479: /* object_privilege: SET USER_SYM */
+#line 17528 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SET_USER_ACL; }
-#line 50442 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50816 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3461: /* object_privilege: FEDERATED_SYM ADMIN_SYM */
-#line 17296 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3480: /* object_privilege: FEDERATED_SYM ADMIN_SYM */
+#line 17529 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= FEDERATED_ADMIN_ACL; }
-#line 50448 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50822 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3462: /* object_privilege: CONNECTION_SYM ADMIN_SYM */
-#line 17297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3481: /* object_privilege: CONNECTION_SYM ADMIN_SYM */
+#line 17530 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CONNECTION_ADMIN_ACL; }
-#line 50454 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50828 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3463: /* object_privilege: READ_SYM ONLY_SYM ADMIN_SYM */
-#line 17298 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3482: /* object_privilege: READ_SYM ONLY_SYM ADMIN_SYM */
+#line 17531 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= READ_ONLY_ADMIN_ACL; }
-#line 50460 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50834 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3464: /* object_privilege: READ_ONLY_SYM ADMIN_SYM */
-#line 17299 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3483: /* object_privilege: READ_ONLY_SYM ADMIN_SYM */
+#line 17532 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= READ_ONLY_ADMIN_ACL; }
-#line 50466 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50840 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3465: /* object_privilege: BINLOG_SYM MONITOR_SYM */
-#line 17300 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3484: /* object_privilege: BINLOG_SYM MONITOR_SYM */
+#line 17533 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_MONITOR_ACL; }
-#line 50472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3466: /* object_privilege: BINLOG_SYM ADMIN_SYM */
-#line 17301 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3485: /* object_privilege: BINLOG_SYM ADMIN_SYM */
+#line 17534 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_ADMIN_ACL; }
-#line 50478 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50852 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3467: /* object_privilege: BINLOG_SYM REPLAY_SYM */
-#line 17302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3486: /* object_privilege: BINLOG_SYM REPLAY_SYM */
+#line 17535 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_REPLAY_ACL; }
-#line 50484 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50858 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3468: /* object_privilege: REPLICATION MASTER_SYM ADMIN_SYM */
-#line 17303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3487: /* object_privilege: REPLICATION MASTER_SYM ADMIN_SYM */
+#line 17536 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REPL_MASTER_ADMIN_ACL; }
-#line 50490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50864 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3469: /* object_privilege: REPLICATION SLAVE ADMIN_SYM */
-#line 17304 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3488: /* object_privilege: REPLICATION SLAVE ADMIN_SYM */
+#line 17537 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REPL_SLAVE_ADMIN_ACL; }
-#line 50496 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50870 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3470: /* object_privilege: SLAVE MONITOR_SYM */
-#line 17305 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3489: /* object_privilege: SLAVE MONITOR_SYM */
+#line 17538 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SLAVE_MONITOR_ACL; }
-#line 50502 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50876 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3471: /* opt_and: %empty */
-#line 17309 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3490: /* object_privilege: SHOW CREATE ROUTINE_SYM */
+#line 17539 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.privilege)= SHOW_CREATE_ROUTINE_ACL; }
+#line 50882 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3491: /* opt_and: %empty */
+#line 17543 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50508 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3472: /* opt_and: AND_SYM */
-#line 17310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3492: /* opt_and: AND_SYM */
+#line 17544 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50894 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3475: /* require_list_element: SUBJECT_SYM TEXT_STRING */
-#line 17320 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3495: /* require_list_element: SUBJECT_SYM TEXT_STRING */
+#line 17554 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (lex->account_options.x509_subject.str)
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SUBJECT"));
lex->account_options.x509_subject= (yyvsp[0].lex_string_with_metadata);
}
-#line 50525 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50905 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3476: /* require_list_element: ISSUER_SYM TEXT_STRING */
-#line 17327 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3496: /* require_list_element: ISSUER_SYM TEXT_STRING */
+#line 17561 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (lex->account_options.x509_issuer.str)
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "ISSUER"));
lex->account_options.x509_issuer= (yyvsp[0].lex_string_with_metadata);
}
-#line 50536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50916 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3477: /* require_list_element: CIPHER_SYM TEXT_STRING */
-#line 17334 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3497: /* require_list_element: CIPHER_SYM TEXT_STRING */
+#line 17568 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (lex->account_options.ssl_cipher.str)
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "CIPHER"));
lex->account_options.ssl_cipher= (yyvsp[0].lex_string_with_metadata);
}
-#line 50547 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50927 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3478: /* grant_ident: '*' */
-#line 17344 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3498: /* grant_ident: '*' */
+#line 17578 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING db;
if (unlikely(Lex->copy_db_to(&db)))
@@ -50556,411 +50936,411 @@ yyreduce:
Lex_grant_object_name::STAR)))
MYSQL_YYABORT;
}
-#line 50560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3479: /* grant_ident: ident '.' '*' */
-#line 17353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3499: /* grant_ident: ident '.' '*' */
+#line 17587 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant_ident)= new (thd->mem_root) Lex_grant_object_name((yyvsp[-2].ident_sys),
Lex_grant_object_name::IDENT_STAR)))
MYSQL_YYABORT;
}
-#line 50570 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50950 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3480: /* grant_ident: '*' '.' '*' */
-#line 17359 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3500: /* grant_ident: '*' '.' '*' */
+#line 17593 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant_ident)= new (thd->mem_root) Lex_grant_object_name(
null_clex_str,
Lex_grant_object_name::STAR_STAR)))
MYSQL_YYABORT;
}
-#line 50581 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50961 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3481: /* grant_ident: table_ident */
-#line 17366 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3501: /* grant_ident: table_ident */
+#line 17600 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant_ident)= new (thd->mem_root) Lex_grant_object_name((yyvsp[0].table))))
MYSQL_YYABORT;
}
-#line 50590 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50970 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3482: /* user_list: user */
-#line 17374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3502: /* user_list: user */
+#line 17608 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50599 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50979 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3483: /* user_list: user_list ',' user */
-#line 17379 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3503: /* user_list: user_list ',' user */
+#line 17613 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50608 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3484: /* grant_list: grant_user */
-#line 17387 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3504: /* grant_list: grant_user */
+#line 17621 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50617 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 50997 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3485: /* grant_list: grant_list ',' grant_user */
-#line 17392 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3505: /* grant_list: grant_list ',' grant_user */
+#line 17626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50626 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3486: /* user_and_role_list: user_or_role */
-#line 17400 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3506: /* user_and_role_list: user_or_role */
+#line 17634 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3487: /* user_and_role_list: user_and_role_list ',' user_or_role */
-#line 17405 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3507: /* user_and_role_list: user_and_role_list ',' user_or_role */
+#line 17639 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 50644 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51024 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3492: /* grant_user: user IDENTIFIED_SYM BY TEXT_STRING */
-#line 17416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3512: /* grant_user: user IDENTIFIED_SYM BY TEXT_STRING */
+#line 17650 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[-3].lex_user);
(yyvsp[-3].lex_user)->auth= new (thd->mem_root) USER_AUTH();
(yyvsp[-3].lex_user)->auth->pwtext= (yyvsp[0].lex_string_with_metadata);
}
-#line 50654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51034 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3493: /* grant_user: user IDENTIFIED_SYM BY PASSWORD_SYM TEXT_STRING */
-#line 17422 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3513: /* grant_user: user IDENTIFIED_SYM BY PASSWORD_SYM TEXT_STRING */
+#line 17656 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[-4].lex_user);
(yyvsp[-4].lex_user)->auth= new (thd->mem_root) USER_AUTH();
(yyvsp[-4].lex_user)->auth->auth_str= (yyvsp[0].lex_string_with_metadata);
}
-#line 50664 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3494: /* grant_user: user IDENTIFIED_SYM via_or_with auth_expression */
-#line 17428 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3514: /* grant_user: user IDENTIFIED_SYM via_or_with auth_expression */
+#line 17662 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[-3].lex_user);
(yyvsp[-3].lex_user)->auth= (yyvsp[0].user_auth);
}
-#line 50673 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51053 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3495: /* grant_user: user_or_role */
-#line 17433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3515: /* grant_user: user_or_role */
+#line 17667 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[0].lex_user);
}
-#line 50681 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51061 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3496: /* auth_expression: auth_token OR_SYM auth_expression */
-#line 17440 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3516: /* auth_expression: auth_token OR_SYM auth_expression */
+#line 17674 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= (yyvsp[-2].user_auth);
DBUG_ASSERT((yyval.user_auth)->next == NULL);
(yyval.user_auth)->next= (yyvsp[0].user_auth);
}
-#line 50691 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51071 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3497: /* auth_expression: auth_token */
-#line 17446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3517: /* auth_expression: auth_token */
+#line 17680 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= (yyvsp[0].user_auth);
}
-#line 50699 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51079 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3498: /* auth_token: ident_or_text opt_auth_str */
-#line 17453 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3518: /* auth_token: ident_or_text opt_auth_str */
+#line 17687 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= (yyvsp[0].user_auth);
(yyval.user_auth)->plugin= (yyvsp[-1].lex_str);
}
-#line 50708 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51088 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3499: /* opt_auth_str: %empty */
-#line 17461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3519: /* opt_auth_str: %empty */
+#line 17695 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.user_auth)=(USER_AUTH*) thd->calloc(sizeof(USER_AUTH))))
MYSQL_YYABORT;
}
-#line 50717 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51097 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3500: /* opt_auth_str: using_or_as TEXT_STRING_sys */
-#line 17466 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3520: /* opt_auth_str: using_or_as TEXT_STRING_sys */
+#line 17700 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.user_auth)=(USER_AUTH*) thd->calloc(sizeof(USER_AUTH))))
MYSQL_YYABORT;
(yyval.user_auth)->auth_str= (yyvsp[0].lex_str);
}
-#line 50727 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51107 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3501: /* opt_auth_str: using_or_as PASSWORD_SYM '(' TEXT_STRING ')' */
-#line 17472 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3521: /* opt_auth_str: using_or_as PASSWORD_SYM '(' TEXT_STRING ')' */
+#line 17706 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.user_auth)=(USER_AUTH*) thd->calloc(sizeof(USER_AUTH))))
MYSQL_YYABORT;
(yyval.user_auth)->pwtext= (yyvsp[-1].lex_string_with_metadata);
}
-#line 50737 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51117 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3503: /* opt_require_clause: REQUIRE_SYM require_list */
-#line 17482 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3523: /* opt_require_clause: REQUIRE_SYM require_list */
+#line 17716 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_SPECIFIED;
}
-#line 50745 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51125 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3504: /* opt_require_clause: REQUIRE_SYM SSL_SYM */
-#line 17486 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3524: /* opt_require_clause: REQUIRE_SYM SSL_SYM */
+#line 17720 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_ANY;
}
-#line 50753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51133 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3505: /* opt_require_clause: REQUIRE_SYM X509_SYM */
-#line 17490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3525: /* opt_require_clause: REQUIRE_SYM X509_SYM */
+#line 17724 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_X509;
}
-#line 50761 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51141 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3506: /* opt_require_clause: REQUIRE_SYM NONE_SYM */
-#line 17494 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3526: /* opt_require_clause: REQUIRE_SYM NONE_SYM */
+#line 17728 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_NONE;
}
-#line 50769 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51149 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3507: /* resource_option: MAX_QUERIES_PER_HOUR ulong_num */
-#line 17501 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3527: /* resource_option: MAX_QUERIES_PER_HOUR ulong_num */
+#line 17735 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.questions=(yyvsp[0].ulong_num);
Lex->account_options.specified_limits|= USER_RESOURCES::QUERIES_PER_HOUR;
}
-#line 50778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51158 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3508: /* resource_option: MAX_UPDATES_PER_HOUR ulong_num */
-#line 17506 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3528: /* resource_option: MAX_UPDATES_PER_HOUR ulong_num */
+#line 17740 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.updates=(yyvsp[0].ulong_num);
Lex->account_options.specified_limits|= USER_RESOURCES::UPDATES_PER_HOUR;
}
-#line 50787 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51167 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3509: /* resource_option: MAX_CONNECTIONS_PER_HOUR ulong_num */
-#line 17511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3529: /* resource_option: MAX_CONNECTIONS_PER_HOUR ulong_num */
+#line 17745 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.conn_per_hour= (yyvsp[0].ulong_num);
Lex->account_options.specified_limits|= USER_RESOURCES::CONNECTIONS_PER_HOUR;
}
-#line 50796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51176 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3510: /* resource_option: MAX_USER_CONNECTIONS_SYM int_num */
-#line 17516 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3530: /* resource_option: MAX_USER_CONNECTIONS_SYM int_num */
+#line 17750 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.user_conn= (yyvsp[0].num);
Lex->account_options.specified_limits|= USER_RESOURCES::USER_CONNECTIONS;
}
-#line 50805 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51185 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3511: /* resource_option: MAX_STATEMENT_TIME_SYM NUM_literal */
-#line 17521 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3531: /* resource_option: MAX_STATEMENT_TIME_SYM NUM_literal */
+#line 17755 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.max_statement_time= (yyvsp[0].item_num)->val_real();
Lex->account_options.specified_limits|= USER_RESOURCES::MAX_STATEMENT_TIME;
}
-#line 50814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51194 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3512: /* resource_option_list: resource_option_list resource_option */
-#line 17528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3532: /* resource_option_list: resource_option_list resource_option */
+#line 17762 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50820 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51200 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3513: /* resource_option_list: resource_option */
-#line 17529 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3533: /* resource_option_list: resource_option */
+#line 17763 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50826 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51206 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3514: /* opt_resource_options: %empty */
-#line 17533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3534: /* opt_resource_options: %empty */
+#line 17767 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50832 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51212 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3516: /* opt_grant_options: %empty */
-#line 17539 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3536: /* opt_grant_options: %empty */
+#line 17773 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50838 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3517: /* opt_grant_options: WITH grant_option_list */
-#line 17540 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3537: /* opt_grant_options: WITH grant_option_list */
+#line 17774 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= (yyvsp[0].privilege); }
-#line 50844 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51224 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3518: /* opt_grant_option: %empty */
-#line 17544 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3538: /* opt_grant_option: %empty */
+#line 17778 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50850 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51230 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3519: /* opt_grant_option: WITH GRANT OPTION */
-#line 17545 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3539: /* opt_grant_option: WITH GRANT OPTION */
+#line 17779 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= GRANT_ACL; }
-#line 50856 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51236 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3520: /* grant_option_list: grant_option_list grant_option */
-#line 17549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3540: /* grant_option_list: grant_option_list grant_option */
+#line 17783 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= (yyvsp[-1].privilege) | (yyvsp[0].privilege); }
-#line 50862 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51242 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3522: /* grant_option: GRANT OPTION */
-#line 17554 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3542: /* grant_option: GRANT OPTION */
+#line 17788 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= GRANT_ACL;}
-#line 50868 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51248 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3523: /* grant_option: resource_option */
-#line 17555 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3543: /* grant_option: resource_option */
+#line 17789 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50874 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51254 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3524: /* $@247: %empty */
-#line 17560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3544: /* $@249: %empty */
+#line 17794 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_BEGIN;
lex->start_transaction_opt= 0;
}
-#line 50884 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51264 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3525: /* begin_stmt_mariadb: BEGIN_MARIADB_SYM $@247 opt_work */
-#line 17565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3545: /* begin_stmt_mariadb: BEGIN_MARIADB_SYM $@249 opt_work */
+#line 17799 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50890 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51270 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3526: /* compound_statement: sp_proc_stmt_compound_ok */
-#line 17570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3546: /* compound_statement: sp_proc_stmt_compound_ok */
+#line 17804 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_COMPOUND;
if (Lex->sp_body_finalize_procedure(thd))
MYSQL_YYABORT;
}
-#line 50900 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51280 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3527: /* opt_not: %empty */
-#line 17578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3547: /* opt_not: %empty */
+#line 17812 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 50906 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51286 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3528: /* opt_not: not */
-#line 17579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3548: /* opt_not: not */
+#line 17813 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 50912 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3529: /* opt_work: %empty */
-#line 17583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3549: /* opt_work: %empty */
+#line 17817 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50918 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51298 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3530: /* opt_work: WORK_SYM */
-#line 17584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3550: /* opt_work: WORK_SYM */
+#line 17818 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50924 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51304 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3531: /* opt_chain: %empty */
-#line 17589 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3551: /* opt_chain: %empty */
+#line 17823 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_UNKNOWN; }
-#line 50930 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3532: /* opt_chain: AND_SYM NO_SYM CHAIN_SYM */
-#line 17590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3552: /* opt_chain: AND_SYM NO_SYM CHAIN_SYM */
+#line 17824 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_NO; }
-#line 50936 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3533: /* opt_chain: AND_SYM CHAIN_SYM */
-#line 17591 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3553: /* opt_chain: AND_SYM CHAIN_SYM */
+#line 17825 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_YES; }
-#line 50942 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51322 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3534: /* opt_release: %empty */
-#line 17596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3554: /* opt_release: %empty */
+#line 17830 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_UNKNOWN; }
-#line 50948 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51328 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3535: /* opt_release: RELEASE_SYM */
-#line 17597 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3555: /* opt_release: RELEASE_SYM */
+#line 17831 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_YES; }
-#line 50954 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51334 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3536: /* opt_release: NO_SYM RELEASE_SYM */
-#line 17598 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3556: /* opt_release: NO_SYM RELEASE_SYM */
+#line 17832 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_NO; }
-#line 50960 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51340 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3537: /* commit: COMMIT_SYM opt_work opt_chain opt_release */
-#line 17603 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3557: /* commit: COMMIT_SYM opt_work opt_chain opt_release */
+#line 17837 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_COMMIT;
@@ -50969,11 +51349,11 @@ yyreduce:
lex->tx_chain= (yyvsp[-1].m_yes_no_unk);
lex->tx_release= (yyvsp[0].m_yes_no_unk);
}
-#line 50973 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51353 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3538: /* rollback: ROLLBACK_SYM opt_work opt_chain opt_release */
-#line 17615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3558: /* rollback: ROLLBACK_SYM opt_work opt_chain opt_release */
+#line 17849 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ROLLBACK;
@@ -50982,145 +51362,145 @@ yyreduce:
lex->tx_chain= (yyvsp[-1].m_yes_no_unk);
lex->tx_release= (yyvsp[0].m_yes_no_unk);
}
-#line 50986 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51366 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3539: /* rollback: ROLLBACK_SYM opt_work TO_SYM SAVEPOINT_SYM ident */
-#line 17624 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3559: /* rollback: ROLLBACK_SYM opt_work TO_SYM SAVEPOINT_SYM ident */
+#line 17858 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ROLLBACK_TO_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 50996 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51376 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3540: /* rollback: ROLLBACK_SYM opt_work TO_SYM ident */
-#line 17630 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3560: /* rollback: ROLLBACK_SYM opt_work TO_SYM ident */
+#line 17864 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ROLLBACK_TO_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 51006 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51386 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3541: /* savepoint: SAVEPOINT_SYM ident */
-#line 17639 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3561: /* savepoint: SAVEPOINT_SYM ident */
+#line 17873 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 51016 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51396 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3542: /* release: RELEASE_SYM SAVEPOINT_SYM ident */
-#line 17648 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3562: /* release: RELEASE_SYM SAVEPOINT_SYM ident */
+#line 17882 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_RELEASE_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 51026 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51406 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3543: /* unit_type_decl: UNION_SYM union_option */
-#line 17661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3563: /* unit_type_decl: UNION_SYM union_option */
+#line 17895 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.unit_operation).unit_type= UNION_TYPE; (yyval.unit_operation).distinct= (yyvsp[0].num); }
-#line 51032 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51412 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3544: /* unit_type_decl: INTERSECT_SYM union_option */
-#line 17663 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3564: /* unit_type_decl: INTERSECT_SYM union_option */
+#line 17897 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.unit_operation).unit_type= INTERSECT_TYPE; (yyval.unit_operation).distinct= (yyvsp[0].num); }
-#line 51038 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51418 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3545: /* unit_type_decl: EXCEPT_SYM union_option */
-#line 17665 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3565: /* unit_type_decl: EXCEPT_SYM union_option */
+#line 17899 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.unit_operation).unit_type= EXCEPT_TYPE; (yyval.unit_operation).distinct= (yyvsp[0].num); }
-#line 51044 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3546: /* union_option: %empty */
-#line 17672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3566: /* union_option: %empty */
+#line 17906 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=1; }
-#line 51050 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51430 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3547: /* union_option: DISTINCT */
-#line 17673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3567: /* union_option: DISTINCT */
+#line 17907 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=1; }
-#line 51056 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51436 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3548: /* union_option: ALL */
-#line 17674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3568: /* union_option: ALL */
+#line 17908 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=0; }
-#line 51062 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51442 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3549: /* query_expression_option: STRAIGHT_JOIN */
-#line 17678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3569: /* query_expression_option: STRAIGHT_JOIN */
+#line 17912 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_STRAIGHT_JOIN; }
-#line 51068 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51448 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3550: /* query_expression_option: HIGH_PRIORITY */
-#line 17680 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3570: /* query_expression_option: HIGH_PRIORITY */
+#line 17914 "/home/buildbot/git/sql/sql_yacc.yy"
{
YYPS->m_lock_type= TL_READ_HIGH_PRIORITY;
YYPS->m_mdl_type= MDL_SHARED_READ;
Select->options|= SELECT_HIGH_PRIORITY;
}
-#line 51078 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51458 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3551: /* query_expression_option: DISTINCT */
-#line 17685 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3571: /* query_expression_option: DISTINCT */
+#line 17919 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_DISTINCT; }
-#line 51084 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3552: /* query_expression_option: UNIQUE_SYM */
-#line 17686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3572: /* query_expression_option: UNIQUE_SYM */
+#line 17920 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_DISTINCT; }
-#line 51090 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51470 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3553: /* query_expression_option: SQL_SMALL_RESULT */
-#line 17687 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3573: /* query_expression_option: SQL_SMALL_RESULT */
+#line 17921 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_SMALL_RESULT; }
-#line 51096 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51476 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3554: /* query_expression_option: SQL_BIG_RESULT */
-#line 17688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3574: /* query_expression_option: SQL_BIG_RESULT */
+#line 17922 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_BIG_RESULT; }
-#line 51102 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51482 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3555: /* query_expression_option: SQL_BUFFER_RESULT */
-#line 17689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3575: /* query_expression_option: SQL_BUFFER_RESULT */
+#line 17923 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= OPTION_BUFFER_RESULT; }
-#line 51108 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51488 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3556: /* query_expression_option: SQL_CALC_FOUND_ROWS */
-#line 17690 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3576: /* query_expression_option: SQL_CALC_FOUND_ROWS */
+#line 17924 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= OPTION_FOUND_ROWS; }
-#line 51114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51494 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3557: /* query_expression_option: ALL */
-#line 17691 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3577: /* query_expression_option: ALL */
+#line 17925 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_ALL; }
-#line 51120 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51500 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3560: /* no_definer: %empty */
-#line 17707 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3580: /* no_definer: %empty */
+#line 17941 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
We have to distinguish missing DEFINER-clause from case when
@@ -51131,201 +51511,201 @@ yyreduce:
*/
thd->lex->definer= 0;
}
-#line 51135 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51515 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3561: /* definer: DEFINER_SYM '=' user_or_role */
-#line 17721 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3581: /* definer: DEFINER_SYM '=' user_or_role */
+#line 17955 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->definer= (yyvsp[0].lex_user);
Lex->account_options.reset();
}
-#line 51144 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51524 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3562: /* view_algorithm: ALGORITHM_SYM '=' UNDEFINED_SYM */
-#line 17734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3582: /* view_algorithm: ALGORITHM_SYM '=' UNDEFINED_SYM */
+#line 17968 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= DTYPE_ALGORITHM_UNDEFINED; }
-#line 51150 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51530 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3563: /* view_algorithm: ALGORITHM_SYM '=' MERGE_SYM */
-#line 17735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3583: /* view_algorithm: ALGORITHM_SYM '=' MERGE_SYM */
+#line 17969 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_ALGORITHM_MERGE; }
-#line 51156 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3564: /* view_algorithm: ALGORITHM_SYM '=' TEMPTABLE_SYM */
-#line 17736 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3584: /* view_algorithm: ALGORITHM_SYM '=' TEMPTABLE_SYM */
+#line 17970 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_ALGORITHM_TMPTABLE; }
-#line 51162 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3565: /* opt_view_suid: %empty */
-#line 17740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3585: /* opt_view_suid: %empty */
+#line 17974 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= VIEW_SUID_DEFAULT; }
-#line 51168 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51548 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3566: /* opt_view_suid: view_suid */
-#line 17741 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3586: /* opt_view_suid: view_suid */
+#line 17975 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= (yyvsp[0].view_suid); }
-#line 51174 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3567: /* view_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
-#line 17745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3587: /* view_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
+#line 17979 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= VIEW_SUID_DEFINER; }
-#line 51180 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3568: /* view_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
-#line 17746 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3588: /* view_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
+#line 17980 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= VIEW_SUID_INVOKER; }
-#line 51186 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3569: /* view_list_opt: %empty */
-#line 17751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3589: /* view_list_opt: %empty */
+#line 17985 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 51192 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51572 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3570: /* view_list_opt: '(' view_list ')' */
-#line 17752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3590: /* view_list_opt: '(' view_list ')' */
+#line 17986 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 51198 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51578 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3571: /* view_list: ident */
-#line 17757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3591: /* view_list: ident */
+#line 17991 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->view_list.push_back((LEX_CSTRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING)),
thd->mem_root);
}
-#line 51208 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51588 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3572: /* view_list: view_list ',' ident */
-#line 17763 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3592: /* view_list: view_list ',' ident */
+#line 17997 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->view_list.push_back((LEX_CSTRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING)),
thd->mem_root);
}
-#line 51218 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51598 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3573: /* $@248: %empty */
-#line 17771 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3593: /* $@250: %empty */
+#line 18005 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->parsing_options.allows_variable= FALSE;
lex->create_view->select.str= (char *) YYLIP->get_cpp_ptr();
}
-#line 51228 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51608 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3574: /* view_select: $@248 query_expression view_check_option */
-#line 17778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3594: /* view_select: $@250 query_expression view_check_option */
+#line 18012 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->parsed_create_view((yyvsp[-1].select_lex_unit), (yyvsp[0].num)))
MYSQL_YYABORT;
}
-#line 51237 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51617 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3575: /* view_check_option: %empty */
-#line 17785 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3595: /* view_check_option: %empty */
+#line 18019 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_NONE; }
-#line 51243 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51623 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3576: /* view_check_option: WITH CHECK_SYM OPTION */
-#line 17786 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3596: /* view_check_option: WITH CHECK_SYM OPTION */
+#line 18020 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_CASCADED; }
-#line 51249 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51629 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3577: /* view_check_option: WITH CASCADED CHECK_SYM OPTION */
-#line 17787 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3597: /* view_check_option: WITH CASCADED CHECK_SYM OPTION */
+#line 18021 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_CASCADED; }
-#line 51255 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51635 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3578: /* view_check_option: WITH LOCAL_SYM CHECK_SYM OPTION */
-#line 17788 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3598: /* view_check_option: WITH LOCAL_SYM CHECK_SYM OPTION */
+#line 18022 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_LOCAL; }
-#line 51261 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51641 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3579: /* trigger_action_order: FOLLOWS_SYM */
-#line 17799 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3599: /* trigger_action_order: FOLLOWS_SYM */
+#line 18033 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trigger_action_order_type)= TRG_ORDER_FOLLOWS; }
-#line 51267 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51647 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3580: /* trigger_action_order: PRECEDES_SYM */
-#line 17801 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3600: /* trigger_action_order: PRECEDES_SYM */
+#line 18035 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trigger_action_order_type)= TRG_ORDER_PRECEDES; }
-#line 51273 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51653 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3581: /* trigger_follows_precedes_clause: %empty */
-#line 17806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3601: /* trigger_follows_precedes_clause: %empty */
+#line 18040 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.trg_execution_order).ordering_clause= TRG_ORDER_NONE;
(yyval.trg_execution_order).anchor_trigger_name.str= NULL;
(yyval.trg_execution_order).anchor_trigger_name.length= 0;
}
-#line 51283 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51663 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3582: /* trigger_follows_precedes_clause: trigger_action_order ident_or_text */
-#line 17813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3602: /* trigger_follows_precedes_clause: trigger_action_order ident_or_text */
+#line 18047 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.trg_execution_order).ordering_clause= (yyvsp[-1].trigger_action_order_type);
(yyval.trg_execution_order).anchor_trigger_name= (yyvsp[0].lex_str);
}
-#line 51292 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51672 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3583: /* $@249: %empty */
-#line 17822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3603: /* $@251: %empty */
+#line 18056 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_create_options_with_check((yyvsp[0].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 51301 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51681 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3584: /* $@250: %empty */
-#line 17831 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3604: /* $@252: %empty */
+#line 18065 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $9 */
Lex->raw_trg_on_table_name_begin= YYLIP->get_tok_start();
}
-#line 51309 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51689 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3585: /* $@251: %empty */
-#line 17837 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3605: /* $@253: %empty */
+#line 18071 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $13 */
Lex->raw_trg_on_table_name_end= YYLIP->get_tok_start();
}
-#line 51317 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51697 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3586: /* $@252: %empty */
-#line 17842 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3606: /* $@254: %empty */
+#line 18076 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->trg_chistics.ordering_clause_begin= YYLIP->get_cpp_ptr();
}
-#line 51325 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51705 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3587: /* $@253: %empty */
-#line 17846 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3607: /* $@255: %empty */
+#line 18080 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $18 */
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
@@ -51346,11 +51726,11 @@ yyreduce:
lex->sphead->set_body_start(thd, lip->get_cpp_tok_start());
}
-#line 51350 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51730 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3588: /* trigger_tail: remember_name opt_if_not_exists $@249 sp_name trg_action_time trg_event ON remember_name $@250 table_ident FOR_SYM remember_name $@251 EACH_SYM ROW_SYM $@252 trigger_follows_precedes_clause $@253 sp_proc_stmt force_lookahead */
-#line 17867 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3608: /* trigger_tail: remember_name opt_if_not_exists $@251 sp_name trg_action_time trg_event ON remember_name $@252 table_ident FOR_SYM remember_name $@253 EACH_SYM ROW_SYM $@254 trigger_follows_precedes_clause $@255 sp_proc_stmt force_lookahead */
+#line 18101 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $21 */
LEX *lex= Lex;
@@ -51369,85 +51749,127 @@ yyreduce:
MDL_SHARED_NO_WRITE))
MYSQL_YYABORT;
}
-#line 51373 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3589: /* $@254: %empty */
-#line 17895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3609: /* $@256: %empty */
+#line 18129 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->init_last_field(&lex->sphead->m_return_field_def,
&empty_clex_str);
}
-#line 51383 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51763 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3590: /* sf_return_type: $@254 field_type */
-#line 17901 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3610: /* sf_return_type: $@256 field_type */
+#line 18135 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sf_return_fill_definition((yyvsp[0].Lex_field_type))))
MYSQL_YYABORT;
}
-#line 51392 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51772 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3611: /* create_package_chistic: COMMENT_SYM TEXT_STRING_sys */
+#line 18143 "/home/buildbot/git/sql/sql_yacc.yy"
+ { Lex->sp_chistics.comment= (yyvsp[0].lex_str); }
+#line 51778 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3612: /* create_package_chistic: sp_suid */
+#line 18145 "/home/buildbot/git/sql/sql_yacc.yy"
+ { Lex->sp_chistics.suid= (yyvsp[0].sp_suid); }
+#line 51784 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3613: /* create_package_chistics: create_package_chistic */
+#line 18149 "/home/buildbot/git/sql/sql_yacc.yy"
+ {}
+#line 51790 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3614: /* create_package_chistics: create_package_chistics create_package_chistic */
+#line 18150 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 51796 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3615: /* opt_create_package_chistics: %empty */
+#line 18154 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 51802 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3591: /* xa: XA_SYM begin_or_start xid opt_join_or_resume */
-#line 17911 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3616: /* opt_create_package_chistics: create_package_chistics */
+#line 18155 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 51808 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3617: /* $@257: %empty */
+#line 18159 "/home/buildbot/git/sql/sql_yacc.yy"
+ { Lex->sp_chistics.init(); }
+#line 51814 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3619: /* xa: XA_SYM begin_or_start xid opt_join_or_resume */
+#line 18167 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_START;
}
-#line 51400 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51822 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3592: /* xa: XA_SYM END xid opt_suspend */
-#line 17915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3620: /* xa: XA_SYM END xid opt_suspend */
+#line 18171 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_END;
}
-#line 51408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51830 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3593: /* xa: XA_SYM PREPARE_SYM xid */
-#line 17919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3621: /* xa: XA_SYM PREPARE_SYM xid */
+#line 18175 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_PREPARE;
}
-#line 51416 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51838 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3594: /* xa: XA_SYM COMMIT_SYM xid opt_one_phase */
-#line 17923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3622: /* xa: XA_SYM COMMIT_SYM xid opt_one_phase */
+#line 18179 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_COMMIT;
}
-#line 51424 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3595: /* xa: XA_SYM ROLLBACK_SYM xid */
-#line 17927 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3623: /* xa: XA_SYM ROLLBACK_SYM xid */
+#line 18183 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_ROLLBACK;
}
-#line 51432 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3596: /* xa: XA_SYM RECOVER_SYM opt_format_xid */
-#line 17931 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3624: /* xa: XA_SYM RECOVER_SYM opt_format_xid */
+#line 18187 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_RECOVER;
Lex->verbose= (yyvsp[0].num);
}
-#line 51441 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3597: /* opt_format_xid: %empty */
-#line 17938 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3625: /* opt_format_xid: %empty */
+#line 18194 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 51447 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51869 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3598: /* opt_format_xid: FORMAT_SYM '=' ident_or_text */
-#line 17940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3626: /* opt_format_xid: FORMAT_SYM '=' ident_or_text */
+#line 18196 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (lex_string_eq(&(yyvsp[0].lex_str), STRING_WITH_LEN("SQL")))
(yyval.num)= true;
@@ -51460,33 +51882,33 @@ yyreduce:
(yyval.num)= false;
}
}
-#line 51464 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51886 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3599: /* xid: text_string */
-#line 17956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3627: /* xid: text_string */
+#line 18212 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[0].string)->length() <= MAXGTRIDSIZE);
if (unlikely(!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))))
MYSQL_YYABORT;
Lex->xid->set(1L, (yyvsp[0].string)->ptr(), (yyvsp[0].string)->length(), 0, 0);
}
-#line 51475 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51897 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3600: /* xid: text_string ',' text_string */
-#line 17963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3628: /* xid: text_string ',' text_string */
+#line 18219 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-2].string)->length() <= MAXGTRIDSIZE && (yyvsp[0].string)->length() <= MAXBQUALSIZE);
if (unlikely(!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))))
MYSQL_YYABORT;
Lex->xid->set(1L, (yyvsp[-2].string)->ptr(), (yyvsp[-2].string)->length(), (yyvsp[0].string)->ptr(), (yyvsp[0].string)->length());
}
-#line 51486 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51908 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3601: /* xid: text_string ',' text_string ',' ulong_num */
-#line 17970 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3629: /* xid: text_string ',' text_string ',' ulong_num */
+#line 18226 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-4].string)->length() <= MAXGTRIDSIZE &&
(yyvsp[-2].string)->length() <= MAXBQUALSIZE &&
@@ -51496,522 +51918,769 @@ yyreduce:
MYSQL_YYABORT;
Lex->xid->set((yyvsp[0].ulong_num), (yyvsp[-4].string)->ptr(), (yyvsp[-4].string)->length(), (yyvsp[-2].string)->ptr(), (yyvsp[-2].string)->length());
}
-#line 51500 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51922 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3602: /* begin_or_start: BEGIN_MARIADB_SYM */
-#line 17982 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3630: /* begin_or_start: BEGIN_MARIADB_SYM */
+#line 18238 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 51506 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51928 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3603: /* begin_or_start: BEGIN_ORACLE_SYM */
-#line 17983 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3631: /* begin_or_start: BEGIN_ORACLE_SYM */
+#line 18239 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 51512 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51934 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3604: /* begin_or_start: START_SYM */
-#line 17984 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3632: /* begin_or_start: START_SYM */
+#line 18240 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 51518 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51940 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3605: /* opt_join_or_resume: %empty */
-#line 17988 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3633: /* opt_join_or_resume: %empty */
+#line 18244 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_NONE; }
-#line 51524 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51946 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3606: /* opt_join_or_resume: JOIN_SYM */
-#line 17989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3634: /* opt_join_or_resume: JOIN_SYM */
+#line 18245 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_JOIN; }
-#line 51530 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51952 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3607: /* opt_join_or_resume: RESUME_SYM */
-#line 17990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3635: /* opt_join_or_resume: RESUME_SYM */
+#line 18246 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_RESUME; }
-#line 51536 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3608: /* opt_one_phase: %empty */
-#line 17994 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3636: /* opt_one_phase: %empty */
+#line 18250 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_NONE; }
-#line 51542 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51964 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3609: /* opt_one_phase: ONE_SYM PHASE_SYM */
-#line 17995 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3637: /* opt_one_phase: ONE_SYM PHASE_SYM */
+#line 18251 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_ONE_PHASE; }
-#line 51548 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51970 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3610: /* opt_suspend: %empty */
-#line 18000 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3638: /* opt_suspend: %empty */
+#line 18256 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_NONE; }
-#line 51554 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51976 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3611: /* $@255: %empty */
-#line 18002 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3639: /* $@258: %empty */
+#line 18258 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_SUSPEND; }
-#line 51560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51982 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3613: /* opt_migrate: %empty */
-#line 18007 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3641: /* opt_migrate: %empty */
+#line 18263 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 51566 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51988 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3614: /* opt_migrate: FOR_SYM MIGRATE_SYM */
-#line 18008 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3642: /* opt_migrate: FOR_SYM MIGRATE_SYM */
+#line 18264 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_FOR_MIGRATE; }
-#line 51572 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 51994 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3615: /* install: INSTALL_SYM PLUGIN_SYM opt_if_not_exists ident SONAME_SYM TEXT_STRING_sys */
-#line 18013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3643: /* install: INSTALL_SYM PLUGIN_SYM opt_if_not_exists ident SONAME_SYM TEXT_STRING_sys */
+#line 18269 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_install_plugin((yyvsp[-3].object_ddl_options), (yyvsp[-2].ident_sys), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 51581 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52003 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3616: /* install: INSTALL_SYM SONAME_SYM TEXT_STRING_sys */
-#line 18018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3644: /* install: INSTALL_SYM SONAME_SYM TEXT_STRING_sys */
+#line 18274 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_install_plugin((yyvsp[0].lex_str));
}
-#line 51589 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52011 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3617: /* uninstall: UNINSTALL_SYM PLUGIN_SYM opt_if_exists ident */
-#line 18025 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3645: /* uninstall: UNINSTALL_SYM PLUGIN_SYM opt_if_exists ident */
+#line 18281 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_uninstall_plugin_by_name((yyvsp[-1].object_ddl_options), (yyvsp[0].ident_sys)))
MYSQL_YYABORT;
}
-#line 51598 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52020 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3618: /* uninstall: UNINSTALL_SYM SONAME_SYM opt_if_exists TEXT_STRING_sys */
-#line 18030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3646: /* uninstall: UNINSTALL_SYM SONAME_SYM opt_if_exists TEXT_STRING_sys */
+#line 18286 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_uninstall_plugin_by_soname((yyvsp[-1].object_ddl_options), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 51607 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52029 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3619: /* keep_gcc_happy: IMPOSSIBLE_ACTION */
-#line 18039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3647: /* keep_gcc_happy: IMPOSSIBLE_ACTION */
+#line 18295 "/home/buildbot/git/sql/sql_yacc.yy"
{
YYERROR;
}
-#line 51615 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52037 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3653: /* row_field_name: ident */
-#line 18122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3653: /* sp_tail_is: %empty */
+#line 18324 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 52043 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3656: /* opt_trailing_sp_name: %empty */
+#line 18336 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spname)= NULL; }
+#line 52049 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3657: /* opt_package_routine_end_name: %empty */
+#line 18340 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.lex_str)= null_clex_str; }
+#line 52055 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3658: /* opt_package_routine_end_name: FORCE_LOOKAHEAD */
+#line 18341 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.lex_str)= null_clex_str; }
+#line 52061 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3662: /* package_implementation_item_declaration: DECLARE_MARIADB_SYM sp_decl_variable_list ';' */
+#line 18357 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock)= (yyvsp[-1].spblock); }
+#line 52067 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3665: /* package_implementation_declare_section_list: package_implementation_declare_section_list1 package_implementation_declare_section_list2 */
+#line 18368 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
+#line 52073 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3667: /* package_implementation_executable_section: sp_proc_stmts END */
+#line 18377 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.spblock_handlers).init(0);
+ }
+#line 52081 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3696: /* row_field_name: ident */
+#line 18438 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.spvar_definition)= Lex->row_field_name(thd, (yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 51624 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52090 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3654: /* $@256: %empty */
-#line 18130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3697: /* $@259: %empty */
+#line 18446 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-1].expr_lex)->sp_while_loop_expression(thd)))
MYSQL_YYABORT;
}
-#line 51633 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52099 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3655: /* while_body: expr_lex DO_SYM $@256 sp_proc_stmts1 END WHILE_SYM */
-#line 18135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3698: /* while_body: expr_lex DO_SYM $@259 sp_proc_stmts1 END WHILE_SYM */
+#line 18451 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_while_loop_finalize(thd)))
MYSQL_YYABORT;
}
-#line 51642 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52108 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3656: /* for_loop_statements: DO_SYM sp_proc_stmts1 END FOR_SYM */
-#line 18143 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3699: /* for_loop_statements: DO_SYM sp_proc_stmts1 END FOR_SYM */
+#line 18459 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 51648 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52114 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3657: /* sp_label: label_ident ':' */
-#line 18147 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3700: /* sp_label: label_ident ':' */
+#line 18463 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[-1].ident_sys); }
-#line 51654 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52120 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3659: /* sp_block_label: sp_label */
-#line 18156 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3702: /* sp_block_label: sp_label */
+#line 18472 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->spcont->block_label_declare(&(yyvsp[0].lex_str))))
MYSQL_YYABORT;
(yyval.lex_str)= (yyvsp[0].lex_str);
}
-#line 51664 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52130 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3660: /* sp_opt_default: _empty */
-#line 18164 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item) = NULL; }
-#line 51670 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ case 3703: /* sp_opt_default: _empty */
+#line 18480 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.expr_and_query_str)= { nullptr, empty_clex_str}; }
+#line 52136 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3661: /* sp_opt_default: DEFAULT expr */
-#line 18165 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item) = (yyvsp[0].item); }
-#line 51676 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ case 3704: /* sp_opt_default: DEFAULT remember_cpp_ptr expr remember_end */
+#line 18482 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+
+ (yyval.expr_and_query_str)= { (yyvsp[-1].item), expr_str };
+ }
+#line 52153 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3662: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars TYPE_SYM OF_SYM optionally_qualified_column_ident sp_opt_default */
-#line 18172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3705: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars TYPE_SYM OF_SYM optionally_qualified_column_ident sp_opt_default */
+#line 18500 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(thd, (yyvsp[-4].num), (yyvsp[-1].qualified_column_ident), (yyvsp[0].item))))
+ if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(
+ thd, (yyvsp[-4].num), (yyvsp[-1].qualified_column_ident), (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-4].num));
}
-#line 51686 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52164 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3663: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars ROW_SYM TYPE_SYM OF_SYM optionally_qualified_column_ident sp_opt_default */
-#line 18180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3706: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars ROW_SYM TYPE_SYM OF_SYM optionally_qualified_column_ident sp_opt_default */
+#line 18509 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(thd, (yyvsp[-5].num), (yyvsp[-1].qualified_column_ident), (yyvsp[0].item))))
+ if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(
+ thd, (yyvsp[-5].num), (yyvsp[-1].qualified_column_ident), (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-5].num));
}
-#line 51696 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52175 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3664: /* sp_param_name_and_mode: sp_parameter_type sp_param_name */
-#line 18189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3707: /* sp_param_name_and_mode: sp_parameter_type sp_param_name */
+#line 18519 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].spvar)->mode= (yyvsp[-1].spvar_mode);
(yyval.spvar)= (yyvsp[0].spvar);
}
-#line 51705 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52184 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3666: /* sp_param: sp_param_name_and_mode field_type */
-#line 18198 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3709: /* sp_param: sp_param_name_and_mode field_type */
+#line 18528 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_param_fill_definition((yyval.spvar)= (yyvsp[-1].spvar), (yyvsp[0].Lex_field_type))))
MYSQL_YYABORT;
}
-#line 51714 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52193 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3667: /* sp_param: sp_param_name_and_mode ROW_SYM row_type_body */
-#line 18203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3710: /* sp_param: sp_param_name_and_mode ROW_SYM row_type_body */
+#line 18533 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_row(thd, (yyval.spvar)= (yyvsp[-2].spvar), (yyvsp[0].spvar_definition_list))))
MYSQL_YYABORT;
}
-#line 51723 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52202 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3669: /* sp_param_anchored: sp_param_name_and_mode TYPE_SYM OF_SYM ident '.' ident */
-#line 18212 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3712: /* sp_param_anchored: sp_param_name_and_mode TYPE_SYM OF_SYM ident '.' ident */
+#line 18542 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_type_reference(thd,
(yyval.spvar)= (yyvsp[-5].spvar), (yyvsp[-2].ident_sys),
(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 51734 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52213 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3670: /* sp_param_anchored: sp_param_name_and_mode TYPE_SYM OF_SYM ident '.' ident '.' ident */
-#line 18219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3713: /* sp_param_anchored: sp_param_name_and_mode TYPE_SYM OF_SYM ident '.' ident '.' ident */
+#line 18549 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_type_reference(thd, (yyval.spvar)= (yyvsp[-7].spvar),
(yyvsp[-4].ident_sys), (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 51744 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52223 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3671: /* sp_param_anchored: sp_param_name_and_mode ROW_SYM TYPE_SYM OF_SYM ident */
-#line 18225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3714: /* sp_param_anchored: sp_param_name_and_mode ROW_SYM TYPE_SYM OF_SYM ident */
+#line 18555 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_table_rowtype_reference(thd, (yyval.spvar)= (yyvsp[-4].spvar), (yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 51753 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52232 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3672: /* sp_param_anchored: sp_param_name_and_mode ROW_SYM TYPE_SYM OF_SYM ident '.' ident */
-#line 18230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3715: /* sp_param_anchored: sp_param_name_and_mode ROW_SYM TYPE_SYM OF_SYM ident '.' ident */
+#line 18560 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_table_rowtype_reference(thd, (yyval.spvar)= (yyvsp[-6].spvar), (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 51762 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52241 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3673: /* $@257: %empty */
-#line 18239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3716: /* $@260: %empty */
+#line 18569 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->sphead->set_c_chistics(lex->sp_chistics);
lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51772 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52251 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3674: /* sf_c_chistics_and_body_standalone: sp_c_chistics $@257 sp_proc_stmt_in_returns_clause force_lookahead */
-#line 18245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3717: /* sf_c_chistics_and_body_standalone: sp_c_chistics $@260 sp_proc_stmt_in_returns_clause force_lookahead */
+#line 18575 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_body_finalize_function(thd)))
MYSQL_YYABORT;
}
-#line 51781 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52260 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3675: /* $@258: %empty */
-#line 18253 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3718: /* $@261: %empty */
+#line 18583 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Lex->make_sp_head_no_recursive(thd, (yyvsp[0].spname),
&sp_handler_procedure,
DEFAULT_AGGREGATE)))
MYSQL_YYABORT;
}
-#line 51792 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52271 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3676: /* $@259: %empty */
-#line 18261 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3719: /* $@262: %empty */
+#line 18591 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->set_c_chistics(Lex->sp_chistics);
Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51801 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52280 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3677: /* sp_tail_standalone: sp_name $@258 sp_parenthesized_pdparam_list sp_c_chistics $@259 sp_proc_stmt force_lookahead */
-#line 18266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3720: /* sp_tail_standalone: sp_name $@261 sp_parenthesized_pdparam_list sp_c_chistics $@262 sp_proc_stmt force_lookahead */
+#line 18596 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_body_finalize_procedure(thd)))
MYSQL_YYABORT;
}
-#line 51810 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52289 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3678: /* drop_routine: DROP FUNCTION_SYM opt_if_exists ident '.' ident */
-#line 18274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3721: /* sp_decls: _empty */
+#line 18605 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.spblock).init();
+ }
+#line 52297 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3722: /* sp_decls: sp_decls sp_decl ';' */
+#line 18609 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_drop_function((yyvsp[-3].object_ddl_options), (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys)))
+ // We check for declarations out of (standard) order this way
+ // because letting the grammar rules reflect it caused tricky
+ // shift/reduce conflicts with the wrong result. (And we get
+ // better error handling this way.)
+ if (unlikely(Lex->sp_declarations_join(&(yyval.spblock), (yyvsp[-2].spblock), (yyvsp[-1].spblock))))
MYSQL_YYABORT;
}
-#line 51819 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52310 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3723: /* sp_decl: DECLARE_MARIADB_SYM sp_decl_body */
+#line 18620 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock)= (yyvsp[0].spblock); }
+#line 52316 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3679: /* drop_routine: DROP FUNCTION_SYM opt_if_exists ident */
-#line 18279 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3725: /* sp_decl_body: sp_decl_ident CONDITION_SYM FOR_SYM sp_cond */
+#line 18627 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_drop_function((yyvsp[-1].object_ddl_options), (yyvsp[0].ident_sys)))
+ if (unlikely(Lex->spcont->declare_condition(thd, &(yyvsp[-3].ident_sys), (yyvsp[0].spcondvalue))))
MYSQL_YYABORT;
+ (yyval.spblock).vars= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0;
+ (yyval.spblock).conds= 1;
+ }
+#line 52327 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3727: /* $@263: %empty */
+#line 18635 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->sp_block_init(thd);
}
-#line 51828 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52335 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3680: /* drop_routine: DROP PROCEDURE_SYM opt_if_exists sp_name */
-#line 18284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3728: /* sp_decl_body: sp_decl_ident CURSOR_SYM $@263 opt_parenthesized_cursor_formal_parameters FOR_SYM sp_cursor_stmt */
+#line 18640 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_drop_procedure((yyvsp[-1].object_ddl_options), (yyvsp[0].spname)))
+ sp_pcontext *param_ctx= Lex->spcont;
+ if (unlikely(Lex->sp_block_finalize(thd)))
MYSQL_YYABORT;
+ if (unlikely(Lex->sp_declare_cursor(thd, &(yyvsp[-5].ident_sys), (yyvsp[0].sp_cursor_stmt), param_ctx, true)))
+ MYSQL_YYABORT;
+ (yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).hndlrs= 0;
+ (yyval.spblock).curs= 1;
}
-#line 51837 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52349 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3681: /* $@260: %empty */
-#line 18293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3746: /* $@264: %empty */
+#line 18691 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_create_procedure_start((yyvsp[-3].object_ddl_options) | (yyvsp[0].object_ddl_options)))
+ Lex->sp_block_init(thd, &(yyvsp[-1].lex_str));
+ }
+#line 52357 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3747: /* sp_labeled_block: sp_block_label BEGIN_MARIADB_SYM $@264 sp_decls sp_proc_stmts END sp_opt_label */
+#line 18698 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-3].spblock), &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 51846 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52366 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3682: /* create_routine: create_or_replace definer_opt PROCEDURE_SYM opt_if_not_exists $@260 sp_tail_standalone */
-#line 18298 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3748: /* $@265: %empty */
+#line 18706 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->stmt_create_routine_finalize();
+ Lex->sp_block_init(thd);
}
-#line 51854 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52374 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3683: /* $@261: %empty */
-#line 18303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3749: /* sp_unlabeled_block: BEGIN_MARIADB_SYM $@265 sp_decls sp_proc_stmts END */
+#line 18712 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_create_stored_function_start((yyvsp[-5].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-3].sp_aggregate_type), (yyvsp[0].spname)))
+ if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-2].spblock))))
MYSQL_YYABORT;
}
-#line 51863 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52383 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3684: /* create_routine: create_or_replace definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@261 sp_parenthesized_fdparam_list RETURNS_SYM sf_return_type sf_c_chistics_and_body_standalone */
-#line 18310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3750: /* $@266: %empty */
+#line 18720 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->stmt_create_routine_finalize();
+ if (unlikely(Lex->maybe_start_compound_statement(thd)))
+ MYSQL_YYABORT;
+ Lex->sp_block_init(thd);
}
-#line 51871 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52393 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3685: /* $@262: %empty */
-#line 18315 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3751: /* sp_unlabeled_block_not_atomic: BEGIN_MARIADB_SYM not ATOMIC_SYM $@266 sp_decls sp_proc_stmts END */
+#line 18728 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_create_stored_function_start((yyvsp[-5].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-3].sp_aggregate_type), (yyvsp[0].spname)))
+ if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-2].spblock))))
MYSQL_YYABORT;
}
-#line 51880 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52402 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3753: /* package_implementation_declare_section_list1: package_implementation_declare_section_list1 package_implementation_item_declaration */
+#line 19181 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
+#line 52408 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3755: /* package_implementation_declare_section_list2: package_implementation_declare_section_list2 package_implementation_routine_definition */
+#line 19188 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
+#line 52414 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3686: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@262 sp_parenthesized_fdparam_list RETURNS_SYM sf_return_type sf_c_chistics_and_body_standalone */
-#line 18322 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3756: /* $@267: %empty */
+#line 19194 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->stmt_create_routine_finalize();
+ LEX *lex= thd->lex->package_routine_start(thd,
+ &sp_handler_package_function, (yyvsp[0].ident_sys));
+ if (!lex)
+ MYSQL_YYABORT;
+ thd->lex= lex;
}
-#line 51888 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52426 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3687: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists ident RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys */
-#line 18327 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3757: /* package_specification_function: remember_lex ident $@267 sf_parameters sf_returned_type_clause sp_c_chistics */
+#line 19204 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_create_udf_function((yyvsp[-9].object_ddl_options) | (yyvsp[-5].object_ddl_options), (yyvsp[-7].sp_aggregate_type), (yyvsp[-4].ident_sys),
- (Item_result) (yyvsp[-2].num), (yyvsp[0].lex_str)))
+ (yyval.lex)= thd->lex;
+ sp_head *sp= thd->lex->sphead;
+ sp->restore_thd_mem_root(thd);
+ thd->lex= (yyvsp[-5].lex);
+ }
+#line 52437 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3758: /* $@268: %empty */
+#line 19214 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ LEX *lex= thd->lex->package_routine_start(thd,
+ &sp_handler_package_procedure, (yyvsp[0].ident_sys));
+ if (!lex)
MYSQL_YYABORT;
+ thd->lex= lex;
+ }
+#line 52449 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3759: /* package_specification_procedure: remember_lex ident $@268 sp_parameters sp_c_chistics */
+#line 19223 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.lex)= thd->lex;
+ sp_head *sp= thd->lex->sphead;
+ sp->restore_thd_mem_root(thd);
+ thd->lex= (yyvsp[-4].lex);
}
-#line 51898 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52460 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3688: /* sp_decls: _empty */
-#line 18337 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3760: /* package_implementation_routine_definition: FUNCTION_SYM package_specification_function package_implementation_function_body ';' */
+#line 19235 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ sp_package *pkg= Lex->get_sp_package();
+ if (unlikely(pkg->add_routine_implementation((yyvsp[-2].lex))))
+ MYSQL_YYABORT;
+ pkg->m_current_routine= NULL;
(yyval.spblock).init();
}
-#line 51906 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52472 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3689: /* sp_decls: sp_decls sp_decl ';' */
-#line 18341 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3761: /* package_implementation_routine_definition: PROCEDURE_SYM package_specification_procedure package_implementation_procedure_body ';' */
+#line 19244 "/home/buildbot/git/sql/sql_yacc.yy"
{
- // We check for declarations out of (standard) order this way
- // because letting the grammar rules reflect it caused tricky
- // shift/reduce conflicts with the wrong result. (And we get
- // better error handling this way.)
- if (unlikely(Lex->sp_declarations_join(&(yyval.spblock), (yyvsp[-2].spblock), (yyvsp[-1].spblock))))
+ sp_package *pkg= Lex->get_sp_package();
+ if (unlikely(pkg->add_routine_implementation((yyvsp[-2].lex))))
MYSQL_YYABORT;
+ pkg->m_current_routine= NULL;
+ (yyval.spblock).init();
}
-#line 51919 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52484 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3690: /* sp_decl: DECLARE_MARIADB_SYM sp_decl_body */
-#line 18352 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.spblock)= (yyvsp[0].spblock); }
-#line 51925 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ case 3762: /* package_implementation_routine_definition: package_specification_element */
+#line 19251 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock).init(); }
+#line 52490 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3692: /* sp_decl_body: sp_decl_ident CONDITION_SYM FOR_SYM sp_cond */
-#line 18359 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3763: /* $@269: %empty */
+#line 19257 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->spcont->declare_condition(thd, &(yyvsp[-3].ident_sys), (yyvsp[0].spcondvalue))))
+ sp_package *pkg= Lex->get_sp_package();
+ sp_head *sp= pkg->m_current_routine->sphead;
+ thd->lex= pkg->m_current_routine;
+ sp->reset_thd_mem_root(thd);
+ sp->set_c_chistics(thd->lex->sp_chistics);
+ sp->set_body_start(thd, YYLIP->get_cpp_tok_start());
+ }
+#line 52503 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3764: /* package_implementation_function_body: sp_tail_is remember_lex $@269 sp_package_function_body opt_package_routine_end_name */
+#line 19266 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely(thd->lex->sp_body_finalize_function(thd) ||
+ thd->lex->sphead->check_package_routine_end_name((yyvsp[0].lex_str))))
MYSQL_YYABORT;
- (yyval.spblock).vars= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0;
- (yyval.spblock).conds= 1;
+ thd->lex= (yyvsp[-3].lex);
}
-#line 51936 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52514 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3694: /* $@263: %empty */
-#line 18367 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3765: /* $@270: %empty */
+#line 19276 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->sp_block_init(thd);
+ sp_package *pkg= Lex->get_sp_package();
+ sp_head *sp= pkg->m_current_routine->sphead;
+ thd->lex= pkg->m_current_routine;
+ sp->reset_thd_mem_root(thd);
+ sp->set_c_chistics(thd->lex->sp_chistics);
+ sp->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51944 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52527 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3695: /* sp_decl_body: sp_decl_ident CURSOR_SYM $@263 opt_parenthesized_cursor_formal_parameters FOR_SYM sp_cursor_stmt */
-#line 18372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3766: /* package_implementation_procedure_body: sp_tail_is remember_lex $@270 sp_package_procedure_body opt_package_routine_end_name */
+#line 19285 "/home/buildbot/git/sql/sql_yacc.yy"
{
- sp_pcontext *param_ctx= Lex->spcont;
- if (unlikely(Lex->sp_block_finalize(thd)))
+ if (unlikely(thd->lex->sp_body_finalize_procedure(thd) ||
+ thd->lex->sphead->check_package_routine_end_name((yyvsp[0].lex_str))))
MYSQL_YYABORT;
- if (unlikely(Lex->sp_declare_cursor(thd, &(yyvsp[-5].ident_sys), (yyvsp[0].sp_cursor_stmt), param_ctx, true)))
+ thd->lex= (yyvsp[-3].lex);
+ }
+#line 52538 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3771: /* package_specification_element: FUNCTION_SYM package_specification_function ';' */
+#line 19306 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ sp_package *pkg= Lex->get_sp_package();
+ if (unlikely(pkg->add_routine_declaration((yyvsp[-1].lex))))
MYSQL_YYABORT;
- (yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).hndlrs= 0;
- (yyval.spblock).curs= 1;
+ pkg->m_current_routine= NULL;
}
-#line 51958 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52549 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3713: /* $@264: %empty */
-#line 18423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3772: /* package_specification_element: PROCEDURE_SYM package_specification_procedure ';' */
+#line 19313 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->sp_block_init(thd, &(yyvsp[-1].lex_str));
+ sp_package *pkg= Lex->get_sp_package();
+ if (unlikely(pkg->add_routine_declaration((yyvsp[-1].lex))))
+ MYSQL_YYABORT;
+ pkg->m_current_routine= NULL;
}
-#line 51966 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52560 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3714: /* sp_labeled_block: sp_block_label BEGIN_MARIADB_SYM $@264 sp_decls sp_proc_stmts END sp_opt_label */
-#line 18430 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3773: /* $@271: %empty */
+#line 19433 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-3].spblock), &(yyvsp[0].lex_str))))
+ if (Lex->stmt_create_procedure_start((yyvsp[-3].object_ddl_options) | (yyvsp[0].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 51975 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52569 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3715: /* $@265: %empty */
-#line 18438 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3774: /* create_routine: create_or_replace definer_opt PROCEDURE_SYM opt_if_not_exists $@271 sp_tail_standalone */
+#line 19438 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->sp_block_init(thd);
+ Lex->stmt_create_routine_finalize();
}
-#line 51983 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52577 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3716: /* sp_unlabeled_block: BEGIN_MARIADB_SYM $@265 sp_decls sp_proc_stmts END */
-#line 18444 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3775: /* $@272: %empty */
+#line 19443 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-2].spblock))))
+ if (Lex->stmt_create_stored_function_start((yyvsp[-5].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-3].sp_aggregate_type), (yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 51992 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52586 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3717: /* $@266: %empty */
-#line 18452 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3776: /* create_routine: create_or_replace definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@272 sf_parameters sf_returned_type_clause sf_c_chistics_and_body_standalone opt_trailing_sp_name */
+#line 19451 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->maybe_start_compound_statement(thd)))
+ if (Lex->stmt_create_stored_function_finalize_standalone((yyvsp[0].spname)))
MYSQL_YYABORT;
+ }
+#line 52595 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3777: /* $@273: %empty */
+#line 19457 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (Lex->stmt_create_stored_function_start((yyvsp[-5].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-3].sp_aggregate_type), (yyvsp[0].spname)))
+ MYSQL_YYABORT;
+ }
+#line 52604 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3778: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@273 sf_parameters sf_returned_type_clause sf_c_chistics_and_body_standalone opt_trailing_sp_name */
+#line 19465 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (Lex->stmt_create_stored_function_finalize_standalone((yyvsp[0].spname)))
+ MYSQL_YYABORT;
+ }
+#line 52613 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3779: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists ident RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys */
+#line 19471 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (Lex->stmt_create_udf_function((yyvsp[-9].object_ddl_options) | (yyvsp[-5].object_ddl_options), (yyvsp[-7].sp_aggregate_type), (yyvsp[-4].ident_sys),
+ (Item_result) (yyvsp[-2].num), (yyvsp[0].lex_str)))
+ MYSQL_YYABORT;
+ }
+#line 52623 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3780: /* $@274: %empty */
+#line 19478 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ sp_package *pkg;
+ if (unlikely(!(pkg= Lex->
+ create_package_start(thd, &sp_handler_package_spec,
+ (yyvsp[-1].spname), (yyvsp[-5].object_ddl_options) | (yyvsp[-2].object_ddl_options),
+ Lex->sp_chistics))))
+ MYSQL_YYABORT;
+ Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
+ }
+#line 52637 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3781: /* create_routine: create_or_replace definer_opt sp_handler_package_spec opt_if_not_exists sp_name opt_create_package_chistics_init $@274 sp_tail_is opt_package_specification_element_list END remember_end_opt opt_trailing_sp_name */
+#line 19490 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely(Lex->create_package_finalize(thd, (yyvsp[-7].spname), (yyvsp[0].spname), (yyvsp[-1].simple_string))))
+ MYSQL_YYABORT;
+ }
+#line 52646 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3782: /* $@275: %empty */
+#line 19496 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ sp_package *pkg;
+ if (unlikely(!(pkg= Lex->
+ create_package_start(thd, &sp_handler_package_body,
+ (yyvsp[-1].spname), (yyvsp[-5].object_ddl_options) | (yyvsp[-2].object_ddl_options),
+ Lex->sp_chistics))))
+ MYSQL_YYABORT;
+ Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
Lex->sp_block_init(thd);
}
-#line 52002 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52661 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
- case 3718: /* sp_unlabeled_block_not_atomic: BEGIN_MARIADB_SYM not ATOMIC_SYM $@266 sp_decls sp_proc_stmts END */
-#line 18460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3783: /* $@276: %empty */
+#line 19509 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-2].spblock))))
+ (yyvsp[-1].spblock).hndlrs+= (yyvsp[0].spblock_handlers).hndlrs;
+ if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-1].spblock))))
MYSQL_YYABORT;
}
-#line 52011 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52671 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+ break;
+
+ case 3784: /* create_routine: create_or_replace definer_opt sp_handler_package_body opt_if_not_exists sp_name opt_create_package_chistics_init $@275 sp_tail_is package_implementation_declare_section package_implementation_executable_section $@276 remember_end_opt opt_trailing_sp_name */
+#line 19515 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely(Lex->create_package_finalize(thd, (yyvsp[-8].spname), (yyvsp[0].spname), (yyvsp[-1].simple_string))))
+ MYSQL_YYABORT;
+ }
+#line 52680 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
break;
-#line 52015 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
+#line 52684 "/home/buildbot/git/mkdist/sql/yy_mariadb.cc"
default: break;
}
diff --git a/sql/yy_mariadb.hh b/sql/yy_mariadb.hh
index fa18f2cb..96ec08e5 100644
--- a/sql/yy_mariadb.hh
+++ b/sql/yy_mariadb.hh
@@ -729,95 +729,99 @@ extern int MYSQLdebug;
SONAME_SYM = 930, /* SONAME_SYM */
SOUNDS_SYM = 931, /* SOUNDS_SYM */
SOURCE_SYM = 932, /* SOURCE_SYM */
- SQL_BUFFER_RESULT = 933, /* SQL_BUFFER_RESULT */
- SQL_CACHE_SYM = 934, /* SQL_CACHE_SYM */
- SQL_CALC_FOUND_ROWS = 935, /* SQL_CALC_FOUND_ROWS */
- SQL_NO_CACHE_SYM = 936, /* SQL_NO_CACHE_SYM */
- SQL_THREAD = 937, /* SQL_THREAD */
- STAGE_SYM = 938, /* STAGE_SYM */
- STARTS_SYM = 939, /* STARTS_SYM */
- START_SYM = 940, /* START_SYM */
- STATEMENT_SYM = 941, /* STATEMENT_SYM */
- STATUS_SYM = 942, /* STATUS_SYM */
- STOP_SYM = 943, /* STOP_SYM */
- STORAGE_SYM = 944, /* STORAGE_SYM */
- STORED_SYM = 945, /* STORED_SYM */
- STRING_SYM = 946, /* STRING_SYM */
- SUBCLASS_ORIGIN_SYM = 947, /* SUBCLASS_ORIGIN_SYM */
- SUBDATE_SYM = 948, /* SUBDATE_SYM */
- SUBJECT_SYM = 949, /* SUBJECT_SYM */
- SUBPARTITIONS_SYM = 950, /* SUBPARTITIONS_SYM */
- SUBPARTITION_SYM = 951, /* SUBPARTITION_SYM */
- SUPER_SYM = 952, /* SUPER_SYM */
- SUSPEND_SYM = 953, /* SUSPEND_SYM */
- SWAPS_SYM = 954, /* SWAPS_SYM */
- SWITCHES_SYM = 955, /* SWITCHES_SYM */
- SYSTEM = 956, /* SYSTEM */
- SYSTEM_TIME_SYM = 957, /* SYSTEM_TIME_SYM */
- TABLES = 958, /* TABLES */
- TABLESPACE = 959, /* TABLESPACE */
- TABLE_CHECKSUM_SYM = 960, /* TABLE_CHECKSUM_SYM */
- TABLE_NAME_SYM = 961, /* TABLE_NAME_SYM */
- TEMPORARY = 962, /* TEMPORARY */
- TEMPTABLE_SYM = 963, /* TEMPTABLE_SYM */
- TEXT_SYM = 964, /* TEXT_SYM */
- THAN_SYM = 965, /* THAN_SYM */
- TIES_SYM = 966, /* TIES_SYM */
- TIMESTAMP = 967, /* TIMESTAMP */
- TIMESTAMP_ADD = 968, /* TIMESTAMP_ADD */
- TIMESTAMP_DIFF = 969, /* TIMESTAMP_DIFF */
- TIME_SYM = 970, /* TIME_SYM */
- TRANSACTION_SYM = 971, /* TRANSACTION_SYM */
- TRANSACTIONAL_SYM = 972, /* TRANSACTIONAL_SYM */
- THREADS_SYM = 973, /* THREADS_SYM */
- TRIGGERS_SYM = 974, /* TRIGGERS_SYM */
- TRIM_ORACLE = 975, /* TRIM_ORACLE */
- TRUNCATE_SYM = 976, /* TRUNCATE_SYM */
- TYPE_SYM = 977, /* TYPE_SYM */
- UDF_RETURNS_SYM = 978, /* UDF_RETURNS_SYM */
- UNBOUNDED_SYM = 979, /* UNBOUNDED_SYM */
- UNCOMMITTED_SYM = 980, /* UNCOMMITTED_SYM */
- UNDEFINED_SYM = 981, /* UNDEFINED_SYM */
- UNDOFILE_SYM = 982, /* UNDOFILE_SYM */
- UNDO_BUFFER_SIZE_SYM = 983, /* UNDO_BUFFER_SIZE_SYM */
- UNICODE_SYM = 984, /* UNICODE_SYM */
- UNINSTALL_SYM = 985, /* UNINSTALL_SYM */
- UNKNOWN_SYM = 986, /* UNKNOWN_SYM */
- UNTIL_SYM = 987, /* UNTIL_SYM */
- UPGRADE_SYM = 988, /* UPGRADE_SYM */
- USER_SYM = 989, /* USER_SYM */
- USE_FRM = 990, /* USE_FRM */
- VALUE_SYM = 991, /* VALUE_SYM */
- VARCHAR2_MARIADB_SYM = 992, /* VARCHAR2_MARIADB_SYM */
- VARCHAR2_ORACLE_SYM = 993, /* VARCHAR2_ORACLE_SYM */
- VARIABLES = 994, /* VARIABLES */
- VERSIONING_SYM = 995, /* VERSIONING_SYM */
- VIA_SYM = 996, /* VIA_SYM */
- VIEW_SYM = 997, /* VIEW_SYM */
- VISIBLE_SYM = 998, /* VISIBLE_SYM */
- VIRTUAL_SYM = 999, /* VIRTUAL_SYM */
- WAIT_SYM = 1000, /* WAIT_SYM */
- WARNINGS = 1001, /* WARNINGS */
- WEEK_SYM = 1002, /* WEEK_SYM */
- WEIGHT_STRING_SYM = 1003, /* WEIGHT_STRING_SYM */
- WINDOW_SYM = 1004, /* WINDOW_SYM */
- WITHIN = 1005, /* WITHIN */
- WITHOUT = 1006, /* WITHOUT */
- WORK_SYM = 1007, /* WORK_SYM */
- WRAPPER_SYM = 1008, /* WRAPPER_SYM */
- WRITE_SYM = 1009, /* WRITE_SYM */
- X509_SYM = 1010, /* X509_SYM */
- XA_SYM = 1011, /* XA_SYM */
- XML_SYM = 1012, /* XML_SYM */
- YEAR_SYM = 1013, /* YEAR_SYM */
- CONDITIONLESS_JOIN = 1014, /* CONDITIONLESS_JOIN */
- ON_SYM = 1015, /* ON_SYM */
- PREC_BELOW_NOT = 1016, /* PREC_BELOW_NOT */
- SUBQUERY_AS_EXPR = 1017, /* SUBQUERY_AS_EXPR */
- PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 1018, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
- USER = 1019, /* USER */
- PREC_BELOW_CONTRACTION_TOKEN2 = 1020, /* PREC_BELOW_CONTRACTION_TOKEN2 */
- EMPTY_FROM_CLAUSE = 1021 /* EMPTY_FROM_CLAUSE */
+ SQL_AFTER_GTIDS_SYM = 933, /* SQL_AFTER_GTIDS_SYM */
+ SQL_BEFORE_GTIDS_SYM = 934, /* SQL_BEFORE_GTIDS_SYM */
+ SQL_BUFFER_RESULT = 935, /* SQL_BUFFER_RESULT */
+ SQL_CACHE_SYM = 936, /* SQL_CACHE_SYM */
+ SQL_CALC_FOUND_ROWS = 937, /* SQL_CALC_FOUND_ROWS */
+ SQL_NO_CACHE_SYM = 938, /* SQL_NO_CACHE_SYM */
+ SQL_THREAD = 939, /* SQL_THREAD */
+ STAGE_SYM = 940, /* STAGE_SYM */
+ STARTS_SYM = 941, /* STARTS_SYM */
+ START_SYM = 942, /* START_SYM */
+ STATEMENT_SYM = 943, /* STATEMENT_SYM */
+ STATUS_SYM = 944, /* STATUS_SYM */
+ STOP_SYM = 945, /* STOP_SYM */
+ STORAGE_SYM = 946, /* STORAGE_SYM */
+ STORED_SYM = 947, /* STORED_SYM */
+ STRING_SYM = 948, /* STRING_SYM */
+ SUBCLASS_ORIGIN_SYM = 949, /* SUBCLASS_ORIGIN_SYM */
+ SUBDATE_SYM = 950, /* SUBDATE_SYM */
+ SUBJECT_SYM = 951, /* SUBJECT_SYM */
+ SUBPARTITIONS_SYM = 952, /* SUBPARTITIONS_SYM */
+ SUBPARTITION_SYM = 953, /* SUBPARTITION_SYM */
+ SUPER_SYM = 954, /* SUPER_SYM */
+ SUSPEND_SYM = 955, /* SUSPEND_SYM */
+ SWAPS_SYM = 956, /* SWAPS_SYM */
+ SWITCHES_SYM = 957, /* SWITCHES_SYM */
+ SYSTEM = 958, /* SYSTEM */
+ SYSTEM_TIME_SYM = 959, /* SYSTEM_TIME_SYM */
+ TABLES = 960, /* TABLES */
+ TABLESPACE = 961, /* TABLESPACE */
+ TABLE_CHECKSUM_SYM = 962, /* TABLE_CHECKSUM_SYM */
+ TABLE_NAME_SYM = 963, /* TABLE_NAME_SYM */
+ TEMPORARY = 964, /* TEMPORARY */
+ TEMPTABLE_SYM = 965, /* TEMPTABLE_SYM */
+ TEXT_SYM = 966, /* TEXT_SYM */
+ THAN_SYM = 967, /* THAN_SYM */
+ TIES_SYM = 968, /* TIES_SYM */
+ TIMESTAMP = 969, /* TIMESTAMP */
+ TIMESTAMP_ADD = 970, /* TIMESTAMP_ADD */
+ TIMESTAMP_DIFF = 971, /* TIMESTAMP_DIFF */
+ TIME_SYM = 972, /* TIME_SYM */
+ TRANSACTION_SYM = 973, /* TRANSACTION_SYM */
+ TRANSACTIONAL_SYM = 974, /* TRANSACTIONAL_SYM */
+ THREADS_SYM = 975, /* THREADS_SYM */
+ TRIGGERS_SYM = 976, /* TRIGGERS_SYM */
+ TRIM_ORACLE = 977, /* TRIM_ORACLE */
+ TRUNCATE_SYM = 978, /* TRUNCATE_SYM */
+ TYPE_SYM = 979, /* TYPE_SYM */
+ UDF_RETURNS_SYM = 980, /* UDF_RETURNS_SYM */
+ UNBOUNDED_SYM = 981, /* UNBOUNDED_SYM */
+ UNCOMMITTED_SYM = 982, /* UNCOMMITTED_SYM */
+ UNDEFINED_SYM = 983, /* UNDEFINED_SYM */
+ UNDOFILE_SYM = 984, /* UNDOFILE_SYM */
+ UNDO_BUFFER_SIZE_SYM = 985, /* UNDO_BUFFER_SIZE_SYM */
+ UNICODE_SYM = 986, /* UNICODE_SYM */
+ UNINSTALL_SYM = 987, /* UNINSTALL_SYM */
+ UNKNOWN_SYM = 988, /* UNKNOWN_SYM */
+ UNTIL_SYM = 989, /* UNTIL_SYM */
+ UPGRADE_SYM = 990, /* UPGRADE_SYM */
+ USER_SYM = 991, /* USER_SYM */
+ USE_FRM = 992, /* USE_FRM */
+ VALIDATION_SYM = 993, /* VALIDATION_SYM */
+ VALUE_SYM = 994, /* VALUE_SYM */
+ VARCHAR2_MARIADB_SYM = 995, /* VARCHAR2_MARIADB_SYM */
+ VARCHAR2_ORACLE_SYM = 996, /* VARCHAR2_ORACLE_SYM */
+ VARIABLES = 997, /* VARIABLES */
+ VERSIONING_SYM = 998, /* VERSIONING_SYM */
+ VIA_SYM = 999, /* VIA_SYM */
+ VIEW_SYM = 1000, /* VIEW_SYM */
+ VISIBLE_SYM = 1001, /* VISIBLE_SYM */
+ VIRTUAL_SYM = 1002, /* VIRTUAL_SYM */
+ WAIT_SYM = 1003, /* WAIT_SYM */
+ WARNINGS = 1004, /* WARNINGS */
+ WEEK_SYM = 1005, /* WEEK_SYM */
+ WEIGHT_STRING_SYM = 1006, /* WEIGHT_STRING_SYM */
+ WINDOW_SYM = 1007, /* WINDOW_SYM */
+ WITHIN = 1008, /* WITHIN */
+ WITHOUT = 1009, /* WITHOUT */
+ WORK_SYM = 1010, /* WORK_SYM */
+ WRAPPER_SYM = 1011, /* WRAPPER_SYM */
+ WRITE_SYM = 1012, /* WRITE_SYM */
+ X509_SYM = 1013, /* X509_SYM */
+ XA_SYM = 1014, /* XA_SYM */
+ XML_SYM = 1015, /* XML_SYM */
+ YEAR_SYM = 1016, /* YEAR_SYM */
+ CONDITIONLESS_JOIN = 1017, /* CONDITIONLESS_JOIN */
+ ON_SYM = 1018, /* ON_SYM */
+ PREC_BELOW_NOT = 1019, /* PREC_BELOW_NOT */
+ SUBQUERY_AS_EXPR = 1020, /* SUBQUERY_AS_EXPR */
+ PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 1021, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
+ USER = 1022, /* USER */
+ PREC_BELOW_SP_OBJECT_TYPE = 1023, /* PREC_BELOW_SP_OBJECT_TYPE */
+ PREC_BELOW_CONTRACTION_TOKEN2 = 1024, /* PREC_BELOW_CONTRACTION_TOKEN2 */
+ EMPTY_FROM_CLAUSE = 1025 /* EMPTY_FROM_CLAUSE */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -826,7 +830,7 @@ extern int MYSQLdebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 192 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 195 "/home/buildbot/git/sql/sql_yacc.yy"
int num;
ulong ulong_num;
@@ -963,8 +967,13 @@ union YYSTYPE
enum Column_definition::enum_column_versioning vers_column_versioning;
enum plsql_cursor_attr_t plsql_cursor_attr;
privilege_t privilege;
+ struct
+ {
+ Item *expr;
+ LEX_CSTRING expr_str;
+ } expr_and_query_str;
-#line 968 "/home/buildbot/git/mkdist/sql/yy_mariadb.hh"
+#line 977 "/home/buildbot/git/mkdist/sql/yy_mariadb.hh"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/sql/yy_oracle.cc b/sql/yy_oracle.cc
index a9d8cddd..4cd0d10c 100644
--- a/sql/yy_oracle.cc
+++ b/sql/yy_oracle.cc
@@ -94,6 +94,7 @@
#include "lex_symbol.h"
#include "item_create.h"
#include "sp_head.h"
+#include "sp_instr.h" // classes sp_instr,...
#include "sp_rcontext.h"
#include "sp.h"
#include "sql_show.h"
@@ -120,6 +121,8 @@
#include "my_base.h"
#include "sql_type_json.h"
#include "json_table.h"
+#include "sql_update.h"
+#include "sql_delete.h"
/* this is to get the bison compilation windows warnings out */
#ifdef _MSC_VER
@@ -240,7 +243,7 @@ void _CONCAT_UNDERSCORED(turn_parser_debug_on,yyparse)()
-#line 244 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -947,1445 +950,1461 @@ enum yysymbol_kind_t
YYSYMBOL_SONAME_SYM = 676, /* SONAME_SYM */
YYSYMBOL_SOUNDS_SYM = 677, /* SOUNDS_SYM */
YYSYMBOL_SOURCE_SYM = 678, /* SOURCE_SYM */
- YYSYMBOL_SQL_BUFFER_RESULT = 679, /* SQL_BUFFER_RESULT */
- YYSYMBOL_SQL_CACHE_SYM = 680, /* SQL_CACHE_SYM */
- YYSYMBOL_SQL_CALC_FOUND_ROWS = 681, /* SQL_CALC_FOUND_ROWS */
- YYSYMBOL_SQL_NO_CACHE_SYM = 682, /* SQL_NO_CACHE_SYM */
- YYSYMBOL_SQL_THREAD = 683, /* SQL_THREAD */
- YYSYMBOL_STAGE_SYM = 684, /* STAGE_SYM */
- YYSYMBOL_STARTS_SYM = 685, /* STARTS_SYM */
- YYSYMBOL_START_SYM = 686, /* START_SYM */
- YYSYMBOL_STATEMENT_SYM = 687, /* STATEMENT_SYM */
- YYSYMBOL_STATUS_SYM = 688, /* STATUS_SYM */
- YYSYMBOL_STOP_SYM = 689, /* STOP_SYM */
- YYSYMBOL_STORAGE_SYM = 690, /* STORAGE_SYM */
- YYSYMBOL_STORED_SYM = 691, /* STORED_SYM */
- YYSYMBOL_STRING_SYM = 692, /* STRING_SYM */
- YYSYMBOL_SUBCLASS_ORIGIN_SYM = 693, /* SUBCLASS_ORIGIN_SYM */
- YYSYMBOL_SUBDATE_SYM = 694, /* SUBDATE_SYM */
- YYSYMBOL_SUBJECT_SYM = 695, /* SUBJECT_SYM */
- YYSYMBOL_SUBPARTITIONS_SYM = 696, /* SUBPARTITIONS_SYM */
- YYSYMBOL_SUBPARTITION_SYM = 697, /* SUBPARTITION_SYM */
- YYSYMBOL_SUPER_SYM = 698, /* SUPER_SYM */
- YYSYMBOL_SUSPEND_SYM = 699, /* SUSPEND_SYM */
- YYSYMBOL_SWAPS_SYM = 700, /* SWAPS_SYM */
- YYSYMBOL_SWITCHES_SYM = 701, /* SWITCHES_SYM */
- YYSYMBOL_SYSTEM = 702, /* SYSTEM */
- YYSYMBOL_SYSTEM_TIME_SYM = 703, /* SYSTEM_TIME_SYM */
- YYSYMBOL_TABLES = 704, /* TABLES */
- YYSYMBOL_TABLESPACE = 705, /* TABLESPACE */
- YYSYMBOL_TABLE_CHECKSUM_SYM = 706, /* TABLE_CHECKSUM_SYM */
- YYSYMBOL_TABLE_NAME_SYM = 707, /* TABLE_NAME_SYM */
- YYSYMBOL_TEMPORARY = 708, /* TEMPORARY */
- YYSYMBOL_TEMPTABLE_SYM = 709, /* TEMPTABLE_SYM */
- YYSYMBOL_TEXT_SYM = 710, /* TEXT_SYM */
- YYSYMBOL_THAN_SYM = 711, /* THAN_SYM */
- YYSYMBOL_TIES_SYM = 712, /* TIES_SYM */
- YYSYMBOL_TIMESTAMP = 713, /* TIMESTAMP */
- YYSYMBOL_TIMESTAMP_ADD = 714, /* TIMESTAMP_ADD */
- YYSYMBOL_TIMESTAMP_DIFF = 715, /* TIMESTAMP_DIFF */
- YYSYMBOL_TIME_SYM = 716, /* TIME_SYM */
- YYSYMBOL_TRANSACTION_SYM = 717, /* TRANSACTION_SYM */
- YYSYMBOL_TRANSACTIONAL_SYM = 718, /* TRANSACTIONAL_SYM */
- YYSYMBOL_THREADS_SYM = 719, /* THREADS_SYM */
- YYSYMBOL_TRIGGERS_SYM = 720, /* TRIGGERS_SYM */
- YYSYMBOL_TRIM_ORACLE = 721, /* TRIM_ORACLE */
- YYSYMBOL_TRUNCATE_SYM = 722, /* TRUNCATE_SYM */
- YYSYMBOL_TYPE_SYM = 723, /* TYPE_SYM */
- YYSYMBOL_UDF_RETURNS_SYM = 724, /* UDF_RETURNS_SYM */
- YYSYMBOL_UNBOUNDED_SYM = 725, /* UNBOUNDED_SYM */
- YYSYMBOL_UNCOMMITTED_SYM = 726, /* UNCOMMITTED_SYM */
- YYSYMBOL_UNDEFINED_SYM = 727, /* UNDEFINED_SYM */
- YYSYMBOL_UNDOFILE_SYM = 728, /* UNDOFILE_SYM */
- YYSYMBOL_UNDO_BUFFER_SIZE_SYM = 729, /* UNDO_BUFFER_SIZE_SYM */
- YYSYMBOL_UNICODE_SYM = 730, /* UNICODE_SYM */
- YYSYMBOL_UNINSTALL_SYM = 731, /* UNINSTALL_SYM */
- YYSYMBOL_UNKNOWN_SYM = 732, /* UNKNOWN_SYM */
- YYSYMBOL_UNTIL_SYM = 733, /* UNTIL_SYM */
- YYSYMBOL_UPGRADE_SYM = 734, /* UPGRADE_SYM */
- YYSYMBOL_USER_SYM = 735, /* USER_SYM */
- YYSYMBOL_USE_FRM = 736, /* USE_FRM */
- YYSYMBOL_VALUE_SYM = 737, /* VALUE_SYM */
- YYSYMBOL_VARCHAR2_MARIADB_SYM = 738, /* VARCHAR2_MARIADB_SYM */
- YYSYMBOL_VARCHAR2_ORACLE_SYM = 739, /* VARCHAR2_ORACLE_SYM */
- YYSYMBOL_VARIABLES = 740, /* VARIABLES */
- YYSYMBOL_VERSIONING_SYM = 741, /* VERSIONING_SYM */
- YYSYMBOL_VIA_SYM = 742, /* VIA_SYM */
- YYSYMBOL_VIEW_SYM = 743, /* VIEW_SYM */
- YYSYMBOL_VISIBLE_SYM = 744, /* VISIBLE_SYM */
- YYSYMBOL_VIRTUAL_SYM = 745, /* VIRTUAL_SYM */
- YYSYMBOL_WAIT_SYM = 746, /* WAIT_SYM */
- YYSYMBOL_WARNINGS = 747, /* WARNINGS */
- YYSYMBOL_WEEK_SYM = 748, /* WEEK_SYM */
- YYSYMBOL_WEIGHT_STRING_SYM = 749, /* WEIGHT_STRING_SYM */
- YYSYMBOL_WINDOW_SYM = 750, /* WINDOW_SYM */
- YYSYMBOL_WITHIN = 751, /* WITHIN */
- YYSYMBOL_WITHOUT = 752, /* WITHOUT */
- YYSYMBOL_WORK_SYM = 753, /* WORK_SYM */
- YYSYMBOL_WRAPPER_SYM = 754, /* WRAPPER_SYM */
- YYSYMBOL_WRITE_SYM = 755, /* WRITE_SYM */
- YYSYMBOL_X509_SYM = 756, /* X509_SYM */
- YYSYMBOL_XA_SYM = 757, /* XA_SYM */
- YYSYMBOL_XML_SYM = 758, /* XML_SYM */
- YYSYMBOL_YEAR_SYM = 759, /* YEAR_SYM */
- YYSYMBOL_CONDITIONLESS_JOIN = 760, /* CONDITIONLESS_JOIN */
- YYSYMBOL_ON_SYM = 761, /* ON_SYM */
- YYSYMBOL_PREC_BELOW_NOT = 762, /* PREC_BELOW_NOT */
- YYSYMBOL_763_ = 763, /* '=' */
- YYSYMBOL_764_ = 764, /* '>' */
- YYSYMBOL_765_ = 765, /* '<' */
- YYSYMBOL_766_ = 766, /* '|' */
- YYSYMBOL_767_ = 767, /* '&' */
- YYSYMBOL_768_ = 768, /* '-' */
- YYSYMBOL_769_ = 769, /* '+' */
- YYSYMBOL_770_ = 770, /* '*' */
- YYSYMBOL_771_ = 771, /* '/' */
- YYSYMBOL_772_ = 772, /* '%' */
- YYSYMBOL_773_ = 773, /* '^' */
- YYSYMBOL_774_ = 774, /* '~' */
- YYSYMBOL_SUBQUERY_AS_EXPR = 775, /* SUBQUERY_AS_EXPR */
- YYSYMBOL_PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 776, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
- YYSYMBOL_USER = 777, /* USER */
- YYSYMBOL_PREC_BELOW_CONTRACTION_TOKEN2 = 778, /* PREC_BELOW_CONTRACTION_TOKEN2 */
- YYSYMBOL_779_ = 779, /* '(' */
- YYSYMBOL_780_ = 780, /* ')' */
- YYSYMBOL_EMPTY_FROM_CLAUSE = 781, /* EMPTY_FROM_CLAUSE */
- YYSYMBOL_782_ = 782, /* ',' */
- YYSYMBOL_783_ = 783, /* '!' */
- YYSYMBOL_784_ = 784, /* '{' */
- YYSYMBOL_785_ = 785, /* '}' */
- YYSYMBOL_786_ = 786, /* ';' */
- YYSYMBOL_787_ = 787, /* '.' */
- YYSYMBOL_YYACCEPT = 788, /* $accept */
- YYSYMBOL_query = 789, /* query */
- YYSYMBOL_790_1 = 790, /* $@1 */
- YYSYMBOL_opt_end_of_input = 791, /* opt_end_of_input */
- YYSYMBOL_directly_executable_statement = 792, /* directly_executable_statement */
- YYSYMBOL_verb_clause = 793, /* verb_clause */
- YYSYMBOL_deallocate = 794, /* deallocate */
- YYSYMBOL_deallocate_or_drop = 795, /* deallocate_or_drop */
- YYSYMBOL_prepare = 796, /* prepare */
- YYSYMBOL_797_2 = 797, /* $@2 */
- YYSYMBOL_execute = 798, /* execute */
- YYSYMBOL_799_3 = 799, /* $@3 */
- YYSYMBOL_800_4 = 800, /* $@4 */
- YYSYMBOL_execute_using = 801, /* execute_using */
- YYSYMBOL_802_5 = 802, /* $@5 */
- YYSYMBOL_execute_params = 803, /* execute_params */
- YYSYMBOL_help = 804, /* help */
- YYSYMBOL_805_6 = 805, /* $@6 */
- YYSYMBOL_change = 806, /* change */
- YYSYMBOL_807_7 = 807, /* $@7 */
- YYSYMBOL_master_defs = 808, /* master_defs */
- YYSYMBOL_master_def = 809, /* master_def */
- YYSYMBOL_ignore_server_id_list = 810, /* ignore_server_id_list */
- YYSYMBOL_ignore_server_id = 811, /* ignore_server_id */
- YYSYMBOL_do_domain_id_list = 812, /* do_domain_id_list */
- YYSYMBOL_do_domain_id = 813, /* do_domain_id */
- YYSYMBOL_ignore_domain_id_list = 814, /* ignore_domain_id_list */
- YYSYMBOL_ignore_domain_id = 815, /* ignore_domain_id */
- YYSYMBOL_master_file_def = 816, /* master_file_def */
- YYSYMBOL_optional_connection_name = 817, /* optional_connection_name */
- YYSYMBOL_connection_name = 818, /* connection_name */
- YYSYMBOL_optional_for_channel = 819, /* optional_for_channel */
- YYSYMBOL_for_channel = 820, /* for_channel */
- YYSYMBOL_create = 821, /* create */
- YYSYMBOL_822_8 = 822, /* $@8 */
- YYSYMBOL_823_9 = 823, /* $@9 */
- YYSYMBOL_824_10 = 824, /* $@10 */
- YYSYMBOL_825_11 = 825, /* $@11 */
- YYSYMBOL_826_12 = 826, /* $@12 */
- YYSYMBOL_827_13 = 827, /* $@13 */
- YYSYMBOL_828_14 = 828, /* $@14 */
- YYSYMBOL_829_15 = 829, /* $@15 */
- YYSYMBOL_830_16 = 830, /* $@16 */
- YYSYMBOL_831_17 = 831, /* $@17 */
- YYSYMBOL_832_18 = 832, /* $@18 */
- YYSYMBOL_833_19 = 833, /* $@19 */
- YYSYMBOL_834_20 = 834, /* $@20 */
- YYSYMBOL_835_21 = 835, /* $@21 */
- YYSYMBOL_836_22 = 836, /* $@22 */
- YYSYMBOL_837_23 = 837, /* $@23 */
- YYSYMBOL_838_24 = 838, /* $@24 */
- YYSYMBOL_opt_sequence = 839, /* opt_sequence */
- YYSYMBOL_sequence_defs = 840, /* sequence_defs */
- YYSYMBOL_sequence_def = 841, /* sequence_def */
- YYSYMBOL_force_lookahead = 842, /* force_lookahead */
- YYSYMBOL_server_def = 843, /* server_def */
- YYSYMBOL_844_25 = 844, /* $@25 */
- YYSYMBOL_server_options_list = 845, /* server_options_list */
- YYSYMBOL_server_option = 846, /* server_option */
- YYSYMBOL_event_tail = 847, /* event_tail */
- YYSYMBOL_848_26 = 848, /* $@26 */
- YYSYMBOL_ev_schedule_time = 849, /* ev_schedule_time */
- YYSYMBOL_850_27 = 850, /* $@27 */
- YYSYMBOL_opt_ev_status = 851, /* opt_ev_status */
- YYSYMBOL_ev_starts = 852, /* ev_starts */
- YYSYMBOL_ev_ends = 853, /* ev_ends */
- YYSYMBOL_opt_ev_on_completion = 854, /* opt_ev_on_completion */
- YYSYMBOL_ev_on_completion = 855, /* ev_on_completion */
- YYSYMBOL_opt_ev_comment = 856, /* opt_ev_comment */
- YYSYMBOL_ev_sql_stmt = 857, /* ev_sql_stmt */
- YYSYMBOL_858_28 = 858, /* $@28 */
- YYSYMBOL_clear_privileges = 859, /* clear_privileges */
- YYSYMBOL_opt_aggregate = 860, /* opt_aggregate */
- YYSYMBOL_sp_handler = 861, /* sp_handler */
- YYSYMBOL_sp_name = 862, /* sp_name */
- YYSYMBOL_sp_a_chistics = 863, /* sp_a_chistics */
- YYSYMBOL_sp_c_chistics = 864, /* sp_c_chistics */
- YYSYMBOL_sp_chistic = 865, /* sp_chistic */
- YYSYMBOL_sp_c_chistic = 866, /* sp_c_chistic */
- YYSYMBOL_sp_suid = 867, /* sp_suid */
- YYSYMBOL_call = 868, /* call */
- YYSYMBOL_869_29 = 869, /* $@29 */
- YYSYMBOL_870_30 = 870, /* $@30 */
- YYSYMBOL_871_31 = 871, /* $@31 */
- YYSYMBOL_opt_sp_cparam_list = 872, /* opt_sp_cparam_list */
- YYSYMBOL_opt_sp_cparams = 873, /* opt_sp_cparams */
- YYSYMBOL_sp_cparams = 874, /* sp_cparams */
- YYSYMBOL_sp_fdparam_list = 875, /* sp_fdparam_list */
- YYSYMBOL_876_32 = 876, /* $@32 */
- YYSYMBOL_sp_fdparams = 877, /* sp_fdparams */
- YYSYMBOL_sp_param_name = 878, /* sp_param_name */
- YYSYMBOL_sp_pdparam_list = 879, /* sp_pdparam_list */
- YYSYMBOL_sp_pdparams = 880, /* sp_pdparams */
- YYSYMBOL_sp_parameter_type = 881, /* sp_parameter_type */
- YYSYMBOL_sp_parenthesized_pdparam_list = 882, /* sp_parenthesized_pdparam_list */
- YYSYMBOL_883_33 = 883, /* $@33 */
- YYSYMBOL_sp_parenthesized_fdparam_list = 884, /* sp_parenthesized_fdparam_list */
- YYSYMBOL_sp_proc_stmts = 885, /* sp_proc_stmts */
- YYSYMBOL_sp_proc_stmts1 = 886, /* sp_proc_stmts1 */
- YYSYMBOL_optionally_qualified_column_ident = 887, /* optionally_qualified_column_ident */
- YYSYMBOL_row_field_definition = 888, /* row_field_definition */
- YYSYMBOL_row_field_definition_list = 889, /* row_field_definition_list */
- YYSYMBOL_row_type_body = 890, /* row_type_body */
- YYSYMBOL_sp_decl_idents_init_vars = 891, /* sp_decl_idents_init_vars */
- YYSYMBOL_sp_decl_variable_list = 892, /* sp_decl_variable_list */
- YYSYMBOL_893_34 = 893, /* $@34 */
- YYSYMBOL_sp_decl_handler = 894, /* sp_decl_handler */
- YYSYMBOL_895_35 = 895, /* $@35 */
- YYSYMBOL_opt_parenthesized_cursor_formal_parameters = 896, /* opt_parenthesized_cursor_formal_parameters */
- YYSYMBOL_sp_cursor_stmt_lex = 897, /* sp_cursor_stmt_lex */
- YYSYMBOL_sp_cursor_stmt = 898, /* sp_cursor_stmt */
- YYSYMBOL_899_36 = 899, /* $@36 */
- YYSYMBOL_sp_handler_type = 900, /* sp_handler_type */
- YYSYMBOL_sp_hcond_list = 901, /* sp_hcond_list */
- YYSYMBOL_sp_hcond_element = 902, /* sp_hcond_element */
- YYSYMBOL_sp_cond = 903, /* sp_cond */
- YYSYMBOL_sqlstate = 904, /* sqlstate */
- YYSYMBOL_opt_value = 905, /* opt_value */
- YYSYMBOL_sp_hcond = 906, /* sp_hcond */
- YYSYMBOL_raise_stmt_oracle = 907, /* raise_stmt_oracle */
- YYSYMBOL_signal_stmt = 908, /* signal_stmt */
- YYSYMBOL_signal_value = 909, /* signal_value */
- YYSYMBOL_opt_signal_value = 910, /* opt_signal_value */
- YYSYMBOL_opt_set_signal_information = 911, /* opt_set_signal_information */
- YYSYMBOL_signal_information_item_list = 912, /* signal_information_item_list */
- YYSYMBOL_signal_allowed_expr = 913, /* signal_allowed_expr */
- YYSYMBOL_signal_condition_information_item_name = 914, /* signal_condition_information_item_name */
- YYSYMBOL_resignal_stmt = 915, /* resignal_stmt */
- YYSYMBOL_get_diagnostics = 916, /* get_diagnostics */
- YYSYMBOL_which_area = 917, /* which_area */
- YYSYMBOL_diagnostics_information = 918, /* diagnostics_information */
- YYSYMBOL_statement_information = 919, /* statement_information */
- YYSYMBOL_statement_information_item = 920, /* statement_information_item */
- YYSYMBOL_simple_target_specification = 921, /* simple_target_specification */
- YYSYMBOL_statement_information_item_name = 922, /* statement_information_item_name */
- YYSYMBOL_condition_number = 923, /* condition_number */
- YYSYMBOL_condition_information = 924, /* condition_information */
- YYSYMBOL_condition_information_item = 925, /* condition_information_item */
- YYSYMBOL_condition_information_item_name = 926, /* condition_information_item_name */
- YYSYMBOL_sp_decl_ident = 927, /* sp_decl_ident */
- YYSYMBOL_sp_decl_idents = 928, /* sp_decl_idents */
- YYSYMBOL_sp_proc_stmt_if = 929, /* sp_proc_stmt_if */
- YYSYMBOL_930_37 = 930, /* $@37 */
- YYSYMBOL_sp_proc_stmt_statement = 931, /* sp_proc_stmt_statement */
- YYSYMBOL_932_38 = 932, /* $@38 */
- YYSYMBOL_RETURN_ALLMODES_SYM = 933, /* RETURN_ALLMODES_SYM */
- YYSYMBOL_sp_proc_stmt_return = 934, /* sp_proc_stmt_return */
- YYSYMBOL_935_39 = 935, /* $@39 */
- YYSYMBOL_sp_proc_stmt_exit_oracle = 936, /* sp_proc_stmt_exit_oracle */
- YYSYMBOL_937_40 = 937, /* $@40 */
- YYSYMBOL_938_41 = 938, /* $@41 */
- YYSYMBOL_sp_proc_stmt_continue_oracle = 939, /* sp_proc_stmt_continue_oracle */
- YYSYMBOL_940_42 = 940, /* $@42 */
- YYSYMBOL_941_43 = 941, /* $@43 */
- YYSYMBOL_sp_proc_stmt_leave = 942, /* sp_proc_stmt_leave */
- YYSYMBOL_sp_proc_stmt_iterate = 943, /* sp_proc_stmt_iterate */
- YYSYMBOL_sp_proc_stmt_goto_oracle = 944, /* sp_proc_stmt_goto_oracle */
- YYSYMBOL_expr_lex = 945, /* expr_lex */
- YYSYMBOL_946_44 = 946, /* @44 */
- YYSYMBOL_assignment_source_lex = 947, /* assignment_source_lex */
- YYSYMBOL_assignment_source_expr = 948, /* assignment_source_expr */
- YYSYMBOL_949_45 = 949, /* $@45 */
- YYSYMBOL_for_loop_bound_expr = 950, /* for_loop_bound_expr */
- YYSYMBOL_951_46 = 951, /* $@46 */
- YYSYMBOL_cursor_actual_parameters = 952, /* cursor_actual_parameters */
- YYSYMBOL_opt_parenthesized_cursor_actual_parameters = 953, /* opt_parenthesized_cursor_actual_parameters */
- YYSYMBOL_sp_proc_stmt_with_cursor = 954, /* sp_proc_stmt_with_cursor */
- YYSYMBOL_sp_proc_stmt_open = 955, /* sp_proc_stmt_open */
- YYSYMBOL_sp_proc_stmt_fetch_head = 956, /* sp_proc_stmt_fetch_head */
- YYSYMBOL_sp_proc_stmt_fetch = 957, /* sp_proc_stmt_fetch */
- YYSYMBOL_sp_proc_stmt_close = 958, /* sp_proc_stmt_close */
- YYSYMBOL_sp_fetch_list = 959, /* sp_fetch_list */
- YYSYMBOL_sp_if = 960, /* sp_if */
- YYSYMBOL_961_47 = 961, /* $@47 */
- YYSYMBOL_962_48 = 962, /* $@48 */
- YYSYMBOL_sp_elseifs = 963, /* sp_elseifs */
- YYSYMBOL_case_stmt_specification = 964, /* case_stmt_specification */
- YYSYMBOL_965_49 = 965, /* $@49 */
- YYSYMBOL_case_stmt_body = 966, /* case_stmt_body */
- YYSYMBOL_967_50 = 967, /* $@50 */
- YYSYMBOL_simple_when_clause_list = 968, /* simple_when_clause_list */
- YYSYMBOL_searched_when_clause_list = 969, /* searched_when_clause_list */
- YYSYMBOL_simple_when_clause = 970, /* simple_when_clause */
- YYSYMBOL_971_51 = 971, /* $@51 */
- YYSYMBOL_searched_when_clause = 972, /* searched_when_clause */
- YYSYMBOL_973_52 = 973, /* $@52 */
- YYSYMBOL_else_clause_opt = 974, /* else_clause_opt */
- YYSYMBOL_sp_opt_label = 975, /* sp_opt_label */
- YYSYMBOL_opt_sp_for_loop_direction = 976, /* opt_sp_for_loop_direction */
- YYSYMBOL_sp_for_loop_index_and_bounds = 977, /* sp_for_loop_index_and_bounds */
- YYSYMBOL_sp_for_loop_bounds = 978, /* sp_for_loop_bounds */
- YYSYMBOL_loop_body = 979, /* loop_body */
- YYSYMBOL_repeat_body = 980, /* repeat_body */
- YYSYMBOL_pop_sp_loop_label = 981, /* pop_sp_loop_label */
- YYSYMBOL_sp_labeled_control = 982, /* sp_labeled_control */
- YYSYMBOL_983_53 = 983, /* $@53 */
- YYSYMBOL_984_54 = 984, /* $@54 */
- YYSYMBOL_985_55 = 985, /* $@55 */
- YYSYMBOL_986_56 = 986, /* $@56 */
- YYSYMBOL_987_57 = 987, /* $@57 */
- YYSYMBOL_988_58 = 988, /* $@58 */
- YYSYMBOL_sp_unlabeled_control = 989, /* sp_unlabeled_control */
- YYSYMBOL_990_59 = 990, /* $@59 */
- YYSYMBOL_991_60 = 991, /* $@60 */
- YYSYMBOL_992_61 = 992, /* $@61 */
- YYSYMBOL_993_62 = 993, /* $@62 */
- YYSYMBOL_994_63 = 994, /* $@63 */
- YYSYMBOL_trg_action_time = 995, /* trg_action_time */
- YYSYMBOL_trg_event = 996, /* trg_event */
- YYSYMBOL_create_body = 997, /* create_body */
- YYSYMBOL_998_64 = 998, /* $@64 */
- YYSYMBOL_create_like = 999, /* create_like */
- YYSYMBOL_opt_create_select = 1000, /* opt_create_select */
- YYSYMBOL_create_select_query_expression = 1001, /* create_select_query_expression */
- YYSYMBOL_opt_create_partitioning = 1002, /* opt_create_partitioning */
- YYSYMBOL_opt_partitioning = 1003, /* opt_partitioning */
- YYSYMBOL_partitioning = 1004, /* partitioning */
- YYSYMBOL_1005_65 = 1005, /* $@65 */
- YYSYMBOL_have_partitioning = 1006, /* have_partitioning */
- YYSYMBOL_partition_entry = 1007, /* partition_entry */
- YYSYMBOL_1008_66 = 1008, /* $@66 */
- YYSYMBOL_partition = 1009, /* partition */
- YYSYMBOL_1010_67 = 1010, /* $@67 */
- YYSYMBOL_part_type_def = 1011, /* part_type_def */
- YYSYMBOL_1012_68 = 1012, /* $@68 */
- YYSYMBOL_1013_69 = 1013, /* $@69 */
- YYSYMBOL_1014_70 = 1014, /* $@70 */
- YYSYMBOL_opt_linear = 1015, /* opt_linear */
- YYSYMBOL_opt_key_algo = 1016, /* opt_key_algo */
- YYSYMBOL_part_field_list = 1017, /* part_field_list */
- YYSYMBOL_part_field_item_list = 1018, /* part_field_item_list */
- YYSYMBOL_part_field_item = 1019, /* part_field_item */
- YYSYMBOL_part_column_list = 1020, /* part_column_list */
- YYSYMBOL_part_func = 1021, /* part_func */
- YYSYMBOL_sub_part_func = 1022, /* sub_part_func */
- YYSYMBOL_opt_num_parts = 1023, /* opt_num_parts */
- YYSYMBOL_opt_sub_part = 1024, /* opt_sub_part */
- YYSYMBOL_1025_71 = 1025, /* $@71 */
- YYSYMBOL_1026_72 = 1026, /* $@72 */
- YYSYMBOL_sub_part_field_list = 1027, /* sub_part_field_list */
- YYSYMBOL_sub_part_field_item = 1028, /* sub_part_field_item */
- YYSYMBOL_part_func_expr = 1029, /* part_func_expr */
- YYSYMBOL_opt_num_subparts = 1030, /* opt_num_subparts */
- YYSYMBOL_part_defs = 1031, /* part_defs */
- YYSYMBOL_part_def_list = 1032, /* part_def_list */
- YYSYMBOL_opt_partition = 1033, /* opt_partition */
- YYSYMBOL_part_definition = 1034, /* part_definition */
- YYSYMBOL_1035_73 = 1035, /* $@73 */
- YYSYMBOL_part_name = 1036, /* part_name */
- YYSYMBOL_opt_part_values = 1037, /* opt_part_values */
- YYSYMBOL_1038_74 = 1038, /* $@74 */
- YYSYMBOL_1039_75 = 1039, /* $@75 */
- YYSYMBOL_part_func_max = 1040, /* part_func_max */
- YYSYMBOL_part_values_in = 1041, /* part_values_in */
- YYSYMBOL_part_value_list = 1042, /* part_value_list */
- YYSYMBOL_part_value_item = 1043, /* part_value_item */
- YYSYMBOL_1044_76 = 1044, /* $@76 */
- YYSYMBOL_1045_77 = 1045, /* $@77 */
- YYSYMBOL_part_value_item_list = 1046, /* part_value_item_list */
- YYSYMBOL_part_value_expr_item = 1047, /* part_value_expr_item */
- YYSYMBOL_opt_sub_partition = 1048, /* opt_sub_partition */
- YYSYMBOL_sub_part_list = 1049, /* sub_part_list */
- YYSYMBOL_sub_part_definition = 1050, /* sub_part_definition */
- YYSYMBOL_1051_78 = 1051, /* $@78 */
- YYSYMBOL_sub_name = 1052, /* sub_name */
- YYSYMBOL_opt_part_options = 1053, /* opt_part_options */
- YYSYMBOL_part_option_list = 1054, /* part_option_list */
- YYSYMBOL_part_option = 1055, /* part_option */
- YYSYMBOL_opt_subpart_options = 1056, /* opt_subpart_options */
- YYSYMBOL_subpart_option_list = 1057, /* subpart_option_list */
- YYSYMBOL_server_part_option = 1058, /* server_part_option */
- YYSYMBOL_opt_versioning_rotation = 1059, /* opt_versioning_rotation */
- YYSYMBOL_1060_79 = 1060, /* $@79 */
- YYSYMBOL_opt_versioning_interval_start = 1061, /* opt_versioning_interval_start */
- YYSYMBOL_opt_vers_auto_part = 1062, /* opt_vers_auto_part */
- YYSYMBOL_opt_as = 1063, /* opt_as */
- YYSYMBOL_opt_create_database_options = 1064, /* opt_create_database_options */
- YYSYMBOL_create_database_options = 1065, /* create_database_options */
- YYSYMBOL_create_database_option = 1066, /* create_database_option */
- YYSYMBOL_opt_if_not_exists_table_element = 1067, /* opt_if_not_exists_table_element */
- YYSYMBOL_opt_if_not_exists = 1068, /* opt_if_not_exists */
- YYSYMBOL_create_or_replace = 1069, /* create_or_replace */
- YYSYMBOL_opt_create_table_options = 1070, /* opt_create_table_options */
- YYSYMBOL_create_table_options_space_separated = 1071, /* create_table_options_space_separated */
- YYSYMBOL_create_table_options = 1072, /* create_table_options */
- YYSYMBOL_create_table_option = 1073, /* create_table_option */
- YYSYMBOL_1074_80 = 1074, /* $@80 */
- YYSYMBOL_engine_defined_option = 1075, /* engine_defined_option */
- YYSYMBOL_opt_versioning_option = 1076, /* opt_versioning_option */
- YYSYMBOL_versioning_option = 1077, /* versioning_option */
- YYSYMBOL_default_charset = 1078, /* default_charset */
- YYSYMBOL_default_collation = 1079, /* default_collation */
- YYSYMBOL_storage_engines = 1080, /* storage_engines */
- YYSYMBOL_known_storage_engines = 1081, /* known_storage_engines */
- YYSYMBOL_row_types = 1082, /* row_types */
- YYSYMBOL_merge_insert_types = 1083, /* merge_insert_types */
- YYSYMBOL_udf_type = 1084, /* udf_type */
- YYSYMBOL_create_field_list = 1085, /* create_field_list */
- YYSYMBOL_create_field_list_parens = 1086, /* create_field_list_parens */
- YYSYMBOL_field_list = 1087, /* field_list */
- YYSYMBOL_field_list_item = 1088, /* field_list_item */
- YYSYMBOL_column_def = 1089, /* column_def */
- YYSYMBOL_key_def = 1090, /* key_def */
- YYSYMBOL_1091_81 = 1091, /* $@81 */
- YYSYMBOL_1092_82 = 1092, /* $@82 */
- YYSYMBOL_1093_83 = 1093, /* $@83 */
- YYSYMBOL_1094_84 = 1094, /* $@84 */
- YYSYMBOL_1095_85 = 1095, /* $@85 */
- YYSYMBOL_1096_86 = 1096, /* $@86 */
- YYSYMBOL_1097_87 = 1097, /* $@87 */
- YYSYMBOL_constraint_def = 1098, /* constraint_def */
- YYSYMBOL_period_for_system_time = 1099, /* period_for_system_time */
- YYSYMBOL_period_for_application_time = 1100, /* period_for_application_time */
- YYSYMBOL_opt_check_constraint = 1101, /* opt_check_constraint */
- YYSYMBOL_check_constraint = 1102, /* check_constraint */
- YYSYMBOL_opt_constraint_no_id = 1103, /* opt_constraint_no_id */
- YYSYMBOL_opt_constraint = 1104, /* opt_constraint */
- YYSYMBOL_constraint = 1105, /* constraint */
- YYSYMBOL_field_spec = 1106, /* field_spec */
- YYSYMBOL_1107_88 = 1107, /* @88 */
- YYSYMBOL_field_type_or_serial = 1108, /* field_type_or_serial */
- YYSYMBOL_1109_89 = 1109, /* $@89 */
- YYSYMBOL_1110_90 = 1110, /* $@90 */
- YYSYMBOL_opt_serial_attribute = 1111, /* opt_serial_attribute */
- YYSYMBOL_opt_serial_attribute_list = 1112, /* opt_serial_attribute_list */
- YYSYMBOL_opt_asrow_attribute = 1113, /* opt_asrow_attribute */
- YYSYMBOL_opt_asrow_attribute_list = 1114, /* opt_asrow_attribute_list */
- YYSYMBOL_field_def = 1115, /* field_def */
- YYSYMBOL_1116_91 = 1116, /* $@91 */
- YYSYMBOL_opt_generated_always = 1117, /* opt_generated_always */
- YYSYMBOL_vcol_opt_specifier = 1118, /* vcol_opt_specifier */
- YYSYMBOL_vcol_opt_attribute = 1119, /* vcol_opt_attribute */
- YYSYMBOL_vcol_opt_attribute_list = 1120, /* vcol_opt_attribute_list */
- YYSYMBOL_vcol_attribute = 1121, /* vcol_attribute */
- YYSYMBOL_parse_vcol_expr = 1122, /* parse_vcol_expr */
- YYSYMBOL_1123_92 = 1123, /* $@92 */
- YYSYMBOL_parenthesized_expr = 1124, /* parenthesized_expr */
- YYSYMBOL_virtual_column_func = 1125, /* virtual_column_func */
- YYSYMBOL_expr_or_literal = 1126, /* expr_or_literal */
- YYSYMBOL_column_default_expr = 1127, /* column_default_expr */
- YYSYMBOL_field_type = 1128, /* field_type */
- YYSYMBOL_qualified_field_type = 1129, /* qualified_field_type */
- YYSYMBOL_udt_name = 1130, /* udt_name */
- YYSYMBOL_field_type_all = 1131, /* field_type_all */
- YYSYMBOL_field_type_numeric = 1132, /* field_type_numeric */
- YYSYMBOL_opt_binary_and_compression = 1133, /* opt_binary_and_compression */
- YYSYMBOL_field_type_string = 1134, /* field_type_string */
- YYSYMBOL_field_type_temporal = 1135, /* field_type_temporal */
- YYSYMBOL_field_type_lob = 1136, /* field_type_lob */
- YYSYMBOL_field_type_misc = 1137, /* field_type_misc */
- YYSYMBOL_char = 1138, /* char */
- YYSYMBOL_nchar = 1139, /* nchar */
- YYSYMBOL_varchar = 1140, /* varchar */
- YYSYMBOL_nvarchar = 1141, /* nvarchar */
- YYSYMBOL_int_type = 1142, /* int_type */
- YYSYMBOL_real_type = 1143, /* real_type */
- YYSYMBOL_srid_option = 1144, /* srid_option */
- YYSYMBOL_float_options = 1145, /* float_options */
- YYSYMBOL_precision = 1146, /* precision */
- YYSYMBOL_field_options = 1147, /* field_options */
- YYSYMBOL_last_field_options = 1148, /* last_field_options */
- YYSYMBOL_field_length_str = 1149, /* field_length_str */
- YYSYMBOL_field_length = 1150, /* field_length */
- YYSYMBOL_field_scale = 1151, /* field_scale */
- YYSYMBOL_opt_field_length = 1152, /* opt_field_length */
- YYSYMBOL_opt_field_scale = 1153, /* opt_field_scale */
- YYSYMBOL_opt_precision = 1154, /* opt_precision */
- YYSYMBOL_attribute_list = 1155, /* attribute_list */
- YYSYMBOL_attribute = 1156, /* attribute */
- YYSYMBOL_opt_compression_method = 1157, /* opt_compression_method */
- YYSYMBOL_opt_compressed = 1158, /* opt_compressed */
- YYSYMBOL_opt_enable = 1159, /* opt_enable */
- YYSYMBOL_compressed = 1160, /* compressed */
- YYSYMBOL_compressed_deprecated_data_type_attribute = 1161, /* compressed_deprecated_data_type_attribute */
- YYSYMBOL_compressed_deprecated_column_attribute = 1162, /* compressed_deprecated_column_attribute */
- YYSYMBOL_asrow_attribute = 1163, /* asrow_attribute */
- YYSYMBOL_serial_attribute = 1164, /* serial_attribute */
- YYSYMBOL_with_or_without_system = 1165, /* with_or_without_system */
- YYSYMBOL_charset = 1166, /* charset */
- YYSYMBOL_charset_name = 1167, /* charset_name */
- YYSYMBOL_charset_name_or_default = 1168, /* charset_name_or_default */
- YYSYMBOL_opt_load_data_charset = 1169, /* opt_load_data_charset */
- YYSYMBOL_old_or_new_charset_name = 1170, /* old_or_new_charset_name */
- YYSYMBOL_old_or_new_charset_name_or_default = 1171, /* old_or_new_charset_name_or_default */
- YYSYMBOL_collation_name = 1172, /* collation_name */
- YYSYMBOL_collation_name_or_default = 1173, /* collation_name_or_default */
- YYSYMBOL_opt_default = 1174, /* opt_default */
- YYSYMBOL_charset_or_alias = 1175, /* charset_or_alias */
- YYSYMBOL_opt_binary = 1176, /* opt_binary */
- YYSYMBOL_binary = 1177, /* binary */
- YYSYMBOL_opt_bin_mod = 1178, /* opt_bin_mod */
- YYSYMBOL_ws_nweights = 1179, /* ws_nweights */
- YYSYMBOL_1180_93 = 1180, /* $@93 */
- YYSYMBOL_ws_level_flag_desc = 1181, /* ws_level_flag_desc */
- YYSYMBOL_ws_level_flag_reverse = 1182, /* ws_level_flag_reverse */
- YYSYMBOL_ws_level_flags = 1183, /* ws_level_flags */
- YYSYMBOL_ws_level_number = 1184, /* ws_level_number */
- YYSYMBOL_ws_level_list_item = 1185, /* ws_level_list_item */
- YYSYMBOL_ws_level_list = 1186, /* ws_level_list */
- YYSYMBOL_ws_level_range = 1187, /* ws_level_range */
- YYSYMBOL_ws_level_list_or_range = 1188, /* ws_level_list_or_range */
- YYSYMBOL_opt_ws_levels = 1189, /* opt_ws_levels */
- YYSYMBOL_opt_primary = 1190, /* opt_primary */
- YYSYMBOL_references = 1191, /* references */
- YYSYMBOL_opt_ref_list = 1192, /* opt_ref_list */
- YYSYMBOL_ref_list = 1193, /* ref_list */
- YYSYMBOL_opt_match_clause = 1194, /* opt_match_clause */
- YYSYMBOL_opt_on_update_delete = 1195, /* opt_on_update_delete */
- YYSYMBOL_delete_option = 1196, /* delete_option */
- YYSYMBOL_constraint_key_type = 1197, /* constraint_key_type */
- YYSYMBOL_key_or_index = 1198, /* key_or_index */
- YYSYMBOL_opt_key_or_index = 1199, /* opt_key_or_index */
- YYSYMBOL_keys_or_index = 1200, /* keys_or_index */
- YYSYMBOL_fulltext = 1201, /* fulltext */
- YYSYMBOL_spatial = 1202, /* spatial */
- YYSYMBOL_normal_key_options = 1203, /* normal_key_options */
- YYSYMBOL_fulltext_key_options = 1204, /* fulltext_key_options */
- YYSYMBOL_spatial_key_options = 1205, /* spatial_key_options */
- YYSYMBOL_normal_key_opts = 1206, /* normal_key_opts */
- YYSYMBOL_spatial_key_opts = 1207, /* spatial_key_opts */
- YYSYMBOL_fulltext_key_opts = 1208, /* fulltext_key_opts */
- YYSYMBOL_opt_USING_key_algorithm = 1209, /* opt_USING_key_algorithm */
- YYSYMBOL_opt_key_algorithm_clause = 1210, /* opt_key_algorithm_clause */
- YYSYMBOL_key_using_alg = 1211, /* key_using_alg */
- YYSYMBOL_all_key_opt = 1212, /* all_key_opt */
- YYSYMBOL_normal_key_opt = 1213, /* normal_key_opt */
- YYSYMBOL_spatial_key_opt = 1214, /* spatial_key_opt */
- YYSYMBOL_fulltext_key_opt = 1215, /* fulltext_key_opt */
- YYSYMBOL_btree_or_rtree = 1216, /* btree_or_rtree */
- YYSYMBOL_ignorability = 1217, /* ignorability */
- YYSYMBOL_key_list = 1218, /* key_list */
- YYSYMBOL_opt_without_overlaps = 1219, /* opt_without_overlaps */
- YYSYMBOL_key_part = 1220, /* key_part */
- YYSYMBOL_opt_ident = 1221, /* opt_ident */
- YYSYMBOL_string_list = 1222, /* string_list */
- YYSYMBOL_alter = 1223, /* alter */
- YYSYMBOL_1224_94 = 1224, /* $@94 */
- YYSYMBOL_1225_95 = 1225, /* $@95 */
- YYSYMBOL_1226_96 = 1226, /* $@96 */
- YYSYMBOL_1227_97 = 1227, /* $@97 */
- YYSYMBOL_1228_98 = 1228, /* $@98 */
- YYSYMBOL_1229_99 = 1229, /* $@99 */
- YYSYMBOL_1230_100 = 1230, /* $@100 */
- YYSYMBOL_1231_101 = 1231, /* $@101 */
- YYSYMBOL_1232_102 = 1232, /* $@102 */
- YYSYMBOL_1233_103 = 1233, /* $@103 */
- YYSYMBOL_1234_104 = 1234, /* $@104 */
- YYSYMBOL_1235_105 = 1235, /* $@105 */
- YYSYMBOL_1236_106 = 1236, /* $@106 */
- YYSYMBOL_account_locking_option = 1237, /* account_locking_option */
- YYSYMBOL_opt_password_expire_option = 1238, /* opt_password_expire_option */
- YYSYMBOL_opt_account_locking_and_opt_password_expiration = 1239, /* opt_account_locking_and_opt_password_expiration */
- YYSYMBOL_ev_alter_on_schedule_completion = 1240, /* ev_alter_on_schedule_completion */
- YYSYMBOL_opt_ev_rename_to = 1241, /* opt_ev_rename_to */
- YYSYMBOL_opt_ev_sql_stmt = 1242, /* opt_ev_sql_stmt */
- YYSYMBOL_ident_or_empty = 1243, /* ident_or_empty */
- YYSYMBOL_alter_commands = 1244, /* alter_commands */
- YYSYMBOL_1245_107 = 1245, /* $@107 */
- YYSYMBOL_1246_108 = 1246, /* $@108 */
- YYSYMBOL_1247_109 = 1247, /* $@109 */
- YYSYMBOL_1248_110 = 1248, /* $@110 */
- YYSYMBOL_remove_partitioning = 1249, /* remove_partitioning */
- YYSYMBOL_all_or_alt_part_name_list = 1250, /* all_or_alt_part_name_list */
- YYSYMBOL_add_partition_rule = 1251, /* add_partition_rule */
- YYSYMBOL_1252_111 = 1252, /* $@111 */
- YYSYMBOL_add_part_extra = 1253, /* add_part_extra */
- YYSYMBOL_reorg_partition_rule = 1254, /* reorg_partition_rule */
- YYSYMBOL_1255_112 = 1255, /* $@112 */
- YYSYMBOL_reorg_parts_rule = 1256, /* reorg_parts_rule */
- YYSYMBOL_1257_113 = 1257, /* $@113 */
- YYSYMBOL_alt_part_name_list = 1258, /* alt_part_name_list */
- YYSYMBOL_alt_part_name_item = 1259, /* alt_part_name_item */
- YYSYMBOL_alter_list = 1260, /* alter_list */
- YYSYMBOL_add_column = 1261, /* add_column */
- YYSYMBOL_alter_list_item = 1262, /* alter_list_item */
- YYSYMBOL_opt_index_lock_algorithm = 1263, /* opt_index_lock_algorithm */
- YYSYMBOL_alter_algorithm_option = 1264, /* alter_algorithm_option */
- YYSYMBOL_alter_lock_option = 1265, /* alter_lock_option */
- YYSYMBOL_opt_column = 1266, /* opt_column */
- YYSYMBOL_opt_ignore = 1267, /* opt_ignore */
- YYSYMBOL_alter_options = 1268, /* alter_options */
- YYSYMBOL_1269_114 = 1269, /* $@114 */
- YYSYMBOL_alter_options_part2 = 1270, /* alter_options_part2 */
- YYSYMBOL_alter_option_list = 1271, /* alter_option_list */
- YYSYMBOL_alter_option = 1272, /* alter_option */
- YYSYMBOL_opt_restrict = 1273, /* opt_restrict */
- YYSYMBOL_opt_place = 1274, /* opt_place */
- YYSYMBOL_opt_to = 1275, /* opt_to */
- YYSYMBOL_slave = 1276, /* slave */
- YYSYMBOL_1277_115 = 1277, /* $@115 */
- YYSYMBOL_1278_116 = 1278, /* $@116 */
- YYSYMBOL_start = 1279, /* start */
- YYSYMBOL_opt_start_transaction_option_list = 1280, /* opt_start_transaction_option_list */
- YYSYMBOL_start_transaction_option_list = 1281, /* start_transaction_option_list */
- YYSYMBOL_start_transaction_option = 1282, /* start_transaction_option */
- YYSYMBOL_slave_thread_opts = 1283, /* slave_thread_opts */
- YYSYMBOL_1284_117 = 1284, /* $@117 */
- YYSYMBOL_slave_thread_opt_list = 1285, /* slave_thread_opt_list */
- YYSYMBOL_slave_thread_opt = 1286, /* slave_thread_opt */
- YYSYMBOL_slave_until = 1287, /* slave_until */
- YYSYMBOL_slave_until_opts = 1288, /* slave_until_opts */
- YYSYMBOL_checksum = 1289, /* checksum */
- YYSYMBOL_1290_118 = 1290, /* $@118 */
- YYSYMBOL_opt_checksum_type = 1291, /* opt_checksum_type */
- YYSYMBOL_repair_table_or_view = 1292, /* repair_table_or_view */
- YYSYMBOL_1293_119 = 1293, /* $@119 */
- YYSYMBOL_repair = 1294, /* repair */
- YYSYMBOL_1295_120 = 1295, /* $@120 */
- YYSYMBOL_opt_mi_repair_type = 1296, /* opt_mi_repair_type */
- YYSYMBOL_mi_repair_types = 1297, /* mi_repair_types */
- YYSYMBOL_mi_repair_type = 1298, /* mi_repair_type */
- YYSYMBOL_opt_view_repair_type = 1299, /* opt_view_repair_type */
- YYSYMBOL_analyze = 1300, /* analyze */
- YYSYMBOL_1301_121 = 1301, /* $@121 */
- YYSYMBOL_analyze_table_list = 1302, /* analyze_table_list */
- YYSYMBOL_analyze_table_elem_spec = 1303, /* analyze_table_elem_spec */
- YYSYMBOL_opt_persistent_stat_clause = 1304, /* opt_persistent_stat_clause */
- YYSYMBOL_persistent_stat_spec = 1305, /* persistent_stat_spec */
- YYSYMBOL_persistent_column_stat_spec = 1306, /* persistent_column_stat_spec */
- YYSYMBOL_1307_122 = 1307, /* $@122 */
- YYSYMBOL_persistent_index_stat_spec = 1308, /* persistent_index_stat_spec */
- YYSYMBOL_1309_123 = 1309, /* $@123 */
- YYSYMBOL_table_column_list = 1310, /* table_column_list */
- YYSYMBOL_table_index_list = 1311, /* table_index_list */
- YYSYMBOL_table_index_name = 1312, /* table_index_name */
- YYSYMBOL_binlog_base64_event = 1313, /* binlog_base64_event */
- YYSYMBOL_check_view_or_table = 1314, /* check_view_or_table */
- YYSYMBOL_1315_124 = 1315, /* $@124 */
- YYSYMBOL_check = 1316, /* check */
- YYSYMBOL_1317_125 = 1317, /* $@125 */
- YYSYMBOL_opt_mi_check_type = 1318, /* opt_mi_check_type */
- YYSYMBOL_mi_check_types = 1319, /* mi_check_types */
- YYSYMBOL_mi_check_type = 1320, /* mi_check_type */
- YYSYMBOL_opt_view_check_type = 1321, /* opt_view_check_type */
- YYSYMBOL_optimize = 1322, /* optimize */
- YYSYMBOL_1323_126 = 1323, /* $@126 */
- YYSYMBOL_opt_no_write_to_binlog = 1324, /* opt_no_write_to_binlog */
- YYSYMBOL_rename = 1325, /* rename */
- YYSYMBOL_1326_127 = 1326, /* $@127 */
- YYSYMBOL_rename_list = 1327, /* rename_list */
- YYSYMBOL_table_to_table_list = 1328, /* table_to_table_list */
- YYSYMBOL_table_to_table = 1329, /* table_to_table */
- YYSYMBOL_keycache = 1330, /* keycache */
- YYSYMBOL_1331_128 = 1331, /* $@128 */
- YYSYMBOL_keycache_list_or_parts = 1332, /* keycache_list_or_parts */
- YYSYMBOL_keycache_list = 1333, /* keycache_list */
- YYSYMBOL_assign_to_keycache = 1334, /* assign_to_keycache */
- YYSYMBOL_assign_to_keycache_parts = 1335, /* assign_to_keycache_parts */
- YYSYMBOL_key_cache_name = 1336, /* key_cache_name */
- YYSYMBOL_preload = 1337, /* preload */
- YYSYMBOL_1338_129 = 1338, /* $@129 */
- YYSYMBOL_preload_list_or_parts = 1339, /* preload_list_or_parts */
- YYSYMBOL_preload_list = 1340, /* preload_list */
- YYSYMBOL_preload_keys = 1341, /* preload_keys */
- YYSYMBOL_preload_keys_parts = 1342, /* preload_keys_parts */
- YYSYMBOL_adm_partition = 1343, /* adm_partition */
- YYSYMBOL_1344_130 = 1344, /* $@130 */
- YYSYMBOL_cache_keys_spec = 1345, /* cache_keys_spec */
- YYSYMBOL_1346_131 = 1346, /* $@131 */
- YYSYMBOL_cache_key_list_or_empty = 1347, /* cache_key_list_or_empty */
- YYSYMBOL_opt_ignore_leaves = 1348, /* opt_ignore_leaves */
- YYSYMBOL_select = 1349, /* select */
- YYSYMBOL_1350_132 = 1350, /* $@132 */
- YYSYMBOL_1351_133 = 1351, /* $@133 */
- YYSYMBOL_select_into = 1352, /* select_into */
- YYSYMBOL_1353_134 = 1353, /* $@134 */
- YYSYMBOL_1354_135 = 1354, /* $@135 */
- YYSYMBOL_simple_table = 1355, /* simple_table */
- YYSYMBOL_table_value_constructor = 1356, /* table_value_constructor */
- YYSYMBOL_1357_136 = 1357, /* $@136 */
- YYSYMBOL_query_specification_start = 1358, /* query_specification_start */
- YYSYMBOL_1359_137 = 1359, /* $@137 */
- YYSYMBOL_1360_138 = 1360, /* $@138 */
- YYSYMBOL_query_specification = 1361, /* query_specification */
- YYSYMBOL_select_into_query_specification = 1362, /* select_into_query_specification */
- YYSYMBOL_query_expression = 1363, /* query_expression */
- YYSYMBOL_query_expression_no_with_clause = 1364, /* query_expression_no_with_clause */
- YYSYMBOL_query_expression_body_ext = 1365, /* query_expression_body_ext */
- YYSYMBOL_1366_139 = 1366, /* $@139 */
- YYSYMBOL_1367_140 = 1367, /* $@140 */
- YYSYMBOL_query_expression_body_ext_parens = 1368, /* query_expression_body_ext_parens */
- YYSYMBOL_query_expression_body = 1369, /* query_expression_body */
- YYSYMBOL_1370_141 = 1370, /* $@141 */
- YYSYMBOL_query_primary = 1371, /* query_primary */
- YYSYMBOL_query_simple = 1372, /* query_simple */
- YYSYMBOL_subselect = 1373, /* subselect */
- YYSYMBOL_subquery = 1374, /* subquery */
- YYSYMBOL_opt_from_clause = 1375, /* opt_from_clause */
- YYSYMBOL_from_clause = 1376, /* from_clause */
- YYSYMBOL_table_reference_list = 1377, /* table_reference_list */
- YYSYMBOL_select_options = 1378, /* select_options */
- YYSYMBOL_opt_history_unit = 1379, /* opt_history_unit */
- YYSYMBOL_history_point = 1380, /* history_point */
- YYSYMBOL_for_portion_of_time_clause = 1381, /* for_portion_of_time_clause */
- YYSYMBOL_opt_for_portion_of_time_clause = 1382, /* opt_for_portion_of_time_clause */
- YYSYMBOL_opt_for_system_time_clause = 1383, /* opt_for_system_time_clause */
- YYSYMBOL_system_time_expr = 1384, /* system_time_expr */
- YYSYMBOL_select_option_list = 1385, /* select_option_list */
- YYSYMBOL_select_option = 1386, /* select_option */
- YYSYMBOL_select_lock_type = 1387, /* select_lock_type */
- YYSYMBOL_opt_select_lock_type = 1388, /* opt_select_lock_type */
- YYSYMBOL_opt_lock_wait_timeout_new = 1389, /* opt_lock_wait_timeout_new */
- YYSYMBOL_select_item_list = 1390, /* select_item_list */
- YYSYMBOL_select_item = 1391, /* select_item */
- YYSYMBOL_remember_tok_start = 1392, /* remember_tok_start */
- YYSYMBOL_remember_name = 1393, /* remember_name */
- YYSYMBOL_remember_end = 1394, /* remember_end */
- YYSYMBOL_select_alias = 1395, /* select_alias */
- YYSYMBOL_opt_default_time_precision = 1396, /* opt_default_time_precision */
- YYSYMBOL_opt_time_precision = 1397, /* opt_time_precision */
- YYSYMBOL_optional_braces = 1398, /* optional_braces */
- YYSYMBOL_expr = 1399, /* expr */
- YYSYMBOL_boolean_test = 1400, /* boolean_test */
- YYSYMBOL_predicate = 1401, /* predicate */
- YYSYMBOL_bit_expr = 1402, /* bit_expr */
- YYSYMBOL_or = 1403, /* or */
- YYSYMBOL_and = 1404, /* and */
- YYSYMBOL_not = 1405, /* not */
- YYSYMBOL_not2 = 1406, /* not2 */
- YYSYMBOL_comp_op = 1407, /* comp_op */
- YYSYMBOL_all_or_any = 1408, /* all_or_any */
- YYSYMBOL_opt_dyncol_type = 1409, /* opt_dyncol_type */
- YYSYMBOL_dyncol_type = 1410, /* dyncol_type */
- YYSYMBOL_numeric_dyncol_type = 1411, /* numeric_dyncol_type */
- YYSYMBOL_temporal_dyncol_type = 1412, /* temporal_dyncol_type */
- YYSYMBOL_string_dyncol_type = 1413, /* string_dyncol_type */
- YYSYMBOL_dyncall_create_element = 1414, /* dyncall_create_element */
- YYSYMBOL_dyncall_create_list = 1415, /* dyncall_create_list */
- YYSYMBOL_plsql_cursor_attr = 1416, /* plsql_cursor_attr */
- YYSYMBOL_explicit_cursor_attr = 1417, /* explicit_cursor_attr */
- YYSYMBOL_trim_operands = 1418, /* trim_operands */
- YYSYMBOL_trim_operands_regular = 1419, /* trim_operands_regular */
- YYSYMBOL_trim_operands_special = 1420, /* trim_operands_special */
- YYSYMBOL_column_default_non_parenthesized_expr = 1421, /* column_default_non_parenthesized_expr */
- YYSYMBOL_primary_expr = 1422, /* primary_expr */
- YYSYMBOL_string_factor_expr = 1423, /* string_factor_expr */
- YYSYMBOL_simple_expr = 1424, /* simple_expr */
- YYSYMBOL_mysql_concatenation_expr = 1425, /* mysql_concatenation_expr */
- YYSYMBOL_function_call_keyword_timestamp = 1426, /* function_call_keyword_timestamp */
- YYSYMBOL_function_call_keyword = 1427, /* function_call_keyword */
- YYSYMBOL_substring_operands = 1428, /* substring_operands */
- YYSYMBOL_substring_operands_regular = 1429, /* substring_operands_regular */
- YYSYMBOL_substring_operands_special = 1430, /* substring_operands_special */
- YYSYMBOL_function_call_nonkeyword = 1431, /* function_call_nonkeyword */
- YYSYMBOL_function_call_conflict = 1432, /* function_call_conflict */
- YYSYMBOL_function_call_generic = 1433, /* function_call_generic */
- YYSYMBOL_1434_142 = 1434, /* @142 */
- YYSYMBOL_fulltext_options = 1435, /* fulltext_options */
- YYSYMBOL_opt_natural_language_mode = 1436, /* opt_natural_language_mode */
- YYSYMBOL_opt_query_expansion = 1437, /* opt_query_expansion */
- YYSYMBOL_opt_udf_expr_list = 1438, /* opt_udf_expr_list */
- YYSYMBOL_udf_expr_list = 1439, /* udf_expr_list */
- YYSYMBOL_udf_expr = 1440, /* udf_expr */
- YYSYMBOL_sum_expr = 1441, /* sum_expr */
- YYSYMBOL_1442_143 = 1442, /* $@143 */
- YYSYMBOL_1443_144 = 1443, /* $@144 */
- YYSYMBOL_1444_145 = 1444, /* $@145 */
- YYSYMBOL_1445_146 = 1445, /* $@146 */
- YYSYMBOL_1446_147 = 1446, /* $@147 */
- YYSYMBOL_window_func_expr = 1447, /* window_func_expr */
- YYSYMBOL_window_func = 1448, /* window_func */
- YYSYMBOL_simple_window_func = 1449, /* simple_window_func */
- YYSYMBOL_inverse_distribution_function = 1450, /* inverse_distribution_function */
- YYSYMBOL_percentile_function = 1451, /* percentile_function */
- YYSYMBOL_1452_148 = 1452, /* $@148 */
- YYSYMBOL_inverse_distribution_function_def = 1453, /* inverse_distribution_function_def */
- YYSYMBOL_order_by_single_element_list = 1454, /* order_by_single_element_list */
- YYSYMBOL_window_name = 1455, /* window_name */
- YYSYMBOL_variable = 1456, /* variable */
- YYSYMBOL_1457_149 = 1457, /* $@149 */
- YYSYMBOL_variable_aux = 1458, /* variable_aux */
- YYSYMBOL_opt_distinct = 1459, /* opt_distinct */
- YYSYMBOL_opt_gconcat_separator = 1460, /* opt_gconcat_separator */
- YYSYMBOL_opt_gorder_clause = 1461, /* opt_gorder_clause */
- YYSYMBOL_gorder_list = 1462, /* gorder_list */
- YYSYMBOL_opt_glimit_clause = 1463, /* opt_glimit_clause */
- YYSYMBOL_glimit_clause = 1464, /* glimit_clause */
- YYSYMBOL_glimit_options = 1465, /* glimit_options */
- YYSYMBOL_in_sum_expr = 1466, /* in_sum_expr */
- YYSYMBOL_1467_150 = 1467, /* $@150 */
- YYSYMBOL_cast_type = 1468, /* cast_type */
- YYSYMBOL_cast_type_numeric = 1469, /* cast_type_numeric */
- YYSYMBOL_cast_type_temporal = 1470, /* cast_type_temporal */
- YYSYMBOL_opt_expr_list = 1471, /* opt_expr_list */
- YYSYMBOL_expr_list = 1472, /* expr_list */
- YYSYMBOL_ident_list_arg = 1473, /* ident_list_arg */
- YYSYMBOL_ident_list = 1474, /* ident_list */
- YYSYMBOL_when_list = 1475, /* when_list */
- YYSYMBOL_when_list_opt_else = 1476, /* when_list_opt_else */
- YYSYMBOL_table_ref = 1477, /* table_ref */
- YYSYMBOL_json_text_literal = 1478, /* json_text_literal */
- YYSYMBOL_json_text_literal_or_num = 1479, /* json_text_literal_or_num */
- YYSYMBOL_join_table_list = 1480, /* join_table_list */
- YYSYMBOL_json_table_columns_clause = 1481, /* json_table_columns_clause */
- YYSYMBOL_json_table_columns_list = 1482, /* json_table_columns_list */
- YYSYMBOL_json_table_column = 1483, /* json_table_column */
- YYSYMBOL_1484_151 = 1484, /* $@151 */
- YYSYMBOL_1485_152 = 1485, /* $@152 */
- YYSYMBOL_json_table_column_type = 1486, /* json_table_column_type */
- YYSYMBOL_json_table_field_type = 1487, /* json_table_field_type */
- YYSYMBOL_json_opt_on_empty_or_error = 1488, /* json_opt_on_empty_or_error */
- YYSYMBOL_json_on_response = 1489, /* json_on_response */
- YYSYMBOL_json_on_error_response = 1490, /* json_on_error_response */
- YYSYMBOL_json_on_empty_response = 1491, /* json_on_empty_response */
- YYSYMBOL_table_function = 1492, /* table_function */
- YYSYMBOL_1493_153 = 1493, /* $@153 */
- YYSYMBOL_1494_154 = 1494, /* $@154 */
- YYSYMBOL_esc_table_ref = 1495, /* esc_table_ref */
- YYSYMBOL_derived_table_list = 1496, /* derived_table_list */
- YYSYMBOL_join_table = 1497, /* join_table */
- YYSYMBOL_1498_155 = 1498, /* $@155 */
- YYSYMBOL_1499_156 = 1499, /* $@156 */
- YYSYMBOL_1500_157 = 1500, /* $@157 */
- YYSYMBOL_1501_158 = 1501, /* $@158 */
- YYSYMBOL_1502_159 = 1502, /* $@159 */
- YYSYMBOL_1503_160 = 1503, /* $@160 */
- YYSYMBOL_inner_join = 1504, /* inner_join */
- YYSYMBOL_normal_join = 1505, /* normal_join */
- YYSYMBOL_opt_use_partition = 1506, /* opt_use_partition */
- YYSYMBOL_use_partition = 1507, /* use_partition */
- YYSYMBOL_table_factor = 1508, /* table_factor */
- YYSYMBOL_table_primary_ident_opt_parens = 1509, /* table_primary_ident_opt_parens */
- YYSYMBOL_table_primary_derived_opt_parens = 1510, /* table_primary_derived_opt_parens */
- YYSYMBOL_table_reference_list_parens = 1511, /* table_reference_list_parens */
- YYSYMBOL_nested_table_reference_list = 1512, /* nested_table_reference_list */
- YYSYMBOL_join_table_parens = 1513, /* join_table_parens */
- YYSYMBOL_table_primary_ident = 1514, /* table_primary_ident */
- YYSYMBOL_table_primary_derived = 1515, /* table_primary_derived */
- YYSYMBOL_opt_outer = 1516, /* opt_outer */
- YYSYMBOL_index_hint_clause = 1517, /* index_hint_clause */
- YYSYMBOL_index_hint_type = 1518, /* index_hint_type */
- YYSYMBOL_index_hint_definition = 1519, /* index_hint_definition */
- YYSYMBOL_1520_161 = 1520, /* $@161 */
- YYSYMBOL_1521_162 = 1521, /* $@162 */
- YYSYMBOL_index_hints_list = 1522, /* index_hints_list */
- YYSYMBOL_opt_index_hints_list = 1523, /* opt_index_hints_list */
- YYSYMBOL_1524_163 = 1524, /* $@163 */
- YYSYMBOL_opt_key_definition = 1525, /* opt_key_definition */
- YYSYMBOL_1526_164 = 1526, /* $@164 */
- YYSYMBOL_opt_key_usage_list = 1527, /* opt_key_usage_list */
- YYSYMBOL_key_usage_element = 1528, /* key_usage_element */
- YYSYMBOL_key_usage_list = 1529, /* key_usage_list */
- YYSYMBOL_using_list = 1530, /* using_list */
- YYSYMBOL_interval = 1531, /* interval */
- YYSYMBOL_interval_time_stamp = 1532, /* interval_time_stamp */
- YYSYMBOL_date_time_type = 1533, /* date_time_type */
- YYSYMBOL_table_alias = 1534, /* table_alias */
- YYSYMBOL_opt_table_alias_clause = 1535, /* opt_table_alias_clause */
- YYSYMBOL_table_alias_clause = 1536, /* table_alias_clause */
- YYSYMBOL_opt_all = 1537, /* opt_all */
- YYSYMBOL_opt_where_clause = 1538, /* opt_where_clause */
- YYSYMBOL_1539_165 = 1539, /* $@165 */
- YYSYMBOL_opt_having_clause = 1540, /* opt_having_clause */
- YYSYMBOL_1541_166 = 1541, /* $@166 */
- YYSYMBOL_opt_group_clause = 1542, /* opt_group_clause */
- YYSYMBOL_group_list = 1543, /* group_list */
- YYSYMBOL_olap_opt = 1544, /* olap_opt */
- YYSYMBOL_opt_window_clause = 1545, /* opt_window_clause */
- YYSYMBOL_window_def_list = 1546, /* window_def_list */
- YYSYMBOL_window_def = 1547, /* window_def */
- YYSYMBOL_window_spec = 1548, /* window_spec */
- YYSYMBOL_1549_167 = 1549, /* $@167 */
- YYSYMBOL_opt_window_ref = 1550, /* opt_window_ref */
- YYSYMBOL_opt_window_partition_clause = 1551, /* opt_window_partition_clause */
- YYSYMBOL_opt_window_order_clause = 1552, /* opt_window_order_clause */
- YYSYMBOL_opt_window_frame_clause = 1553, /* opt_window_frame_clause */
- YYSYMBOL_window_frame_units = 1554, /* window_frame_units */
- YYSYMBOL_window_frame_extent = 1555, /* window_frame_extent */
- YYSYMBOL_window_frame_start = 1556, /* window_frame_start */
- YYSYMBOL_window_frame_bound = 1557, /* window_frame_bound */
- YYSYMBOL_opt_window_frame_exclusion = 1558, /* opt_window_frame_exclusion */
- YYSYMBOL_alter_order_clause = 1559, /* alter_order_clause */
- YYSYMBOL_alter_order_list = 1560, /* alter_order_list */
- YYSYMBOL_alter_order_item = 1561, /* alter_order_item */
- YYSYMBOL_opt_order_clause = 1562, /* opt_order_clause */
- YYSYMBOL_order_clause = 1563, /* order_clause */
- YYSYMBOL_1564_168 = 1564, /* $@168 */
- YYSYMBOL_order_list = 1565, /* order_list */
- YYSYMBOL_order_dir = 1566, /* order_dir */
- YYSYMBOL_opt_limit_clause = 1567, /* opt_limit_clause */
- YYSYMBOL_limit_clause = 1568, /* limit_clause */
- YYSYMBOL_fetch_first_clause = 1569, /* fetch_first_clause */
- YYSYMBOL_first_or_next = 1570, /* first_or_next */
- YYSYMBOL_row_or_rows = 1571, /* row_or_rows */
- YYSYMBOL_only_or_with_ties = 1572, /* only_or_with_ties */
- YYSYMBOL_opt_global_limit_clause = 1573, /* opt_global_limit_clause */
- YYSYMBOL_limit_options = 1574, /* limit_options */
- YYSYMBOL_limit_option = 1575, /* limit_option */
- YYSYMBOL_limit_rows_option = 1576, /* limit_rows_option */
- YYSYMBOL_delete_limit_clause = 1577, /* delete_limit_clause */
- YYSYMBOL_order_limit_lock = 1578, /* order_limit_lock */
- YYSYMBOL_opt_order_limit_lock = 1579, /* opt_order_limit_lock */
- YYSYMBOL_query_expression_tail = 1580, /* query_expression_tail */
- YYSYMBOL_opt_query_expression_tail = 1581, /* opt_query_expression_tail */
- YYSYMBOL_opt_procedure_or_into = 1582, /* opt_procedure_or_into */
- YYSYMBOL_order_or_limit = 1583, /* order_or_limit */
- YYSYMBOL_opt_plus = 1584, /* opt_plus */
- YYSYMBOL_int_num = 1585, /* int_num */
- YYSYMBOL_ulong_num = 1586, /* ulong_num */
- YYSYMBOL_real_ulong_num = 1587, /* real_ulong_num */
- YYSYMBOL_longlong_num = 1588, /* longlong_num */
- YYSYMBOL_ulonglong_num = 1589, /* ulonglong_num */
- YYSYMBOL_real_ulonglong_num = 1590, /* real_ulonglong_num */
- YYSYMBOL_dec_num_error = 1591, /* dec_num_error */
- YYSYMBOL_dec_num = 1592, /* dec_num */
- YYSYMBOL_choice = 1593, /* choice */
- YYSYMBOL_bool = 1594, /* bool */
- YYSYMBOL_procedure_clause = 1595, /* procedure_clause */
- YYSYMBOL_1596_169 = 1596, /* $@169 */
- YYSYMBOL_procedure_list = 1597, /* procedure_list */
- YYSYMBOL_procedure_list2 = 1598, /* procedure_list2 */
- YYSYMBOL_procedure_item = 1599, /* procedure_item */
- YYSYMBOL_select_var_list_init = 1600, /* select_var_list_init */
- YYSYMBOL_1601_170 = 1601, /* $@170 */
- YYSYMBOL_select_var_list = 1602, /* select_var_list */
- YYSYMBOL_select_var_ident = 1603, /* select_var_ident */
- YYSYMBOL_select_outvar = 1604, /* select_outvar */
- YYSYMBOL_into = 1605, /* into */
- YYSYMBOL_into_destination = 1606, /* into_destination */
- YYSYMBOL_1607_171 = 1607, /* $@171 */
- YYSYMBOL_1608_172 = 1608, /* $@172 */
- YYSYMBOL_do = 1609, /* do */
- YYSYMBOL_1610_173 = 1610, /* $@173 */
- YYSYMBOL_drop = 1611, /* drop */
- YYSYMBOL_1612_174 = 1612, /* $@174 */
- YYSYMBOL_1613_175 = 1613, /* $@175 */
- YYSYMBOL_1614_176 = 1614, /* $@176 */
- YYSYMBOL_1615_177 = 1615, /* $@177 */
- YYSYMBOL_table_list = 1616, /* table_list */
- YYSYMBOL_table_name = 1617, /* table_name */
- YYSYMBOL_table_name_with_opt_use_partition = 1618, /* table_name_with_opt_use_partition */
- YYSYMBOL_table_alias_ref_list = 1619, /* table_alias_ref_list */
- YYSYMBOL_table_alias_ref = 1620, /* table_alias_ref */
- YYSYMBOL_opt_if_exists_table_element = 1621, /* opt_if_exists_table_element */
- YYSYMBOL_opt_if_exists = 1622, /* opt_if_exists */
- YYSYMBOL_opt_temporary = 1623, /* opt_temporary */
- YYSYMBOL_insert = 1624, /* insert */
- YYSYMBOL_1625_178 = 1625, /* $@178 */
- YYSYMBOL_1626_179 = 1626, /* $@179 */
- YYSYMBOL_replace = 1627, /* replace */
- YYSYMBOL_1628_180 = 1628, /* $@180 */
- YYSYMBOL_1629_181 = 1629, /* $@181 */
- YYSYMBOL_insert_start = 1630, /* insert_start */
- YYSYMBOL_stmt_end = 1631, /* stmt_end */
- YYSYMBOL_insert_lock_option = 1632, /* insert_lock_option */
- YYSYMBOL_replace_lock_option = 1633, /* replace_lock_option */
- YYSYMBOL_insert_replace_option = 1634, /* insert_replace_option */
- YYSYMBOL_opt_into = 1635, /* opt_into */
- YYSYMBOL_insert_table = 1636, /* insert_table */
- YYSYMBOL_1637_182 = 1637, /* $@182 */
- YYSYMBOL_insert_field_spec = 1638, /* insert_field_spec */
- YYSYMBOL_1639_183 = 1639, /* $@183 */
- YYSYMBOL_insert_field_list = 1640, /* insert_field_list */
- YYSYMBOL_opt_fields = 1641, /* opt_fields */
- YYSYMBOL_fields = 1642, /* fields */
- YYSYMBOL_insert_values = 1643, /* insert_values */
- YYSYMBOL_values_list = 1644, /* values_list */
- YYSYMBOL_ident_eq_list = 1645, /* ident_eq_list */
- YYSYMBOL_ident_eq_value = 1646, /* ident_eq_value */
- YYSYMBOL_equal = 1647, /* equal */
- YYSYMBOL_opt_equal = 1648, /* opt_equal */
- YYSYMBOL_opt_with = 1649, /* opt_with */
- YYSYMBOL_opt_by = 1650, /* opt_by */
- YYSYMBOL_no_braces = 1651, /* no_braces */
- YYSYMBOL_1652_184 = 1652, /* $@184 */
- YYSYMBOL_no_braces_with_names = 1653, /* no_braces_with_names */
- YYSYMBOL_1654_185 = 1654, /* $@185 */
- YYSYMBOL_opt_values = 1655, /* opt_values */
- YYSYMBOL_opt_values_with_names = 1656, /* opt_values_with_names */
- YYSYMBOL_values = 1657, /* values */
- YYSYMBOL_values_with_names = 1658, /* values_with_names */
- YYSYMBOL_expr_or_ignore = 1659, /* expr_or_ignore */
- YYSYMBOL_expr_or_ignore_or_default = 1660, /* expr_or_ignore_or_default */
- YYSYMBOL_opt_insert_update = 1661, /* opt_insert_update */
- YYSYMBOL_1662_186 = 1662, /* $@186 */
- YYSYMBOL_1663_187 = 1663, /* $@187 */
- YYSYMBOL_update_table_list = 1664, /* update_table_list */
- YYSYMBOL_update = 1665, /* update */
- YYSYMBOL_1666_188 = 1666, /* $@188 */
- YYSYMBOL_1667_189 = 1667, /* $@189 */
- YYSYMBOL_1668_190 = 1668, /* $@190 */
- YYSYMBOL_update_list = 1669, /* update_list */
- YYSYMBOL_update_elem = 1670, /* update_elem */
- YYSYMBOL_insert_update_list = 1671, /* insert_update_list */
- YYSYMBOL_insert_update_elem = 1672, /* insert_update_elem */
- YYSYMBOL_opt_low_priority = 1673, /* opt_low_priority */
- YYSYMBOL_delete = 1674, /* delete */
- YYSYMBOL_1675_191 = 1675, /* $@191 */
- YYSYMBOL_opt_delete_system_time = 1676, /* opt_delete_system_time */
- YYSYMBOL_delete_part2 = 1677, /* delete_part2 */
- YYSYMBOL_delete_single_table = 1678, /* delete_single_table */
- YYSYMBOL_delete_single_table_for_period = 1679, /* delete_single_table_for_period */
- YYSYMBOL_single_multi = 1680, /* single_multi */
- YYSYMBOL_1681_192 = 1681, /* $@192 */
- YYSYMBOL_1682_193 = 1682, /* $@193 */
- YYSYMBOL_1683_194 = 1683, /* $@194 */
- YYSYMBOL_1684_195 = 1684, /* $@195 */
- YYSYMBOL_opt_returning = 1685, /* opt_returning */
- YYSYMBOL_1686_196 = 1686, /* $@196 */
- YYSYMBOL_table_wild_list = 1687, /* table_wild_list */
- YYSYMBOL_table_wild_one = 1688, /* table_wild_one */
- YYSYMBOL_opt_wild = 1689, /* opt_wild */
- YYSYMBOL_opt_delete_options = 1690, /* opt_delete_options */
- YYSYMBOL_opt_delete_option = 1691, /* opt_delete_option */
- YYSYMBOL_truncate = 1692, /* truncate */
- YYSYMBOL_1693_197 = 1693, /* $@197 */
- YYSYMBOL_1694_198 = 1694, /* $@198 */
- YYSYMBOL_opt_table_sym = 1695, /* opt_table_sym */
- YYSYMBOL_opt_profile_defs = 1696, /* opt_profile_defs */
- YYSYMBOL_profile_defs = 1697, /* profile_defs */
- YYSYMBOL_profile_def = 1698, /* profile_def */
- YYSYMBOL_opt_profile_args = 1699, /* opt_profile_args */
- YYSYMBOL_show = 1700, /* show */
- YYSYMBOL_1701_199 = 1701, /* $@199 */
- YYSYMBOL_show_param = 1702, /* show_param */
- YYSYMBOL_1703_200 = 1703, /* $@200 */
- YYSYMBOL_1704_201 = 1704, /* $@201 */
- YYSYMBOL_show_engine_param = 1705, /* show_engine_param */
- YYSYMBOL_master_or_binary = 1706, /* master_or_binary */
- YYSYMBOL_opt_storage = 1707, /* opt_storage */
- YYSYMBOL_opt_db = 1708, /* opt_db */
- YYSYMBOL_opt_full = 1709, /* opt_full */
- YYSYMBOL_from_or_in = 1710, /* from_or_in */
- YYSYMBOL_binlog_in = 1711, /* binlog_in */
- YYSYMBOL_binlog_from = 1712, /* binlog_from */
- YYSYMBOL_wild_and_where = 1713, /* wild_and_where */
- YYSYMBOL_describe = 1714, /* describe */
- YYSYMBOL_1715_202 = 1715, /* $@202 */
- YYSYMBOL_1716_203 = 1716, /* $@203 */
- YYSYMBOL_explainable_command = 1717, /* explainable_command */
- YYSYMBOL_describe_command = 1718, /* describe_command */
- YYSYMBOL_analyze_stmt_command = 1719, /* analyze_stmt_command */
- YYSYMBOL_opt_extended_describe = 1720, /* opt_extended_describe */
- YYSYMBOL_opt_format_json = 1721, /* opt_format_json */
- YYSYMBOL_opt_describe_column = 1722, /* opt_describe_column */
- YYSYMBOL_explain_for_connection = 1723, /* explain_for_connection */
- YYSYMBOL_flush = 1724, /* flush */
- YYSYMBOL_1725_204 = 1725, /* $@204 */
- YYSYMBOL_flush_options = 1726, /* flush_options */
- YYSYMBOL_1727_205 = 1727, /* $@205 */
- YYSYMBOL_opt_flush_lock = 1728, /* opt_flush_lock */
- YYSYMBOL_flush_lock = 1729, /* flush_lock */
- YYSYMBOL_1730_206 = 1730, /* $@206 */
- YYSYMBOL_flush_options_list = 1731, /* flush_options_list */
- YYSYMBOL_flush_option = 1732, /* flush_option */
- YYSYMBOL_opt_table_list = 1733, /* opt_table_list */
- YYSYMBOL_backup = 1734, /* backup */
- YYSYMBOL_backup_statements = 1735, /* backup_statements */
- YYSYMBOL_1736_207 = 1736, /* $@207 */
- YYSYMBOL_opt_delete_gtid_domain = 1737, /* opt_delete_gtid_domain */
- YYSYMBOL_delete_domain_id_list = 1738, /* delete_domain_id_list */
- YYSYMBOL_delete_domain_id = 1739, /* delete_domain_id */
- YYSYMBOL_optional_flush_tables_arguments = 1740, /* optional_flush_tables_arguments */
- YYSYMBOL_reset = 1741, /* reset */
- YYSYMBOL_1742_208 = 1742, /* $@208 */
- YYSYMBOL_reset_options = 1743, /* reset_options */
- YYSYMBOL_reset_option = 1744, /* reset_option */
- YYSYMBOL_1745_209 = 1745, /* $@209 */
- YYSYMBOL_1746_210 = 1746, /* $@210 */
- YYSYMBOL_slave_reset_options = 1747, /* slave_reset_options */
- YYSYMBOL_master_reset_options = 1748, /* master_reset_options */
- YYSYMBOL_purge = 1749, /* purge */
- YYSYMBOL_1750_211 = 1750, /* $@211 */
- YYSYMBOL_kill = 1751, /* kill */
- YYSYMBOL_1752_212 = 1752, /* $@212 */
- YYSYMBOL_kill_type = 1753, /* kill_type */
- YYSYMBOL_kill_option = 1754, /* kill_option */
- YYSYMBOL_opt_connection = 1755, /* opt_connection */
- YYSYMBOL_kill_expr = 1756, /* kill_expr */
- YYSYMBOL_shutdown = 1757, /* shutdown */
- YYSYMBOL_1758_213 = 1758, /* $@213 */
- YYSYMBOL_shutdown_option = 1759, /* shutdown_option */
- YYSYMBOL_use = 1760, /* use */
- YYSYMBOL_load = 1761, /* load */
- YYSYMBOL_1762_214 = 1762, /* $@214 */
- YYSYMBOL_1763_215 = 1763, /* $@215 */
- YYSYMBOL_1764_216 = 1764, /* $@216 */
- YYSYMBOL_1765_217 = 1765, /* $@217 */
- YYSYMBOL_data_or_xml = 1766, /* data_or_xml */
- YYSYMBOL_opt_local = 1767, /* opt_local */
- YYSYMBOL_load_data_lock = 1768, /* load_data_lock */
- YYSYMBOL_opt_duplicate = 1769, /* opt_duplicate */
- YYSYMBOL_opt_field_term = 1770, /* opt_field_term */
- YYSYMBOL_field_term_list = 1771, /* field_term_list */
- YYSYMBOL_field_term = 1772, /* field_term */
- YYSYMBOL_opt_line_term = 1773, /* opt_line_term */
- YYSYMBOL_line_term_list = 1774, /* line_term_list */
- YYSYMBOL_line_term = 1775, /* line_term */
- YYSYMBOL_opt_xml_rows_identified_by = 1776, /* opt_xml_rows_identified_by */
- YYSYMBOL_opt_ignore_lines = 1777, /* opt_ignore_lines */
- YYSYMBOL_lines_or_rows = 1778, /* lines_or_rows */
- YYSYMBOL_opt_field_or_var_spec = 1779, /* opt_field_or_var_spec */
- YYSYMBOL_fields_or_vars = 1780, /* fields_or_vars */
- YYSYMBOL_field_or_var = 1781, /* field_or_var */
- YYSYMBOL_opt_load_data_set_spec = 1782, /* opt_load_data_set_spec */
- YYSYMBOL_load_data_set_list = 1783, /* load_data_set_list */
- YYSYMBOL_load_data_set_elem = 1784, /* load_data_set_elem */
- YYSYMBOL_text_literal = 1785, /* text_literal */
- YYSYMBOL_text_string = 1786, /* text_string */
- YYSYMBOL_hex_or_bin_String = 1787, /* hex_or_bin_String */
- YYSYMBOL_param_marker = 1788, /* param_marker */
- YYSYMBOL_signed_literal = 1789, /* signed_literal */
- YYSYMBOL_literal = 1790, /* literal */
- YYSYMBOL_NUM_literal = 1791, /* NUM_literal */
- YYSYMBOL_temporal_literal = 1792, /* temporal_literal */
- YYSYMBOL_with_clause = 1793, /* with_clause */
- YYSYMBOL_1794_218 = 1794, /* $@218 */
- YYSYMBOL_opt_recursive = 1795, /* opt_recursive */
- YYSYMBOL_with_list = 1796, /* with_list */
- YYSYMBOL_with_list_element = 1797, /* with_list_element */
- YYSYMBOL_opt_cycle = 1798, /* opt_cycle */
- YYSYMBOL_1799_219 = 1799, /* $@219 */
- YYSYMBOL_opt_with_column_list = 1800, /* opt_with_column_list */
- YYSYMBOL_with_column_list = 1801, /* with_column_list */
- YYSYMBOL_ident_sys_alloc = 1802, /* ident_sys_alloc */
- YYSYMBOL_comma_separated_ident_list = 1803, /* comma_separated_ident_list */
- YYSYMBOL_with_element_head = 1804, /* with_element_head */
- YYSYMBOL_insert_ident = 1805, /* insert_ident */
- YYSYMBOL_table_wild = 1806, /* table_wild */
- YYSYMBOL_select_sublist_qualified_asterisk = 1807, /* select_sublist_qualified_asterisk */
- YYSYMBOL_order_ident = 1808, /* order_ident */
- YYSYMBOL_simple_ident = 1809, /* simple_ident */
- YYSYMBOL_simple_ident_nospvar = 1810, /* simple_ident_nospvar */
- YYSYMBOL_field_ident = 1811, /* field_ident */
- YYSYMBOL_table_ident = 1812, /* table_ident */
- YYSYMBOL_table_ident_opt_wild = 1813, /* table_ident_opt_wild */
- YYSYMBOL_table_ident_nodb = 1814, /* table_ident_nodb */
- YYSYMBOL_IDENT_cli = 1815, /* IDENT_cli */
- YYSYMBOL_ident_cli = 1816, /* ident_cli */
- YYSYMBOL_IDENT_sys = 1817, /* IDENT_sys */
- YYSYMBOL_ident_cli_func = 1818, /* ident_cli_func */
- YYSYMBOL_ident_func = 1819, /* ident_func */
- YYSYMBOL_TEXT_STRING_sys = 1820, /* TEXT_STRING_sys */
- YYSYMBOL_TEXT_STRING_literal = 1821, /* TEXT_STRING_literal */
- YYSYMBOL_TEXT_STRING_filesystem = 1822, /* TEXT_STRING_filesystem */
- YYSYMBOL_ident_table_alias = 1823, /* ident_table_alias */
- YYSYMBOL_ident_cli_set_usual_case = 1824, /* ident_cli_set_usual_case */
- YYSYMBOL_ident_sysvar_name = 1825, /* ident_sysvar_name */
- YYSYMBOL_ident = 1826, /* ident */
- YYSYMBOL_label_ident = 1827, /* label_ident */
- YYSYMBOL_ident_or_text = 1828, /* ident_or_text */
- YYSYMBOL_user_maybe_role = 1829, /* user_maybe_role */
- YYSYMBOL_user_or_role = 1830, /* user_or_role */
- YYSYMBOL_user = 1831, /* user */
- YYSYMBOL_keyword_table_alias = 1832, /* keyword_table_alias */
- YYSYMBOL_keyword_ident = 1833, /* keyword_ident */
- YYSYMBOL_keyword_sysvar_name = 1834, /* keyword_sysvar_name */
- YYSYMBOL_keyword_set_usual_case = 1835, /* keyword_set_usual_case */
- YYSYMBOL_non_reserved_keyword_udt = 1836, /* non_reserved_keyword_udt */
- YYSYMBOL_keyword_sp_var_not_label = 1837, /* keyword_sp_var_not_label */
- YYSYMBOL_keyword_sp_head = 1838, /* keyword_sp_head */
- YYSYMBOL_keyword_verb_clause = 1839, /* keyword_verb_clause */
- YYSYMBOL_keyword_set_special_case = 1840, /* keyword_set_special_case */
- YYSYMBOL_keyword_sysvar_type = 1841, /* keyword_sysvar_type */
- YYSYMBOL_keyword_data_type = 1842, /* keyword_data_type */
- YYSYMBOL_keyword_cast_type = 1843, /* keyword_cast_type */
- YYSYMBOL_keyword_func_sp_var_and_label = 1844, /* keyword_func_sp_var_and_label */
- YYSYMBOL_keyword_func_sp_var_not_label = 1845, /* keyword_func_sp_var_not_label */
- YYSYMBOL_keyword_sp_var_and_label = 1846, /* keyword_sp_var_and_label */
- YYSYMBOL_reserved_keyword_udt_not_param_type = 1847, /* reserved_keyword_udt_not_param_type */
- YYSYMBOL_set = 1848, /* set */
- YYSYMBOL_1849_220 = 1849, /* $@220 */
- YYSYMBOL_set_param = 1850, /* set_param */
- YYSYMBOL_1851_221 = 1851, /* $@221 */
- YYSYMBOL_1852_222 = 1852, /* $@222 */
- YYSYMBOL_1853_223 = 1853, /* $@223 */
- YYSYMBOL_set_stmt_option_list = 1854, /* set_stmt_option_list */
- YYSYMBOL_start_option_value_list_following_option_type = 1855, /* start_option_value_list_following_option_type */
- YYSYMBOL_1856_224 = 1856, /* $@224 */
- YYSYMBOL_option_value_list = 1857, /* option_value_list */
- YYSYMBOL_option_value = 1858, /* option_value */
- YYSYMBOL_1859_225 = 1859, /* $@225 */
- YYSYMBOL_option_type = 1860, /* option_type */
- YYSYMBOL_opt_var_type = 1861, /* opt_var_type */
- YYSYMBOL_opt_var_ident_type = 1862, /* opt_var_ident_type */
- YYSYMBOL_set_stmt_option = 1863, /* set_stmt_option */
- YYSYMBOL_1864_226 = 1864, /* $@226 */
- YYSYMBOL_1865_227 = 1865, /* $@227 */
- YYSYMBOL_1866_228 = 1866, /* $@228 */
- YYSYMBOL_option_value_following_option_type = 1867, /* option_value_following_option_type */
- YYSYMBOL_1868_229 = 1868, /* $@229 */
- YYSYMBOL_1869_230 = 1869, /* $@230 */
- YYSYMBOL_1870_231 = 1870, /* $@231 */
- YYSYMBOL_option_value_no_option_type = 1871, /* option_value_no_option_type */
- YYSYMBOL_1872_232 = 1872, /* $@232 */
- YYSYMBOL_1873_233 = 1873, /* $@233 */
- YYSYMBOL_1874_234 = 1874, /* $@234 */
- YYSYMBOL_1875_235 = 1875, /* $@235 */
- YYSYMBOL_1876_236 = 1876, /* $@236 */
- YYSYMBOL_1877_237 = 1877, /* $@237 */
- YYSYMBOL_1878_238 = 1878, /* $@238 */
- YYSYMBOL_1879_239 = 1879, /* $@239 */
- YYSYMBOL_1880_240 = 1880, /* $@240 */
- YYSYMBOL_1881_241 = 1881, /* $@241 */
- YYSYMBOL_transaction_characteristics = 1882, /* transaction_characteristics */
- YYSYMBOL_transaction_access_mode = 1883, /* transaction_access_mode */
- YYSYMBOL_isolation_level = 1884, /* isolation_level */
- YYSYMBOL_transaction_access_mode_types = 1885, /* transaction_access_mode_types */
- YYSYMBOL_isolation_types = 1886, /* isolation_types */
- YYSYMBOL_text_or_password = 1887, /* text_or_password */
- YYSYMBOL_set_expr_or_default = 1888, /* set_expr_or_default */
- YYSYMBOL_lock = 1889, /* lock */
- YYSYMBOL_1890_242 = 1890, /* $@242 */
- YYSYMBOL_opt_lock_wait_timeout = 1891, /* opt_lock_wait_timeout */
- YYSYMBOL_table_or_tables = 1892, /* table_or_tables */
- YYSYMBOL_table_lock_list = 1893, /* table_lock_list */
- YYSYMBOL_table_lock = 1894, /* table_lock */
- YYSYMBOL_lock_option = 1895, /* lock_option */
- YYSYMBOL_unlock = 1896, /* unlock */
- YYSYMBOL_1897_243 = 1897, /* $@243 */
- YYSYMBOL_handler = 1898, /* handler */
- YYSYMBOL_1899_244 = 1899, /* $@244 */
- YYSYMBOL_handler_tail = 1900, /* handler_tail */
- YYSYMBOL_1901_245 = 1901, /* $@245 */
- YYSYMBOL_handler_read_or_scan = 1902, /* handler_read_or_scan */
- YYSYMBOL_handler_scan_function = 1903, /* handler_scan_function */
- YYSYMBOL_handler_rkey_function = 1904, /* handler_rkey_function */
- YYSYMBOL_1905_246 = 1905, /* $@246 */
- YYSYMBOL_handler_rkey_mode = 1906, /* handler_rkey_mode */
- YYSYMBOL_revoke = 1907, /* revoke */
- YYSYMBOL_revoke_command = 1908, /* revoke_command */
- YYSYMBOL_admin_option_for_role = 1909, /* admin_option_for_role */
- YYSYMBOL_grant = 1910, /* grant */
- YYSYMBOL_grant_command = 1911, /* grant_command */
- YYSYMBOL_opt_with_admin = 1912, /* opt_with_admin */
- YYSYMBOL_opt_with_admin_option = 1913, /* opt_with_admin_option */
- YYSYMBOL_role_list = 1914, /* role_list */
- YYSYMBOL_current_role = 1915, /* current_role */
- YYSYMBOL_role_name = 1916, /* role_name */
- YYSYMBOL_grant_role = 1917, /* grant_role */
- YYSYMBOL_opt_table = 1918, /* opt_table */
- YYSYMBOL_grant_privileges = 1919, /* grant_privileges */
- YYSYMBOL_opt_privileges = 1920, /* opt_privileges */
- YYSYMBOL_object_privilege_list = 1921, /* object_privilege_list */
- YYSYMBOL_column_list_privilege = 1922, /* column_list_privilege */
- YYSYMBOL_column_privilege = 1923, /* column_privilege */
- YYSYMBOL_object_privilege = 1924, /* object_privilege */
- YYSYMBOL_opt_and = 1925, /* opt_and */
- YYSYMBOL_require_list = 1926, /* require_list */
- YYSYMBOL_require_list_element = 1927, /* require_list_element */
- YYSYMBOL_grant_ident = 1928, /* grant_ident */
- YYSYMBOL_user_list = 1929, /* user_list */
- YYSYMBOL_grant_list = 1930, /* grant_list */
- YYSYMBOL_user_and_role_list = 1931, /* user_and_role_list */
- YYSYMBOL_via_or_with = 1932, /* via_or_with */
- YYSYMBOL_using_or_as = 1933, /* using_or_as */
- YYSYMBOL_grant_user = 1934, /* grant_user */
- YYSYMBOL_auth_expression = 1935, /* auth_expression */
- YYSYMBOL_auth_token = 1936, /* auth_token */
- YYSYMBOL_opt_auth_str = 1937, /* opt_auth_str */
- YYSYMBOL_opt_require_clause = 1938, /* opt_require_clause */
- YYSYMBOL_resource_option = 1939, /* resource_option */
- YYSYMBOL_resource_option_list = 1940, /* resource_option_list */
- YYSYMBOL_opt_resource_options = 1941, /* opt_resource_options */
- YYSYMBOL_opt_grant_options = 1942, /* opt_grant_options */
- YYSYMBOL_opt_grant_option = 1943, /* opt_grant_option */
- YYSYMBOL_grant_option_list = 1944, /* grant_option_list */
- YYSYMBOL_grant_option = 1945, /* grant_option */
- YYSYMBOL_begin_stmt_mariadb = 1946, /* begin_stmt_mariadb */
- YYSYMBOL_1947_247 = 1947, /* $@247 */
- YYSYMBOL_compound_statement = 1948, /* compound_statement */
- YYSYMBOL_opt_not = 1949, /* opt_not */
- YYSYMBOL_opt_work = 1950, /* opt_work */
- YYSYMBOL_opt_chain = 1951, /* opt_chain */
- YYSYMBOL_opt_release = 1952, /* opt_release */
- YYSYMBOL_commit = 1953, /* commit */
- YYSYMBOL_rollback = 1954, /* rollback */
- YYSYMBOL_savepoint = 1955, /* savepoint */
- YYSYMBOL_release = 1956, /* release */
- YYSYMBOL_unit_type_decl = 1957, /* unit_type_decl */
- YYSYMBOL_union_option = 1958, /* union_option */
- YYSYMBOL_query_expression_option = 1959, /* query_expression_option */
- YYSYMBOL_definer_opt = 1960, /* definer_opt */
- YYSYMBOL_no_definer = 1961, /* no_definer */
- YYSYMBOL_definer = 1962, /* definer */
- YYSYMBOL_view_algorithm = 1963, /* view_algorithm */
- YYSYMBOL_opt_view_suid = 1964, /* opt_view_suid */
- YYSYMBOL_view_suid = 1965, /* view_suid */
- YYSYMBOL_view_list_opt = 1966, /* view_list_opt */
- YYSYMBOL_view_list = 1967, /* view_list */
- YYSYMBOL_view_select = 1968, /* view_select */
- YYSYMBOL_1969_248 = 1969, /* $@248 */
- YYSYMBOL_view_check_option = 1970, /* view_check_option */
- YYSYMBOL_trigger_action_order = 1971, /* trigger_action_order */
- YYSYMBOL_trigger_follows_precedes_clause = 1972, /* trigger_follows_precedes_clause */
- YYSYMBOL_trigger_tail = 1973, /* trigger_tail */
- YYSYMBOL_1974_249 = 1974, /* $@249 */
- YYSYMBOL_1975_250 = 1975, /* $@250 */
- YYSYMBOL_1976_251 = 1976, /* $@251 */
- YYSYMBOL_1977_252 = 1977, /* $@252 */
- YYSYMBOL_1978_253 = 1978, /* $@253 */
- YYSYMBOL_sf_return_type = 1979, /* sf_return_type */
- YYSYMBOL_1980_254 = 1980, /* $@254 */
- YYSYMBOL_xa = 1981, /* xa */
- YYSYMBOL_opt_format_xid = 1982, /* opt_format_xid */
- YYSYMBOL_xid = 1983, /* xid */
- YYSYMBOL_begin_or_start = 1984, /* begin_or_start */
- YYSYMBOL_opt_join_or_resume = 1985, /* opt_join_or_resume */
- YYSYMBOL_opt_one_phase = 1986, /* opt_one_phase */
- YYSYMBOL_opt_suspend = 1987, /* opt_suspend */
- YYSYMBOL_1988_255 = 1988, /* $@255 */
- YYSYMBOL_opt_migrate = 1989, /* opt_migrate */
- YYSYMBOL_install = 1990, /* install */
- YYSYMBOL_uninstall = 1991, /* uninstall */
- YYSYMBOL_keep_gcc_happy = 1992, /* keep_gcc_happy */
- YYSYMBOL__empty = 1993, /* _empty */
- YYSYMBOL_statement = 1994, /* statement */
- YYSYMBOL_sp_statement = 1995, /* sp_statement */
- YYSYMBOL_1996_256 = 1996, /* $@256 */
- YYSYMBOL_1997_257 = 1997, /* $@257 */
- YYSYMBOL_1998_258 = 1998, /* $@258 */
- YYSYMBOL_sp_if_then_statements = 1999, /* sp_if_then_statements */
- YYSYMBOL_sp_case_then_statements = 2000, /* sp_case_then_statements */
- YYSYMBOL_reserved_keyword_udt = 2001, /* reserved_keyword_udt */
- YYSYMBOL_keyword_sp_block_section = 2002, /* keyword_sp_block_section */
- YYSYMBOL_keyword_label = 2003, /* keyword_label */
- YYSYMBOL_keyword_sp_decl = 2004, /* keyword_sp_decl */
- YYSYMBOL_opt_truncate_table_storage_clause = 2005, /* opt_truncate_table_storage_clause */
- YYSYMBOL_ident_for_loop_index = 2006, /* ident_for_loop_index */
- YYSYMBOL_row_field_name = 2007, /* row_field_name */
- YYSYMBOL_while_body = 2008, /* while_body */
- YYSYMBOL_2009_259 = 2009, /* $@259 */
- YYSYMBOL_for_loop_statements = 2010, /* for_loop_statements */
- YYSYMBOL_sp_control_label = 2011, /* sp_control_label */
- YYSYMBOL_sp_block_label = 2012, /* sp_block_label */
- YYSYMBOL_remember_end_opt = 2013, /* remember_end_opt */
- YYSYMBOL_sp_opt_default = 2014, /* sp_opt_default */
- YYSYMBOL_sp_opt_inout = 2015, /* sp_opt_inout */
- YYSYMBOL_sp_proc_stmts1_implicit_block = 2016, /* sp_proc_stmts1_implicit_block */
+ YYSYMBOL_SQL_AFTER_GTIDS_SYM = 679, /* SQL_AFTER_GTIDS_SYM */
+ YYSYMBOL_SQL_BEFORE_GTIDS_SYM = 680, /* SQL_BEFORE_GTIDS_SYM */
+ YYSYMBOL_SQL_BUFFER_RESULT = 681, /* SQL_BUFFER_RESULT */
+ YYSYMBOL_SQL_CACHE_SYM = 682, /* SQL_CACHE_SYM */
+ YYSYMBOL_SQL_CALC_FOUND_ROWS = 683, /* SQL_CALC_FOUND_ROWS */
+ YYSYMBOL_SQL_NO_CACHE_SYM = 684, /* SQL_NO_CACHE_SYM */
+ YYSYMBOL_SQL_THREAD = 685, /* SQL_THREAD */
+ YYSYMBOL_STAGE_SYM = 686, /* STAGE_SYM */
+ YYSYMBOL_STARTS_SYM = 687, /* STARTS_SYM */
+ YYSYMBOL_START_SYM = 688, /* START_SYM */
+ YYSYMBOL_STATEMENT_SYM = 689, /* STATEMENT_SYM */
+ YYSYMBOL_STATUS_SYM = 690, /* STATUS_SYM */
+ YYSYMBOL_STOP_SYM = 691, /* STOP_SYM */
+ YYSYMBOL_STORAGE_SYM = 692, /* STORAGE_SYM */
+ YYSYMBOL_STORED_SYM = 693, /* STORED_SYM */
+ YYSYMBOL_STRING_SYM = 694, /* STRING_SYM */
+ YYSYMBOL_SUBCLASS_ORIGIN_SYM = 695, /* SUBCLASS_ORIGIN_SYM */
+ YYSYMBOL_SUBDATE_SYM = 696, /* SUBDATE_SYM */
+ YYSYMBOL_SUBJECT_SYM = 697, /* SUBJECT_SYM */
+ YYSYMBOL_SUBPARTITIONS_SYM = 698, /* SUBPARTITIONS_SYM */
+ YYSYMBOL_SUBPARTITION_SYM = 699, /* SUBPARTITION_SYM */
+ YYSYMBOL_SUPER_SYM = 700, /* SUPER_SYM */
+ YYSYMBOL_SUSPEND_SYM = 701, /* SUSPEND_SYM */
+ YYSYMBOL_SWAPS_SYM = 702, /* SWAPS_SYM */
+ YYSYMBOL_SWITCHES_SYM = 703, /* SWITCHES_SYM */
+ YYSYMBOL_SYSTEM = 704, /* SYSTEM */
+ YYSYMBOL_SYSTEM_TIME_SYM = 705, /* SYSTEM_TIME_SYM */
+ YYSYMBOL_TABLES = 706, /* TABLES */
+ YYSYMBOL_TABLESPACE = 707, /* TABLESPACE */
+ YYSYMBOL_TABLE_CHECKSUM_SYM = 708, /* TABLE_CHECKSUM_SYM */
+ YYSYMBOL_TABLE_NAME_SYM = 709, /* TABLE_NAME_SYM */
+ YYSYMBOL_TEMPORARY = 710, /* TEMPORARY */
+ YYSYMBOL_TEMPTABLE_SYM = 711, /* TEMPTABLE_SYM */
+ YYSYMBOL_TEXT_SYM = 712, /* TEXT_SYM */
+ YYSYMBOL_THAN_SYM = 713, /* THAN_SYM */
+ YYSYMBOL_TIES_SYM = 714, /* TIES_SYM */
+ YYSYMBOL_TIMESTAMP = 715, /* TIMESTAMP */
+ YYSYMBOL_TIMESTAMP_ADD = 716, /* TIMESTAMP_ADD */
+ YYSYMBOL_TIMESTAMP_DIFF = 717, /* TIMESTAMP_DIFF */
+ YYSYMBOL_TIME_SYM = 718, /* TIME_SYM */
+ YYSYMBOL_TRANSACTION_SYM = 719, /* TRANSACTION_SYM */
+ YYSYMBOL_TRANSACTIONAL_SYM = 720, /* TRANSACTIONAL_SYM */
+ YYSYMBOL_THREADS_SYM = 721, /* THREADS_SYM */
+ YYSYMBOL_TRIGGERS_SYM = 722, /* TRIGGERS_SYM */
+ YYSYMBOL_TRIM_ORACLE = 723, /* TRIM_ORACLE */
+ YYSYMBOL_TRUNCATE_SYM = 724, /* TRUNCATE_SYM */
+ YYSYMBOL_TYPE_SYM = 725, /* TYPE_SYM */
+ YYSYMBOL_UDF_RETURNS_SYM = 726, /* UDF_RETURNS_SYM */
+ YYSYMBOL_UNBOUNDED_SYM = 727, /* UNBOUNDED_SYM */
+ YYSYMBOL_UNCOMMITTED_SYM = 728, /* UNCOMMITTED_SYM */
+ YYSYMBOL_UNDEFINED_SYM = 729, /* UNDEFINED_SYM */
+ YYSYMBOL_UNDOFILE_SYM = 730, /* UNDOFILE_SYM */
+ YYSYMBOL_UNDO_BUFFER_SIZE_SYM = 731, /* UNDO_BUFFER_SIZE_SYM */
+ YYSYMBOL_UNICODE_SYM = 732, /* UNICODE_SYM */
+ YYSYMBOL_UNINSTALL_SYM = 733, /* UNINSTALL_SYM */
+ YYSYMBOL_UNKNOWN_SYM = 734, /* UNKNOWN_SYM */
+ YYSYMBOL_UNTIL_SYM = 735, /* UNTIL_SYM */
+ YYSYMBOL_UPGRADE_SYM = 736, /* UPGRADE_SYM */
+ YYSYMBOL_USER_SYM = 737, /* USER_SYM */
+ YYSYMBOL_USE_FRM = 738, /* USE_FRM */
+ YYSYMBOL_VALIDATION_SYM = 739, /* VALIDATION_SYM */
+ YYSYMBOL_VALUE_SYM = 740, /* VALUE_SYM */
+ YYSYMBOL_VARCHAR2_MARIADB_SYM = 741, /* VARCHAR2_MARIADB_SYM */
+ YYSYMBOL_VARCHAR2_ORACLE_SYM = 742, /* VARCHAR2_ORACLE_SYM */
+ YYSYMBOL_VARIABLES = 743, /* VARIABLES */
+ YYSYMBOL_VERSIONING_SYM = 744, /* VERSIONING_SYM */
+ YYSYMBOL_VIA_SYM = 745, /* VIA_SYM */
+ YYSYMBOL_VIEW_SYM = 746, /* VIEW_SYM */
+ YYSYMBOL_VISIBLE_SYM = 747, /* VISIBLE_SYM */
+ YYSYMBOL_VIRTUAL_SYM = 748, /* VIRTUAL_SYM */
+ YYSYMBOL_WAIT_SYM = 749, /* WAIT_SYM */
+ YYSYMBOL_WARNINGS = 750, /* WARNINGS */
+ YYSYMBOL_WEEK_SYM = 751, /* WEEK_SYM */
+ YYSYMBOL_WEIGHT_STRING_SYM = 752, /* WEIGHT_STRING_SYM */
+ YYSYMBOL_WINDOW_SYM = 753, /* WINDOW_SYM */
+ YYSYMBOL_WITHIN = 754, /* WITHIN */
+ YYSYMBOL_WITHOUT = 755, /* WITHOUT */
+ YYSYMBOL_WORK_SYM = 756, /* WORK_SYM */
+ YYSYMBOL_WRAPPER_SYM = 757, /* WRAPPER_SYM */
+ YYSYMBOL_WRITE_SYM = 758, /* WRITE_SYM */
+ YYSYMBOL_X509_SYM = 759, /* X509_SYM */
+ YYSYMBOL_XA_SYM = 760, /* XA_SYM */
+ YYSYMBOL_XML_SYM = 761, /* XML_SYM */
+ YYSYMBOL_YEAR_SYM = 762, /* YEAR_SYM */
+ YYSYMBOL_CONDITIONLESS_JOIN = 763, /* CONDITIONLESS_JOIN */
+ YYSYMBOL_ON_SYM = 764, /* ON_SYM */
+ YYSYMBOL_PREC_BELOW_NOT = 765, /* PREC_BELOW_NOT */
+ YYSYMBOL_766_ = 766, /* '=' */
+ YYSYMBOL_767_ = 767, /* '>' */
+ YYSYMBOL_768_ = 768, /* '<' */
+ YYSYMBOL_769_ = 769, /* '|' */
+ YYSYMBOL_770_ = 770, /* '&' */
+ YYSYMBOL_771_ = 771, /* '-' */
+ YYSYMBOL_772_ = 772, /* '+' */
+ YYSYMBOL_773_ = 773, /* '*' */
+ YYSYMBOL_774_ = 774, /* '/' */
+ YYSYMBOL_775_ = 775, /* '%' */
+ YYSYMBOL_776_ = 776, /* '^' */
+ YYSYMBOL_777_ = 777, /* '~' */
+ YYSYMBOL_SUBQUERY_AS_EXPR = 778, /* SUBQUERY_AS_EXPR */
+ YYSYMBOL_PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 779, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
+ YYSYMBOL_USER = 780, /* USER */
+ YYSYMBOL_PREC_BELOW_SP_OBJECT_TYPE = 781, /* PREC_BELOW_SP_OBJECT_TYPE */
+ YYSYMBOL_PREC_BELOW_CONTRACTION_TOKEN2 = 782, /* PREC_BELOW_CONTRACTION_TOKEN2 */
+ YYSYMBOL_783_ = 783, /* '(' */
+ YYSYMBOL_784_ = 784, /* ')' */
+ YYSYMBOL_EMPTY_FROM_CLAUSE = 785, /* EMPTY_FROM_CLAUSE */
+ YYSYMBOL_786_ = 786, /* ',' */
+ YYSYMBOL_787_ = 787, /* '!' */
+ YYSYMBOL_788_ = 788, /* '{' */
+ YYSYMBOL_789_ = 789, /* '}' */
+ YYSYMBOL_790_ = 790, /* ';' */
+ YYSYMBOL_791_ = 791, /* '.' */
+ YYSYMBOL_YYACCEPT = 792, /* $accept */
+ YYSYMBOL_query = 793, /* query */
+ YYSYMBOL_794_1 = 794, /* $@1 */
+ YYSYMBOL_opt_end_of_input = 795, /* opt_end_of_input */
+ YYSYMBOL_directly_executable_statement = 796, /* directly_executable_statement */
+ YYSYMBOL_verb_clause = 797, /* verb_clause */
+ YYSYMBOL_deallocate = 798, /* deallocate */
+ YYSYMBOL_deallocate_or_drop = 799, /* deallocate_or_drop */
+ YYSYMBOL_prepare = 800, /* prepare */
+ YYSYMBOL_801_2 = 801, /* $@2 */
+ YYSYMBOL_execute = 802, /* execute */
+ YYSYMBOL_803_3 = 803, /* $@3 */
+ YYSYMBOL_804_4 = 804, /* $@4 */
+ YYSYMBOL_execute_using = 805, /* execute_using */
+ YYSYMBOL_806_5 = 806, /* $@5 */
+ YYSYMBOL_execute_params = 807, /* execute_params */
+ YYSYMBOL_help = 808, /* help */
+ YYSYMBOL_809_6 = 809, /* $@6 */
+ YYSYMBOL_change = 810, /* change */
+ YYSYMBOL_811_7 = 811, /* $@7 */
+ YYSYMBOL_master_defs = 812, /* master_defs */
+ YYSYMBOL_master_def = 813, /* master_def */
+ YYSYMBOL_ignore_server_id_list = 814, /* ignore_server_id_list */
+ YYSYMBOL_ignore_server_id = 815, /* ignore_server_id */
+ YYSYMBOL_do_domain_id_list = 816, /* do_domain_id_list */
+ YYSYMBOL_do_domain_id = 817, /* do_domain_id */
+ YYSYMBOL_ignore_domain_id_list = 818, /* ignore_domain_id_list */
+ YYSYMBOL_ignore_domain_id = 819, /* ignore_domain_id */
+ YYSYMBOL_master_file_def = 820, /* master_file_def */
+ YYSYMBOL_optional_connection_name = 821, /* optional_connection_name */
+ YYSYMBOL_connection_name = 822, /* connection_name */
+ YYSYMBOL_optional_for_channel = 823, /* optional_for_channel */
+ YYSYMBOL_for_channel = 824, /* for_channel */
+ YYSYMBOL_create = 825, /* create */
+ YYSYMBOL_826_8 = 826, /* $@8 */
+ YYSYMBOL_827_9 = 827, /* $@9 */
+ YYSYMBOL_828_10 = 828, /* $@10 */
+ YYSYMBOL_829_11 = 829, /* $@11 */
+ YYSYMBOL_830_12 = 830, /* $@12 */
+ YYSYMBOL_831_13 = 831, /* $@13 */
+ YYSYMBOL_832_14 = 832, /* $@14 */
+ YYSYMBOL_833_15 = 833, /* $@15 */
+ YYSYMBOL_834_16 = 834, /* $@16 */
+ YYSYMBOL_835_17 = 835, /* $@17 */
+ YYSYMBOL_836_18 = 836, /* $@18 */
+ YYSYMBOL_837_19 = 837, /* $@19 */
+ YYSYMBOL_838_20 = 838, /* $@20 */
+ YYSYMBOL_839_21 = 839, /* $@21 */
+ YYSYMBOL_840_22 = 840, /* $@22 */
+ YYSYMBOL_841_23 = 841, /* $@23 */
+ YYSYMBOL_842_24 = 842, /* $@24 */
+ YYSYMBOL_opt_sequence = 843, /* opt_sequence */
+ YYSYMBOL_sequence_defs = 844, /* sequence_defs */
+ YYSYMBOL_sequence_def = 845, /* sequence_def */
+ YYSYMBOL_force_lookahead = 846, /* force_lookahead */
+ YYSYMBOL_server_def = 847, /* server_def */
+ YYSYMBOL_848_25 = 848, /* $@25 */
+ YYSYMBOL_server_options_list = 849, /* server_options_list */
+ YYSYMBOL_server_option = 850, /* server_option */
+ YYSYMBOL_event_tail = 851, /* event_tail */
+ YYSYMBOL_852_26 = 852, /* $@26 */
+ YYSYMBOL_ev_schedule_time = 853, /* ev_schedule_time */
+ YYSYMBOL_854_27 = 854, /* $@27 */
+ YYSYMBOL_opt_ev_status = 855, /* opt_ev_status */
+ YYSYMBOL_ev_starts = 856, /* ev_starts */
+ YYSYMBOL_ev_ends = 857, /* ev_ends */
+ YYSYMBOL_opt_ev_on_completion = 858, /* opt_ev_on_completion */
+ YYSYMBOL_ev_on_completion = 859, /* ev_on_completion */
+ YYSYMBOL_opt_ev_comment = 860, /* opt_ev_comment */
+ YYSYMBOL_ev_sql_stmt = 861, /* ev_sql_stmt */
+ YYSYMBOL_862_28 = 862, /* $@28 */
+ YYSYMBOL_clear_privileges = 863, /* clear_privileges */
+ YYSYMBOL_opt_aggregate = 864, /* opt_aggregate */
+ YYSYMBOL_sp_handler = 865, /* sp_handler */
+ YYSYMBOL_sp_handler_package_spec = 866, /* sp_handler_package_spec */
+ YYSYMBOL_sp_handler_package_body = 867, /* sp_handler_package_body */
+ YYSYMBOL_drop_routine = 868, /* drop_routine */
+ YYSYMBOL_sp_name = 869, /* sp_name */
+ YYSYMBOL_sp_a_chistics = 870, /* sp_a_chistics */
+ YYSYMBOL_sp_c_chistics = 871, /* sp_c_chistics */
+ YYSYMBOL_sp_chistic = 872, /* sp_chistic */
+ YYSYMBOL_sp_c_chistic = 873, /* sp_c_chistic */
+ YYSYMBOL_sp_suid = 874, /* sp_suid */
+ YYSYMBOL_call = 875, /* call */
+ YYSYMBOL_876_29 = 876, /* $@29 */
+ YYSYMBOL_877_30 = 877, /* $@30 */
+ YYSYMBOL_878_31 = 878, /* $@31 */
+ YYSYMBOL_opt_sp_cparam_list = 879, /* opt_sp_cparam_list */
+ YYSYMBOL_opt_sp_cparams = 880, /* opt_sp_cparams */
+ YYSYMBOL_sp_cparams = 881, /* sp_cparams */
+ YYSYMBOL_sp_fdparam_list = 882, /* sp_fdparam_list */
+ YYSYMBOL_883_32 = 883, /* $@32 */
+ YYSYMBOL_sp_fdparams = 884, /* sp_fdparams */
+ YYSYMBOL_sp_param_name = 885, /* sp_param_name */
+ YYSYMBOL_sp_pdparam_list = 886, /* sp_pdparam_list */
+ YYSYMBOL_sp_pdparams = 887, /* sp_pdparams */
+ YYSYMBOL_sp_parameter_type = 888, /* sp_parameter_type */
+ YYSYMBOL_sp_parenthesized_pdparam_list = 889, /* sp_parenthesized_pdparam_list */
+ YYSYMBOL_890_33 = 890, /* $@33 */
+ YYSYMBOL_sp_parenthesized_fdparam_list = 891, /* sp_parenthesized_fdparam_list */
+ YYSYMBOL_sp_proc_stmts = 892, /* sp_proc_stmts */
+ YYSYMBOL_sp_proc_stmts1 = 893, /* sp_proc_stmts1 */
+ YYSYMBOL_optionally_qualified_column_ident = 894, /* optionally_qualified_column_ident */
+ YYSYMBOL_row_field_definition = 895, /* row_field_definition */
+ YYSYMBOL_row_field_definition_list = 896, /* row_field_definition_list */
+ YYSYMBOL_row_type_body = 897, /* row_type_body */
+ YYSYMBOL_sp_decl_idents_init_vars = 898, /* sp_decl_idents_init_vars */
+ YYSYMBOL_sp_decl_variable_list = 899, /* sp_decl_variable_list */
+ YYSYMBOL_900_34 = 900, /* $@34 */
+ YYSYMBOL_sp_decl_handler = 901, /* sp_decl_handler */
+ YYSYMBOL_902_35 = 902, /* $@35 */
+ YYSYMBOL_opt_parenthesized_cursor_formal_parameters = 903, /* opt_parenthesized_cursor_formal_parameters */
+ YYSYMBOL_sp_cursor_stmt_lex = 904, /* sp_cursor_stmt_lex */
+ YYSYMBOL_sp_cursor_stmt = 905, /* sp_cursor_stmt */
+ YYSYMBOL_906_36 = 906, /* $@36 */
+ YYSYMBOL_sp_handler_type = 907, /* sp_handler_type */
+ YYSYMBOL_sp_hcond_list = 908, /* sp_hcond_list */
+ YYSYMBOL_sp_hcond_element = 909, /* sp_hcond_element */
+ YYSYMBOL_sp_cond = 910, /* sp_cond */
+ YYSYMBOL_sqlstate = 911, /* sqlstate */
+ YYSYMBOL_opt_value = 912, /* opt_value */
+ YYSYMBOL_sp_hcond = 913, /* sp_hcond */
+ YYSYMBOL_raise_stmt_oracle = 914, /* raise_stmt_oracle */
+ YYSYMBOL_signal_stmt = 915, /* signal_stmt */
+ YYSYMBOL_signal_value = 916, /* signal_value */
+ YYSYMBOL_opt_signal_value = 917, /* opt_signal_value */
+ YYSYMBOL_opt_set_signal_information = 918, /* opt_set_signal_information */
+ YYSYMBOL_signal_information_item_list = 919, /* signal_information_item_list */
+ YYSYMBOL_signal_allowed_expr = 920, /* signal_allowed_expr */
+ YYSYMBOL_signal_condition_information_item_name = 921, /* signal_condition_information_item_name */
+ YYSYMBOL_resignal_stmt = 922, /* resignal_stmt */
+ YYSYMBOL_get_diagnostics = 923, /* get_diagnostics */
+ YYSYMBOL_which_area = 924, /* which_area */
+ YYSYMBOL_diagnostics_information = 925, /* diagnostics_information */
+ YYSYMBOL_statement_information = 926, /* statement_information */
+ YYSYMBOL_statement_information_item = 927, /* statement_information_item */
+ YYSYMBOL_simple_target_specification = 928, /* simple_target_specification */
+ YYSYMBOL_statement_information_item_name = 929, /* statement_information_item_name */
+ YYSYMBOL_condition_number = 930, /* condition_number */
+ YYSYMBOL_condition_information = 931, /* condition_information */
+ YYSYMBOL_condition_information_item = 932, /* condition_information_item */
+ YYSYMBOL_condition_information_item_name = 933, /* condition_information_item_name */
+ YYSYMBOL_sp_decl_ident = 934, /* sp_decl_ident */
+ YYSYMBOL_sp_decl_idents = 935, /* sp_decl_idents */
+ YYSYMBOL_sp_proc_stmt_if = 936, /* sp_proc_stmt_if */
+ YYSYMBOL_937_37 = 937, /* $@37 */
+ YYSYMBOL_sp_proc_stmt_statement = 938, /* sp_proc_stmt_statement */
+ YYSYMBOL_939_38 = 939, /* $@38 */
+ YYSYMBOL_RETURN_ALLMODES_SYM = 940, /* RETURN_ALLMODES_SYM */
+ YYSYMBOL_sp_proc_stmt_return = 941, /* sp_proc_stmt_return */
+ YYSYMBOL_942_39 = 942, /* $@39 */
+ YYSYMBOL_sp_proc_stmt_exit_oracle = 943, /* sp_proc_stmt_exit_oracle */
+ YYSYMBOL_944_40 = 944, /* $@40 */
+ YYSYMBOL_945_41 = 945, /* $@41 */
+ YYSYMBOL_sp_proc_stmt_continue_oracle = 946, /* sp_proc_stmt_continue_oracle */
+ YYSYMBOL_947_42 = 947, /* $@42 */
+ YYSYMBOL_948_43 = 948, /* $@43 */
+ YYSYMBOL_sp_proc_stmt_leave = 949, /* sp_proc_stmt_leave */
+ YYSYMBOL_sp_proc_stmt_iterate = 950, /* sp_proc_stmt_iterate */
+ YYSYMBOL_sp_proc_stmt_goto_oracle = 951, /* sp_proc_stmt_goto_oracle */
+ YYSYMBOL_expr_lex = 952, /* expr_lex */
+ YYSYMBOL_953_44 = 953, /* @44 */
+ YYSYMBOL_assignment_source_lex = 954, /* assignment_source_lex */
+ YYSYMBOL_assignment_source_expr = 955, /* assignment_source_expr */
+ YYSYMBOL_956_45 = 956, /* $@45 */
+ YYSYMBOL_for_loop_bound_expr = 957, /* for_loop_bound_expr */
+ YYSYMBOL_958_46 = 958, /* $@46 */
+ YYSYMBOL_cursor_actual_parameters = 959, /* cursor_actual_parameters */
+ YYSYMBOL_opt_parenthesized_cursor_actual_parameters = 960, /* opt_parenthesized_cursor_actual_parameters */
+ YYSYMBOL_sp_proc_stmt_with_cursor = 961, /* sp_proc_stmt_with_cursor */
+ YYSYMBOL_sp_proc_stmt_open = 962, /* sp_proc_stmt_open */
+ YYSYMBOL_sp_proc_stmt_fetch_head = 963, /* sp_proc_stmt_fetch_head */
+ YYSYMBOL_sp_proc_stmt_fetch = 964, /* sp_proc_stmt_fetch */
+ YYSYMBOL_sp_proc_stmt_close = 965, /* sp_proc_stmt_close */
+ YYSYMBOL_sp_fetch_list = 966, /* sp_fetch_list */
+ YYSYMBOL_sp_if = 967, /* sp_if */
+ YYSYMBOL_968_47 = 968, /* $@47 */
+ YYSYMBOL_969_48 = 969, /* $@48 */
+ YYSYMBOL_sp_elseifs = 970, /* sp_elseifs */
+ YYSYMBOL_case_stmt_specification = 971, /* case_stmt_specification */
+ YYSYMBOL_972_49 = 972, /* $@49 */
+ YYSYMBOL_case_stmt_body = 973, /* case_stmt_body */
+ YYSYMBOL_974_50 = 974, /* $@50 */
+ YYSYMBOL_simple_when_clause_list = 975, /* simple_when_clause_list */
+ YYSYMBOL_searched_when_clause_list = 976, /* searched_when_clause_list */
+ YYSYMBOL_simple_when_clause = 977, /* simple_when_clause */
+ YYSYMBOL_978_51 = 978, /* $@51 */
+ YYSYMBOL_searched_when_clause = 979, /* searched_when_clause */
+ YYSYMBOL_980_52 = 980, /* $@52 */
+ YYSYMBOL_else_clause_opt = 981, /* else_clause_opt */
+ YYSYMBOL_sp_opt_label = 982, /* sp_opt_label */
+ YYSYMBOL_opt_sp_for_loop_direction = 983, /* opt_sp_for_loop_direction */
+ YYSYMBOL_sp_for_loop_index_and_bounds = 984, /* sp_for_loop_index_and_bounds */
+ YYSYMBOL_sp_for_loop_bounds = 985, /* sp_for_loop_bounds */
+ YYSYMBOL_loop_body = 986, /* loop_body */
+ YYSYMBOL_repeat_body = 987, /* repeat_body */
+ YYSYMBOL_pop_sp_loop_label = 988, /* pop_sp_loop_label */
+ YYSYMBOL_sp_labeled_control = 989, /* sp_labeled_control */
+ YYSYMBOL_990_53 = 990, /* $@53 */
+ YYSYMBOL_991_54 = 991, /* $@54 */
+ YYSYMBOL_992_55 = 992, /* $@55 */
+ YYSYMBOL_993_56 = 993, /* $@56 */
+ YYSYMBOL_994_57 = 994, /* $@57 */
+ YYSYMBOL_995_58 = 995, /* $@58 */
+ YYSYMBOL_sp_unlabeled_control = 996, /* sp_unlabeled_control */
+ YYSYMBOL_997_59 = 997, /* $@59 */
+ YYSYMBOL_998_60 = 998, /* $@60 */
+ YYSYMBOL_999_61 = 999, /* $@61 */
+ YYSYMBOL_1000_62 = 1000, /* $@62 */
+ YYSYMBOL_1001_63 = 1001, /* $@63 */
+ YYSYMBOL_trg_action_time = 1002, /* trg_action_time */
+ YYSYMBOL_trg_event = 1003, /* trg_event */
+ YYSYMBOL_create_body = 1004, /* create_body */
+ YYSYMBOL_1005_64 = 1005, /* $@64 */
+ YYSYMBOL_create_like = 1006, /* create_like */
+ YYSYMBOL_opt_create_select = 1007, /* opt_create_select */
+ YYSYMBOL_create_select_query_expression = 1008, /* create_select_query_expression */
+ YYSYMBOL_opt_create_partitioning = 1009, /* opt_create_partitioning */
+ YYSYMBOL_opt_partitioning = 1010, /* opt_partitioning */
+ YYSYMBOL_partitioning = 1011, /* partitioning */
+ YYSYMBOL_1012_65 = 1012, /* $@65 */
+ YYSYMBOL_have_partitioning = 1013, /* have_partitioning */
+ YYSYMBOL_partition_entry = 1014, /* partition_entry */
+ YYSYMBOL_1015_66 = 1015, /* $@66 */
+ YYSYMBOL_partition = 1016, /* partition */
+ YYSYMBOL_1017_67 = 1017, /* $@67 */
+ YYSYMBOL_part_type_def = 1018, /* part_type_def */
+ YYSYMBOL_1019_68 = 1019, /* $@68 */
+ YYSYMBOL_1020_69 = 1020, /* $@69 */
+ YYSYMBOL_1021_70 = 1021, /* $@70 */
+ YYSYMBOL_opt_linear = 1022, /* opt_linear */
+ YYSYMBOL_opt_key_algo = 1023, /* opt_key_algo */
+ YYSYMBOL_part_field_list = 1024, /* part_field_list */
+ YYSYMBOL_part_field_item_list = 1025, /* part_field_item_list */
+ YYSYMBOL_part_field_item = 1026, /* part_field_item */
+ YYSYMBOL_part_column_list = 1027, /* part_column_list */
+ YYSYMBOL_part_func = 1028, /* part_func */
+ YYSYMBOL_sub_part_func = 1029, /* sub_part_func */
+ YYSYMBOL_opt_num_parts = 1030, /* opt_num_parts */
+ YYSYMBOL_opt_sub_part = 1031, /* opt_sub_part */
+ YYSYMBOL_1032_71 = 1032, /* $@71 */
+ YYSYMBOL_1033_72 = 1033, /* $@72 */
+ YYSYMBOL_sub_part_field_list = 1034, /* sub_part_field_list */
+ YYSYMBOL_sub_part_field_item = 1035, /* sub_part_field_item */
+ YYSYMBOL_part_func_expr = 1036, /* part_func_expr */
+ YYSYMBOL_opt_num_subparts = 1037, /* opt_num_subparts */
+ YYSYMBOL_part_defs = 1038, /* part_defs */
+ YYSYMBOL_part_def_list = 1039, /* part_def_list */
+ YYSYMBOL_opt_partition = 1040, /* opt_partition */
+ YYSYMBOL_part_definition = 1041, /* part_definition */
+ YYSYMBOL_1042_73 = 1042, /* $@73 */
+ YYSYMBOL_part_name = 1043, /* part_name */
+ YYSYMBOL_opt_part_values = 1044, /* opt_part_values */
+ YYSYMBOL_1045_74 = 1045, /* $@74 */
+ YYSYMBOL_1046_75 = 1046, /* $@75 */
+ YYSYMBOL_part_func_max = 1047, /* part_func_max */
+ YYSYMBOL_part_values_in = 1048, /* part_values_in */
+ YYSYMBOL_part_value_list = 1049, /* part_value_list */
+ YYSYMBOL_part_value_item = 1050, /* part_value_item */
+ YYSYMBOL_1051_76 = 1051, /* $@76 */
+ YYSYMBOL_1052_77 = 1052, /* $@77 */
+ YYSYMBOL_part_value_item_list = 1053, /* part_value_item_list */
+ YYSYMBOL_part_value_expr_item = 1054, /* part_value_expr_item */
+ YYSYMBOL_opt_sub_partition = 1055, /* opt_sub_partition */
+ YYSYMBOL_sub_part_list = 1056, /* sub_part_list */
+ YYSYMBOL_sub_part_definition = 1057, /* sub_part_definition */
+ YYSYMBOL_1058_78 = 1058, /* $@78 */
+ YYSYMBOL_sub_name = 1059, /* sub_name */
+ YYSYMBOL_opt_part_options = 1060, /* opt_part_options */
+ YYSYMBOL_part_option_list = 1061, /* part_option_list */
+ YYSYMBOL_part_option = 1062, /* part_option */
+ YYSYMBOL_opt_subpart_options = 1063, /* opt_subpart_options */
+ YYSYMBOL_subpart_option_list = 1064, /* subpart_option_list */
+ YYSYMBOL_server_part_option = 1065, /* server_part_option */
+ YYSYMBOL_opt_versioning_rotation = 1066, /* opt_versioning_rotation */
+ YYSYMBOL_1067_79 = 1067, /* $@79 */
+ YYSYMBOL_opt_versioning_interval_start = 1068, /* opt_versioning_interval_start */
+ YYSYMBOL_opt_vers_auto_part = 1069, /* opt_vers_auto_part */
+ YYSYMBOL_opt_as = 1070, /* opt_as */
+ YYSYMBOL_opt_create_database_options = 1071, /* opt_create_database_options */
+ YYSYMBOL_create_database_options = 1072, /* create_database_options */
+ YYSYMBOL_create_database_option = 1073, /* create_database_option */
+ YYSYMBOL_opt_if_not_exists_table_element = 1074, /* opt_if_not_exists_table_element */
+ YYSYMBOL_opt_if_not_exists = 1075, /* opt_if_not_exists */
+ YYSYMBOL_create_or_replace = 1076, /* create_or_replace */
+ YYSYMBOL_opt_create_table_options = 1077, /* opt_create_table_options */
+ YYSYMBOL_create_table_options_space_separated = 1078, /* create_table_options_space_separated */
+ YYSYMBOL_create_table_options = 1079, /* create_table_options */
+ YYSYMBOL_create_table_option = 1080, /* create_table_option */
+ YYSYMBOL_1081_80 = 1081, /* $@80 */
+ YYSYMBOL_engine_defined_option = 1082, /* engine_defined_option */
+ YYSYMBOL_ident_options = 1083, /* ident_options */
+ YYSYMBOL_keyword_options = 1084, /* keyword_options */
+ YYSYMBOL_opt_versioning_option = 1085, /* opt_versioning_option */
+ YYSYMBOL_versioning_option = 1086, /* versioning_option */
+ YYSYMBOL_default_charset = 1087, /* default_charset */
+ YYSYMBOL_default_collation = 1088, /* default_collation */
+ YYSYMBOL_storage_engines = 1089, /* storage_engines */
+ YYSYMBOL_known_storage_engines = 1090, /* known_storage_engines */
+ YYSYMBOL_row_types = 1091, /* row_types */
+ YYSYMBOL_merge_insert_types = 1092, /* merge_insert_types */
+ YYSYMBOL_udf_type = 1093, /* udf_type */
+ YYSYMBOL_create_field_list = 1094, /* create_field_list */
+ YYSYMBOL_create_field_list_parens = 1095, /* create_field_list_parens */
+ YYSYMBOL_field_list = 1096, /* field_list */
+ YYSYMBOL_field_list_item = 1097, /* field_list_item */
+ YYSYMBOL_column_def = 1098, /* column_def */
+ YYSYMBOL_key_def = 1099, /* key_def */
+ YYSYMBOL_1100_81 = 1100, /* $@81 */
+ YYSYMBOL_1101_82 = 1101, /* $@82 */
+ YYSYMBOL_1102_83 = 1102, /* $@83 */
+ YYSYMBOL_1103_84 = 1103, /* $@84 */
+ YYSYMBOL_1104_85 = 1104, /* $@85 */
+ YYSYMBOL_1105_86 = 1105, /* $@86 */
+ YYSYMBOL_1106_87 = 1106, /* $@87 */
+ YYSYMBOL_constraint_def = 1107, /* constraint_def */
+ YYSYMBOL_period_for_system_time = 1108, /* period_for_system_time */
+ YYSYMBOL_period_for_application_time = 1109, /* period_for_application_time */
+ YYSYMBOL_opt_check_constraint = 1110, /* opt_check_constraint */
+ YYSYMBOL_check_constraint = 1111, /* check_constraint */
+ YYSYMBOL_opt_constraint_no_id = 1112, /* opt_constraint_no_id */
+ YYSYMBOL_opt_constraint = 1113, /* opt_constraint */
+ YYSYMBOL_constraint = 1114, /* constraint */
+ YYSYMBOL_field_spec = 1115, /* field_spec */
+ YYSYMBOL_1116_88 = 1116, /* @88 */
+ YYSYMBOL_field_type_or_serial = 1117, /* field_type_or_serial */
+ YYSYMBOL_1118_89 = 1118, /* $@89 */
+ YYSYMBOL_1119_90 = 1119, /* $@90 */
+ YYSYMBOL_opt_serial_attribute = 1120, /* opt_serial_attribute */
+ YYSYMBOL_opt_serial_attribute_list = 1121, /* opt_serial_attribute_list */
+ YYSYMBOL_opt_asrow_attribute = 1122, /* opt_asrow_attribute */
+ YYSYMBOL_opt_asrow_attribute_list = 1123, /* opt_asrow_attribute_list */
+ YYSYMBOL_field_def = 1124, /* field_def */
+ YYSYMBOL_1125_91 = 1125, /* $@91 */
+ YYSYMBOL_opt_generated_always = 1126, /* opt_generated_always */
+ YYSYMBOL_vcol_opt_specifier = 1127, /* vcol_opt_specifier */
+ YYSYMBOL_vcol_opt_attribute = 1128, /* vcol_opt_attribute */
+ YYSYMBOL_vcol_opt_attribute_list = 1129, /* vcol_opt_attribute_list */
+ YYSYMBOL_vcol_attribute = 1130, /* vcol_attribute */
+ YYSYMBOL_parse_vcol_expr = 1131, /* parse_vcol_expr */
+ YYSYMBOL_1132_92 = 1132, /* $@92 */
+ YYSYMBOL_parenthesized_expr = 1133, /* parenthesized_expr */
+ YYSYMBOL_virtual_column_func = 1134, /* virtual_column_func */
+ YYSYMBOL_expr_or_literal = 1135, /* expr_or_literal */
+ YYSYMBOL_column_default_expr = 1136, /* column_default_expr */
+ YYSYMBOL_field_type = 1137, /* field_type */
+ YYSYMBOL_qualified_field_type = 1138, /* qualified_field_type */
+ YYSYMBOL_udt_name = 1139, /* udt_name */
+ YYSYMBOL_field_type_all = 1140, /* field_type_all */
+ YYSYMBOL_field_type_numeric = 1141, /* field_type_numeric */
+ YYSYMBOL_opt_binary_and_compression = 1142, /* opt_binary_and_compression */
+ YYSYMBOL_field_type_string = 1143, /* field_type_string */
+ YYSYMBOL_field_type_temporal = 1144, /* field_type_temporal */
+ YYSYMBOL_field_type_lob = 1145, /* field_type_lob */
+ YYSYMBOL_field_type_misc = 1146, /* field_type_misc */
+ YYSYMBOL_char = 1147, /* char */
+ YYSYMBOL_nchar = 1148, /* nchar */
+ YYSYMBOL_varchar = 1149, /* varchar */
+ YYSYMBOL_nvarchar = 1150, /* nvarchar */
+ YYSYMBOL_int_type = 1151, /* int_type */
+ YYSYMBOL_real_type = 1152, /* real_type */
+ YYSYMBOL_srid_option = 1153, /* srid_option */
+ YYSYMBOL_float_options = 1154, /* float_options */
+ YYSYMBOL_precision = 1155, /* precision */
+ YYSYMBOL_field_options = 1156, /* field_options */
+ YYSYMBOL_last_field_options = 1157, /* last_field_options */
+ YYSYMBOL_field_length_str = 1158, /* field_length_str */
+ YYSYMBOL_field_length = 1159, /* field_length */
+ YYSYMBOL_field_scale = 1160, /* field_scale */
+ YYSYMBOL_opt_field_length = 1161, /* opt_field_length */
+ YYSYMBOL_opt_field_scale = 1162, /* opt_field_scale */
+ YYSYMBOL_opt_precision = 1163, /* opt_precision */
+ YYSYMBOL_attribute_list = 1164, /* attribute_list */
+ YYSYMBOL_attribute = 1165, /* attribute */
+ YYSYMBOL_opt_compression_method = 1166, /* opt_compression_method */
+ YYSYMBOL_opt_compressed = 1167, /* opt_compressed */
+ YYSYMBOL_opt_enable = 1168, /* opt_enable */
+ YYSYMBOL_compressed = 1169, /* compressed */
+ YYSYMBOL_compressed_deprecated_data_type_attribute = 1170, /* compressed_deprecated_data_type_attribute */
+ YYSYMBOL_compressed_deprecated_column_attribute = 1171, /* compressed_deprecated_column_attribute */
+ YYSYMBOL_asrow_attribute = 1172, /* asrow_attribute */
+ YYSYMBOL_serial_attribute = 1173, /* serial_attribute */
+ YYSYMBOL_with_or_without_system = 1174, /* with_or_without_system */
+ YYSYMBOL_charset = 1175, /* charset */
+ YYSYMBOL_charset_name = 1176, /* charset_name */
+ YYSYMBOL_charset_name_or_default = 1177, /* charset_name_or_default */
+ YYSYMBOL_opt_load_data_charset = 1178, /* opt_load_data_charset */
+ YYSYMBOL_old_or_new_charset_name = 1179, /* old_or_new_charset_name */
+ YYSYMBOL_old_or_new_charset_name_or_default = 1180, /* old_or_new_charset_name_or_default */
+ YYSYMBOL_collation_name = 1181, /* collation_name */
+ YYSYMBOL_collation_name_or_default = 1182, /* collation_name_or_default */
+ YYSYMBOL_opt_default = 1183, /* opt_default */
+ YYSYMBOL_charset_or_alias = 1184, /* charset_or_alias */
+ YYSYMBOL_opt_binary = 1185, /* opt_binary */
+ YYSYMBOL_binary = 1186, /* binary */
+ YYSYMBOL_opt_bin_mod = 1187, /* opt_bin_mod */
+ YYSYMBOL_ws_nweights = 1188, /* ws_nweights */
+ YYSYMBOL_1189_93 = 1189, /* $@93 */
+ YYSYMBOL_ws_level_flag_desc = 1190, /* ws_level_flag_desc */
+ YYSYMBOL_ws_level_flag_reverse = 1191, /* ws_level_flag_reverse */
+ YYSYMBOL_ws_level_flags = 1192, /* ws_level_flags */
+ YYSYMBOL_ws_level_number = 1193, /* ws_level_number */
+ YYSYMBOL_ws_level_list_item = 1194, /* ws_level_list_item */
+ YYSYMBOL_ws_level_list = 1195, /* ws_level_list */
+ YYSYMBOL_ws_level_range = 1196, /* ws_level_range */
+ YYSYMBOL_ws_level_list_or_range = 1197, /* ws_level_list_or_range */
+ YYSYMBOL_opt_ws_levels = 1198, /* opt_ws_levels */
+ YYSYMBOL_opt_primary = 1199, /* opt_primary */
+ YYSYMBOL_references = 1200, /* references */
+ YYSYMBOL_opt_ref_list = 1201, /* opt_ref_list */
+ YYSYMBOL_ref_list = 1202, /* ref_list */
+ YYSYMBOL_opt_match_clause = 1203, /* opt_match_clause */
+ YYSYMBOL_opt_on_update_delete = 1204, /* opt_on_update_delete */
+ YYSYMBOL_delete_option = 1205, /* delete_option */
+ YYSYMBOL_constraint_key_type = 1206, /* constraint_key_type */
+ YYSYMBOL_key_or_index = 1207, /* key_or_index */
+ YYSYMBOL_opt_key_or_index = 1208, /* opt_key_or_index */
+ YYSYMBOL_keys_or_index = 1209, /* keys_or_index */
+ YYSYMBOL_fulltext = 1210, /* fulltext */
+ YYSYMBOL_spatial = 1211, /* spatial */
+ YYSYMBOL_normal_key_options = 1212, /* normal_key_options */
+ YYSYMBOL_fulltext_key_options = 1213, /* fulltext_key_options */
+ YYSYMBOL_spatial_key_options = 1214, /* spatial_key_options */
+ YYSYMBOL_normal_key_opts = 1215, /* normal_key_opts */
+ YYSYMBOL_spatial_key_opts = 1216, /* spatial_key_opts */
+ YYSYMBOL_fulltext_key_opts = 1217, /* fulltext_key_opts */
+ YYSYMBOL_opt_USING_key_algorithm = 1218, /* opt_USING_key_algorithm */
+ YYSYMBOL_opt_key_algorithm_clause = 1219, /* opt_key_algorithm_clause */
+ YYSYMBOL_key_using_alg = 1220, /* key_using_alg */
+ YYSYMBOL_all_key_opt = 1221, /* all_key_opt */
+ YYSYMBOL_normal_key_opt = 1222, /* normal_key_opt */
+ YYSYMBOL_spatial_key_opt = 1223, /* spatial_key_opt */
+ YYSYMBOL_fulltext_key_opt = 1224, /* fulltext_key_opt */
+ YYSYMBOL_btree_or_rtree = 1225, /* btree_or_rtree */
+ YYSYMBOL_ignorability = 1226, /* ignorability */
+ YYSYMBOL_key_list = 1227, /* key_list */
+ YYSYMBOL_opt_without_overlaps = 1228, /* opt_without_overlaps */
+ YYSYMBOL_key_part = 1229, /* key_part */
+ YYSYMBOL_opt_ident = 1230, /* opt_ident */
+ YYSYMBOL_string_list = 1231, /* string_list */
+ YYSYMBOL_alter = 1232, /* alter */
+ YYSYMBOL_1233_94 = 1233, /* $@94 */
+ YYSYMBOL_1234_95 = 1234, /* $@95 */
+ YYSYMBOL_1235_96 = 1235, /* $@96 */
+ YYSYMBOL_1236_97 = 1236, /* $@97 */
+ YYSYMBOL_1237_98 = 1237, /* $@98 */
+ YYSYMBOL_1238_99 = 1238, /* $@99 */
+ YYSYMBOL_1239_100 = 1239, /* $@100 */
+ YYSYMBOL_1240_101 = 1240, /* $@101 */
+ YYSYMBOL_1241_102 = 1241, /* $@102 */
+ YYSYMBOL_1242_103 = 1242, /* $@103 */
+ YYSYMBOL_1243_104 = 1243, /* $@104 */
+ YYSYMBOL_1244_105 = 1244, /* $@105 */
+ YYSYMBOL_1245_106 = 1245, /* $@106 */
+ YYSYMBOL_account_locking_option = 1246, /* account_locking_option */
+ YYSYMBOL_opt_password_expire_option = 1247, /* opt_password_expire_option */
+ YYSYMBOL_opt_account_locking_and_opt_password_expiration = 1248, /* opt_account_locking_and_opt_password_expiration */
+ YYSYMBOL_ev_alter_on_schedule_completion = 1249, /* ev_alter_on_schedule_completion */
+ YYSYMBOL_opt_ev_rename_to = 1250, /* opt_ev_rename_to */
+ YYSYMBOL_opt_ev_sql_stmt = 1251, /* opt_ev_sql_stmt */
+ YYSYMBOL_ident_or_empty = 1252, /* ident_or_empty */
+ YYSYMBOL_alter_commands = 1253, /* alter_commands */
+ YYSYMBOL_1254_107 = 1254, /* $@107 */
+ YYSYMBOL_1255_108 = 1255, /* $@108 */
+ YYSYMBOL_1256_109 = 1256, /* $@109 */
+ YYSYMBOL_1257_110 = 1257, /* $@110 */
+ YYSYMBOL_remove_partitioning = 1258, /* remove_partitioning */
+ YYSYMBOL_all_or_alt_part_name_list = 1259, /* all_or_alt_part_name_list */
+ YYSYMBOL_add_partition_rule = 1260, /* add_partition_rule */
+ YYSYMBOL_1261_111 = 1261, /* $@111 */
+ YYSYMBOL_add_part_extra = 1262, /* add_part_extra */
+ YYSYMBOL_reorg_partition_rule = 1263, /* reorg_partition_rule */
+ YYSYMBOL_1264_112 = 1264, /* $@112 */
+ YYSYMBOL_reorg_parts_rule = 1265, /* reorg_parts_rule */
+ YYSYMBOL_1266_113 = 1266, /* $@113 */
+ YYSYMBOL_alt_part_name_list = 1267, /* alt_part_name_list */
+ YYSYMBOL_alt_part_name_item = 1268, /* alt_part_name_item */
+ YYSYMBOL_alter_list = 1269, /* alter_list */
+ YYSYMBOL_add_column = 1270, /* add_column */
+ YYSYMBOL_alter_list_item = 1271, /* alter_list_item */
+ YYSYMBOL_opt_without_validation = 1272, /* opt_without_validation */
+ YYSYMBOL_opt_index_lock_algorithm = 1273, /* opt_index_lock_algorithm */
+ YYSYMBOL_alter_algorithm_option = 1274, /* alter_algorithm_option */
+ YYSYMBOL_alter_lock_option = 1275, /* alter_lock_option */
+ YYSYMBOL_opt_column = 1276, /* opt_column */
+ YYSYMBOL_opt_ignore = 1277, /* opt_ignore */
+ YYSYMBOL_alter_options = 1278, /* alter_options */
+ YYSYMBOL_1279_114 = 1279, /* $@114 */
+ YYSYMBOL_alter_options_part2 = 1280, /* alter_options_part2 */
+ YYSYMBOL_alter_option_list = 1281, /* alter_option_list */
+ YYSYMBOL_alter_option = 1282, /* alter_option */
+ YYSYMBOL_opt_restrict = 1283, /* opt_restrict */
+ YYSYMBOL_opt_place = 1284, /* opt_place */
+ YYSYMBOL_opt_to = 1285, /* opt_to */
+ YYSYMBOL_slave = 1286, /* slave */
+ YYSYMBOL_1287_115 = 1287, /* $@115 */
+ YYSYMBOL_1288_116 = 1288, /* $@116 */
+ YYSYMBOL_start = 1289, /* start */
+ YYSYMBOL_opt_start_transaction_option_list = 1290, /* opt_start_transaction_option_list */
+ YYSYMBOL_start_transaction_option_list = 1291, /* start_transaction_option_list */
+ YYSYMBOL_start_transaction_option = 1292, /* start_transaction_option */
+ YYSYMBOL_slave_thread_opts = 1293, /* slave_thread_opts */
+ YYSYMBOL_1294_117 = 1294, /* $@117 */
+ YYSYMBOL_slave_thread_opt_list = 1295, /* slave_thread_opt_list */
+ YYSYMBOL_slave_thread_opt = 1296, /* slave_thread_opt */
+ YYSYMBOL_slave_until = 1297, /* slave_until */
+ YYSYMBOL_slave_until_opts = 1298, /* slave_until_opts */
+ YYSYMBOL_checksum = 1299, /* checksum */
+ YYSYMBOL_1300_118 = 1300, /* $@118 */
+ YYSYMBOL_opt_checksum_type = 1301, /* opt_checksum_type */
+ YYSYMBOL_repair_table_or_view = 1302, /* repair_table_or_view */
+ YYSYMBOL_1303_119 = 1303, /* $@119 */
+ YYSYMBOL_repair = 1304, /* repair */
+ YYSYMBOL_1305_120 = 1305, /* $@120 */
+ YYSYMBOL_opt_mi_repair_type = 1306, /* opt_mi_repair_type */
+ YYSYMBOL_mi_repair_types = 1307, /* mi_repair_types */
+ YYSYMBOL_mi_repair_type = 1308, /* mi_repair_type */
+ YYSYMBOL_opt_view_repair_type = 1309, /* opt_view_repair_type */
+ YYSYMBOL_analyze = 1310, /* analyze */
+ YYSYMBOL_1311_121 = 1311, /* $@121 */
+ YYSYMBOL_analyze_table_list = 1312, /* analyze_table_list */
+ YYSYMBOL_analyze_table_elem_spec = 1313, /* analyze_table_elem_spec */
+ YYSYMBOL_opt_persistent_stat_clause = 1314, /* opt_persistent_stat_clause */
+ YYSYMBOL_persistent_stat_spec = 1315, /* persistent_stat_spec */
+ YYSYMBOL_persistent_column_stat_spec = 1316, /* persistent_column_stat_spec */
+ YYSYMBOL_1317_122 = 1317, /* $@122 */
+ YYSYMBOL_persistent_index_stat_spec = 1318, /* persistent_index_stat_spec */
+ YYSYMBOL_1319_123 = 1319, /* $@123 */
+ YYSYMBOL_table_column_list = 1320, /* table_column_list */
+ YYSYMBOL_table_index_list = 1321, /* table_index_list */
+ YYSYMBOL_table_index_name = 1322, /* table_index_name */
+ YYSYMBOL_binlog_base64_event = 1323, /* binlog_base64_event */
+ YYSYMBOL_check_view_or_table = 1324, /* check_view_or_table */
+ YYSYMBOL_1325_124 = 1325, /* $@124 */
+ YYSYMBOL_check = 1326, /* check */
+ YYSYMBOL_1327_125 = 1327, /* $@125 */
+ YYSYMBOL_opt_mi_check_type = 1328, /* opt_mi_check_type */
+ YYSYMBOL_mi_check_types = 1329, /* mi_check_types */
+ YYSYMBOL_mi_check_type = 1330, /* mi_check_type */
+ YYSYMBOL_opt_view_check_type = 1331, /* opt_view_check_type */
+ YYSYMBOL_optimize = 1332, /* optimize */
+ YYSYMBOL_1333_126 = 1333, /* $@126 */
+ YYSYMBOL_opt_no_write_to_binlog = 1334, /* opt_no_write_to_binlog */
+ YYSYMBOL_rename = 1335, /* rename */
+ YYSYMBOL_1336_127 = 1336, /* $@127 */
+ YYSYMBOL_rename_list = 1337, /* rename_list */
+ YYSYMBOL_table_to_table_list = 1338, /* table_to_table_list */
+ YYSYMBOL_table_to_table = 1339, /* table_to_table */
+ YYSYMBOL_keycache = 1340, /* keycache */
+ YYSYMBOL_1341_128 = 1341, /* $@128 */
+ YYSYMBOL_keycache_list_or_parts = 1342, /* keycache_list_or_parts */
+ YYSYMBOL_keycache_list = 1343, /* keycache_list */
+ YYSYMBOL_assign_to_keycache = 1344, /* assign_to_keycache */
+ YYSYMBOL_assign_to_keycache_parts = 1345, /* assign_to_keycache_parts */
+ YYSYMBOL_key_cache_name = 1346, /* key_cache_name */
+ YYSYMBOL_preload = 1347, /* preload */
+ YYSYMBOL_1348_129 = 1348, /* $@129 */
+ YYSYMBOL_preload_list_or_parts = 1349, /* preload_list_or_parts */
+ YYSYMBOL_preload_list = 1350, /* preload_list */
+ YYSYMBOL_preload_keys = 1351, /* preload_keys */
+ YYSYMBOL_preload_keys_parts = 1352, /* preload_keys_parts */
+ YYSYMBOL_adm_partition = 1353, /* adm_partition */
+ YYSYMBOL_1354_130 = 1354, /* $@130 */
+ YYSYMBOL_cache_keys_spec = 1355, /* cache_keys_spec */
+ YYSYMBOL_1356_131 = 1356, /* $@131 */
+ YYSYMBOL_cache_key_list_or_empty = 1357, /* cache_key_list_or_empty */
+ YYSYMBOL_opt_ignore_leaves = 1358, /* opt_ignore_leaves */
+ YYSYMBOL_select = 1359, /* select */
+ YYSYMBOL_1360_132 = 1360, /* $@132 */
+ YYSYMBOL_1361_133 = 1361, /* $@133 */
+ YYSYMBOL_select_into = 1362, /* select_into */
+ YYSYMBOL_1363_134 = 1363, /* $@134 */
+ YYSYMBOL_1364_135 = 1364, /* $@135 */
+ YYSYMBOL_simple_table = 1365, /* simple_table */
+ YYSYMBOL_table_value_constructor = 1366, /* table_value_constructor */
+ YYSYMBOL_1367_136 = 1367, /* $@136 */
+ YYSYMBOL_query_specification_start = 1368, /* query_specification_start */
+ YYSYMBOL_1369_137 = 1369, /* $@137 */
+ YYSYMBOL_1370_138 = 1370, /* $@138 */
+ YYSYMBOL_query_specification = 1371, /* query_specification */
+ YYSYMBOL_select_into_query_specification = 1372, /* select_into_query_specification */
+ YYSYMBOL_query_expression = 1373, /* query_expression */
+ YYSYMBOL_query_expression_no_with_clause = 1374, /* query_expression_no_with_clause */
+ YYSYMBOL_query_expression_body_ext = 1375, /* query_expression_body_ext */
+ YYSYMBOL_1376_139 = 1376, /* $@139 */
+ YYSYMBOL_1377_140 = 1377, /* $@140 */
+ YYSYMBOL_query_expression_body_ext_parens = 1378, /* query_expression_body_ext_parens */
+ YYSYMBOL_query_expression_body = 1379, /* query_expression_body */
+ YYSYMBOL_1380_141 = 1380, /* $@141 */
+ YYSYMBOL_query_primary = 1381, /* query_primary */
+ YYSYMBOL_query_simple = 1382, /* query_simple */
+ YYSYMBOL_subselect = 1383, /* subselect */
+ YYSYMBOL_subquery = 1384, /* subquery */
+ YYSYMBOL_opt_from_clause = 1385, /* opt_from_clause */
+ YYSYMBOL_from_clause = 1386, /* from_clause */
+ YYSYMBOL_table_reference_list = 1387, /* table_reference_list */
+ YYSYMBOL_select_options = 1388, /* select_options */
+ YYSYMBOL_opt_history_unit = 1389, /* opt_history_unit */
+ YYSYMBOL_history_point = 1390, /* history_point */
+ YYSYMBOL_for_portion_of_time_clause = 1391, /* for_portion_of_time_clause */
+ YYSYMBOL_opt_for_portion_of_time_clause = 1392, /* opt_for_portion_of_time_clause */
+ YYSYMBOL_opt_for_system_time_clause = 1393, /* opt_for_system_time_clause */
+ YYSYMBOL_system_time_expr = 1394, /* system_time_expr */
+ YYSYMBOL_select_option_list = 1395, /* select_option_list */
+ YYSYMBOL_select_option = 1396, /* select_option */
+ YYSYMBOL_select_lock_type = 1397, /* select_lock_type */
+ YYSYMBOL_opt_select_lock_type = 1398, /* opt_select_lock_type */
+ YYSYMBOL_opt_lock_wait_timeout_new = 1399, /* opt_lock_wait_timeout_new */
+ YYSYMBOL_select_item_list = 1400, /* select_item_list */
+ YYSYMBOL_select_item = 1401, /* select_item */
+ YYSYMBOL_remember_tok_start = 1402, /* remember_tok_start */
+ YYSYMBOL_remember_name = 1403, /* remember_name */
+ YYSYMBOL_remember_end = 1404, /* remember_end */
+ YYSYMBOL_remember_cpp_ptr = 1405, /* remember_cpp_ptr */
+ YYSYMBOL_remember_start_opt = 1406, /* remember_start_opt */
+ YYSYMBOL_remember_end_opt = 1407, /* remember_end_opt */
+ YYSYMBOL_remember_lex = 1408, /* remember_lex */
+ YYSYMBOL_select_alias = 1409, /* select_alias */
+ YYSYMBOL_opt_default_time_precision = 1410, /* opt_default_time_precision */
+ YYSYMBOL_opt_time_precision = 1411, /* opt_time_precision */
+ YYSYMBOL_optional_braces = 1412, /* optional_braces */
+ YYSYMBOL_expr = 1413, /* expr */
+ YYSYMBOL_boolean_test = 1414, /* boolean_test */
+ YYSYMBOL_predicate = 1415, /* predicate */
+ YYSYMBOL_bit_expr = 1416, /* bit_expr */
+ YYSYMBOL_or = 1417, /* or */
+ YYSYMBOL_and = 1418, /* and */
+ YYSYMBOL_not = 1419, /* not */
+ YYSYMBOL_not2 = 1420, /* not2 */
+ YYSYMBOL_comp_op = 1421, /* comp_op */
+ YYSYMBOL_all_or_any = 1422, /* all_or_any */
+ YYSYMBOL_opt_dyncol_type = 1423, /* opt_dyncol_type */
+ YYSYMBOL_dyncol_type = 1424, /* dyncol_type */
+ YYSYMBOL_numeric_dyncol_type = 1425, /* numeric_dyncol_type */
+ YYSYMBOL_temporal_dyncol_type = 1426, /* temporal_dyncol_type */
+ YYSYMBOL_string_dyncol_type = 1427, /* string_dyncol_type */
+ YYSYMBOL_dyncall_create_element = 1428, /* dyncall_create_element */
+ YYSYMBOL_dyncall_create_list = 1429, /* dyncall_create_list */
+ YYSYMBOL_plsql_cursor_attr = 1430, /* plsql_cursor_attr */
+ YYSYMBOL_explicit_cursor_attr = 1431, /* explicit_cursor_attr */
+ YYSYMBOL_trim_operands = 1432, /* trim_operands */
+ YYSYMBOL_trim_operands_regular = 1433, /* trim_operands_regular */
+ YYSYMBOL_trim_operands_special = 1434, /* trim_operands_special */
+ YYSYMBOL_column_default_non_parenthesized_expr = 1435, /* column_default_non_parenthesized_expr */
+ YYSYMBOL_primary_expr = 1436, /* primary_expr */
+ YYSYMBOL_string_factor_expr = 1437, /* string_factor_expr */
+ YYSYMBOL_simple_expr = 1438, /* simple_expr */
+ YYSYMBOL_mysql_concatenation_expr = 1439, /* mysql_concatenation_expr */
+ YYSYMBOL_function_call_keyword_timestamp = 1440, /* function_call_keyword_timestamp */
+ YYSYMBOL_function_call_keyword = 1441, /* function_call_keyword */
+ YYSYMBOL_substring_operands = 1442, /* substring_operands */
+ YYSYMBOL_substring_operands_regular = 1443, /* substring_operands_regular */
+ YYSYMBOL_substring_operands_special = 1444, /* substring_operands_special */
+ YYSYMBOL_function_call_nonkeyword = 1445, /* function_call_nonkeyword */
+ YYSYMBOL_function_call_conflict = 1446, /* function_call_conflict */
+ YYSYMBOL_function_call_generic = 1447, /* function_call_generic */
+ YYSYMBOL_1448_142 = 1448, /* @142 */
+ YYSYMBOL_fulltext_options = 1449, /* fulltext_options */
+ YYSYMBOL_opt_natural_language_mode = 1450, /* opt_natural_language_mode */
+ YYSYMBOL_opt_query_expansion = 1451, /* opt_query_expansion */
+ YYSYMBOL_opt_udf_expr_list = 1452, /* opt_udf_expr_list */
+ YYSYMBOL_udf_expr_list = 1453, /* udf_expr_list */
+ YYSYMBOL_udf_expr = 1454, /* udf_expr */
+ YYSYMBOL_sum_expr = 1455, /* sum_expr */
+ YYSYMBOL_1456_143 = 1456, /* $@143 */
+ YYSYMBOL_1457_144 = 1457, /* $@144 */
+ YYSYMBOL_1458_145 = 1458, /* $@145 */
+ YYSYMBOL_1459_146 = 1459, /* $@146 */
+ YYSYMBOL_1460_147 = 1460, /* $@147 */
+ YYSYMBOL_window_func_expr = 1461, /* window_func_expr */
+ YYSYMBOL_window_func = 1462, /* window_func */
+ YYSYMBOL_simple_window_func = 1463, /* simple_window_func */
+ YYSYMBOL_inverse_distribution_function = 1464, /* inverse_distribution_function */
+ YYSYMBOL_percentile_function = 1465, /* percentile_function */
+ YYSYMBOL_1466_148 = 1466, /* $@148 */
+ YYSYMBOL_inverse_distribution_function_def = 1467, /* inverse_distribution_function_def */
+ YYSYMBOL_order_by_single_element_list = 1468, /* order_by_single_element_list */
+ YYSYMBOL_window_name = 1469, /* window_name */
+ YYSYMBOL_variable = 1470, /* variable */
+ YYSYMBOL_1471_149 = 1471, /* $@149 */
+ YYSYMBOL_variable_aux = 1472, /* variable_aux */
+ YYSYMBOL_opt_distinct = 1473, /* opt_distinct */
+ YYSYMBOL_opt_gconcat_separator = 1474, /* opt_gconcat_separator */
+ YYSYMBOL_opt_gorder_clause = 1475, /* opt_gorder_clause */
+ YYSYMBOL_gorder_list = 1476, /* gorder_list */
+ YYSYMBOL_opt_glimit_clause = 1477, /* opt_glimit_clause */
+ YYSYMBOL_glimit_clause = 1478, /* glimit_clause */
+ YYSYMBOL_glimit_options = 1479, /* glimit_options */
+ YYSYMBOL_in_sum_expr = 1480, /* in_sum_expr */
+ YYSYMBOL_1481_150 = 1481, /* $@150 */
+ YYSYMBOL_cast_type = 1482, /* cast_type */
+ YYSYMBOL_cast_type_numeric = 1483, /* cast_type_numeric */
+ YYSYMBOL_cast_type_temporal = 1484, /* cast_type_temporal */
+ YYSYMBOL_opt_expr_list = 1485, /* opt_expr_list */
+ YYSYMBOL_expr_list = 1486, /* expr_list */
+ YYSYMBOL_ident_list_arg = 1487, /* ident_list_arg */
+ YYSYMBOL_ident_list = 1488, /* ident_list */
+ YYSYMBOL_when_list = 1489, /* when_list */
+ YYSYMBOL_when_list_opt_else = 1490, /* when_list_opt_else */
+ YYSYMBOL_table_ref = 1491, /* table_ref */
+ YYSYMBOL_json_text_literal = 1492, /* json_text_literal */
+ YYSYMBOL_json_text_literal_or_num = 1493, /* json_text_literal_or_num */
+ YYSYMBOL_join_table_list = 1494, /* join_table_list */
+ YYSYMBOL_json_table_columns_clause = 1495, /* json_table_columns_clause */
+ YYSYMBOL_json_table_columns_list = 1496, /* json_table_columns_list */
+ YYSYMBOL_json_table_column = 1497, /* json_table_column */
+ YYSYMBOL_1498_151 = 1498, /* $@151 */
+ YYSYMBOL_1499_152 = 1499, /* $@152 */
+ YYSYMBOL_json_table_column_type = 1500, /* json_table_column_type */
+ YYSYMBOL_json_table_field_type = 1501, /* json_table_field_type */
+ YYSYMBOL_json_opt_on_empty_or_error = 1502, /* json_opt_on_empty_or_error */
+ YYSYMBOL_json_on_response = 1503, /* json_on_response */
+ YYSYMBOL_json_on_error_response = 1504, /* json_on_error_response */
+ YYSYMBOL_json_on_empty_response = 1505, /* json_on_empty_response */
+ YYSYMBOL_table_function = 1506, /* table_function */
+ YYSYMBOL_1507_153 = 1507, /* $@153 */
+ YYSYMBOL_1508_154 = 1508, /* $@154 */
+ YYSYMBOL_esc_table_ref = 1509, /* esc_table_ref */
+ YYSYMBOL_derived_table_list = 1510, /* derived_table_list */
+ YYSYMBOL_join_table = 1511, /* join_table */
+ YYSYMBOL_1512_155 = 1512, /* $@155 */
+ YYSYMBOL_1513_156 = 1513, /* $@156 */
+ YYSYMBOL_1514_157 = 1514, /* $@157 */
+ YYSYMBOL_1515_158 = 1515, /* $@158 */
+ YYSYMBOL_1516_159 = 1516, /* $@159 */
+ YYSYMBOL_1517_160 = 1517, /* $@160 */
+ YYSYMBOL_inner_join = 1518, /* inner_join */
+ YYSYMBOL_normal_join = 1519, /* normal_join */
+ YYSYMBOL_opt_use_partition = 1520, /* opt_use_partition */
+ YYSYMBOL_use_partition = 1521, /* use_partition */
+ YYSYMBOL_table_factor = 1522, /* table_factor */
+ YYSYMBOL_table_primary_ident_opt_parens = 1523, /* table_primary_ident_opt_parens */
+ YYSYMBOL_table_primary_derived_opt_parens = 1524, /* table_primary_derived_opt_parens */
+ YYSYMBOL_table_reference_list_parens = 1525, /* table_reference_list_parens */
+ YYSYMBOL_nested_table_reference_list = 1526, /* nested_table_reference_list */
+ YYSYMBOL_join_table_parens = 1527, /* join_table_parens */
+ YYSYMBOL_table_primary_ident = 1528, /* table_primary_ident */
+ YYSYMBOL_table_primary_derived = 1529, /* table_primary_derived */
+ YYSYMBOL_opt_outer = 1530, /* opt_outer */
+ YYSYMBOL_index_hint_clause = 1531, /* index_hint_clause */
+ YYSYMBOL_index_hint_type = 1532, /* index_hint_type */
+ YYSYMBOL_index_hint_definition = 1533, /* index_hint_definition */
+ YYSYMBOL_1534_161 = 1534, /* $@161 */
+ YYSYMBOL_1535_162 = 1535, /* $@162 */
+ YYSYMBOL_index_hints_list = 1536, /* index_hints_list */
+ YYSYMBOL_opt_index_hints_list = 1537, /* opt_index_hints_list */
+ YYSYMBOL_1538_163 = 1538, /* $@163 */
+ YYSYMBOL_opt_key_definition = 1539, /* opt_key_definition */
+ YYSYMBOL_1540_164 = 1540, /* $@164 */
+ YYSYMBOL_opt_key_usage_list = 1541, /* opt_key_usage_list */
+ YYSYMBOL_key_usage_element = 1542, /* key_usage_element */
+ YYSYMBOL_key_usage_list = 1543, /* key_usage_list */
+ YYSYMBOL_using_list = 1544, /* using_list */
+ YYSYMBOL_interval = 1545, /* interval */
+ YYSYMBOL_interval_time_stamp = 1546, /* interval_time_stamp */
+ YYSYMBOL_date_time_type = 1547, /* date_time_type */
+ YYSYMBOL_table_alias = 1548, /* table_alias */
+ YYSYMBOL_opt_table_alias_clause = 1549, /* opt_table_alias_clause */
+ YYSYMBOL_table_alias_clause = 1550, /* table_alias_clause */
+ YYSYMBOL_opt_all = 1551, /* opt_all */
+ YYSYMBOL_opt_where_clause = 1552, /* opt_where_clause */
+ YYSYMBOL_1553_165 = 1553, /* $@165 */
+ YYSYMBOL_opt_having_clause = 1554, /* opt_having_clause */
+ YYSYMBOL_1555_166 = 1555, /* $@166 */
+ YYSYMBOL_opt_group_clause = 1556, /* opt_group_clause */
+ YYSYMBOL_group_list = 1557, /* group_list */
+ YYSYMBOL_olap_opt = 1558, /* olap_opt */
+ YYSYMBOL_opt_window_clause = 1559, /* opt_window_clause */
+ YYSYMBOL_window_def_list = 1560, /* window_def_list */
+ YYSYMBOL_window_def = 1561, /* window_def */
+ YYSYMBOL_window_spec = 1562, /* window_spec */
+ YYSYMBOL_1563_167 = 1563, /* $@167 */
+ YYSYMBOL_opt_window_ref = 1564, /* opt_window_ref */
+ YYSYMBOL_opt_window_partition_clause = 1565, /* opt_window_partition_clause */
+ YYSYMBOL_opt_window_order_clause = 1566, /* opt_window_order_clause */
+ YYSYMBOL_opt_window_frame_clause = 1567, /* opt_window_frame_clause */
+ YYSYMBOL_window_frame_units = 1568, /* window_frame_units */
+ YYSYMBOL_window_frame_extent = 1569, /* window_frame_extent */
+ YYSYMBOL_window_frame_start = 1570, /* window_frame_start */
+ YYSYMBOL_window_frame_bound = 1571, /* window_frame_bound */
+ YYSYMBOL_opt_window_frame_exclusion = 1572, /* opt_window_frame_exclusion */
+ YYSYMBOL_alter_order_clause = 1573, /* alter_order_clause */
+ YYSYMBOL_alter_order_list = 1574, /* alter_order_list */
+ YYSYMBOL_alter_order_item = 1575, /* alter_order_item */
+ YYSYMBOL_opt_order_clause = 1576, /* opt_order_clause */
+ YYSYMBOL_order_clause = 1577, /* order_clause */
+ YYSYMBOL_1578_168 = 1578, /* $@168 */
+ YYSYMBOL_order_list = 1579, /* order_list */
+ YYSYMBOL_order_dir = 1580, /* order_dir */
+ YYSYMBOL_opt_limit_clause = 1581, /* opt_limit_clause */
+ YYSYMBOL_limit_clause = 1582, /* limit_clause */
+ YYSYMBOL_fetch_first_clause = 1583, /* fetch_first_clause */
+ YYSYMBOL_first_or_next = 1584, /* first_or_next */
+ YYSYMBOL_row_or_rows = 1585, /* row_or_rows */
+ YYSYMBOL_only_or_with_ties = 1586, /* only_or_with_ties */
+ YYSYMBOL_opt_global_limit_clause = 1587, /* opt_global_limit_clause */
+ YYSYMBOL_limit_options = 1588, /* limit_options */
+ YYSYMBOL_limit_option = 1589, /* limit_option */
+ YYSYMBOL_limit_rows_option = 1590, /* limit_rows_option */
+ YYSYMBOL_delete_limit_clause = 1591, /* delete_limit_clause */
+ YYSYMBOL_order_limit_lock = 1592, /* order_limit_lock */
+ YYSYMBOL_opt_order_limit_lock = 1593, /* opt_order_limit_lock */
+ YYSYMBOL_query_expression_tail = 1594, /* query_expression_tail */
+ YYSYMBOL_opt_query_expression_tail = 1595, /* opt_query_expression_tail */
+ YYSYMBOL_opt_procedure_or_into = 1596, /* opt_procedure_or_into */
+ YYSYMBOL_order_or_limit = 1597, /* order_or_limit */
+ YYSYMBOL_opt_plus = 1598, /* opt_plus */
+ YYSYMBOL_int_num = 1599, /* int_num */
+ YYSYMBOL_ulong_num = 1600, /* ulong_num */
+ YYSYMBOL_real_ulong_num = 1601, /* real_ulong_num */
+ YYSYMBOL_longlong_num = 1602, /* longlong_num */
+ YYSYMBOL_ulonglong_num = 1603, /* ulonglong_num */
+ YYSYMBOL_real_ulonglong_num = 1604, /* real_ulonglong_num */
+ YYSYMBOL_dec_num_error = 1605, /* dec_num_error */
+ YYSYMBOL_dec_num = 1606, /* dec_num */
+ YYSYMBOL_choice = 1607, /* choice */
+ YYSYMBOL_bool = 1608, /* bool */
+ YYSYMBOL_procedure_clause = 1609, /* procedure_clause */
+ YYSYMBOL_1610_169 = 1610, /* $@169 */
+ YYSYMBOL_procedure_list = 1611, /* procedure_list */
+ YYSYMBOL_procedure_list2 = 1612, /* procedure_list2 */
+ YYSYMBOL_procedure_item = 1613, /* procedure_item */
+ YYSYMBOL_select_var_list_init = 1614, /* select_var_list_init */
+ YYSYMBOL_1615_170 = 1615, /* $@170 */
+ YYSYMBOL_select_var_list = 1616, /* select_var_list */
+ YYSYMBOL_select_var_ident = 1617, /* select_var_ident */
+ YYSYMBOL_select_outvar = 1618, /* select_outvar */
+ YYSYMBOL_into = 1619, /* into */
+ YYSYMBOL_into_destination = 1620, /* into_destination */
+ YYSYMBOL_1621_171 = 1621, /* $@171 */
+ YYSYMBOL_1622_172 = 1622, /* $@172 */
+ YYSYMBOL_do = 1623, /* do */
+ YYSYMBOL_1624_173 = 1624, /* $@173 */
+ YYSYMBOL_drop = 1625, /* drop */
+ YYSYMBOL_1626_174 = 1626, /* $@174 */
+ YYSYMBOL_1627_175 = 1627, /* $@175 */
+ YYSYMBOL_1628_176 = 1628, /* $@176 */
+ YYSYMBOL_1629_177 = 1629, /* $@177 */
+ YYSYMBOL_table_list = 1630, /* table_list */
+ YYSYMBOL_table_name = 1631, /* table_name */
+ YYSYMBOL_table_name_with_opt_use_partition = 1632, /* table_name_with_opt_use_partition */
+ YYSYMBOL_table_alias_ref_list = 1633, /* table_alias_ref_list */
+ YYSYMBOL_table_alias_ref = 1634, /* table_alias_ref */
+ YYSYMBOL_opt_if_exists_table_element = 1635, /* opt_if_exists_table_element */
+ YYSYMBOL_opt_if_exists = 1636, /* opt_if_exists */
+ YYSYMBOL_opt_temporary = 1637, /* opt_temporary */
+ YYSYMBOL_insert = 1638, /* insert */
+ YYSYMBOL_1639_178 = 1639, /* $@178 */
+ YYSYMBOL_1640_179 = 1640, /* $@179 */
+ YYSYMBOL_replace = 1641, /* replace */
+ YYSYMBOL_1642_180 = 1642, /* $@180 */
+ YYSYMBOL_1643_181 = 1643, /* $@181 */
+ YYSYMBOL_insert_start = 1644, /* insert_start */
+ YYSYMBOL_stmt_end = 1645, /* stmt_end */
+ YYSYMBOL_insert_lock_option = 1646, /* insert_lock_option */
+ YYSYMBOL_replace_lock_option = 1647, /* replace_lock_option */
+ YYSYMBOL_insert_replace_option = 1648, /* insert_replace_option */
+ YYSYMBOL_opt_into = 1649, /* opt_into */
+ YYSYMBOL_insert_table = 1650, /* insert_table */
+ YYSYMBOL_1651_182 = 1651, /* $@182 */
+ YYSYMBOL_insert_field_spec = 1652, /* insert_field_spec */
+ YYSYMBOL_1653_183 = 1653, /* $@183 */
+ YYSYMBOL_insert_field_list = 1654, /* insert_field_list */
+ YYSYMBOL_opt_fields = 1655, /* opt_fields */
+ YYSYMBOL_fields = 1656, /* fields */
+ YYSYMBOL_insert_values = 1657, /* insert_values */
+ YYSYMBOL_values_list = 1658, /* values_list */
+ YYSYMBOL_ident_eq_list = 1659, /* ident_eq_list */
+ YYSYMBOL_ident_eq_value = 1660, /* ident_eq_value */
+ YYSYMBOL_equal = 1661, /* equal */
+ YYSYMBOL_opt_equal = 1662, /* opt_equal */
+ YYSYMBOL_opt_with = 1663, /* opt_with */
+ YYSYMBOL_opt_by = 1664, /* opt_by */
+ YYSYMBOL_no_braces = 1665, /* no_braces */
+ YYSYMBOL_1666_184 = 1666, /* $@184 */
+ YYSYMBOL_no_braces_with_names = 1667, /* no_braces_with_names */
+ YYSYMBOL_1668_185 = 1668, /* $@185 */
+ YYSYMBOL_opt_values = 1669, /* opt_values */
+ YYSYMBOL_opt_values_with_names = 1670, /* opt_values_with_names */
+ YYSYMBOL_values = 1671, /* values */
+ YYSYMBOL_values_with_names = 1672, /* values_with_names */
+ YYSYMBOL_expr_or_ignore = 1673, /* expr_or_ignore */
+ YYSYMBOL_expr_or_ignore_or_default = 1674, /* expr_or_ignore_or_default */
+ YYSYMBOL_opt_insert_update = 1675, /* opt_insert_update */
+ YYSYMBOL_1676_186 = 1676, /* $@186 */
+ YYSYMBOL_1677_187 = 1677, /* $@187 */
+ YYSYMBOL_update_table_list = 1678, /* update_table_list */
+ YYSYMBOL_update = 1679, /* update */
+ YYSYMBOL_1680_188 = 1680, /* $@188 */
+ YYSYMBOL_1681_189 = 1681, /* $@189 */
+ YYSYMBOL_1682_190 = 1682, /* $@190 */
+ YYSYMBOL_update_list = 1683, /* update_list */
+ YYSYMBOL_update_elem = 1684, /* update_elem */
+ YYSYMBOL_insert_update_list = 1685, /* insert_update_list */
+ YYSYMBOL_insert_update_elem = 1686, /* insert_update_elem */
+ YYSYMBOL_opt_low_priority = 1687, /* opt_low_priority */
+ YYSYMBOL_delete = 1688, /* delete */
+ YYSYMBOL_1689_191 = 1689, /* $@191 */
+ YYSYMBOL_opt_delete_system_time = 1690, /* opt_delete_system_time */
+ YYSYMBOL_delete_part2 = 1691, /* delete_part2 */
+ YYSYMBOL_1692_192 = 1692, /* $@192 */
+ YYSYMBOL_delete_single_table = 1693, /* delete_single_table */
+ YYSYMBOL_delete_single_table_for_period = 1694, /* delete_single_table_for_period */
+ YYSYMBOL_single_multi = 1695, /* single_multi */
+ YYSYMBOL_1696_193 = 1696, /* $@193 */
+ YYSYMBOL_1697_194 = 1697, /* $@194 */
+ YYSYMBOL_1698_195 = 1698, /* $@195 */
+ YYSYMBOL_1699_196 = 1699, /* $@196 */
+ YYSYMBOL_1700_197 = 1700, /* $@197 */
+ YYSYMBOL_opt_returning = 1701, /* opt_returning */
+ YYSYMBOL_1702_198 = 1702, /* $@198 */
+ YYSYMBOL_opt_wild = 1703, /* opt_wild */
+ YYSYMBOL_opt_delete_options = 1704, /* opt_delete_options */
+ YYSYMBOL_opt_delete_option = 1705, /* opt_delete_option */
+ YYSYMBOL_truncate = 1706, /* truncate */
+ YYSYMBOL_1707_199 = 1707, /* $@199 */
+ YYSYMBOL_1708_200 = 1708, /* $@200 */
+ YYSYMBOL_opt_table_sym = 1709, /* opt_table_sym */
+ YYSYMBOL_opt_profile_defs = 1710, /* opt_profile_defs */
+ YYSYMBOL_profile_defs = 1711, /* profile_defs */
+ YYSYMBOL_profile_def = 1712, /* profile_def */
+ YYSYMBOL_opt_profile_args = 1713, /* opt_profile_args */
+ YYSYMBOL_show = 1714, /* show */
+ YYSYMBOL_1715_201 = 1715, /* $@201 */
+ YYSYMBOL_show_param = 1716, /* show_param */
+ YYSYMBOL_1717_202 = 1717, /* $@202 */
+ YYSYMBOL_1718_203 = 1718, /* $@203 */
+ YYSYMBOL_show_engine_param = 1719, /* show_engine_param */
+ YYSYMBOL_master_or_binary = 1720, /* master_or_binary */
+ YYSYMBOL_opt_storage = 1721, /* opt_storage */
+ YYSYMBOL_opt_db = 1722, /* opt_db */
+ YYSYMBOL_opt_full = 1723, /* opt_full */
+ YYSYMBOL_from_or_in = 1724, /* from_or_in */
+ YYSYMBOL_binlog_in = 1725, /* binlog_in */
+ YYSYMBOL_binlog_from = 1726, /* binlog_from */
+ YYSYMBOL_wild_and_where = 1727, /* wild_and_where */
+ YYSYMBOL_describe = 1728, /* describe */
+ YYSYMBOL_1729_204 = 1729, /* $@204 */
+ YYSYMBOL_1730_205 = 1730, /* $@205 */
+ YYSYMBOL_explainable_command = 1731, /* explainable_command */
+ YYSYMBOL_describe_command = 1732, /* describe_command */
+ YYSYMBOL_analyze_stmt_command = 1733, /* analyze_stmt_command */
+ YYSYMBOL_opt_extended_describe = 1734, /* opt_extended_describe */
+ YYSYMBOL_opt_format_json = 1735, /* opt_format_json */
+ YYSYMBOL_opt_describe_column = 1736, /* opt_describe_column */
+ YYSYMBOL_explain_for_connection = 1737, /* explain_for_connection */
+ YYSYMBOL_flush = 1738, /* flush */
+ YYSYMBOL_1739_206 = 1739, /* $@206 */
+ YYSYMBOL_flush_options = 1740, /* flush_options */
+ YYSYMBOL_1741_207 = 1741, /* $@207 */
+ YYSYMBOL_opt_flush_lock = 1742, /* opt_flush_lock */
+ YYSYMBOL_flush_lock = 1743, /* flush_lock */
+ YYSYMBOL_1744_208 = 1744, /* $@208 */
+ YYSYMBOL_flush_options_list = 1745, /* flush_options_list */
+ YYSYMBOL_flush_option = 1746, /* flush_option */
+ YYSYMBOL_opt_table_list = 1747, /* opt_table_list */
+ YYSYMBOL_backup = 1748, /* backup */
+ YYSYMBOL_backup_statements = 1749, /* backup_statements */
+ YYSYMBOL_1750_209 = 1750, /* $@209 */
+ YYSYMBOL_opt_delete_gtid_domain = 1751, /* opt_delete_gtid_domain */
+ YYSYMBOL_delete_domain_id_list = 1752, /* delete_domain_id_list */
+ YYSYMBOL_delete_domain_id = 1753, /* delete_domain_id */
+ YYSYMBOL_optional_flush_tables_arguments = 1754, /* optional_flush_tables_arguments */
+ YYSYMBOL_reset = 1755, /* reset */
+ YYSYMBOL_1756_210 = 1756, /* $@210 */
+ YYSYMBOL_reset_options = 1757, /* reset_options */
+ YYSYMBOL_reset_option = 1758, /* reset_option */
+ YYSYMBOL_1759_211 = 1759, /* $@211 */
+ YYSYMBOL_1760_212 = 1760, /* $@212 */
+ YYSYMBOL_slave_reset_options = 1761, /* slave_reset_options */
+ YYSYMBOL_master_reset_options = 1762, /* master_reset_options */
+ YYSYMBOL_purge = 1763, /* purge */
+ YYSYMBOL_1764_213 = 1764, /* $@213 */
+ YYSYMBOL_kill = 1765, /* kill */
+ YYSYMBOL_1766_214 = 1766, /* $@214 */
+ YYSYMBOL_kill_type = 1767, /* kill_type */
+ YYSYMBOL_kill_option = 1768, /* kill_option */
+ YYSYMBOL_opt_connection = 1769, /* opt_connection */
+ YYSYMBOL_kill_expr = 1770, /* kill_expr */
+ YYSYMBOL_shutdown = 1771, /* shutdown */
+ YYSYMBOL_1772_215 = 1772, /* $@215 */
+ YYSYMBOL_shutdown_option = 1773, /* shutdown_option */
+ YYSYMBOL_use = 1774, /* use */
+ YYSYMBOL_load = 1775, /* load */
+ YYSYMBOL_1776_216 = 1776, /* $@216 */
+ YYSYMBOL_1777_217 = 1777, /* $@217 */
+ YYSYMBOL_1778_218 = 1778, /* $@218 */
+ YYSYMBOL_1779_219 = 1779, /* $@219 */
+ YYSYMBOL_data_or_xml = 1780, /* data_or_xml */
+ YYSYMBOL_opt_local = 1781, /* opt_local */
+ YYSYMBOL_load_data_lock = 1782, /* load_data_lock */
+ YYSYMBOL_opt_duplicate = 1783, /* opt_duplicate */
+ YYSYMBOL_opt_field_term = 1784, /* opt_field_term */
+ YYSYMBOL_field_term_list = 1785, /* field_term_list */
+ YYSYMBOL_field_term = 1786, /* field_term */
+ YYSYMBOL_opt_line_term = 1787, /* opt_line_term */
+ YYSYMBOL_line_term_list = 1788, /* line_term_list */
+ YYSYMBOL_line_term = 1789, /* line_term */
+ YYSYMBOL_opt_xml_rows_identified_by = 1790, /* opt_xml_rows_identified_by */
+ YYSYMBOL_opt_ignore_lines = 1791, /* opt_ignore_lines */
+ YYSYMBOL_lines_or_rows = 1792, /* lines_or_rows */
+ YYSYMBOL_opt_field_or_var_spec = 1793, /* opt_field_or_var_spec */
+ YYSYMBOL_fields_or_vars = 1794, /* fields_or_vars */
+ YYSYMBOL_field_or_var = 1795, /* field_or_var */
+ YYSYMBOL_opt_load_data_set_spec = 1796, /* opt_load_data_set_spec */
+ YYSYMBOL_load_data_set_list = 1797, /* load_data_set_list */
+ YYSYMBOL_load_data_set_elem = 1798, /* load_data_set_elem */
+ YYSYMBOL_text_literal = 1799, /* text_literal */
+ YYSYMBOL_text_string = 1800, /* text_string */
+ YYSYMBOL_hex_or_bin_String = 1801, /* hex_or_bin_String */
+ YYSYMBOL_param_marker = 1802, /* param_marker */
+ YYSYMBOL_signed_literal = 1803, /* signed_literal */
+ YYSYMBOL_literal = 1804, /* literal */
+ YYSYMBOL_NUM_literal = 1805, /* NUM_literal */
+ YYSYMBOL_temporal_literal = 1806, /* temporal_literal */
+ YYSYMBOL_with_clause = 1807, /* with_clause */
+ YYSYMBOL_1808_220 = 1808, /* $@220 */
+ YYSYMBOL_opt_recursive = 1809, /* opt_recursive */
+ YYSYMBOL_with_list = 1810, /* with_list */
+ YYSYMBOL_with_list_element = 1811, /* with_list_element */
+ YYSYMBOL_opt_cycle = 1812, /* opt_cycle */
+ YYSYMBOL_1813_221 = 1813, /* $@221 */
+ YYSYMBOL_opt_with_column_list = 1814, /* opt_with_column_list */
+ YYSYMBOL_with_column_list = 1815, /* with_column_list */
+ YYSYMBOL_ident_sys_alloc = 1816, /* ident_sys_alloc */
+ YYSYMBOL_comma_separated_ident_list = 1817, /* comma_separated_ident_list */
+ YYSYMBOL_with_element_head = 1818, /* with_element_head */
+ YYSYMBOL_insert_ident = 1819, /* insert_ident */
+ YYSYMBOL_table_wild = 1820, /* table_wild */
+ YYSYMBOL_select_sublist_qualified_asterisk = 1821, /* select_sublist_qualified_asterisk */
+ YYSYMBOL_order_ident = 1822, /* order_ident */
+ YYSYMBOL_simple_ident = 1823, /* simple_ident */
+ YYSYMBOL_simple_ident_nospvar = 1824, /* simple_ident_nospvar */
+ YYSYMBOL_field_ident = 1825, /* field_ident */
+ YYSYMBOL_table_ident = 1826, /* table_ident */
+ YYSYMBOL_table_ident_opt_wild = 1827, /* table_ident_opt_wild */
+ YYSYMBOL_table_ident_nodb = 1828, /* table_ident_nodb */
+ YYSYMBOL_IDENT_cli = 1829, /* IDENT_cli */
+ YYSYMBOL_ident_cli = 1830, /* ident_cli */
+ YYSYMBOL_IDENT_sys = 1831, /* IDENT_sys */
+ YYSYMBOL_ident_cli_func = 1832, /* ident_cli_func */
+ YYSYMBOL_ident_func = 1833, /* ident_func */
+ YYSYMBOL_TEXT_STRING_sys = 1834, /* TEXT_STRING_sys */
+ YYSYMBOL_TEXT_STRING_literal = 1835, /* TEXT_STRING_literal */
+ YYSYMBOL_TEXT_STRING_filesystem = 1836, /* TEXT_STRING_filesystem */
+ YYSYMBOL_ident_table_alias = 1837, /* ident_table_alias */
+ YYSYMBOL_ident_cli_set_usual_case = 1838, /* ident_cli_set_usual_case */
+ YYSYMBOL_ident_sysvar_name = 1839, /* ident_sysvar_name */
+ YYSYMBOL_ident = 1840, /* ident */
+ YYSYMBOL_label_ident = 1841, /* label_ident */
+ YYSYMBOL_ident_or_text = 1842, /* ident_or_text */
+ YYSYMBOL_user_maybe_role = 1843, /* user_maybe_role */
+ YYSYMBOL_user_or_role = 1844, /* user_or_role */
+ YYSYMBOL_user = 1845, /* user */
+ YYSYMBOL_keyword_table_alias = 1846, /* keyword_table_alias */
+ YYSYMBOL_keyword_ident = 1847, /* keyword_ident */
+ YYSYMBOL_keyword_sysvar_name = 1848, /* keyword_sysvar_name */
+ YYSYMBOL_keyword_set_usual_case = 1849, /* keyword_set_usual_case */
+ YYSYMBOL_non_reserved_keyword_udt = 1850, /* non_reserved_keyword_udt */
+ YYSYMBOL_keyword_sp_var_not_label = 1851, /* keyword_sp_var_not_label */
+ YYSYMBOL_keyword_sp_head = 1852, /* keyword_sp_head */
+ YYSYMBOL_keyword_verb_clause = 1853, /* keyword_verb_clause */
+ YYSYMBOL_keyword_set_special_case = 1854, /* keyword_set_special_case */
+ YYSYMBOL_keyword_sysvar_type = 1855, /* keyword_sysvar_type */
+ YYSYMBOL_keyword_data_type = 1856, /* keyword_data_type */
+ YYSYMBOL_keyword_cast_type = 1857, /* keyword_cast_type */
+ YYSYMBOL_keyword_func_sp_var_and_label = 1858, /* keyword_func_sp_var_and_label */
+ YYSYMBOL_keyword_func_sp_var_not_label = 1859, /* keyword_func_sp_var_not_label */
+ YYSYMBOL_keyword_sp_var_and_label = 1860, /* keyword_sp_var_and_label */
+ YYSYMBOL_reserved_keyword_udt_not_param_type = 1861, /* reserved_keyword_udt_not_param_type */
+ YYSYMBOL_set = 1862, /* set */
+ YYSYMBOL_1863_222 = 1863, /* $@222 */
+ YYSYMBOL_set_param = 1864, /* set_param */
+ YYSYMBOL_1865_223 = 1865, /* $@223 */
+ YYSYMBOL_1866_224 = 1866, /* $@224 */
+ YYSYMBOL_1867_225 = 1867, /* $@225 */
+ YYSYMBOL_set_stmt_option_list = 1868, /* set_stmt_option_list */
+ YYSYMBOL_start_option_value_list_following_option_type = 1869, /* start_option_value_list_following_option_type */
+ YYSYMBOL_1870_226 = 1870, /* $@226 */
+ YYSYMBOL_option_value_list = 1871, /* option_value_list */
+ YYSYMBOL_option_value = 1872, /* option_value */
+ YYSYMBOL_1873_227 = 1873, /* $@227 */
+ YYSYMBOL_option_type = 1874, /* option_type */
+ YYSYMBOL_opt_var_type = 1875, /* opt_var_type */
+ YYSYMBOL_opt_var_ident_type = 1876, /* opt_var_ident_type */
+ YYSYMBOL_set_stmt_option = 1877, /* set_stmt_option */
+ YYSYMBOL_1878_228 = 1878, /* $@228 */
+ YYSYMBOL_1879_229 = 1879, /* $@229 */
+ YYSYMBOL_1880_230 = 1880, /* $@230 */
+ YYSYMBOL_option_value_following_option_type = 1881, /* option_value_following_option_type */
+ YYSYMBOL_1882_231 = 1882, /* $@231 */
+ YYSYMBOL_1883_232 = 1883, /* $@232 */
+ YYSYMBOL_1884_233 = 1884, /* $@233 */
+ YYSYMBOL_option_value_no_option_type = 1885, /* option_value_no_option_type */
+ YYSYMBOL_1886_234 = 1886, /* $@234 */
+ YYSYMBOL_1887_235 = 1887, /* $@235 */
+ YYSYMBOL_1888_236 = 1888, /* $@236 */
+ YYSYMBOL_1889_237 = 1889, /* $@237 */
+ YYSYMBOL_1890_238 = 1890, /* $@238 */
+ YYSYMBOL_1891_239 = 1891, /* $@239 */
+ YYSYMBOL_1892_240 = 1892, /* $@240 */
+ YYSYMBOL_1893_241 = 1893, /* $@241 */
+ YYSYMBOL_1894_242 = 1894, /* $@242 */
+ YYSYMBOL_1895_243 = 1895, /* $@243 */
+ YYSYMBOL_transaction_characteristics = 1896, /* transaction_characteristics */
+ YYSYMBOL_transaction_access_mode = 1897, /* transaction_access_mode */
+ YYSYMBOL_isolation_level = 1898, /* isolation_level */
+ YYSYMBOL_transaction_access_mode_types = 1899, /* transaction_access_mode_types */
+ YYSYMBOL_isolation_types = 1900, /* isolation_types */
+ YYSYMBOL_text_or_password = 1901, /* text_or_password */
+ YYSYMBOL_set_expr_or_default = 1902, /* set_expr_or_default */
+ YYSYMBOL_set_expr_misc = 1903, /* set_expr_misc */
+ YYSYMBOL_lock = 1904, /* lock */
+ YYSYMBOL_1905_244 = 1905, /* $@244 */
+ YYSYMBOL_opt_lock_wait_timeout = 1906, /* opt_lock_wait_timeout */
+ YYSYMBOL_table_or_tables = 1907, /* table_or_tables */
+ YYSYMBOL_table_lock_list = 1908, /* table_lock_list */
+ YYSYMBOL_table_lock = 1909, /* table_lock */
+ YYSYMBOL_lock_option = 1910, /* lock_option */
+ YYSYMBOL_unlock = 1911, /* unlock */
+ YYSYMBOL_1912_245 = 1912, /* $@245 */
+ YYSYMBOL_handler = 1913, /* handler */
+ YYSYMBOL_1914_246 = 1914, /* $@246 */
+ YYSYMBOL_handler_tail = 1915, /* handler_tail */
+ YYSYMBOL_1916_247 = 1916, /* $@247 */
+ YYSYMBOL_handler_read_or_scan = 1917, /* handler_read_or_scan */
+ YYSYMBOL_handler_scan_function = 1918, /* handler_scan_function */
+ YYSYMBOL_handler_rkey_function = 1919, /* handler_rkey_function */
+ YYSYMBOL_1920_248 = 1920, /* $@248 */
+ YYSYMBOL_handler_rkey_mode = 1921, /* handler_rkey_mode */
+ YYSYMBOL_revoke = 1922, /* revoke */
+ YYSYMBOL_revoke_command = 1923, /* revoke_command */
+ YYSYMBOL_admin_option_for_role = 1924, /* admin_option_for_role */
+ YYSYMBOL_grant = 1925, /* grant */
+ YYSYMBOL_grant_command = 1926, /* grant_command */
+ YYSYMBOL_opt_with_admin = 1927, /* opt_with_admin */
+ YYSYMBOL_opt_with_admin_option = 1928, /* opt_with_admin_option */
+ YYSYMBOL_role_list = 1929, /* role_list */
+ YYSYMBOL_current_role = 1930, /* current_role */
+ YYSYMBOL_role_name = 1931, /* role_name */
+ YYSYMBOL_grant_role = 1932, /* grant_role */
+ YYSYMBOL_opt_table = 1933, /* opt_table */
+ YYSYMBOL_grant_privileges = 1934, /* grant_privileges */
+ YYSYMBOL_opt_privileges = 1935, /* opt_privileges */
+ YYSYMBOL_object_privilege_list = 1936, /* object_privilege_list */
+ YYSYMBOL_column_list_privilege = 1937, /* column_list_privilege */
+ YYSYMBOL_column_privilege = 1938, /* column_privilege */
+ YYSYMBOL_object_privilege = 1939, /* object_privilege */
+ YYSYMBOL_opt_and = 1940, /* opt_and */
+ YYSYMBOL_require_list = 1941, /* require_list */
+ YYSYMBOL_require_list_element = 1942, /* require_list_element */
+ YYSYMBOL_grant_ident = 1943, /* grant_ident */
+ YYSYMBOL_user_list = 1944, /* user_list */
+ YYSYMBOL_grant_list = 1945, /* grant_list */
+ YYSYMBOL_user_and_role_list = 1946, /* user_and_role_list */
+ YYSYMBOL_via_or_with = 1947, /* via_or_with */
+ YYSYMBOL_using_or_as = 1948, /* using_or_as */
+ YYSYMBOL_grant_user = 1949, /* grant_user */
+ YYSYMBOL_auth_expression = 1950, /* auth_expression */
+ YYSYMBOL_auth_token = 1951, /* auth_token */
+ YYSYMBOL_opt_auth_str = 1952, /* opt_auth_str */
+ YYSYMBOL_opt_require_clause = 1953, /* opt_require_clause */
+ YYSYMBOL_resource_option = 1954, /* resource_option */
+ YYSYMBOL_resource_option_list = 1955, /* resource_option_list */
+ YYSYMBOL_opt_resource_options = 1956, /* opt_resource_options */
+ YYSYMBOL_opt_grant_options = 1957, /* opt_grant_options */
+ YYSYMBOL_opt_grant_option = 1958, /* opt_grant_option */
+ YYSYMBOL_grant_option_list = 1959, /* grant_option_list */
+ YYSYMBOL_grant_option = 1960, /* grant_option */
+ YYSYMBOL_begin_stmt_mariadb = 1961, /* begin_stmt_mariadb */
+ YYSYMBOL_1962_249 = 1962, /* $@249 */
+ YYSYMBOL_compound_statement = 1963, /* compound_statement */
+ YYSYMBOL_opt_not = 1964, /* opt_not */
+ YYSYMBOL_opt_work = 1965, /* opt_work */
+ YYSYMBOL_opt_chain = 1966, /* opt_chain */
+ YYSYMBOL_opt_release = 1967, /* opt_release */
+ YYSYMBOL_commit = 1968, /* commit */
+ YYSYMBOL_rollback = 1969, /* rollback */
+ YYSYMBOL_savepoint = 1970, /* savepoint */
+ YYSYMBOL_release = 1971, /* release */
+ YYSYMBOL_unit_type_decl = 1972, /* unit_type_decl */
+ YYSYMBOL_union_option = 1973, /* union_option */
+ YYSYMBOL_query_expression_option = 1974, /* query_expression_option */
+ YYSYMBOL_definer_opt = 1975, /* definer_opt */
+ YYSYMBOL_no_definer = 1976, /* no_definer */
+ YYSYMBOL_definer = 1977, /* definer */
+ YYSYMBOL_view_algorithm = 1978, /* view_algorithm */
+ YYSYMBOL_opt_view_suid = 1979, /* opt_view_suid */
+ YYSYMBOL_view_suid = 1980, /* view_suid */
+ YYSYMBOL_view_list_opt = 1981, /* view_list_opt */
+ YYSYMBOL_view_list = 1982, /* view_list */
+ YYSYMBOL_view_select = 1983, /* view_select */
+ YYSYMBOL_1984_250 = 1984, /* $@250 */
+ YYSYMBOL_view_check_option = 1985, /* view_check_option */
+ YYSYMBOL_trigger_action_order = 1986, /* trigger_action_order */
+ YYSYMBOL_trigger_follows_precedes_clause = 1987, /* trigger_follows_precedes_clause */
+ YYSYMBOL_trigger_tail = 1988, /* trigger_tail */
+ YYSYMBOL_1989_251 = 1989, /* $@251 */
+ YYSYMBOL_1990_252 = 1990, /* $@252 */
+ YYSYMBOL_1991_253 = 1991, /* $@253 */
+ YYSYMBOL_1992_254 = 1992, /* $@254 */
+ YYSYMBOL_1993_255 = 1993, /* $@255 */
+ YYSYMBOL_sf_return_type = 1994, /* sf_return_type */
+ YYSYMBOL_1995_256 = 1995, /* $@256 */
+ YYSYMBOL_create_package_chistic = 1996, /* create_package_chistic */
+ YYSYMBOL_create_package_chistics = 1997, /* create_package_chistics */
+ YYSYMBOL_opt_create_package_chistics = 1998, /* opt_create_package_chistics */
+ YYSYMBOL_opt_create_package_chistics_init = 1999, /* opt_create_package_chistics_init */
+ YYSYMBOL_2000_257 = 2000, /* $@257 */
+ YYSYMBOL_xa = 2001, /* xa */
+ YYSYMBOL_opt_format_xid = 2002, /* opt_format_xid */
+ YYSYMBOL_xid = 2003, /* xid */
+ YYSYMBOL_begin_or_start = 2004, /* begin_or_start */
+ YYSYMBOL_opt_join_or_resume = 2005, /* opt_join_or_resume */
+ YYSYMBOL_opt_one_phase = 2006, /* opt_one_phase */
+ YYSYMBOL_opt_suspend = 2007, /* opt_suspend */
+ YYSYMBOL_2008_258 = 2008, /* $@258 */
+ YYSYMBOL_opt_migrate = 2009, /* opt_migrate */
+ YYSYMBOL_install = 2010, /* install */
+ YYSYMBOL_uninstall = 2011, /* uninstall */
+ YYSYMBOL_keep_gcc_happy = 2012, /* keep_gcc_happy */
+ YYSYMBOL__empty = 2013, /* _empty */
+ YYSYMBOL_statement = 2014, /* statement */
+ YYSYMBOL_sp_statement = 2015, /* sp_statement */
+ YYSYMBOL_2016_259 = 2016, /* $@259 */
YYSYMBOL_2017_260 = 2017, /* $@260 */
- YYSYMBOL_remember_lex = 2018, /* remember_lex */
- YYSYMBOL_keyword_directly_assignable = 2019, /* keyword_directly_assignable */
- YYSYMBOL_ident_directly_assignable = 2020, /* ident_directly_assignable */
- YYSYMBOL_ident_cli_directly_assignable = 2021, /* ident_cli_directly_assignable */
- YYSYMBOL_set_assign = 2022, /* set_assign */
- YYSYMBOL_2023_261 = 2023, /* $@261 */
- YYSYMBOL_2024_262 = 2024, /* $@262 */
- YYSYMBOL_2025_263 = 2025, /* $@263 */
- YYSYMBOL_labels_declaration_oracle = 2026, /* labels_declaration_oracle */
- YYSYMBOL_label_declaration_oracle = 2027, /* label_declaration_oracle */
- YYSYMBOL_opt_exception_clause = 2028, /* opt_exception_clause */
- YYSYMBOL_exception_handlers = 2029, /* exception_handlers */
- YYSYMBOL_exception_handler = 2030, /* exception_handler */
- YYSYMBOL_2031_264 = 2031, /* $@264 */
- YYSYMBOL_sp_no_param = 2032, /* sp_no_param */
- YYSYMBOL_opt_sp_parenthesized_fdparam_list = 2033, /* opt_sp_parenthesized_fdparam_list */
- YYSYMBOL_opt_sp_parenthesized_pdparam_list = 2034, /* opt_sp_parenthesized_pdparam_list */
- YYSYMBOL_opt_sp_name = 2035, /* opt_sp_name */
- YYSYMBOL_opt_package_routine_end_name = 2036, /* opt_package_routine_end_name */
- YYSYMBOL_sp_tail_is = 2037, /* sp_tail_is */
- YYSYMBOL_sp_instr_addr = 2038, /* sp_instr_addr */
- YYSYMBOL_sp_body = 2039, /* sp_body */
- YYSYMBOL_2040_265 = 2040, /* $@265 */
- YYSYMBOL_2041_266 = 2041, /* $@266 */
- YYSYMBOL_2042_267 = 2042, /* $@267 */
- YYSYMBOL_create_package_chistic = 2043, /* create_package_chistic */
- YYSYMBOL_create_package_chistics = 2044, /* create_package_chistics */
- YYSYMBOL_opt_create_package_chistics = 2045, /* opt_create_package_chistics */
- YYSYMBOL_opt_create_package_chistics_init = 2046, /* opt_create_package_chistics_init */
- YYSYMBOL_2047_268 = 2047, /* $@268 */
- YYSYMBOL_package_implementation_executable_section = 2048, /* package_implementation_executable_section */
- YYSYMBOL_package_implementation_declare_section = 2049, /* package_implementation_declare_section */
- YYSYMBOL_package_implementation_declare_section_list1 = 2050, /* package_implementation_declare_section_list1 */
- YYSYMBOL_package_implementation_declare_section_list2 = 2051, /* package_implementation_declare_section_list2 */
- YYSYMBOL_package_routine_lex = 2052, /* package_routine_lex */
- YYSYMBOL_package_specification_function = 2053, /* package_specification_function */
- YYSYMBOL_2054_269 = 2054, /* $@269 */
- YYSYMBOL_package_specification_procedure = 2055, /* package_specification_procedure */
- YYSYMBOL_2056_270 = 2056, /* $@270 */
- YYSYMBOL_package_implementation_routine_definition = 2057, /* package_implementation_routine_definition */
- YYSYMBOL_package_implementation_function_body = 2058, /* package_implementation_function_body */
- YYSYMBOL_2059_271 = 2059, /* $@271 */
- YYSYMBOL_package_implementation_procedure_body = 2060, /* package_implementation_procedure_body */
- YYSYMBOL_2061_272 = 2061, /* $@272 */
- YYSYMBOL_package_implementation_item_declaration = 2062, /* package_implementation_item_declaration */
- YYSYMBOL_opt_package_specification_element_list = 2063, /* opt_package_specification_element_list */
- YYSYMBOL_package_specification_element_list = 2064, /* package_specification_element_list */
- YYSYMBOL_package_specification_element = 2065, /* package_specification_element */
- YYSYMBOL_sp_decl_variable_list_anchored = 2066, /* sp_decl_variable_list_anchored */
- YYSYMBOL_sp_param_name_and_mode = 2067, /* sp_param_name_and_mode */
- YYSYMBOL_sp_param = 2068, /* sp_param */
- YYSYMBOL_sp_param_anchored = 2069, /* sp_param_anchored */
- YYSYMBOL_sf_c_chistics_and_body_standalone = 2070, /* sf_c_chistics_and_body_standalone */
- YYSYMBOL_2071_273 = 2071, /* $@273 */
- YYSYMBOL_sp_tail_standalone = 2072, /* sp_tail_standalone */
- YYSYMBOL_2073_274 = 2073, /* $@274 */
- YYSYMBOL_2074_275 = 2074, /* $@275 */
- YYSYMBOL_drop_routine = 2075, /* drop_routine */
- YYSYMBOL_create_routine = 2076, /* create_routine */
- YYSYMBOL_2077_276 = 2077, /* $@276 */
- YYSYMBOL_2078_277 = 2078, /* $@277 */
- YYSYMBOL_2079_278 = 2079, /* $@278 */
- YYSYMBOL_2080_279 = 2080, /* $@279 */
- YYSYMBOL_2081_280 = 2081, /* $@280 */
- YYSYMBOL_2082_281 = 2082, /* $@281 */
- YYSYMBOL_2083_282 = 2083, /* $@282 */
- YYSYMBOL_opt_sp_decl_body_list = 2084, /* opt_sp_decl_body_list */
- YYSYMBOL_sp_decl_body_list = 2085, /* sp_decl_body_list */
- YYSYMBOL_2086_283 = 2086, /* $@283 */
- YYSYMBOL_sp_decl_non_handler_list = 2087, /* sp_decl_non_handler_list */
- YYSYMBOL_sp_decl_handler_list = 2088, /* sp_decl_handler_list */
- YYSYMBOL_opt_sp_decl_handler_list = 2089, /* opt_sp_decl_handler_list */
- YYSYMBOL_sp_decl_non_handler = 2090, /* sp_decl_non_handler */
- YYSYMBOL_2091_284 = 2091, /* $@284 */
- YYSYMBOL_sp_proc_stmt = 2092, /* sp_proc_stmt */
- YYSYMBOL_sp_labelable_stmt = 2093, /* sp_labelable_stmt */
- YYSYMBOL_sp_proc_stmt_compound_ok = 2094, /* sp_proc_stmt_compound_ok */
- YYSYMBOL_sp_labeled_block = 2095, /* sp_labeled_block */
- YYSYMBOL_2096_285 = 2096, /* $@285 */
- YYSYMBOL_2097_286 = 2097, /* $@286 */
- YYSYMBOL_2098_287 = 2098, /* $@287 */
- YYSYMBOL_opt_not_atomic = 2099, /* opt_not_atomic */
- YYSYMBOL_sp_unlabeled_block = 2100, /* sp_unlabeled_block */
- YYSYMBOL_2101_288 = 2101, /* $@288 */
- YYSYMBOL_2102_289 = 2102, /* $@289 */
- YYSYMBOL_2103_290 = 2103, /* $@290 */
- YYSYMBOL_sp_block_statements_and_exceptions = 2104, /* sp_block_statements_and_exceptions */
- YYSYMBOL_2105_291 = 2105 /* $@291 */
+ YYSYMBOL_2018_261 = 2018, /* $@261 */
+ YYSYMBOL_sp_if_then_statements = 2019, /* sp_if_then_statements */
+ YYSYMBOL_sp_case_then_statements = 2020, /* sp_case_then_statements */
+ YYSYMBOL_sp_parameters = 2021, /* sp_parameters */
+ YYSYMBOL_sf_parameters = 2022, /* sf_parameters */
+ YYSYMBOL_sf_returned_type_clause = 2023, /* sf_returned_type_clause */
+ YYSYMBOL_package_implementation_item_declaration = 2024, /* package_implementation_item_declaration */
+ YYSYMBOL_sp_package_function_body = 2025, /* sp_package_function_body */
+ YYSYMBOL_sp_package_procedure_body = 2026, /* sp_package_procedure_body */
+ YYSYMBOL_reserved_keyword_udt = 2027, /* reserved_keyword_udt */
+ YYSYMBOL_keyword_sp_block_section = 2028, /* keyword_sp_block_section */
+ YYSYMBOL_keyword_label = 2029, /* keyword_label */
+ YYSYMBOL_keyword_sp_decl = 2030, /* keyword_sp_decl */
+ YYSYMBOL_opt_truncate_table_storage_clause = 2031, /* opt_truncate_table_storage_clause */
+ YYSYMBOL_ident_for_loop_index = 2032, /* ident_for_loop_index */
+ YYSYMBOL_row_field_name = 2033, /* row_field_name */
+ YYSYMBOL_while_body = 2034, /* while_body */
+ YYSYMBOL_2035_262 = 2035, /* $@262 */
+ YYSYMBOL_for_loop_statements = 2036, /* for_loop_statements */
+ YYSYMBOL_sp_control_label = 2037, /* sp_control_label */
+ YYSYMBOL_sp_block_label = 2038, /* sp_block_label */
+ YYSYMBOL_sp_opt_default = 2039, /* sp_opt_default */
+ YYSYMBOL_sp_opt_inout = 2040, /* sp_opt_inout */
+ YYSYMBOL_sp_proc_stmts1_implicit_block = 2041, /* sp_proc_stmts1_implicit_block */
+ YYSYMBOL_2042_263 = 2042, /* $@263 */
+ YYSYMBOL_keyword_directly_assignable = 2043, /* keyword_directly_assignable */
+ YYSYMBOL_ident_directly_assignable = 2044, /* ident_directly_assignable */
+ YYSYMBOL_ident_cli_directly_assignable = 2045, /* ident_cli_directly_assignable */
+ YYSYMBOL_set_assign = 2046, /* set_assign */
+ YYSYMBOL_2047_264 = 2047, /* $@264 */
+ YYSYMBOL_2048_265 = 2048, /* $@265 */
+ YYSYMBOL_2049_266 = 2049, /* $@266 */
+ YYSYMBOL_labels_declaration_oracle = 2050, /* labels_declaration_oracle */
+ YYSYMBOL_label_declaration_oracle = 2051, /* label_declaration_oracle */
+ YYSYMBOL_opt_exception_clause = 2052, /* opt_exception_clause */
+ YYSYMBOL_exception_handlers = 2053, /* exception_handlers */
+ YYSYMBOL_exception_handler = 2054, /* exception_handler */
+ YYSYMBOL_2055_267 = 2055, /* $@267 */
+ YYSYMBOL_sp_no_param = 2056, /* sp_no_param */
+ YYSYMBOL_opt_sp_parenthesized_fdparam_list = 2057, /* opt_sp_parenthesized_fdparam_list */
+ YYSYMBOL_opt_sp_parenthesized_pdparam_list = 2058, /* opt_sp_parenthesized_pdparam_list */
+ YYSYMBOL_opt_trailing_sp_name = 2059, /* opt_trailing_sp_name */
+ YYSYMBOL_opt_package_routine_end_name = 2060, /* opt_package_routine_end_name */
+ YYSYMBOL_sp_tail_is = 2061, /* sp_tail_is */
+ YYSYMBOL_sp_instr_addr = 2062, /* sp_instr_addr */
+ YYSYMBOL_sp_body = 2063, /* sp_body */
+ YYSYMBOL_2064_268 = 2064, /* $@268 */
+ YYSYMBOL_2065_269 = 2065, /* $@269 */
+ YYSYMBOL_2066_270 = 2066, /* $@270 */
+ YYSYMBOL_package_implementation_declare_section_list = 2067, /* package_implementation_declare_section_list */
+ YYSYMBOL_package_implementation_declare_section = 2068, /* package_implementation_declare_section */
+ YYSYMBOL_package_implementation_executable_section = 2069, /* package_implementation_executable_section */
+ YYSYMBOL_package_implementation_declare_section_list1 = 2070, /* package_implementation_declare_section_list1 */
+ YYSYMBOL_package_implementation_declare_section_list2 = 2071, /* package_implementation_declare_section_list2 */
+ YYSYMBOL_package_specification_function = 2072, /* package_specification_function */
+ YYSYMBOL_2073_271 = 2073, /* $@271 */
+ YYSYMBOL_package_specification_procedure = 2074, /* package_specification_procedure */
+ YYSYMBOL_2075_272 = 2075, /* $@272 */
+ YYSYMBOL_package_implementation_routine_definition = 2076, /* package_implementation_routine_definition */
+ YYSYMBOL_package_implementation_function_body = 2077, /* package_implementation_function_body */
+ YYSYMBOL_2078_273 = 2078, /* $@273 */
+ YYSYMBOL_package_implementation_procedure_body = 2079, /* package_implementation_procedure_body */
+ YYSYMBOL_2080_274 = 2080, /* $@274 */
+ YYSYMBOL_opt_package_specification_element_list = 2081, /* opt_package_specification_element_list */
+ YYSYMBOL_package_specification_element_list = 2082, /* package_specification_element_list */
+ YYSYMBOL_package_specification_element = 2083, /* package_specification_element */
+ YYSYMBOL_sp_decl_variable_list_anchored = 2084, /* sp_decl_variable_list_anchored */
+ YYSYMBOL_sp_param_name_and_mode = 2085, /* sp_param_name_and_mode */
+ YYSYMBOL_sp_param = 2086, /* sp_param */
+ YYSYMBOL_sp_param_anchored = 2087, /* sp_param_anchored */
+ YYSYMBOL_sf_c_chistics_and_body_standalone = 2088, /* sf_c_chistics_and_body_standalone */
+ YYSYMBOL_2089_275 = 2089, /* $@275 */
+ YYSYMBOL_sp_tail_standalone = 2090, /* sp_tail_standalone */
+ YYSYMBOL_2091_276 = 2091, /* $@276 */
+ YYSYMBOL_2092_277 = 2092, /* $@277 */
+ YYSYMBOL_create_routine = 2093, /* create_routine */
+ YYSYMBOL_2094_278 = 2094, /* $@278 */
+ YYSYMBOL_2095_279 = 2095, /* $@279 */
+ YYSYMBOL_2096_280 = 2096, /* $@280 */
+ YYSYMBOL_2097_281 = 2097, /* $@281 */
+ YYSYMBOL_2098_282 = 2098, /* $@282 */
+ YYSYMBOL_2099_283 = 2099, /* $@283 */
+ YYSYMBOL_opt_sp_decl_body_list = 2100, /* opt_sp_decl_body_list */
+ YYSYMBOL_sp_decl_body_list = 2101, /* sp_decl_body_list */
+ YYSYMBOL_2102_284 = 2102, /* $@284 */
+ YYSYMBOL_sp_decl_non_handler_list = 2103, /* sp_decl_non_handler_list */
+ YYSYMBOL_sp_decl_handler_list = 2104, /* sp_decl_handler_list */
+ YYSYMBOL_opt_sp_decl_handler_list = 2105, /* opt_sp_decl_handler_list */
+ YYSYMBOL_sp_decl_non_handler = 2106, /* sp_decl_non_handler */
+ YYSYMBOL_2107_285 = 2107, /* $@285 */
+ YYSYMBOL_sp_proc_stmt = 2108, /* sp_proc_stmt */
+ YYSYMBOL_sp_labelable_stmt = 2109, /* sp_labelable_stmt */
+ YYSYMBOL_sp_proc_stmt_compound_ok = 2110, /* sp_proc_stmt_compound_ok */
+ YYSYMBOL_sp_labeled_block = 2111, /* sp_labeled_block */
+ YYSYMBOL_2112_286 = 2112, /* $@286 */
+ YYSYMBOL_2113_287 = 2113, /* $@287 */
+ YYSYMBOL_2114_288 = 2114, /* $@288 */
+ YYSYMBOL_opt_not_atomic = 2115, /* opt_not_atomic */
+ YYSYMBOL_sp_unlabeled_block = 2116, /* sp_unlabeled_block */
+ YYSYMBOL_2117_289 = 2117, /* $@289 */
+ YYSYMBOL_2118_290 = 2118, /* $@290 */
+ YYSYMBOL_2119_291 = 2119, /* $@291 */
+ YYSYMBOL_sp_block_statements_and_exceptions = 2120, /* sp_block_statements_and_exceptions */
+ YYSYMBOL_2121_292 = 2121 /* $@292 */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
/* Second part of user prologue. */
-#line 330 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 338 "/home/buildbot/git/sql/sql_yacc.yy"
/* avoid unintentional %union size increases, it's what a parser stack made of */
static_assert(sizeof(YYSTYPE) == sizeof(void*)*2+8, "%union size check");
bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
-#line 2389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 2408 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
#ifdef short
@@ -2707,21 +2726,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 757
+#define YYFINAL 762
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 108324
+#define YYLAST 108179
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 788
+#define YYNTOKENS 792
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 1318
+#define YYNNTS 1330
/* YYNRULES -- Number of rules. */
-#define YYNRULES 3833
+#define YYNRULES 3850
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 6409
+#define YYNSTATES 6440
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 1021
+#define YYMAXUTOK 1025
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -2738,16 +2757,16 @@ static const yytype_int16 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, 783, 2, 2, 2, 772, 767, 2,
- 779, 780, 770, 769, 782, 768, 787, 771, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 786,
- 765, 763, 764, 2, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 787, 2, 2, 2, 775, 770, 2,
+ 783, 784, 773, 772, 786, 771, 791, 774, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 790,
+ 768, 766, 767, 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, 773, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 776, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 784, 766, 785, 774, 2, 2, 2,
+ 2, 2, 2, 788, 769, 789, 777, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2836,398 +2855,400 @@ static const yytype_int16 yytranslate[] =
726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
- 756, 757, 758, 759, 760, 761, 762, 775, 776, 777,
- 778, 781
+ 756, 757, 758, 759, 760, 761, 762, 763, 764, 765,
+ 778, 779, 780, 781, 782, 785
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 1975, 1975, 1985, 1984, 2009, 2016, 2018, 2022, 2023,
- 2024, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037,
- 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047,
- 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057,
- 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067,
- 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077,
- 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
- 2088, 2092, 2099, 2100, 2105, 2104, 2115, 2121, 2123, 2120,
- 2132, 2134, 2133, 2143, 2148, 2160, 2159, 2176, 2175, 2185,
- 2186, 2190, 2194, 2198, 2202, 2206, 2210, 2220, 2225, 2229,
- 2233, 2237, 2241, 2245, 2250, 2254, 2259, 2287, 2291, 2295,
- 2300, 2303, 2305, 2306, 2310, 2316, 2318, 2319, 2323, 2329,
- 2331, 2332, 2336, 2343, 2347, 2362, 2366, 2372, 2378, 2384,
- 2390, 2398, 2402, 2406, 2418, 2421, 2426, 2448, 2460, 2447,
- 2483, 2482, 2538, 2545, 2537, 2557, 2564, 2556, 2577, 2583,
- 2576, 2595, 2601, 2594, 2613, 2612, 2626, 2624, 2640, 2638,
- 2652, 2651, 2662, 2661, 2671, 2678, 2685, 2685, 2688, 2692,
- 2693, 2697, 2698, 2702, 2707, 2713, 2719, 2727, 2733, 2739,
- 2747, 2755, 2763, 2771, 2779, 2787, 2799, 2815, 2815, 2819,
- 2818, 2830, 2831, 2835, 2840, 2845, 2850, 2855, 2860, 2865,
- 2873, 2872, 2905, 2904, 2911, 2918, 2919, 2925, 2931, 2941,
- 2947, 2953, 2955, 2962, 2963, 2967, 2977, 2978, 2986, 2986,
- 3028, 3037, 3038, 3043, 3044, 3045, 3046, 3051, 3056, 3064,
- 3065, 3069, 3070, 3075, 3077, 3079, 3081, 3083, 3085, 3087,
- 3093, 3094, 3098, 3099, 3104, 3103, 3114, 3113, 3124, 3123,
- 3136, 3138, 3141, 3143, 3147, 3151, 3160, 3165, 3165, 3175,
- 3176, 3180, 3188, 3190, 3194, 3195, 3199, 3200, 3201, 3206,
- 3205, 3217, 3221, 3222, 3226, 3227, 3232, 3238, 3244, 3254,
- 3262, 3267, 3275, 3279, 3288, 3286, 3300, 3308, 3313, 3312,
- 3326, 3328, 3333, 3343, 3342, 3361, 3362, 3363, 3364, 3369,
- 3371, 3376, 3391, 3399, 3403, 3423, 3424, 3428, 3432, 3438,
- 3444, 3450, 3456, 3466, 3471, 3479, 3487, 3492, 3498, 3499,
- 3505, 3508, 3512, 3520, 3537, 3539, 3557, 3563, 3565, 3567,
- 3569, 3571, 3573, 3575, 3577, 3579, 3581, 3583, 3585, 3587,
- 3592, 3600, 3616, 3617, 3622, 3628, 3637, 3644, 3653, 3662,
- 3667, 3681, 3683, 3685, 3694, 3699, 3706, 3715, 3724, 3726,
- 3728, 3730, 3732, 3734, 3736, 3738, 3740, 3742, 3744, 3746,
- 3748, 3750, 3755, 3756, 3764, 3776, 3792, 3791, 3802, 3802,
- 3824, 3825, 3830, 3829, 3837, 3848, 3853, 3859, 3858, 3865,
- 3864, 3873, 3878, 3884, 3883, 3890, 3889, 3899, 3907, 3915,
- 3924, 3924, 3947, 3957, 3956, 3977, 3976, 3996, 4002, 4010,
- 4011, 4015, 4016, 4017, 4021, 4029, 4034, 4039, 4047, 4048,
- 4056, 4074, 4090, 4110, 4115, 4109, 4127, 4129, 4130, 4131,
- 4136, 4135, 4206, 4205, 4212, 4217, 4218, 4222, 4223, 4228,
- 4227, 4243, 4242, 4257, 4267, 4271, 4272, 4277, 4278, 4282,
- 4290, 4295, 4302, 4311, 4325, 4333, 4342, 4341, 4349, 4348,
- 4356, 4361, 4368, 4355, 4378, 4377, 4388, 4387, 4397, 4396,
- 4406, 4413, 4405, 4428, 4427, 4439, 4441, 4446, 4448, 4450,
- 4456, 4455, 4458, 4459, 4473, 4474, 4478, 4479, 4489, 4494,
- 4505, 4542, 4543, 4548, 4547, 4563, 4578, 4577, 4599, 4598,
- 4604, 4612, 4611, 4614, 4616, 4619, 4618, 4627, 4630, 4629,
- 4638, 4639, 4645, 4646, 4663, 4664, 4668, 4669, 4673, 4687,
- 4697, 4708, 4717, 4718, 4731, 4733, 4732, 4737, 4735, 4746,
- 4747, 4751, 4765, 4777, 4778, 4791, 4800, 4822, 4823, 4826,
- 4828, 4833, 4832, 4856, 4868, 4884, 4883, 4898, 4897, 4911,
- 4918, 4925, 4945, 4963, 4967, 4994, 5006, 5007, 5012, 5021,
- 5011, 5046, 5047, 5051, 5062, 5081, 5094, 5120, 5121, 5126,
- 5125, 5162, 5171, 5172, 5176, 5177, 5181, 5182, 5190, 5191,
- 5195, 5196, 5200, 5202, 5208, 5214, 5216, 5218, 5220, 5222,
- 5224, 5229, 5230, 5230, 5239, 5251, 5254, 5262, 5265, 5275,
- 5276, 5280, 5281, 5285, 5286, 5290, 5291, 5292, 5301, 5304,
- 5312, 5315, 5322, 5326, 5332, 5334, 5338, 5339, 5343, 5344,
- 5345, 5349, 5364, 5369, 5374, 5379, 5384, 5389, 5394, 5409,
- 5415, 5430, 5435, 5450, 5456, 5474, 5479, 5484, 5489, 5494,
- 5499, 5505, 5504, 5530, 5531, 5532, 5537, 5542, 5547, 5549,
- 5551, 5553, 5559, 5564, 5569, 5573, 5578, 5582, 5589, 5596,
- 5601, 5608, 5610, 5614, 5633, 5641, 5650, 5660, 5671, 5672,
- 5673, 5674, 5675, 5676, 5677, 5681, 5682, 5683, 5687, 5688,
- 5689, 5690, 5695, 5702, 5709, 5710, 5714, 5715, 5716, 5717,
- 5718, 5722, 5724, 5735, 5734, 5742, 5741, 5749, 5748, 5756,
- 5755, 5765, 5762, 5773, 5771, 5780, 5779, 5798, 5806, 5814,
- 5822, 5823, 5827, 5837, 5838, 5842, 5843, 5847, 5852, 5851,
- 5890, 5889, 5902, 5901, 5912, 5913, 5917, 5918, 5922, 5923,
- 5927, 5928, 5932, 5933, 5934, 5935, 5941, 5940, 5948, 5954,
- 5963, 5964, 5969, 5972, 5976, 5980, 5987, 5988, 5992, 5993,
- 5997, 6003, 6009, 6010, 6018, 6017, 6039, 6040, 6050, 6058,
- 6070, 6070, 6073, 6074, 6081, 6088, 6092, 6100, 6101, 6102,
- 6106, 6107, 6108, 6109, 6110, 6111, 6119, 6123, 6124, 6138,
- 6142, 6146, 6150, 6152, 6159, 6161, 6167, 6168, 6169, 6170,
- 6174, 6178, 6183, 6187, 6191, 6195, 6200, 6204, 6211, 6227,
- 6228, 6235, 6242, 6250, 6254, 6258, 6262, 6266, 6270, 6274,
- 6278, 6280, 6282, 6284, 6286, 6288, 6290, 6292, 6299, 6301,
- 6306, 6310, 6311, 6315, 6316, 6320, 6321, 6322, 6323, 6324,
- 6328, 6329, 6330, 6331, 6332, 6336, 6342, 6343, 6348, 6350,
- 6357, 6358, 6359, 6363, 6367, 6368, 6369, 6370, 6371, 6372,
- 6376, 6380, 6381, 6382, 6383, 6386, 6390, 6395, 6396, 6400,
- 6401, 6405, 6406, 6411, 6416, 6420, 6426, 6431, 6439, 6440,
- 6447, 6451, 6455, 6456, 6460, 6461, 6465, 6466, 6470, 6478,
- 6486, 6495, 6499, 6505, 6509, 6510, 6514, 6527, 6533, 6543,
- 6544, 6548, 6555, 6559, 6560, 6564, 6565, 6569, 6578, 6582,
- 6583, 6587, 6595, 6596, 6600, 6601, 6605, 6606, 6607, 6615,
- 6616, 6620, 6624, 6628, 6633, 6634, 6639, 6643, 6649, 6653,
- 6660, 6661, 6666, 6665, 6678, 6679, 6683, 6686, 6687, 6688,
- 6689, 6693, 6701, 6708, 6709, 6713, 6723, 6724, 6728, 6729,
- 6732, 6734, 6738, 6750, 6751, 6755, 6762, 6775, 6776, 6778,
- 6780, 6786, 6791, 6797, 6803, 6810, 6820, 6821, 6822, 6823,
- 6824, 6828, 6829, 6833, 6834, 6838, 6839, 6843, 6844, 6845,
- 6849, 6853, 6865, 6866, 6870, 6871, 6875, 6876, 6880, 6881,
- 6885, 6886, 6890, 6891, 6895, 6896, 6901, 6902, 6903, 6907,
- 6909, 6914, 6919, 6921, 6925, 6929, 6936, 6937, 6941, 6945,
- 6946, 6956, 6957, 6958, 6962, 6963, 6967, 6972, 6980, 6981,
- 6989, 6995, 7007, 7008, 7012, 7014, 7024, 7040, 7023, 7063,
- 7062, 7079, 7078, 7093, 7102, 7101, 7109, 7108, 7116, 7115,
- 7129, 7123, 7137, 7136, 7176, 7175, 7182, 7189, 7197, 7207,
- 7188, 7216, 7220, 7228, 7231, 7235, 7239, 7247, 7249, 7250,
- 7251, 7252, 7256, 7257, 7258, 7259, 7263, 7264, 7276, 7277,
- 7282, 7283, 7286, 7288, 7296, 7304, 7306, 7308, 7309, 7317,
- 7318, 7324, 7333, 7331, 7344, 7357, 7356, 7369, 7367, 7380,
- 7387, 7397, 7398, 7404, 7416, 7415, 7455, 7462, 7466, 7472,
- 7470, 7487, 7489, 7494, 7502, 7501, 7515, 7519, 7518, 7530,
- 7531, 7535, 7548, 7549, 7553, 7557, 7564, 7569, 7573, 7580,
- 7587, 7591, 7596, 7604, 7612, 7622, 7633, 7643, 7654, 7664,
- 7670, 7676, 7683, 7693, 7698, 7704, 7709, 7719, 7724, 7730,
- 7735, 7739, 7744, 7745, 7746, 7751, 7756, 7760, 7770, 7772,
- 7773, 7774, 7775, 7779, 7784, 7792, 7797, 7805, 7806, 7810,
- 7811, 7815, 7815, 7818, 7820, 7824, 7825, 7829, 7830, 7838,
- 7839, 7840, 7844, 7845, 7850, 7859, 7860, 7861, 7862, 7867,
- 7866, 7876, 7875, 7883, 7890, 7900, 7917, 7920, 7927, 7931,
- 7938, 7942, 7946, 7953, 7953, 7959, 7960, 7964, 7965, 7966,
- 7970, 7971, 7980, 7987, 7988, 7993, 7992, 8004, 8005, 8006,
- 8010, 8012, 8011, 8018, 8017, 8038, 8039, 8043, 8044, 8048,
- 8049, 8050, 8054, 8055, 8056, 8061, 8060, 8081, 8082, 8086,
- 8091, 8092, 8099, 8101, 8106, 8108, 8107, 8120, 8122, 8121,
- 8135, 8136, 8141, 8150, 8151, 8152, 8156, 8163, 8173, 8181,
- 8190, 8192, 8191, 8197, 8196, 8219, 8220, 8224, 8225, 8229,
- 8230, 8231, 8232, 8233, 8234, 8238, 8239, 8244, 8243, 8264,
- 8265, 8266, 8271, 8270, 8281, 8288, 8294, 8303, 8304, 8308,
- 8324, 8323, 8336, 8337, 8341, 8342, 8346, 8357, 8368, 8369,
- 8374, 8373, 8388, 8389, 8393, 8394, 8398, 8409, 8421, 8420,
- 8428, 8428, 8437, 8438, 8443, 8444, 8454, 8453, 8468, 8467,
- 8486, 8485, 8502, 8500, 8521, 8522, 8527, 8526, 8540, 8549,
- 8539, 8559, 8571, 8635, 8640, 8655, 8656, 8671, 8670, 8686,
- 8685, 8698, 8700, 8715, 8723, 8721, 8736, 8754, 8756, 8766,
- 8770, 8811, 8820, 8830, 8831, 8835, 8839, 8845, 8852, 8854,
- 8863, 8867, 8871, 8878, 8887, 8891, 8898, 8915, 8918, 8926,
- 8929, 8936, 8940, 8944, 8948, 8955, 8956, 8960, 8961, 8970,
- 8983, 8989, 9000, 9003, 9011, 9014, 9020, 9026, 9035, 9036,
- 9037, 9057, 9062, 9084, 9090, 9096, 9102, 9103, 9104, 9105,
- 9106, 9110, 9111, 9112, 9116, 9117, 9118, 9122, 9123, 9128,
- 9179, 9186, 9229, 9235, 9239, 9245, 9251, 9257, 9263, 9269,
- 9275, 9281, 9287, 9293, 9299, 9305, 9309, 9315, 9324, 9330,
- 9338, 9344, 9353, 9359, 9367, 9377, 9383, 9390, 9397, 9405,
- 9411, 9420, 9424, 9430, 9436, 9442, 9448, 9455, 9461, 9467,
- 9473, 9479, 9486, 9492, 9498, 9504, 9510, 9516, 9522, 9528,
- 9534, 9538, 9539, 9543, 9544, 9548, 9549, 9553, 9554, 9558,
- 9559, 9560, 9561, 9562, 9563, 9567, 9568, 9573, 9576, 9580,
- 9581, 9582, 9586, 9587, 9588, 9589, 9590, 9591, 9595, 9596,
- 9597, 9601, 9606, 9613, 9635, 9642, 9651, 9652, 9653, 9654,
- 9658, 9667, 9668, 9672, 9676, 9677, 9678, 9679, 9680, 9681,
- 9682, 9714, 9715, 9716, 9717, 9718, 9719, 9720, 9721, 9722,
- 9730, 9738, 9739, 9746, 9752, 9757, 9767, 9772, 9777, 9783,
- 9788, 9794, 9805, 9812, 9817, 9822, 9827, 9832, 9837, 9842,
- 9850, 9851, 9852, 9853, 9861, 9862, 9871, 9872, 9878, 9882,
- 9888, 9894, 9903, 9904, 9913, 9920, 9934, 9940, 9946, 9955,
- 9964, 9970, 9976, 9982, 9988, 10003, 10014, 10020, 10026, 10032,
- 10038, 10044, 10052, 10059, 10063, 10069, 10077, 10086, 10087, 10091,
- 10095, 10102, 10106, 10126, 10133, 10139, 10146, 10153, 10159, 10165,
- 10171, 10177, 10184, 10190, 10201, 10208, 10214, 10221, 10227, 10232,
- 10237, 10243, 10249, 10254, 10261, 10268, 10276, 10283, 10290, 10297,
- 10312, 10318, 10324, 10333, 10344, 10351, 10357, 10365, 10371, 10377,
- 10383, 10389, 10397, 10409, 10429, 10428, 10504, 10510, 10516, 10522,
- 10527, 10532, 10537, 10542, 10547, 10552, 10572, 10574, 10579, 10580,
- 10584, 10585, 10589, 10590, 10594, 10601, 10609, 10636, 10642, 10648,
- 10654, 10660, 10666, 10675, 10682, 10684, 10681, 10691, 10702, 10708,
- 10714, 10720, 10726, 10732, 10738, 10744, 10750, 10757, 10756, 10777,
- 10776, 10807, 10806, 10820, 10829, 10847, 10849, 10851, 10866, 10873,
- 10880, 10887, 10894, 10901, 10908, 10915, 10922, 10929, 10940, 10947,
- 10958, 10969, 10989, 10988, 10994, 11011, 11017, 11026, 11035, 11045,
- 11044, 11056, 11071, 11084, 11089, 11097, 11098, 11103, 11108, 11111,
- 11113, 11117, 11122, 11130, 11131, 11136, 11143, 11153, 11152, 11169,
- 11171, 11177, 11183, 11189, 11193, 11194, 11195, 11203, 11204, 11205,
- 11206, 11207, 11208, 11209, 11210, 11214, 11215, 11216, 11217, 11224,
- 11225, 11229, 11234, 11242, 11243, 11247, 11254, 11262, 11271, 11281,
- 11282, 11293, 11294, 11306, 11310, 11314, 11322, 11323, 11327, 11331,
- 11335, 11342, 11346, 11351, 11352, 11358, 11357, 11386, 11385, 11401,
- 11410, 11422, 11434, 11435, 11436, 11437, 11442, 11443, 11444, 11445,
- 11446, 11450, 11454, 11458, 11468, 11475, 11483, 11489, 11482, 11535,
- 11536, 11542, 11547, 11561, 11569, 11567, 11587, 11585, 11598, 11610,
- 11608, 11628, 11627, 11639, 11652, 11650, 11671, 11670, 11683, 11697,
- 11698, 11699, 11703, 11704, 11712, 11713, 11717, 11726, 11727, 11728,
- 11733, 11734, 11738, 11739, 11743, 11744, 11748, 11749, 11757, 11765,
- 11773, 11774, 11787, 11803, 11810, 11822, 11823, 11828, 11832, 11833,
- 11834, 11838, 11839, 11844, 11843, 11849, 11848, 11856, 11857, 11860,
- 11862, 11862, 11866, 11866, 11871, 11872, 11876, 11878, 11883, 11884,
- 11888, 11899, 11913, 11914, 11915, 11916, 11917, 11918, 11919, 11920,
- 11921, 11922, 11923, 11924, 11928, 11929, 11930, 11931, 11932, 11933,
- 11934, 11935, 11936, 11940, 11941, 11942, 11943, 11946, 11948, 11949,
- 11953, 11954, 11958, 11966, 11968, 11972, 11974, 11973, 11987, 11990,
- 11989, 12007, 12009, 12013, 12018, 12026, 12027, 12044, 12067, 12068,
- 12074, 12075, 12079, 12092, 12091, 12100, 12101, 12110, 12111, 12115,
- 12116, 12120, 12121, 12135, 12136, 12140, 12150, 12159, 12166, 12173,
- 12183, 12184, 12191, 12201, 12202, 12204, 12206, 12208, 12210, 12219,
- 12223, 12224, 12228, 12242, 12243, 12249, 12248, 12259, 12265, 12274,
- 12275, 12276, 12282, 12283, 12288, 12295, 12301, 12306, 12317, 12327,
- 12338, 12345, 12353, 12363, 12364, 12368, 12369, 12373, 12374, 12379,
- 12386, 12393, 12400, 12410, 12415, 12420, 12424, 12430, 12436, 12445,
- 12453, 12457, 12464, 12465, 12469, 12474, 12479, 12492, 12496, 12500,
- 12504, 12509, 12512, 12516, 12530, 12538, 12549, 12551, 12555, 12556,
- 12560, 12561, 12562, 12563, 12564, 12565, 12569, 12570, 12571, 12572,
- 12573, 12577, 12578, 12579, 12580, 12584, 12585, 12586, 12587, 12588,
- 12592, 12593, 12594, 12595, 12596, 12600, 12605, 12606, 12610, 12611,
- 12615, 12616, 12617, 12622, 12621, 12653, 12654, 12658, 12659, 12663,
- 12673, 12673, 12685, 12686, 12689, 12709, 12719, 12724, 12732, 12738,
- 12749, 12737, 12751, 12766, 12778, 12777, 12800, 12799, 12809, 12808,
- 12831, 12837, 12841, 12846, 12845, 12854, 12859, 12865, 12872, 12870,
- 12881, 12885, 12886, 12890, 12902, 12915, 12916, 12920, 12934, 12938,
- 12947, 12950, 12957, 12958, 12966, 12973, 12965, 12986, 12993, 12985,
- 13004, 13013, 13022, 13030, 13031, 13035, 13036, 13040, 13041, 13049,
- 13049, 13052, 13052, 13065, 13066, 13068, 13067, 13080, 13086, 13088,
- 13092, 13094, 13100, 13104, 13105, 13109, 13110, 13114, 13124, 13125,
- 13129, 13130, 13134, 13135, 13139, 13140, 13145, 13144, 13161, 13160,
- 13176, 13177, 13181, 13182, 13186, 13191, 13199, 13207, 13218, 13219,
- 13228, 13229, 13237, 13239, 13241, 13239, 13251, 13263, 13270, 13280,
- 13299, 13269, 13306, 13307, 13311, 13318, 13326, 13327, 13331, 13341,
- 13342, 13349, 13348, 13369, 13372, 13379, 13380, 13390, 13405, 13413,
- 13426, 13432, 13425, 13437, 13443, 13436, 13451, 13455, 13454, 13488,
- 13489, 13493, 13508, 13526, 13527, 13531, 13532, 13536, 13537, 13538,
- 13543, 13554, 13542, 13564, 13566, 13569, 13571, 13574, 13575, 13578,
- 13582, 13586, 13590, 13594, 13598, 13602, 13606, 13610, 13618, 13621,
- 13631, 13630, 13649, 13656, 13664, 13672, 13680, 13688, 13696, 13703,
- 13710, 13716, 13718, 13720, 13729, 13733, 13738, 13737, 13744, 13743,
- 13750, 13759, 13766, 13771, 13776, 13781, 13786, 13791, 13793, 13795,
- 13797, 13804, 13812, 13814, 13822, 13829, 13836, 13844, 13850, 13855,
- 13863, 13871, 13879, 13883, 13887, 13894, 13901, 13908, 13915, 13921,
- 13927, 13933, 13939, 13945, 13953, 13958, 13965, 13972, 13979, 13986,
- 13993, 14000, 14005, 14010, 14015, 14020, 14025, 14037, 14045, 14067,
- 14069, 14071, 14076, 14077, 14080, 14082, 14086, 14087, 14091, 14092,
- 14096, 14097, 14101, 14102, 14106, 14107, 14111, 14112, 14121, 14133,
- 14132, 14151, 14150, 14160, 14161, 14162, 14163, 14164, 14165, 14169,
- 14170, 14174, 14181, 14182, 14184, 14185, 14189, 14190, 14203, 14204,
- 14205, 14221, 14245, 14244, 14256, 14255, 14267, 14272, 14273, 14286,
- 14289, 14288, 14301, 14302, 14307, 14309, 14311, 14313, 14315, 14317,
- 14325, 14327, 14329, 14331, 14336, 14338, 14346, 14348, 14350, 14352,
- 14354, 14356, 14373, 14374, 14378, 14382, 14395, 14394, 14409, 14419,
- 14420, 14423, 14425, 14426, 14430, 14446, 14447, 14452, 14451, 14461,
- 14462, 14466, 14466, 14471, 14470, 14476, 14480, 14481, 14485, 14486,
- 14493, 14498, 14497, 14512, 14511, 14526, 14527, 14528, 14532, 14533,
- 14534, 14543, 14544, 14548, 14552, 14560, 14560, 14565, 14566, 14575,
- 14587, 14601, 14612, 14625, 14586, 14636, 14637, 14641, 14642, 14646,
- 14647, 14655, 14659, 14660, 14661, 14664, 14666, 14670, 14671, 14675,
- 14680, 14687, 14692, 14699, 14701, 14705, 14706, 14710, 14715, 14723,
- 14724, 14728, 14730, 14738, 14739, 14743, 14744, 14745, 14749, 14751,
- 14756, 14757, 14772, 14773, 14777, 14778, 14782, 14795, 14800, 14805,
- 14810, 14818, 14826, 14831, 14839, 14847, 14862, 14869, 14875, 14885,
- 14886, 14894, 14895, 14896, 14897, 14911, 14917, 14923, 14929, 14935,
- 14941, 14962, 14972, 14982, 14988, 14995, 15005, 15012, 15019, 15030,
- 15029, 15054, 15055, 15060, 15061, 15066, 15090, 15093, 15092, 15108,
- 15112, 15117, 15121, 15128, 15134, 15143, 15161, 15162, 15166, 15171,
- 15179, 15184, 15192, 15197, 15202, 15207, 15213, 15218, 15226, 15231,
- 15236, 15241, 15247, 15255, 15256, 15267, 15275, 15279, 15285, 15291,
- 15301, 15307, 15316, 15326, 15327, 15331, 15332, 15333, 15337, 15345,
- 15346, 15347, 15348, 15352, 15361, 15369, 15377, 15385, 15386, 15394,
- 15395, 15399, 15400, 15405, 15414, 15415, 15423, 15424, 15432, 15433,
- 15434, 15438, 15449, 15478, 15487, 15487, 15489, 15499, 15500, 15501,
- 15502, 15503, 15504, 15505, 15506, 15507, 15508, 15509, 15510, 15515,
- 15516, 15517, 15518, 15519, 15520, 15521, 15522, 15523, 15524, 15525,
- 15526, 15527, 15531, 15532, 15533, 15534, 15535, 15536, 15537, 15538,
- 15539, 15540, 15541, 15542, 15543, 15547, 15548, 15549, 15550, 15551,
- 15552, 15553, 15554, 15555, 15556, 15557, 15558, 15559, 15563, 15564,
- 15565, 15566, 15567, 15568, 15569, 15570, 15583, 15584, 15585, 15586,
- 15587, 15588, 15589, 15590, 15591, 15592, 15593, 15594, 15595, 15596,
- 15597, 15598, 15599, 15600, 15601, 15602, 15603, 15604, 15605, 15606,
- 15607, 15608, 15609, 15610, 15611, 15612, 15613, 15614, 15615, 15616,
- 15617, 15618, 15619, 15620, 15621, 15622, 15623, 15624, 15625, 15626,
- 15627, 15628, 15629, 15630, 15631, 15632, 15633, 15634, 15635, 15676,
- 15677, 15678, 15679, 15680, 15681, 15692, 15693, 15694, 15695, 15696,
- 15697, 15698, 15699, 15700, 15701, 15705, 15706, 15707, 15711, 15712,
- 15713, 15722, 15723, 15724, 15725, 15726, 15727, 15728, 15729, 15730,
- 15731, 15732, 15733, 15734, 15735, 15736, 15737, 15738, 15739, 15740,
- 15741, 15742, 15743, 15744, 15745, 15746, 15747, 15752, 15757, 15758,
- 15759, 15760, 15761, 15762, 15763, 15764, 15765, 15766, 15767, 15768,
- 15769, 15770, 15771, 15772, 15773, 15774, 15775, 15776, 15777, 15778,
- 15779, 15780, 15781, 15782, 15783, 15784, 15785, 15786, 15787, 15788,
- 15789, 15790, 15791, 15792, 15793, 15794, 15795, 15796, 15797, 15798,
- 15799, 15800, 15805, 15806, 15807, 15808, 15809, 15810, 15811, 15812,
- 15813, 15814, 15815, 15816, 15817, 15818, 15819, 15820, 15821, 15822,
- 15823, 15824, 15825, 15826, 15827, 15828, 15829, 15830, 15831, 15832,
- 15833, 15834, 15835, 15836, 15837, 15838, 15839, 15840, 15841, 15842,
- 15843, 15844, 15845, 15846, 15847, 15848, 15849, 15850, 15851, 15852,
- 15853, 15854, 15855, 15856, 15857, 15858, 15859, 15860, 15861, 15862,
- 15863, 15864, 15865, 15866, 15867, 15868, 15869, 15870, 15871, 15872,
- 15873, 15874, 15875, 15876, 15877, 15878, 15879, 15880, 15881, 15882,
- 15883, 15884, 15885, 15886, 15887, 15888, 15889, 15890, 15891, 15892,
- 15893, 15894, 15895, 15896, 15897, 15898, 15899, 15900, 15901, 15902,
- 15903, 15904, 15905, 15906, 15907, 15908, 15909, 15910, 15911, 15912,
- 15913, 15914, 15915, 15919, 15920, 15921, 15922, 15923, 15924, 15925,
- 15926, 15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934, 15935,
- 15936, 15937, 15938, 15939, 15940, 15941, 15942, 15943, 15944, 15945,
- 15946, 15947, 15948, 15949, 15950, 15951, 15952, 15953, 15954, 15955,
- 15956, 15957, 15958, 15959, 15960, 15961, 15962, 15963, 15964, 15965,
- 15966, 15967, 15968, 15969, 15970, 15971, 15972, 15973, 15974, 15975,
- 15976, 15977, 15978, 15979, 15980, 15981, 15982, 15983, 15984, 15985,
- 15986, 15987, 15988, 15989, 15990, 15991, 15992, 15993, 15994, 15995,
- 15996, 15997, 15998, 15999, 16000, 16001, 16002, 16003, 16004, 16005,
- 16006, 16007, 16008, 16009, 16010, 16011, 16012, 16013, 16014, 16015,
- 16016, 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025,
- 16026, 16027, 16028, 16029, 16030, 16031, 16032, 16033, 16034, 16035,
- 16036, 16037, 16038, 16039, 16040, 16041, 16042, 16043, 16044, 16045,
- 16046, 16047, 16048, 16049, 16050, 16051, 16052, 16053, 16054, 16055,
- 16056, 16057, 16058, 16059, 16060, 16061, 16062, 16063, 16064, 16068,
- 16069, 16075, 16076, 16077, 16078, 16079, 16080, 16081, 16082, 16083,
- 16084, 16085, 16086, 16087, 16088, 16089, 16093, 16094, 16095, 16096,
- 16100, 16101, 16102, 16103, 16104, 16105, 16110, 16111, 16112, 16113,
- 16114, 16115, 16116, 16117, 16118, 16119, 16120, 16121, 16122, 16123,
- 16124, 16125, 16126, 16127, 16128, 16129, 16130, 16131, 16132, 16133,
- 16134, 16135, 16136, 16137, 16138, 16139, 16140, 16141, 16142, 16143,
- 16144, 16145, 16146, 16147, 16148, 16149, 16150, 16151, 16152, 16153,
- 16154, 16155, 16156, 16157, 16158, 16159, 16160, 16161, 16162, 16163,
- 16164, 16165, 16166, 16167, 16168, 16169, 16170, 16171, 16172, 16173,
- 16174, 16175, 16176, 16177, 16178, 16179, 16180, 16181, 16182, 16183,
- 16184, 16185, 16186, 16187, 16188, 16189, 16190, 16191, 16192, 16193,
- 16194, 16195, 16196, 16197, 16198, 16199, 16200, 16201, 16202, 16203,
- 16204, 16205, 16206, 16207, 16208, 16209, 16210, 16211, 16212, 16213,
- 16214, 16215, 16216, 16217, 16218, 16219, 16220, 16221, 16222, 16223,
- 16224, 16225, 16226, 16227, 16228, 16229, 16231, 16233, 16234, 16235,
- 16236, 16237, 16238, 16239, 16240, 16241, 16242, 16243, 16244, 16245,
- 16246, 16247, 16248, 16249, 16250, 16251, 16252, 16253, 16254, 16255,
- 16256, 16257, 16258, 16259, 16260, 16261, 16262, 16263, 16264, 16265,
- 16266, 16267, 16268, 16269, 16270, 16271, 16272, 16273, 16274, 16275,
- 16276, 16277, 16278, 16279, 16280, 16281, 16282, 16283, 16284, 16285,
- 16286, 16287, 16288, 16289, 16290, 16291, 16292, 16293, 16294, 16295,
- 16296, 16297, 16298, 16299, 16300, 16301, 16302, 16303, 16304, 16305,
- 16306, 16307, 16308, 16309, 16310, 16311, 16312, 16313, 16314, 16315,
- 16316, 16317, 16318, 16319, 16320, 16321, 16322, 16323, 16324, 16325,
- 16326, 16327, 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
- 16336, 16337, 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345,
- 16346, 16347, 16359, 16358, 16371, 16372, 16374, 16373, 16385, 16384,
- 16391, 16389, 16409, 16410, 16415, 16416, 16418, 16417, 16431, 16432,
- 16438, 16437, 16442, 16446, 16447, 16448, 16452, 16453, 16454, 16455,
- 16459, 16460, 16461, 16462, 16471, 16470, 16484, 16483, 16498, 16497,
- 16515, 16514, 16528, 16527, 16541, 16540, 16556, 16555, 16569, 16568,
- 16582, 16581, 16594, 16593, 16611, 16610, 16622, 16621, 16633, 16632,
- 16643, 16661, 16672, 16679, 16688, 16710, 16726, 16738, 16737, 16751,
- 16750, 16762, 16761, 16775, 16776, 16777, 16778, 16782, 16801, 16819,
- 16820, 16824, 16825, 16826, 16827, 16832, 16837, 16842, 16853, 16854,
- 16855, 16861, 16867, 16879, 16878, 16892, 16893, 16899, 16908, 16909,
- 16913, 16914, 16918, 16937, 16938, 16939, 16944, 16945, 16950, 16949,
- 16967, 16966, 16978, 16987, 16997, 16996, 17039, 17040, 17044, 17045,
- 17049, 17050, 17051, 17052, 17054, 17053, 17066, 17067, 17068, 17069,
- 17070, 17076, 17081, 17086, 17091, 17095, 17100, 17109, 17111, 17116,
- 17121, 17127, 17133, 17138, 17150, 17151, 17155, 17156, 17160, 17165,
- 17173, 17182, 17203, 17203, 17205, 17207, 17211, 17212, 17219, 17221,
- 17225, 17230, 17237, 17241, 17250, 17257, 17258, 17259, 17260, 17264,
- 17265, 17266, 17267, 17268, 17269, 17270, 17271, 17272, 17273, 17274,
- 17275, 17276, 17277, 17278, 17279, 17280, 17281, 17282, 17283, 17284,
- 17285, 17286, 17287, 17288, 17289, 17290, 17291, 17292, 17293, 17294,
- 17295, 17296, 17297, 17298, 17299, 17300, 17301, 17302, 17303, 17304,
- 17305, 17309, 17310, 17314, 17315, 17319, 17326, 17333, 17343, 17352,
- 17358, 17365, 17373, 17378, 17386, 17391, 17399, 17404, 17411, 17411,
- 17412, 17412, 17415, 17421, 17427, 17432, 17439, 17445, 17452, 17461,
- 17465, 17471, 17479, 17481, 17485, 17489, 17493, 17500, 17505, 17510,
- 17515, 17520, 17528, 17529, 17533, 17534, 17539, 17540, 17544, 17545,
- 17549, 17550, 17554, 17555, 17560, 17559, 17569, 17578, 17579, 17583,
- 17584, 17589, 17590, 17591, 17596, 17597, 17598, 17602, 17614, 17623,
- 17629, 17638, 17647, 17660, 17662, 17664, 17672, 17673, 17674, 17678,
- 17679, 17685, 17686, 17687, 17688, 17689, 17690, 17691, 17701, 17702,
- 17707, 17720, 17734, 17735, 17736, 17740, 17741, 17745, 17746, 17751,
- 17752, 17756, 17762, 17771, 17771, 17785, 17786, 17787, 17788, 17798,
- 17800, 17806, 17812, 17822, 17831, 17837, 17842, 17846, 17820, 17895,
- 17895, 17910, 17914, 17918, 17922, 17926, 17930, 17938, 17939, 17955,
- 17962, 17969, 17982, 17983, 17984, 17988, 17989, 17990, 17994, 17995,
- 18000, 18002, 18001, 18007, 18008, 18012, 18017, 18024, 18029, 18038,
- 18044, 18473, 18474, 18478, 18480, 18479, 18493, 18492, 18505, 18504,
- 18518, 18522, 18526, 18531, 18532, 18538, 18539, 18540, 18541, 18542,
- 18543, 18544, 18545, 18549, 18550, 18551, 18552, 18553, 18554, 18555,
- 18556, 18560, 18561, 18562, 18567, 18571, 18580, 18579, 18592, 18598,
- 18602, 18612, 18621, 18622, 18623, 18627, 18628, 18629, 18633, 18633,
- 18645, 18651, 18652, 18653, 18654, 18655, 18656, 18657, 18658, 18662,
- 18663, 18671, 18672, 18678, 18677, 18694, 18693, 18712, 18711, 18735,
- 18736, 18740, 18749, 18750, 18754, 18755, 18760, 18759, 18774, 18782,
- 18783, 18787, 18788, 18793, 18794, 18799, 18800, 18804, 18805, 18809,
- 18813, 18817, 18823, 18813, 18832, 18834, 18839, 18840, 18844, 18845,
- 18849, 18849, 18855, 18861, 18869, 18870, 18871, 18877, 18878, 18884,
- 18885, 18891, 18902, 18901, 18929, 18928, 18954, 18963, 18972, 18978,
- 18977, 18997, 18996, 19016, 19020, 19021, 19025, 19026, 19030, 19037,
- 19047, 19055, 19066, 19074, 19079, 19084, 19088, 19093, 19098, 19103,
- 19113, 19112, 19127, 19135, 19126, 19149, 19154, 19159, 19164, 19172,
- 19185, 19184, 19195, 19193, 19209, 19207, 19221, 19230, 19228, 19250,
- 19264, 19269, 19248, 19282, 19286, 19291, 19290, 19299, 19303, 19304,
- 19311, 19312, 19319, 19320, 19324, 19325, 19332, 19343, 19342, 19361,
- 19362, 19363, 19364, 19365, 19366, 19370, 19371, 19372, 19373, 19374,
- 19375, 19376, 19377, 19378, 19379, 19380, 19384, 19385, 19386, 19387,
- 19394, 19392, 19408, 19412, 19406, 19428, 19429, 19434, 19433, 19448,
- 19454, 19447, 19471, 19469
+ 0, 2006, 2006, 2016, 2015, 2040, 2047, 2049, 2053, 2054,
+ 2055, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
+ 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
+ 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088,
+ 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098,
+ 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108,
+ 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118,
+ 2119, 2123, 2130, 2131, 2136, 2135, 2146, 2152, 2154, 2151,
+ 2163, 2165, 2164, 2174, 2179, 2191, 2190, 2207, 2206, 2216,
+ 2217, 2221, 2225, 2229, 2233, 2237, 2241, 2251, 2256, 2260,
+ 2264, 2268, 2272, 2276, 2281, 2285, 2290, 2318, 2322, 2326,
+ 2331, 2334, 2336, 2337, 2341, 2347, 2349, 2350, 2354, 2360,
+ 2362, 2363, 2367, 2374, 2378, 2393, 2397, 2403, 2409, 2415,
+ 2421, 2429, 2433, 2437, 2449, 2452, 2457, 2479, 2491, 2478,
+ 2514, 2513, 2569, 2576, 2568, 2588, 2595, 2587, 2608, 2614,
+ 2607, 2626, 2632, 2625, 2644, 2643, 2657, 2655, 2671, 2669,
+ 2683, 2682, 2693, 2692, 2702, 2709, 2716, 2716, 2719, 2723,
+ 2724, 2728, 2729, 2733, 2738, 2744, 2750, 2758, 2764, 2770,
+ 2778, 2786, 2794, 2802, 2810, 2818, 2830, 2846, 2846, 2850,
+ 2849, 2861, 2862, 2866, 2871, 2876, 2881, 2886, 2891, 2896,
+ 2904, 2903, 2936, 2935, 2942, 2949, 2950, 2956, 2962, 2972,
+ 2978, 2984, 2986, 2993, 2994, 2998, 3008, 3009, 3017, 3017,
+ 3059, 3068, 3069, 3074, 3075, 3076, 3077, 3081, 3082, 3086,
+ 3087, 3091, 3096, 3105, 3110, 3118, 3119, 3123, 3124, 3129,
+ 3131, 3133, 3135, 3137, 3139, 3141, 3147, 3148, 3152, 3153,
+ 3158, 3157, 3168, 3167, 3178, 3177, 3190, 3192, 3195, 3197,
+ 3201, 3205, 3214, 3219, 3219, 3229, 3230, 3234, 3242, 3244,
+ 3248, 3249, 3253, 3254, 3255, 3260, 3259, 3271, 3275, 3276,
+ 3280, 3281, 3286, 3292, 3298, 3308, 3316, 3321, 3329, 3333,
+ 3342, 3340, 3355, 3365, 3370, 3369, 3383, 3385, 3390, 3400,
+ 3399, 3428, 3429, 3430, 3431, 3436, 3438, 3443, 3458, 3466,
+ 3470, 3490, 3491, 3495, 3499, 3505, 3511, 3517, 3523, 3533,
+ 3538, 3546, 3554, 3559, 3565, 3566, 3572, 3575, 3579, 3587,
+ 3604, 3606, 3624, 3630, 3632, 3634, 3636, 3638, 3640, 3642,
+ 3644, 3646, 3648, 3650, 3652, 3654, 3659, 3667, 3683, 3684,
+ 3689, 3695, 3704, 3711, 3720, 3729, 3734, 3748, 3750, 3752,
+ 3761, 3766, 3773, 3782, 3791, 3793, 3795, 3797, 3799, 3801,
+ 3803, 3805, 3807, 3809, 3811, 3813, 3815, 3817, 3822, 3823,
+ 3831, 3843, 3859, 3858, 3869, 3869, 3891, 3892, 3897, 3896,
+ 3904, 3915, 3920, 3927, 3926, 3934, 3933, 3943, 3948, 3954,
+ 3953, 3960, 3959, 3969, 3977, 3985, 3994, 3994, 4027, 4037,
+ 4036, 4067, 4066, 4096, 4102, 4110, 4111, 4115, 4116, 4117,
+ 4121, 4129, 4134, 4139, 4147, 4148, 4156, 4174, 4190, 4210,
+ 4215, 4209, 4227, 4229, 4230, 4231, 4236, 4235, 4306, 4305,
+ 4312, 4317, 4318, 4322, 4323, 4328, 4327, 4343, 4342, 4357,
+ 4367, 4371, 4372, 4377, 4378, 4382, 4390, 4395, 4402, 4411,
+ 4425, 4433, 4442, 4441, 4449, 4448, 4456, 4461, 4468, 4455,
+ 4478, 4477, 4488, 4487, 4497, 4496, 4506, 4513, 4505, 4528,
+ 4527, 4539, 4541, 4546, 4548, 4550, 4556, 4555, 4558, 4559,
+ 4573, 4574, 4578, 4579, 4589, 4594, 4605, 4642, 4643, 4648,
+ 4647, 4663, 4678, 4677, 4699, 4698, 4704, 4712, 4711, 4714,
+ 4716, 4719, 4718, 4727, 4730, 4729, 4738, 4739, 4745, 4746,
+ 4763, 4764, 4768, 4769, 4773, 4787, 4797, 4808, 4817, 4818,
+ 4831, 4833, 4832, 4837, 4835, 4846, 4847, 4851, 4865, 4877,
+ 4878, 4891, 4900, 4922, 4923, 4926, 4928, 4933, 4932, 4956,
+ 4968, 4984, 4983, 4998, 4997, 5011, 5018, 5025, 5045, 5063,
+ 5067, 5094, 5106, 5107, 5112, 5121, 5111, 5146, 5147, 5151,
+ 5162, 5181, 5194, 5220, 5221, 5226, 5225, 5262, 5271, 5272,
+ 5276, 5277, 5281, 5282, 5290, 5291, 5295, 5296, 5300, 5302,
+ 5308, 5314, 5316, 5318, 5320, 5322, 5324, 5329, 5330, 5330,
+ 5339, 5351, 5354, 5362, 5365, 5375, 5376, 5380, 5381, 5385,
+ 5386, 5390, 5391, 5392, 5401, 5404, 5411, 5415, 5422, 5426,
+ 5432, 5434, 5438, 5439, 5443, 5444, 5445, 5449, 5464, 5469,
+ 5474, 5479, 5484, 5489, 5494, 5509, 5515, 5530, 5535, 5550,
+ 5556, 5574, 5579, 5584, 5589, 5594, 5599, 5605, 5604, 5630,
+ 5631, 5632, 5637, 5642, 5647, 5649, 5651, 5653, 5659, 5664,
+ 5669, 5673, 5678, 5682, 5689, 5696, 5701, 5709, 5710, 5721,
+ 5722, 5725, 5727, 5731, 5750, 5759, 5769, 5779, 5790, 5791,
+ 5792, 5793, 5794, 5795, 5796, 5800, 5801, 5802, 5806, 5807,
+ 5808, 5809, 5814, 5821, 5828, 5829, 5833, 5834, 5835, 5836,
+ 5837, 5841, 5843, 5854, 5853, 5861, 5860, 5868, 5867, 5875,
+ 5874, 5884, 5881, 5892, 5890, 5899, 5898, 5917, 5925, 5933,
+ 5941, 5942, 5946, 5956, 5957, 5961, 5962, 5966, 5971, 5970,
+ 6009, 6008, 6024, 6023, 6034, 6035, 6039, 6040, 6044, 6045,
+ 6049, 6050, 6054, 6055, 6056, 6057, 6064, 6063, 6071, 6077,
+ 6086, 6087, 6092, 6095, 6099, 6103, 6110, 6111, 6115, 6116,
+ 6120, 6126, 6132, 6133, 6141, 6140, 6162, 6163, 6173, 6181,
+ 6193, 6193, 6196, 6197, 6204, 6211, 6215, 6223, 6224, 6225,
+ 6229, 6230, 6231, 6232, 6233, 6234, 6242, 6246, 6247, 6261,
+ 6265, 6269, 6273, 6275, 6282, 6284, 6290, 6291, 6292, 6293,
+ 6297, 6301, 6306, 6310, 6314, 6318, 6323, 6327, 6334, 6347,
+ 6348, 6355, 6362, 6370, 6374, 6378, 6382, 6386, 6390, 6394,
+ 6398, 6400, 6402, 6404, 6406, 6408, 6410, 6412, 6419, 6421,
+ 6426, 6430, 6431, 6435, 6436, 6440, 6441, 6442, 6443, 6444,
+ 6448, 6449, 6450, 6451, 6452, 6456, 6462, 6463, 6468, 6470,
+ 6477, 6478, 6479, 6483, 6487, 6488, 6489, 6490, 6491, 6492,
+ 6496, 6500, 6501, 6502, 6503, 6506, 6510, 6515, 6516, 6520,
+ 6521, 6525, 6526, 6531, 6537, 6541, 6547, 6552, 6560, 6561,
+ 6568, 6572, 6576, 6577, 6581, 6582, 6586, 6587, 6591, 6599,
+ 6607, 6616, 6620, 6626, 6630, 6631, 6635, 6648, 6654, 6664,
+ 6665, 6669, 6676, 6680, 6681, 6685, 6686, 6690, 6699, 6703,
+ 6704, 6708, 6716, 6717, 6721, 6722, 6726, 6727, 6728, 6736,
+ 6737, 6741, 6745, 6749, 6754, 6755, 6760, 6767, 6776, 6780,
+ 6787, 6788, 6793, 6792, 6805, 6806, 6810, 6813, 6814, 6815,
+ 6816, 6820, 6828, 6835, 6836, 6840, 6850, 6851, 6855, 6856,
+ 6859, 6861, 6865, 6877, 6878, 6882, 6889, 6902, 6903, 6905,
+ 6907, 6913, 6918, 6924, 6930, 6937, 6947, 6948, 6949, 6950,
+ 6951, 6955, 6956, 6960, 6961, 6965, 6966, 6970, 6971, 6972,
+ 6976, 6980, 6992, 6993, 6997, 6998, 7002, 7003, 7007, 7008,
+ 7012, 7013, 7017, 7018, 7022, 7023, 7028, 7029, 7030, 7034,
+ 7036, 7041, 7046, 7048, 7052, 7056, 7063, 7064, 7068, 7072,
+ 7073, 7083, 7084, 7085, 7089, 7090, 7094, 7099, 7107, 7108,
+ 7116, 7122, 7134, 7135, 7139, 7141, 7151, 7167, 7150, 7190,
+ 7189, 7206, 7205, 7220, 7229, 7228, 7236, 7235, 7243, 7242,
+ 7256, 7250, 7264, 7263, 7303, 7302, 7309, 7316, 7324, 7334,
+ 7315, 7343, 7347, 7355, 7358, 7362, 7366, 7374, 7376, 7377,
+ 7378, 7379, 7383, 7384, 7385, 7386, 7390, 7391, 7403, 7404,
+ 7409, 7410, 7413, 7415, 7423, 7432, 7434, 7436, 7437, 7445,
+ 7446, 7452, 7461, 7459, 7472, 7485, 7484, 7497, 7495, 7508,
+ 7515, 7525, 7526, 7532, 7544, 7543, 7583, 7590, 7594, 7600,
+ 7598, 7615, 7617, 7622, 7630, 7629, 7643, 7647, 7646, 7658,
+ 7659, 7663, 7676, 7677, 7681, 7685, 7692, 7697, 7701, 7708,
+ 7715, 7719, 7724, 7732, 7740, 7750, 7761, 7771, 7782, 7792,
+ 7798, 7804, 7811, 7821, 7826, 7832, 7837, 7847, 7853, 7860,
+ 7865, 7869, 7874, 7875, 7876, 7881, 7886, 7890, 7900, 7902,
+ 7906, 7912, 7914, 7915, 7916, 7917, 7921, 7926, 7934, 7939,
+ 7947, 7948, 7952, 7953, 7957, 7957, 7960, 7962, 7966, 7967,
+ 7971, 7972, 7980, 7981, 7982, 7986, 7987, 7992, 8001, 8002,
+ 8003, 8004, 8009, 8008, 8018, 8017, 8025, 8032, 8042, 8059,
+ 8062, 8069, 8073, 8080, 8084, 8088, 8095, 8095, 8101, 8102,
+ 8106, 8107, 8108, 8112, 8113, 8122, 8127, 8132, 8140, 8141,
+ 8146, 8145, 8157, 8158, 8159, 8163, 8165, 8164, 8171, 8170,
+ 8191, 8192, 8196, 8197, 8201, 8202, 8203, 8207, 8208, 8209,
+ 8214, 8213, 8234, 8235, 8239, 8244, 8245, 8252, 8254, 8259,
+ 8261, 8260, 8273, 8275, 8274, 8288, 8289, 8294, 8303, 8304,
+ 8305, 8309, 8316, 8326, 8334, 8343, 8345, 8344, 8350, 8349,
+ 8372, 8373, 8377, 8378, 8382, 8383, 8384, 8385, 8386, 8387,
+ 8391, 8392, 8397, 8396, 8417, 8418, 8419, 8424, 8423, 8434,
+ 8441, 8447, 8456, 8457, 8461, 8477, 8476, 8489, 8490, 8494,
+ 8495, 8499, 8510, 8521, 8522, 8527, 8526, 8541, 8542, 8546,
+ 8547, 8551, 8562, 8574, 8573, 8581, 8581, 8590, 8591, 8596,
+ 8597, 8607, 8606, 8621, 8620, 8639, 8638, 8655, 8653, 8674,
+ 8675, 8680, 8679, 8693, 8702, 8692, 8712, 8724, 8788, 8793,
+ 8808, 8809, 8824, 8823, 8839, 8838, 8851, 8853, 8868, 8876,
+ 8874, 8889, 8907, 8909, 8919, 8923, 8964, 8973, 8983, 8984,
+ 8988, 8992, 8998, 9005, 9007, 9016, 9020, 9024, 9031, 9040,
+ 9044, 9051, 9068, 9071, 9079, 9082, 9089, 9093, 9097, 9101,
+ 9108, 9109, 9113, 9114, 9123, 9136, 9142, 9153, 9156, 9164,
+ 9167, 9173, 9179, 9188, 9189, 9190, 9210, 9215, 9237, 9243,
+ 9249, 9255, 9261, 9270, 9279, 9285, 9286, 9287, 9288, 9289,
+ 9293, 9294, 9295, 9299, 9300, 9301, 9305, 9306, 9311, 9362,
+ 9369, 9412, 9418, 9422, 9428, 9434, 9440, 9446, 9452, 9458,
+ 9464, 9470, 9476, 9482, 9488, 9492, 9498, 9507, 9513, 9521,
+ 9527, 9536, 9542, 9550, 9560, 9566, 9573, 9580, 9588, 9594,
+ 9603, 9607, 9613, 9619, 9625, 9631, 9638, 9644, 9650, 9656,
+ 9662, 9669, 9675, 9681, 9687, 9693, 9699, 9705, 9711, 9717,
+ 9721, 9722, 9726, 9727, 9731, 9732, 9736, 9737, 9741, 9742,
+ 9743, 9744, 9745, 9746, 9750, 9751, 9756, 9759, 9763, 9764,
+ 9765, 9769, 9770, 9771, 9772, 9773, 9774, 9778, 9779, 9780,
+ 9784, 9791, 9798, 9820, 9827, 9836, 9837, 9838, 9839, 9843,
+ 9852, 9853, 9857, 9861, 9862, 9863, 9864, 9865, 9866, 9867,
+ 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9915,
+ 9923, 9924, 9931, 9937, 9942, 9952, 9957, 9962, 9968, 9973,
+ 9981, 9992, 9999, 10004, 10009, 10014, 10019, 10024, 10029, 10037,
+ 10038, 10039, 10040, 10048, 10049, 10058, 10059, 10065, 10069, 10075,
+ 10081, 10090, 10091, 10100, 10107, 10121, 10127, 10135, 10144, 10153,
+ 10160, 10166, 10172, 10178, 10193, 10204, 10210, 10216, 10223, 10229,
+ 10235, 10243, 10250, 10254, 10260, 10268, 10278, 10279, 10283, 10287,
+ 10294, 10298, 10318, 10325, 10331, 10338, 10345, 10351, 10357, 10363,
+ 10369, 10376, 10382, 10393, 10400, 10406, 10413, 10419, 10424, 10429,
+ 10435, 10441, 10446, 10453, 10460, 10468, 10475, 10482, 10489, 10504,
+ 10510, 10516, 10525, 10536, 10543, 10549, 10557, 10563, 10569, 10575,
+ 10581, 10589, 10601, 10621, 10620, 10696, 10702, 10708, 10714, 10719,
+ 10724, 10729, 10734, 10739, 10744, 10764, 10766, 10771, 10772, 10776,
+ 10777, 10781, 10782, 10786, 10793, 10801, 10828, 10834, 10840, 10846,
+ 10852, 10858, 10867, 10874, 10876, 10873, 10883, 10894, 10900, 10906,
+ 10912, 10918, 10924, 10930, 10936, 10942, 10949, 10948, 10969, 10968,
+ 10999, 10998, 11012, 11021, 11039, 11041, 11043, 11058, 11065, 11072,
+ 11079, 11086, 11093, 11100, 11107, 11114, 11121, 11132, 11139, 11150,
+ 11161, 11181, 11180, 11186, 11203, 11209, 11218, 11227, 11237, 11236,
+ 11248, 11263, 11276, 11281, 11289, 11290, 11295, 11300, 11303, 11305,
+ 11309, 11314, 11322, 11323, 11328, 11335, 11345, 11344, 11361, 11363,
+ 11370, 11377, 11384, 11388, 11389, 11390, 11398, 11399, 11400, 11401,
+ 11402, 11403, 11404, 11405, 11409, 11410, 11411, 11412, 11419, 11420,
+ 11424, 11429, 11437, 11438, 11442, 11449, 11457, 11466, 11476, 11477,
+ 11488, 11489, 11501, 11505, 11509, 11517, 11518, 11522, 11526, 11530,
+ 11537, 11541, 11546, 11547, 11553, 11552, 11581, 11580, 11596, 11605,
+ 11617, 11629, 11630, 11631, 11632, 11637, 11638, 11639, 11640, 11641,
+ 11645, 11649, 11653, 11663, 11670, 11678, 11684, 11677, 11730, 11731,
+ 11737, 11742, 11756, 11764, 11762, 11782, 11780, 11793, 11805, 11803,
+ 11823, 11822, 11834, 11847, 11845, 11866, 11865, 11878, 11892, 11893,
+ 11894, 11898, 11899, 11907, 11908, 11912, 11921, 11922, 11923, 11928,
+ 11929, 11933, 11934, 11938, 11939, 11943, 11944, 11952, 11960, 11968,
+ 11969, 11982, 11998, 12005, 12017, 12018, 12023, 12027, 12028, 12029,
+ 12033, 12034, 12039, 12038, 12044, 12043, 12051, 12052, 12055, 12057,
+ 12057, 12061, 12061, 12066, 12067, 12071, 12073, 12078, 12079, 12083,
+ 12094, 12108, 12109, 12110, 12111, 12112, 12113, 12114, 12115, 12116,
+ 12117, 12118, 12119, 12123, 12124, 12125, 12126, 12127, 12128, 12129,
+ 12130, 12131, 12135, 12136, 12137, 12138, 12141, 12143, 12144, 12148,
+ 12149, 12153, 12161, 12163, 12167, 12169, 12168, 12182, 12185, 12184,
+ 12202, 12204, 12208, 12213, 12221, 12222, 12239, 12262, 12263, 12269,
+ 12270, 12274, 12287, 12286, 12295, 12296, 12305, 12306, 12310, 12311,
+ 12315, 12316, 12330, 12331, 12335, 12345, 12354, 12361, 12368, 12378,
+ 12379, 12386, 12396, 12397, 12399, 12401, 12403, 12405, 12414, 12418,
+ 12419, 12423, 12437, 12438, 12444, 12443, 12454, 12460, 12469, 12470,
+ 12471, 12477, 12478, 12483, 12490, 12496, 12501, 12512, 12522, 12533,
+ 12540, 12548, 12558, 12559, 12563, 12564, 12568, 12569, 12574, 12581,
+ 12588, 12595, 12605, 12610, 12615, 12619, 12625, 12631, 12640, 12648,
+ 12652, 12659, 12660, 12664, 12669, 12674, 12687, 12691, 12695, 12699,
+ 12704, 12707, 12711, 12720, 12728, 12739, 12741, 12745, 12746, 12750,
+ 12751, 12752, 12753, 12754, 12755, 12759, 12760, 12761, 12762, 12763,
+ 12767, 12768, 12769, 12770, 12774, 12775, 12776, 12777, 12778, 12782,
+ 12783, 12784, 12785, 12786, 12790, 12795, 12796, 12800, 12801, 12805,
+ 12806, 12807, 12812, 12811, 12843, 12844, 12848, 12849, 12853, 12863,
+ 12863, 12875, 12876, 12879, 12899, 12909, 12914, 12922, 12928, 12940,
+ 12927, 12942, 12957, 12970, 12969, 12992, 12991, 13001, 13000, 13023,
+ 13029, 13033, 13038, 13037, 13046, 13051, 13057, 13064, 13062, 13073,
+ 13077, 13078, 13082, 13094, 13107, 13108, 13112, 13126, 13130, 13138,
+ 13142, 13149, 13150, 13158, 13165, 13157, 13178, 13185, 13177, 13196,
+ 13205, 13214, 13222, 13223, 13227, 13228, 13232, 13233, 13241, 13241,
+ 13244, 13244, 13257, 13258, 13260, 13259, 13272, 13278, 13280, 13284,
+ 13286, 13292, 13296, 13297, 13301, 13302, 13306, 13316, 13317, 13321,
+ 13322, 13326, 13327, 13331, 13332, 13337, 13336, 13353, 13352, 13368,
+ 13369, 13373, 13374, 13378, 13383, 13391, 13399, 13410, 13411, 13420,
+ 13421, 13429, 13431, 13433, 13431, 13443, 13455, 13462, 13472, 13499,
+ 13461, 13506, 13507, 13511, 13518, 13526, 13527, 13531, 13541, 13542,
+ 13549, 13548, 13568, 13571, 13578, 13580, 13579, 13595, 13625, 13638,
+ 13633, 13651, 13662, 13650, 13667, 13678, 13666, 13686, 13690, 13689,
+ 13723, 13724, 13728, 13729, 13733, 13734, 13735, 13740, 13751, 13739,
+ 13761, 13763, 13766, 13768, 13771, 13772, 13775, 13779, 13783, 13787,
+ 13791, 13795, 13799, 13803, 13807, 13815, 13818, 13828, 13827, 13846,
+ 13853, 13861, 13869, 13877, 13885, 13893, 13900, 13907, 13913, 13915,
+ 13917, 13926, 13930, 13935, 13934, 13941, 13940, 13947, 13956, 13963,
+ 13968, 13973, 13978, 13983, 13988, 13990, 13992, 13994, 14001, 14009,
+ 14011, 14019, 14026, 14033, 14041, 14047, 14052, 14060, 14068, 14076,
+ 14080, 14084, 14091, 14098, 14105, 14112, 14118, 14124, 14130, 14136,
+ 14142, 14150, 14155, 14162, 14169, 14176, 14183, 14190, 14197, 14202,
+ 14207, 14212, 14217, 14222, 14234, 14242, 14264, 14266, 14268, 14273,
+ 14274, 14277, 14279, 14283, 14284, 14288, 14289, 14293, 14294, 14298,
+ 14299, 14303, 14304, 14308, 14309, 14318, 14330, 14329, 14348, 14347,
+ 14357, 14358, 14359, 14360, 14361, 14362, 14366, 14367, 14371, 14378,
+ 14379, 14381, 14382, 14386, 14387, 14400, 14401, 14402, 14418, 14442,
+ 14441, 14453, 14452, 14464, 14469, 14470, 14483, 14486, 14485, 14498,
+ 14499, 14504, 14506, 14508, 14510, 14512, 14514, 14522, 14524, 14526,
+ 14528, 14533, 14535, 14543, 14545, 14547, 14549, 14551, 14553, 14570,
+ 14571, 14575, 14579, 14592, 14591, 14606, 14616, 14617, 14620, 14622,
+ 14623, 14627, 14643, 14644, 14649, 14648, 14658, 14659, 14663, 14663,
+ 14668, 14667, 14673, 14677, 14678, 14682, 14683, 14690, 14695, 14694,
+ 14709, 14708, 14723, 14724, 14725, 14729, 14730, 14731, 14740, 14741,
+ 14745, 14749, 14757, 14757, 14762, 14763, 14772, 14784, 14798, 14809,
+ 14822, 14783, 14833, 14834, 14838, 14839, 14843, 14844, 14852, 14856,
+ 14857, 14858, 14861, 14863, 14867, 14868, 14872, 14877, 14884, 14889,
+ 14896, 14898, 14902, 14903, 14907, 14912, 14920, 14921, 14925, 14927,
+ 14935, 14936, 14940, 14941, 14942, 14946, 14948, 14953, 14954, 14969,
+ 14970, 14974, 14975, 14979, 14992, 14997, 15002, 15009, 15017, 15025,
+ 15030, 15038, 15046, 15061, 15068, 15074, 15084, 15085, 15093, 15094,
+ 15095, 15096, 15110, 15116, 15122, 15128, 15134, 15140, 15163, 15173,
+ 15183, 15189, 15196, 15206, 15213, 15220, 15231, 15230, 15255, 15256,
+ 15261, 15262, 15267, 15291, 15294, 15293, 15309, 15313, 15318, 15322,
+ 15329, 15335, 15344, 15362, 15363, 15367, 15372, 15380, 15385, 15393,
+ 15398, 15403, 15408, 15414, 15419, 15427, 15432, 15437, 15442, 15448,
+ 15456, 15457, 15468, 15476, 15480, 15486, 15492, 15502, 15508, 15517,
+ 15527, 15528, 15532, 15533, 15534, 15538, 15546, 15547, 15548, 15549,
+ 15553, 15562, 15570, 15578, 15586, 15587, 15595, 15596, 15600, 15601,
+ 15606, 15615, 15616, 15624, 15625, 15633, 15634, 15635, 15639, 15650,
+ 15679, 15688, 15688, 15690, 15700, 15701, 15702, 15703, 15704, 15705,
+ 15706, 15707, 15708, 15709, 15710, 15711, 15716, 15717, 15718, 15719,
+ 15720, 15721, 15722, 15723, 15724, 15725, 15726, 15727, 15728, 15732,
+ 15733, 15734, 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742,
+ 15743, 15744, 15748, 15749, 15750, 15751, 15752, 15753, 15754, 15755,
+ 15756, 15757, 15758, 15759, 15760, 15764, 15765, 15766, 15767, 15768,
+ 15769, 15770, 15771, 15784, 15785, 15786, 15787, 15788, 15789, 15790,
+ 15791, 15792, 15793, 15794, 15795, 15796, 15797, 15798, 15799, 15800,
+ 15801, 15802, 15803, 15804, 15805, 15806, 15807, 15808, 15809, 15810,
+ 15811, 15812, 15813, 15814, 15815, 15816, 15817, 15818, 15819, 15820,
+ 15821, 15822, 15823, 15824, 15825, 15826, 15827, 15828, 15829, 15830,
+ 15831, 15832, 15833, 15834, 15835, 15836, 15877, 15878, 15879, 15880,
+ 15881, 15882, 15893, 15894, 15895, 15896, 15897, 15898, 15899, 15900,
+ 15901, 15902, 15906, 15907, 15908, 15912, 15913, 15914, 15923, 15924,
+ 15925, 15926, 15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934,
+ 15935, 15936, 15937, 15938, 15939, 15940, 15941, 15942, 15943, 15944,
+ 15945, 15946, 15947, 15948, 15953, 15958, 15959, 15960, 15961, 15962,
+ 15963, 15964, 15965, 15966, 15967, 15968, 15969, 15970, 15971, 15972,
+ 15973, 15974, 15975, 15976, 15977, 15978, 15979, 15980, 15981, 15982,
+ 15983, 15984, 15985, 15986, 15987, 15988, 15989, 15990, 15991, 15992,
+ 15993, 15994, 15995, 15996, 15997, 15998, 15999, 16000, 16001, 16006,
+ 16007, 16008, 16009, 16010, 16011, 16012, 16013, 16014, 16015, 16016,
+ 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026,
+ 16027, 16028, 16029, 16030, 16031, 16032, 16033, 16034, 16035, 16036,
+ 16037, 16038, 16039, 16040, 16041, 16042, 16043, 16044, 16045, 16046,
+ 16047, 16048, 16049, 16050, 16051, 16052, 16053, 16054, 16055, 16056,
+ 16057, 16058, 16059, 16060, 16061, 16062, 16063, 16064, 16065, 16066,
+ 16067, 16068, 16069, 16070, 16071, 16072, 16073, 16074, 16075, 16076,
+ 16077, 16078, 16079, 16080, 16081, 16082, 16083, 16084, 16085, 16086,
+ 16087, 16088, 16089, 16090, 16091, 16092, 16093, 16094, 16095, 16096,
+ 16097, 16098, 16099, 16100, 16101, 16102, 16103, 16104, 16105, 16106,
+ 16107, 16108, 16109, 16110, 16111, 16112, 16113, 16114, 16115, 16116,
+ 16120, 16121, 16122, 16123, 16124, 16125, 16126, 16127, 16128, 16129,
+ 16130, 16131, 16132, 16133, 16134, 16135, 16136, 16137, 16138, 16139,
+ 16140, 16141, 16142, 16143, 16144, 16145, 16146, 16147, 16148, 16149,
+ 16150, 16151, 16152, 16153, 16154, 16155, 16156, 16157, 16158, 16159,
+ 16160, 16161, 16162, 16163, 16164, 16165, 16166, 16167, 16168, 16169,
+ 16170, 16171, 16172, 16173, 16174, 16175, 16176, 16177, 16178, 16179,
+ 16180, 16181, 16182, 16183, 16184, 16185, 16186, 16187, 16188, 16189,
+ 16190, 16191, 16192, 16193, 16194, 16195, 16196, 16197, 16198, 16199,
+ 16200, 16201, 16202, 16203, 16204, 16205, 16206, 16207, 16208, 16209,
+ 16210, 16211, 16212, 16213, 16214, 16215, 16216, 16217, 16218, 16219,
+ 16220, 16221, 16222, 16223, 16224, 16225, 16226, 16227, 16228, 16229,
+ 16230, 16231, 16232, 16233, 16234, 16235, 16236, 16237, 16238, 16239,
+ 16240, 16241, 16242, 16243, 16244, 16245, 16246, 16247, 16248, 16249,
+ 16250, 16251, 16252, 16253, 16254, 16255, 16256, 16257, 16258, 16259,
+ 16260, 16261, 16262, 16263, 16264, 16265, 16266, 16270, 16271, 16277,
+ 16278, 16279, 16280, 16281, 16282, 16283, 16284, 16285, 16286, 16287,
+ 16288, 16289, 16290, 16291, 16295, 16296, 16297, 16298, 16302, 16303,
+ 16304, 16305, 16306, 16307, 16312, 16313, 16314, 16315, 16316, 16317,
+ 16318, 16319, 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
+ 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
+ 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345, 16346, 16347,
+ 16348, 16349, 16350, 16351, 16352, 16353, 16354, 16355, 16356, 16357,
+ 16358, 16359, 16360, 16361, 16362, 16363, 16364, 16365, 16366, 16367,
+ 16368, 16369, 16370, 16371, 16372, 16373, 16374, 16375, 16376, 16377,
+ 16378, 16379, 16380, 16381, 16382, 16383, 16384, 16385, 16386, 16387,
+ 16388, 16389, 16390, 16391, 16392, 16393, 16394, 16395, 16396, 16397,
+ 16398, 16399, 16400, 16401, 16402, 16403, 16404, 16405, 16406, 16407,
+ 16408, 16409, 16410, 16411, 16412, 16413, 16414, 16415, 16416, 16417,
+ 16418, 16419, 16420, 16421, 16422, 16423, 16424, 16425, 16426, 16427,
+ 16428, 16429, 16430, 16431, 16433, 16435, 16436, 16437, 16438, 16439,
+ 16440, 16441, 16442, 16443, 16444, 16445, 16446, 16447, 16448, 16449,
+ 16450, 16451, 16452, 16453, 16454, 16455, 16456, 16457, 16458, 16459,
+ 16460, 16461, 16462, 16463, 16464, 16465, 16466, 16467, 16468, 16469,
+ 16470, 16471, 16472, 16473, 16474, 16475, 16476, 16477, 16478, 16479,
+ 16480, 16481, 16482, 16483, 16484, 16485, 16486, 16487, 16488, 16489,
+ 16490, 16491, 16492, 16493, 16494, 16495, 16496, 16497, 16498, 16499,
+ 16500, 16501, 16502, 16503, 16504, 16505, 16506, 16507, 16508, 16509,
+ 16510, 16511, 16512, 16513, 16514, 16515, 16516, 16517, 16518, 16519,
+ 16520, 16521, 16522, 16523, 16524, 16525, 16526, 16527, 16528, 16529,
+ 16530, 16531, 16532, 16533, 16534, 16535, 16536, 16537, 16538, 16539,
+ 16540, 16541, 16542, 16543, 16544, 16545, 16546, 16547, 16548, 16549,
+ 16561, 16560, 16573, 16574, 16576, 16575, 16587, 16586, 16593, 16591,
+ 16611, 16612, 16617, 16618, 16620, 16619, 16633, 16634, 16640, 16639,
+ 16644, 16648, 16649, 16650, 16654, 16655, 16656, 16657, 16661, 16662,
+ 16663, 16664, 16673, 16672, 16687, 16686, 16701, 16700, 16718, 16717,
+ 16732, 16731, 16746, 16745, 16762, 16761, 16776, 16775, 16790, 16789,
+ 16803, 16802, 16828, 16827, 16839, 16838, 16851, 16850, 16861, 16879,
+ 16890, 16901, 16911, 16933, 16949, 16961, 16960, 16975, 16974, 16986,
+ 16985, 16999, 17000, 17001, 17002, 17006, 17025, 17043, 17044, 17048,
+ 17049, 17050, 17051, 17056, 17061, 17066, 17077, 17090, 17096, 17103,
+ 17104, 17105, 17112, 17111, 17125, 17126, 17132, 17141, 17142, 17146,
+ 17147, 17151, 17170, 17171, 17172, 17177, 17178, 17183, 17182, 17200,
+ 17199, 17211, 17220, 17230, 17229, 17272, 17273, 17277, 17278, 17282,
+ 17283, 17284, 17285, 17287, 17286, 17299, 17300, 17301, 17302, 17303,
+ 17309, 17314, 17319, 17324, 17328, 17333, 17342, 17344, 17349, 17354,
+ 17360, 17366, 17371, 17383, 17384, 17388, 17389, 17393, 17398, 17406,
+ 17415, 17436, 17436, 17439, 17440, 17444, 17445, 17452, 17454, 17458,
+ 17463, 17470, 17474, 17483, 17490, 17491, 17492, 17493, 17497, 17498,
+ 17499, 17500, 17501, 17502, 17503, 17504, 17505, 17506, 17507, 17508,
+ 17509, 17510, 17511, 17512, 17513, 17514, 17515, 17516, 17517, 17518,
+ 17519, 17520, 17521, 17522, 17523, 17524, 17525, 17526, 17527, 17528,
+ 17529, 17530, 17531, 17532, 17533, 17534, 17535, 17536, 17537, 17538,
+ 17539, 17543, 17544, 17548, 17549, 17553, 17560, 17567, 17577, 17586,
+ 17592, 17599, 17607, 17612, 17620, 17625, 17633, 17638, 17645, 17645,
+ 17646, 17646, 17649, 17655, 17661, 17666, 17673, 17679, 17686, 17695,
+ 17699, 17705, 17713, 17715, 17719, 17723, 17727, 17734, 17739, 17744,
+ 17749, 17754, 17762, 17763, 17767, 17768, 17773, 17774, 17778, 17779,
+ 17783, 17784, 17788, 17789, 17794, 17793, 17803, 17812, 17813, 17817,
+ 17818, 17823, 17824, 17825, 17830, 17831, 17832, 17836, 17848, 17857,
+ 17863, 17872, 17881, 17894, 17896, 17898, 17906, 17907, 17908, 17912,
+ 17913, 17919, 17920, 17921, 17922, 17923, 17924, 17925, 17935, 17936,
+ 17941, 17954, 17968, 17969, 17970, 17974, 17975, 17979, 17980, 17985,
+ 17986, 17990, 17996, 18005, 18005, 18019, 18020, 18021, 18022, 18032,
+ 18034, 18040, 18046, 18056, 18065, 18071, 18076, 18080, 18054, 18129,
+ 18129, 18142, 18144, 18149, 18150, 18154, 18155, 18159, 18159, 18166,
+ 18170, 18174, 18178, 18182, 18186, 18194, 18195, 18211, 18218, 18225,
+ 18238, 18239, 18240, 18244, 18245, 18246, 18250, 18251, 18256, 18258,
+ 18257, 18263, 18264, 18268, 18273, 18280, 18285, 18294, 18300, 18741,
+ 18742, 18746, 18748, 18747, 18761, 18760, 18773, 18772, 18786, 18790,
+ 18794, 18798, 18802, 18806, 18810, 18814, 18818, 18823, 18824, 18830,
+ 18831, 18832, 18833, 18834, 18835, 18836, 18837, 18841, 18842, 18843,
+ 18844, 18845, 18846, 18847, 18848, 18852, 18853, 18854, 18859, 18863,
+ 18872, 18871, 18884, 18890, 18894, 18904, 18905, 18918, 18934, 18935,
+ 18936, 18940, 18940, 18952, 18953, 18954, 18955, 18956, 18957, 18958,
+ 18959, 18963, 18964, 18972, 18973, 18979, 18978, 18996, 18995, 19015,
+ 19014, 19039, 19040, 19044, 19053, 19054, 19058, 19059, 19064, 19063,
+ 19078, 19086, 19087, 19091, 19092, 19097, 19098, 19103, 19104, 19108,
+ 19109, 19113, 19117, 19121, 19127, 19117, 19139, 19140, 19141, 19147,
+ 19159, 19171, 19178, 19179, 19185, 19186, 19194, 19193, 19214, 19213,
+ 19233, 19242, 19251, 19257, 19256, 19276, 19275, 19295, 19296, 19300,
+ 19301, 19305, 19312, 19325, 19334, 19346, 19354, 19359, 19364, 19368,
+ 19373, 19378, 19383, 19393, 19392, 19407, 19415, 19406, 19433, 19432,
+ 19443, 19441, 19457, 19455, 19469, 19478, 19476, 19496, 19509, 19494,
+ 19525, 19529, 19534, 19533, 19542, 19546, 19547, 19554, 19555, 19562,
+ 19563, 19567, 19568, 19575, 19586, 19585, 19604, 19605, 19606, 19607,
+ 19608, 19609, 19613, 19614, 19615, 19616, 19617, 19618, 19619, 19620,
+ 19621, 19622, 19623, 19627, 19628, 19629, 19630, 19637, 19635, 19651,
+ 19655, 19649, 19671, 19672, 19677, 19676, 19691, 19697, 19690, 19714,
+ 19712
};
#endif
@@ -3395,20 +3416,21 @@ static const char *const yytname[] =
"SERIAL_SYM", "SESSION_SYM", "SERVER_SYM", "SETVAL_SYM", "SHARE_SYM",
"SHUTDOWN", "SIGNED_SYM", "SIMPLE_SYM", "SKIP_SYM", "SLAVE", "SLAVES",
"SLAVE_POS_SYM", "SLOW", "SNAPSHOT_SYM", "SOCKET_SYM", "SOFT_SYM",
- "SONAME_SYM", "SOUNDS_SYM", "SOURCE_SYM", "SQL_BUFFER_RESULT",
- "SQL_CACHE_SYM", "SQL_CALC_FOUND_ROWS", "SQL_NO_CACHE_SYM", "SQL_THREAD",
- "STAGE_SYM", "STARTS_SYM", "START_SYM", "STATEMENT_SYM", "STATUS_SYM",
- "STOP_SYM", "STORAGE_SYM", "STORED_SYM", "STRING_SYM",
- "SUBCLASS_ORIGIN_SYM", "SUBDATE_SYM", "SUBJECT_SYM", "SUBPARTITIONS_SYM",
- "SUBPARTITION_SYM", "SUPER_SYM", "SUSPEND_SYM", "SWAPS_SYM",
- "SWITCHES_SYM", "SYSTEM", "SYSTEM_TIME_SYM", "TABLES", "TABLESPACE",
- "TABLE_CHECKSUM_SYM", "TABLE_NAME_SYM", "TEMPORARY", "TEMPTABLE_SYM",
- "TEXT_SYM", "THAN_SYM", "TIES_SYM", "TIMESTAMP", "TIMESTAMP_ADD",
- "TIMESTAMP_DIFF", "TIME_SYM", "TRANSACTION_SYM", "TRANSACTIONAL_SYM",
- "THREADS_SYM", "TRIGGERS_SYM", "TRIM_ORACLE", "TRUNCATE_SYM", "TYPE_SYM",
- "UDF_RETURNS_SYM", "UNBOUNDED_SYM", "UNCOMMITTED_SYM", "UNDEFINED_SYM",
- "UNDOFILE_SYM", "UNDO_BUFFER_SIZE_SYM", "UNICODE_SYM", "UNINSTALL_SYM",
- "UNKNOWN_SYM", "UNTIL_SYM", "UPGRADE_SYM", "USER_SYM", "USE_FRM",
+ "SONAME_SYM", "SOUNDS_SYM", "SOURCE_SYM", "SQL_AFTER_GTIDS_SYM",
+ "SQL_BEFORE_GTIDS_SYM", "SQL_BUFFER_RESULT", "SQL_CACHE_SYM",
+ "SQL_CALC_FOUND_ROWS", "SQL_NO_CACHE_SYM", "SQL_THREAD", "STAGE_SYM",
+ "STARTS_SYM", "START_SYM", "STATEMENT_SYM", "STATUS_SYM", "STOP_SYM",
+ "STORAGE_SYM", "STORED_SYM", "STRING_SYM", "SUBCLASS_ORIGIN_SYM",
+ "SUBDATE_SYM", "SUBJECT_SYM", "SUBPARTITIONS_SYM", "SUBPARTITION_SYM",
+ "SUPER_SYM", "SUSPEND_SYM", "SWAPS_SYM", "SWITCHES_SYM", "SYSTEM",
+ "SYSTEM_TIME_SYM", "TABLES", "TABLESPACE", "TABLE_CHECKSUM_SYM",
+ "TABLE_NAME_SYM", "TEMPORARY", "TEMPTABLE_SYM", "TEXT_SYM", "THAN_SYM",
+ "TIES_SYM", "TIMESTAMP", "TIMESTAMP_ADD", "TIMESTAMP_DIFF", "TIME_SYM",
+ "TRANSACTION_SYM", "TRANSACTIONAL_SYM", "THREADS_SYM", "TRIGGERS_SYM",
+ "TRIM_ORACLE", "TRUNCATE_SYM", "TYPE_SYM", "UDF_RETURNS_SYM",
+ "UNBOUNDED_SYM", "UNCOMMITTED_SYM", "UNDEFINED_SYM", "UNDOFILE_SYM",
+ "UNDO_BUFFER_SIZE_SYM", "UNICODE_SYM", "UNINSTALL_SYM", "UNKNOWN_SYM",
+ "UNTIL_SYM", "UPGRADE_SYM", "USER_SYM", "USE_FRM", "VALIDATION_SYM",
"VALUE_SYM", "VARCHAR2_MARIADB_SYM", "VARCHAR2_ORACLE_SYM", "VARIABLES",
"VERSIONING_SYM", "VIA_SYM", "VIEW_SYM", "VISIBLE_SYM", "VIRTUAL_SYM",
"WAIT_SYM", "WARNINGS", "WEEK_SYM", "WEIGHT_STRING_SYM", "WINDOW_SYM",
@@ -3417,27 +3439,29 @@ static const char *const yytname[] =
"PREC_BELOW_NOT", "'='", "'>'", "'<'", "'|'", "'&'", "'-'", "'+'", "'*'",
"'/'", "'%'", "'^'", "'~'", "SUBQUERY_AS_EXPR",
"PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE", "USER",
- "PREC_BELOW_CONTRACTION_TOKEN2", "'('", "')'", "EMPTY_FROM_CLAUSE",
- "','", "'!'", "'{'", "'}'", "';'", "'.'", "$accept", "query", "$@1",
- "opt_end_of_input", "directly_executable_statement", "verb_clause",
- "deallocate", "deallocate_or_drop", "prepare", "$@2", "execute", "$@3",
- "$@4", "execute_using", "$@5", "execute_params", "help", "$@6", "change",
- "$@7", "master_defs", "master_def", "ignore_server_id_list",
- "ignore_server_id", "do_domain_id_list", "do_domain_id",
- "ignore_domain_id_list", "ignore_domain_id", "master_file_def",
- "optional_connection_name", "connection_name", "optional_for_channel",
- "for_channel", "create", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13",
- "$@14", "$@15", "$@16", "$@17", "$@18", "$@19", "$@20", "$@21", "$@22",
- "$@23", "$@24", "opt_sequence", "sequence_defs", "sequence_def",
- "force_lookahead", "server_def", "$@25", "server_options_list",
- "server_option", "event_tail", "$@26", "ev_schedule_time", "$@27",
- "opt_ev_status", "ev_starts", "ev_ends", "opt_ev_on_completion",
- "ev_on_completion", "opt_ev_comment", "ev_sql_stmt", "$@28",
- "clear_privileges", "opt_aggregate", "sp_handler", "sp_name",
- "sp_a_chistics", "sp_c_chistics", "sp_chistic", "sp_c_chistic",
- "sp_suid", "call", "$@29", "$@30", "$@31", "opt_sp_cparam_list",
- "opt_sp_cparams", "sp_cparams", "sp_fdparam_list", "$@32", "sp_fdparams",
- "sp_param_name", "sp_pdparam_list", "sp_pdparams", "sp_parameter_type",
+ "PREC_BELOW_SP_OBJECT_TYPE", "PREC_BELOW_CONTRACTION_TOKEN2", "'('",
+ "')'", "EMPTY_FROM_CLAUSE", "','", "'!'", "'{'", "'}'", "';'", "'.'",
+ "$accept", "query", "$@1", "opt_end_of_input",
+ "directly_executable_statement", "verb_clause", "deallocate",
+ "deallocate_or_drop", "prepare", "$@2", "execute", "$@3", "$@4",
+ "execute_using", "$@5", "execute_params", "help", "$@6", "change", "$@7",
+ "master_defs", "master_def", "ignore_server_id_list", "ignore_server_id",
+ "do_domain_id_list", "do_domain_id", "ignore_domain_id_list",
+ "ignore_domain_id", "master_file_def", "optional_connection_name",
+ "connection_name", "optional_for_channel", "for_channel", "create",
+ "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16",
+ "$@17", "$@18", "$@19", "$@20", "$@21", "$@22", "$@23", "$@24",
+ "opt_sequence", "sequence_defs", "sequence_def", "force_lookahead",
+ "server_def", "$@25", "server_options_list", "server_option",
+ "event_tail", "$@26", "ev_schedule_time", "$@27", "opt_ev_status",
+ "ev_starts", "ev_ends", "opt_ev_on_completion", "ev_on_completion",
+ "opt_ev_comment", "ev_sql_stmt", "$@28", "clear_privileges",
+ "opt_aggregate", "sp_handler", "sp_handler_package_spec",
+ "sp_handler_package_body", "drop_routine", "sp_name", "sp_a_chistics",
+ "sp_c_chistics", "sp_chistic", "sp_c_chistic", "sp_suid", "call", "$@29",
+ "$@30", "$@31", "opt_sp_cparam_list", "opt_sp_cparams", "sp_cparams",
+ "sp_fdparam_list", "$@32", "sp_fdparams", "sp_param_name",
+ "sp_pdparam_list", "sp_pdparams", "sp_parameter_type",
"sp_parenthesized_pdparam_list", "$@33", "sp_parenthesized_fdparam_list",
"sp_proc_stmts", "sp_proc_stmts1", "optionally_qualified_column_ident",
"row_field_definition", "row_field_definition_list", "row_type_body",
@@ -3493,30 +3517,30 @@ static const char *const yytname[] =
"create_database_option", "opt_if_not_exists_table_element",
"opt_if_not_exists", "create_or_replace", "opt_create_table_options",
"create_table_options_space_separated", "create_table_options",
- "create_table_option", "$@80", "engine_defined_option",
- "opt_versioning_option", "versioning_option", "default_charset",
- "default_collation", "storage_engines", "known_storage_engines",
- "row_types", "merge_insert_types", "udf_type", "create_field_list",
- "create_field_list_parens", "field_list", "field_list_item",
- "column_def", "key_def", "$@81", "$@82", "$@83", "$@84", "$@85", "$@86",
- "$@87", "constraint_def", "period_for_system_time",
- "period_for_application_time", "opt_check_constraint",
- "check_constraint", "opt_constraint_no_id", "opt_constraint",
- "constraint", "field_spec", "@88", "field_type_or_serial", "$@89",
- "$@90", "opt_serial_attribute", "opt_serial_attribute_list",
- "opt_asrow_attribute", "opt_asrow_attribute_list", "field_def", "$@91",
- "opt_generated_always", "vcol_opt_specifier", "vcol_opt_attribute",
- "vcol_opt_attribute_list", "vcol_attribute", "parse_vcol_expr", "$@92",
- "parenthesized_expr", "virtual_column_func", "expr_or_literal",
- "column_default_expr", "field_type", "qualified_field_type", "udt_name",
- "field_type_all", "field_type_numeric", "opt_binary_and_compression",
- "field_type_string", "field_type_temporal", "field_type_lob",
- "field_type_misc", "char", "nchar", "varchar", "nvarchar", "int_type",
- "real_type", "srid_option", "float_options", "precision",
- "field_options", "last_field_options", "field_length_str",
- "field_length", "field_scale", "opt_field_length", "opt_field_scale",
- "opt_precision", "attribute_list", "attribute", "opt_compression_method",
- "opt_compressed", "opt_enable", "compressed",
+ "create_table_option", "$@80", "engine_defined_option", "ident_options",
+ "keyword_options", "opt_versioning_option", "versioning_option",
+ "default_charset", "default_collation", "storage_engines",
+ "known_storage_engines", "row_types", "merge_insert_types", "udf_type",
+ "create_field_list", "create_field_list_parens", "field_list",
+ "field_list_item", "column_def", "key_def", "$@81", "$@82", "$@83",
+ "$@84", "$@85", "$@86", "$@87", "constraint_def",
+ "period_for_system_time", "period_for_application_time",
+ "opt_check_constraint", "check_constraint", "opt_constraint_no_id",
+ "opt_constraint", "constraint", "field_spec", "@88",
+ "field_type_or_serial", "$@89", "$@90", "opt_serial_attribute",
+ "opt_serial_attribute_list", "opt_asrow_attribute",
+ "opt_asrow_attribute_list", "field_def", "$@91", "opt_generated_always",
+ "vcol_opt_specifier", "vcol_opt_attribute", "vcol_opt_attribute_list",
+ "vcol_attribute", "parse_vcol_expr", "$@92", "parenthesized_expr",
+ "virtual_column_func", "expr_or_literal", "column_default_expr",
+ "field_type", "qualified_field_type", "udt_name", "field_type_all",
+ "field_type_numeric", "opt_binary_and_compression", "field_type_string",
+ "field_type_temporal", "field_type_lob", "field_type_misc", "char",
+ "nchar", "varchar", "nvarchar", "int_type", "real_type", "srid_option",
+ "float_options", "precision", "field_options", "last_field_options",
+ "field_length_str", "field_length", "field_scale", "opt_field_length",
+ "opt_field_scale", "opt_precision", "attribute_list", "attribute",
+ "opt_compression_method", "opt_compressed", "opt_enable", "compressed",
"compressed_deprecated_data_type_attribute",
"compressed_deprecated_column_attribute", "asrow_attribute",
"serial_attribute", "with_or_without_system", "charset", "charset_name",
@@ -3545,7 +3569,7 @@ static const char *const yytname[] =
"remove_partitioning", "all_or_alt_part_name_list", "add_partition_rule",
"$@111", "add_part_extra", "reorg_partition_rule", "$@112",
"reorg_parts_rule", "$@113", "alt_part_name_list", "alt_part_name_item",
- "alter_list", "add_column", "alter_list_item",
+ "alter_list", "add_column", "alter_list_item", "opt_without_validation",
"opt_index_lock_algorithm", "alter_algorithm_option",
"alter_lock_option", "opt_column", "opt_ignore", "alter_options",
"$@114", "alter_options_part2", "alter_option_list", "alter_option",
@@ -3583,23 +3607,24 @@ static const char *const yytname[] =
"opt_for_system_time_clause", "system_time_expr", "select_option_list",
"select_option", "select_lock_type", "opt_select_lock_type",
"opt_lock_wait_timeout_new", "select_item_list", "select_item",
- "remember_tok_start", "remember_name", "remember_end", "select_alias",
- "opt_default_time_precision", "opt_time_precision", "optional_braces",
- "expr", "boolean_test", "predicate", "bit_expr", "or", "and", "not",
- "not2", "comp_op", "all_or_any", "opt_dyncol_type", "dyncol_type",
- "numeric_dyncol_type", "temporal_dyncol_type", "string_dyncol_type",
- "dyncall_create_element", "dyncall_create_list", "plsql_cursor_attr",
- "explicit_cursor_attr", "trim_operands", "trim_operands_regular",
- "trim_operands_special", "column_default_non_parenthesized_expr",
- "primary_expr", "string_factor_expr", "simple_expr",
- "mysql_concatenation_expr", "function_call_keyword_timestamp",
- "function_call_keyword", "substring_operands",
- "substring_operands_regular", "substring_operands_special",
- "function_call_nonkeyword", "function_call_conflict",
- "function_call_generic", "@142", "fulltext_options",
- "opt_natural_language_mode", "opt_query_expansion", "opt_udf_expr_list",
- "udf_expr_list", "udf_expr", "sum_expr", "$@143", "$@144", "$@145",
- "$@146", "$@147", "window_func_expr", "window_func",
+ "remember_tok_start", "remember_name", "remember_end",
+ "remember_cpp_ptr", "remember_start_opt", "remember_end_opt",
+ "remember_lex", "select_alias", "opt_default_time_precision",
+ "opt_time_precision", "optional_braces", "expr", "boolean_test",
+ "predicate", "bit_expr", "or", "and", "not", "not2", "comp_op",
+ "all_or_any", "opt_dyncol_type", "dyncol_type", "numeric_dyncol_type",
+ "temporal_dyncol_type", "string_dyncol_type", "dyncall_create_element",
+ "dyncall_create_list", "plsql_cursor_attr", "explicit_cursor_attr",
+ "trim_operands", "trim_operands_regular", "trim_operands_special",
+ "column_default_non_parenthesized_expr", "primary_expr",
+ "string_factor_expr", "simple_expr", "mysql_concatenation_expr",
+ "function_call_keyword_timestamp", "function_call_keyword",
+ "substring_operands", "substring_operands_regular",
+ "substring_operands_special", "function_call_nonkeyword",
+ "function_call_conflict", "function_call_generic", "@142",
+ "fulltext_options", "opt_natural_language_mode", "opt_query_expansion",
+ "opt_udf_expr_list", "udf_expr_list", "udf_expr", "sum_expr", "$@143",
+ "$@144", "$@145", "$@146", "$@147", "window_func_expr", "window_func",
"simple_window_func", "inverse_distribution_function",
"percentile_function", "$@148", "inverse_distribution_function_def",
"order_by_single_element_list", "window_name", "variable", "$@149",
@@ -3661,26 +3686,26 @@ static const char *const yytname[] =
"update_table_list", "update", "$@188", "$@189", "$@190", "update_list",
"update_elem", "insert_update_list", "insert_update_elem",
"opt_low_priority", "delete", "$@191", "opt_delete_system_time",
- "delete_part2", "delete_single_table", "delete_single_table_for_period",
- "single_multi", "$@192", "$@193", "$@194", "$@195", "opt_returning",
- "$@196", "table_wild_list", "table_wild_one", "opt_wild",
- "opt_delete_options", "opt_delete_option", "truncate", "$@197", "$@198",
+ "delete_part2", "$@192", "delete_single_table",
+ "delete_single_table_for_period", "single_multi", "$@193", "$@194",
+ "$@195", "$@196", "$@197", "opt_returning", "$@198", "opt_wild",
+ "opt_delete_options", "opt_delete_option", "truncate", "$@199", "$@200",
"opt_table_sym", "opt_profile_defs", "profile_defs", "profile_def",
- "opt_profile_args", "show", "$@199", "show_param", "$@200", "$@201",
+ "opt_profile_args", "show", "$@201", "show_param", "$@202", "$@203",
"show_engine_param", "master_or_binary", "opt_storage", "opt_db",
"opt_full", "from_or_in", "binlog_in", "binlog_from", "wild_and_where",
- "describe", "$@202", "$@203", "explainable_command", "describe_command",
+ "describe", "$@204", "$@205", "explainable_command", "describe_command",
"analyze_stmt_command", "opt_extended_describe", "opt_format_json",
- "opt_describe_column", "explain_for_connection", "flush", "$@204",
- "flush_options", "$@205", "opt_flush_lock", "flush_lock", "$@206",
+ "opt_describe_column", "explain_for_connection", "flush", "$@206",
+ "flush_options", "$@207", "opt_flush_lock", "flush_lock", "$@208",
"flush_options_list", "flush_option", "opt_table_list", "backup",
- "backup_statements", "$@207", "opt_delete_gtid_domain",
+ "backup_statements", "$@209", "opt_delete_gtid_domain",
"delete_domain_id_list", "delete_domain_id",
- "optional_flush_tables_arguments", "reset", "$@208", "reset_options",
- "reset_option", "$@209", "$@210", "slave_reset_options",
- "master_reset_options", "purge", "$@211", "kill", "$@212", "kill_type",
- "kill_option", "opt_connection", "kill_expr", "shutdown", "$@213",
- "shutdown_option", "use", "load", "$@214", "$@215", "$@216", "$@217",
+ "optional_flush_tables_arguments", "reset", "$@210", "reset_options",
+ "reset_option", "$@211", "$@212", "slave_reset_options",
+ "master_reset_options", "purge", "$@213", "kill", "$@214", "kill_type",
+ "kill_option", "opt_connection", "kill_expr", "shutdown", "$@215",
+ "shutdown_option", "use", "load", "$@216", "$@217", "$@218", "$@219",
"data_or_xml", "opt_local", "load_data_lock", "opt_duplicate",
"opt_field_term", "field_term_list", "field_term", "opt_line_term",
"line_term_list", "line_term", "opt_xml_rows_identified_by",
@@ -3688,8 +3713,8 @@ static const char *const yytname[] =
"fields_or_vars", "field_or_var", "opt_load_data_set_spec",
"load_data_set_list", "load_data_set_elem", "text_literal",
"text_string", "hex_or_bin_String", "param_marker", "signed_literal",
- "literal", "NUM_literal", "temporal_literal", "with_clause", "$@218",
- "opt_recursive", "with_list", "with_list_element", "opt_cycle", "$@219",
+ "literal", "NUM_literal", "temporal_literal", "with_clause", "$@220",
+ "opt_recursive", "with_list", "with_list_element", "opt_cycle", "$@221",
"opt_with_column_list", "with_column_list", "ident_sys_alloc",
"comma_separated_ident_list", "with_element_head", "insert_ident",
"table_wild", "select_sublist_qualified_asterisk", "order_ident",
@@ -3705,21 +3730,21 @@ static const char *const yytname[] =
"keyword_set_special_case", "keyword_sysvar_type", "keyword_data_type",
"keyword_cast_type", "keyword_func_sp_var_and_label",
"keyword_func_sp_var_not_label", "keyword_sp_var_and_label",
- "reserved_keyword_udt_not_param_type", "set", "$@220", "set_param",
- "$@221", "$@222", "$@223", "set_stmt_option_list",
- "start_option_value_list_following_option_type", "$@224",
- "option_value_list", "option_value", "$@225", "option_type",
- "opt_var_type", "opt_var_ident_type", "set_stmt_option", "$@226",
- "$@227", "$@228", "option_value_following_option_type", "$@229", "$@230",
- "$@231", "option_value_no_option_type", "$@232", "$@233", "$@234",
- "$@235", "$@236", "$@237", "$@238", "$@239", "$@240", "$@241",
+ "reserved_keyword_udt_not_param_type", "set", "$@222", "set_param",
+ "$@223", "$@224", "$@225", "set_stmt_option_list",
+ "start_option_value_list_following_option_type", "$@226",
+ "option_value_list", "option_value", "$@227", "option_type",
+ "opt_var_type", "opt_var_ident_type", "set_stmt_option", "$@228",
+ "$@229", "$@230", "option_value_following_option_type", "$@231", "$@232",
+ "$@233", "option_value_no_option_type", "$@234", "$@235", "$@236",
+ "$@237", "$@238", "$@239", "$@240", "$@241", "$@242", "$@243",
"transaction_characteristics", "transaction_access_mode",
"isolation_level", "transaction_access_mode_types", "isolation_types",
- "text_or_password", "set_expr_or_default", "lock", "$@242",
- "opt_lock_wait_timeout", "table_or_tables", "table_lock_list",
- "table_lock", "lock_option", "unlock", "$@243", "handler", "$@244",
- "handler_tail", "$@245", "handler_read_or_scan", "handler_scan_function",
- "handler_rkey_function", "$@246", "handler_rkey_mode", "revoke",
+ "text_or_password", "set_expr_or_default", "set_expr_misc", "lock",
+ "$@244", "opt_lock_wait_timeout", "table_or_tables", "table_lock_list",
+ "table_lock", "lock_option", "unlock", "$@245", "handler", "$@246",
+ "handler_tail", "$@247", "handler_read_or_scan", "handler_scan_function",
+ "handler_rkey_function", "$@248", "handler_rkey_mode", "revoke",
"revoke_command", "admin_option_for_role", "grant", "grant_command",
"opt_with_admin", "opt_with_admin_option", "role_list", "current_role",
"role_name", "grant_role", "opt_table", "grant_privileges",
@@ -3730,58 +3755,58 @@ static const char *const yytname[] =
"auth_expression", "auth_token", "opt_auth_str", "opt_require_clause",
"resource_option", "resource_option_list", "opt_resource_options",
"opt_grant_options", "opt_grant_option", "grant_option_list",
- "grant_option", "begin_stmt_mariadb", "$@247", "compound_statement",
+ "grant_option", "begin_stmt_mariadb", "$@249", "compound_statement",
"opt_not", "opt_work", "opt_chain", "opt_release", "commit", "rollback",
"savepoint", "release", "unit_type_decl", "union_option",
"query_expression_option", "definer_opt", "no_definer", "definer",
"view_algorithm", "opt_view_suid", "view_suid", "view_list_opt",
- "view_list", "view_select", "$@248", "view_check_option",
+ "view_list", "view_select", "$@250", "view_check_option",
"trigger_action_order", "trigger_follows_precedes_clause",
- "trigger_tail", "$@249", "$@250", "$@251", "$@252", "$@253",
- "sf_return_type", "$@254", "xa", "opt_format_xid", "xid",
- "begin_or_start", "opt_join_or_resume", "opt_one_phase", "opt_suspend",
- "$@255", "opt_migrate", "install", "uninstall", "keep_gcc_happy",
- "_empty", "statement", "sp_statement", "$@256", "$@257", "$@258",
- "sp_if_then_statements", "sp_case_then_statements",
- "reserved_keyword_udt", "keyword_sp_block_section", "keyword_label",
- "keyword_sp_decl", "opt_truncate_table_storage_clause",
- "ident_for_loop_index", "row_field_name", "while_body", "$@259",
- "for_loop_statements", "sp_control_label", "sp_block_label",
- "remember_end_opt", "sp_opt_default", "sp_opt_inout",
- "sp_proc_stmts1_implicit_block", "$@260", "remember_lex",
- "keyword_directly_assignable", "ident_directly_assignable",
- "ident_cli_directly_assignable", "set_assign", "$@261", "$@262", "$@263",
- "labels_declaration_oracle", "label_declaration_oracle",
- "opt_exception_clause", "exception_handlers", "exception_handler",
- "$@264", "sp_no_param", "opt_sp_parenthesized_fdparam_list",
- "opt_sp_parenthesized_pdparam_list", "opt_sp_name",
- "opt_package_routine_end_name", "sp_tail_is", "sp_instr_addr", "sp_body",
- "$@265", "$@266", "$@267", "create_package_chistic",
+ "trigger_tail", "$@251", "$@252", "$@253", "$@254", "$@255",
+ "sf_return_type", "$@256", "create_package_chistic",
"create_package_chistics", "opt_create_package_chistics",
- "opt_create_package_chistics_init", "$@268",
- "package_implementation_executable_section",
+ "opt_create_package_chistics_init", "$@257", "xa", "opt_format_xid",
+ "xid", "begin_or_start", "opt_join_or_resume", "opt_one_phase",
+ "opt_suspend", "$@258", "opt_migrate", "install", "uninstall",
+ "keep_gcc_happy", "_empty", "statement", "sp_statement", "$@259",
+ "$@260", "$@261", "sp_if_then_statements", "sp_case_then_statements",
+ "sp_parameters", "sf_parameters", "sf_returned_type_clause",
+ "package_implementation_item_declaration", "sp_package_function_body",
+ "sp_package_procedure_body", "reserved_keyword_udt",
+ "keyword_sp_block_section", "keyword_label", "keyword_sp_decl",
+ "opt_truncate_table_storage_clause", "ident_for_loop_index",
+ "row_field_name", "while_body", "$@262", "for_loop_statements",
+ "sp_control_label", "sp_block_label", "sp_opt_default", "sp_opt_inout",
+ "sp_proc_stmts1_implicit_block", "$@263", "keyword_directly_assignable",
+ "ident_directly_assignable", "ident_cli_directly_assignable",
+ "set_assign", "$@264", "$@265", "$@266", "labels_declaration_oracle",
+ "label_declaration_oracle", "opt_exception_clause", "exception_handlers",
+ "exception_handler", "$@267", "sp_no_param",
+ "opt_sp_parenthesized_fdparam_list", "opt_sp_parenthesized_pdparam_list",
+ "opt_trailing_sp_name", "opt_package_routine_end_name", "sp_tail_is",
+ "sp_instr_addr", "sp_body", "$@268", "$@269", "$@270",
+ "package_implementation_declare_section_list",
"package_implementation_declare_section",
+ "package_implementation_executable_section",
"package_implementation_declare_section_list1",
- "package_implementation_declare_section_list2", "package_routine_lex",
- "package_specification_function", "$@269",
- "package_specification_procedure", "$@270",
+ "package_implementation_declare_section_list2",
+ "package_specification_function", "$@271",
+ "package_specification_procedure", "$@272",
"package_implementation_routine_definition",
- "package_implementation_function_body", "$@271",
- "package_implementation_procedure_body", "$@272",
- "package_implementation_item_declaration",
+ "package_implementation_function_body", "$@273",
+ "package_implementation_procedure_body", "$@274",
"opt_package_specification_element_list",
"package_specification_element_list", "package_specification_element",
"sp_decl_variable_list_anchored", "sp_param_name_and_mode", "sp_param",
- "sp_param_anchored", "sf_c_chistics_and_body_standalone", "$@273",
- "sp_tail_standalone", "$@274", "$@275", "drop_routine", "create_routine",
- "$@276", "$@277", "$@278", "$@279", "$@280", "$@281", "$@282",
- "opt_sp_decl_body_list", "sp_decl_body_list", "$@283",
- "sp_decl_non_handler_list", "sp_decl_handler_list",
- "opt_sp_decl_handler_list", "sp_decl_non_handler", "$@284",
- "sp_proc_stmt", "sp_labelable_stmt", "sp_proc_stmt_compound_ok",
- "sp_labeled_block", "$@285", "$@286", "$@287", "opt_not_atomic",
- "sp_unlabeled_block", "$@288", "$@289", "$@290",
- "sp_block_statements_and_exceptions", "$@291", YY_NULLPTR
+ "sp_param_anchored", "sf_c_chistics_and_body_standalone", "$@275",
+ "sp_tail_standalone", "$@276", "$@277", "create_routine", "$@278",
+ "$@279", "$@280", "$@281", "$@282", "$@283", "opt_sp_decl_body_list",
+ "sp_decl_body_list", "$@284", "sp_decl_non_handler_list",
+ "sp_decl_handler_list", "opt_sp_decl_handler_list",
+ "sp_decl_non_handler", "$@285", "sp_proc_stmt", "sp_labelable_stmt",
+ "sp_proc_stmt_compound_ok", "sp_labeled_block", "$@286", "$@287",
+ "$@288", "opt_not_atomic", "sp_unlabeled_block", "$@289", "$@290",
+ "$@291", "sp_block_statements_and_exceptions", "$@292", YY_NULLPTR
};
static const char *
@@ -3791,12 +3816,12 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-5620)
+#define YYPACT_NINF (-5700)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-3833)
+#define YYTABLE_NINF (-3850)
#define yytable_value_is_error(Yyn) \
0
@@ -3805,647 +3830,650 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const int yypact[] =
{
- 40187, -5620, -5620, 95170, -5620, -5620, 2648, 1295, 95170, -5620,
- 156, -5620, 1258, -5620, -5620, -5620, -5620, -5620, 4411, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 155, 427, -5620, -5620,
- 409, -5620, -5620, -5620, -5620, 691, 81091, 1202, 627, -5620,
- 84796, -5620, -5620, -5620, -5620, 84796, -5620, -5620, 95170, -5620,
- -5620, 1314, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 640, -5620, 1809, 2579, -5620, -5620, -5620, -5620, -5620, -5620,
- 1887, -5620, -5620, -5620, -5620, -5620, -5620, 427, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 1366, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 1751, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 95911, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 395, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 1946, -5620, -5620,
- -5620, -5620, -5620, 208, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 53, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 95170, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 409, -5620, -5620, -5620, 1702, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 1366, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 95170, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 238, -5620,
- -5620, 268, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 71, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 2631, -5620,
- -5620, 137, 2400, 2481, -5620, -5620, 1929, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 2997, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 2407,
- -5620, -5620, -5620, -5620, 3803, 1923, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 48366, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 137, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 214, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 1735, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 96652, 95170, 1771, 1789, 95170, 2491, 81832, 2491,
- -5620, 118, -5620, -5620, 2266, -5620, 1939, -5620, 427, 2443,
- 1902, 2398, 2701, 969, 2409, 82573, 1275, 2491, -5620, 2133,
- 2491, 2491, 2491, 2491, 2491, 2491, -5620, 2491, 2491, 1074,
- 104062, 69976, -5620, -5620, 952, 2586, -5620, -5620, -5620, -5620,
- -5620, -5620, 5802, 427, 24152, 2690, -5620, -5620, 2250, 4706,
- 2041, -5620, 2512, -5620, -5620, 95170, -5620, 2491, 5802, -5620,
- 2512, 70717, 3531, 52082, 7775, 2512, 427, 2606, -5620, 2037,
- -5620, -5620, -5620, -5620, -5620, -5620, 95170, -5620, 1366, -5620,
- -5620, 2489, -5620, -5620, 81832, -5620, -5620, -5620, -5620, -5620,
- 2785, 24152, 252, 2547, -5620, -5620, 2442, 49107, 81832, 2736,
- 2701, 2753, -5620, 1899, 530, -5620, 2153, 2245, 2701, 416,
- 2264, 2701, 2669, 2491, 2491, -5620, -5620, 2759, 2759, 2759,
- 2509, 2759, -5620, 2759, 2851, 2235, 353, -5620, -5620, 2217,
- 95170, 2736, -5620, 2736, -5620, 2877, 2736, 2736, 2366, 2884,
- 2889, 199, 2494, 1766, 1766, 2266, 43920, 398, 2711, -5620,
- 2851, 1689, 2138, 2054, 2054, 2054, 1689, 137, 1689, -5620,
- 3033, 1939, 2940, 95170, -5620, 2946, -5620, 2268, -5620, -5620,
- -5620, 95170, 95170, 279, -5620, 2343, -5620, 2319, 62, 72199,
- -5620, 2968, -5620, -5620, -5620, -5620, -5620, -5620, 2834, 351,
- 2466, 2693, 2395, -5620, 2892, 81832, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 95170, 2360, -5620, -5620, 24152, 3038,
- 2398, -5620, 2886, -5620, -5620, -5620, -5620, 49107, -5620, -5620,
- -5620,104062, -5620, -5620, -5620, 1476, 67012, -5620, 2386, 2706,
- -5620, 2399, 1506, 1544, -5620, -5620, 1582, 1640, 1659, -5620,
- -5620, -5620, 1761, -5620, -5620, -5620,103321, 1649, 2391, -5620,
- -5620, 3056, -5620, -5620, 85537, 358, 95170, 3054, 2491, 95170,
- 95170, 95170, 95170, 95170, -5620, 81832, -5620, -5620, 2491, 2491,
- -5620, -5620, 3055, -5620, 2611, 2565, 2084, 2444, 2777, -5620,
- 2645, -5620, 2478, 2556, 2687, 2492, 2506, 2535, 224, -5620,
- 2519, -5620, 1226, 2941, 332, 376, 2959, 378, 412, 3098,
- 2969, 425, 174, 446, 2757, 482, -5620, -5620, -5620, -5620,
- 2992, 3104, 2529, -5620, 2536, -5620, 3042, 2906, 344, -5620,
- -5620, 198, 2983, 1370, 49107,106095,104803, 83314,106095,106095,
- 106095, -5620, -5620, 280, 95170,105449, 95170, 7384, -5620, -5620,
- 41697, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 95170, -5620, -5620, -5620, -5620, -5620, -5620, 1757, 1329, 8291,
- -5620, 2560, -5620, -5620, -5620, -5620, -5620, 86278, -5620, 223,
- 254, 3076, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 30304, 2576, 2602, 2603, 19538, 2615, 2619,
- 2629, 2636, 2640, 2444, 2444, 2444, 2641, 2644, 2667, 2671,
- 2704, 2712, 2713, -5620, 2721, 2733, 2738, 2739, 2749, 2760,
- 24921, 2766, 2770, 2775, 37938, 2776, 2780, 2784, 2819, 24152,
- 2641, 2823, 2827, -5620, 2830, 2855, 2860, 2866, 2882, 2890,
- 2893, 2900, 3354, 2907, 2908, 2919, 2923, -5620, 2444, 2641,
- 2641, 2932, 2938, 2444, 2949, 2955, 2960, 2973, 2978, 2989,
- 2999, 3000, 3006, 3007, 3011, 3012, 308, 3013, 3020, 3025,
- 3026, 3027, 3028, 3030, 2674, 3031, 3032, 3041, 2742, 3043,
- 3046, 3049, 3050, 317, 3052, 3053, 318, 3058, 3064, 3065,
- 3068, 3070, 3077, 3084, 31073, 31842, 30304, 17231, -5620, 95170,
- 97393, -5620, -5620, 3307, 2189, 3138, 1725, 30304, -5620, -5620,
- -5620, 3351, -5620, 3389, -5620, -5620, -5620, -5620, 3283, 3294,
- -5620, 3311, -5620, -5620, 3320, 2813, -5620, 3505, -5620, -5620,
- -5620, -5620, -5620, 2789, -5620, 3085, 3598, 3620, 3086, 3087,
- -5620, -5620, 496, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 2980, 2903, -5620, 3505,
- -5620, -5620, 75163, -5620, 5448, -5620, -5620, 2611, 3234, 3522,
- -5620, 3689, -5620, 3618, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 3531, -5620, -5620, 53586,
- 3612, 880, -5620, -5620, 339, -5620, 404, 475, 65530, -5620,
- 389, 66271, 489, 87019, 1128, -5620, 72940, -5620, 517, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3089,
- -5620, 3202, 3416, 3100, 2751, 1876, -5620, -5620, 236, 957,
- 3189, 93, -5620, 1005, -5620, 1876, -5620, 75904, 356, 2279,
- -5620, 981, -5620, 3764, -5620, -5620, 3204, 3191, 3217, -5620,
- 3066, -5620, 2701, -5620, 375, -5620, 356, 1876, 2279, -5620,
- 3392, 3470, 1076, 3416, -5620, -47, -5620, -5620, -5620, 3760,
- -5620, 3122, -5620, 3728, -5620, 95170, 391, 49107, -5620, -5620,
- -5620, -5620, 3124, 49107, 49107, 1159, 1160, 3307, 3125, 24152,
- -5620, -5620, 4138, 55842, 3328, 1578, 7, -5620, -5620, 1809,
- 95170, -5620, -5620, 1055, -5620, 3558, -5620, 3143, -5620, 98134,
- 1160, 3796, -5620, -5620, -5620, 852, 3533, -5620, 3146, -5620,
- -5620, -5620, -5620, 49107, 95170, 2701, -5620, -5620, -5620, -5620,
- 3147, -5620, -5620, 3356, 3239, -5620, 3176, -5620, -5620, 230,
- -5620, -5620, 3933, -5620, 95170, -5620, 2736, -5620, -5620, 2736,
- -5620, -5620, -5620, 2736, 2736, 2237, 2736, -5620, -5620, 3203,
- -5620, 3485, 3490, 2892, -5620, 3175, 43179, 95170, 3950, -5620,
- 3969, -5620, -5620, -5620, 3180, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 3749, 3936, 3936, -5620, 54338, -5620, -5620,
- 3839, 2711, 1052, 3681, 57346, 3827, 3916, 59602, -5620, 356,
- -5620, -5620, -5620, -5620, 553, 95170, -5620, 553, 553, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 137, -5620, -5620, 2443, 3608, 73681, 95170, 1689, 2138,
- 18769, 3962, 3964, -5620, -5620, -5620, 2701, 430, 3594, -5620,
- 95170, -5620, -5620, -5620, 2444, 4004, -5620, -5620, -5620, -5620,
- -5620, 49107, 3429, 72199, 2491, -5620, -5620, -5620, 351, -5620,
- 1915, 95170, 49107, 3265, -5620, 49107, 3226, 24152, -5620, -5620,
- 3703, 3307, -5620, 3588, -5620, -5620, 49107, 1840, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 3237, -5620, -5620, -5620, 3237, 925, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3238,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 3798, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3238, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 218, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 3635, 3093, 1220, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 3635, -5620, 1220, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3238, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 3248, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 3635, -5620, 1220, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 3237, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 3237, -5620, -5620, 1220, 3237, -5620, 3249, 3238, 3635,
- 1359, 1900, 3238, -5620, -5620, 3237, 3251, 3237, 3237, 3237,
- 3237, -5620, 3237, 4019, 3252, -5620, 3238, -5620, -5620, -5620,
- -5620, -5620, -5620, 130, 3237, 3237, 3237, 3237, 3256, 222,
- -5620, 229, 249, 250, 253, 264, 265, -5620, -5620, -5620,
- -5620, 3909, 95170, 3911, -5620, 3692, 1649, 3255, 3259, -5620,
- 49107, 3988, 49107, 3921, 2711, -5620, 3269, -5620, 3268, -5620,
- -5620, 3938, 95170, 95170, -5620, -5620, -5620, -5620, 3273, 76645,
- -5620, 75163, 49107, -5620, -5620, 3888, 3430, -5620, -5620, -5620,
- -5620, -5620, -5620, 3371, -5620, -5620, 3296, -5620, -5620, -5620,
- -5620, 3744, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 75163, -5620, -5620, 3746, 3747, -5620, 72199, 2129, 8165, 97393,
- -5620, 3940, -5620, -5620, -5620, 3760, -5620, -5620, 25690, -5620,
- 26459, -5620, -5620, -5620, 3577, 1363, 823, -5620, -5620, -5620,
- -5620, -5620, -5620, 4040, -5620, -5620, -5620, -5620, -5620, -5620,
- 3774, 95170, 3526, 3961, 3942, -5620, -5620, -5620, -5620, -5620,
- 3779, 3315, 3920, 3313, -5620, -5620, 275, -5620, 3321, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 49107,
- 55090, -5620, -5620, -5620, 3323, -5620, -5620, -5620, 3326, 30304,
- 30304, -5620, 4064, 4064, 4064, 24152, 3016, 473, 3686, 24152,
- 24152, 24152, 2309, 3335, -5620, -5620, -5620, 396, -5620, 24152,
- 24152, 38685, 3338, 520, 5444, 24152, 4002, 4002, -5620, 24152,
- 24152, 17231, 4773, 24152, 24152, 24152, 97393, 38685, 3778, 3337,
- -5620, 3333, 2373, 24152, 2378, 24152, -5620, -5620, 24152, 24152,
- 24152, 24152, 3341, 32611, 3343, 24152, 24152, 3345, 3480, 4064,
- 4064, 2401, 436, -5620, -5620, -5620, 4064, 4064, -5620, 24152,
- 24152, 18000, 24152, 24152, 2413, 24152, 24152, 24152, 24152, 24152,
- 24152, -5620, 24152, 24152, 1611, 24152, 24152, 49107, 24152, 24152,
- 4003, 49107, 24152, 24152, 4005, 24152, 24152, 49107, 24152, -5620,
- 24152, 3626, 3626, -5620, 24152, 18000, 24152, 3349, 39432, 24152,
- 24152, 24152, 24921, -5620, 24921, -5620, -5620, 3353, 2883, 545,
- 137, 24152, 3350, -5620, -5620, -5620, -5620, 24152, 24152, 24152,
- 32611, -5620, -5620, -5620, 670, -5620, -5620, -5620, 27228, 32611,
- 3357, 32611, 32611, 3971, 2265, 32611, 32611, 32611, 32611, 32611,
- 32611, 32611, 33380, 34149, 32611, 32611, 32611, 32611, -5620, 81832,
- 30304, 51330, 3360, 4006, -5620, 77386, -5620, 1588, 1061, -5620,
- 2701, 4706, 35687, -5620, 3359, -5620, 3856, 49107, -5620, 3362,
- 4022, 75163, 72199, 2129, 3380, -5620, 1529, 276, -5620, 76645,
- 95170, -5620, -5620, -5620, 4078, 24152, -5620, -5620, -5620, -5620,
- -5620, 3365, 533, 3372, -5620, 1176, -5620, -5620, -5620, -5620,
- -5620, 95170, -5620, 87760, 52834, 3467, 4029, 3397, 2736, 88501,
- 95170, 49107, 95170, 98875, 95170, 95170, 49107, 75163, 49107, -5620,
- -5620, -5620, 1020, 1876, 95170, 1876, 2279, 1036, 1876, 4008,
- -5620, -5620, 1029, 1029, -5620, -5620, -5620, -5620, -5620, -5620,
- 1876, 95170, 95170, 1876, 72199, -5620, 2279, 1847, -5620, 3683,
- 3475, -5620, -5620, -5620, 3726, -5620, -5620, 4052, 3398, -5620,
- 3750, -5620, 3493, -5620, -5620, 49107, -5620, -5620, 2279, -5620,
- 2279, 2279, 4055, 1876, 1876, 1876, -5620, 44661, 3404, 3407,
- -5620, 3405, -5620, 3409, -5620, 4035, -5620, -5620, -5620, 3765,
- 4190, 4043, 3426, -5620, -5620, 3974, 63, -5620, 3851, -5620,
- 3976, -5620, 24152, 3307, 20307, 3709, -5620, -5620, 3710, 3711,
- 3712, -5620, -5620, -5620, -5620, 3857, 3713, -5620, 2701, 3714,
- -5620, -5620, -5620, 3443, -5620, -5620, -5620, 81832, 35687, -5620,
- 3444, -5620, 3464, -5620, 271, -5620, -5620, 4108, 3553, 24152,
- -5620, -5620, 49107, 3945, -5620, 2701, 1899, 95170, -5620, -5620,
- 4186, -5620, 1828, 4107, -5620, -5620, 3564, 416, -5620, 4107,
- 1019, -5620, -5620, 2759, 3645, -5620, -5620, -5620, 81832, -5620,
- -5620, -5620, -5620, -5620, -5620, 95170, -5620, 76645, 72199, 81832,
- 2736, 2736, -5620, 49107, 2736, 95170, -5620, -5620, -5620, 2736,
- 2736, 2736, 3507, -5620, 2186, 3482, 3483, 3486, 3487, 2014,
- 3491, 45402, 2414, 4772, 4112, 4115, -5620, 4065, 3039, 4065,
- -5620, -5620, 45402, 44661, 3497, 3950, -5620, -5620, -5620, -5620,
- 81832, 3498, -5620, -5620, 3492, -5620, 24152, 4219, 4149, 3839,
- -5620, -5620, 58098, 1518, 86278, -5620, -5620, -5620, 3848, 4037,
- 993, -5620, 3502, 3630, -5620, 190, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 24152, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 30304, 2671, -5620, 3307, -5620, -5620, -5620, -5620,
- -5620, 276, 260, -5620, -5620, -5620, 466, 3872, 1643, -5620,
- -5620, 81832, 1643, -5620, 3516, 3817, -5620, 3819, 147, -5620,
- 49107, -5620, -5620, -5620, -5620, -5620, 49107, 3518, -5620, 3715,
- 95170, 2360, 3524, 3523, 3307, 4026, -5620, 3703, -5620, -5620,
- -5620, 5802, 4243, 5776, 164, 3581, -5620, -5620, -5620, -5620,
- -5620, 49107, -5620, -5620, 1857, 3549, 2897, -5620, -5620, -5620,
- 3635, 276, 3635, -5620, -5620, 2931, 1086, -5620, -5620, -5620,
- 1086, -5620, 435, 3612, 78127, 3635, -5620, -5620, -5620, -5620,
- 4020, 1220, 1750, 78868, 2573, 3941, -5620, -5620, -5620, 1086,
- 2759, -5620, -5620, 3635, -5620, -5620, -5620, 2759, 1086, -5620,
- 4023, -5620, -5620, -5620, 1086, 3635,104062, 2023, 1220, -5620,
- -5620, 1220, 1086, 534, 95170, 2023, 4097, -5620, 1750, 4279,
- 1220, 3635, 1086, 4307, -5620, 1086, -5620, -5620, 220, -5620,
- -5620, 1649, -5620, -5620, -5620, 3749, 3637, -5620, 3556, -5620,
- -5620, 915, 4121, -5620, -5620, 4141, 95170, 4220, 61084, -5620,
- -5620, 4146, -5620, 95170, 3569, -5620, -5620, 3570, 188, 49107,
- 49107, 5802, -5620, -5620, 3574, -5620, -5620, -5620, 4068, -5620,
- -5620, 85, 4293, -5620, -5620, -5620, 46143, 46143, 1226, 2941,
- -5620, -5620, 2959, -5620, -5620, 2969, -5620, 174, -5620, 2757,
- -5620, -5620, -5620, -5620, 2067, -5620, -5620, -5620, 4035, 24152,
- 50589, 3307, -5620, -5620, 49107, -5620, 4211, -5620, -5620,101839,
- 145, -5620, -5620, 256, 49107, -5620, -5620, -5620, -5620, 4206,
- 3717, 95170, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 95170,
- 2360, -5620, 95170,104062, 5802, 5802, -5620, 82573, -5620, 1305,
- 1529, -5620, 4319, 97393, 24152, -5620, 3583, -5620, 3584, 3587,
- 3029, 3943, 24152, 24152, -5620, 2810, 83, 452, -5620, 3589,
- 3603, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3596,
- -5620, -5620, 555, 560, 3602, -5620, -5620, -5620, 3604, 137,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 4240, -5620, 270, -5620, -5620, -5620, 24152, 567, 1171, 1172,
- 3614, 406, 457, 1199, 3323, 2090, 3607, 38685, 97393, 4064,
- 3610, 493, 4064, 3616, 1218, 1297, 602, 1522, 1696, -5620,
- 1156, -5620, 1317, 1335, -5620, -5620, 3619, 3622, 4064, 3623,
- -5620, 3624, 3627, 3631, 1430, 462, 3632, -5620, -5620, 21076,
- 21845, 22614, 3141, 3633, -5620, -5620, 1466, 1838, 4064, 3636,
- 1974, 1527, 1642, -5620, 2114, 1644, 1701, 3638, 3125, 2113,
- 2273, -5620, -5620, -5620, -5620, 3640, 2296, 2318, 3643, 3646,
- 2342, 2348, 49107, 3647, 3648, 2361, 49107, 1707, 2390, 3649,
- 1708, 463, 3650, 3653, 2408, 3659, 1738, -5620, 97393, 95170,
- 3661, 3655, 292, 3663, 2418, 4773, 4773, -5620, 24152, 3664,
- 363, 97393, 2564, 1384, -5620, 3138, -5620, -5620, -5620, -5620,
- 207, -5620, 3641, 3138, 3651, 3282, 17231, -5620, 1262, 1809,
- 32611, 32611, 3666, 32611, 32611, 1524, 540, 540, 3678, 3678,
- 1222, 620, 24921, 1524, 24921, 1524, 3678, 3678, 3678, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 4229, 3674, 3677,
- 3684, 3687, -70, 3682, -5620, -5620, -5620, -5620, -5620, -5620,
- 58, 4089, -5620, 3878, 1328, 24152, -5620, 3718, 4439, 4440,
- 4441, -5620, -5620, -5620, -5620, 75163, 75163, 3693, -5620, 1019,
- 4047, 4345, 76645, 4349, -5620, 3696, 46143, 46143, -5620, 3697,
- -5620, 24152, 3695, 3702, 3704, 99616, -5620, 4357, 276, 79609,
- 3307, 75163, 334, 18769, 95170, 95170, -5620, 87019, 4363, 868,
- 3989, -5620, 3719, 3721, -5620, 276, 18769, 3720, 1229, 535,
- -5620, 3722, 3727, -5620, -5620, -5620, -5620, 24152, 3731, 95170,
- 95170, -5620, -5620, -5620, -5620, 95170, -5620, -5620, -5620, -5620,
- -5620, -5620, 2701, 24152, 95170, 1876, -5620, -5620, -5620, 1876,
- 95170, 1876, -5620, 2701, 4369, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 1876, -5620, -5620, -5620, -5620,
- -5620, 3899, 356, 3066, 4008, 4107, 2279, 49107, 1876, 1876,
- 24152, -5620, -5620, -5620, -5620, 4257, 3749, 20307, 3736, 3735,
- -5620, -5620, 5802, 95170, 97393, 4465, -5620, -5620, 7227, -5620,
- 81832, 89242, 49107, -5620, -5620, -5620, 2474, -5620, -5620, -5620,
- -5620, -5620, 3307, 2547, 2671, -5620, 3738, 3307, -5620, -5620,
- 4421, -5620, -5620, -5620, -5620, 2701, -5620, -5620, 4518, -5620,
- 49107, -5620, -5620, 56594, 56594, 1926, -5620,100357, -5620, 2701,
- 3307, 49107, 1537, 256, -5620, 4475, -5620, -5620, 3859, -5620,
- -5620, -5620, 3751, -5620, 4161, -5620, -5620, -5620, -5620, -5620,
- -5620, 3753, -5620, 4400, -5620, 2147, 200, 95170, 524, 147,
- -5620, 95170, 95170, 49107, -5620, 95170, -5620, 95170, 2736, -5620,
- -5620, 2736, 49107, 95170, 95170, 2736, 24152, 45402, -5620, -5620,
- -5620, -5620, -5620, 45402, -5620, 2756, -5620, 3956, 2017, 2017,
- -5620, -5620, -5620, -5620, -5620, 4382, 4065, 4065, 45402, 4384,
- 4184, -5620, 95170, 4387, 490, -5620, 54338, 95170, 3307, 24152,
- -5620, 3793, 4149, -5620, 211, 244, 190, -5620, 4039, 256,
- -5620, -5620, 59602, 4105, 59602, 59602, 97393, 3998, 24152, -5620,
- 4427, 3782, 3307, 18769, 18769, 2147, 2701, -5620, 276, 276,
- 4001, 4296, 4297, 3906, 2701, 4298, 4299, 4301, -5620, -5620,
- -5620, -5620, -5620, 3272, 2101, 227, 1204, 72199, 4259, 1019,
- 4373, 3799, -5620, 49107, 4450, -5620, -5620, -5620, -5620, 24152,
- -5620, -5620, -5620, 6955, -5620, 3824, 3825, 3826, 3828, 3829,
- 3831, 3832, 3834, 3835, 3836, 3837, 3840, 3842, 3843, 3844,
- 3846, 3847, 3849, 3853, 3855, 3860, 3863, 3864, 3865, 3867,
- 298, -5620, -5620, 3852, -5620, -5620, -5620, -5620, 95170, 4426,
- 3854, 3861, 3862, 3866, -5620, -5620, 95170, -5620, 2120, 4294,
- 4324, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 80350, 276, -5620, -5620, 2151, -5620,
- -5620, 2219, -5620, -5620, -5620, -5620, -5620, 2229, 69235, -5620,
- 24152, 24152, -5620, -5620, -5620, -5620, -5620, 2023, 2023, 3833,
- -5620, 3868, -5620, -5620, -5620, -5620, -5620, 4279, -5620, 3869,
- -5620, 64789, -5620, -5620, -5620, -5620, 3586, -5620, 4187, -5620,
- 2017, 95170, 4323, 61084, -5620, 4057, 4467, -5620, -5620, 44661,
- -5620, 3870, 49107, -5620, 76645, 75163, -5620, -5620, -5620, 3873,
- 1305, 9164, -5620, -5620, 4604, 72199, 4306, -5620, -5620, 3871,
- -5620, 3874, 4353, 4356, -5620, 97393, -5620, -5620, -5620, 3307,
- -5620, -5620, 3877, -5620, -5620, 3974, 3936, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 3889, 4150, 4260, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 4506, -5620, -5620, -5620, -5620, 2262, 284, -5620,
- -5620, -5620,106095,106095,106095, -5620, 4235, -5620,102580, 24152,
- -5620, 1820, -5620, 24152, -5620, -5620, 24152, -5620, 3307, 3334,
- 106826, 78868, -5620, 78868,106826, 24152, -5620, 3885, -5620, 4514,
- 4516, -5620, -5620, -5620, 24152, -5620, 24152, 24152, 1842, 24152,
- 24152, 24152, 24152, -5620, 24152, -5620, 24152, 24152, -5620, 32611,
- -5620, 3883, 3891, -5620, -5620, 3892, -5620, 24152, 24152, -5620,
- -5620, -5620, 24152, 24152, 24152, -5620, -5620, 3893, -5620, -5620,
- -5620, -5620, 24152, 24152, 24152, -5620, 24152, 3198, 24152, 3381,
- 24152, 3579, 24152, -5620, 27997, -5620, 3894, -5620, -5620, 24152,
- 24152, -5620, 24152, 24152, 24152, -5620, -5620, -5620, 24152, -5620,
- 4463, 24152, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 24152, -5620, 492, 28766, -5620, 24152, 24152, 24152, -5620, -5620,
- 24152, 3890, 3895, -5620, 95170, 2501, 3183, 256, 3898, -5620,
- -5620, 3912, 3914, 3125, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 520, 32611, 499, 32611, 1809, 3318, 17231, -5620, 1379,
- 1809, 4773, 4773, 95170, 4615, 3904, -5620, 24152, 24152, 18000,
- 24152, 97393, 24152, 3908, 3907, -5620, 3917, 32611, -5620, -5620,
- 3918, -5620, 2485, 3183, 4007, 4364, -5620, 3307, 35687, 4416,
- -5620, 49107, 4419, 4466, 4125, -5620, 75163, 72199, 4583, 4584,
- -5620, 3307, -5620, 3926, -5620, -5620, -5620, 3927, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 552, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 24152, 75163, -5620, -5620, -5620,
- -5620, 276, -5620, 3939, 3944, -5620, -5620, 276, 276, 18769,
- -5620, 40942, -5620, -5620, 195, 4223, 4485, -5620, -5620, 95170,
- 1176, 95170, -5620, 52834, 52834, 89983, 3307, 12, -5620, -5620,
- -5620, -5620, 3307, -5620, -5620, -5620, -5620, -5620, -5620, 3952,
- -5620, -5620, -5620, 4689, -5620, -5620, 4369, -5620, 2711, 2279,
- -5620, -5620, 3307, 39432, 1467, -5620, -5620, -5620, 20307, 9586,
- -5620, 3946, 3947, 3948, -5620, 49107, 3949, 4401, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3951, -5620,
- -5620, 20307, 3965, -5620, 4107, -5620, 3873, 1320, 3968, 3954,
- -5620, -5620, -5620, -5620, -5620, -5620, 287, 291, 2762, 2711,
- -5620, -5620, 381, -5620, -5620, -5620, -5620, -5620, 897, -5620,
- -5620, 4107, -5620, 1828, 2701, 3991, 299, 256, 4180, -5620,
- -5620, 2147, 1446, 1446, 4529, 200, 4404, -5620, 4259, 4607,
- 4531, 4536, -5620, 3272, -5620, -5620, 364, -5620, -5620, -5620,
- 95170, -5620, -5620, -25, -5620, 49107, 1922, 3969, 3969, -5620,
- 2017, 333, -5620, 32611, 4691, -5620, 4453, 45402, 4587, 4589,
- -5620, 45402, -5620, -5620, 2283, -5620, -5620, 74422, -5620, -5620,
- -5620, 3307, 226, 2436, 24152, 95170, -5620, 3793, 4030, -5620,
- -5620, 244, -5620, -5620, -5620, -5620, 59602, -5620, -5620, -5620,
- 1518, 3967, 2436, 1052, 3970, -5620, -5620, -5620, -5620, 79609,
- 74422, -5620, 4344, 4346, 1917, -5620, -5620, -5620, -5620, 276,
- 276, -5620, 479, 276, -5620, -5620, 294, -5620, -5620, 1205,
- 325, 3272, -5620, 2701, 2701, 2701, 2701, 256, 2701, 2701,
- 2301, -5620, 326, -5620, -5620, 81832, -5620, 4722, 4724, -5620,
- 4725, -5620, -5620, 1309, -5620, 3062, 1047, -5620, 1051, -5620,
- 4517, 95170, 4705, 3799, -5620, 441, 2360, 3307, -5620, 4476,
- 3984, 3985, 256, 3987, 256, 256, 2701, 2701, 3952, 2701,
- 256, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 256, 2701,
- 1545, 3690, 408, 2701, 256, 5776, -5620, -5620, 2312, 2367,
- -5620, 67753, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 4737, -5620, -5620, -5620, -5620, -5620, 1750, 2759, 1750, -5620,
- 104062, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 3307, 3307, -5620, -5620, 95170, 4738, -5620, -5620, -5620, -5620,
- 3673, -5620, -5620, -5620, 4309, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 3986, 44661, 1004, -5620, 58850, 4532,
- 2711, 4010, -5620, 1019, -5620, -5620, 1656, 4597, -5620, 3996,
- 24152, -5620, 536, 4197, 4012, 61825, 72199, 72199, -5620, 2831,
- -5620, 49107, -5620, 4640, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 24152, -5620, -5620, 95170, 2360, 3888, -5620, -5620, -5620,
- -5620, -5620, 4433,106095, 4000, 3307, 24152, 3307, 3307, 24152,
- 3237, 3237, 3238, 3256, -5620, 4694, -5620, 4631, 3237, 3237,
- -5620, 3237, 4636, 3237, 3237, -5620, 4014, -5620, -5620, 4015,
- 4016, 4017, 3125, -5620, 24152, 24152, 2473, 129, 129, 24152,
- 1925, 1976, 505, -5620, 2495, 2513, 2533, 1509, 97393, -5620,
- -5620, 2617, 2632, 2633, 2709, 2754, -5620, 1986, 3425, 1998,
- 3307, 24152, 3307, 24152, 3307, 24152, 3307, 24921, 2767, -5620,
- 2355, 3748, -5620, 2377, 3999, 2781, 2812, 2381, -5620, 3017,
- 4768, 2410, 24921, 2817, 2828, 2033, 2047, 2856, 97393, 95170,
- 4013, 4025, 4025, 349, -5620, 4027, -5620, -5620, -5620, 4033,
- -5620, 24152, 24152, 4021, 3138, -5620, 24152, 1809, 32611, 515,
- 32611, -5620, -5620, 4229, -5620, 24152, -5620, 4593, 4028, 3688,
- 4031, 4032, 3141, 4038, 4041, 4044, 4048, 3307, -5620, -5620,
- 95170, 4049, 1725, -5620, 3952, -5620, 4652, -5620, 4752, 4054,
- 4069, 4058, 3918, -5620, 75163, -5620, 49107, -5620, 4692, 3570,
- -5620, 72199, 72199, -5620, 84055, -5620, 60343, 95170, 95170, -5620,
- 3307, -5620, 18769, 334, 4797, 4800, -5620, -5620, -5620, -5620,
- 127, 4602, -5620, -5620, -5620, -5620, 18769, 276, -5620, 276,
- 18769, 3727, -5620, -5620, -5620, -5620, 3745, -5620, 356, -5620,
- -5620, -5620, 1876, 4056, -5620, 276, 1178, -5620, 20307, 4059,
- 4062, -5620, 4659, -5620, 520, 316, -5620, 3749, -5620, 4530,
- -5620, -5620, 4066, 90724, -5620, 4070, -5620, -5620, 4611, -5620,
- -5620, 4053, 56594, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 356, 4114, 4300, -5620, -5620, -5620,
- -5620, -5620, 3233, -5620, 4162, 4165, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 49107, 4648, 72199, 1047, 4448,
- 49107, 49107, 7198, 9207, 3272, -5620, 2087, 2701, -5620, -5620,
- -5620, 364, -5620, 4079, 95170, -5620, 3799, 4080, 472, 4080,
- -5620, -5620, -5620, -5620, 1725, 2017, 2017, 4188, 4561, 45402,
- 45402, 4231, 4562, 24152, 4083, -5620, 95170, -5620, 1200, -5620,
- 4486, -5620, -5620, 24152, -5620, -5620, -5620, -5620, 3307, 4816,
- 4090, -5620, -5620, -5620, -5620, -5620, -5620, 24152, -5620, 58098,
- 24152, 4091, 4093, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 492, 492, -5620, -5620, 492, 492, -5620, -5620, -5620, -5620,
- 492, 492, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 2101, -5620, 4842, 585, -5620, 4668, -5620, -5620,
- -5620, -5620, 956, 256, 256, 256, 3690, 1977, -5620, 3062,
- 439, 4431, -5620, 6672, 1809, 1596, 4591, 2223, -5620, 2419,
- -5620, 4826, -5620, 205, -5620, -5620, -5620, 312, 324, -5620,
- 371, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 95170,
- -5620, 4669, -5620, -5620, -5620, -5620, 3251, 266, -5620, -5620,
- 4102, -5620, -5620, -5620, -5620, -5620, -5620, 64789, -5620, -5620,
- 61084, 2711, -5620, 95170, 4444, 4633, -5620, -5620, -5620, -5620,
- -5620, -5620, 520, -5620, 3307, -5620, 4755, -5620, -5620, -5620,
- -5620, 147, 147, -5620, -5620, -5620, -5620, 316, -5620, -5620,
- 4640, 4386, -5620, 1483, 3307, -5620, -5620, -5620, -5620, -5620,
- -5620, 95170, 505, 3307, -5620, 1750, -5620, -5620, 3237, -5620,
- 1750, -5620, -5620, -5620, -5620, -5620, -5620, 1750, -5620, -5620,
- -5620, -5620, 4109, 4773, 4773, -5620, 4827, 4637, 4726, 2885,
- 24152, 24152, -5620, 24152, -5620, -5620, -5620, 1374, 4116, 4586,
- -5620, -5620, -5620, -5620, -5620, -5620, 24152, 24152, 24152, 3307,
- 3307, 3307, 4773, -5620, -5620, 3195, -5620, -5620,106826, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 408, 4773, -5620, -5620,
- 24152, 24152, -5620, -5620, -5620, 95170, 3183, 4117, 4394, -5620,
- -5620, -5620, 3183, 4258, -5620, -5620, 3183, 256, -5620, -5620,
- -5620, 2500, 3138, -5620, 24152, 1809, 4696, 4122, 4838, 4127,
- -5620, -5620, -5620, -5620, -5620, -5620, 24152, 84055, -5620, 4130,
- 4132, -5620, -5620, -5620, 4569, 24152, 4748, 4701, -5620, 3183,
- 95170, -5620, -5620, -5620, 72199, 3696, 3696, 91465, -5620, -5620,
- -5620, -5620, 1891, 276, 276, 18769, -5620, -5620, 4140, 4142,
- 18769, 18769, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 356, -5620, 39432, 2711, 23383,
- -5620, -5620, -5620, 20307, -5620, 4143, 39432, 4613, -5620, -5620,
- -5620, 4532, 228, -5620, -5620, -5620, 4530, -5620, 92206, -5620,
- 4148, -5620, 4139, -5620, 1895, 4482, 4758, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 4153, -5620, -5620, -5620, 4170, -5620, 4155,
- -5620, -5620, -5620, 49107, -5620, -5620, 4185, -5620, -5620, 42438,
- 4774, 4201, 4525, 49107, 276, 276, 276, 276, 276, 276,
- 276, 276, 276, 276, 4528, 276, 276, 276, 276, 276,
- 276, 276, 276, 276, 276, 1624, 95170, 276, 276, -5620,
- -5620, 4730, -5620, 6555, -5620, -5620, -5620, -5620, -5620, 276,
- -5620, 2087, -5620, -5620, 1321, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 608, 4746, 4900, 4175, -5620, -5620, 4707, -5620,
- -5620, -5620, -5620, 4282, 4712, 3799, 2745, -5620, -5620, -5620,
- 4661, -5620, -5620, -5620, 4662, 3307, 95170, -5620, -5620, -5620,
- 1324, 1987, 4796, 2436, 4191, 95170, 2436, 244, 190, 3307,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 354, -5620, 81832, -5620, -5620, -5620, -5620,
- -5620, 4937, 4939, -5620, -5620, -5620, -5620, 4379, 420, 4269,
- 1909, 4756, 4590, 4759, 2169, 3707, 276, 4760, 4914, -5620,
- 688, 276, 4763, 4825, 4280, 4828, 4769, -5620, 4284, 4590,
- 4775, 4398, 4777, 4779, 4780, -5620, -5620, 9207, -5620, -5620,
- -5620, -5620, 166, 46884, -5620, -5620, -5620, -5620, -5620, 4388,
- 24152, 24152, 4798, 95170, 4799, -5620, 4617, -5620, 95170, -5620,
- 520, -5620, -5620, -5620, 4519, -5620, 2515, -5620, -5620, 2574,
- -5620, -5620, 2582, -5620, -5620, -5620, -5620, -5620, 4747, 95170,
- -5620, -5620, 3870, -5620, 4877, -5620, 4567, 3380, -5620, -5620,
- 137, 4423, 4695, 4695, -5620, -5620, -5620, 4807, -5620, -5620,
- -5620, -5620, 4858, 2360,106095, 4588, -5620, -5620, -5620, -5620,
- -5620, -5620, 4234, 4236, 24152, 2759, 4726, 59602, 4238, -5620,
- -5620, 2887, 2209, 2583, 4521, 4473, -5620, 4412, -5620, 2910,
- 3307, 3307, 771, 3238, -5620, -5620, -5620, -5620, 4869, 3237,
- -5620, 4956, -5620, 3237, 1750, -5620, -5620, -5620, -5620, -5620,
- 4249, 2590, 1875, 2943, 2947, -5620, -5620, -5620, 4251, -5620,
- -5620, 301, -5620, 4250, -5620, 2597, 4968, 1980, 24152, -5620,
- 4254, -5620, -5620, 95170, -5620, -5620, 4773, 1330, -5620, 2598,
- -5620, -5620, -5620, 4255, 3696, -5620, -5620, 62566, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, 18769, 18769, 4107, -5620, 4141,
- 2671, -5620, -5620, -5620, -5620, 4630, 4262, 4256, -5620, -5620,
- -5620, 4252, 137, 39432, -5620, -5620, 64789, -5620, -5620, 4264,
- 4263, -5620, -5620, -5620, 90724, -5620, 2622, -5620, -5620, 4987,
- 20307, 2701, 2601, 4268, -5620, 81832, 4274, 4275, 49848, 1920,
- 95170, 2625, -5620, -5620, -5620, -5620, -5620, 2125, -5620, 1356,
- 2736, 2474, 2474, -5620, 4261, 49107, -5620, 276, -5620, 390,
- 392, 428, 448, -5620, 3952, 256, 256, 2701, 2701, 276,
- 256, 81832, 1868, 256, 3952, 3952, 458, 2701, 1173, 390,
- -5620, -5620, -5620, 256, 390, 255, -5620, -5620, 9210, -5620,
- 9207, 71458,107566, -5620, -5620, -5620, 4629, 1321, -5620, 95170,
- 4061, -5620, -5620, 1781, 4405, -5620, 4281, 95170, -5620, 2701,
- -5620, 5007, 5032, -5620, -5620, 4688, 24152, 4290, 24152, 4291,
- 2658, -5620, 2474, -5620, 2474, -5620, 1324, 5010, 5012, 4955,
- 5013, 1987, -5620, 2456, -5620, -5620, -5620, -5620, -5620, -5620,
- 244, -5620, -5620, 4302, -5620, -5620, -5620, -5620, 4634, -5620,
- 5049, -5620, 4754, 47625, 2736, -5620, 1810, 4342, -5620, -5620,
- -5620, 4946, 3054, 3054, 409, 3054, 92206, 95170, 49107, 490,
- 1283, 4930, 2491, 1991, 4351, 4868, 3054, 3054, 92947, 409,
- 39432, -5620, -5620, -5620, 3054, -5620, 3054, 49107, 93688, 409,
- -5620, -5620, -5620, 95170, -5620, 3054, 409, -5620, 409, 409,
- 92206, -5620, 8027, -5620, -5620, 42438, 315, -5620, 3307, 4773,
- 4704, -5620, -5620, 4428, 2701, 4673, -5620, -5620, 4782, -5620,
- 95170, 297, -5620, 256, -5620, 256, -5620, 256, -5620, 281,
- -5620, 32611, -5620, 3697, -5620, -5620, 2179, -5620, -5620, 4675,
- 4532, 4819, -5620, -5620,106095, -5620, -5620, 4322, 2436, -5620,
- 4325, -5620, -5620, -5620, -5620, 24152, -5620, 4557, -5620, 4663,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 3952, -5620, -5620, -5620, 4327, -5620, 256, -5620, 24152, -5620,
- -5620, 4329, 3858, 2436, -5620, -5620, 4425, 4364, 4333, -5620,
- 4701, 95170, -5620, -5620, 18769, 18769, -5620, -5620, -5620, 4467,
- -5620, -5620, -5620, 39432, 63307, 4335, 4331, -5620, 276, -5620,
- 109, -5620, 95170, -5620, -5620, 3952, 4697, -5620, 2663, -5620,
- -5620, 95170, 4338, 4537, 95170, 95170, -5620, -5620, 4343, 95170,
- -5620, -5620, -5620, 42438, 4348, 4961, 4963, 2474, -5620, 2736,
- 4889, 49848, -5620, 2736, 2736, 68494, 95170, 4350, 2701, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 4354, -5620,
- -5620, -5620, -5620, -5620, 2701, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 5075,
- -5620, 4730, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 4352, -5620, -5620, -5620, -5620, -5620, -5620,
- 107566, 1345, -5620, -5620, -5620, -5620, 4358, -5620, 4362, -5620,
- -5620, 4355, 4347, -5620, -5620, -5620, 5027, 2087, -5620, -5620,
- -5620, 4933, 1596, -5620, -5620, 4360, -5620, 69235, -5620, -5620,
- -5620, -5620, 4361, 4359, 3307, 95170, 3307, 95170, -5620, 5022,
- 5022, -5620, 2759, 2759, 5086, 2759, -5620, 5087, 5088, 2456,
- -5620, -5620, 5125, 420, 4750, 439, 1809, 409, 1809, 5030,
- -5620, -5620, 95170, 49848, 92206, 49848, -5620, 4871, -5620, 74422,
- 49848, 3054, 95170, -5620, 5035, -5620, 4999, 49848, 49848, -5620,
- -5620, 92206, 4381, -5620, 2436, 2690, 95170, 49848, -5620, -5620,
- -5620, 3183, 4850, 49848, 92206, -5620, 92206, -5620, 4690, 4878,
- 3708, -5620, 4391, 4393, 95170, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 1247, -5620, -5620, 2681, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 563, 95170, -5620, 1291, 4592, -5620, 2179,
- -5620, -5620, -5620, 49107, -5620, 24152, -5620, -5620, 2957, -5620,
- -5620, 4397, -5620, 4399, 3967, -5620, 4295, 4534, 4439, 4440,
- 4441, 4577, 4745, -5620, 4585, -5620, 4174, 4569, 4409, 32611,
- -5620, -5620, 2062, -5620, -5620, -5620, -5620, 97393, -5620, -5620,
- 4402, -5620, 39432, 20307, -5620, -5620, -5620, 4829, -5620, 2682,
- 2436, 4418, 95170, 4420, 2688, 2694, 95170, 4424, -5620, 24152,
- 2736, -5620, -5620, 49848, 49107, -5620, 4903, -51, 49848, 49848,
- -5620, 4417, 5136, -5620, -5620, 4422, -5620, -5620, 49107, -5620,
- -5620, 228, 255, 210, 327, -5620, 285, 1345, -5620, -5620,
- 95170, -5620, 95170, -5620, 95170, -5620, 95170, -5620, -5620, -5620,
- 4798, 4061, 95170, -5620, 95170, -5620,101098, 6083, 2700, 2717,
- 2463, -5620, -5620, -5620, -5620, 2759, -5620, 2759, 2759, -5620,
- 4430, -5620, -5620, -5620, 5092, -5620, 5093, -5620, 2385, 508,
- -5620, 49848, 1857, 4935, 4931, 5144, -5620, 49848, 4263, 95170,
- -5620, -5620, 1656, -5620, 39432, -5620, -5620, 4932, 4936, -5620,
- 4941, 315, -5620, 95170, -5620, -5620, -5620, 4539, -5620, 5802,
- 4641, 5156, 5157, -5620, 95170, 94429, -5620, -5620, 5215, 32611,
- -5620, -5620, 5071, -5620, 3749, 2436, -5620, -5620, -5620, 1382,
- -5620, 5183, 1737, -5620, -5620, 1364, -5620, -5620, -5620, -5620,
- 95170, 4455, 4540, -5620, -5620, 4527, -5620, -5620, 3716, -5620,
- 116, 64048, -5620, -5620, -5620, -5620, 1019, 95170, -5620, 5209,
- 4458, 2101, 1019, 1019, 4459, 95170, 2971, 49848, 4903, 1608,
- 4464, 1446, -5620, 1446, -5620, -5620, 3149, 69235, -5620, -5620,
- 3897, 95170, 4462, 5226, -5620, -5620, 4460, -5620, 4468, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 95170, 82573,
- -5620, 2223, -5620, 2087, -5620, -5620, 5034, 2724, -5620, -5620,
- -5620, -5620, -5620, 5180, -5620, 5185, 4469, 4474, -5620, -5620,
- -5620, -5620, 49848, -15, -5620, -5620, 5111, -5620, 5158, 5159,
- 315, -5620, 49107, 5039, 79609, -5620, -5620, -5620, 409, -5620,
- 95170, 49848, 49107, -5620, -5620, 4263, 897, 24152, 4831, 5254,
- -5620, 4680, 4681, -5620, -5620, 2728, -5620, -5620, 4543, 1725,
- 4971, -5620, -5620, -5620, 4295, -5620, -5620, 4619, 1816, -5620,
- 2768, -5620, -5620, -5620, 3183, -5620, 4490, -5620, 4852, 276,
- 276, 4853, 276, 276, 276, 276, 4494, 3716, -5620, -5620,
- -5620, 4844, -5620, -5620, -5620, 1350, 2436, 4495, 95170, 4497,
- 2797, 1401, 1269, 95170, 4496, -5620, -5620, -5620, 1446, 95170,
- 5099, -5620, 4501, -5620, 4502, 4503, -5620, -5620, 5123, 2701,
- -5620, 4594, -5620, -5620, 3149, -5620, -5620, -5620, 4544, 5127,
- 5089, -5620, 81832, 34918, -5620, 4992, -5620, 4952, 5193, -5620,
- 5240, 3740, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 4867, -5620, 4079, 4080, -5620, -5620, 49107, 4617,
- -5620, 2745, -5620,101098, 8917, -5620, -5620, 90724, 90724, 5136,
- 3183, 4701, -5620, -5620, -5620, 34918, -5620, -5620, 4701, -5620,
- -5620, -5620, -5620, -5620, 5141, -5620, 3307, 24152, -5620, -5620,
- -5620, -5620, -5620, -5620, 94429, -5620, -5620, 490, -5620, -5620,
- -5620, -5620, -5620, 95170, -5620, 4520, -5620, -5620, 152, 276,
- 2701, 2701, 276, 3543, 3543, 3183, 81832, 4601, -5620, -5620,
- 276, 1446, 2701, 276, 1446, -5620, -5620, 1574, 1350, -5620,
- -5620, -5620, -5620, -5620, -5620, 750, 1019, -5620, 4711, 1574,
- 1401, -5620, -5620, 1574, 1269, -5620, -5620, 4522, 95170, 4524,
- 4526, -5620, 2805, -5620, 1680, 5098, 95170, 4533, 95170, 95170,
- -5620, -5620, -5620, -5620, -5620, -5620, 4880, -5620, 4535, 4541,
- 3690, 3690, 17231, -5620, -5620, -5620, -5620, -5620, -5620, 5109,
- -5620, 4571, 1369, 276, -5620, 3200, -5620, -5620, -5620, 95170,
- -5620, 5062, 4958, 5184, 4891, 5254, -5620, -5620, 5108, -5620,
- -5620, -5620, -5620, -5620, 2191, 4542, 2839, -5620, -5620, 2848,
- -5620, -5620, -5620, -5620, 4545, 3307, -5620, 39432, -5620, 4540,
- -5620, -5620, 2858, -5620, 29535, -5620, -5620, -5620, 2701, -5620,
- -5620, 2701, -5620, -5620, -5620, -5620, -5620, 2870, -5620, 81832,
- -5620, -5620, 256, -5620, -5620, 5143, 4983, -5620, 4741, 1350,
- 2695, -5620, -5620, -5620, -5620, -5620, 4547, 95170, 95170, 4549,
- -5620, 95170, -5620, -5620, -5620, 1609, -5620, 2871, 95170, 2878,
- 2917, -5620, -5620, -5620, -5620, 4552, 4550, -5620, 101, -5620,
- -5620, 3200, 95170, 95170, -5620, 4061, -5620, -5620, -5620, -5620,
- -5620, 4688, -5620, 5105, 2745, -5620, -5620, -5620, 4701, 4554,
- -5620, 276, 5083, -5620, -5620, 4520, -5620, 4558, -5620, 1725,
- -5620, -5620, 81832, -5620, 4601, -5620, -5620, -5620, -5620, -5620,
- -5620, 1574, -5620, -5620, 2928, 4458, 95170, -5620, 1442, 1442,
- 1350, 2944, 1401, 1269, -5620, 445, -5620, 3378, 3378, 1517,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 2745,
- 1312, 2951, 39432, 20307, 4861, 4486, -5620, 29535, 4563, 3823,
- -5620, -5620, -5620, 4889, 4564, 4458, -5620, -5620, 537, 5014,
- 5139, 5147, -5620, 1350, -5620, -5620, -5620, 4573, -5620, 3378,
- -5620, -5620, -5620, -5620, -5620, 1763, 4061, 4920, 5242, -5620,
- 3960, -5620, -5620, -5620, 5152, 1312, 1312, -5620, -5620, -5620,
- 5292, 4796, -5620, -5620, -5620, 3823, -5620, -5620, 1350, 4578,
- -5620, -5620, -5620, 5063, 5261, -5620, -5620, -5620, -5620, 1763,
- -5620, -5620, 4715, -5620, -5620, -5620, -5620, -5620, -5620, 1281,
- 5162, -5620, 5163, -5620, 2759, 5224, -5620, -5620, 1350, 1442,
- 1442, -5620, -5620, -5620, -5620, 5253, 4938, -5620, 5341, 4595,
- -5620, -5620, -5620, 1726, 1982, 36439, 5114, -5620, -5620, 81832,
- -5620, -5620, -5620, -5620, 81832, -5620, 2965, -5620, -5620, 39432,
- -5620, -5620, 5802, -5620, -5620, 37191, 4596, -5620, 276, -5620,
- 5254, -5620, 39432, -5620, -5620, -5620, 20307, -5620, -5620
+ 39638, -5700, -5700, 94843, -5700, -5700, 2921, 1488, 94843, -5700,
+ 892, -5700, 1321, -5700, -5700, -5700, -5700, -5700, 4001, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 275, 344, -5700, -5700,
+ 347, -5700, -5700, -5700, -5700, 315, 80707, 1364, 1225, -5700,
+ 84427, -5700, -5700, -5700, -5700, 84427, -5700, -5700, 94843, -5700,
+ -5700, 1739, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 1017, -5700, 1873, 665, -5700, -5700, -5700, -5700, -5700, -5700,
+ 1942, -5700, -5700, -5700, -5700, -5700, -5700, 344, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 1441, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 1705, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 95587, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 314, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 1144, -5700, -5700,
+ -5700, -5700, -5700, 256, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 25, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 94843, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 347, -5700, -5700, -5700, 1897, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 1441, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 94843, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 225, -5700,
+ -5700, 277, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 1468, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3410,
+ -5700, -5700, 84, 2346, 2423, -5700, -5700, 1838, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 3485, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 2525, -5700, -5700, -5700, -5700, 3969, 2459, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 47850, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 84,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 264, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 1750, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 96331, 94843, 1791, 1829, 94843, 2475, 81451,
+ 2475, -5700, 91, -5700, -5700, 2245, -5700, 1907, -5700, 344,
+ 2113, 1906, 2394, 2684, 1031, 2425, 82195, 1421, 2475, -5700,
+ 2696, -5700, 2475, 2484, 2475, -5700, 2475, 2475, -5700, 2475,
+ 2475, 2475, -5700, -5700, 1127,103771, 69547, -5700, -5700, 1444,
+ 2654, -5700, -5700, -5700, -5700, -5700, -5700, 8523, 344, 23570,
+ 2758, -5700, -5700, 2306, 4312, 2096, -5700, 2575, -5700, -5700,
+ 94843, -5700, 2475, 8523, -5700, 2575, 70291, 2893, 51581, 9322,
+ 2575, 344, 2666, -5700, 2074, -5700, -5700, -5700, -5700, -5700,
+ -5700, 94843, -5700, 1441, -5700, -5700, 2543, -5700, -5700, 81451,
+ -5700, -5700, -5700, -5700, -5700, 2818, 23570, 210, 2583, -5700,
+ -5700, 2488, 48594, 81451, 2794, 2684, 2830, -5700, 1922, 1369,
+ -5700, 2205, 2318, 2684, 1299, 2338, 2684, 2737, 2475, 2475,
+ -5700, -5700, 3117, 3117, 3117, 2577, 3117, -5700, 3117, 2886,
+ 2257, 476, -5700, -5700, 2277, 94843, 2794, -5700, 2794, -5700,
+ 2934, 2794, 2794, 2421, 2950, 2957, 94, 2954, 251, 251,
+ 2245, 43386, 1626, 2813, -5700, 2886, 2653, 2339, 1952, 1952,
+ 1952, 2653, 84, 2653, -5700, 2996, 1907, 2937, 94843, -5700,
+ 3003, -5700, 2348, -5700, -5700, -5700, 94843, 94843, 228, -5700,
+ 2406, -5700, 2363, 1740, 71779, -5700, 3035, -5700, -5700, -5700,
+ -5700, -5700, -5700, 2884, 683, 2524, 2749, 2441, -5700, 2926,
+ 81451, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 94843,
+ 2405, -5700, -5700, -5700, 3091, 2394, -5700, 2936, -5700, -5700,
+ -5700, -5700, 48594, -5700, -5700, -5700,103771, -5700, -5700, -5700,
+ 1164, 66571, -5700, 2418, 2769, -5700, 2454, 1378, 1716, -5700,
+ -5700, 1827, 1831, 1859, -5700, -5700, -5700, 1863, -5700, -5700,
+ -5700,103027, 1554, 2466, -5700, -5700, 3116, -5700, -5700, 85171,
+ 562, 94843, 3120, -5700, 94843, -5700, 94843, -5700, 81451, -5700,
+ -5700, 94843, 2475, 2475, -5700, -5700, 3111, -5700, 2681, 2625,
+ 2135, 2507, 2820, -5700, 2714, -5700, 2516, 2596, 2734, 2534,
+ 2535, 2601, 187, -5700, 2545, -5700, 1459, 2999, 111, 152,
+ 3016, 168, 170, 3137, 3020, 188, 1066, 407, 2808, 461,
+ -5700, -5700, -5700, -5700, 3076, 3175, 2608, -5700, 2600, -5700,
+ 3104, 2988, 1000, -5700, -5700, 1410, 3054, 1260, 48594,105941,
+ 104515, 82939,105941,105941,105941, -5700, -5700, 262, 94843,105228,
+ 94843, 5596, -5700, -5700, 41154, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 94843, -5700, -5700, -5700, -5700, -5700,
+ -5700, 2283, 1390, 8757, -5700, 2619, -5700, -5700, -5700, -5700,
+ -5700, 85915, -5700, 207, 234, 3205, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 29730, 2639, 2649,
+ 2652, 18950, 2665, 2668, 2671, 2682, 2689, 2507, 2507, 2507,
+ 2690, 2709, 2719, 2720, 2730, 2761, 2768, -5700, 2775, 2780,
+ 2789, 2795, 2804, 2805, 24340, 2833, 2834, 2837, 37380, 2852,
+ 2857, 2858, 2859, 23570, 2690, 2862, 2865, -5700, 2877, 2881,
+ 2908, 2912, 2922, 2935, 2942, 2946, 3432, 2955, 2960, 2966,
+ 2980, -5700, 2507, 2690, 2690, 2981, 2985, 2507, 2994, 3013,
+ 3014, 3017, 3018, 3021, 3022, 3042, 3044, 3045, 3055, 3056,
+ 214, 3060, 3071, 3072, 3079, 3080, 3082, 3084, 2729, 3092,
+ 3096, 3097, 2755, 3102, 3106, 3112, 3121, 299, 3125, 3146,
+ 301, 3147, 3150, 3151, 3156, 3158, 3160, 3163, 30500, 31270,
+ 29730, 16640, -5700, 94843, 97075, -5700, -5700, 2817, 734, 3260,
+ 1303, 29730, -5700, -5700, -5700, 3526, -5700, 3593, -5700, -5700,
+ -5700, -5700, 3464, 3501, -5700, 3570, -5700, -5700, 3619, 3103,
+ -5700, 3708, -5700, -5700, -5700, -5700, -5700, 3159, -5700, 3164,
+ 3879, 3936, 3170, 3171, -5700, -5700, 1833, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 3178, 3191, -5700, 3708, -5700, -5700, 74755, -5700, 3815, -5700,
+ -5700, 2681, 3374, 3758, -5700, 3838, -5700, 3764, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 2893, -5700, -5700, 53091, 3713, -70, -5700, -5700, 353, -5700,
+ 416, 422, 65083, -5700, 195, 65827, 429, 86659, 1326, -5700,
+ 72523, -5700, 439, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 3187, -5700, 3304, 3516, 3194, 3273, 431,
+ -5700, -5700, 244, 1015, 3291, 92, -5700, 85, -5700, 431,
+ -5700, 75499, 1235, 2557, -5700, 1021, -5700, 3855, -5700, -5700,
+ 3296, 3282, 3315, -5700, 2515, -5700, 2684, -5700, 354, -5700,
+ 1235, 431, 2557, -5700, 3489, 3573, 1085, 3516, -5700, -44,
+ -5700, -5700, -5700, 3860, -5700, 3218, -5700, 3830, -5700, 94843,
+ 1186, 48594, -5700, -5700, -5700, -5700, 3222, 48594, 48594, 1590,
+ 249, 2817, 3239, 23570, -5700, -5700, 4724, 55356, 3444, 2002,
+ -56, -5700, -5700, 1873, 94843, -5700, -5700, 1067, -5700, 3667,
+ -5700, 3261, -5700, 97819, 249, 3919, -5700, -5700, -5700, 1348,
+ 3655, -5700, 3266, -5700, -5700, -5700, -5700, 48594, 94843, 2684,
+ -5700, -5700, -5700, -5700, 3271, -5700, -5700, 3480, 3359, -5700,
+ 3298, -5700, -5700, 203, -5700, -5700, 4059, -5700, 94843, -5700,
+ 2794, -5700, -5700, 2794, -5700, -5700, -5700, 2794, 2794, 2794,
+ -5700, -5700, 2794, 2794, 3322, -5700, 3607, 3609, 2926, -5700,
+ 3292, 42642, 94843, 4066, -5700, 4441, -5700, -5700, -5700, 3293,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3864, 4051,
+ 4051, -5700, 53846, -5700, -5700, 3947, 2813, 1830, 3789, 56866,
+ 3940, 4032, 59131, -5700, 1235, -5700, -5700, -5700, -5700, 1387,
+ 94843, -5700, 1387, 1387, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 84, -5700, -5700, 2113,
+ 3706, 73267, 94843, 2653, 2339, -5700, 4060, 4062, -5700, -5700,
+ -5700, 2684, 1294, 3697, -5700, 94843, -5700, -5700, -5700, 2507,
+ 4103, -5700, -5700, -5700, -5700, -5700, 48594, 3530, 71779, 2475,
+ -5700, -5700, -5700, 683, -5700, 1823, 94843, 48594, 3368, -5700,
+ 48594, 3324, 23570, -5700, -5700, 3805, 23570, -5700, 3693, -5700,
+ -5700, 48594, 2440, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3340, -5700,
+ -5700, -5700, 3340, 72, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 3341, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3901, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 3341, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 211, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 3735, 3062, 2894, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 3735, -5700, 2894, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 3341, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 3344, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 3735, -5700, 2894, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 3340, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 3340, -5700, -5700, 2894,
+ 3340, -5700, 3347, 3341, 3735, 1354, 2782, 3341, -5700, -5700,
+ 3340, 3348, 3340, 3340, 3340, 3340, -5700, 3340, 4117, 3342,
+ -5700, 3341, -5700, -5700, -5700, -5700, -5700, -5700, 89, 3340,
+ 3340, 3340, 3340, 3352, 216, -5700, 219, 224, 265, 267,
+ 272, 274, -5700, -5700, -5700, -5700, 4022, 94843, 4024, -5700,
+ 3800, 1554, 3363, 3364, -5700, 48594, 4105, 48594, 3375, -5700,
+ 4033, 2813, -5700, -5700, 3371, -5700, -5700, 4043, 94843, -5700,
+ -5700, 76243, -5700, 74755, 48594, 3377, -5700, -5700, 3992, 3522,
+ -5700, -5700, -5700, -5700, -5700, -5700, 3470, -5700, -5700, 3395,
+ -5700, -5700, -5700, -5700, 3849, -5700, 3536, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 74755, -5700, -5700, 3852, 3853, -5700,
+ 71779, 2995, 6687, 97075, -5700, 4049, -5700, -5700, -5700, 3860,
+ -5700, -5700, 25110, -5700, 25880, -5700, -5700, -5700, 3685, 1513,
+ 1484, -5700, -5700, -5700, -5700, -5700, -5700, 4148, -5700, -5700,
+ -5700, -5700, -5700, -5700, 3887, 94843, 3635, 4072, 4047, -5700,
+ -5700, -5700, -5700, -5700, 3891, 3420, 4027, 3416, -5700, -5700,
+ 304, -5700, 3421, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 48594, 54601, -5700, -5700, -5700, 3417, -5700,
+ -5700, -5700, 3427, 29730, 29730, -5700, 4164, 4164, 4164, 23570,
+ 2856, 1939, 3790, 23570, 23570, 23570, 2554, 3435, -5700, -5700,
+ -5700, 356, -5700, 23570, 23570, 38130, 3436, 507, 4317, 23570,
+ 4115, 4115, -5700, 23570, 23570, 16640, 4285, 23570, 23570, 23570,
+ 97075, 38130, 3889, 3437, -5700, 3438, 2664, 23570, 2669, 23570,
+ -5700, -5700, 23570, 23570, 23570, 23570, 3442, 32040, 3446, 23570,
+ 23570, 3453, 3580, 4164, 4164, 2688, 444, -5700, -5700, -5700,
+ 4164, 4164, -5700, 23570, 23570, 17410, 23570, 23570, 2701, 23570,
+ 23570, 23570, 23570, 23570, 23570, -5700, 23570, 23570, 1108, 23570,
+ 23570, 48594, 23570, 23570, 4114, 48594, 23570, 23570, 4116, 23570,
+ 23570, 48594, 23570, -5700, 23570, 2945, 2945, -5700, 23570, 17410,
+ 23570, 3460, 38880, 23570, 23570, 23570, 24340, -5700, 24340, -5700,
+ -5700, 3463, 2712, 324, 84, 23570, 3457, -5700, -5700, -5700,
+ -5700, 23570, 23570, 23570, 32040, -5700, -5700, -5700, 1770, -5700,
+ -5700, -5700, 26650, 32040, 3471, 32040, 32040, 4089, 2526, 32040,
+ 32040, 32040, 32040, 32040, 32040, 32040, 32810, 33580, 32040, 32040,
+ 32040, 32040, -5700, 81451, 29730, 50826, 3474, 4122, -5700, 76987,
+ -5700, 2094, 699, -5700, 2684, 4312, 35120, -5700, 3479, -5700,
+ 3973, 48594, -5700, 3481, 4136, 74755, 71779, 2995, 3493, -5700,
+ 1837, 233, -5700, 76243, 94843, -5700, -5700, -5700, 4195, 23570,
+ -5700, -5700, -5700, -5700, -5700, 3482, 471, 3486, -5700, 1469,
+ -5700, -5700, -5700, -5700, -5700, 94843, -5700, 87403, 52336, 3581,
+ 4143, 3503, 2794, 88147, 94843, 48594, 94843, 98563, 94843, 94843,
+ 48594, 74755, 48594, -5700, -5700, -5700, 1025, 431, 94843, 431,
+ 2557, 1068, 431, 4127, -5700, -5700, 1768, 1768, -5700, -5700,
+ -5700, -5700, -5700, -5700, 431, 94843, 94843, 431, 71779, -5700,
+ 2557, 1612, -5700, 3793, 3589, -5700, -5700, -5700, 3842, -5700,
+ -5700, 4168, 3510, -5700, 3862, -5700, 3608, -5700, -5700, 48594,
+ -5700, -5700, 2557, -5700, 2557, 2557, 4172, 431, 431, 431,
+ -5700, 44130, 3517, 3524, -5700, 3514, -5700, 3527, -5700, 4158,
+ -5700, -5700, -5700, 3886, 4311, 4171, 3533, -5700, -5700, 4106,
+ 865, -5700, 3961, -5700, 4088, -5700, 23570, 2817, 19720, 3818,
+ -5700, -5700, 3819, 3820, 3821, -5700, -5700, -5700, -5700, 3972,
+ 3823, -5700, 2684, 3826, -5700, -5700, -5700, 3551, -5700, -5700,
+ -5700, 81451, 35120, -5700, 3552, -5700, 3575, -5700, 226, -5700,
+ -5700, 4219, 3668, 23570, -5700, -5700, 48594, 4056, -5700, 2684,
+ 1922, 94843, -5700, -5700, 4298, -5700, 1437, 4220, -5700, -5700,
+ 3698, 1299, -5700, 4220, 1527, -5700, -5700, 3117, 3776, -5700,
+ -5700, -5700, 81451, -5700, -5700, -5700, -5700, -5700, -5700, 94843,
+ -5700, 76243, 71779, 81451, 2794, 2794, -5700, 48594, -5700, -5700,
+ -5700, 94843, 94843, 2794, 2794, 2794, 3629, -5700, 2781, 3597,
+ 3599, 3600, 3601, 2127, 3602, 44874, 2401, 6871, 4229, 4230,
+ -5700, 4179, 2597, 4179, -5700, -5700, 44874, 44130, 3610, 4066,
+ -5700, -5700, -5700, -5700, 81451, 3605, -5700, -5700, 3604, -5700,
+ 23570, 4327, 4261, 3947, -5700, -5700, 57621, 1541, 85915, -5700,
+ -5700, -5700, 3962, 4149, -7, -5700, 3611, 3741, -5700, 1008,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 23570, -5700,
+ -5700, -5700, -5700, -5700, -5700, 18180, -5700, -5700, -5700, -5700,
+ -5700, 233, 259, -5700, -5700, -5700, 1464, 3989, 1849, -5700,
+ -5700, 81451, 1849, -5700, 3630, 3928, -5700, 3938, 76, -5700,
+ 48594, -5700, -5700, -5700, -5700, -5700, 48594, 3631, -5700, 3825,
+ 94843, 2405, 3632, 3640, 2817, 4144, -5700, 3805, -5700, 2817,
+ -5700, -5700, 8523, 4360, 5714, 161, 3696, -5700, -5700, -5700,
+ -5700, -5700, 48594, -5700, -5700, 2393, 3646, 3041, -5700, -5700,
+ -5700, 3735, 233, 3735, -5700, -5700, 3369, 971, -5700, -5700,
+ -5700, 971, -5700, 464, 3713, 77731, 3735, -5700, -5700, -5700,
+ -5700, 4120, 2894, 1661, 78475, 625, 4042, -5700, -5700, -5700,
+ 971, 3117, -5700, -5700, 3735, -5700, -5700, -5700, 3117, 971,
+ -5700, 4124, -5700, -5700, -5700, 971, 3735,103771, 610, 2894,
+ -5700, -5700, 2894, 971, 154, 94843, 610, 4198, -5700, 1661,
+ 4379, 2894, 3735, 971, 4409, -5700, 971, -5700, -5700, 395,
+ -5700, -5700, 1554, -5700, -5700, -5700, 3864, 3736, -5700, 3375,
+ 621, 94843, 4314, 4218, -5700, -5700, 4237, 60619, -5700, -5700,
+ 4241, 3659, -5700, -5700, 3661, 411, 94843, 48594, 48594, 8523,
+ -5700, -5700, 3665, -5700, -5700, -5700, -5700, 4162, -5700, -5700,
+ 193, -5700, 45618, 45618, 1459, 2999, -5700, -5700, 3016, -5700,
+ -5700, 3020, -5700, 1066, -5700, 2808, -5700, -5700, -5700, -5700,
+ 2304, -5700, -5700, -5700, 4158, 23570, 50082, 2817, -5700, -5700,
+ 48594, -5700, 4304, -5700, -5700,101539, 169, -5700, -5700, 326,
+ 48594, -5700, -5700, -5700, -5700, 4297, 3804, 94843, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 94843, 2405, -5700, 94843,103771,
+ 8523, 8523, -5700, 82195, -5700, 1619, 1837, -5700, 4412, 97075,
+ 23570, -5700, 3675, -5700, 3676, 3677, 2797, 4035, 23570, 23570,
+ -5700, 3142, 77, 276, -5700, 3681, 3695, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 3682, -5700, -5700, 530, 543,
+ 3683, -5700, -5700, -5700, 3686, 84, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 4341, -5700, 450, -5700,
+ -5700, -5700, 23570, 568, 1268, 1269, 3701, 432, 477, 1318,
+ 3417, 2327, 3699, 38130, 97075, 4164, 3702, 531, 4164, 3703,
+ 1345, 1382, 662, 1361, 1588, -5700, 480, -5700, 1383, 1395,
+ -5700, -5700, 3704, 3705, 4164, 3707, -5700, 3710, 3711, 3712,
+ 1471, 405, 3720, -5700, -5700, 20490, 21260, 22030, 3270, 3721,
+ -5700, -5700, 1474, 1703, 4164, 3737, 1731, 1478, 1505, -5700,
+ 2392, 1547, 1603, 3739, 3239, 1835, 1886, -5700, -5700, -5700,
+ -5700, 3691, 1910, 1917, 3692, 3740, 1946, 1974, 48594, 3744,
+ 3745, 2048, 48594, 1617, 2064, 3746, 1640, 765, 3748, 3751,
+ 2093, 3747, 1642, -5700, 97075, 94843, 3755, 3734, 1253, 3756,
+ 2116, 4285, 4285, -5700, 23570, 3761, 382, 97075, 2580, 510,
+ -5700, 3260, -5700, -5700, -5700, -5700, 238, -5700, 3709, 3260,
+ 3715, 2931, 16640, -5700, 1452, 1873, 32040, 32040, 3766, 32040,
+ 32040, 1443, 552, 552, 3771, 3771, 1582, 508, 24340, 1443,
+ 24340, 1443, 3771, 3771, 3771, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 4266, 3770, 3772, 3780, 3781, 708, 3775,
+ -5700, -5700, -5700, -5700, -5700, -5700, 5, 4107, -5700, 3899,
+ 1266, 23570, -5700, 3801, 4535, 4538, 4540, -5700, -5700, -5700,
+ -5700, 74755, 74755, 3786, -5700, 1527, 4146, 4445, 76243, 4449,
+ -5700, 3792, 45618, 45618, -5700, 3795, -5700, 23570, 3788, 3791,
+ 3796, 99307, -5700, 4456, 233, 79219, 2817, 74755, 729, -5700,
+ 94843, 94843, -5700, 86659, 4459, 1397, 4090, -5700, 3807, 3809,
+ -5700, 233, -5700, 3806, 1638, 590, -5700, 3810, 3812, -5700,
+ -5700, -5700, -5700, 23570, 3824, 94843, 94843, -5700, -5700, -5700,
+ -5700, 94843, -5700, -5700, -5700, -5700, -5700, -5700, 2684, 23570,
+ 94843, 431, -5700, -5700, -5700, 431, 94843, 431, -5700, 2684,
+ 4477, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 431, -5700, -5700, -5700, -5700, -5700, 3996, 1235, 2515,
+ 4127, 4220, 2557, 48594, 431, 431, 23570, -5700, -5700, -5700,
+ -5700, 4354, 3864, 19720, 3832, 3839, -5700, -5700, 8523, 94843,
+ 97075, 4565, -5700, -5700, 4403, -5700, 81451, 88891, 48594, -5700,
+ -5700, -5700, 2299, -5700, -5700, -5700, -5700, -5700, 2817, 2583,
+ 2720, -5700, 3841, 2817, -5700, -5700, 4531, -5700, -5700, -5700,
+ -5700, 2684, -5700, -5700, 4789, -5700, 48594, -5700, -5700, 56111,
+ 56111, 2118, -5700,100051, -5700, 2684, 2817, 48594, 1472, 326,
+ -5700, 4585, -5700, -5700, 3966, -5700, -5700, -5700, 3856, -5700,
+ 4273, -5700, -5700, -5700, -5700, -5700, -5700, 3857, -5700, 4512,
+ -5700, 2170, 134, 94843, 423, 76, -5700, 94843, 94843, 48594,
+ -5700, 94843, 2794, -5700, -5700, 2794, -5700, -5700, 48594, 94843,
+ 94843, 2794, 23570, 44874, -5700, -5700, -5700, -5700, -5700, 44874,
+ -5700, 2134, -5700, 4065, 1988, 1988, -5700, -5700, -5700, -5700,
+ -5700, 4489, 4179, 4179, 44874, 4493, 3587, -5700, 94843, 6656,
+ 408, -5700, 53846, 94843, 2817, 23570, -5700, 3893, 4261, -5700,
+ 243, 1142, 1008, -5700, 4145, 326, -5700, -5700, 59131, 4214,
+ 59131, 59131, 97075, 4110, 23570, -5700, 4537, 3871, 2817, -5700,
+ 29730, 2720, -5700, 2817, -5700, -5700, -5700, 2170, 2684, -5700,
+ 233, 233, 4104, 4396, 4400, 4015, 2684, 4401, 4402, 4411,
+ -5700, -5700, -5700, -5700, -5700, 3988, 215, 469, 1325, 71779,
+ 4366, 1527, 4478, 3902, -5700, 48594, 4559, -5700, -5700, -5700,
+ -5700, 23570, -5700, -5700, -5700, -5700, 5687, -5700, 3921, 3922,
+ 3925, 3926, 3927, 3929, 3932, 3934, 3935, 3939, 3944, 3948,
+ 3953, 3954, 3956, 3960, 3963, 3965, 3967, 3970, 3971, 3974,
+ 3975, 3976, 3979, 163, -5700, -5700, 3958, -5700, -5700, -5700,
+ -5700, 94843, 4547, 3964, 3977, 3978, 3980, -5700, -5700, 94843,
+ -5700, 2398, 4429, 4458, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 79963, 233, -5700,
+ -5700, 2443, -5700, -5700, 2468, -5700, -5700, -5700, -5700, -5700,
+ 2471, 68803, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 610, 610, 3959, -5700, 3985, -5700, -5700, -5700, -5700, -5700,
+ 4379, -5700, 3968, -5700, 64339, -5700, -5700, -5700, -5700, 2987,
+ -5700, 4330, -5700, 1988, -5700, 4460, 60619, -5700, 44130, 4184,
+ 4597, -5700, -5700, 3981, 48594, 76243, 74755, -5700, -5700, -5700,
+ -5700, 3983, 1619, 7067, -5700, -5700, 4733, 71779, 4438, -5700,
+ 3982, -5700, 3984, 4487, 4495, -5700, 97075, -5700, -5700, -5700,
+ 2817, -5700, -5700, 3990, -5700, -5700, 4106, 4051, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 4025, 4274, 4392, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 4631, -5700, -5700, -5700, -5700, 2497, 352,
+ -5700, -5700, -5700,105941,105941,105941, -5700, 4361, -5700,102283,
+ 23570, -5700, 1675, -5700, 23570, -5700, -5700, 23570, -5700, 2817,
+ 3563,106675, 78475, -5700, 78475,106675, 23570, -5700, 4003, -5700,
+ 4636, 4637, -5700, -5700, -5700, 23570, -5700, 23570, 23570, 1676,
+ 23570, 23570, 23570, 23570, -5700, 23570, -5700, 23570, 23570, -5700,
+ 32040, -5700, 4000, 4008, -5700, -5700, 4009, -5700, 23570, 23570,
+ -5700, -5700, -5700, 23570, 23570, 23570, -5700, -5700, 4010, -5700,
+ -5700, -5700, -5700, 23570, 23570, 23570, -5700, 23570, 3383, 23570,
+ 3411, 23570, 3505, 23570, -5700, 27420, -5700, 4014, -5700, -5700,
+ 23570, 23570, -5700, 23570, 23570, 23570, -5700, -5700, -5700, 23570,
+ -5700, 4583, 23570, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 23570, -5700, 474, 28190, -5700, 23570, 23570, 23570, -5700,
+ -5700, 23570, 4011, 4016, -5700, 94843, 2378, 3484, 326, 4017,
+ -5700, -5700, 4028, 4038, 3239, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 507, 32040, 918, 32040, 1873, 3074, 16640, -5700,
+ 1525, 1873, 4285, 4285, 94843, 4740, 4029, -5700, 23570, 23570,
+ 17410, 23570, 97075, 23570, 4031, 4030, -5700, 4037, 32040, -5700,
+ -5700, 4040, -5700, 2420, 3484, 4112, 4486, -5700, 2817, 35120,
+ 4539, -5700, 48594, 4541, 4586, 4250, -5700, 74755, 71779, 4707,
+ 4708, -5700, 2817, -5700, 4048, -5700, -5700, -5700, 4050, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 652, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 74755, -5700, -5700,
+ -5700, -5700, 233, -5700, 4055, 4057, -5700, -5700, 233, 233,
+ -5700, -5700, 40396, -5700, -5700, 960, 4350, 4613, -5700, -5700,
+ 94843, 1469, 94843, -5700, 52336, 52336, 89635, 2817, 980, -5700,
+ -5700, -5700, -5700, 2817, -5700, -5700, -5700, -5700, -5700, -5700,
+ 4077, -5700, -5700, -5700, 4820, -5700, -5700, 4477, -5700, 2813,
+ 2557, -5700, -5700, 2817, 38880, 2232, -5700, -5700, -5700, 19720,
+ 8072, -5700, 4068, 4067, 4071, -5700, 48594, 4074, 4536, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 4082,
+ -5700, -5700, 19720, 4108, -5700, 4220, -5700, 3983, 1795, 4109,
+ 4084, -5700, -5700, -5700, -5700, -5700, -5700, 322, 338, 2279,
+ 2813, -5700, -5700, 177, -5700, -5700, -5700, -5700, -5700, 1060,
+ -5700, -5700, 4220, -5700, 1437, 2684, 4137, 293, 326, 4326,
+ -5700, -5700, 2170, 157, 157, 4670, 134, 4543, -5700, 4366,
+ 4751, 4675, 4676, -5700, 3988, -5700, -5700, -5700, 94843, -5700,
+ 1228, -5700, -5700, -5700, 1365, -5700, 48594, 1690, 4441, 4441,
+ -5700, 1988, 306, -5700, 32040, 4831, -5700, 4595, 44874, 4725,
+ 4726, -5700, 44874, -5700, -5700, 2502, -5700, -5700, 74011, -5700,
+ -5700, -5700, 2817, 284, 2482, 23570, 94843, -5700, 3893, 4173,
+ -5700, -5700, 1142, -5700, -5700, -5700, -5700, 59131, -5700, -5700,
+ -5700, 1541, 4099, 2482, 1830, 4118, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 79219, 74011, -5700, 4480, 4481, 2140, -5700,
+ -5700, -5700, -5700, 233, 233, -5700, 392, 233, -5700, -5700,
+ 410, -5700, -5700, 1502, 409, 3988, -5700, 2684, 2684, 2684,
+ 2684, 326, 2684, 2684, 2521, -5700, 288, -5700, -5700, 81451,
+ -5700, 4861, 4862, -5700, 4863, -5700, -5700, 1193, -5700, 3031,
+ 977, -5700, 1092, -5700, 4656, 94843, 4846, 3902, -5700, 403,
+ 2405, 2817, -5700, 4617, 4121, 4123, 326, 4126, 326, 326,
+ 2684, 2684, 4077, 2684, 326, 2684, 2684, 2684, 2684, 2684,
+ 2684, 2684, 326, 2684, 1379, 3172, 229, 2684, 326, 5714,
+ -5700, -5700, 2522, 2288, -5700, 67315, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 4871, -5700, -5700, -5700, -5700, -5700,
+ 1661, 3117, 1661, -5700,103771, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 23570, 23570, -5700, -5700, 94843, 4873,
+ -5700, -5700, -5700, -5700, 3033, -5700, -5700, -5700, 4444, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 44130, 644,
+ 2813, -5700, 58376, 4662, 4138, -5700, 1527, -5700, -5700, 2098,
+ 4735, -5700, 4129, -5700, -5700, 479, 4331, 4141, 61363, 71779,
+ 71779, -5700, 3105, -5700, 48594, -5700, 4767, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 94843, 2405, 3992,
+ -5700, -5700, -5700, -5700, -5700, 4566,105941, 4128, 2817, 23570,
+ 2817, 2817, 23570, 3340, 3340, 3341, 3352, -5700, 4822, -5700,
+ 4766, 3340, 3340, -5700, 3340, 4768, 3340, 3340, -5700, 4142,
+ -5700, -5700, 4147, 4153, 4154, 3239, -5700, 23570, 23570, 2180,
+ 121, 121, 23570, 1706, 1726, 1124, -5700, 2198, 2244, 2278,
+ 498, 97075, -5700, -5700, 2374, 2464, 2498, 2510, 2513, -5700,
+ 1730, 3694, 1737, 2817, 23570, 2817, 23570, 2817, 23570, 2817,
+ 24340, 2539, -5700, 2587, 3843, -5700, 2588, 3882, 2564, 2576,
+ 2591, -5700, 2896, 4892, 2618, 24340, 2592, 2595, 1806, 1822,
+ 2616, 97075, 94843, 4134, 4150, 4150, 526, -5700, 4156, -5700,
+ -5700, -5700, 4157, -5700, 23570, 23570, 4160, 3260, -5700, 23570,
+ 1873, 32040, 1198, 32040, -5700, -5700, 4266, -5700, 23570, -5700,
+ 4722, 4163, 3937, 4165, 4166, 3270, 4167, 4169, 4170, 4174,
+ 2817, -5700, -5700, 94843, 4175, 1303, -5700, 4077, -5700, 4793,
+ -5700, 4883, 4180, 4189, 4181, 4040, -5700, 74755, -5700, 48594,
+ -5700, 4830, 3661, -5700, 71779, 71779, -5700, 83683, -5700, 59875,
+ 94843, 94843, -5700, 23570, -5700, -5700, 729, 4931, 4934, -5700,
+ -5700, -5700, -5700, 105, 4734, -5700, -5700, -5700, -5700, -5700,
+ 233, -5700, 233, -5700, 3812, -5700, -5700, -5700, -5700, 3243,
+ -5700, 1235, -5700, -5700, -5700, 431, 4182, -5700, 233, 1247,
+ -5700, 19720, 4185, 4186, -5700, 4798, -5700, 507, 328, -5700,
+ 3864, -5700, 4659, -5700, -5700, 4196, 90379, -5700, 4197, -5700,
+ -5700, 4746, -5700, -5700, 4463, 56111, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 1235, 4246, 4430,
+ -5700, -5700, -5700, -5700, -5700, 3625, -5700, 4294, 4295, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 48594, 4785,
+ 71779, 977, 4582, 48594, 48594, 7013, 4269, 3988, 4208, 94843,
+ -5700, 1877, 2684, -5700, -5700, 1228, -5700, 1877, 3902, 4209,
+ 711, 4209, -5700, -5700, -5700, -5700, 1303, 1988, 1988, 4455,
+ 4694, 44874, 44874, 4509, 4696, 23570, 4213, -5700, 94843, -5700,
+ 1519, -5700, 4619, -5700, -5700, 23570, -5700, -5700, -5700, -5700,
+ 2817, 4945, 4215, -5700, -5700, -5700, -5700, -5700, -5700, 23570,
+ -5700, 57621, 23570, 4216, 4217, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 474, 474, -5700, -5700, 474, 474, -5700, -5700,
+ -5700, -5700, 474, 474, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 215, -5700, 4968, 1288, -5700, 4794,
+ -5700, -5700, -5700, -5700, 1091, 326, 326, 326, 3172, 2130,
+ -5700, 3031, 2072, 4558, -5700, 8099, 1873, 2090, 4723, 2320,
+ -5700, 2622, -5700, 4956, -5700, 364, -5700, -5700, -5700, 194,
+ 307, -5700, 378, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 94843, -5700, 4799, -5700, -5700, -5700, -5700, 3348, 278,
+ -5700, -5700, 4228, -5700, -5700, -5700, -5700, 2817, 2817, -5700,
+ -5700, 64339, -5700, -5700, 2813, -5700, 94843, 4575, 4764, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 23570, -5700, 4886, -5700,
+ -5700, -5700, -5700, 76, 76, -5700, -5700, -5700, -5700, 328,
+ -5700, -5700, 4767, 4517, -5700, 1780, 23570, -5700, -5700, -5700,
+ -5700, -5700, -5700, 94843, 1124, 2817, -5700, 1661, -5700, -5700,
+ 3340, -5700, 1661, -5700, -5700, -5700, -5700, -5700, -5700, 1661,
+ -5700, -5700, -5700, -5700, 4236, 4285, 4285, -5700, 4957, 4769,
+ 4855, 2621, 23570, 23570, -5700, 23570, -5700, -5700, -5700, 368,
+ 4240, 4713, -5700, -5700, -5700, -5700, -5700, -5700, 23570, 23570,
+ 23570, 2817, 2817, 2817, 4285, -5700, -5700, 2982, -5700, -5700,
+ 106675, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 229, 4285,
+ -5700, -5700, 23570, 23570, -5700, -5700, -5700, 94843, 3484, 4244,
+ 4525, -5700, -5700, -5700, 3484, 4387, -5700, -5700, 3484, 326,
+ -5700, -5700, -5700, 2626, 3260, -5700, 23570, 1873, 4825, 4247,
+ 4967, 4251, -5700, -5700, -5700, -5700, -5700, -5700, 23570, 83683,
+ -5700, 4253, 4248, -5700, -5700, -5700, 4691, 23570, 4870, 4823,
+ -5700, 3484, 94843, -5700, -5700, -5700, 71779, 3792, 3792, 91123,
+ -5700, -5700, -5700, -5700, 1708, 233, 233, -5700, 2817, -5700,
+ -5700, 4257, 4258, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 1235, -5700,
+ 38880, 2813, 22800, -5700, -5700, -5700, 19720, -5700, 4259, 38880,
+ 4730, -5700, -5700, -5700, 4662, 231, -5700, -5700, -5700, 4659,
+ -5700, 91867, -5700, 4262, -5700, 4263, -5700, 2034, 4598, 4875,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 4267, -5700, -5700, -5700,
+ 4286, 4287, 4290, -5700, 4265, -5700, -5700, -5700, 48594, -5700,
+ -5700, 4301, -5700, -5700, 41898, 4894, 4318, 4645, 48594, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 4648,
+ 233, 233, 233, 233, 233, 233, 233, 233, -5700, 233,
+ 233, 1026, 94843, 233, 233, -5700, -5700, -5700, 4850, -5700,
+ 6271, -5700, 233, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 1342, 4866, -5700, -5700, 1232,
+ -5700, -5700,107418, 5017, 4288, -5700, 4827, -5700, -5700, -5700,
+ -5700, -5700, -5700, 4404, 4827, 3902, 622, -5700, -5700, -5700,
+ 4777, -5700, -5700, -5700, 4778, 2817, 94843, -5700, -5700, -5700,
+ 1577, 2517, 4912, 2482, 4306, 94843, 2482, 1142, 1008, 2817,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 331, -5700, 81451, -5700, -5700, -5700, -5700,
+ -5700, 5054, 5060, -5700, -5700, -5700, -5700, 4498, 579, 3727,
+ 1820, 4876, 4710, 4878, 2508, 3477, 233, 4879, 5027, -5700,
+ 1222, 233, 4880, 4940, 4393, 4942, 4885, -5700, 4397, 4710,
+ 4888, 4514, 4891, 4893, 4895, -5700, -5700, 4269, -5700, -5700,
+ -5700, -5700, 190, 46362, -5700, -5700, -5700, -5700, -5700, 4506,
+ 23570, 23570, 4908, 94843, 4910, -5700, 4729, -5700, 94843, -5700,
+ 507, -5700, -5700, -5700, 4632, -5700, 2634, -5700, -5700, 2695,
+ -5700, -5700, 2704, -5700, -5700, -5700, -5700, -5700, 4864, 94843,
+ -5700, -5700, -5700, -5700, -5700, -5700, 4991, -5700, 4681, 3493,
+ -5700, 507, 2817, 4542, 4807, 4807, -5700, -5700, -5700, 4919,
+ -5700, -5700, -5700, -5700, 4969, 2817, 2405,105941, 4700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 4344, 4345, 23570, 3117, 4855,
+ 59131, 4346, -5700, -5700, 2676, 1824, 2741, 4633, 4587, -5700,
+ 4519, -5700, 2686, 2817, 2817, 1916, 3341, -5700, -5700, -5700,
+ -5700, 4982, 3340, -5700, 5067, -5700, 3340, 1661, -5700, -5700,
+ -5700, -5700, -5700, 4357, 2742, 1926, 2721, 2733, -5700, -5700,
+ -5700, 4358, -5700, -5700, 232, -5700, 4359, -5700, 2745, 5078,
+ 1775, 23570, -5700, 4362, -5700, -5700, 94843, -5700, -5700, 4285,
+ 1271, -5700, 2750, -5700, -5700, -5700, 4364, 3792, -5700, -5700,
+ 62107, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 4220, -5700, 4237, 2720, -5700, -5700, -5700, -5700, 4738,
+ 4365, 4367, -5700, -5700, -5700, 4368, 84, 38880, -5700, -5700,
+ 64339, -5700, -5700, 4373, 4374, -5700, -5700, -5700, 90379, -5700,
+ 2751, -5700, -5700, 5100, 19720, 2684, 2684, 2684, 3468, 4378,
+ -5700, 81451, 4380, 4382, 49338, 2294, 94843, 2759, -5700, -5700,
+ -5700, -5700, -5700, 1962, -5700, 2086, 2794, 2299, 2299, -5700,
+ 4371, 48594, -5700, 233, -5700, 430, 460, 504, 520, -5700,
+ 4077, 326, 326, 2684, 2684, 233, 326, 81451, 2080, 326,
+ 4077, 4077, 523, 2684, 1855, 430, -5700, -5700, -5700, 326,
+ 430, 271, -5700, -5700, 8962, -5700, 71035, 4269, 94843, 3550,
+ -5700, -5700, 2225, 4497, -5700, -5700, -5700, 4739, 1232, -5700,
+ -5700, -5700, 4381, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 2122,107418, 1608, -5700, -5700, -5700, 4384, 94843, -5700, -5700,
+ 2684, -5700, 5116, 5139, -5700, -5700, 4795, 23570, 4391, 23570,
+ 4394, 2764, -5700, 2299, -5700, 2299, -5700, 1577, 5110, 5113,
+ 5062, 5115, 2517, -5700, 2027, -5700, -5700, -5700, -5700, -5700,
+ -5700, 1142, -5700, -5700, 4406, -5700, -5700, -5700, -5700, 4741,
+ -5700, 5154, -5700, 4859, 47106, 2794, -5700, 569, 4442, -5700,
+ -5700, -5700, 5050, 3120, 3120, 347, 3120, 91867, 94843, 48594,
+ 408, 502, 5032, 2475, 1432, 4450, 4970, 3120, 3120, 92611,
+ 347, 38880, -5700, -5700, -5700, 3120, -5700, 3120, 48594, 93355,
+ 347, -5700, -5700, -5700, 94843, -5700, 3120, 347, -5700, 347,
+ 347, 91867, -5700, 8186, -5700, -5700, 41898, 2010, -5700, 2817,
+ 4285, 4803, -5700, -5700, 4527, 2684, 4776, -5700, -5700, 4890,
+ -5700, 94843, 370, -5700, 326, -5700, 326, -5700, 326, -5700,
+ 281, -5700, -5700, 32040, -5700, 3795, -5700, -5700, 84, -5700,
+ -5700, 2254, -5700, -5700, 4783, 4662, 4921, -5700, -5700, -5700,
+ 105941, -5700, -5700, 4422, 2482, -5700, 4425, -5700, -5700, -5700,
+ -5700, 23570, -5700, 4664, -5700, 4771, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 4077, -5700, -5700, -5700,
+ 4433, -5700, 326, -5700, 23570, -5700, -5700, 4434, 4012, 2482,
+ -5700, -5700, 4533, 4486, 4431, -5700, 4823, 94843, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, 4597, -5700, -5700, -5700, 38880,
+ 62851, 4439, 4447, -5700, 233, -5700, 83, -5700, 94843, -5700,
+ -5700, 4077, 4808, -5700, 2800, -5700, -5700, -5700, -5700, 94843,
+ 4452, 4654, 94843, 94843, -5700, -5700, 4457, 94843, -5700, -5700,
+ -5700, 41898, 4461, 5068, 5079, 2299, -5700, 2794, 5005, 49338,
+ -5700, 2794, 2794, 68059, 94843, 4464, 2684, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 4466, -5700, -5700, -5700,
+ -5700, -5700, 2684, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 5189, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 4850, 4471,
+ 4470, -5700, -5700, -5700, 5138, 1877, -5700, -5700, -5700, 5044,
+ 2090, 94843, 4467, 94843, 4469, -5700, -5700, 383, 509, -5700,
+ -5700, -5700, -5700, -5700, 1608, -5700, -5700, -5700, 4474, -5700,
+ 68803, 3550, 94843, -5700, 94843, -5700, -5700, 4479, 4483, 2817,
+ 94843, 2817, 94843, -5700, 5123, 5123, -5700, 3117, 3117, 5196,
+ 3117, -5700, 5200, 5203, 2027, -5700, -5700, 5238, 579, 4860,
+ 2072, 1873, 347, 1873, 5143, -5700, -5700, 94843, 49338, 91867,
+ 49338, -5700, 4985, -5700, 74011, 49338, 3120, 94843, -5700, 5146,
+ -5700, 5117, 49338, 49338, -5700, -5700, 91867, 4490, -5700, 2482,
+ 2758, 94843, 49338, -5700, -5700, -5700, 3484, 4961, 49338, 91867,
+ -5700, 91867, -5700, 3700, 4993, 3885, -5700, 4499, 4496, 94843,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 1298, -5700, -5700,
+ 2816, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 167, 94843,
+ -5700, 564, -5700, 4697, -5700, 2254, -5700, -5700, -5700, 48594,
+ -5700, 23570, -5700, -5700, 2736, -5700, -5700, 4500, -5700, 4501,
+ 4099, -5700, 4488, 4638, 4535, 4538, 4540, 4687, 4849, -5700,
+ 4689, -5700, 3784, 4691, 4508, 32040, -5700, -5700, 1992, -5700,
+ -5700, -5700, -5700, 97075, -5700, -5700, 4502, -5700, 38880, 19720,
+ -5700, -5700, -5700, 4925, -5700, 2848, 2482, 4513, 94843, 4515,
+ 2867, 2870, 94843, 4518, -5700, 23570, 2794, -5700, -5700, 49338,
+ 48594, -5700, 4996, 742, 49338, 49338, -5700, 4511, 5225, -5700,
+ -5700, 4516, -5700, -5700, 48594, -5700, -5700, 231, 271, -5700,
+ 94843, -5700, -5700, -5700, 4908, -5700, -5700, -5700, -5700, 94843,
+ -5700, 4510, -5700, 4520, 4877, -5700, -5700, 1877, -5700, -5700,
+ -5700, -5700, -5700,100795, 7559, 2875, 2915, 2532, -5700, -5700,
+ -5700, -5700, 3117, -5700, 3117, 3117, -5700, 4521, -5700, -5700,
+ -5700, 5183, -5700, 5188, -5700, 483, 459, -5700, 49338, 2393,
+ 5028, 5025, 5240, -5700, 49338, 4374, 94843, -5700, -5700, 2098,
+ -5700, 38880, -5700, -5700, 5029, 5033, -5700, 5034, 2010, -5700,
+ 94843, -5700, -5700, -5700, 4627, -5700, 8523, 4737, 5247, 5250,
+ -5700, 94843, 94099, -5700, -5700, 5308, 32040, -5700, -5700, 5164,
+ -5700, 3864, 2482, -5700, -5700, -5700, 144, -5700, 5275, 1874,
+ -5700, -5700, 1281, -5700, -5700, -5700, -5700, 94843, 4544, 4628,
+ -5700, -5700, 4616, -5700, -5700, 3362, -5700, 87, 63595, -5700,
+ -5700, -5700, -5700, 1527, 94843, -5700, 5301, 4546, 215, 1527,
+ 1527, 4549, 94843, 2740, 49338, 4996, 1747, 4550, 157, -5700,
+ 157, -5700, -5700, 3133, 68803, -5700, -5700, 2976, 94843, 4552,
+ 5320, -5700, -5700, 94843, 82195, -5700, 2320, -5700, 4208, 4209,
+ -5700, -5700, -5700, -5700, -5700, -5700, 94843, -5700, 5121, 2920,
+ -5700, -5700, -5700, -5700, -5700, 5276, -5700, 5277, 4557, 4560,
+ -5700, -5700, -5700, -5700, 49338, -35, -5700, -5700, 5201, -5700,
+ 5245, 5249, 2010, -5700, 48594, 5129, 79219, -5700, -5700, -5700,
+ 347, -5700, 94843, 49338, 48594, -5700, -5700, 4374, 1060, 23570,
+ 4922, 5343, -5700, 4772, 4773, -5700, -5700, 2924, -5700, -5700,
+ 4626, 1303, 5056, -5700, -5700, -5700, 4488, -5700, -5700, 4706,
+ 388, -5700, 2933, -5700, -5700, -5700, 3484, -5700, 4577, -5700,
+ 4944, 233, 233, 4950, 233, 233, 233, 233, 4580, 3362,
+ -5700, -5700, -5700, 4928, -5700, -5700, -5700, 2965, 2482, 4588,
+ 94843, 4589, 2944, 2381, 2246, 94843, 4584, -5700, -5700, -5700,
+ 157, 94843, 5194, -5700, 4593, -5700, 4594, 4599, -5700, -5700,
+ 5209, 2684, -5700, 4674, -5700, -5700, 3133, -5700, -5700, -5700,
+ 4639, 5220, 5180, -5700, 81451, 34350, -5700, 5088, -5700, 5046,
+ 5288, -5700, 5335, 3346, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 48594, 4729, -5700, -5700, 4827, -5700, -5700, -5700,
+ 5343, 622, -5700,100795, 9774, -5700, -5700, 90379, 90379, 5225,
+ 3484, 4823, -5700, -5700, -5700, 34350, -5700, 99, 4823, -5700,
+ -5700, -5700, -5700, 99, 5237, -5700, 2817, 23570, -5700, -5700,
+ -5700, -5700, -5700, -5700, 94099, -5700, -5700, 408, -5700, -5700,
+ -5700, -5700, -5700, 94843, -5700, 4609, -5700, -5700, 117, 233,
+ 2684, 2684, 233, 3875, 3875, 3484, 81451, 4701, -5700, -5700,
+ 233, 157, 2684, 233, 157, -5700, -5700, 1278, 2965, -5700,
+ -5700, -5700, -5700, -5700, -5700, -108, 1527, -5700, 4810, 1278,
+ 2381, -5700, -5700, 1278, 2246, -5700, -5700, 4620, 94843, 4622,
+ 4624, -5700, 2956, -5700, 1745, 5205, 94843, 4630, 94843, 94843,
+ -5700, -5700, -5700, -5700, -5700, -5700, 4977, -5700, 4634, 4635,
+ 3172, 3172, 16640, -5700, -5700, -5700, -5700, -5700, -5700, 5211,
+ -5700, 4679, 819, 233, -5700, 4013, 5058, 5289, 4998, 3550,
+ -5700, 94843, -5700, 94843, -5700, -5700, -5700, -5700, 5208, -5700,
+ -5700, -5700, -5700, -5700, 1981, 4640, 2968, -5700, -5700, 2973,
+ -5700, 4682, 4684, -5700, 99, -5700, 4642, 2817, -5700, 38880,
+ -5700, 4628, -5700, -5700, 2974, -5700, 28960, -5700, -5700, -5700,
+ 2684, -5700, -5700, 2684, -5700, -5700, -5700, -5700, -5700, 2983,
+ -5700, 81451, -5700, -5700, 326, -5700, -5700, 5259, 5095, -5700,
+ 4851, 2965, 2930, -5700, -5700, -5700, -5700, -5700, 4650, 94843,
+ 94843, 4652, -5700, 94843, -5700, -5700, -5700, 1787, -5700, 2990,
+ 94843, 3000, 3007, -5700, -5700, -5700, -5700, 4655, 4657, -5700,
+ 140, -5700, -5700, 4013, -5700, -5700, -5700, 3550, -5700, -5700,
+ -5700, -5700, 4795, -5700, 5223, 622, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 4823, 4658, -5700, 233, 5187, -5700,
+ -5700, 4609, -5700, 4661, -5700, 1303, -5700, -5700, 81451, -5700,
+ 4701, -5700, -5700, -5700, -5700, -5700, -5700, 1278, -5700, -5700,
+ 3038, 4546, 94843, -5700, 1374, 1374, 2965, 3049, 2381, 2246,
+ -5700, 473, -5700, 3396, 3396, 1368, -5700, -5700, -5700, -5700,
+ 622, 415, -5700, 3058, 38880, 19720, 4962, 4619, -5700, 28960,
+ 4665, 3714, -5700, -5700, -5700, 5005, 4667, 4546, -5700, -5700,
+ 505, 5125, 5252, 5256, -5700, 2965, -5700, -5700, -5700, 4669,
+ -5700, 3396, -5700, -5700, -5700, -5700, -5700, 1549, 5021, 5348,
+ -5700, 3993, -5700, -5700, -5700, 5260, 415, 415, -5700, -5700,
+ -5700, 5397, 4912, -5700, -5700, -5700, 3714, -5700, -5700, 2965,
+ 4680, -5700, -5700, -5700, 5170, 5366, -5700, -5700, -5700, -5700,
+ 1549, -5700, -5700, 4819, -5700, -5700, -5700, -5700, -5700, -5700,
+ 1215, 5266, -5700, 5267, -5700, 3117, 5328, -5700, -5700, 2965,
+ 1374, 1374, -5700, -5700, -5700, -5700, 5356, 5041, -5700, 5445,
+ 4693, -5700, -5700, -5700, 1771, 2252, 35875, 5219, -5700, -5700,
+ 81451, -5700, -5700, -5700, -5700, 81451, -5700, 3065, -5700, -5700,
+ 38880, -5700, -5700, 8523, -5700, -5700, 36630, 4695, -5700, 233,
+ -5700, 5343, -5700, 38880, -5700, -5700, -5700, 19720, -5700, -5700
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -4453,921 +4481,926 @@ static const int yypact[] =
means the default is an error. */
static const yytype_int16 yydefact[] =
{
- 0, 3619, 2, 0, 2503, 2504, 1016, 2296, 0, 430,
- 0, 1243, 612, 2746, 3829, 2141, 2290, 2289, 2062, 2761,
- 470, 220, 2809, 376, 2064, 2363, 0, 0, 466, 2862,
- 1259, 2879, 754, 496, 2886, 0, 320, 0, 0, 473,
- 318, 220, 1308, 3262, 2190, 0, 3368, 2128, 0, 1306,
- 468, 2461, 2714, 2759, 2760, 2789, 2622, 2880, 2903, 2931,
- 2067, 2699, 2698, 2700, 3002, 2701, 2702, 2703, 2704, 2705,
- 3003, 2597, 2706, 2707, 2708, 2710, 2709, 2711, 2712, 3004,
- 2598, 3524, 3620, 2599, 2671, 2713, 2673, 2672, 2715, 2600,
- 2601, 2716, 2717, 2718, 2720, 2719, 2603, 2602, 2721, 2723,
- 2722, 2674, 2675, 2724, 3005, 2725, 2727, 2604, 3000, 2605,
- 2606, 2607, 2726, 2608, 2728, 3529, 2729, 2730, 2609, 2731,
- 2732, 2733, 2734, 2736, 2735, 2737, 2738, 2740, 2741, 2742,
- 2739, 2743, 2744, 2747, 2745, 2677, 2676, 3006, 2610, 2748,
- 2749, 2750, 2751, 2753, 2754, 2752, 2755, 2034, 2756, 2757,
- 2758, 2766, 2767, 2769, 2768, 2678, 2770, 2771, 2772, 2774,
- 2773, 2775, 2777, 2611, 2612, 2613, 2776, 2778, 2762, 2763,
- 2764, 2765, 2780, 2779, 2781, 2782, 2783, 2679, 1259, 2615,
- 2999, 2784, 2785, 3677, 2786, 2787, 3007, 2616, 2668, 2788,
- 3370, 2791, 2790, 85, 2792, 2618, 2793, 3008, 3009, 2794,
- 2795, 2797, 2799, 2796, 2800, 2801, 2807, 2619, 2798, 2802,
- 2803, 2804, 2805, 2806, 2808, 2680, 2810, 2811, 3010, 3011,
- 2812, 2813, 2814, 2815, 2669, 2816, 2817, 2818, 2819, 2832,
- 2833, 2823, 2824, 2826, 2827, 2830, 2825, 2831, 2836, 2835,
- 2837, 2838, 2839, 2840, 2841, 2834, 2821, 2828, 2829, 2822,
- 2842, 2843, 2820, 2844, 2846, 2845, 2847, 2681, 2848, 2849,
- 2850, 2851, 2852, 3012, 2853, 2854, 2856, 2855, 2857, 3013,
- 2858, 2859, 2860, 2665, 2861, 2682, 2683, 2863, 2864, 3014,
- 2865, 2866, 2871, 2872, 2873, 2868, 2867, 2869, 2870, 2684,
- 2685, 2686, 2874, 2875, 2876, 2878, 2877, 2621, 2620, 3015,
- 2623, 2881, 2882, 2624, 2883, 2885, 2884, 2667, 2625, 2887,
- 2888, 2890, 2889, 2626, 2627, 2628, 2891, 2892, 2893, 2894,
- 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2687, 2688,
- 2904, 2905, 2906, 2908, 2907, 2909, 2910, 2914, 2911, 2912,
- 2913, 2915, 2629, 2916, 1259, 2917, 2918, 2919, 2630, 2921,
- 2920, 2631, 2922, 2923, 2924, 2925, 2926, 2666, 3529, 2927,
- 2928, 2930, 2689, 2929, 2932, 2933, 0, 2934, 2935, 3016,
- 2632, 2936, 2937, 2690, 2670, 2633, 3017, 2939, 2375, 2697,
- 2938, 2940, 2635, 2636, 2941, 2942, 2943, 2634, 2944, 2637,
- 3018, 2945, 2947, 2946, 2948, 2949, 2950, 2951, 2638, 2952,
- 2953, 2639, 2954, 2640, 2955, 2956, 3019, 2957, 2959, 2958,
- 2960, 2961, 2962, 2963, 2964, 2965, 2967, 2969, 2968, 2966,
- 2970, 2971, 2691, 2972, 2641, 2692, 3021, 3022, 2693, 2973,
- 2974, 2975, 2976, 3020, 2170, 2977, 2978, 2644, 2979, 2980,
- 2982, 2981, 2642, 2643, 2983, 2984, 2648, 3023, 2985, 3024,
- 2694, 2695, 2986, 2987, 2997, 2988, 2990, 2989, 2992, 2991,
- 2998, 3025, 3678, 2645, 2993, 2994, 2646, 2995, 2647, 2996,
- 2696, 0, 0, 3, 3621, 22, 0, 45, 27, 33,
- 17, 21, 16, 47, 60, 53, 30, 3816, 3817, 3819,
- 43, 3560, 42, 11, 63, 64, 19, 50, 12, 15,
- 18, 41, 49, 37, 44, 57, 58, 1329, 1305, 1333,
- 1304, 1300, 1296, 1315, 1316, 1317, 1323, 25, 26, 34,
- 51, 68, 23, 65, 61, 24, 2296, 13, 28, 29,
- 14, 52, 46, 38, 62, 69, 39, 0, 3681, 3675,
- 3673, 3676, 3671, 3672, 3001, 2596, 3674, 59, 40, 67,
- 32, 54, 31, 9, 10, 20, 55, 56, 48, 70,
- 35, 66, 36, 8, 3682, 0, 3622, 2050, 168, 3526,
- 3818, 2561, 2560, 2598, 3633, 2599, 2601, 2652, 2602, 2655,
- 2656, 2649, 2610, 2657, 3634, 2613, 2614, 2653, 2558, 2616,
- 2658, 2617, 2619, 2650, 2651, 2659, 2654, 2628, 2660, 2630,
- 2661, 2662, 2663, 2638, 2639, 2664, 2643, 2559, 2647, 2508,
- 2524, 0, 2525, 2555, 2553, 2557, 2551, 2556, 2549, 2550,
- 2554, 2552, 1060, 0, 0, 0, 0, 2060, 0, 2060,
- 1151, 1374, 3558, 3559, 3560, 1260, 0, 1261, 0, 0,
- 244, 400, 131, 0, 0, 3620, 2165, 2060, 2038, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2063, 2060, 2060, 0,
- 0, 0, 400, 2070, 2365, 0, 2385, 2386, 2380, 3358,
- 3359, 3353, 378, 0, 0, 0, 2263, 2262, 0, 0,
- 305, 317, 320, 313, 316, 0, 220, 2060, 378, 319,
- 320, 0, 1338, 0, 2268, 320, 0, 2139, 2379, 0,
- 400, 2462, 2459, 2070, 2336, 2338, 0, 2334, 3529, 1446,
- 1445, 0, 3825, 3827, 0, 2514, 1238, 1270, 1195, 3530,
- 3531, 0, 77, 80, 2302, 343, 0, 0, 0, 610,
- 0, 0, 1203, 0, 3531, 3541, 2377, 0, 131, 1176,
- 0, 131, 2173, 2060, 2060, 3602, 3603, 0, 0, 0,
- 3597, 0, 3604, 0, 1333, 0, 1319, 1, 5, 0,
- 0, 610, 970, 610, 971, 0, 610, 610, 0, 0,
- 0, 0, 3565, 3558, 3559, 3560, 0, 2020, 1875, 1334,
- 1333, 1967, 1971, 3546, 3546, 3546, 0, 0, 1967, 1324,
- 2764, 2999, 2885, 0, 2281, 2295, 2279, 2497, 1302, 1298,
- 3683, 0, 0, 2608, 1019, 1061, 1024, 228, 0, 0,
- 1026, 0, 1037, 2530, 2529, 2528, 1034, 220, 0, 1153,
- 0, 0, 0, 3566, 3565, 0, 1215, 2283, 2284, 2285,
- 2286, 2287, 2288, 2291, 0, 250, 400, 432, 0, 443,
- 434, 437, 0, 132, 133, 1241, 1244, 0, 613, 296,
- 298, 0, 3650, 295, 297, 3649, 0, 3794, 0, 0,
- 374, 283, 372, 3646, 3643, 3648, 3644, 3647, 3645, 3783,
- 373, 3680, 0, 287, 3830, 3784, 3785, 3787, 0, 2169,
- 2168, 0, 2167, 2142, 0, 2165, 0, 2058, 2060, 0,
- 0, 0, 0, 0, 220, 0, 220, 2043, 2060, 2060,
- 471, 3679, 0, 3654, 3418, 3436, 3437, 1387, 3433, 3438,
- 0, 3435, 3430, 0, 0, 3432, 3429, 0, 0, 3457,
- 3431, 3434, 2599, 2732, 2773, 2613, 2781, 2782, 2895, 2899,
- 2904, 2915, 2919, 2663, 2635, 2960, 3411, 3399, 3413, 3412,
- 0, 0, 3416, 3421, 0, 3420, 0, 0, 2072, 2366,
- 2367, 2371, 0, 2389, 0, 0, 391, 0, 0, 0,
- 0, 3815, 380, 381, 0, 385, 0, 378, 3813, 3805,
- 0, 400, 3812, 3807, 3806, 3808, 3809, 3810, 3811, 411,
- 0, 412, 413, 3814, 467, 3801, 3802, 0, 0, 378,
- 3689, 0, 3803, 3799, 3800, 1257, 1679, 0, 2436, 2505,
- 2506, 0, 2449, 2454, 2455, 2447, 2448, 2452, 2428, 2451,
- 2427, 2453, 1448, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1387, 1387, 1387, 1384, 0, 0, 0,
- 0, 0, 0, 2445, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1384, 0, 0, 2444, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1577, 2446, 1387, 1384,
- 1384, 0, 0, 1387, 0, 0, 0, 3002, 2597, 3004,
- 2652, 2604, 2605, 2606, 2607, 2649, 2676, 3006, 3007, 3008,
- 3010, 3011, 3012, 3013, 2864, 3014, 3015, 2667, 2893, 2689,
- 3016, 3017, 3019, 2692, 3021, 3022, 2693, 3020, 2664, 3023,
- 3024, 3025, 2645, 2696, 0, 0, 0, 0, 1447, 0,
- 0, 1331, 1523, 755, 1393, 1405, 1421, 0, 1521, 1520,
- 1524, 1526, 1532, 1440, 1553, 1492, 1493, 1495, 1494, 1499,
- 1500, 0, 1655, 1501, 0, 0, 1498, 2441, 1497, 1496,
- 2442, 2443, 1491, 2483, 2513, 0, 0, 2507, 3001, 2596,
- 498, 497, 0, 339, 332, 327, 335, 329, 331, 330,
- 336, 337, 338, 333, 328, 334, 321, 0, 306, 0,
- 314, 3542, 0, 1262, 378, 474, 340, 3418, 2700, 2899,
- 3391, 0, 3398, 0, 3557, 3551, 3554, 3553, 3549, 3552,
- 3550, 3555, 1359, 3556, 1358, 1309, 1339, 1356, 1357, 0,
- 0, 0, 2586, 2585, 890, 2583, 3283, 3284, 0, 2587,
- 0, 0, 3285, 2952, 2973, 2584, 0, 2519, 0, 2520,
- 2580, 2578, 2582, 2581, 2575, 2576, 2579, 3263, 3268, 3264,
- 2577, 0, 2296, 0, 0, 2276, 968, 967, 0, 0,
- 0, 0, 2212, 0, 890, 2276, 2213, 0, 1932, 2266,
- 2269, 0, 3287, 2226, 969, 3288, 2262, 0, 2198, 2214,
- 2175, 2219, 131, 3289, 131, 2265, 1932, 2276, 0, 2191,
- 0, 0, 0, 2296, 1373, 0, 315, 3369, 2140, 1149,
- 2108, 1307, 2094, 0, 469, 0, 2075, 0, 2335, 3525,
- 3826, 3709, 0, 0, 0, 0, 3534, 1721, 2035, 0,
- 81, 76, 0, 0, 0, 0, 2502, 3371, 86, 0,
- 0, 3616, 74, 0, 2353, 0, 2351, 2348, 2350, 0,
- 3534, 0, 2376, 1183, 1183, 0, 0, 1175, 1177, 1178,
- 1183, 1183, 2174, 0, 0, 0, 2435, 2433, 2434, 2515,
- 3599, 2432, 2431, 3608, 3610, 3593, 0, 3596, 3595, 3605,
- 1322, 1321, 6, 71, 0, 142, 610, 220, 220, 610,
- 167, 148, 151, 610, 610, 610, 610, 160, 162, 0,
- 222, 0, 0, 3565, 1337, 2809, 0, 0, 1349, 1335,
- 1769, 1336, 1801, 1771, 1741, 1732, 1731, 1797, 1798, 1800,
- 1799, 1802, 1804, 1794, 0, 0, 2033, 0, 2028, 1876,
- 1881, 1875, 0, 0, 0, 0, 0, 0, 1966, 1932,
- 1975, 1937, 1968, 1301, 1964, 0, 1297, 1362, 1362, 3548,
- 3547, 3545, 3544, 3543, 1969, 1320, 1328, 1326, 1327, 1970,
- 1318, 0, 2293, 2499, 0, 0, 2298, 0, 1967, 1971,
- 0, 0, 0, 2099, 2098, 2101, 0, 904, 0, 229,
- 0, 3563, 3564, 3562, 1387, 2531, 2534, 3561, 2535, 229,
- 2061, 0, 0, 0, 2060, 1157, 1158, 1152, 1154, 1156,
- 0, 0, 0, 0, 2297, 0, 246, 252, 245, 441,
- 0, 401, 3668, 0, 438, 87, 0, 1245, 2051, 2053,
- 3797, 3026, 3027, 3028, 3029, 3030, 3031, 3033, 3034, 3032,
- 3035, 3036, 834, 857, 3037, 3038, 3039, 857, 874, 3040,
- 3041, 3042, 3043, 3044, 3045, 3046, 3047, 820, 3048, 3049,
- 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3060,
- 3059, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 840,
- 3069, 3070, 3071, 3072, 3073, 3074, 3076, 3075, 3077, 3078,
- 3079, 3080, 836, 3081, 3082, 3083, 3085, 3084, 3086, 3087,
- 3088, 3089, 3090, 3091, 3092, 3093, 3094, 840, 3095, 3096,
- 3097, 3098, 3099, 3101, 3100, 3104, 3105, 3106, 3107, 3108,
- 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118,
- 3119, 830, 3120, 3121, 3122, 3123, 3124, 3125, 3102, 3126,
- 3103, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135,
- 874, 786, 786, 3136, 3137, 3138, 3139, 3140, 3141, 3142,
- 874, 833, 786, 3145, 3146, 3143, 3144, 3147, 3148, 3149,
- 3150, 3151, 3153, 3152, 3156, 3154, 3155, 840, 3157, 3158,
- 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168,
- 3169, 3171, 3172, 3170, 3173, 3174, 3175, 3176, 3177, 3178,
- 3179, 3180, 3181, 3182, 3183, 3184, 835, 3185, 3187, 3186,
- 3188, 3189, 3190, 3191, 3193, 3194, 3195, 3196, 3197, 3198,
- 3199, 3200, 3203, 3201, 3202, 3204, 3205, 3206, 3207, 3208,
- 0, 3209, 3210, 832, 3211, 3212, 3216, 3213, 3217, 3214,
- 3218, 3215, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226,
- 3228, 3229, 3230, 3231, 3232, 874, 831, 786, 3233, 3234,
- 3235, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245,
- 3246, 3247, 3248, 3250, 3251, 3249, 857, 824, 3252, 3254,
- 3253, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3192, 3227,
- 3236, 857, 780, 781, 786, 857, 799, 0, 840, 874,
- 0, 821, 840, 826, 2595, 857, 0, 857, 857, 857,
- 857, 3649, 857, 0, 276, 284, 840, 764, 770, 772,
- 771, 773, 774, 857, 857, 857, 857, 857, 861, 767,
- 769, 2588, 2589, 2590, 2591, 2593, 2594, 3632, 768, 2592,
- 3790, 0, 0, 0, 3796, 0, 3620, 0, 0, 3788,
- 0, 2143, 0, 1347, 1875, 2145, 2150, 2159, 2163, 2166,
- 2040, 0, 0, 0, 3768, 3767, 2046, 2045, 3766, 0,
- 2047, 0, 0, 2048, 2036, 0, 447, 449, 3419, 3417,
- 3454, 3453, 3458, 0, 3455, 3451, 0, 3410, 3459, 3444,
- 3448, 0, 3460, 3445, 3452, 3466, 3465, 3467, 3462, 3461,
- 0, 3464, 3450, 0, 3449, 3470, 0, 3414, 0, 0,
- 423, 0, 2077, 2078, 2074, 1149, 2073, 2372, 0, 2364,
- 0, 1280, 2391, 2390, 2387, 1867, 3355, 3360, 3642, 3641,
- 3640, 3639, 2526, 0, 3636, 3638, 3635, 3637, 2527, 400,
- 392, 0, 0, 2864, 0, 399, 398, 397, 420, 400,
- 386, 409, 0, 0, 3623, 379, 3624, 382, 418, 421,
- 460, 456, 464, 458, 3822, 3820, 3690, 3804, 274, 0,
- 0, 2505, 2506, 2438, 2437, 2507, 2429, 2450, 0, 0,
- 0, 1527, 1873, 1873, 1873, 0, 0, 1729, 0, 0,
- 0, 0, 1873, 0, 1565, 1539, 1538, 0, 1566, 0,
- 0, 0, 0, 0, 0, 0, 1685, 1685, 1651, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1723,
- 1725, 2483, 1873, 0, 1873, 0, 1392, 1571, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1873,
- 1873, 1873, 0, 1583, 1585, 1584, 1873, 1873, 1573, 0,
- 0, 0, 0, 0, 1873, 0, 0, 0, 0, 0,
- 1719, 2456, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1719, 0, 0, 0, 0, 0, 0, 2458,
- 0, 0, 0, 2457, 0, 0, 0, 0, 0, 0,
- 1719, 0, 0, 1529, 0, 1528, 1530, 0, 1331, 756,
- 0, 0, 0, 1444, 1442, 1443, 1441, 0, 0, 0,
- 0, 1450, 1452, 1454, 0, 1449, 1451, 1453, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1531, 0,
- 0, 0, 0, 0, 2430, 0, 1604, 0, 510, 2361,
- 0, 0, 0, 304, 1264, 2536, 0, 0, 400, 3417,
- 0, 0, 0, 3414, 1374, 1355, 3290, 0, 889, 0,
- 0, 892, 894, 893, 3322, 0, 891, 3331, 3329, 3327,
- 3326, 0, 0, 3270, 3272, 0, 898, 900, 899, 3320,
- 897, 0, 3306, 0, 0, 0, 0, 0, 610, 0,
- 0, 0, 0, 0, 0, 0, 0, 2243, 0, 1373,
- 1373, 2192, 0, 2276, 0, 2276, 2266, 0, 2276, 2272,
- 2232, 2225, 0, 0, 667, 1949, 1933, 2218, 2270, 2271,
- 2276, 0, 0, 2276, 0, 2233, 2266, 2276, 2187, 0,
- 0, 2179, 2184, 2180, 0, 2186, 2185, 2188, 2176, 2177,
- 0, 2205, 0, 2217, 2224, 0, 2204, 2211, 0, 2222,
- 2266, 2266, 0, 2276, 2276, 2276, 1150, 0, 1374, 0,
- 3656, 2460, 2463, 2469, 2475, 2079, 2076, 2337, 272, 0,
- 0, 0, 1272, 1274, 1273, 1290, 1197, 3533, 0, 3535,
- 0, 3537, 0, 78, 0, 0, 2329, 2327, 0, 0,
- 0, 2321, 2323, 2326, 2322, 0, 0, 2328, 131, 0,
- 2324, 2330, 2303, 2306, 2313, 1373, 2304, 0, 0, 341,
- 344, 346, 0, 349, 1867, 3374, 3373, 0, 0, 0,
- 1201, 1204, 0, 2358, 2355, 131, 0, 2662, 3540, 3538,
- 0, 1171, 1187, 134, 1181, 1182, 0, 0, 1174, 134,
- 3355, 3617, 3618, 0, 0, 3594, 3611, 3592, 0, 3606,
- 3607, 3591, 7, 4, 154, 0, 145, 0, 0, 0,
- 610, 610, 137, 0, 610, 0, 3770, 1374, 1374, 610,
- 610, 610, 0, 1766, 0, 1732, 1797, 1798, 1800, 0,
- 1799, 0, 0, 1867, 0, 0, 1789, 1815, 0, 1815,
- 1791, 1792, 0, 0, 0, 1349, 1795, 2516, 2029, 2032,
- 0, 2021, 2023, 2024, 2528, 2026, 0, 0, 1878, 1881,
- 1943, 1944, 0, 1364, 0, 1957, 1958, 1956, 0, 1934,
- 1950, 1955, 1953, 0, 1925, 0, 1974, 1965, 2013, 1363,
- 1972, 1973, 1325, 2282, 0, 2280, 2299, 2300, 2498, 1303,
- 1299, 3351, 3352, 3349, 3350, 3348, 3684, 3685, 3687, 1021,
- 905, 2100, 904, 603, 606, 605, 0, 0, 2071, 227,
- 2533, 0, 2071, 1038, 0, 2534, 3495, 0, 3502, 3484,
- 0, 1155, 3567, 3568, 1032, 1030, 0, 1216, 1217, 1220,
- 0, 250, 0, 253, 255, 0, 400, 433, 435, 444,
- 3631, 378, 0, 0, 1255, 0, 1253, 1252, 1250, 1251,
- 1249, 0, 1240, 1246, 1247, 290, 0, 855, 858, 792,
- 874, 872, 874, 806, 875, 0, 844, 842, 841, 837,
- 844, 808, 914, 820, 0, 874, 907, 911, 908, 816,
- 0, 786, 909, 0, 912, 787, 814, 807, 813, 844,
- 0, 803, 811, 874, 779, 815, 802, 0, 844, 817,
- 822, 825, 827, 829, 844, 874, 0, 3620, 786, 801,
- 800, 786, 844, 0, 0, 3620, 838, 823, 909, 920,
- 786, 874, 844, 0, 862, 844, 288, 375, 1976, 3709,
- 3792, 3793, 3786, 3789, 3791, 1794, 0, 2146, 2153, 2055,
- 2057, 2497, 0, 1348, 2148, 1923, 0, 0, 0, 2161,
- 2059, 0, 3769, 0, 2042, 3408, 3482, 2041, 1159, 0,
- 0, 378, 472, 448, 402, 3447, 1388, 3463, 0, 3468,
- 3469, 3406, 225, 224, 3415, 223, 0, 0, 0, 0,
- 3456, 3439, 0, 3443, 3442, 0, 3440, 0, 3441, 0,
- 3446, 3423, 3422, 2473, 0, 2472, 3668, 377, 2079, 3009,
- 3023, 2373, 2369, 2368, 0, 2388, 0, 1868, 1869, 0,
- 0, 1871, 3357, 1976, 0, 3354, 3691, 393, 400, 0,
- 0, 0, 415, 387, 400, 402, 414, 453, 275, 0,
- 250, 383, 0, 0, 378, 378, 400, 3620, 3709, 3355,
- 3290, 1680, 1682, 0, 0, 1874, 0, 1697, 0, 0,
- 0, 0, 0, 0, 1507, 0, 0, 0, 1634, 0,
- 1697, 1662, 2006, 2007, 1987, 1988, 1986, 1989, 1385, 0,
- 1990, 2005, 0, 0, 0, 1660, 1330, 1313, 0, 0,
- 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852,
- 1853, 1854, 1856, 1861, 1857, 1858, 1859, 1860, 1855, 1862,
- 0, 1842, 0, 1686, 1647, 1649, 0, 0, 0, 756,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1873,
- 0, 0, 1873, 0, 0, 0, 0, 0, 0, 1661,
- 0, 1659, 0, 0, 1658, 1551, 0, 0, 1873, 0,
- 1578, 0, 0, 0, 0, 0, 0, 1557, 1558, 0,
- 0, 0, 1483, 0, 1481, 1482, 0, 0, 1873, 0,
- 0, 0, 0, 1474, 0, 0, 0, 0, 1720, 0,
- 0, 1865, 1863, 1866, 1864, 0, 0, 1721, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1555, 0, 0,
- 0, 2488, 938, 0, 0, 0, 0, 1522, 0, 0,
- 0, 0, 1390, 1389, 1391, 1402, 1396, 1400, 1394, 1398,
- 0, 1455, 3003, 1403, 0, 0, 0, 1406, 1415, 1419,
- 0, 0, 0, 0, 0, 1426, 1424, 1425, 1437, 1438,
- 1422, 1423, 0, 1428, 0, 1427, 1434, 1435, 1436, 1439,
- 1525, 901, 1533, 1893, 1653, 1654, 1678, 1897, 0, 0,
- 0, 0, 2484, 1374, 1477, 1476, 1478, 1479, 1480, 511,
- 0, 505, 508, 522, 0, 0, 2360, 0, 2676, 2692,
- 2693, 322, 325, 324, 326, 0, 0, 1263, 1267, 3355,
- 0, 0, 0, 0, 3486, 3396, 0, 0, 1370, 1310,
- 1369, 0, 0, 0, 0, 0, 3312, 3324, 0, 0,
- 3321, 0, 0, 0, 0, 0, 3294, 0, 0, 0,
- 0, 3267, 3333, 3334, 3337, 0, 0, 0, 2973, 0,
- 3269, 3274, 3265, 3278, 3280, 3282, 2234, 0, 0, 0,
- 0, 2239, 2236, 2229, 2242, 2714, 2238, 2255, 2237, 2231,
- 2244, 2230, 0, 0, 0, 2276, 2248, 2251, 2245, 2276,
- 0, 2276, 2247, 0, 2274, 2261, 2260, 2259, 2202, 2201,
- 2195, 2267, 2252, 2246, 220, 2276, 2200, 2199, 2181, 2182,
- 2183, 0, 1932, 0, 2272, 134, 2266, 0, 2276, 2276,
- 0, 2258, 2221, 2223, 2127, 0, 1794, 0, 0, 2113,
- 2106, 2093, 378, 0, 0, 0, 2080, 2081, 378, 3828,
- 0, 0, 0, 495, 1290, 1276, 1292, 1199, 1198, 1196,
- 3532, 3536, 1722, 80, 2121, 2119, 82, 2118, 2120, 83,
- 2339, 2315, 2314, 2316, 2320, 131, 2325, 2317, 0, 2331,
- 2332, 350, 354, 0, 0, 0, 3372, 0, 611, 0,
- 75, 0, 1205, 1976, 2354, 2356, 2349, 3539, 0, 1172,
- 1189, 1188, 1184, 1185, 0, 1169, 135, 1180, 1179, 1173,
- 2171, 3600, 3609, 3613, 3598, 601, 986, 0, 3404, 3502,
- 189, 0, 0, 0, 140, 0, 3720, 0, 610, 161,
- 163, 610, 0, 0, 0, 610, 0, 0, 1811, 1803,
- 1805, 1806, 1807, 0, 1810, 0, 1352, 0, 1340, 1340,
- 1350, 1813, 1793, 1790, 1816, 0, 1815, 1815, 0, 0,
- 1773, 1772, 0, 1867, 895, 2025, 0, 0, 1877, 0,
- 1879, 1888, 1878, 1946, 2689, 0, 0, 1366, 0, 1976,
- 1360, 2437, 0, 0, 0, 0, 0, 0, 0, 1945,
- 1942, 0, 2301, 0, 0, 601, 0, 604, 2100, 2100,
- 0, 0, 0, 0, 0, 0, 0, 0, 230, 239,
- 1025, 2532, 1027, 0, 0, 0, 0, 0, 3514, 3355,
- 1052, 3569, 1028, 0, 0, 1219, 248, 247, 251, 0,
- 3668, 439, 436, 378, 431, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 134, 89, 110, 0, 1242, 1254, 2052, 1248, 0, 0,
- 0, 0, 0, 0, 804, 878, 0, 805, 0, 846,
- 847, 845, 850, 782, 778, 915, 919, 918, 809, 810,
- 789, 910, 906, 913, 0, 872, 788, 784, 0, 1014,
- 796, 0, 785, 828, 783, 797, 280, 0, 0, 3655,
- 0, 0, 3662, 286, 812, 794, 798, 3620, 3620, 277,
- 285, 0, 775, 790, 921, 791, 793, 920, 776, 0,
- 777, 1976, 1981, 1977, 3795, 303, 0, 302, 0, 2147,
- 1340, 0, 0, 0, 2500, 0, 1960, 1924, 2160, 0,
- 2164, 2163, 0, 3765, 0, 0, 1161, 1160, 2044, 2049,
- 3355, 378, 292, 405, 451, 0, 0, 3403, 226, 3478,
- 3481, 2497, 0, 0, 3424, 0, 424, 3630, 2081, 2370,
- 2374, 1281, 1283, 1284, 1282, 1290, 0, 2548, 2547, 2546,
- 2517, 1872, 2518, 2543, 2541, 2545, 2539, 2544, 2537, 2538,
- 2542, 2540, 0, 3363, 3364, 3362, 3356, 3361, 394, 395,
- 416, 419, 0, 388, 389, 403, 407, 0, 3626, 3625,
- 422, 461, 445, 445, 445, 3823, 0, 1258, 0, 0,
- 2487, 0, 1629, 0, 1630, 1631, 0, 1508, 1730, 0,
- 0, 0, 1536, 0, 0, 0, 1633, 0, 1386, 0,
- 0, 1511, 1503, 1314, 0, 1664, 0, 0, 0, 0,
- 0, 0, 0, 1669, 0, 1667, 0, 0, 1724, 0,
- 1726, 2484, 0, 1639, 1674, 0, 1637, 0, 0, 1663,
- 1675, 1676, 0, 0, 0, 1643, 1641, 0, 1645, 1579,
- 1642, 1644, 0, 0, 0, 1576, 0, 0, 0, 0,
- 0, 0, 0, 1554, 0, 1590, 0, 1627, 1591, 0,
- 0, 1588, 0, 0, 0, 1606, 1540, 1541, 0, 1542,
- 1593, 0, 1516, 1547, 1548, 1513, 1514, 1607, 1596, 1515,
- 0, 1550, 1976, 0, 1534, 0, 0, 0, 1552, 1582,
- 0, 0, 0, 1512, 0, 0, 0, 1976, 0, 1608,
- 1556, 0, 0, 757, 1332, 1504, 2485, 1397, 1401, 1395,
- 1399, 0, 0, 0, 0, 1414, 0, 0, 1407, 1417,
- 1420, 0, 0, 1895, 0, 0, 1672, 1719, 1719, 1719,
- 1719, 0, 0, 0, 1623, 1624, 0, 0, 504, 503,
- 0, 507, 591, 0, 524, 512, 501, 2362, 0, 0,
- 1265, 0, 0, 0, 0, 3397, 0, 0, 0, 0,
- 1374, 1375, 1375, 2483, 3291, 3292, 3293, 0, 2573, 2572,
- 2570, 2574, 2571, 2521, 2523, 0, 2522, 2568, 2566, 2569,
- 2564, 2562, 2563, 2567, 2565, 0, 0, 3310, 903, 902,
- 3323, 0, 3345, 0, 0, 3330, 3328, 0, 0, 0,
- 3273, 0, 3339, 3340, 0, 0, 0, 3308, 3307, 0,
- 0, 0, 3300, 0, 0, 0, 2257, 0, 2228, 2241,
- 2240, 2277, 2278, 2254, 2250, 2196, 2253, 2249, 2273, 1976,
- 2206, 2227, 2197, 0, 2220, 2178, 2274, 2235, 1875, 2266,
- 2193, 2194, 2256, 0, 1349, 1375, 2109, 1374, 2110, 378,
- 2464, 0, 2471, 0, 2068, 0, 0, 3620, 1239, 1279,
- 1271, 1278, 1275, 1290, 1288, 1277, 964, 963, 0, 1291,
- 79, 0, 0, 2318, 134, 2312, 2333, 2307, 0, 345,
- 355, 347, 351, 352, 353, 348, 2783, 2864, 0, 1875,
- 3376, 3615, 1212, 1210, 1209, 1211, 1200, 1206, 1207, 2359,
- 2357, 134, 2378, 1187, 0, 1190, 3620, 1976, 0, 3612,
- 155, 602, 0, 0, 0, 986, 0, 165, 3514, 0,
- 0, 0, 138, 169, 3720, 3777, 3620, 3762, 3771, 3583,
- 0, 156, 3774, 228, 3772, 0, 0, 1808, 1809, 1770,
- 1340, 1342, 1341, 0, 0, 1344, 0, 0, 0, 0,
- 1778, 0, 1774, 1776, 0, 1840, 1832, 0, 2030, 2022,
- 2027, 2482, 1885, 1929, 0, 0, 1311, 1888, 0, 1947,
- 1938, 0, 1367, 1365, 1959, 1936, 0, 1952, 1951, 1954,
- 1364, 1926, 1929, 0, 1374, 3686, 3688, 1022, 607, 0,
- 0, 1023, 0, 0, 0, 233, 236, 234, 235, 2100,
- 2100, 183, 2100, 2100, 182, 184, 0, 178, 175, 185,
- 2100, 1039, 171, 0, 0, 0, 0, 1976, 0, 0,
- 0, 191, 0, 3489, 3488, 0, 3504, 0, 0, 3506,
- 0, 3505, 3503, 3474, 3485, 0, 1047, 1017, 0, 1054,
- 1056, 0, 0, 3569, 1218, 0, 250, 254, 442, 0,
- 0, 0, 1976, 0, 1976, 1976, 0, 0, 1976, 0,
- 1976, 0, 0, 0, 0, 0, 0, 0, 1976, 0,
- 0, 0, 1976, 0, 1976, 0, 88, 1256, 0, 3620,
- 261, 0, 260, 3755, 292, 853, 851, 854, 852, 873,
- 0, 848, 849, 916, 917, 879, 909, 0, 909, 282,
- 0, 3111, 279, 767, 2588, 2589, 2590, 2591, 2593, 2594,
- 3664, 3663, 3751, 3750, 0, 0, 795, 312, 311, 309,
- 378, 299, 307, 301, 0, 308, 1984, 1985, 1982, 1980,
- 1983, 3831, 2144, 2056, 2163, 0, 2498, 1373, 0, 2156,
- 1875, 0, 2162, 3355, 3409, 3483, 1159, 0, 293, 0,
- 0, 402, 3518, 0, 0, 0, 0, 0, 2474, 426,
- 2065, 0, 1290, 1294, 2381, 3366, 3367, 3365, 396, 417,
- 390, 0, 410, 402, 0, 250, 0, 455, 457, 446,
- 465, 459, 0, 445, 1683, 1681, 0, 1698, 1727, 0,
- 857, 857, 840, 861, 1713, 3118, 1707, 1710, 0, 859,
- 1715, 857, 1708, 859, 0, 1706, 0, 1704, 1705, 0,
- 0, 0, 1635, 1632, 0, 0, 0, 1689, 1689, 0,
- 0, 0, 0, 1431, 0, 0, 0, 1618, 0, 1640,
- 1638, 0, 0, 0, 0, 0, 1646, 0, 1562, 1560,
- 1489, 0, 1487, 0, 1488, 0, 1490, 0, 0, 1628,
- 0, 1457, 1475, 0, 0, 0, 1722, 0, 1992, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2489, 0, 0, 927, 933, 936, 937, 939, 931, 0,
- 1600, 0, 0, 0, 1412, 1408, 0, 1416, 0, 0,
- 0, 1430, 1429, 1897, 1896, 0, 1671, 0, 0, 1721,
- 0, 0, 1721, 0, 0, 0, 2486, 1375, 1605, 1374,
- 514, 0, 532, 506, 1976, 509, 0, 523, 0, 535,
- 0, 0, 0, 323, 0, 1268, 0, 454, 0, 3395,
- 3487, 0, 0, 1368, 1376, 1371, 0, 0, 0, 3314,
- 3313, 3325, 0, 0, 0, 0, 3298, 3296, 3295, 3271,
- 0, 0, 3344, 3338, 3335, 3336, 0, 0, 3277, 0,
- 0, 3275, 3279, 3281, 2216, 2215, 0, 2275, 1932, 2189,
- 2208, 2210, 2276, 2129, 2133, 0, 1867, 2117, 0, 0,
- 2111, 2115, 0, 2470, 0, 0, 2082, 1794, 273, 0,
- 3692, 3833, 0, 1834, 84, 0, 2319, 2310, 0, 2305,
- 2308, 0, 0, 3387, 3388, 3380, 3383, 3381, 3382, 3386,
- 3389, 3390, 3377, 3384, 1932, 0, 0, 1202, 1208, 2352,
- 1186, 136, 0, 1170, 0, 0, 3651, 2172, 3601, 3614,
- 1001, 1003, 1002, 987, 988, 0, 0, 0, 1047, 0,
- 0, 0, 614, 614, 170, 3779, 0, 0, 3715, 3718,
- 3716, 3719, 3721, 3620, 0, 200, 3569, 3620, 0, 3620,
- 158, 1767, 1351, 1343, 1345, 1340, 1340, 0, 1731, 0,
- 0, 0, 1731, 0, 0, 495, 0, 1812, 1829, 896,
- 2395, 1886, 1887, 0, 1882, 1930, 1931, 1884, 1880, 0,
- 1889, 1891, 1312, 1948, 1940, 1935, 1361, 0, 1928, 0,
- 0, 0, 2016, 2018, 665, 664, 238, 237, 242, 243,
- 1976, 1976, 2105, 2104, 1976, 1976, 177, 174, 2103, 2102,
- 1976, 1976, 172, 2071, 195, 194, 196, 197, 199, 198,
- 193, 1035, 0, 3492, 0, 3499, 3494, 3497, 3477, 3476,
- 3475, 3472, 0, 1976, 1976, 1976, 0, 1976, 3513, 3515,
- 0, 0, 1036, 904, 3527, 0, 0, 205, 3571, 0,
- 3573, 0, 1222, 0, 1221, 249, 3668, 1976, 1976, 103,
- 1976, 95, 96, 91, 123, 124, 93, 94, 99, 98,
- 100, 101, 104, 105, 102, 97, 92, 127, 129, 128,
- 106, 2012, 2011, 2010, 130, 125, 126, 90, 291, 0,
- 268, 266, 267, 3666, 3665, 3752, 0, 0, 3753, 3798,
- 0, 819, 1015, 818, 281, 278, 839, 1976, 289, 310,
- 0, 1875, 2501, 0, 0, 1961, 2157, 2149, 2151, 2039,
- 2037, 3658, 0, 452, 406, 450, 0, 3402, 3407, 3480,
- 3479, 3502, 3502, 400, 3668, 400, 425, 0, 1285, 1290,
- 1294, 0, 1286, 2392, 404, 408, 3628, 3627, 462, 3709,
- 3821, 0, 0, 1728, 1699, 909, 1712, 1714, 0, 1711,
- 909, 856, 860, 1717, 1703, 1709, 1716, 909, 1506, 1537,
- 1510, 1509, 0, 0, 0, 1569, 0, 1687, 1693, 0,
- 0, 0, 1544, 0, 1670, 1668, 1546, 0, 0, 1620,
- 2486, 1595, 1666, 1572, 1597, 1549, 0, 0, 0, 1486,
- 1484, 1485, 0, 1563, 1586, 0, 1473, 1587, 0, 1570,
- 1594, 1502, 1994, 1993, 1991, 1517, 1976, 0, 1574, 1535,
- 0, 0, 1599, 2490, 2491, 0, 0, 0, 938, 924,
- 925, 926, 0, 928, 930, 932, 0, 1976, 1433, 1432,
- 1404, 0, 1413, 1410, 0, 1418, 1899, 1898, 0, 0,
- 1611, 1613, 1612, 1615, 1614, 1609, 1719, 1376, 1625, 0,
- 515, 516, 518, 520, 597, 0, 510, 539, 499, 0,
- 514, 502, 1266, 1269, 0, 3393, 3392, 0, 1372, 1380,
- 1379, 2480, 2484, 0, 0, 0, 3311, 3332, 0, 0,
- 0, 0, 3342, 3341, 3343, 3309, 3304, 3302, 3301, 1998,
- 1999, 1997, 1995, 1996, 2207, 1932, 2203, 0, 1875, 0,
- 1832, 1375, 2107, 0, 3657, 0, 2088, 0, 2085, 2092,
- 488, 2156, 0, 2083, 2054, 3696, 3693, 3694, 0, 1837,
- 0, 1838, 1835, 1836, 1976, 0, 0, 371, 363, 358,
- 366, 360, 362, 361, 367, 368, 369, 370, 364, 359,
- 365, 357, 356, 0, 3375, 1213, 1214, 0, 1193, 1191,
- 3652, 3653, 143, 0, 3405, 164, 0, 149, 152, 715,
- 0, 0, 0, 0, 2100, 2100, 2100, 2100, 2100, 2100,
- 2100, 2100, 2100, 2100, 0, 2100, 2100, 2100, 2100, 2100,
- 2100, 2100, 2100, 2100, 2100, 0, 0, 2100, 2100, 139,
- 483, 491, 615, 618, 654, 656, 643, 644, 480, 0,
- 141, 0, 3708, 3707, 3620, 3714, 3717, 269, 3702, 3698,
- 3701, 231, 0, 0, 0, 257, 3700, 3699, 0, 680,
- 681, 679, 678, 0, 0, 3569, 0, 1354, 1353, 1779,
- 0, 1783, 1788, 1784, 0, 1775, 0, 1796, 1841, 1833,
- 0, 0, 2403, 1929, 0, 0, 1929, 0, 0, 1375,
- 2014, 1374, 176, 181, 180, 173, 186, 179, 1040, 192,
- 3493, 3491, 3490, 0, 3498, 0, 3473, 3509, 3507, 3508,
- 3511, 0, 0, 3510, 3512, 1041, 1042, 1048, 1043, 1147,
- 1147, 0, 1147, 0, 0, 1147, 2100, 0, 0, 495,
- 1165, 2100, 0, 0, 0, 0, 0, 1130, 0, 1147,
- 0, 0, 0, 0, 0, 1068, 1129, 616, 1018, 1067,
- 1069, 1081, 491, 0, 1102, 1132, 1133, 1131, 3528, 0,
- 0, 0, 1053, 0, 208, 206, 216, 3570, 0, 2071,
- 0, 3573, 1224, 1225, 0, 440, 0, 116, 118, 0,
- 120, 122, 0, 112, 114, 259, 3667, 3754, 0, 0,
- 843, 300, 2163, 2154, 0, 1962, 0, 1374, 2071, 294,
- 0, 0, 3516, 3516, 427, 429, 428, 2122, 1287, 1295,
- 2394, 2393, 0, 250, 445, 0, 1684, 1700, 1718, 1701,
- 1702, 1636, 0, 0, 0, 0, 1693, 0, 0, 1694,
- 1652, 0, 0, 0, 0, 0, 1505, 0, 1616, 0,
- 1561, 1559, 0, 840, 1464, 1466, 1462, 1465, 0, 859,
- 1468, 0, 821, 859, 909, 1472, 1458, 1459, 1460, 1461,
- 0, 0, 0, 0, 0, 2492, 922, 1602, 0, 935,
- 929, 927, 934, 0, 1409, 0, 0, 1901, 0, 1673,
- 0, 1626, 519, 0, 598, 594, 0, 0, 540, 0,
- 541, 537, 513, 0, 3394, 1378, 1377, 0, 3318, 3316,
- 3315, 3347, 3346, 3299, 3297, 0, 0, 134, 2132, 1923,
- 2134, 2135, 2126, 2116, 2114, 2466, 0, 2089, 2091, 2477,
- 2476, 2488, 0, 0, 2071, 2084, 1976, 3695, 1087, 0,
- 1088, 1099, 1101, 1293, 0, 2344, 0, 2342, 2311, 2345,
- 0, 0, 0, 0, 146, 0, 0, 0, 1012, 2625,
- 0, 0, 684, 686, 687, 688, 689, 0, 716, 691,
- 610, 965, 965, 718, 2493, 0, 663, 2100, 484, 1976,
- 1976, 1976, 1976, 641, 1976, 1976, 1976, 0, 0, 2100,
- 1976, 0, 0, 1976, 1976, 1976, 1976, 0, 0, 1976,
- 649, 650, 648, 1976, 1976, 2392, 490, 492, 904, 619,
- 614, 0, 0, 3670, 3670, 3744, 0, 3745, 3746, 262,
- 3763, 475, 476, 0, 0, 3573, 0, 0, 3589, 0,
- 3589, 0, 0, 1734, 1733, 0, 0, 0, 0, 0,
- 0, 1822, 0, 1821, 0, 1827, 1831, 0, 0, 0,
- 0, 2396, 2398, 0, 2031, 1883, 1892, 1890, 1927, 1939,
- 0, 2019, 2017, 0, 3500, 3496, 1979, 1978, 0, 1045,
- 0, 1044, 1049, 1012, 610, 1148, 608, 0, 1106, 1110,
- 1107, 608, 2058, 2058, 1259, 2058, 0, 0, 0, 0,
- 2058, 0, 2060, 2058, 0, 0, 2058, 2058, 0, 1259,
- 0, 493, 1168, 1166, 2058, 1167, 2058, 0, 0, 1259,
- 1119, 1063, 1120, 0, 1064, 2058, 1259, 1086, 1259, 1259,
- 0, 617, 904, 1065, 1066, 715, 1162, 215, 204, 0,
- 0, 1055, 1057, 0, 0, 1058, 3572, 1031, 3575, 2071,
- 1230, 0, 108, 1976, 109, 1976, 107, 1976, 3758, 0,
- 2071, 0, 1963, 2158, 2152, 3519, 0, 3401, 3400, 0,
- 2156, 0, 3629, 463, 445, 1567, 1568, 1690, 1929, 1688,
- 0, 1695, 1696, 1650, 1592, 0, 1545, 0, 1617, 0,
- 1598, 1564, 1467, 1463, 1470, 822, 1469, 1471, 1589, 1518,
- 1976, 1575, 1580, 1581, 0, 1601, 1976, 1411, 0, 1904,
- 1903, 0, 0, 1929, 1610, 517, 595, 512, 0, 536,
- 539, 0, 500, 2481, 0, 0, 3305, 3303, 2209, 1960,
- 2467, 2465, 2087, 0, 0, 0, 2086, 2096, 0, 2069,
- 0, 1289, 0, 1839, 2340, 1976, 0, 2309, 0, 1192,
- 1194, 0, 0, 0, 0, 0, 717, 1013, 0, 0,
- 690, 2496, 683, 715, 0, 0, 0, 965, 707, 610,
- 0, 1012, 966, 610, 610, 0, 0, 0, 0, 2009,
- 2008, 638, 631, 630, 633, 632, 635, 634, 0, 627,
- 624, 636, 626, 651, 0, 639, 621, 676, 677, 675,
- 645, 652, 622, 623, 629, 628, 625, 668, 673, 671,
- 670, 669, 674, 672, 640, 655, 637, 653, 482, 599,
- 620, 491, 2002, 2003, 2000, 2001, 660, 659, 2004, 657,
- 658, 3670, 3670, 0, 372, 3646, 3644, 3647, 3645, 3780,
- 3724, 3725, 3729, 3727, 3738, 3731, 0, 3731, 0, 3661,
- 3747, 0, 263, 265, 240, 232, 0, 0, 479, 477,
- 478, 0, 0, 157, 271, 258, 231, 0, 3776, 231,
- 3573, 1735, 0, 0, 1780, 0, 1785, 0, 1777, 1817,
- 1817, 1828, 0, 0, 0, 0, 2397, 0, 0, 2404,
- 2406, 1941, 0, 1043, 0, 0, 0, 1259, 0, 0,
- 1134, 1104, 0, 0, 0, 0, 1075, 0, 1084, 0,
- 0, 2058, 0, 1136, 0, 1135, 0, 0, 0, 1145,
- 1146, 0, 1919, 1921, 1929, 0, 0, 0, 1124, 1143,
- 1144, 0, 0, 0, 0, 1094, 0, 1080, 1147, 0,
- 1147, 1103, 0, 682, 0, 1164, 1105, 202, 207, 217,
- 218, 1033, 0, 3574, 1029, 0, 1231, 1227, 1228, 1223,
- 117, 121, 113, 0, 0, 2155, 0, 0, 3523, 3517,
- 3521, 2123, 2071, 0, 3824, 0, 1692, 1648, 0, 1619,
- 1621, 0, 923, 0, 1900, 1894, 0, 0, 0, 0,
- 0, 0, 1913, 1905, 0, 1677, 0, 597, 0, 0,
- 525, 538, 544, 543, 3319, 3317, 2130, 0, 2090, 2478,
- 2489, 489, 0, 0, 3668, 1100, 2343, 0, 3385, 0,
- 1929, 1010, 0, 0, 0, 0, 0, 0, 685, 0,
- 610, 961, 962, 1012, 0, 692, 984, 2493, 1012, 1012,
- 722, 0, 710, 720, 765, 2495, 485, 647, 2332, 646,
- 600, 0, 2392, 0, 0, 3743, 0, 3726, 3728, 3730,
- 0, 3749, 0, 3748, 3620, 270, 0, 241, 3710, 1374,
- 213, 3760, 3620, 3590, 3620, 159, 0, 1867, 0, 0,
- 0, 1825, 1823, 2401, 2402, 0, 2399, 0, 0, 2405,
- 0, 1050, 1046, 1051, 0, 1089, 0, 1108, 0, 0,
- 1074, 0, 1245, 0, 0, 1127, 1115, 0, 1070, 0,
- 1117, 1118, 1159, 1072, 0, 1922, 494, 0, 0, 1079,
- 0, 1162, 1071, 1096, 1077, 1109, 1163, 209, 1059, 378,
- 0, 0, 0, 1226, 0, 1233, 3759, 3756, 0, 0,
- 3522, 3520, 0, 2066, 1794, 1929, 1543, 1519, 1603, 0,
- 1910, 0, 0, 1908, 1907, 0, 1902, 1909, 596, 593,
- 0, 0, 533, 551, 547, 0, 549, 550, 572, 2071,
- 0, 0, 2095, 2097, 3697, 2346, 3355, 0, 1007, 0,
- 1008, 0, 3355, 3355, 0, 0, 0, 1012, 984, 2493,
- 943, 0, 693, 0, 697, 699, 724, 0, 719, 711,
- 732, 0, 0, 661, 481, 3670, 0, 3670, 0, 3709,
- 3722, 3781, 3734, 3732, 3704, 3703, 3778, 264, 3620, 3620,
- 3584, 205, 214, 0, 3775, 3773, 2862, 0, 1743, 1745,
- 1768, 1782, 1787, 0, 1818, 0, 0, 0, 2400, 2408,
- 2407, 3501, 0, 1091, 609, 1004, 0, 1122, 0, 0,
- 1162, 1076, 0, 0, 0, 1116, 1137, 1114, 1259, 1920,
- 0, 0, 0, 1113, 1095, 1097, 1205, 0, 211, 187,
- 3576, 0, 0, 1232, 1237, 0, 1234, 1236, 0, 1346,
- 0, 2382, 1691, 1911, 0, 1912, 1915, 0, 0, 1916,
- 0, 529, 531, 521, 0, 526, 0, 545, 0, 2100,
- 2100, 0, 2100, 2100, 2100, 2100, 565, 573, 575, 576,
- 577, 0, 2131, 2468, 2479, 972, 1929, 0, 0, 0,
- 0, 974, 976, 0, 0, 712, 705, 701, 0, 0,
- 947, 985, 0, 695, 0, 0, 887, 941, 750, 0,
- 753, 0, 885, 723, 725, 883, 884, 727, 0, 0,
- 0, 766, 0, 0, 865, 0, 868, 0, 0, 721,
- 0, 733, 864, 871, 2494, 642, 487, 662, 3741, 3737,
- 3739, 3736, 0, 3661, 3620, 3620, 3764, 3711, 0, 216,
- 3710, 0, 1742, 0, 0, 1820, 1819, 1834, 0, 0,
- 0, 539, 1090, 1005, 1123, 0, 1112, 495, 539, 1128,
- 1073, 1125, 1126, 495, 0, 1078, 210, 0, 203, 188,
- 219, 3577, 3578, 1229, 0, 3757, 2124, 895, 1906, 1914,
- 1918, 1917, 527, 0, 534, 558, 548, 554, 0, 2100,
- 0, 0, 2100, 0, 0, 0, 0, 0, 542, 574,
- 2100, 0, 0, 2100, 0, 993, 995, 1138, 973, 997,
- 996, 978, 994, 1006, 1011, 1010, 3355, 190, 0, 1138,
- 975, 999, 982, 1138, 977, 998, 980, 0, 0, 0,
- 0, 703, 0, 946, 0, 951, 0, 0, 0, 0,
- 751, 752, 888, 726, 886, 882, 876, 870, 2505, 2506,
- 0, 0, 0, 762, 763, 866, 759, 760, 761, 0,
- 741, 0, 0, 872, 863, 734, 3710, 3710, 3723, 3620,
- 231, 0, 0, 0, 0, 187, 1747, 1744, 0, 1752,
- 1754, 1753, 1755, 1746, 0, 0, 0, 1111, 1093, 0,
- 1121, 1083, 1085, 1082, 0, 212, 1235, 0, 2383, 533,
- 530, 558, 0, 556, 0, 552, 546, 553, 0, 590,
- 584, 0, 586, 587, 585, 582, 569, 0, 567, 0,
- 989, 992, 1976, 990, 144, 1140, 1139, 979, 0, 972,
- 0, 150, 983, 153, 981, 708, 0, 0, 0, 0,
- 944, 0, 948, 949, 950, 0, 942, 0, 0, 0,
- 0, 877, 881, 2440, 2439, 0, 1381, 869, 0, 736,
- 880, 735, 3620, 3620, 3782, 3735, 3589, 3709, 1374, 218,
- 3761, 0, 1749, 0, 0, 1826, 1824, 1092, 539, 2125,
- 2137, 0, 2409, 528, 555, 0, 563, 559, 561, 564,
- 589, 588, 0, 566, 0, 583, 666, 991, 1142, 1141,
- 1009, 1138, 1000, 709, 0, 1008, 0, 945, 0, 0,
- 972, 0, 974, 976, 758, 0, 867, 728, 728, 742,
- 3706, 3705, 3742, 3740, 231, 3712, 3585, 201, 1748, 0,
- 1756, 0, 0, 0, 0, 2395, 557, 0, 0, 578,
- 571, 568, 147, 0, 0, 1008, 957, 956, 0, 0,
- 953, 952, 694, 972, 698, 700, 1382, 0, 739, 729,
- 731, 738, 744, 745, 743, 746, 3733, 0, 0, 1751,
- 0, 1762, 1761, 1750, 0, 1757, 1759, 1098, 2136, 2138,
- 0, 2403, 562, 560, 570, 579, 581, 706, 972, 0,
- 960, 958, 959, 0, 0, 696, 1383, 730, 737, 747,
- 749, 3713, 0, 1739, 1740, 1738, 1737, 1736, 1763, 0,
- 0, 1758, 0, 1760, 0, 2411, 580, 702, 972, 0,
- 0, 748, 3586, 1765, 1764, 0, 0, 2410, 0, 2415,
- 704, 955, 954, 3581, 0, 0, 2422, 3579, 3580, 0,
- 3587, 2413, 2414, 2412, 0, 2417, 0, 2419, 2420, 0,
- 2071, 3582, 378, 2421, 2416, 0, 2423, 2425, 0, 2384,
- 187, 2418, 0, 1374, 3588, 2424, 0, 1375, 2426
+ 0, 3647, 2, 0, 2520, 2521, 1026, 2313, 0, 436,
+ 0, 1258, 618, 2763, 3846, 2160, 2307, 2306, 2081, 2778,
+ 476, 220, 2826, 382, 2083, 2380, 0, 0, 472, 2879,
+ 1274, 2896, 764, 502, 2903, 0, 326, 0, 0, 479,
+ 324, 220, 1323, 3280, 2207, 0, 3387, 2147, 0, 1321,
+ 474, 2478, 2731, 2776, 2777, 2806, 2639, 2897, 2920, 2948,
+ 2086, 2716, 2715, 2717, 3020, 2718, 2719, 2720, 2721, 2722,
+ 3021, 2614, 2723, 2724, 2725, 2727, 2726, 2728, 2729, 3022,
+ 2615, 3544, 3648, 2616, 2688, 2730, 2690, 2689, 2732, 2617,
+ 2618, 2733, 2734, 2735, 2737, 2736, 2620, 2619, 2738, 2740,
+ 2739, 2691, 2692, 2741, 3023, 2742, 2744, 2621, 3018, 2622,
+ 2623, 2624, 2743, 2625, 2745, 3549, 2746, 2747, 2626, 2748,
+ 2749, 2750, 2751, 2753, 2752, 2754, 2755, 2757, 2758, 2759,
+ 2756, 2760, 2761, 2764, 2762, 2694, 2693, 3024, 2627, 2765,
+ 2766, 2767, 2768, 2770, 2771, 2769, 2772, 2053, 2773, 2774,
+ 2775, 2783, 2784, 2786, 2785, 2695, 2787, 2788, 2789, 2791,
+ 2790, 2792, 2794, 2628, 2629, 2630, 2793, 2795, 2779, 2780,
+ 2781, 2782, 2797, 2796, 2798, 2799, 2800, 2696, 1274, 2632,
+ 3017, 2801, 2802, 3709, 2803, 2804, 3025, 2633, 2685, 2805,
+ 3389, 2808, 2807, 85, 2809, 2635, 2810, 3026, 3027, 2811,
+ 2812, 2814, 2816, 2813, 2817, 2818, 2824, 2636, 2815, 2819,
+ 2820, 2821, 2822, 2823, 2825, 2697, 2827, 2828, 3028, 3029,
+ 2829, 2830, 2831, 2832, 2686, 2833, 2834, 2835, 2836, 2849,
+ 2850, 2840, 2841, 2843, 2844, 2847, 2842, 2848, 2853, 2852,
+ 2854, 2855, 2856, 2857, 2858, 2851, 2838, 2845, 2846, 2839,
+ 2859, 2860, 2837, 2861, 2863, 2862, 2864, 2698, 2865, 2866,
+ 2867, 2868, 2869, 3030, 2870, 2871, 2873, 2872, 2874, 3031,
+ 2875, 2876, 2877, 2682, 2878, 2699, 2700, 2880, 2881, 3032,
+ 2882, 2883, 2888, 2889, 2890, 2885, 2884, 2886, 2887, 2701,
+ 2702, 2703, 2891, 2892, 2893, 2895, 2894, 2638, 2637, 3033,
+ 2640, 2898, 2899, 2641, 2900, 2902, 2901, 2684, 2642, 2904,
+ 2905, 2907, 2906, 2643, 2644, 2645, 2908, 2909, 2910, 2911,
+ 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2704, 2705,
+ 2921, 2922, 2923, 2925, 2924, 2926, 2927, 2931, 2928, 2929,
+ 2930, 2932, 2646, 2933, 1274, 2934, 2935, 2936, 2647, 2938,
+ 2937, 2648, 2939, 2940, 2941, 2942, 2943, 2683, 3549, 2944,
+ 2945, 2947, 2706, 2946, 2949, 2950, 0, 2951, 2952, 3034,
+ 2649, 2953, 2954, 2707, 2687, 2650, 3035, 2956, 2392, 2714,
+ 2955, 2957, 2652, 2653, 2958, 2959, 2960, 2651, 2961, 2654,
+ 3036, 2962, 2964, 2963, 2965, 2966, 2967, 2968, 2655, 2969,
+ 2970, 2656, 2971, 2657, 2972, 2973, 3037, 2974, 2976, 2975,
+ 2977, 2978, 2979, 2980, 2981, 2982, 2984, 2986, 2985, 2983,
+ 2987, 2988, 2708, 2989, 2658, 2709, 3039, 3040, 2710, 2990,
+ 2991, 2992, 2993, 3038, 2187, 2994, 2995, 2661, 2996, 2997,
+ 2999, 2998, 2659, 2660, 3000, 3001, 2665, 3041, 3002, 3008,
+ 3042, 2711, 2712, 3003, 3004, 3015, 3005, 3007, 3006, 3010,
+ 3009, 3016, 3043, 3710, 2662, 3011, 3012, 2663, 3013, 2664,
+ 3014, 2713, 0, 0, 3, 3649, 22, 0, 45, 27,
+ 33, 17, 21, 2069, 16, 47, 60, 53, 30, 3833,
+ 3834, 3836, 43, 3580, 42, 11, 63, 64, 19, 50,
+ 12, 15, 18, 41, 49, 37, 44, 57, 58, 1344,
+ 1320, 1348, 1319, 1315, 1311, 1330, 1331, 1332, 1338, 25,
+ 26, 34, 51, 68, 23, 65, 61, 24, 2313, 13,
+ 28, 29, 14, 52, 46, 38, 62, 69, 39, 0,
+ 3713, 3707, 3705, 3708, 3703, 3704, 3019, 2613, 3706, 59,
+ 40, 67, 32, 54, 31, 9, 10, 20, 55, 56,
+ 48, 70, 35, 66, 36, 8, 3714, 0, 3650, 168,
+ 3546, 3835, 2578, 2577, 2615, 3667, 2616, 2618, 2669, 2619,
+ 2672, 2673, 2666, 2627, 2674, 3668, 2630, 2631, 2670, 2575,
+ 2633, 2675, 2634, 2636, 2667, 2668, 2676, 2671, 2645, 2677,
+ 2647, 2678, 2679, 2680, 2655, 2656, 2681, 2660, 2576, 2664,
+ 2525, 2541, 0, 2542, 2572, 2570, 2574, 2568, 2573, 2566,
+ 2567, 2571, 2569, 1070, 0, 0, 0, 0, 2079, 0,
+ 2079, 1164, 1389, 3578, 3579, 3580, 1275, 0, 1276, 0,
+ 0, 250, 406, 131, 0, 0, 3648, 2182, 2079, 2057,
+ 227, 224, 2079, 228, 2079, 223, 2079, 2079, 2082, 2079,
+ 2079, 2079, 225, 226, 0, 0, 0, 406, 2089, 2382,
+ 0, 2402, 2403, 2397, 3377, 3378, 3372, 384, 0, 0,
+ 0, 2280, 2279, 0, 0, 311, 323, 326, 319, 322,
+ 0, 220, 2079, 384, 325, 326, 0, 1353, 0, 2285,
+ 326, 0, 2158, 2396, 0, 406, 2479, 2476, 2089, 2353,
+ 2355, 0, 2351, 3549, 1465, 1464, 0, 3842, 3844, 0,
+ 2531, 1253, 1285, 1210, 3550, 3551, 0, 77, 80, 2319,
+ 349, 0, 0, 0, 616, 0, 0, 1218, 0, 3551,
+ 3561, 2394, 0, 131, 1189, 0, 131, 2190, 2079, 2079,
+ 3630, 3631, 0, 0, 0, 3625, 0, 3632, 0, 1348,
+ 0, 1334, 1, 5, 0, 0, 616, 980, 616, 981,
+ 0, 616, 616, 0, 0, 0, 0, 3585, 3578, 3579,
+ 3580, 0, 2039, 1894, 1349, 1348, 1986, 1990, 3566, 3566,
+ 3566, 0, 0, 1986, 1339, 2781, 3017, 2902, 0, 2298,
+ 2312, 2296, 2514, 1317, 1313, 3715, 0, 0, 2625, 1029,
+ 1071, 1034, 234, 0, 0, 1036, 0, 1047, 2547, 2546,
+ 2545, 1044, 220, 0, 1166, 0, 0, 0, 3586, 3585,
+ 0, 1230, 2300, 2301, 2302, 2303, 2304, 2305, 2308, 0,
+ 256, 406, 438, 1392, 449, 440, 443, 0, 132, 133,
+ 1256, 1259, 0, 619, 302, 304, 0, 3684, 301, 303,
+ 3683, 0, 3811, 0, 0, 380, 289, 378, 3680, 3677,
+ 3682, 3678, 3681, 3679, 3800, 379, 3712, 0, 293, 3847,
+ 3801, 3802, 3804, 0, 2186, 2185, 0, 2184, 2161, 0,
+ 2182, 0, 2077, 229, 0, 230, 0, 220, 0, 220,
+ 2062, 0, 2079, 2079, 477, 3711, 0, 3688, 3437, 3455,
+ 3456, 1406, 3452, 3457, 0, 3454, 3449, 0, 0, 3451,
+ 3448, 0, 0, 3476, 3450, 3453, 2616, 2749, 2790, 2630,
+ 2798, 2799, 2912, 2916, 2921, 2932, 2936, 2680, 2652, 2977,
+ 3430, 3418, 3432, 3431, 0, 0, 3435, 3440, 0, 3439,
+ 0, 0, 2091, 2383, 2384, 2388, 0, 2406, 0, 0,
+ 397, 0, 0, 0, 0, 3832, 386, 387, 0, 391,
+ 0, 384, 3830, 3822, 0, 406, 3829, 3824, 3823, 3825,
+ 3826, 3827, 3828, 417, 0, 418, 419, 3831, 473, 3818,
+ 3819, 0, 0, 384, 3721, 0, 3820, 3816, 3817, 1272,
+ 1698, 0, 2453, 2522, 2523, 0, 2466, 2471, 2472, 2464,
+ 2465, 2469, 2445, 2468, 2444, 2470, 1467, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1406, 1406, 1406,
+ 1403, 0, 0, 0, 0, 0, 0, 2462, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1403, 0, 0, 2461, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1596, 2463, 1406, 1403, 1403, 0, 0, 1406, 0, 0,
+ 0, 3020, 2614, 3022, 2669, 2621, 2622, 2623, 2624, 2666,
+ 2693, 3024, 3025, 3026, 3028, 3029, 3030, 3031, 2881, 3032,
+ 3033, 2684, 2910, 2706, 3034, 3035, 3037, 2709, 3039, 3040,
+ 2710, 3038, 2681, 3041, 3042, 3043, 2662, 2713, 0, 0,
+ 0, 0, 1466, 0, 0, 1346, 1542, 765, 1412, 1424,
+ 1440, 0, 1540, 1539, 1543, 1545, 1551, 1459, 1572, 1511,
+ 1512, 1514, 1513, 1518, 1519, 0, 1674, 1520, 0, 0,
+ 1517, 2458, 1516, 1515, 2459, 2460, 1510, 2500, 2530, 0,
+ 0, 2524, 3019, 2613, 504, 503, 0, 345, 338, 333,
+ 341, 335, 337, 336, 342, 343, 344, 339, 334, 340,
+ 327, 0, 312, 0, 320, 3562, 0, 1277, 384, 480,
+ 346, 3437, 2717, 2916, 3410, 0, 3417, 0, 3577, 3571,
+ 3574, 3573, 3569, 3572, 3570, 3575, 1374, 3576, 1373, 1324,
+ 1354, 1371, 1372, 0, 0, 0, 2603, 2602, 900, 2600,
+ 3301, 3302, 0, 2604, 0, 0, 3303, 2969, 2990, 2601,
+ 0, 2536, 0, 2537, 2597, 2595, 2599, 2598, 2592, 2593,
+ 2596, 3281, 3286, 3282, 2594, 0, 2313, 0, 0, 2293,
+ 978, 977, 0, 0, 0, 0, 2229, 0, 900, 2293,
+ 2230, 0, 1951, 2283, 2286, 0, 3305, 2243, 979, 3306,
+ 2279, 0, 2215, 2231, 2192, 2236, 131, 3307, 131, 2282,
+ 1951, 2293, 0, 2208, 0, 0, 0, 2313, 1388, 0,
+ 321, 3388, 2159, 1162, 2127, 1322, 2113, 0, 475, 0,
+ 2094, 0, 2352, 3545, 3843, 3741, 0, 0, 0, 0,
+ 3554, 1740, 2054, 0, 81, 76, 0, 0, 0, 0,
+ 2519, 3390, 86, 0, 0, 3644, 74, 0, 2370, 0,
+ 2368, 2365, 2367, 0, 3554, 0, 2393, 1196, 1196, 0,
+ 0, 1188, 1190, 1191, 1196, 1196, 2191, 0, 0, 0,
+ 2452, 2450, 2451, 2532, 3627, 2449, 2448, 3636, 3638, 3621,
+ 0, 3624, 3623, 3633, 1337, 1336, 6, 71, 0, 142,
+ 616, 220, 220, 616, 167, 148, 151, 616, 616, 616,
+ 160, 162, 616, 616, 0, 222, 0, 0, 3585, 1352,
+ 2826, 0, 0, 1364, 1350, 1788, 1351, 1820, 1790, 1760,
+ 1751, 1750, 1816, 1817, 1819, 1818, 1821, 1823, 1813, 0,
+ 0, 2052, 0, 2047, 1895, 1900, 1894, 0, 0, 0,
+ 0, 0, 0, 1985, 1951, 1994, 1956, 1987, 1316, 1983,
+ 0, 1312, 1377, 1377, 3568, 3567, 3565, 3564, 3563, 1988,
+ 1335, 1343, 1341, 1342, 1989, 1333, 0, 2310, 2516, 0,
+ 0, 2315, 0, 1986, 1990, 1391, 0, 0, 2118, 2117,
+ 2120, 0, 914, 0, 235, 0, 3583, 3584, 3582, 1406,
+ 2548, 2551, 3581, 2552, 235, 2080, 0, 0, 0, 2079,
+ 1170, 1171, 1165, 1167, 1169, 0, 0, 0, 0, 2314,
+ 0, 252, 258, 251, 447, 0, 0, 3701, 0, 444,
+ 87, 0, 1260, 2070, 2072, 3814, 3044, 3045, 3046, 3047,
+ 3048, 3049, 3051, 3052, 3050, 3053, 3054, 844, 867, 3055,
+ 3056, 3057, 867, 884, 3058, 3059, 3060, 3061, 3062, 3063,
+ 3064, 3065, 830, 3066, 3067, 3068, 3069, 3070, 3071, 3072,
+ 3073, 3074, 3075, 3076, 3078, 3077, 3079, 3080, 3081, 3082,
+ 3083, 3084, 3085, 3086, 850, 3087, 3088, 3089, 3090, 3091,
+ 3092, 3094, 3093, 3095, 3096, 3097, 3098, 846, 3099, 3100,
+ 3101, 3103, 3102, 3104, 3105, 3106, 3107, 3108, 3109, 3110,
+ 3111, 3112, 850, 3113, 3114, 3115, 3116, 3117, 3119, 3118,
+ 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131,
+ 3132, 3133, 3134, 3135, 3136, 3137, 840, 3138, 3139, 3140,
+ 3141, 3142, 3143, 3120, 3144, 3121, 3145, 3146, 3147, 3148,
+ 3149, 3150, 3151, 3152, 3153, 884, 796, 796, 3154, 3155,
+ 3156, 3157, 3158, 3159, 3160, 884, 843, 796, 3163, 3164,
+ 3161, 3162, 3165, 3166, 3167, 3168, 3169, 3171, 3170, 3174,
+ 3172, 3173, 850, 3175, 3176, 3177, 3178, 3179, 3180, 3181,
+ 3182, 3183, 3184, 3185, 3186, 3187, 3189, 3190, 3188, 3191,
+ 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201,
+ 3202, 845, 3203, 3205, 3204, 3206, 3207, 3208, 3209, 3211,
+ 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3221, 3219, 3220,
+ 3222, 3223, 3224, 3225, 3226, 0, 3227, 3228, 842, 3229,
+ 3230, 3234, 3231, 3235, 3232, 3236, 3233, 3237, 3238, 3239,
+ 3240, 3241, 3242, 3243, 3244, 3246, 3247, 3248, 3249, 3250,
+ 884, 841, 796, 3251, 3252, 3253, 3255, 3256, 3257, 3258,
+ 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3268, 3269,
+ 3267, 867, 834, 3270, 3272, 3271, 3273, 3274, 3275, 3276,
+ 3277, 3278, 3279, 3210, 3245, 3254, 867, 790, 791, 796,
+ 867, 809, 0, 850, 884, 0, 831, 850, 836, 2612,
+ 867, 0, 867, 867, 867, 867, 3683, 867, 0, 282,
+ 290, 850, 774, 780, 782, 781, 783, 784, 867, 867,
+ 867, 867, 867, 871, 777, 779, 2605, 2606, 2607, 2608,
+ 2610, 2611, 3666, 778, 2609, 3807, 0, 0, 0, 3813,
+ 0, 3648, 0, 0, 3805, 0, 2162, 0, 2171, 2074,
+ 1362, 1894, 2164, 2076, 2180, 2183, 2059, 0, 0, 2065,
+ 2064, 0, 2066, 0, 0, 232, 2067, 2055, 0, 453,
+ 455, 3438, 3436, 3473, 3472, 3477, 0, 3474, 3470, 0,
+ 3429, 3478, 3463, 3467, 0, 3479, 0, 3464, 3471, 3485,
+ 3484, 3486, 3481, 3480, 0, 3483, 3469, 0, 3468, 3489,
+ 0, 3433, 0, 0, 429, 0, 2096, 2097, 2093, 1162,
+ 2092, 2389, 0, 2381, 0, 1295, 2408, 2407, 2404, 1886,
+ 3374, 3379, 3676, 3675, 3674, 3673, 2543, 0, 3670, 3672,
+ 3669, 3671, 2544, 406, 398, 0, 0, 2881, 0, 405,
+ 404, 403, 426, 406, 392, 415, 0, 0, 3651, 385,
+ 3652, 388, 424, 427, 466, 462, 470, 464, 3839, 3837,
+ 3722, 3821, 280, 0, 0, 2522, 2523, 2455, 2454, 2524,
+ 2446, 2467, 0, 0, 0, 1546, 1892, 1892, 1892, 0,
+ 0, 1748, 0, 0, 0, 0, 1892, 0, 1584, 1558,
+ 1557, 0, 1585, 0, 0, 0, 0, 0, 0, 0,
+ 1704, 1704, 1670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1742, 1744, 2500, 1892, 0, 1892, 0,
+ 1411, 1590, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1892, 1892, 1892, 0, 1602, 1604, 1603,
+ 1892, 1892, 1592, 0, 0, 0, 0, 0, 1892, 0,
+ 0, 0, 0, 0, 1738, 2473, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1738, 0, 0, 0,
+ 0, 0, 0, 2475, 0, 0, 0, 2474, 0, 0,
+ 0, 0, 0, 0, 1738, 0, 0, 1548, 0, 1547,
+ 1549, 0, 1346, 766, 0, 0, 0, 1463, 1461, 1462,
+ 1460, 0, 0, 0, 0, 1469, 1471, 1473, 0, 1468,
+ 1470, 1472, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1550, 0, 0, 0, 0, 0, 2447, 0,
+ 1623, 0, 516, 2378, 0, 0, 0, 310, 1279, 2553,
+ 0, 0, 406, 3436, 0, 0, 0, 3433, 1389, 1370,
+ 3308, 0, 899, 0, 0, 902, 904, 903, 3340, 0,
+ 901, 3349, 3347, 3345, 3344, 0, 0, 3288, 3290, 0,
+ 908, 910, 909, 3338, 907, 0, 3324, 0, 0, 0,
+ 0, 0, 616, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2260, 0, 1388, 1388, 2209, 0, 2293, 0, 2293,
+ 2283, 0, 2293, 2289, 2249, 2242, 0, 0, 677, 1968,
+ 1952, 2235, 2287, 2288, 2293, 0, 0, 2293, 0, 2250,
+ 2283, 2293, 2204, 0, 0, 2196, 2201, 2197, 0, 2203,
+ 2202, 2205, 2193, 2194, 0, 2222, 0, 2234, 2241, 0,
+ 2221, 2228, 0, 2239, 2283, 2283, 0, 2293, 2293, 2293,
+ 1163, 0, 1389, 0, 3690, 2477, 2480, 2486, 2492, 2098,
+ 2095, 2354, 278, 0, 0, 0, 1287, 1289, 1288, 1305,
+ 1212, 3553, 0, 3555, 0, 3557, 0, 78, 0, 0,
+ 2346, 2344, 0, 0, 0, 2338, 2340, 2343, 2339, 0,
+ 0, 2345, 131, 0, 2341, 2347, 2320, 2323, 2330, 1388,
+ 2321, 0, 0, 347, 350, 352, 0, 355, 1886, 3393,
+ 3392, 0, 0, 0, 1216, 1219, 0, 2375, 2372, 131,
+ 0, 2679, 3560, 3558, 0, 1184, 1200, 134, 1194, 1195,
+ 0, 0, 1187, 134, 3374, 3645, 3646, 0, 0, 3622,
+ 3639, 3620, 0, 3634, 3635, 3619, 7, 4, 154, 0,
+ 145, 0, 0, 0, 616, 616, 137, 0, 3788, 1389,
+ 1389, 0, 0, 616, 616, 616, 0, 1785, 0, 1751,
+ 1816, 1817, 1819, 0, 1818, 0, 0, 1886, 0, 0,
+ 1808, 1834, 0, 1834, 1810, 1811, 0, 0, 0, 1364,
+ 1814, 2533, 2048, 2051, 0, 2040, 2042, 2043, 2545, 2045,
+ 0, 0, 1897, 1900, 1962, 1963, 0, 1379, 0, 1976,
+ 1977, 1975, 0, 1953, 1969, 1974, 1972, 0, 1944, 0,
+ 1993, 1984, 2032, 1378, 1991, 1992, 1340, 2299, 0, 2297,
+ 2316, 2317, 2515, 1318, 1314, 0, 3716, 3717, 3719, 1031,
+ 915, 2119, 914, 609, 612, 611, 0, 0, 2090, 233,
+ 2550, 0, 2090, 1048, 0, 2551, 3515, 0, 3522, 3504,
+ 0, 1168, 3587, 3588, 1042, 1040, 0, 1231, 1232, 1235,
+ 0, 256, 0, 259, 261, 0, 406, 439, 441, 1390,
+ 450, 3659, 384, 0, 0, 1270, 0, 1268, 1267, 1265,
+ 1266, 1264, 0, 1255, 1261, 1262, 296, 0, 865, 868,
+ 802, 884, 882, 884, 816, 885, 0, 854, 852, 851,
+ 847, 854, 818, 924, 830, 0, 884, 917, 921, 918,
+ 826, 0, 796, 919, 0, 922, 797, 824, 817, 823,
+ 854, 0, 813, 821, 884, 789, 825, 812, 0, 854,
+ 827, 832, 835, 837, 839, 854, 884, 0, 3648, 796,
+ 811, 810, 796, 854, 0, 0, 3648, 848, 833, 919,
+ 930, 796, 884, 854, 0, 872, 854, 294, 381, 1995,
+ 3741, 3809, 3810, 3803, 3806, 3808, 1813, 0, 2165, 2174,
+ 2514, 0, 0, 0, 1363, 2168, 1942, 0, 2517, 2078,
+ 0, 2061, 3427, 3502, 2060, 1172, 0, 0, 0, 384,
+ 478, 454, 408, 3466, 1407, 3482, 3490, 0, 3487, 3488,
+ 3425, 3434, 0, 0, 0, 0, 3475, 3458, 0, 3462,
+ 3461, 0, 3459, 0, 3460, 0, 3465, 3442, 3441, 2490,
+ 0, 2489, 3701, 383, 2098, 3027, 3041, 2390, 2386, 2385,
+ 0, 2405, 0, 1887, 1888, 0, 0, 1890, 3376, 1995,
+ 0, 3373, 3723, 399, 406, 0, 0, 0, 421, 393,
+ 406, 408, 420, 459, 281, 0, 256, 389, 0, 0,
+ 384, 384, 406, 3648, 3741, 3374, 3308, 1699, 1701, 0,
+ 0, 1893, 0, 1716, 0, 0, 0, 0, 0, 0,
+ 1526, 0, 0, 0, 1653, 0, 1716, 1681, 2025, 2026,
+ 2006, 2007, 2005, 2008, 1404, 0, 2009, 2024, 0, 0,
+ 0, 1679, 1345, 1328, 0, 0, 1862, 1863, 1864, 1865,
+ 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1875, 1880,
+ 1876, 1877, 1878, 1879, 1874, 1881, 0, 1861, 0, 1705,
+ 1666, 1668, 0, 0, 0, 766, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1892, 0, 0, 1892, 0,
+ 0, 0, 0, 0, 0, 1680, 0, 1678, 0, 0,
+ 1677, 1570, 0, 0, 1892, 0, 1597, 0, 0, 0,
+ 0, 0, 0, 1576, 1577, 0, 0, 0, 1502, 0,
+ 1500, 1501, 0, 0, 1892, 0, 0, 0, 0, 1493,
+ 0, 0, 0, 0, 1739, 0, 0, 1884, 1882, 1885,
+ 1883, 0, 0, 1740, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1574, 0, 0, 0, 2505, 948, 0,
+ 0, 0, 0, 1541, 0, 0, 0, 0, 1409, 1408,
+ 1410, 1421, 1415, 1419, 1413, 1417, 0, 1474, 3021, 1422,
+ 0, 0, 0, 1425, 1434, 1438, 0, 0, 0, 0,
+ 0, 1445, 1443, 1444, 1456, 1457, 1441, 1442, 0, 1447,
+ 0, 1446, 1453, 1454, 1455, 1458, 1544, 911, 1552, 1912,
+ 1672, 1673, 1697, 1916, 0, 0, 0, 0, 2501, 1389,
+ 1496, 1495, 1497, 1498, 1499, 517, 0, 511, 514, 528,
+ 0, 0, 2377, 0, 2693, 2709, 2710, 328, 331, 330,
+ 332, 0, 0, 1278, 1282, 3374, 0, 0, 0, 0,
+ 3506, 3415, 0, 0, 1385, 1325, 1384, 0, 0, 0,
+ 0, 0, 3330, 3342, 0, 0, 3339, 0, 0, 1391,
+ 0, 0, 3312, 0, 0, 0, 0, 3285, 3351, 3352,
+ 3355, 0, 1391, 0, 2990, 0, 3287, 3292, 3283, 3296,
+ 3298, 3300, 2251, 0, 0, 0, 0, 2256, 2253, 2246,
+ 2259, 2731, 2255, 2272, 2254, 2248, 2261, 2247, 0, 0,
+ 0, 2293, 2265, 2268, 2262, 2293, 0, 2293, 2264, 0,
+ 2291, 2278, 2277, 2276, 2219, 2218, 2212, 2284, 2269, 2263,
+ 220, 2293, 2217, 2216, 2198, 2199, 2200, 0, 1951, 0,
+ 2289, 134, 2283, 0, 2293, 2293, 0, 2275, 2238, 2240,
+ 2146, 0, 1813, 0, 0, 2132, 2125, 2112, 384, 0,
+ 0, 0, 2099, 2100, 384, 3845, 0, 0, 0, 501,
+ 1305, 1291, 1307, 1214, 1213, 1211, 3552, 3556, 1741, 80,
+ 2140, 2138, 82, 2137, 2139, 83, 2356, 2332, 2331, 2333,
+ 2337, 131, 2342, 2334, 0, 2348, 2349, 356, 360, 0,
+ 0, 0, 3391, 0, 617, 0, 75, 0, 1220, 1995,
+ 2371, 2373, 2366, 3559, 0, 1185, 1202, 1201, 1197, 1198,
+ 0, 1182, 135, 1193, 1192, 1186, 2188, 3628, 3637, 3641,
+ 3626, 607, 996, 0, 3423, 3522, 189, 0, 0, 0,
+ 140, 0, 616, 161, 163, 616, 3617, 3617, 0, 0,
+ 0, 616, 0, 0, 1830, 1822, 1824, 1825, 1826, 0,
+ 1829, 0, 1367, 0, 1355, 1355, 1365, 1832, 1812, 1809,
+ 1835, 0, 1834, 1834, 0, 0, 1792, 1791, 0, 1886,
+ 905, 2044, 0, 0, 1896, 0, 1898, 1907, 1897, 1965,
+ 2706, 0, 0, 1381, 0, 1995, 1375, 2454, 0, 0,
+ 0, 0, 0, 0, 0, 1964, 1961, 0, 2318, 3370,
+ 3371, 1390, 3369, 1390, 1390, 1391, 1391, 607, 0, 610,
+ 2119, 2119, 0, 0, 0, 0, 0, 0, 0, 0,
+ 236, 245, 1035, 2549, 1037, 0, 0, 0, 0, 0,
+ 3534, 3374, 1062, 3589, 1038, 0, 0, 1234, 254, 253,
+ 257, 0, 3701, 445, 442, 407, 384, 437, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 134, 89, 110, 0, 1257, 1269, 2071,
+ 1263, 0, 0, 0, 0, 0, 0, 814, 888, 0,
+ 815, 0, 856, 857, 855, 860, 792, 788, 925, 929,
+ 928, 819, 820, 799, 920, 916, 923, 0, 882, 798,
+ 794, 0, 1024, 806, 0, 795, 838, 793, 807, 286,
+ 0, 0, 3689, 1391, 1391, 3695, 292, 822, 804, 808,
+ 3648, 3648, 283, 291, 0, 785, 800, 931, 801, 803,
+ 930, 786, 0, 787, 1995, 2000, 1996, 3812, 309, 0,
+ 308, 0, 2167, 1355, 2090, 0, 0, 2075, 0, 0,
+ 1979, 1943, 2181, 2180, 0, 0, 0, 1174, 1173, 2063,
+ 231, 2068, 3374, 384, 298, 411, 457, 0, 0, 3422,
+ 3498, 3501, 2514, 0, 0, 3443, 0, 430, 3658, 2100,
+ 2387, 2391, 1296, 1298, 1299, 1297, 1305, 0, 2565, 2564,
+ 2563, 2534, 1891, 2535, 2560, 2558, 2562, 2556, 2561, 2554,
+ 2555, 2559, 2557, 0, 3382, 3383, 3381, 3375, 3380, 400,
+ 401, 422, 425, 0, 394, 395, 409, 413, 0, 3654,
+ 3653, 428, 467, 451, 451, 451, 3840, 0, 1273, 0,
+ 0, 2504, 0, 1648, 0, 1649, 1650, 0, 1527, 1749,
+ 0, 0, 0, 1555, 0, 0, 0, 1652, 0, 1405,
+ 0, 0, 1530, 1522, 1329, 0, 1683, 0, 0, 0,
+ 0, 0, 0, 0, 1688, 0, 1686, 0, 0, 1743,
+ 0, 1745, 2501, 0, 1658, 1693, 0, 1656, 0, 0,
+ 1682, 1694, 1695, 0, 0, 0, 1662, 1660, 0, 1664,
+ 1598, 1661, 1663, 0, 0, 0, 1595, 0, 0, 0,
+ 0, 0, 0, 0, 1573, 0, 1609, 0, 1646, 1610,
+ 0, 0, 1607, 0, 0, 0, 1625, 1559, 1560, 0,
+ 1561, 1612, 0, 1535, 1566, 1567, 1532, 1533, 1626, 1615,
+ 1534, 0, 1569, 1995, 0, 1553, 0, 0, 0, 1571,
+ 1601, 0, 0, 0, 1531, 0, 0, 0, 1995, 0,
+ 1627, 1575, 0, 0, 767, 1347, 1523, 2502, 1416, 1420,
+ 1414, 1418, 0, 0, 0, 0, 1433, 0, 0, 1426,
+ 1436, 1439, 0, 0, 1914, 0, 0, 1691, 1738, 1738,
+ 1738, 1738, 0, 0, 0, 1642, 1643, 0, 0, 510,
+ 509, 0, 513, 597, 0, 530, 518, 507, 2379, 0,
+ 0, 1280, 0, 0, 0, 0, 3416, 0, 0, 0,
+ 0, 1389, 1390, 1390, 2500, 3309, 3310, 3311, 0, 2590,
+ 2589, 2587, 2591, 2588, 2538, 2540, 0, 2539, 2585, 2583,
+ 2586, 2581, 2579, 2580, 2584, 2582, 1391, 0, 3328, 913,
+ 912, 3341, 0, 3363, 0, 0, 3348, 3346, 0, 0,
+ 1391, 3291, 0, 3357, 3358, 0, 0, 0, 3326, 3325,
+ 0, 0, 0, 3318, 0, 0, 0, 2274, 0, 2245,
+ 2258, 2257, 2294, 2295, 2271, 2267, 2213, 2270, 2266, 2290,
+ 1995, 2223, 2244, 2214, 0, 2237, 2195, 2291, 2252, 1894,
+ 2283, 2210, 2211, 2273, 0, 1364, 1390, 2128, 1389, 2129,
+ 384, 2481, 0, 2488, 0, 2087, 0, 0, 3648, 1254,
+ 1294, 1286, 1293, 1290, 1305, 1303, 1292, 974, 973, 0,
+ 1306, 79, 0, 0, 2335, 134, 2329, 2350, 2324, 0,
+ 351, 361, 353, 357, 358, 359, 354, 2800, 2881, 0,
+ 1894, 3395, 3643, 1227, 1225, 1224, 1226, 1215, 1221, 1222,
+ 2376, 2374, 134, 2395, 1200, 0, 1203, 3648, 1995, 0,
+ 3640, 155, 608, 0, 0, 0, 996, 0, 165, 3534,
+ 0, 0, 0, 138, 169, 3785, 3789, 3603, 0, 3795,
+ 3615, 3797, 156, 3792, 234, 3790, 0, 0, 1827, 1828,
+ 1789, 1355, 1357, 1356, 0, 0, 1359, 0, 0, 0,
+ 0, 1797, 0, 1793, 1795, 0, 1859, 1851, 0, 2049,
+ 2041, 2046, 2499, 1904, 1948, 0, 0, 1326, 1907, 0,
+ 1966, 1957, 0, 1382, 1380, 1978, 1955, 0, 1971, 1970,
+ 1973, 1379, 1945, 1948, 0, 1389, 3368, 3366, 3367, 3718,
+ 3720, 1032, 613, 0, 0, 1033, 0, 0, 0, 239,
+ 242, 240, 241, 2119, 2119, 183, 2119, 2119, 182, 184,
+ 0, 178, 175, 185, 2119, 1049, 171, 0, 0, 0,
+ 0, 1995, 0, 0, 0, 191, 0, 3509, 3508, 0,
+ 3524, 0, 0, 3526, 0, 3525, 3523, 3494, 3505, 0,
+ 1057, 1027, 0, 1064, 1066, 0, 0, 3589, 1233, 0,
+ 256, 260, 448, 0, 0, 0, 1995, 0, 1995, 1995,
+ 0, 0, 1995, 0, 1995, 0, 0, 0, 0, 0,
+ 0, 0, 1995, 0, 0, 0, 1995, 0, 1995, 0,
+ 88, 1271, 0, 3648, 267, 0, 266, 3778, 298, 863,
+ 861, 864, 862, 883, 0, 858, 859, 926, 927, 889,
+ 919, 0, 919, 288, 0, 3129, 285, 777, 2605, 2606,
+ 2607, 2608, 2610, 2611, 0, 0, 3774, 3773, 0, 0,
+ 805, 318, 317, 315, 384, 305, 313, 307, 0, 314,
+ 2003, 2004, 2001, 1999, 2002, 3848, 2163, 2166, 0, 2515,
+ 1894, 1388, 0, 2177, 0, 2518, 3374, 3428, 3503, 1172,
+ 0, 299, 0, 1391, 408, 3538, 0, 0, 0, 0,
+ 0, 2491, 432, 2084, 0, 1305, 1309, 2398, 3385, 3386,
+ 3384, 402, 423, 396, 1391, 416, 408, 0, 256, 0,
+ 461, 463, 452, 471, 465, 0, 451, 1702, 1700, 0,
+ 1717, 1746, 0, 867, 867, 850, 871, 1732, 3136, 1726,
+ 1729, 0, 869, 1734, 867, 1727, 869, 0, 1725, 0,
+ 1723, 1724, 0, 0, 0, 1654, 1651, 0, 0, 0,
+ 1708, 1708, 0, 0, 0, 0, 1450, 0, 0, 0,
+ 1637, 0, 1659, 1657, 0, 0, 0, 0, 0, 1665,
+ 0, 1581, 1579, 1508, 0, 1506, 0, 1507, 0, 1509,
+ 0, 0, 1647, 0, 1476, 1494, 0, 0, 0, 1741,
+ 0, 2011, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2506, 0, 0, 937, 943, 946, 947,
+ 949, 941, 0, 1619, 0, 0, 0, 1431, 1427, 0,
+ 1435, 0, 0, 0, 1449, 1448, 1916, 1915, 0, 1690,
+ 0, 0, 1740, 0, 0, 1740, 0, 0, 0, 2503,
+ 1390, 1624, 1389, 520, 0, 538, 512, 1995, 515, 0,
+ 529, 0, 541, 0, 0, 0, 329, 0, 1283, 0,
+ 460, 0, 3414, 3507, 0, 0, 1383, 1395, 1386, 0,
+ 0, 0, 3332, 0, 3343, 1391, 0, 0, 0, 3316,
+ 3314, 3313, 3289, 0, 0, 3362, 3356, 3353, 3354, 1391,
+ 0, 3295, 0, 1391, 3293, 3297, 3299, 2233, 2232, 0,
+ 2292, 1951, 2206, 2225, 2227, 2293, 2148, 2152, 0, 1886,
+ 2136, 0, 0, 2130, 2134, 0, 2487, 0, 0, 2101,
+ 1813, 279, 0, 3724, 3850, 0, 1853, 84, 0, 2336,
+ 2327, 0, 2322, 2325, 0, 0, 3406, 3407, 3399, 3402,
+ 3400, 3401, 3405, 3408, 3409, 3396, 3403, 1951, 0, 0,
+ 1217, 1223, 2369, 1199, 136, 0, 1183, 0, 0, 3685,
+ 2189, 3629, 3642, 1011, 1013, 1012, 997, 998, 0, 0,
+ 0, 1057, 0, 0, 0, 620, 620, 170, 3648, 0,
+ 200, 0, 0, 3612, 3613, 3616, 3618, 0, 3589, 3648,
+ 0, 3648, 158, 1786, 1366, 1358, 1360, 1355, 1355, 0,
+ 1750, 0, 0, 0, 1750, 0, 0, 501, 0, 1831,
+ 1848, 906, 2412, 1905, 1906, 0, 1901, 1949, 1950, 1903,
+ 1899, 0, 1908, 1910, 1327, 1967, 1959, 1954, 1376, 0,
+ 1947, 0, 0, 0, 2035, 2037, 675, 674, 244, 243,
+ 248, 249, 1995, 1995, 2124, 2123, 1995, 1995, 177, 174,
+ 2122, 2121, 1995, 1995, 172, 2090, 195, 194, 196, 197,
+ 199, 198, 193, 1045, 0, 3512, 0, 3519, 3514, 3517,
+ 3497, 3496, 3495, 3492, 0, 1995, 1995, 1995, 0, 1995,
+ 3533, 3535, 0, 0, 1046, 914, 3547, 0, 0, 205,
+ 3591, 0, 3593, 0, 1237, 0, 1236, 255, 3701, 1995,
+ 1995, 103, 1995, 95, 96, 91, 123, 124, 93, 94,
+ 99, 98, 100, 101, 104, 105, 102, 97, 92, 127,
+ 129, 128, 106, 2031, 2030, 2029, 130, 125, 126, 90,
+ 297, 0, 274, 272, 273, 3699, 3698, 3775, 0, 0,
+ 3776, 3815, 0, 829, 1025, 828, 287, 1390, 1390, 284,
+ 849, 1995, 295, 316, 1894, 2172, 0, 0, 1980, 2178,
+ 2169, 2058, 2056, 3692, 1389, 458, 0, 456, 0, 3421,
+ 3426, 3500, 3499, 3522, 3522, 406, 3701, 406, 431, 0,
+ 1300, 1305, 1309, 0, 1301, 2409, 0, 414, 3656, 3655,
+ 468, 3741, 3838, 0, 0, 1747, 1718, 919, 1731, 1733,
+ 0, 1730, 919, 866, 870, 1736, 1722, 1728, 1735, 919,
+ 1525, 1556, 1529, 1528, 0, 0, 0, 1588, 0, 1706,
+ 1712, 0, 0, 0, 1563, 0, 1689, 1687, 1565, 0,
+ 0, 1639, 2503, 1614, 1685, 1591, 1616, 1568, 0, 0,
+ 0, 1505, 1503, 1504, 0, 1582, 1605, 0, 1492, 1606,
+ 0, 1589, 1613, 1521, 2013, 2012, 2010, 1536, 1995, 0,
+ 1593, 1554, 0, 0, 1618, 2507, 2508, 0, 0, 0,
+ 948, 934, 935, 936, 0, 938, 940, 942, 0, 1995,
+ 1452, 1451, 1423, 0, 1432, 1429, 0, 1437, 1918, 1917,
+ 0, 0, 1630, 1632, 1631, 1634, 1633, 1628, 1738, 1395,
+ 1644, 0, 521, 522, 524, 526, 603, 0, 516, 545,
+ 505, 0, 520, 508, 1281, 1284, 0, 3412, 3411, 0,
+ 1387, 1399, 1398, 2497, 2501, 0, 0, 1391, 1390, 3329,
+ 3350, 0, 0, 1391, 1391, 3360, 3359, 3361, 3327, 3322,
+ 3320, 3319, 2017, 2018, 2016, 2014, 2015, 2224, 1951, 2220,
+ 0, 1894, 0, 1851, 1390, 2126, 0, 3691, 0, 2107,
+ 0, 2104, 2111, 494, 2177, 0, 2102, 2073, 3728, 3725,
+ 3726, 0, 1856, 0, 1857, 1854, 1855, 1995, 0, 0,
+ 377, 369, 364, 372, 366, 368, 367, 373, 374, 375,
+ 376, 370, 365, 371, 363, 362, 0, 3394, 1228, 1229,
+ 0, 0, 0, 1208, 1204, 3686, 3687, 143, 0, 3424,
+ 164, 0, 149, 152, 725, 0, 0, 0, 0, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 0,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 669, 2119,
+ 2119, 0, 0, 2119, 2119, 670, 139, 489, 497, 621,
+ 624, 660, 0, 668, 662, 649, 650, 486, 667, 141,
+ 275, 3734, 3730, 3733, 237, 0, 0, 3740, 3739, 3648,
+ 3611, 3614, 0, 0, 263, 3732, 0, 3731, 3661, 690,
+ 691, 689, 688, 0, 0, 3589, 0, 1369, 1368, 1798,
+ 0, 1802, 1807, 1803, 0, 1794, 0, 1815, 1860, 1852,
+ 0, 0, 2420, 1948, 0, 0, 1948, 0, 0, 1390,
+ 2033, 1389, 176, 181, 180, 173, 186, 179, 1050, 192,
+ 3513, 3511, 3510, 0, 3518, 0, 3493, 3529, 3527, 3528,
+ 3531, 0, 0, 3530, 3532, 1051, 1052, 1058, 1053, 1160,
+ 1160, 0, 1160, 0, 0, 1160, 2119, 0, 0, 501,
+ 1178, 2119, 0, 0, 0, 0, 0, 1140, 0, 1160,
+ 0, 0, 0, 0, 0, 1078, 1139, 622, 1028, 1077,
+ 1079, 1091, 497, 0, 1112, 1142, 1143, 1141, 3548, 0,
+ 0, 0, 1063, 0, 208, 206, 216, 3590, 0, 2090,
+ 0, 3593, 1239, 1240, 0, 446, 0, 116, 118, 0,
+ 120, 122, 0, 112, 114, 265, 3700, 3777, 0, 0,
+ 853, 3697, 3696, 306, 2175, 2090, 0, 1981, 0, 1389,
+ 2090, 0, 1390, 0, 3536, 3536, 433, 435, 434, 2141,
+ 1302, 1310, 2411, 2410, 0, 1390, 256, 451, 0, 1703,
+ 1719, 1737, 1720, 1721, 1655, 0, 0, 0, 0, 1712,
+ 0, 0, 1713, 1671, 0, 0, 0, 0, 0, 1524,
+ 0, 1635, 0, 1580, 1578, 0, 850, 1483, 1485, 1481,
+ 1484, 0, 869, 1487, 0, 831, 869, 919, 1491, 1477,
+ 1478, 1479, 1480, 0, 0, 0, 0, 0, 2509, 932,
+ 1621, 0, 945, 939, 937, 944, 0, 1428, 0, 0,
+ 1920, 0, 1692, 0, 1645, 525, 0, 604, 600, 0,
+ 0, 546, 0, 547, 543, 519, 0, 3413, 1397, 1396,
+ 0, 3336, 3334, 3333, 3331, 3365, 3364, 3317, 3315, 1391,
+ 1391, 134, 2151, 1942, 2153, 2154, 2145, 2135, 2133, 2483,
+ 0, 2108, 2110, 2494, 2493, 2505, 0, 0, 2090, 2103,
+ 1995, 3727, 1097, 0, 1098, 1109, 1111, 1308, 0, 2361,
+ 0, 2359, 2328, 2362, 0, 0, 0, 0, 0, 0,
+ 146, 0, 0, 0, 1022, 2642, 0, 0, 694, 696,
+ 697, 698, 699, 0, 726, 701, 616, 975, 975, 728,
+ 2510, 0, 673, 2119, 490, 1995, 1995, 1995, 1995, 647,
+ 1995, 1995, 1995, 0, 0, 2119, 1995, 0, 0, 1995,
+ 1995, 1995, 1995, 0, 0, 1995, 655, 656, 654, 1995,
+ 1995, 2409, 496, 498, 914, 625, 0, 620, 268, 3786,
+ 481, 482, 0, 0, 1394, 1394, 3767, 0, 3768, 3769,
+ 1394, 1394, 0, 378, 3680, 3678, 3681, 3679, 3752, 3749,
+ 0, 3746, 3747, 3754, 3762, 3593, 0, 0, 3609, 237,
+ 0, 237, 0, 0, 1753, 1752, 0, 0, 0, 0,
+ 0, 0, 1841, 0, 1840, 0, 1846, 1850, 0, 0,
+ 0, 0, 2413, 2415, 0, 2050, 1902, 1911, 1909, 1946,
+ 1958, 0, 2038, 2036, 0, 3520, 3516, 1998, 1997, 0,
+ 1055, 0, 1054, 1059, 1022, 616, 1161, 614, 0, 1116,
+ 1120, 1117, 614, 2077, 2077, 1274, 2077, 0, 0, 0,
+ 0, 2077, 0, 2079, 2077, 0, 0, 2077, 2077, 0,
+ 1274, 0, 499, 1181, 1179, 2077, 1180, 2077, 0, 0,
+ 1274, 1129, 1073, 1130, 0, 1074, 2077, 1274, 1096, 1274,
+ 1274, 0, 623, 914, 1075, 1076, 725, 1175, 215, 204,
+ 0, 0, 1065, 1067, 0, 0, 1068, 3592, 1041, 3595,
+ 2090, 1245, 0, 108, 1995, 109, 1995, 107, 1995, 3781,
+ 0, 2090, 2173, 0, 1982, 2179, 2170, 1390, 0, 412,
+ 3539, 0, 3420, 3419, 0, 2177, 0, 410, 3657, 469,
+ 451, 1586, 1587, 1709, 1948, 1707, 0, 1714, 1715, 1669,
+ 1611, 0, 1564, 0, 1636, 0, 1617, 1583, 1486, 1482,
+ 1489, 832, 1488, 1490, 1608, 1537, 1995, 1594, 1599, 1600,
+ 0, 1620, 1995, 1430, 0, 1923, 1922, 0, 0, 1948,
+ 1629, 523, 601, 518, 0, 542, 545, 0, 506, 2498,
+ 1391, 1391, 3323, 3321, 2226, 1979, 2484, 2482, 2106, 0,
+ 0, 0, 2105, 2115, 0, 2088, 0, 1304, 0, 1858,
+ 2357, 1995, 0, 2326, 0, 1205, 1206, 1207, 1209, 0,
+ 0, 0, 0, 0, 727, 1023, 0, 0, 700, 2513,
+ 693, 725, 0, 0, 0, 975, 717, 616, 0, 1022,
+ 976, 616, 616, 0, 0, 0, 0, 2028, 2027, 644,
+ 637, 636, 639, 638, 641, 640, 0, 633, 630, 642,
+ 632, 657, 0, 645, 627, 686, 687, 685, 651, 658,
+ 628, 629, 635, 634, 631, 678, 683, 681, 680, 679,
+ 684, 682, 646, 661, 643, 659, 488, 605, 626, 2021,
+ 2022, 2019, 2020, 666, 665, 2023, 663, 664, 497, 0,
+ 269, 271, 246, 238, 0, 0, 485, 483, 484, 0,
+ 0, 0, 0, 0, 0, 1393, 3770, 0, 0, 3663,
+ 3741, 3750, 3798, 3753, 3748, 3755, 157, 277, 264, 3662,
+ 0, 3783, 3648, 3794, 3648, 3593, 1754, 0, 0, 1799,
+ 0, 1804, 0, 1796, 1836, 1836, 1847, 0, 0, 0,
+ 0, 2414, 0, 0, 2421, 2423, 1960, 0, 1053, 0,
+ 0, 0, 1274, 0, 0, 1144, 1114, 0, 0, 0,
+ 0, 1085, 0, 1094, 0, 0, 2077, 0, 1146, 0,
+ 1145, 0, 0, 0, 1158, 1159, 0, 1938, 1940, 1948,
+ 0, 0, 0, 1134, 1156, 1157, 0, 0, 0, 0,
+ 1104, 0, 1090, 1160, 0, 1160, 1113, 0, 692, 0,
+ 1177, 1115, 202, 207, 217, 218, 1043, 0, 3594, 1039,
+ 0, 1246, 1242, 1243, 1238, 117, 121, 113, 0, 0,
+ 2176, 0, 300, 0, 3543, 3537, 3541, 2142, 2090, 0,
+ 3841, 0, 1711, 1667, 0, 1638, 1640, 0, 933, 0,
+ 1919, 1913, 0, 0, 0, 0, 0, 0, 1932, 1924,
+ 0, 1696, 0, 603, 0, 0, 531, 544, 550, 549,
+ 3337, 3335, 2149, 0, 2109, 2495, 2506, 495, 0, 0,
+ 3701, 1110, 2360, 0, 3404, 0, 1948, 1020, 0, 0,
+ 0, 0, 0, 0, 695, 0, 616, 971, 972, 1022,
+ 0, 702, 994, 2510, 1022, 1022, 732, 0, 720, 730,
+ 775, 2512, 491, 653, 2349, 652, 606, 0, 2409, 276,
+ 0, 247, 3742, 1389, 213, 3758, 3772, 3756, 3771, 3648,
+ 1394, 0, 1394, 0, 0, 1393, 3610, 0, 3736, 3735,
+ 3793, 3791, 159, 0, 1886, 0, 0, 0, 1844, 1842,
+ 2418, 2419, 0, 2416, 0, 0, 2422, 0, 1060, 1056,
+ 1061, 0, 1099, 0, 1118, 0, 0, 1084, 0, 1260,
+ 0, 0, 1137, 1125, 0, 1080, 0, 1127, 1128, 1172,
+ 1082, 0, 1941, 500, 0, 0, 1089, 0, 1175, 1081,
+ 1106, 1087, 1119, 1176, 209, 1069, 384, 0, 0, 0,
+ 1241, 0, 1248, 3782, 3779, 0, 0, 3542, 3540, 0,
+ 2085, 1813, 1948, 1562, 1538, 1622, 0, 1929, 0, 0,
+ 1927, 1926, 0, 1921, 1928, 602, 599, 0, 0, 539,
+ 557, 553, 0, 555, 556, 578, 2090, 0, 0, 2114,
+ 2116, 3729, 2363, 3374, 0, 1017, 0, 1018, 0, 3374,
+ 3374, 0, 0, 0, 1022, 994, 2510, 953, 0, 703,
+ 0, 707, 709, 734, 0, 729, 721, 742, 0, 0,
+ 671, 487, 270, 3648, 3648, 3604, 205, 214, 3648, 3648,
+ 3796, 3765, 3761, 3763, 3760, 3751, 3648, 3742, 2879, 0,
+ 1762, 1764, 1787, 1801, 1806, 0, 1837, 0, 0, 0,
+ 2417, 2425, 2424, 3521, 0, 1101, 615, 1014, 0, 1132,
+ 0, 0, 1175, 1086, 0, 0, 0, 1126, 1147, 1124,
+ 1274, 1939, 0, 0, 0, 1123, 1105, 1107, 1220, 0,
+ 211, 187, 3596, 0, 0, 1247, 1252, 0, 1249, 1251,
+ 0, 1361, 0, 2399, 1710, 1930, 0, 1931, 1934, 0,
+ 0, 1935, 0, 535, 537, 527, 0, 532, 0, 551,
+ 0, 2119, 2119, 0, 2119, 2119, 2119, 2119, 571, 579,
+ 581, 582, 583, 0, 2150, 2485, 2496, 982, 1948, 0,
+ 0, 0, 0, 984, 986, 0, 0, 722, 715, 711,
+ 0, 0, 957, 995, 0, 705, 0, 0, 897, 951,
+ 760, 0, 763, 0, 895, 733, 735, 893, 894, 737,
+ 0, 0, 0, 776, 0, 0, 875, 0, 878, 0,
+ 0, 731, 0, 743, 874, 881, 2511, 648, 493, 672,
+ 3787, 3743, 0, 216, 237, 3660, 0, 3742, 3742, 3799,
+ 187, 0, 1761, 0, 0, 1839, 1838, 1853, 0, 0,
+ 0, 545, 1100, 1015, 1133, 0, 1122, 1148, 545, 1138,
+ 1083, 1135, 1136, 1148, 0, 1088, 210, 0, 203, 188,
+ 219, 3597, 3598, 1244, 0, 3780, 2143, 905, 1925, 1933,
+ 1937, 1936, 533, 0, 540, 564, 554, 560, 0, 2119,
+ 0, 0, 2119, 0, 0, 0, 0, 0, 548, 580,
+ 2119, 0, 0, 2119, 0, 1003, 1005, 1151, 983, 1007,
+ 1006, 988, 1004, 1016, 1021, 1020, 3374, 190, 0, 1151,
+ 985, 1009, 992, 1151, 987, 1008, 990, 0, 0, 0,
+ 0, 713, 0, 956, 0, 961, 0, 0, 0, 0,
+ 761, 762, 898, 736, 896, 892, 886, 880, 2522, 2523,
+ 0, 0, 0, 772, 773, 876, 769, 770, 771, 0,
+ 751, 0, 0, 882, 873, 744, 0, 0, 0, 3759,
+ 237, 3648, 3665, 3648, 3664, 3784, 1766, 1763, 0, 1771,
+ 1773, 1772, 1774, 1765, 0, 0, 0, 1121, 1103, 0,
+ 1131, 0, 0, 501, 1148, 501, 0, 212, 1250, 0,
+ 2400, 539, 536, 564, 0, 562, 0, 558, 552, 559,
+ 0, 596, 590, 0, 592, 593, 591, 588, 575, 0,
+ 573, 0, 999, 1002, 1995, 1000, 144, 1153, 1152, 989,
+ 0, 982, 0, 150, 993, 153, 991, 718, 0, 0,
+ 0, 0, 954, 0, 958, 959, 960, 0, 952, 0,
+ 0, 0, 0, 887, 891, 2457, 2456, 0, 1400, 879,
+ 0, 746, 890, 745, 3741, 1389, 218, 3757, 3738, 3737,
+ 3766, 3764, 0, 1768, 0, 0, 1845, 1843, 1102, 1149,
+ 1150, 1093, 501, 1092, 545, 2144, 2156, 0, 2426, 534,
+ 561, 0, 569, 565, 567, 570, 595, 594, 0, 572,
+ 0, 589, 676, 1001, 1155, 1154, 1019, 1151, 1010, 719,
+ 0, 1018, 0, 955, 0, 0, 982, 0, 984, 986,
+ 768, 0, 877, 738, 738, 752, 3744, 3605, 201, 1767,
+ 0, 1775, 1095, 0, 0, 0, 0, 2412, 563, 0,
+ 0, 584, 577, 574, 147, 0, 0, 1018, 967, 966,
+ 0, 0, 963, 962, 704, 982, 708, 710, 1401, 0,
+ 749, 739, 741, 748, 754, 755, 753, 756, 0, 0,
+ 1770, 0, 1781, 1780, 1769, 0, 1776, 1778, 1108, 2155,
+ 2157, 0, 2420, 568, 566, 576, 585, 587, 716, 982,
+ 0, 970, 968, 969, 0, 0, 706, 1402, 740, 747,
+ 757, 759, 3745, 0, 1758, 1759, 1757, 1756, 1755, 1782,
+ 0, 0, 1777, 0, 1779, 0, 2428, 586, 712, 982,
+ 0, 0, 758, 3606, 1784, 1783, 0, 0, 2427, 0,
+ 2432, 714, 965, 964, 3601, 0, 0, 2439, 3599, 3600,
+ 0, 3607, 2430, 2431, 2429, 0, 2434, 0, 2436, 2437,
+ 0, 2090, 3602, 384, 2438, 2433, 0, 2440, 2442, 0,
+ 2401, 187, 2435, 0, 1389, 3608, 2441, 0, 1390, 2443
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -5620, -5620, -5620, -5620, 1734, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, 2323, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 1462, -5620, 122, -5620, 128, -5620, 125, -4030, -599,
- -5620, -2250, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 1619, -3408, -5553, -5620, -5620, -397, 1014, -5620,
- -5620, -74, -5620, -432, -5620, -5620, -5620, -4672, -589, -818,
- -5620, 42, 4620, 3260, -585, 3928, -4607, 257, -5620, -3349,
- -5620, -5620, -5620, -5620, -2390, -5620, -5620, -5620, -5620, 258,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -613, -5620,
- 1460, -5620, 955, -5620, -4604, -5620, -737, -5620, -5620, -5620,
- 1478, -5620, -5620, 357, 947, 2847, 2843, -5620, -5620, -5620,
- -5620, 1823, -5620, 2011, -5620, -2116, 3285, -5620, -5620, -5620,
- -5620, -5620, 2333, -2878, -5620, -5620, -5620, 1166, -5620, -850,
- -5620, 40, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -504, -5620, -2481,
- 1397, -5620, 1420, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -709, -5620, -5620, -5620, 44, -5620, -5620, -5620,
- -5620, -5620, 2945, -5620, 4574, -5620, -5620, -3841, -5620, 2752,
- -5620, 2755, 2758, -3243, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 47, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -236, -234, 0, 550, 1031, -5620, -4149, -5620,
- -5620, -100, -5620, -5620, -5620, -5620, -5620, 810, 110, 808,
- -5620, 440, 2530, -3237, -5620, -5620, -5620, -5620, -5620, -5620,
- -593, -145, -684, -5620, -4536, -5620, -5036, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -3957, -5620, -5620, -5620, -819,
- -5620, -5620, -775, -5620, -5620, -5620, -5620, -447, -5620, -5620,
- -3892, -5620, -5620, -5620, -135, -5620, 2280, 4009, -2256, 277,
- -679, -5620, -4077, 600, -4290, -4162, -5620, -3974, -5620, -333,
- -1367, -1329, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 240,
- 113, 604, -4395, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -4391, -4358, -26, -5620, -5127, -5620, 399, -5620, -4931, -5620,
- -5620, -5620, -5620, -5620, -5620, -778, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5619, -5620, -5620, -611, -623, -5620, -513,
- -3206, -5620, -3230, -4595, -501, -1396, -500, -499, -498, -5620,
- -1563, 934, 3875, -5620, -5620, -5620, -5620, -1515, -1717, -5620,
- 1445, -3832, -1393, 984, -1424, -3834, 1461, -612, -5401, -3221,
- -1385, -5620, -1349, -5620, -5620, -3645, -3817, -5620, -680, -2297,
- -3637, -522, -5620, -5620, -2097, -3720, -5620, 2996, -2410, -2421,
- 2187, 1391, -5620, -5620, 922, -5620, -1752, 924, -5620, -5620,
- -5620, 930, -5620, -772, -5620, -5620, -5620, -5620, -3812, -5620,
- -2905, -3719, -5620, 5021, 5028, -3768, -732, -727, -5620, -5620,
- -5620, -261, 1773, -5620, -3509, -514, -519, -518, -3668, -151,
- -4993, -3696, -3705, -3394, 3021, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 55,
- 69, 1273, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 681, -2629, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -4166, -3059, -5620, -5620, 331, -5437, -4259, -4264, -4105, 3679,
- -5620, -5620, -5620, -5620, 4087, -3843, -4269, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 3250, 1432, -5620, -5620, 1825, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -300, 1831,
- -5620, -5620, -5620, -5620, -5620, 2359, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -441, -5620, -5620, -5620, -5620, -5620,
- -128, 3092, -5620, -5620, -5620, -5620, -28, -5620, -5620, -5620,
- -5620, 1988, -5620, -5620, -5620, -5620, 2539, -5620, -5620, -5620,
- -5620, -5620, -5620, 1576, -5620, 2210, -5620, -2883, -5620, -5620,
- 1096, -615, -5620, -5620, -421, -5620, -5620, -5620, -5620, -5620,
- 60, -5620, -5620, -5620, 5050, -1912, 16, -460, -5620, -5620,
- 15, -5620, -5620, 4151, -485, 2039, -719, 4815, -5620, -5620,
- -5620, -5620, -2954, 1912, -5620, 4209, -5620, -5620, 4392, 1396,
- 4172, 1782, 686, 2004, -2034, -628, -3534, 999, -5620, 1641,
- 896, 11402, -5620, -1911, -1984, -5620, -5620, -78, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 2105, 2109, -5620, -5620,
- 3555, -5620, 2042, -3550, -5620, -5620, -826, -5620, -2940, -5620,
- -5620, -5620, 2044, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, 1469, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3510, -1974, -5620,
- -5620, 3652, -5620, 1564, -5620, 678, -5620, -5620, -1559, -5620,
- -3244, -5620, -5620, -1966, -682, -5620, 3639, -5620, 3672, -1282,
- -4496, -5620, -2084, -574, -5620, -345, -5620, -5620, -5620, -5620,
- -5620, -3460, -677, -675, -5620, -5620, -5620, 3270, -5620, 4265,
- -5620, -5620, -5620, -5620, -5620, -5620, 3274, -5620, -2516, -5620,
- -2936, 4266, 4270, 4272, -5620, 4276, -5620, -5620, -2135, 161,
- -5620, 488, -5620, -5620, -5620, -5620, -5620, 986, -5620, -340,
- 594, -338, -4501, -1915, 859, -5620, -5620, -2251, 3291, 3698,
- -1375, -5620, 2493, -5620, 3275, 1530, -5620, 1861, -5620, 865,
- 870, -5620, -5620, 1539, -5620, -5620, -5620, -5620, 365, -209,
- -5620, -5620, -5620, -38, 649, -2502, -5620, 373, -3678, 4267,
- -42, -5620, 1856, -2331, -3632, -1223, 735, -1331, 1867, 355,
- 4899, -224, -5620, -5620, 4239, -5620, -2240, -5620, -2205, -1947,
- -1549, -3475, -3094, -4904, -5620, -2429, 1121, -5620, -5620, -5620,
- -5620, 879, -5620, -5620, -5620, 2537, -5620, 5182, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -693, -1210,
- -5620, -5620, 2365, -1663, -552, 5201, -418, -5620, -5620, -417,
- -5620, -5620, 4996, -2416, -5620, -5620, 4406, 3072, 2335, -5620,
- 1214, -5620, -5620, -5620, -5620, 1033, -5620, -5620, 95, -1053,
- 709, 1858, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 650,
- -5620, 1050, -2242, -5620, -5620, -5620, -5620, -416, -5620, -5620,
- -5620, -5620, 1056, -5620, -560, -5620, -409, -5620, -5620, -5620,
- 4830, -5620, -5620, -5620, -5620, -5620, -5620, -4352, -5620, -5620,
- 3139, -1776, 4832, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- 2703, -5620, -5620, -5620, -5620, -5620, -5620, 3528, 5025, 5031,
- -2003, -5620, -1073, 2710, 2050, -1125, -5620, -5620, -5620, 4283,
- 5036, -5620, -5620, -252, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 2660, 81, -5620, -5620, -5620, -5620,
- -5620, 388, -5620, -5620, -5620, -5620, 3428, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 3845, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, 1243, -538, -5620, 577, -582, -5620, 251, -5620, -5620,
- -5620, -5620, -5620, -654, -5620, -5620, -660, -5620, -1429, 4742,
- -1382, -5620, -2091, -3804, -5620, 1, -5620, -5620, -5620, 2714,
- -5620, -5620, -5620, -5620, 2379, -2964, -5620, 415, -5620, -5620,
- -3054, -965, -2030, -4307, 9922, -5620, -5620, 50, 4942, 3289,
- -5620, -5620, 165, -488, -1274, -5620, -5620, 2331, -3, 2430,
- -565, -755, -779, -1110, -5620, 4500, -5620, -5620, -5620, 21,
- -637, -627, 213, 89, 59, 29, 6826, 9152, 23, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, 2097,
- 2098, -5620, 5058, -5620, 3083, 2807, -5620, -5620, -5620, 2100,
- -5620, -5620, -5620, 5065, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, 2106, 2116, 2118, -5620, -5620, 1581,
- -2754, -5620, -5620, -2295, 150, -5620, 3115, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, 3432, -583, 4546, -581,
- 3644, 5074, 4579, -5620, 3900, -5620, 3901, -5620, 1388, -5620,
- -1263, 2175, -1740, -3416, -5620, -5620, 2566, 951, -5620, -5620,
- -2951, -3233, -5620, 2022, 849, -5620, -5620, 212, -5620, -5620,
- -5620, 1389, 403, 5051, 4456, -5620, -5620, -5620, -5620, 5272,
- 2211, -5620, 1010, 5297, 5298, 5299, -27, -5620, -3663, -5620,
- -4504, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -4939, -5620, -5620, -5620, 2498, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -73, 4821, -5620, -5620, -5620,
- -5620, 1308, -3034, -5620, -683, -5620, -5620, -5620, -5620, -5620,
- 3127, -5620, 1778, -5620, -5620, -178, -2304, -5620, -2571, -5620,
- -4848, 27, -626, 4833, -5620, -5620, -5620, -5620, -5620, 4808,
- -5620, -5620, 1123, -5620, -4146, -4142, -173, -4138, -401, -4553,
- -5620, -3789, -5620, -5620, -5620, 1513, -5620, -5620, 2043, -5620,
- -5620, -5620, -5620, 366, 369, 379, -5620, 374, -5620, -4699,
- -5620, -5620, -5620, -5620, 370, -5620, -5620, -4197, -5620, -5620,
- -4280, -5620, 343, -5620, -5620, -5620, -5620, -5620, -5620, -5620,
- -5620, -5620, -5620, -5620, -5620, -5620, -2616, -5620, -5620, -5620,
- 4011, -5620, 4945, -5620, -960, 4834, -5620, -5620, -5620, -5620,
- -5620, -5620, 48, -5620, -5620, -5620, -2513, -5620
+ -5700, -5700, -5700, -5700, 1841, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, 2436, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 1567, -5700, 199, -5700, 204, -5700, 205, -4051, -641,
+ -5700, -2245, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 1725, -3491, -5460, -5700, -5700, -326, 1119, -5700,
+ -5700, 16, -5700, -349, -5700, -5700, -5700, -4681, -505, -736,
+ -5700, 13, 4727, -1343, 4728, 4731, -5700, -602, 4039, -4604,
+ 457, -5700, -3421, -5700, -5700, -5700, -5700, -2396, -5700, -5700,
+ -5700, -5700, 336, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -614, -5700, 1568, -5700, 1063, -5700, -3489, -5700, -726,
+ -5700, -5700, -5700, 1586, -5700, -5700, 456, 1057, 2961, 2885,
+ -5700, -5700, -5700, -5700, 2826, -5700, 2217, -5700, -2108, 3394,
+ -5700, -5700, -5700, -5700, -5700, 2452, -2879, -5700, -5700, -5700,
+ 1280, -5700, -848, -5700, 38, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -454, -5700, -2475, 1507, -5700, 1533, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -1323, -5700, -5700, -5700, 40,
+ -5700, -5700, -5700, -5700, -5700, 3061, -5700, 4685, -5700, -5700,
+ -3857, -5700, 2872, -5700, 2869, 2871, -3247, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 41, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -155, -149, 71, 658, 1148,
+ -5700, -4182, -5700, -5700, -15, -5700, -5700, -5700, -5700, -5700,
+ 928, 208, 926, -5700, 544, 2667, -3233, -5700, -5700, -5700,
+ -5700, -5700, -5700, -491, -72, -604, -5700, -5490, -5700, -5075,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -4055, -5700,
+ -5700, -5700, -739, -5700, -5700, -699, -5700, -5700, -5700, -5700,
+ -367, -5700, -5700, -5699, -5700, -5700, -5700, -60, -5700, 2387,
+ 4113, -2249, 357, -593, -5700, -4078, 701, -4312, -4189, -5700,
+ -3908, -5700, -5700, -5700, -260, -1372, -1336, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 316, 180, 700, -4588, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -4506, -4374, 50, -5700, -5185,
+ -5700, 490, -5700, -4983, -5700, -5700, -5700, -5700, -5700, -5700,
+ -708, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -3668, -5700,
+ -5700, -535, -543, -5700, -426, -3194, -5700, -3240, -4626, -419,
+ -1379, -416, -414, -413, -5700, -1570, 1045, 3986, -5700, -5700,
+ -5700, -5700, -1527, -1699, -5700, 1109, -3837, -1423, 1093, -1358,
+ -3848, 1571, -527, -4451, -3230, -1312, -5700, -1353, -5700, -5700,
+ -3479, -3645, -5700, -682, -2311, -3635, -438, -5700, -5700, -2107,
+ -3727, -5700, 3107, -2417, -2383, 2291, 1499, -5700, -5700, 1030,
+ -5700, -1847, 1028, -5700, -5700, -5700, 1037, -5700, -697, -5700,
+ -5700, -5700, -5700, -3815, -5700, -2934, -4540, -5700, 5126, 5127,
+ -3926, -667, -666, -5700, -5700, -5700, -203, 1868, -5700, -4489,
+ -453, -467, -462, -3677, -106, -5169, -5643, -5208, -3612, 3108,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 100, 103, 1351, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 751, -2857, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5007, -2809, -5700, -5700, 371,
+ -4041, -3947, -4254, -4251, -4053, 3749, -5700, -5700, -5700, -5700,
+ 4152, -3847, -5164, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 3316, 1531, -5700, -5700, 1896, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -257, 1903, -5700, -5700, -5700, -5700,
+ -5700, 2428, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -400, -5700, -5700, -5700, -5700, -5700, -93, 3162, -5700, -5700,
+ -5700, -5700, -28, -5700, -5700, -5700, -5700, 2056, -5700, -5700,
+ -5700, -5700, 2611, -5700, -5700, -5700, -5700, -5700, -5700, 1646,
+ -5700, 2275, -5700, -2868, -5700, -5700, 1160, -620, -5700, -5700,
+ -430, -5700, -5700, -5700, -5700, -5700, 44, -5700, -5700, -5700,
+ 5114, -1910, 29, -465, -5700, -5700, 8, -5700, -5700, 4210,
+ -482, 2102, -731, 4884, -5700, -5700, -5700, -5700, -2931, 1973,
+ -5700, 4268, -5700, -5700, 4453, 1689, 4227, 1844, 733, 2067,
+ -2032, -622, -3086, -2808, -5700, -31, -3934, 1061, -5700, 1819,
+ 642, 10647, -5700, -1938, -1989, -5700, -5700, -79, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, 2172, 2176, -5700, -5700,
+ 3618, -5700, 2108, -5349, -5700, -5700, -878, -5700, -2933, -5700,
+ -5700, -5700, 2111, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, 1532, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3568, -1977, -5700,
+ -5700, 3716, -5700, 1624, -5700, 727, -5700, -5700, -1561, -5700,
+ -3246, -5700, -5700, -1961, -687, -5700, 3717, -5700, 3728, -1262,
+ -3904, -5700, -2096, -553, -5700, -322, -5700, -5700, -5700, -5700,
+ -5700, -3377, -649, -647, -5700, -5700, -5700, 3326, -5700, 4310,
+ -5700, -5700, -5700, -5700, -5700, -5700, 3332, -5700, -2518, -5700,
+ -2932, 4315, 4316, 4320, -5700, 4321, -5700, -5700, -2065, 198,
+ -5700, 518, -5700, -5700, -5700, -5700, -5700, 1046, -5700, -303,
+ 647, -302, -4550, -1923, 967, -5700, -5700, -2246, 3350, 3752,
+ -1365, -5700, 2562, -5700, 3328, 1584, -5700, 1919, -5700, 909,
+ 911, -5700, -5700, 1592, -5700, -5700, -5700, -5700, 381, -185,
+ -5700, -5700, -5700, -19, 690, -2503, -5700, 390, -3686, 4322,
+ -238, -5700, 1912, -2322, -3647, -1233, 778, -1339, 1923, 374,
+ 4951, -539, -5700, -5700, 4291, -5700, -3221, -5700, 2285, -1957,
+ -1026, -3455, -3032, -4939, -5700, -2203, 1176, -5700, -5700, -5700,
+ -5700, 929, -5700, -5700, -5700, 2599, -5700, 5236, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -743, -1204,
+ -5700, 3933, 3181, -992, -568, 5263, -427, -5700, -5700, -412,
+ -5700, -5700, 5051, -2393, -5700, -5700, 4462, 3139, 2380, -5700,
+ 1276, -5700, -5700, -5700, -5700, 1097, -5700, -5700, 118, -1150,
+ -380, 1913, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 702,
+ -5700, 1112, -2232, -5700, -5700, -5700, -5700, -405, -5700, -5700,
+ -5700, -5700, 1115, -5700, -526, -5700, -404, -5700, -5700, -5700,
+ -5700, 4898, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -4389,
+ -5700, -3048, 4887, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ 2771, -5700, -5700, -5700, -5700, -5700, -5700, 3584, 5083, 5085,
+ -2016, -5700, -1086, 2778, 2112, -1121, -5700, -5700, -5700, 4342,
+ 5093, -5700, -5700, -276, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 2731, 109, -5700, -5700, -5700, -5700,
+ -5700, 417, -5700, -5700, -5700, -5700, 3494, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3905, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, 1301, -504, -5700, 616, -537, -5700, 285, -5700, -5700,
+ -5700, -5700, -5700, -613, -5700, -5700, -617, -5700, -1440, 4813,
+ -1362, -5700, -2099, -3834, -5700, 1, -5700, -5700, -5700, 2791,
+ -5700, -5700, -5700, -5700, 2458, -2962, -5700, 458, -5700, -5700,
+ -3104, -949, -2030, -4453, 5658, -5700, -5700, 30, 3192, 1521,
+ -5700, -5700, 11, 825, -1277, -5700, -5700, 2407, -3, 1997,
+ -489, -786, -779, -1033, -5700, 4473, -5700, -5700, -5700, 15,
+ -634, -570, 192, 69, 61, 21, 7163, 9045, 24, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 2171,
+ 2174, -5700, 5132, -5700, 3165, 2889, -5700, -5700, -5700, 2177,
+ -5700, -5700, -5700, 5136, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 2185, 2191, 2193, -5700, -5700, 1655,
+ -2816, -5700, -5700, -5700, -2298, 200, -5700, 3206, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, 3504, -600, 4623,
+ -595, 3718, 5151, 4660, -5700, 3987, -5700, 3991, -5700, 1466,
+ -5700, -954, 2260, -1746, -3425, -5700, -5700, 2645, 1032, -5700,
+ -5700, -2944, -3487, -5700, 2101, 931, -5700, -5700, 258, -5700,
+ -5700, -5700, 1476, 119, 5131, 4545, -5700, -5700, -5700, -5700,
+ 5357, 2270, -5700, 1089, 5382, 5383, 5384, -163, -5700, -3687,
+ -5700, -4576, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, 1583, -5700, -5700, 2763, -5700, -5700,
+ -5700, 2286, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700,
+ -5700, -73, 4911, -5700, -5700, -5700, -5700, 1396, -3035, -5700,
+ -4153, -4608, 723, -5700, -5700, -5700, -679, -5700, -5700, -5700,
+ -5700, -5700, 3224, -5700, 1875, -5700, -5700, -2204, -5700, -2569,
+ -5700, 31, -631, 4913, -5700, -5700, -5700, -5700, -5700, 4903,
+ -5700, -5700, 1219, -5700, -4141, -5700, 51, -3205, -243, -4126,
+ -5700, -3657, -5700, -5700, -5700, -5700, -5700, -5700, -5700, 740,
+ 753, -5700, 752, -5700, -4731, -5700, -5700, -5700, -5700, -5700,
+ -5700, -4242, -5700, -5700, -4256, -5700, 735, -5700, -5700, -5700,
+ -5700, -5700, -5700, -5700, -5700, -5700, -5700, -5700, -2620, -5700,
+ -5700, -5700, 4086, -5700, 5030, -5700, -967, 4915, -5700, -5700,
+ -5700, -5700, -5700, -5700, 46, -5700, -5700, -5700, -2537, -5700
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 472, 759, 2333, 473, 474, 475, 476, 477, 2299,
- 478, 1309, 3053, 1311, 2264, 3056, 479, 728, 480, 2473,
- 3250, 3251, 4902, 4903, 4896, 4897, 4899, 4900, 3252, 842,
- 843, 3095, 3096, 481, 3113, 4282, 3763, 2335, 5063, 3107,
- 5352, 2340, 5066, 2341, 5067, 3105, 4296, 4785, 2347, 2348,
- 768, 4283, 3851, 3852, 6010, 1370, 3759, 3860, 3861, 3120,
- 4773, 4882, 5727, 4886, 5868, 6008, 5821, 3879, 5245, 5728,
- 5729, 661, 1381, 2606, 5814, 2438, 5671, 5454, 5455, 3199,
- 482, 835, 2461, 3886, 1488, 2462, 2463, 5136, 5137, 3918,
- 3919, 5451, 5452, 4443, 4768, 5129, 4776, 3038, 967, 1783,
- 3296, 3297, 2537, 856, 857, 2545, 858, 3321, 3259, 3988,
- 3989, 4472, 859, 3960, 3961, 3962, 3325, 1179, 3963, 483,
- 484, 682, 690, 683, 1176, 2911, 1177, 485, 486, 726,
- 2289, 2290, 2291, 2292, 3725, 3073, 3719, 3720, 4701, 860,
- 861, 968, 662, 969, 970, 971, 972, 2661, 973, 3403,
- 4010, 974, 3398, 4008, 975, 976, 977, 946, 838, 3353,
- 3406, 4011, 3354, 3990, 3407, 2656, 978, 979, 980, 981,
- 982, 1928, 947, 2626, 3999, 4486, 983, 641, 839, 1490,
- 2467, 840, 2468, 3889, 841, 2465, 1493, 4017, 2594, 900,
- 1847, 984, 1185, 4018, 985, 2664, 2666, 2663, 4016, 4934,
- 2665, 986, 672, 700, 660, 1845, 688, 5133, 5461, 4749,
- 5120, 4750, 5418, 4669, 5115, 5116, 5117, 5525, 3704, 490,
- 675, 1161, 2118, 2903, 4162, 3580, 3582, 2904, 4161, 4609,
- 4610, 4611, 3578, 3579, 5600, 3584, 4159, 5762, 6139, 5890,
- 5891, 4151, 5895, 4618, 5009, 5010, 5011, 5321, 5602, 5768,
- 6028, 5896, 6146, 6026, 6142, 6027, 6144, 6278, 6227, 6228,
- 6038, 6157, 6158, 6232, 6279, 5906, 5907, 5908, 6324, 6325,
- 5909, 4155, 4156, 5597, 5005, 5651, 3750, 3751, 2433, 5499,
- 1320, 491, 4751, 4866, 4752, 4753, 5388, 6046, 5966, 4755,
- 4756, 4757, 6235, 2193, 5414, 5400, 4783, 5542, 4758, 5071,
- 5072, 5073, 5074, 5932, 6077, 5934, 5935, 6070, 6179, 6069,
- 5075, 5076, 5360, 5798, 5368, 5205, 5077, 5078, 5079, 5375,
- 5642, 5800, 5796, 5943, 5944, 6298, 6299, 5959, 6259, 5960,
- 6305, 6338, 6339, 5945, 492, 674, 2067, 6093, 6094, 6095,
- 1785, 5643, 1786, 1787, 1788, 2509, 1789, 1790, 1791, 1792,
- 1793, 1794, 1795, 1796, 1797, 1798, 3312, 2496, 2497, 3272,
- 3273, 2487, 2488, 4512, 2489, 4513, 2555, 5961, 5962, 3265,
- 2493, 6192, 2494, 3286, 6105, 5946, 5963, 5948, 2513, 2143,
- 2144, 3798, 2158, 2159, 3629, 3630, 2436, 2514, 3280, 2515,
- 3315, 4577, 5304, 4583, 4584, 4585, 4113, 4114, 4115, 4116,
- 4117, 3538, 5949, 5635, 5930, 6072, 6075, 6186, 6290, 5369,
- 5080, 5373, 1278, 5081, 5082, 6047, 6059, 6063, 6048, 6064,
- 6060, 5792, 3754, 6049, 6050, 6051, 6066, 6062, 4273, 6052,
- 5619, 5919, 5620, 5356, 3288, 493, 630, 4393, 1457, 3185,
- 1459, 1469, 3883, 3211, 3210, 1472, 1471, 3203, 4363, 4837,
- 5182, 4392, 3880, 4397, 5551, 804, 4868, 5858, 5702, 5866,
- 5704, 4869, 5049, 4870, 5843, 5992, 4871, 5723, 5864, 6004,
- 5050, 5051, 4872, 4873, 4874, 6164, 6165, 6166, 5191, 2237,
- 818, 819, 1477, 1478, 1479, 3348, 5546, 5217, 494, 3745,
- 3089, 495, 1337, 1338, 1339, 2311, 2312, 3092, 3093, 4263,
- 4709, 496, 1304, 3049, 2301, 3081, 497, 1323, 3736, 3737,
- 3738, 4257, 498, 1485, 2457, 2458, 3215, 4404, 4894, 5250,
- 5559, 5735, 5555, 5875, 5876, 499, 846, 1496, 500, 643,
- 2482, 2483, 2484, 3254, 501, 1939, 638, 502, 2127, 2124,
- 2917, 2918, 503, 1303, 2251, 2252, 2253, 2254, 3700, 504,
- 2634, 3371, 3372, 3373, 3374, 3044, 4232, 3045, 3046, 3709,
- 4492, 505, 782, 1449, 506, 781, 1448, 507, 508, 699,
- 754, 692, 2134, 510, 511, 4670, 2707, 513, 788, 786,
- 1121, 515, 1441, 1437, 516, 2708, 1122, 778, 779, 1389,
- 1205, 3783, 3784, 2573, 2574, 3153, 3140, 1206, 1207, 1418,
- 2410, 3170, 2929, 2930, 2233, 2931, 4174, 4628, 6256, 1968,
- 1857, 1307, 1124, 1125, 1126, 2078, 2079, 2094, 1127, 2088,
- 2854, 4556, 4976, 4977, 4978, 4979, 2793, 2794, 2898, 1128,
- 2783, 2784, 2785, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
- 2776, 2777, 2778, 1136, 1137, 1138, 2893, 4538, 4539, 4958,
- 3573, 3574, 3575, 1139, 3435, 4522, 3446, 3447, 2736, 1140,
- 1141, 1142, 1143, 1144, 4137, 1145, 4599, 4329, 1146, 1940,
- 2671, 2734, 4946, 4527, 5277, 4948, 4949, 5281, 2676, 3423,
- 4046, 4047, 4048, 2797, 2798, 1988, 1989, 1957, 1958, 1390,
- 5145, 6348, 1391, 5473, 5827, 5828, 5984, 6211, 6123, 6124,
- 6313, 6314, 6315, 6316, 1392, 3126, 4786, 1393, 1394, 1395,
- 4313, 4314, 5146, 4790, 5148, 4794, 2371, 2372, 2375, 2376,
- 1396, 1397, 1398, 1399, 2359, 1400, 1401, 1402, 3145, 5681,
- 5154, 5155, 5837, 5836, 5156, 4799, 4800, 4317, 4318, 4680,
- 4681, 4682, 3794, 2730, 2731, 2805, 2639, 2640, 2641, 2677,
- 1410, 2386, 3161, 3804, 2388, 3802, 4324, 3806, 4330, 4331,
- 2885, 3563, 4133, 3565, 4997, 5311, 5312, 5592, 5750, 5751,
- 5756, 4877, 5522, 5523, 3336, 1419, 3178, 3821, 4327, 2195,
- 2196, 1421, 2392, 3165, 3810, 2197, 2399, 2400, 3815, 3979,
- 1422, 1423, 1435, 1440, 1426, 1424, 3326, 4833, 3327, 4118,
- 4101, 5055, 5427, 2700, 2701, 5381, 4434, 1427, 3181, 4341,
- 4342, 4343, 1406, 1407, 2381, 2382, 2383, 1428, 1408, 3154,
- 4320, 517, 721, 518, 2590, 887, 1842, 2589, 3716, 1498,
- 4226, 2568, 2569, 1832, 812, 659, 519, 663, 4487, 520,
- 703, 4225, 948, 3200, 1885, 2245, 1886, 3037, 3694, 3695,
- 4671, 5043, 4672, 5036, 5037, 4673, 1291, 5336, 5337, 1455,
- 4359, 4360, 4354, 3031, 3688, 1292, 2238, 4219, 3028, 4220,
- 3029, 3058, 4221, 5270, 5742, 6137, 3025, 521, 697, 4658,
- 5769, 4213, 4214, 6219, 6220, 1289, 522, 646, 2567, 883,
- 1821, 1824, 1825, 2577, 4918, 3332, 5260, 4467, 4917, 1826,
- 1827, 3334, 884, 885, 523, 742, 3746, 1343, 2217, 2218,
- 2219, 3012, 524, 694, 1279, 4208, 4655, 2998, 678, 5911,
- 2200, 1282, 2201, 2994, 3670, 2181, 525, 1446, 1444, 833,
- 526, 527, 794, 639, 2415, 528, 529, 1312, 2282, 3070,
- 4239, 4240, 4685, 2283, 2284, 3717, 530, 707, 1297, 3713,
- 5056, 5057, 5347, 531, 733, 1327, 1328, 2305, 2303, 3741,
- 3084, 532, 2905, 533, 664, 951, 1889, 1890, 2632, 534,
- 736, 1332, 535, 536, 953, 4493, 6017, 6222, 668, 2636,
- 1894, 5419, 4802, 5161, 5162, 5164, 5489, 5490, 6275, 6369,
- 6383, 6376, 6386, 6387, 6390, 6396, 6397, 1147, 1350, 1351,
- 1148, 6098, 1149, 1150, 1151, 2709, 1295, 702, 2241, 2242,
- 5331, 5607, 3035, 3691, 2623, 2624, 2243, 5038, 5039, 3602,
- 3803, 1152, 4215, 5357, 1499, 2570, 1315, 609, 1153, 610,
- 1154, 1155, 814, 1352, 2378, 3381, 1228, 3615, 1156, 4019,
- 1465, 2125, 2446, 2447, 3382, 612, 3616, 1229, 1800, 613,
- 614, 615, 616, 617, 618, 619, 544, 545, 620, 1807,
- 547, 693, 1237, 2155, 2163, 2948, 2153, 2960, 3650, 2962,
- 2963, 3655, 2964, 1285, 2935, 2154, 3639, 4641, 4640, 2961,
- 4200, 5026, 5025, 2965, 2956, 4196, 4182, 3625, 4635, 5325,
- 5324, 2943, 2942, 2941, 2951, 2952, 2953, 2954, 4193, 3635,
- 2426, 548, 954, 2645, 671, 1896, 1897, 3395, 549, 696,
- 550, 727, 1317, 3077, 3729, 3730, 4252, 4703, 4253, 551,
- 1190, 1191, 552, 937, 3757, 3357, 2584, 1468, 939, 2585,
- 2607, 941, 1849, 942, 943, 944, 945, 4382, 3872, 3873,
- 3362, 2587, 2448, 2925, 3865, 4823, 2449, 4376, 4377, 4824,
- 3208, 5568, 4389, 3876, 5267, 4477, 5569, 5570, 553, 708,
- 554, 5456, 720, 1306, 2261, 555, 556, 557, 558, 787,
- 1431, 1208, 631, 632, 633, 634, 822, 823, 3882, 4399,
- 4889, 4890, 5553, 6379, 6380, 3119, 4294, 5978, 6308, 6373,
- 6392, 5466, 5467, 559, 1357, 1353, 753, 2331, 2325, 2327,
- 3103, 3749, 560, 561, 562, 4769, 563, 1925, 2660, 4015,
- 4933, 3366, 2469, 1808, 621, 1908, 870, 4267, 902, 3298,
- 1294, 3032, 2592, 987, 988, 5664, 3303, 4445, 2470, 2471,
- 5445, 871, 872, 565, 566, 1450, 3183, 3184, 989, 990,
- 4231, 4676, 4677, 5046, 4777, 4778, 4771, 5816, 6262, 4764,
- 2248, 5818, 5819, 6112, 6307, 4290, 4291, 4292, 3765, 3766,
- 5811, 5439, 5440, 5441, 5660, 5448, 5975, 5446, 5974, 5442,
- 5808, 6107, 5806, 6106, 5443, 5126, 5127, 5444, 873, 3921,
- 3922, 3923, 5672, 5823, 3768, 4293, 5457, 567, 568, 3117,
- 4299, 4297, 4286, 4761, 5656, 5973, 874, 875, 1816, 876,
- 877, 2562, 878, 2485, 991, 992, 569, 993, 2668, 2667,
- 4022, 713, 994, 1301, 645, 1815, 2249, 3697
+ 0, 473, 764, 2337, 474, 475, 476, 477, 478, 2303,
+ 479, 1313, 3049, 1315, 2268, 3052, 480, 733, 481, 2474,
+ 3253, 3254, 4912, 4913, 4906, 4907, 4909, 4910, 3255, 847,
+ 848, 3091, 3092, 482, 3109, 4285, 3764, 2339, 5079, 3103,
+ 5390, 2344, 5082, 2345, 5083, 3101, 4298, 4795, 2349, 2350,
+ 773, 4286, 3855, 3856, 6040, 1374, 3760, 3864, 3865, 3114,
+ 4776, 4892, 5764, 4896, 5900, 6038, 5846, 3883, 5276, 5765,
+ 5766, 666, 1386, 661, 662, 663, 483, 5708, 2438, 5501,
+ 5472, 5473, 3201, 484, 840, 2461, 3890, 1493, 2462, 2463,
+ 5166, 5167, 3922, 3923, 5469, 5470, 4445, 4771, 5138, 4785,
+ 3034, 971, 1788, 3299, 3300, 2538, 861, 862, 2546, 863,
+ 3324, 3262, 3991, 3992, 4474, 864, 3964, 3965, 3966, 3328,
+ 1183, 3967, 485, 486, 687, 695, 688, 1180, 2907, 1181,
+ 487, 488, 731, 2293, 2294, 2295, 2296, 3726, 3069, 3720,
+ 3721, 4704, 865, 866, 972, 667, 973, 974, 975, 976,
+ 2657, 977, 3404, 4013, 978, 3399, 4011, 979, 980, 981,
+ 950, 843, 3355, 3407, 4014, 3356, 3993, 3408, 2652, 982,
+ 983, 984, 985, 986, 1932, 951, 2622, 4002, 4488, 987,
+ 642, 844, 1495, 2467, 845, 2468, 3893, 846, 2465, 1498,
+ 4020, 2592, 904, 1850, 988, 1189, 4021, 989, 2660, 2662,
+ 2659, 4019, 4947, 2661, 990, 677, 705, 665, 1848, 693,
+ 5142, 5479, 4756, 5137, 4757, 5456, 4672, 5131, 5132, 5133,
+ 5560, 3705, 492, 680, 1165, 2122, 2899, 4165, 3581, 3583,
+ 2900, 4164, 4611, 4612, 4613, 3579, 3580, 5636, 3585, 4162,
+ 5799, 6171, 5922, 5923, 4154, 5927, 4620, 5022, 5023, 5024,
+ 5357, 5638, 5805, 6058, 5928, 6178, 6056, 6174, 6057, 6176,
+ 6310, 6263, 6264, 6068, 6189, 6190, 6268, 6311, 5938, 5939,
+ 5940, 6355, 6356, 5941, 4158, 4159, 5633, 5018, 5687, 3751,
+ 3752, 2433, 5534, 1324, 493, 4758, 4876, 4759, 4760, 5426,
+ 6076, 4762, 4763, 5998, 4764, 4765, 4766, 6271, 2197, 5452,
+ 5438, 4793, 5577, 4767, 5087, 5088, 5089, 5090, 5964, 6107,
+ 5966, 5967, 6100, 6211, 6099, 5091, 5092, 5398, 5835, 5406,
+ 5236, 5093, 5094, 5095, 5413, 5678, 5837, 5833, 5975, 5976,
+ 6330, 6331, 5991, 6295, 5992, 6337, 6369, 6370, 5977, 494,
+ 679, 2071, 6123, 6124, 6125, 1790, 5679, 1791, 1792, 1793,
+ 2510, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802,
+ 1803, 3315, 2497, 2498, 3275, 3276, 2488, 2489, 4514, 2490,
+ 4515, 2556, 5993, 5994, 3268, 2494, 6224, 2495, 3289, 6135,
+ 5978, 5995, 5980, 2514, 2147, 2148, 3799, 2162, 2163, 3630,
+ 3631, 2436, 2515, 3283, 2516, 3318, 4579, 5340, 4585, 4586,
+ 4587, 4116, 4117, 4118, 4119, 4120, 3539, 5981, 5671, 5962,
+ 6102, 6105, 6218, 6322, 5407, 5096, 5411, 1282, 5097, 5098,
+ 6077, 6089, 6093, 6078, 6094, 6090, 5829, 3755, 6079, 6080,
+ 6081, 6096, 6092, 4276, 6082, 5655, 5951, 5656, 5394, 3291,
+ 495, 631, 4395, 1462, 3187, 1464, 1474, 3887, 3213, 3212,
+ 1477, 1476, 3205, 4365, 4847, 5213, 4394, 3884, 4399, 5586,
+ 809, 4878, 5890, 5739, 5898, 5741, 4879, 5063, 4880, 5875,
+ 6022, 4881, 5760, 5896, 6034, 5064, 5065, 4882, 4883, 4884,
+ 6163, 6196, 6197, 6198, 5222, 2241, 823, 824, 1482, 1483,
+ 1484, 3349, 5581, 5248, 496, 3746, 3085, 497, 1341, 1342,
+ 1343, 2315, 2316, 3088, 3089, 4266, 4714, 498, 1308, 3045,
+ 2305, 3077, 499, 1327, 3737, 3738, 3739, 4260, 500, 1490,
+ 2457, 2458, 3217, 4406, 4904, 5281, 5594, 5772, 5590, 5907,
+ 5908, 501, 851, 1501, 502, 644, 2483, 2484, 2485, 3257,
+ 503, 1943, 639, 504, 2131, 2128, 2913, 2914, 505, 1307,
+ 2255, 2256, 2257, 2258, 3701, 506, 2630, 3372, 3373, 3374,
+ 3375, 3040, 4235, 3041, 3042, 3710, 4494, 507, 787, 1454,
+ 508, 786, 1453, 509, 510, 704, 759, 697, 2138, 512,
+ 513, 4673, 2703, 515, 793, 791, 1125, 517, 1446, 1442,
+ 518, 2704, 1126, 783, 784, 1394, 1209, 3784, 3785, 2574,
+ 2575, 3149, 3136, 1210, 1211, 1423, 2414, 3166, 2925, 2926,
+ 2237, 2927, 3225, 2425, 1496, 5699, 5481, 4630, 6292, 1972,
+ 1860, 1311, 1128, 1129, 1130, 2082, 2083, 2098, 1131, 2092,
+ 2850, 4558, 4989, 4990, 4991, 4992, 2789, 2790, 2894, 1132,
+ 2779, 2780, 2781, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
+ 2772, 2773, 2774, 1140, 1141, 1142, 2889, 4540, 4541, 4971,
+ 3574, 3575, 3576, 1143, 3436, 4524, 3447, 3448, 2732, 1144,
+ 1145, 1146, 1147, 1148, 4140, 1149, 4601, 4331, 1150, 1944,
+ 2667, 2730, 4959, 4529, 5313, 4961, 4962, 5317, 2672, 3424,
+ 4049, 4050, 4051, 2793, 2794, 1992, 1993, 1961, 1962, 1395,
+ 5176, 6379, 1396, 5508, 5859, 5860, 6014, 6242, 6153, 6154,
+ 6344, 6345, 6346, 6347, 1397, 3122, 4796, 1398, 1399, 1400,
+ 4315, 4316, 5177, 4800, 5179, 4804, 2375, 2376, 2379, 2380,
+ 1401, 1402, 1403, 1404, 2363, 1405, 1406, 1407, 3141, 5718,
+ 5185, 5186, 5869, 5868, 5187, 4809, 4810, 4319, 4320, 4683,
+ 4684, 4685, 3795, 2726, 2727, 2801, 2635, 2636, 2637, 2673,
+ 1415, 2390, 3157, 3805, 2392, 3803, 4326, 3807, 4332, 4333,
+ 2881, 3564, 4136, 3566, 5010, 5347, 5348, 5628, 5787, 5788,
+ 5793, 4887, 5557, 5558, 3340, 1424, 3174, 3822, 4329, 2199,
+ 2200, 1426, 2396, 3161, 3811, 2201, 2403, 2404, 3816, 3983,
+ 1427, 1428, 1440, 1445, 1431, 1429, 3329, 4843, 3330, 4121,
+ 4104, 5069, 5464, 2696, 2697, 5419, 4436, 1432, 3177, 4343,
+ 4344, 4345, 1411, 1412, 2385, 2386, 2387, 1433, 1413, 3150,
+ 4322, 519, 726, 520, 2588, 892, 1844, 2587, 3717, 1503,
+ 4229, 1828, 1829, 1838, 817, 664, 521, 668, 4489, 522,
+ 708, 4228, 952, 3202, 1889, 2249, 1890, 3033, 3695, 3696,
+ 4674, 5057, 4675, 5050, 5051, 4676, 1295, 5372, 5373, 1460,
+ 4361, 4362, 4356, 3027, 3689, 1296, 2242, 4222, 3024, 4223,
+ 3025, 3054, 4224, 5305, 5779, 6169, 3021, 523, 702, 4661,
+ 5806, 4216, 4217, 6255, 6256, 1293, 524, 647, 2568, 888,
+ 3334, 1826, 1831, 1832, 4930, 2572, 4925, 3335, 5291, 4470,
+ 4929, 2578, 889, 890, 525, 747, 3747, 1347, 2221, 2222,
+ 2223, 3008, 526, 699, 1283, 4211, 4658, 2994, 683, 5943,
+ 2204, 1286, 2205, 2990, 3671, 2185, 527, 1451, 1449, 838,
+ 528, 529, 799, 640, 2419, 530, 531, 1316, 2286, 3066,
+ 4242, 4243, 4688, 2287, 2288, 3718, 532, 712, 1301, 3714,
+ 5070, 5071, 5383, 533, 738, 1331, 1332, 2309, 2307, 3742,
+ 3080, 534, 2901, 535, 669, 955, 1893, 1894, 2628, 536,
+ 741, 1336, 537, 538, 957, 4495, 6047, 6258, 673, 2632,
+ 1898, 5457, 4812, 5192, 5193, 5195, 5524, 5525, 6307, 6400,
+ 6414, 6407, 6417, 6418, 6421, 6427, 6428, 1151, 1354, 1355,
+ 1152, 6128, 1153, 1154, 1155, 2705, 1299, 707, 2245, 2246,
+ 5367, 5643, 3031, 3692, 2619, 2620, 2247, 5052, 5053, 3603,
+ 3804, 1156, 4218, 5395, 1504, 1833, 1319, 610, 1157, 611,
+ 1158, 1159, 819, 1356, 2382, 3382, 1232, 3616, 1160, 4022,
+ 1470, 2129, 2446, 2447, 3383, 613, 3617, 1233, 1805, 614,
+ 615, 616, 617, 618, 619, 620, 546, 547, 621, 1812,
+ 549, 698, 1241, 2159, 2167, 2944, 2157, 2956, 3651, 2958,
+ 2959, 3656, 2960, 1289, 2931, 2158, 3640, 4644, 4643, 2957,
+ 4203, 5040, 5039, 2961, 2952, 4199, 4185, 3626, 4637, 5361,
+ 5360, 2939, 2938, 2937, 2947, 2948, 2949, 2950, 4196, 3636,
+ 2426, 3184, 550, 958, 2641, 676, 1900, 1901, 3396, 551,
+ 701, 552, 732, 1321, 3073, 3730, 3731, 4255, 4706, 4256,
+ 553, 1194, 1195, 554, 941, 3758, 3359, 2581, 1473, 943,
+ 2582, 2603, 945, 1852, 946, 947, 948, 949, 4384, 3876,
+ 3877, 3363, 2584, 2448, 2921, 3869, 4833, 2449, 4378, 4379,
+ 4834, 3210, 5604, 4391, 3880, 5302, 4479, 5605, 5606, 555,
+ 713, 556, 5474, 725, 1310, 2265, 557, 558, 559, 560,
+ 792, 1436, 1212, 632, 633, 634, 635, 827, 828, 3886,
+ 4401, 4899, 4900, 5588, 6410, 6411, 3113, 4289, 6002, 6339,
+ 6404, 6423, 5499, 5500, 4294, 4295, 4296, 3769, 3770, 561,
+ 1361, 1357, 758, 2335, 2329, 2331, 3099, 3750, 562, 563,
+ 564, 4772, 565, 1929, 2656, 4018, 4946, 3367, 2470, 6004,
+ 4786, 5169, 5158, 6143, 6141, 1813, 622, 1912, 875, 4270,
+ 906, 3301, 1298, 3028, 2590, 991, 992, 3306, 4447, 2471,
+ 2472, 876, 877, 567, 568, 1455, 3185, 3186, 993, 994,
+ 4234, 4679, 4680, 5060, 4787, 4788, 4774, 5710, 6240, 4779,
+ 2252, 5843, 5844, 6136, 6338, 5159, 5160, 5492, 5161, 5162,
+ 5484, 5849, 5482, 5848, 5163, 5703, 6008, 5701, 6007, 5147,
+ 5148, 5164, 878, 3925, 3926, 3927, 5502, 5707, 3766, 4288,
+ 5475, 569, 3111, 4301, 4299, 4291, 4297, 5705, 879, 880,
+ 1821, 881, 882, 2563, 883, 2486, 995, 996, 570, 997,
+ 2664, 2663, 4025, 718, 998, 1305, 646, 1820, 2253, 3698
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -5375,1165 +5408,1162 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 611, 537, 673, 821, 711, 640, 1784, 1923, 864, 712,
- 1240, 755, 2880, 1226, 1277, 514, 512, 2416, 865, 2760,
- 2699, 539, 3059, 546, 827, 3100, 3202, 564, 2830, 543,
- 1467, 2913, 2401, 684, 903, 2401, 2389, 684, 806, 1308,
- 487, 810, 684, 3076, 488, 698, 3328, 489, 570, 3329,
- 538, 3415, 2579, 2223, 1466, 3367, 1231, 1388, 2510, 542,
- 509, 2706, 2500, 816, 3935, 2771, 1232, 2740, 4175, 3099,
- 3692, 3217, 2126, 3337, 3180, 1184, 2814, 817, 938, 1990,
- 940, 2554, 1364, 691, 1365, 4274, 2405, 1367, 1368, 541,
- 2434, 3281, 3942, 2490, 2833, 886, 936, 889, 890, 891,
- 892, 893, 894, 895, 2354, 896, 897, 4430, 938, 4344,
- 1192, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2875,
- 2876, 2877, 2878, 2879, 3822, 2492, 936, 3281, 2435, 4876,
- 2191, 2379, 2519, 2320, 4875, 1183, 2601, 837, 3313, 1334,
- 1818, 3708, 1341, 4470, 4338, 2982, 2983, 4770, 2912, 1302,
- 724, 4217, 2224, 3024, 1497, 3416, 2498, 4784, 3758, 4905,
- 4319, 3705, 723, 1318, 5130, 2145, 4797, 2148, 2149, 2845,
- 4020, 4021, 3072, 1809, 3405, 2162, 3187, 2853, 2855, 4334,
- 2858, 2859, 4500, 2989, 2498, 3786, 3888, 1951, 687, 3636,
- 4051, 1344, 1345, 4345, 4207, 3718, 1293, 2913, 3785, 3785,
- 4045, 5469, 3648, 3005, 4045, 2225, 4760, 4511, 5122, 4516,
- 5241, 4511, 3790, 540, -2617, -2617, 3282, 5428, 828, 1802,
- 4401, 829, 830, 831, 1923, 1500, 2516, 3018, 3019, 1803,
- 832, 4867, 4708, -3650, 3149, 2501, 2518, -372, -2503, 864,
- 4667, 3310, 4321, 4322, -3646, 2517, 3322, 718, 716, 865,
- -2617, 3069, 4892, 2528, 2498, 3346, 800, 2534, -2797, -2797,
- 1484, -486, -486, 4762, -3643, -3648, -1020, -1020, -3644, -2504,
- 3409, 2546, 2512, 2512, 795, 2459, 5447, -1870, -1870, -3647,
- -3645, 4908, 3322, 2512, 5601, 737, -384, -384, 2063, 2065,
- 2066, 3253, 3862, -3378, -3378, 5150, 5563, -3379, -3379, 2182,
- 665, 2108, 1438, 2073, 1834, 1835, 1836, 1837, 4754, 4754,
- -2100, 2074, 731, 1863, 2912, 740, 732, 800, 1453, 5044,
- 2075, 1453, 2523, 3392, 2637, 2073, 2427, 4666, 4667, 3547,
- 1840, 2522, 1489, 2074, 6145, 4526, 1833, 2524, 3322, 2031,
- 2521, 2526, 2075, 4153, 5557, 3535, 1843, 1844, 2049, 2053,
- 3322, 2535, 4579, 2538, 2539, 2540, 2541, 4373, 2542, 2430,
- 5913, 5624, 5625, 735, 4303, 3632, 4763, 1453, 2525, 2548,
- 2549, 2550, 2551, 2552, 3417, 2498, 3972, 3393, 2512, 2498,
- 4762, -2652, 3431, 4849, 2529, 715, 820, 5249, 2329, 3206,
- 3785, 42, 5614, 2498, 2678, 2679, 2073, 3322, 4930, 3356,
- 4579, -2614, -2614, 2689, 2074, 4580, 715, 3277, 3548, 4264,
- -3378, 2187, 5083, 2075, -3379, 2512, 3322, 4288, 3322, 4754,
- 2692, 2693, 2694, 4415, 2695, 3094, 2696, 4190, 2697, 3825,
- 3826, 1453, 3347, 2750, 3322, 2753, 3576, -2614, 3396, 2073,
- 2547, 3163, 49, 4362, 5188, 4204, -2668, 2074, 5189, 2575,
- 2766, 2767, 2769, 4580, 3322, -3378, 2075, 2772, 2773, -3379,
- 2692, 2693, 2694, 5119, 2695, 2789, 2696, 1927, 2697, 2692,
- 2693, 2694, 783, 2695, 3322, 2696, 4356, 2697, 2076, 1412,
- 1373, 5190, 42, 4763, 3322, 2073, 756, 680, 4402, 5379,
- 2073, 5382, 4003, 2074, 1475, 2073, 2073, 3549, 2074, 3752,
- 2076, 879, 2075, 2074, 2074, 784, 1210, 2075, 4255, 4256,
- 3684, 3047, 2075, 2075, 4642, 5799, 2147, -2669, 5433, 5179,
- 4098, 1453, 1882, 797, 1414, -1945, 2073, 5384, 6257, 2430,
- 4431, -2670, 2073, 49, 2074, -3456, 880, 1210, 2073, 3188,
- 2074, 3863, 51, 2075, 4352, 1872, 2074, 5386, 2073, 2075,
- 2119, -2797, 514, 799, 2095, 2075, 2074, 5404, 3808, 1453,
- 6104, 1210, 6210, 666, 1439, 2075, 5083, 5128, 4779, 1882,
- 42, 2076, 869, 5180, 4668, 1453, 5990, 1453, 2073, -3439,
- 1305, -3443, 4830, 4931, 5447, 2077, 2074, 2682, 2073, -2497,
- 3483, 1887, 635, 2073, 1453, 2075, 2074, 509, 3109, -3378,
- 2073, 2074, 5721, -3379, 1461, 2075, 635, 2077, 2074, 1404,
- 2075, 2256, 4835, 4607, 2076, -3442, 4298, 2075, 5848, 805,
- 807, 49, 6171, 807, 3592, 815, 6173, 4780, -3440, 5780,
- 51, 5463, 3193, 4774, 2095, 2073, 6330, 5809, 4821, 4358,
- 537, 2234, 4388, 2074, 2137, 785, 2431, 2098, 1335, -3441,
- 5544, 729, 2075, 2146, 514, 512, 936, 755, 815, 2114,
- 2076, 2160, 5131, 2096, 2097, 2076, 863, 1388, 868, 743,
- 2076, 2076, 5793, 2220, 543, 2222, 4511, 3048, 2077, 4614,
- 1413, 539, 1181, 546, 642, -3446, 6340, 2336, 815, 543,
- 2339, 2123, 2194, 2235, 2342, 2343, 2345, 2346, 4432, 509,
- 5211, 2076, 1873, 1298, 542, 4867, 4781, 2076, 669, 3570,
- 709, 815, 5810, 2076, 1230, 4448, 1236, 3571, 2445, 542,
- 6361, 2077, 1235, 2076, 1316, 815, 1415, 2098, 1182, 730,
- 1336, 2586, 2099, 4836, 867, 5193, 5376, 5195, 6331, 1420,
- 5207, 5212, 5659, 1227, 1420, 1379, 1420, 744, 676, 541,
- 4287, 3433, 1234, 2076, 5225, 4625, 4626, 1363, 1883, 4205,
- 2598, 734, 1460, 2076, 5991, 3677, 5849, 2077, 2076, 5545,
- 5850, 1462, 2077, 797, 42, 2076, 2506, 2077, 2077, 4754,
- 5644, 2188, 1233, 2120, 2683, 3685, 3307, 6258, 826, 1463,
- 1443, -1945, 2846, 847, 1447, 4861, 3536, 1483, 1451, 1452,
- 6104, 1254, 1436, 2474, 6282, 1883, 815, 844, 2077, 899,
- 2076, 1888, 2099, 704, 2077, 5736, 2431, 1329, 1884, 4403,
- 2077, 1405, 815, 995, 3809, 49, 4302, 4191, 5420, 827,
- 2077, 1486, 1254, 3706, 51, 3811, 5433, 3577, 3756, 3179,
- 3785, 4357, 2385, 1874, 797, 2481, 1287, 6404, 3707, 5453,
- 4476, 4308, 2221, 4643, 4192, 4312, 1254, 1374, 866, 1473,
- 2077, -3565, 6127, 3432, -3378, 2262, 710, 3207, -3379, 2330,
- 2077, 2847, 539, 540, 546, 2077, 4362, 1801, 3739, 1806,
- 543, 1828, 2077, 1830, 4822, 4188, 807, 807, 807, 807,
- 1838, 4457, 815, 4754, 3101, 1321, 2454, 863, 3365, 868,
- 3394, 637, 3796, 844, 5668, 543, 844, 738, 669, 2486,
- 542, 2262, 3633, 667, 3877, 637, 471, 2077, 5572, 4374,
- 3541, 3542, 2450, 3753, 2183, 4621, 755, 3634, 5083, 3207,
- 5450, 6141, 1476, 1417, 705, 542, 1839, 741, 1841, 3550,
- 541, 4265, 4288, 5132, 4581, 1805, 2481, 5173, 5232, 3555,
- 3556, 797, 3559, 3560, 1914, 739, 1438, 5968, 5659, 5970,
- 2848, 1918, 6132, 1921, 3813, 867, 5675, 1864, 4876, 3864,
- 2481, 537, 882, 4875, 5678, 5213, 5679, 1929, 1907, 1907,
- 5181, 1907, 1907, 1907, 4893, 514, 512, -2617, 1907, 3323,
- 2166, 539, 4581, 546, -2617, -2617, 5661, 564, 5822, 543,
- 3916, 801, -2509, 3952, 3953, -3650, 2704, 471, 4323, -372,
- 2401, 3788, 3789, 3678, 1906, 1906, -3646, 1906, 1906, 1906,
- 538, 2923, 1990, 828, 1906, 3323, 829, 830, 831, 542,
- 509, 2232, 5350, -2510, 2638, 832, -3643, -3648, -2797, 1454,
- -3644, -486, 1454, 5421, 1905, 1905, -1020, 1905, 1905, 1905,
- 3445, -3647, -3645, 4909, 1905, 3986, 5083, -1870, 2986, 541,
- 2988, 3166, 2659, 2992, 540, 2434, -384, 2980, 5564, 1804,
- 4867, 4014, 5214, -3378, 3537, 3000, 5558, -3379, 3003, 3135,
- 3915, 3323, 3006, 6187, 2936, 6189, 6190, 2032, 1454, 866,
- 3150, 3289, -115, 3323, -115, 471, 2050, 2054, 3289, 2946,
- 5805, 5807, -2652, 2435, -119, 3264, -119, 3267, 3021, 3022,
- 3023, 1299, 2050, 5663, -3456, 3279, 2071, 4582, 2070, 4490,
- 3278, 2445, 5141, 2063, 2065, 5165, -2652, 5033, 5168, 5428,
- 5428, 670, 2068, 1361, 4049, 5294, 4050, 4511, 3290, 5296,
- 3323, 4511, 3304, 5188, 4754, 3305, 4754, 5189, 3545, 2588,
- 3295, -111, 1454, -111, 3316, 3017, 4834, 2914, -3439, 3323,
- -3443, 3323, 2512, 2481, 4782, 2508, 3317, -2668, 1904, 1904,
- 2095, 1904, 1904, 1904, -2614, 5169, 2698, 3323, 1904, 815,
- 5190, -2614, -2614, 540, 6244, 6245, 3453, 3934, 3454, 2512,
- 3462, -2668, 2512, 3465, -3442, 6251, 5699, 3323, 5701, 2096,
- 2097, 2512, 5951, 5706, 2073, 2073, 815, -3440, 5014, 3477,
- 5711, 5712, 2074, 2074, -2163, 815, 2770, 3323, 815, 677,
- 5718, 2075, 2075, 815, 2419, 6296, 5083, 3323, -3441, 3496,
- 2899, 2637, 2073, -2100, 3434, -2100, 2095, 3455, -2669, 3456,
- 2074, 2297, 1454, 3524, 3484, 3525, 2669, 1453, 2582, 2075,
- 669, 2073, -2670, 6285, 815, 3980, 938, 3308, 4754, 2074,
- 4099, 3323, -2669, 2098, -3446, 2096, 2097, 6264, 2075, 4803,
- 5980, 3256, 5407, 3464, 936, 5171, -2670, 2502, 2686, 4125,
- 1454, 4126, 4100, 4806, 2882, 4532, 5737, 4533, 4, 5,
- 2900, 1210, 2244, 2504, 797, 4593, 1454, 4594, 1454, 471,
- 797, 797, 709, -2163, 2161, 2095, 3344, 3472, 2102, 2103,
- 2104, 2105, 2106, 2107, 4980, 1454, 2491, 2298, 3207, 5730,
- 2945, -1870, 3651, 2914, 706, 3867, 2308, 2838, 4045, 2098,
- 2073, 670, 4119, 2184, 2096, 2097, 669, 3439, 2074, 4178,
- 797, 2321, 3440, -1830, 3363, 3733, 5708, 2075, 2099, 3449,
- 2073, 4787, 4788, 2924, 2808, 669, 2352, 2202, 2074, 4381,
- -3266, 2334, 686, 5374, 3718, 3785, 3785, 2075, 2073, 4,
- 5, 2857, 4895, 4791, 4792, 2672, 2074, 1466, 4390, 2076,
- 2076, 3269, 3469, 797, 2361, 2075, 5817, 2070, 2102, 2103,
- 2104, 2105, 2106, 2107, 5083, 2642, 2984, 6363, 2098, 2259,
- 5855, 2068, 2849, 3270, 2384, 2647, 1420, 2076, 2949, 2337,
- 2338, 6310, 2990, 5845, 2099, 2653, 2637, 2073, 879, 709,
- 4, 5, 2408, 949, 1831, 3004, 2076, 1934, 4636, 4206,
- 2530, 5068, 2314, 5574, 2075, 5207, -1870, 844, 3266, 844,
- 2189, 4394, 4645, 2417, 2418, 537, 4648, 4237, 3642, 1466,
- 3868, 5215, 5863, 880, 2228, 6129, 1436, 2439, 710, 514,
- 512, -3276, 2286, 2073, 4236, 5846, 644, 5151, 797, 4234,
- 815, 2074, 4163, 2302, 3866, 4067, -1870, 2362, 807, 797,
- 2075, 1240, 797, 2099, 1226, 6116, 2077, 2077, 3585, 2969,
- 5317, 4259, 635, 797, 5845, 3187, 4405, 2913, -1830, 2073,
- 5886, 772, 6168, 6205, 509, 2076, 2390, 2074, -714, 6286,
- 2322, 3734, 1456, 6311, 2077, 3281, 2075, 3281, 1388, 4358,
- 3370, 755, 2257, 2095, 2139, 2076, 4451, 1231, 4453, 5779,
- 4922, 4923, 3405, 2077, 5824, 5989, 5825, 1232, 5491, 2995,
- 3452, -1870, 4268, 2076, 2881, 5845, 5846, 5123, 1892, 701,
- -3678, 5291, 2096, 2097, 6002, 2073, 938, 5865, 2937, 1865,
- 2073, 2506, 5408, 2074, 5409, 3982, 2901, 4954, 2074, 2643,
- 3174, 5431, 2075, 3867, 936, 710, -1259, 2075, 5739, 2507,
- -3679, 5996, 2996, 2445, 2971, 2972, 1254, 2974, 2976, 2977,
- 2978, 2642, -715, 4152, 2572, -1870, 1951, 5846, 5410, 2987,
- 5576, 4138, 4141, 4144, 4145, 2644, 4003, 2315, 5731, 3082,
- 3027, 2491, 2077, 2391, 2912, 3992, 2098, 3002, -3675, 5389,
- -3266, 2429, 5152, 3643, 2920, 4497, 4930, 950, 5411, 5402,
- 5403, 2098, 2077, 3735, 4238, 5595, 4157, -1870, 2076, 2706,
- 4391, 4124, 1388, 4127, 824, 2185, 4131, 4132, 5632, 6041,
- 2077, 3870, 4368, 1388, 1388, 6042, -3673, 6306, 4206, -1830,
- 4537, 3111, 3112, 3598, 3599, 3115, 2531, 2140, 2950, 2203,
- 3122, 3123, 3124, 670, 2076, 2073, 4212, 2073, -3471, 3066,
- 5976, 1935, 6271, 2074, 2229, 2074, 6287, 4409, 4469, 4411,
- 4412, 5273, 2075, 2190, 2075, 4417, 3554, -2163, 3868, 2077,
- 6288, 2099, 3333, 4425, 2486, 4395, 3085, 4433, 2985, 4436,
- 6248, 4674, 845, 6364, -3676, 6058, 2099, 2997, 6270, 3118,
- 3121, -3276, 3071, 3346, 2991, 849, 850, 2258, 2260, 2073,
- 2076, 4955, 898, -3674, 2073, 2076, 6042, 2074, 2434, 2095,
- 2073, 2073, 2074, 2560, 6312, 2077, 2075, 4846, 2074, 2074,
- 881, 2075, 3271, 5732, 938, 636, 3189, 2075, 2075, 670,
- 3116, 5412, 1893, 3104, 2902, 2643, 6043, 5887, 2096, 2097,
- 3869, 2073, 936, 6309, 3110, 3175, 2435, 1866, 670, 2074,
- 2230, 2077, 3460, 5153, 5124, 1383, -2163, 6042, 2075, 3674,
- 2401, 3981, 2401, 2401, 5910, 5413, 2231, -3678, 2300, 4304,
- 3586, 637, 5318, -3471, 4270, 3589, 3590, 2502, 5432, 2557,
- 2295, 4931, 1412, 4130, 6347, 3155, 1413, 797, 2434, 2571,
- 5358, 1210, 5942, 2504, 1818, 5581, 5942, -3679, 4770, 2581,
- 807, 3631, 2098, 6111, 3191, 1813, 815, 2077, 815, 797,
- 5883, 3814, 2077, 3817, 3818, 3777, 5715, 6043, 6131, 709,
- 2076, 3778, 2076, 2073, 6133, 685, 2435, 1414, 3223, 1867,
- 3664, 2074, 1415, 689, 3665, -3675, 3667, 815, 695, 5857,
- 2075, 2073, 5705, 815, 3192, 2073, 3201, 2642, 715, 2074,
- 3672, 5020, 5458, 2074, 1930, 3627, 5023, 5024, 2075, 882,
- 5278, 4461, 2075, 3680, 3681, 1416, 3349, 3350, 6043, 3870,
- 3347, 6238, 3647, -3673, 2076, 6249, 3652, 6239, 2649, 2076,
- 3299, 3193, 4851, 3367, 4206, 2076, 2076, 2099, 4271, 1964,
- 1965, 1966, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107,
- 5358, 5459, 5888, 5910, 1931, 5192, 797, 815, 4880, 2881,
- 5206, 2638, 5778, 4463, 5313, 5216, 2076, 4818, 2146, 4427,
- 2508, 5498, 2296, 3450, 3451, 2073, 3391, 2077, 2073, 2077,
- 3871, -3676, 3221, 2074, 2013, 4660, 2074, 2475, 1454, 2018,
- 5942, 6204, 2075, -2100, -2100, 2075, 4661, 5636, 3351, 5947,
- -3674, 3457, 2070, 5754, 2475, 3733, 4935, 5942, 514, 2101,
- 2102, 2103, 2104, 2105, 2106, 2107, 2068, 2932, 1932, -1259,
- 3467, 5513, 3384, 2459, -3471, 710, 2850, 2073, 4807, 2073,
- 6289, 2077, 3385, 6045, 2179, 2074, 2077, 2074, 6198, 2073,
- 2801, 2802, 2077, 2077, 2075, 6020, 2075, 2074, 2076, 3194,
- 864, 2073, 717, 4881, 797, 2933, 2075, 903, 797, 2074,
- 865, 3195, 783, 2179, 797, 5110, 2076, 5359, 2075, 2894,
- 2076, 2643, 1184, 2077, 3706, 2831, 5938, 2100, 2101, 2102,
- 2103, 2104, 2105, 2106, 2107, 3300, 2073, 5882, 6143, 3707,
- 1933, 6147, 5916, 6044, 2074, 784, 5889, 5460, 3696, 3468,
- 2073, 2895, 1814, 2075, 3281, 514, 2839, 2481, 2074, 3281,
- 3167, 2506, 853, 854, 6045, 4937, 3281, 2075, 4272, 3473,
- 4939, 1429, 4004, 1380, 5157, 5158, 815, 4940, 2886, 2507,
- 4100, 4100, 6302, 4428, 4100, 4100, 1254, 3474, -1870, 719,
- 4100, 4100, 3301, 5931, 797, 5933, 2638, 6083, 815, 815,
- 2076, 5942, 1831, 2076, 5999, 2077, 815, 2938, 5507, 6021,
- 4762, 3196, 6182, 3558, 3399, 6045, 2073, 4832, 6092, 5939,
- 3404, 3734, 6381, 2077, 2074, 2896, 3543, 2077, 2955, 2180,
- 1430, 5763, 1293, 2075, 5532, 5111, 807, 807, 797, 807,
- 807, 807, 807, 797, 815, 797, 5372, 5372, 4827, 4828,
- 4829, 807, 2076, 6377, 2076, 1230, 3168, 1236, 2180, 3853,
- 2934, 6115, 5159, 1235, 2076, 5885, 888, 5364, 3001, 807,
- 4462, 815, 4898, 4901, 2476, 4904, 2076, 2532, 6303, 5309,
- 2533, 3197, 3482, 5916, 1227, 785, 4429, 4592, -904, 4595,
- -904, 2476, 797, 1234, 2080, 2081, 2082, 5942, 2083, -221,
- -2347, 5310, 3266, 6382, 797, 3985, 2897, 2077, 6053, 5788,
- 2077, 2076, 2073, 4763, 5794, 5795, 2430, 5479, 3494, 5480,
- 2074, 5365, 3624, 1233, 3822, 2076, 4481, 4482, 5940, 2075,
- 6071, 5673, 6304, 1923, 3169, 3572, 1417, 2364, 6276, 5160,
- 6183, 5326, 5327, 3735, 811, 2100, 2101, 2102, 2103, 2104,
- 2105, 2106, 2107, 5615, 815, 2906, 6193, 6194, 2477, 2077,
- 2478, 2077, 777, 5185, 2104, 2105, 2106, 2107, 3618, 797,
- 2344, 2077, 3470, 4211, 3087, 2477, 2073, 2478, 3619, 3499,
- 5567, 6213, 4665, 2077, 2074, -2347, 2554, 6202, 6203, 2481,
- 2861, 2076, 5397, 2075, 2803, 815, 6378, 2804, 2452, 2073,
- 4348, 5928, 3106, 2365, 815, 815, 815, 2074, 5757, 938,
- 797, 3595, 807, 2602, 2366, 2084, 2075, 6184, 2077, 725,
- 5366, 2073, 2367, -72, 4254, 2603, 2675, 936, 797, 2074,
- 2440, 4433, 2077, -342, 1425, 5764, 5765, 5398, 2075, 797,
- 797, -2347, 3007, 6160, 2881, 2073, 6163, 815, 1319, 2368,
- 2479, 2073, 4993, 2074, 2434, 3659, 5197, 6326, 3732, 2074,
- 3660, 1923, 2075, 5926, 2073, 5376, 755, 2479, 2075, 3663,
- 757, 6241, 2074, 6097, 2453, 3666, 4349, 2198, 1388, 6214,
- 2604, 2075, 6061, 6065, 1388, 2688, 2862, 2076, 5367, 3689,
- 2675, 5034, 2435, 2073, 3500, 2675, 3503, 1324, 2077, 1388,
- 2199, 2074, 2863, 6356, 2401, 2369, 5399, 6291, 815, 3769,
- 2075, 2073, 3770, 844, 4206, 6097, 3775, 797, 2675, 2074,
- 5198, 2073, 2445, 797, 2480, 3090, 5199, 3216, 2075, 2074,
- 2675, 3136, 5372, 2370, 3302, 5766, 3714, 3137, 2075, 3138,
- 844, 2480, 3302, 5247, 3797, 3698, 3471, 5170, 797, 2749,
- 2508, 2076, 6292, 3504, 2752, 3814, 2586, 4325, 758, 3520,
- 3523, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 3722,
- 3723, 815, 5264, 2864, 2076, 4307, 2073, 2768, 4452, 4311,
- 815, 3091, 1325, -904, 2074, 4440, 4181, 4506, 4441, 2788,
- 3530, 5745, 802, 2075, 2077, 6335, 2076, 3337, 2073, 5845,
- 3764, 760, 3767, 2431, 808, 776, 2074, 5767, 3772, 3774,
- 4326, 3309, 3139, 5272, 15, 2075, 2073, 6371, 6372, 6284,
- 2076, 6061, 809, 3281, 2074, 6065, 2076, 539, 4111, 546,
- 6357, 777, 4179, 2075, 5297, 543, 2073, 5506, 1326, 2076,
- 5604, 5605, 4112, 1828, 2074, 3341, 3724, 3854, 4183, 4442,
- 3343, 5846, 714, 2075, 4186, 4187, 797, 797, 2077, 6329,
- 6370, 2385, 2605, 24, 869, 542, 2401, 2073, 2076, 5833,
- 2445, 5537, 4026, 3361, 3361, 4468, 4504, 4505, 4942, 4943,
- 715, 2077, 6300, 6300, 2075, 1809, 2076, 4514, 3495, 3706,
- 1388, 5834, 2481, 2914, 4059, 541, 2076, 815, 5339, 4986,
- 3283, 797, 811, 2077, 3707, 5206, 5040, 4962, -592, 2498,
- 5000, 797, 4884, 5770, 3452, 4510, 3284, 4465, 3402, 4885,
- 2073, 4517, 4982, 4154, 6337, 5301, 3408, 2077, 2074, 3410,
- 3383, 3945, 3390, 2077, 3323, 2073, 2073, 2075, 3389, 5835,
- 3570, 3946, 5012, 2074, 2074, -2341, 2077, -2341, 5017, 625,
- 5415, 2076, 2075, 2075, 539, 5417, 546, 3855, 863, 834,
- 868, 1997, 543, 1180, 3856, 3198, 543, 42, 3388, 3198,
- 3857, 1186, 825, 2076, 4301, 2077, 1286, 4530, 1375, 836,
- 2014, 2015, 4383, 4384, 4, 5, 4385, 4386, 4387, 2881,
- 1376, 2076, 542, 2077, 514, 3443, 542, 5487, 3387, 1923,
- 3781, 1851, 715, 2077, 3782, 3624, 622, 848, 5488, 47,
- 952, 2076, 2073, 6061, 6065, 4831, 3323, 1809, 49, 540,
- 2074, 1809, 541, 4052, 3498, 1160, 867, 51, 4531, 2075,
- 1162, 938, 820, 3984, 4057, 4058, 2313, 5142, 4546, 3543,
- 679, 60, 2318, 2319, 5143, 3858, 5144, 5328, 1178, 936,
- 4548, 3618, 1346, 1377, 1288, 1347, 1348, 2073, 2077, 1852,
- 1349, 3619, 1853, 3945, 3132, 2074, 3133, 3945, 4243, 4244,
- 2073, 4812, 4813, 3946, 2075, 4814, 4815, 3946, 2074, 797,
- 2077, 4816, 4817, 797, 2073, 4570, 1290, 2075, 4170, 1854,
- 2407, 4093, 2074, 2409, 2409, 2076, 3532, 1855, 2077, 4571,
- 4989, 2075, 1300, 5554, 4991, 1305, 3859, 2364, 4097, 2168,
- 2076, 2076, 1466, 2073, 5565, 2073, 1310, 3364, 2077, 3365,
- 2073, 2074, 3386, 2074, 4206, 6350, 6352, 2070, 2074, 1313,
- 2075, 2073, 2075, 3430, 4206, 4206, 2146, 2075, 2146, 2074,
- 3458, 2068, 2747, 6408, 623, 5700, 540, 1319, 2075, 681,
- 866, 1322, 6200, 681, 5380, 5383, 5385, 5387, 681, 2073,
- 5390, 5391, 5713, 3506, 3501, 5395, 3502, 2074, 5401, 1331,
- 3927, 5405, 3930, 2365, 5380, 5722, 2075, 5724, 5416, 5380,
- 2822, 2823, 815, 815, 2366, 1333, -3560, 2076, 2073, 815,
- 2073, 3260, 2367, 3361, 3361, 3261, 2074, 3262, 2074, 3263,
- 1378, 3936, 2077, 3937, 1340, 2075, 815, 2075, 815, 6152,
- 6153, 3637, 3638, 2073, 4483, 4484, 4485, 2077, 2077, 2368,
- 1342, 2074, 2085, 2086, 2087, 3260, 3617, 2401, 3623, 3261,
- 2075, 3268, 2076, 3263, 3622, 2169, 3658, 807, 3127, 1356,
- 1240, 1240, 807, 1226, 1226, 2076, 2073, 2170, 5248, 776,
- 2073, 807, 745, 746, 2074, 4654, 624, 807, 2074, 2076,
- 2073, 5285, 4974, 2075, 3621, 1432, 1433, 2075, 2074, 3938,
- 4458, 3937, 783, 1362, 2073, 2369, -1319, 2075, 4808, 3939,
- -1319, 3940, 2074, 5338, 797, 1360, 1231, 1231, 2076, 747,
- 2076, 2075, 1366, 1409, 2077, 2076, 1232, 1232, 1369, 1371,
- 2244, 4704, 2171, 2370, 1372, 784, 2076, 815, 3701, 797,
- 2172, -2294, 4012, 5774, 4013, 4562, 3671, 4563, 4898, 2073,
- 4901, -1319, 4904, 3507, 4622, 1447, -1319, 2074, 748, 4218,
- 4206, 625, 2073, 4315, 2076, 4316, 2075, 797, 1388, 2077,
- 2074, 4447, 1388, 1445, 3728, 2173, 3509, 1458, 797, 2075,
- 1442, 4371, 2077, 4372, -3560, 761, 4913, 4656, 1470, -1319,
- -2294, 5316, 4438, 2076, 4439, 2076, 2077, 755, 3510, 1346,
- 3614, 5583, 1347, 1348, 3755, 4206, 1460, 1946, 3760, 3761,
- 797, 626, 807, 2208, 807, 1474, 3232, 3233, 2076, 797,
- 3773, 807, 3513, 1480, 797, 2077, 762, 2077, 3514, 1481,
- 797, 3245, 2077, 3247, -2292, 4554, 4462, 3502, 1482, 1487,
- 3186, 3518, 763, 2077, 4646, 797, 4647, 3661, 3620, 3795,
- 2502, 2076, 1492, 2384, 3800, 2076, 5743, 4557, 3668, 2262,
- 820, 4561, 4659, 2262, 2503, 2076, 2504, 5936, 4, 5,
- 3521, 2077, 1810, 1495, 2073, 785, 1811, 1819, 709, 2076,
- 5524, 1812, 2074, -2292, 1820, 4295, 2365, 2174, 3528, 709,
- 4565, 2075, 4566, 2089, -2294, 1831, 4340, 2366, 3540, 4887,
- 2077, 4888, 2077, 5977, 815, 3146, 1846, 2692, 2693, 2694,
- 797, 2695, 1850, 2696, 2175, 2697, 4245, 1848, 5936, 4,
- 5, 5594, 471, 1856, 2076, 2077, 3248, 3249, 5881, 1859,
- 844, 2073, 2146, 749, 3302, 3302, -2294, 2076, 1809, 2074,
- 709, 2445, 2445, 3964, 3731, -2294, 1354, 1355, 2075, 1358,
- 750, 1359, 1858, 4525, -2294, 3920, 1388, -3426, 2077, 764,
- 1860, 4246, 2077, 3929, 2881, 2146, 1527, 1861, -2294, 3492,
- 1862, -3428, 2077, 5952, 1868, 4534, 751, 5566, -2062, 1876,
- 4994, 815, 2262, 5029, 1802, -3425, 2077, -2292, 3147, 2090,
- 765, 4963, 1869, 4535, 1803, 5252, 5972, 5253, -3427, 5953,
- 4375, 1870, 1871, 5040, 4964, 2091, 627, 1877, 1875, -940,
- 628, 1878, 3426, 4536, 3299, 1879, 2370, 752, 3965, 3944,
- 4965, 3949, 709, 4247, 5547, 1880, 4081, 1955, 3974, -2292,
- 3976, 2077, 3552, 1881, 710, 624, 797, 2089, -2292, 797,
- 2073, 815, 815, 1891, 2077, 710, 1938, -2292, 2074, 2076,
- 4966, 3828, 815, 5912, 5254, 1952, 5255, 2075, 709, 3835,
- -940, -2292, 5256, 5286, 5257, 2262, 4248, 2073, 4128, 2008,
- 5299, 5773, 5300, 2089, 5937, 2074, 2092, 5307, 5319, 2262,
- 5320, 1953, 1954, 629, 2075, 1903, 1910, 3948, 1915, 1916,
- 1917, -3560, 2924, 2924, 1959, 1920, 710, 4541, 1960, 2505,
- 1747, 5954, 5344, 5955, 5345, 5362, 2076, 5363, 1961, 2176,
- 625, 2040, 4542, 4543, 2073, 1962, 1466, 1466, 709, 1963,
- 1967, 2209, 2074, 1969, 2109, 5937, 5830, 2110, 815, 4967,
- 815, 2075, 5027, 2090, 2506, 1907, 1907, 1907, 5478, 3617,
- 4316, 3623, 5938, 5618, 4591, 4663, 1970, 3622, 5292, 2091,
- 1971, 3944, 2507, 3949, 3839, 3944, 2077, 3949, 2073, 1254,
- -1319, 5733, 5776, 5734, 5777, 2210, 2074, 2211, 5782, 2090,
- 5777, 1906, 1906, 1906, 5783, 2075, 5777, 3621, 710, 2044,
- 5831, 5915, 4316, 1972, 2491, 2091, 2177, 5921, 5922, 4544,
- 4968, 1973, 1974, 5938, 2178, 5752, -1657, 5832, 4714, 4316,
- 1975, 1905, 1905, 1905, 5982, 5758, 5983, -1656, 6013, 4083,
- 6014, 3947, 1976, 2077, 710, 2076, 5279, 1977, 1978, 3948,
- 2092, 3572, 1466, 3948, 2111, 4249, 4250, 4251, 1979, 5502,
- 5503, 4110, 5505, 2112, 4545, 5939, 1349, 5510, -940, 1980,
- 5514, 3779, 2076, 5517, 5518, 1983, 5956, 4553, 6022, 1984,
- 6023, 5526, 4547, 5527, 1985, 1992, 2092, 2212, 2070, 1993,
- 4134, 4559, 5533, 1994, 2113, 2401, 514, 2692, 2693, 5422,
- 2498, 5423, 2068, 5424, 710, 5425, 2115, 6057, 1194, 4372,
- 5018, 5019, 5338, 3614, 5719, 6180, 5939, 6181, 797, 2076,
- 1388, 1388, 4560, 815, 815, 4383, 4384, 4568, 1995, 4385,
- 4386, 4387, 1998, 5937, 4969, 4970, 1999, 2213, 4569, 2000,
- 3966, 3967, 2073, 2117, 3968, 4152, 3969, 4029, 3970, 6216,
- 2074, 5054, 2077, 815, 4230, 1904, 1904, 1904, 6217, 2075,
- 5320, 3620, 3840, 2076, 2001, -2525, 4572, 1195, 6224, 2002,
- 6225, 766, 537, 3947, 5940, 2003, 4197, 3947, 4199, 2077,
- 6233, 6250, 6234, 5777, 2214, -2062, 514, 512, 6252, -166,
- 5777, 2004, 539, 1361, 546, 4950, 2122, 5284, 564, 2005,
- 543, 5938, 2006, 4266, 1230, 1230, 1236, 1236, 3841, 2007,
- 2831, 487, 1235, 1235, 5524, 488, 2009, 2010, 489, 570,
- 5290, 538, 797, 4289, 6265, 5940, 2077, 6253, 2011, 5777,
- 542, 509, 2012, 1227, 1227, 656, 5121, 4085, 6283, 4772,
- 5777, 2016, 1234, 1234, 1003, 1004, 955, 2017, 1007, -2294,
- 1009, 2073, 1011, 5302, 6293, 2131, 5777, 5303, 2019, 2074,
- 541, 6317, 767, 5320, 2020, 4, 5, 5746, 2075, 2021,
- 2077, 9, 1233, 1233, 2215, 6394, 4707, 6395, 3232, 3233,
- 956, 5925, 2022, 4971, 4972, 5879, 3842, 2023, 5936, 4,
- 5, 6169, 2121, 3245, 5939, 3247, 2216, 807, 2024, 4649,
- 4650, 14, 797, 4651, 4924, 4652, 4926, 4653, 2025, 2026,
- 709, 2073, 5200, 5200, 797, 2027, 2028, 2076, 797, 2074,
- 2029, 2030, 2033, 5752, 815, 1196, 957, 1197, 2075, 2034,
- 20, 4555, 2886, 958, 2035, 2036, 2037, 2038, 1198, 2039,
- 2041, 2042, -2292, 5952, 23, 2093, 3483, 2132, 2130, 3843,
- 2043, 2133, 2045, 2508, 1199, 2046, 815, 815, 2047, 2048,
- 959, 2051, 2052, 5201, 5201, 3844, 3845, 2055, 960, 5953,
- 3846, 3847, 3848, 2056, 2057, 2924, 4444, 2058, 5707, 2059,
- 28, 4953, 3706, 3706, 540, 6087, 2060, 4919, 3248, 3249,
- 5958, 5898, 815, 2061, 2116, -2511, -2512, 3707, 3707, 1466,
- 2138, 2164, 2165, 5940, 961, 1809, 636, 2186, 4398, 2167,
- 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
- 1011, 2204, 2205, 2207, 2077, 2206, 2076, 3829, 3830, 2227,
- -940, 5941, 2226, 2236, 2239, 2240, 2250, 2262, 3849, 4261,
- 2294, 4973, 4995, 5586, 39, 5936, 4, 5, 2304, 962,
- 963, 3945, 783, 2310, 5202, 2306, -1319, 2316, 2317, 2323,
- -1319, 3946, -713, -713, 862, 2324, 710, 709, 2326, 2328,
- 2332, 5954, 1801, 5955, 1806, 3274, 2349, 6024, 2350, 901,
- -740, 4455, 5941, 2351, 2353, 784, 2076, 6237, 3850, 2093,
- 2362, 539, 2373, 546, 3287, 5937, 2374, 2377, 5898, 543,
- 5952, -1319, 797, 3292, 6399, 2387, -1319, 2393, 2403, 3294,
- 1033, 2404, 5142, 1284, 6343, 6344, 50, 3306, 6345, 5143,
- 6346, 5144, 2418, 815, 815, 2093, 5953, 3318, 797, 542,
- 3320, 2414, 2437, 2077, 2427, 1200, 2428, 2441, 2456, -1319,
- 1805, 4496, 2444, 2460, 2466, 2472, 2486, 2495, 4364, 4365,
- 4366, 4367, 2499, 4369, 4370, 82, 2491, 2520, 2527, 541,
- 2536, 6319, 2073, 5938, 2543, 2553, 2556, 2721, 2558, 2544,
- 2074, 2563, 2566, 6128, 2559, 2564, 1907, 964, 2572, 2075,
- 2364, 2576, 4558, 5683, 5684, 2578, 5686, -940, 2580, 1053,
- 2583, 4413, 4414, 2077, 4416, 2591, 4418, 4419, 4420, 4421,
- 4422, 4423, 4424, 2593, 4426, 2595, 2596, 2597, 4435, 2599,
- 2600, 2627, 1906, 2635, 2646, 2648, 5956, 2650, 6154, 2651,
- 2654, 5185, 5185, 710, 2655, 785, 2652, 2657, 5954, 2658,
- 5955, 709, 5899, 2662, 2722, 2674, 4574, 6221, 2733, 5900,
- 2673, 2675, 1905, 2684, 2746, 2691, 2365, 965, 2705, 2747,
- 2748, 2759, 5937, 2761, 5901, 2764, 5939, 2366, 2765, 2827,
- 2812, 6103, 2816, 2837, 1804, 2367, 2856, 2841, 2860, 2887,
- 901, 2915, 2888, 2916, 2921, 1799, -2264, 4612, 1067, 2922,
- 2928, 2939, 2944, 540, 2947, 2966, 2967, 4, 5, 2993,
- 6229, 815, 2368, 797, 6407, 862, -3527, 2968, 815, 815,
- 2723, 4630, 2724, 3008, 4633, 4634, 3009, 3010, 2725, 3011,
- 3013, 3015, 3020, 4340, -2112, 3014, 3030, 3033, 3034, 3036,
- 5938, 3043, 3039, 3040, 3041, 2265, 1001, 1002, 1003, 1004,
- 1005, 1006, 1007, 1008, 1009, 1010, 1011, 2076, 3042, 5899,
- 1201, 1202, 1203, 1204, 3050, 3051, 5900, 3064, 2369, 3060,
- 3061, 3062, 3063, 3065, 3067, 3068, 3074, 3075, 3078, 3079,
- 4683, 5901, 3083, 3088, 3094, 5940, 1904, 3097, 2726, 514,
- 514, 3102, 6221, 5956, 1902, 1902, 2370, 1902, 1902, 1902,
- 3125, 5902, 3191, -2264, 1902, 966, 5838, 710, 5839, 5840,
- 4375, 5587, 3128, 3129, 5903, 2364, 3130, 3131, 5588, 2364,
- 3142, 3134, 797, 3143, 815, 3144, 3152, 797, 797, 3157,
- 3156, 5904, 2727, 5939, 3159, 5613, 3160, 3172, 3173, 3176,
- 3190, 807, 3192, 6229, 3177, 3204, 1033, -2536, 5242, 3205,
- 3213, 5203, 5203, 4687, 3218, 3219, 797, 797, 6297, 3220,
- 3214, 3224, 2364, 4798, 2077, 3255, 4878, 1001, 1002, 1003,
- 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 3258, 3193,
- 2547, 2365, 3285, 3293, 3311, 2365, 3314, 3319, 3331, 4629,
- 3330, -715, 2366, 3335, 5183, 6388, 2366, 1416, 3339, 3342,
- 2367, 3344, 3345, 3352, 2367, 3355, 3358, 3376, 5902, 6398,
- 3400, 3419, 5957, 3422, 3424, 6388, 3401, 3425, 3444, 3436,
- 3427, 5903, 6398, 3437, 2728, 1053, 3438, 2368, 2365, 3964,
- -1319, 2368, 3441, 3452, 3442, 2729, 3459, 3792, 5904, 2366,
- 3463, 4789, 5940, -1870, -1870, -715, 3466, 2367, 762, 3475,
- 5958, 5371, 3476, 3478, 3479, -1870, 1275, 3480, 2266, 5204,
- 5204, 3481, 3485, 3493, 3706, 4688, 3497, 1033, 3505, 669,
- -1456, 5905, 3508, 4689, 2368, 3511, 3512, 3516, 3517, 3707,
- 3551, 3522, 3526, 2369, 4793, 3527, 3920, 2369, 4690, 3529,
- 2637, 3533, 3534, 3539, 3544, 3557, 3564, 3194, 4691, 4692,
- 4693, 2107, 4765, 3566, 3965, 4457, 3567, 4912, 4694, 3195,
- 4914, 2370, -1622, 3568, 1067, 2370, 3569, 3576, -1870, 3583,
- 2031, 2049, 2053, 4920, 3593, 3591, 3594, 3596, 3597, 3600,
- 2369, 3588, 3604, 3793, 3626, 864, 5184, 514, 512, 3605,
- 3641, 3606, 5941, 3644, -715, 865, 1053, 3669, 4936, 647,
- 5353, 3645, 514, 3646, 3653, 5497, -1870, 3649, 2370, 3654,
- -1870, 3657, 3673, 1275, -1870, 3683, 3686, 3687, 3693, 5509,
- 3711, 3712, 3740, -1870, -1870, 5641, 3744, 3748, 5905, 3742,
- -1870, 764, 3780, 3743, -1870, 3747, 5396, 4, 5, -1870,
- 3787, -1870, 3791, 3805, 3816, -1870, 3812, 3820, 4350, 4351,
- 3823, 4353, 4355, -1870, 2267, -1870, 648, 5958, 3831, 3196,
- -1870, 3824, -715, 3834, 3832, 3833, 3836, 3837, 2268, 3838,
- 2269, 5589, 4985, 3875, 5590, 2265, 3878, 3885, 3881, 3944,
- -1870, 3949, 3924, 5591, 5588, 1067, 3917, 3890, 3891, 3892,
- -1870, 3893, 3894, -1870, 3895, 3896, 4695, 3897, 3898, 3899,
- 3900, 2285, 2270, 3901, 4630, 3902, 3903, 3904, 4696, 3905,
- 3906, 3931, 3907, -1870, 3971, 2271, 3908, 4612, 3909, 3932,
- 3954, 815, 3975, 3910, 5016, 649, 3911, 3912, 3913, 3197,
- 3914, 3955, -1870, 3977, 3925, 3978, -1870, 650, 3991, 3993,
- 3996, 3926, 3927, 3997, 4005, -1870, 3928, 3948, 2272, 5941,
- 5512, 3930, 4007, 5185, 2831, 2481, 4006, 3981, 3994, 4001,
- 4009, 3995, 4023, 5041, -1870, 4053, 2273, 4054, 5042, 4055,
- 4068, 4069, 4070, 4076, 4089, 5052, -1665, 4108, 4120, -1870,
- 4135, 4121, 4109, 4122, 4136, -1870, -1870, 514, 4148, 4149,
- 5633, 5125, 1809, 4697, 5638, 5639, 4150, 3577, 5587, -1870,
- 651, -1870, 4160, 4164, 4158, 5588, 4166, 4167, 4698, 4168,
- 797, 4171, 4172, 4176, 4177, 2950, 5084, 2949, 4184, 4209,
- 797, 3323, 4229, 4185, 4262, 4269, 4223, 4224, 4235, 3365,
- 4233, 4241, 4275, 4279, 4280, 4228, 4242, 4277, 1802, 4281,
- 4306, 4305, 4333, 5112, 2274, 4309, 4699, 4310, 1803, 4337,
- -2015, 2275, 4346, 4378, 4347, 4379, 4380, 4396, 4400, 4406,
- 4700, 2276, -715, 4407, 4408, 5183, 4410, 4450, 4456, 5869,
- 4459, 3947, 4629, 4460, 4471, 2277, 4473, 4466, -1814, -1814,
- 3340, 4478, 4479, 4491, 1809, 4499, 4509, 4501, 2266, 4508,
- -1814, 4515, 5015, 3795, 4518, 4519, 4520, 4521, 4564, 4598,
- 4575, 4590, 2886, 864, 4576, 4615, 2073, 2278, 4600, 4586,
- 2279, 4601, 4602, 865, 2074, 4587, -715, 4616, 4603, 762,
- 4624, 4604, 815, 2075, 4605, 2637, 2280, 4606, 4638, 4613,
- 3945, 4639, 4619, 4617, 4644, 3706, 4664, 4620, 4657, 4662,
- 3946, 4675, 670, 4686, 4663, 4678, -1870, 652, 4705, 4684,
- 3707, 4713, 4710, -1814, 4706, 4711, 4716, 2281, 4767, 4775,
- -1781, -1786, 4796, 5186, 4801, 2710, 2711, 2712, 2713, 4804,
- 5084, 4810, 4805, 4820, 653, 4811, 4825, 4838, 4883, 4891,
- 807, 4906, 4910, 4915, 4916, 5246, 4921, 5589, 4929, 4941,
- 5590, -1814, 4944, 4945, 4947, -1814, 4956, 4987, 3536, -1814,
- 4957, 4581, 4996, 4998, 4323, 514, 5259, 4999, -1814, -1814,
- 5002, 2714, 2715, 2716, 5003, -715, 5004, 2899, 5008, -1814,
- 5021, 5054, 5022, 5035, -1814, 6367, -1814, 51, 5053, 5058,
- -1814, 5059, 5060, 5061, 2267, 514, 799, 5062, -1814, 5065,
- -1814, 5085, 5086, 5087, 2146, -1814, 5099, 4849, 2268, 5134,
- 2269, 5787, 764, 5135, 5138, -256, 1163, 1907, 5139, 5140,
- 5147, 5149, 2717, 2718, -1870, -1814, 5163, 5176, 3964, 5177,
- 2883, 5187, 5178, 5194, 5185, -1814, 5196, 5209, -1814, 5210,
- 5219, 2076, 2270, -715, 5220, 5221, 5223, 5222, 5174, 5224,
- 5227, 5237, 5226, 1906, 5228, 2271, 5229, 5230, -1814, 5258,
- 4612, 5240, 5243, 5244, 5251, 5261, 5262, 5265, 5589, 5266,
- 5269, 5590, 5271, -73, 5275, 5274, 5276, -1814, 5283, 5287,
- 5749, -1814, 5288, 1905, 5293, 5289, 2719, 5295, 2272, 5298,
- -1814, 5305, 5306, 5308, 5314, 5322, 5330, 5346, 5333, 5334,
- 2831, 5820, 5332, 3965, 5341, 5342, 2273, 5351, 5376, -1814,
- 3266, 4683, 4878, 5354, 5355, 654, 5449, 514, 5335, 5462,
- 5470, 5464, 815, 5471, -1814, 5084, 5472, 5361, 1164, 5475,
- 5477, -1814, 5484, 655, 5185, 5482, 1165, 5483, 5485, 5494,
- 5493, 5492, 797, 5500, -1814, 5495, -1814, 5498, 2077, 2720,
- 5511, 1166, 5515, 5516, 4394, 5550, 5552, 5548, 815, 5571,
- 5573, 1167, 1168, 1169, 5575, 5577, 5579, 5582, 5580, 5585,
- 5596, 1170, 5599, 5612, 1809, 5611, 5617, 5622, 5430, 656,
- 5623, 5630, 5626, 5631, 2274, 5634, 3920, 5629, 5650, 5666,
- 5646, 2275, 5667, 5648, 3920, 5665, 5669, -1870, 5655, 5677,
- 5676, 2276, 4439, 5435, 5661, 5438, 657, 1904, 5663, 5680,
- 2638, 5685, 5687, 5688, 658, 2277, 5690, 5359, 5703, 5710,
- 3945, 5692, 5709, 5714, 5720, 5199, 5504, -1870, 6273, -1870,
- 3946, 5725, -1870, -1870, 1157, 5363, 5740, 5747, 5754, 5748,
- 5084, 5521, 864, 5753, 2721, 5755, 5757, 2278, 5760, 5771,
- 2279, 5531, 865, 5052, 5052, 797, 5775, 5779, 5534, 5781,
- 5535, 5536, 5791, 5785, 5797, 5520, 2280, 2831, 5364, 5801,
- 5841, 5437, 5842, 5844, 797, 5530, 5852, 5854, 5853, 5860,
- 5052, 1157, 5862, 5861, 5867, 5870, 5349, 5052, 5871, 5872,
- 5878, 5880, 5084, 5884, 6096, 5893, 5894, 2281, 5897, 5917,
- 5918, 5923, 5965, 5929, 4721, 5985, 5969, 5556, 5987, 1171,
- 5986, 2722, 5981, 5988, 5971, 5993, 5998, 5994, 5995, 6007,
- 6009, 1172, 5392, 5393, 6011, 6012, 6015, 6016, 6019, 6025,
- 6029, 6032, 5406, 6037, 6040, 6054, 6096, 6056, 6068, 6074,
- 6076, 6078, 6079, 6080, 5186, 6084, 5429, 6085, 6099, 2881,
- 6086, 6100, 6101, 6102, 6108, 6134, 6082, 1907, 6156, 6141,
- 6170, 6185, 6175, 6177, 5468, 6178, 6191, 6196, 6197, 6206,
- 6207, 6208, 6188, 6209, -2509, 6212, 4846, 2723, 5603, 2724,
- -2510, 4851, 6215, 6269, 6218, 2725, 6240, 6243, 6246, 6255,
- 5041, 5610, 6254, 1906, 6274, 5436, 6272, 3797, 1157, 5052,
- 6277, 6320, 6333, 6323, 6328, 6403, 6332, 6341, 5621, -1814,
- 6334, 5621, 5621, 6336, 6342, 6349, 5627, 6354, 6358, 6359,
- 5084, 1173, 6360, 1905, 6362, 6365, 6366, 6368, 5637, 6363,
- 6364, 6374, 6389, 5645, 6375, 4189, 3710, 4437, 6402, 5562,
- 5561, 5560, 4284, 6096, 5920, 2726, 4819, 2881, 5670, 5979,
- 6114, 6267, 5187, 2926, 1382, 5465, 1801, 2442, 1806, 1174,
- 4454, 4907, 4449, 5340, 4911, 3324, 2907, 3721, 4702, 5549,
- 4495, 4475, 3222, 1175, 1494, 3411, 5804, 5803, 5694, 3412,
- 5696, 5652, 5233, 3413, 4865, 5716, 5007, 5598, 5013, 2727,
- 6140, 3581, 6400, 5089, 5090, 5091, 5092, 5093, 5094, 5095,
- 5096, 5097, 5098, 5315, 5100, 5101, 5102, 5103, 5104, 5105,
- 5106, 5107, 5108, 5109, 5761, 6223, 5113, 5114, 6322, 6281,
- 6039, 5435, 5759, 5438, 1805, 3827, 2432, 5231, 5501, 5695,
- 5967, 6155, 3795, 5697, 3795, 5543, 5628, 5236, 5370, 6199,
- 6301, 6195, 6130, 6119, 6120, 6121, 6122, 1904, 3944, 4975,
- 3949, 955, 4938, 6201, 4507, 6138, 2511, 1945, 3275, 5698,
- 5084, 5052, 5084, 4578, 3956, 4990, 815, 5084, 4988, 5052,
- 4992, 6327, 769, 1157, 5084, 5084, 9, 1157, 5052, 770,
- 6294, 2728, -1814, 5717, 5084, 956, 6295, 5927, 4276, 5437,
- 5084, 5052, 2729, 5052, 6167, 2638, 2710, 2711, 2712, 2713,
- 1157, 5726, 6172, 5647, 1945, 6174, 14, 5847, 3291, 1157,
- 5693, 4715, -1814, 5234, -1814, 5208, 3948, -1814, -1814, 5649,
- 5218, 5738, 5691, 5541, 2628, 2451, 6005, 3098, 4260, 4258,
- 797, 957, 3884, 6136, 5851, 20, 3257, 4488, 958, 4165,
- 6266, 3702, 2714, 2715, 2716, 4002, 4928, 798, 1804, 23,
- 4123, 5815, 2412, 4878, 6236, 1411, 4216, 2363, 2135, 5815,
- 2411, 5815, 4336, 5263, 4173, 959, 5001, 4092, 4090, 2831,
- 2825, 4143, 4140, 960, 1157, 1157, 1157, 1157, 4608, 5621,
- 1945, 2884, 4528, 5784, 5280, 28, 2745, 1157, 2681, 2735,
- 5789, 797, 755, 2717, 2718, 5084, 5084, 6268, 6117, 6353,
- 6351, 5682, 3148, 3151, 5481, 797, 5032, 6125, 5343, 961,
- 6126, 2355, 2356, 5436, 3141, 3807, 2357, 5812, 2358, 5813,
- 2690, 807, 2360, 3920, 3162, 4597, 514, 6280, 4332, 807,
- 5167, 807, 4596, 5829, 5166, 6018, 5859, 5593, 5329, 4339,
- 3947, 5584, 5282, 4335, 5606, 1434, 2406, 4981, 2420, 39,
- 5172, 780, 771, 3799, 962, 963, 3973, 2719, 5084, 1296,
- 3368, 4927, 2246, 4000, 5084, 5045, 5856, 5772, 4361, 5031,
- 5348, 2831, 6318, 5028, 1823, 3338, 3675, 1829, 5950, 1280,
- 5052, 2999, 5950, 1945, 3676, 1281, 4210, 2413, 3715, 5802,
- 1283, 5873, 5877, 5616, 3086, 2633, 4932, 6321, 5486, 6355,
- 5689, 6401, 6405, 1947, 3998, 5815, 869, 3690, 5608, 4024,
- 4201, 1238, 4202, 3418, 3640, 4203, 4198, 5892, 1239, 3397,
- 2720, 50, 4195, 4194, 4637, 1193, 2129, 2150, 4985, 3108,
- 4826, 4169, 5268, 3874, 5621, 6406, 5175, 2927, 2621, 2622,
- 4278, 5741, 5924, 4879, 5084, 1330, 2309, 789, 773, 774,
- 775, 1924, 4925, 3414, 4498, 6109, 5378, 1936, 5964, 5047,
- 82, 6110, 6263, 1926, 4766, 5653, 5657, 4285, 5394, 1157,
- 5658, 5654, 5674, 1945, 6391, 807, 5662, 0, 3944, 6393,
- 3949, 1817, 964, 1937, 0, 901, 0, 2561, 0, 0,
- 6000, 0, 0, 0, 0, 0, 0, 0, 0, 5084,
- 863, 0, 868, 0, 0, 955, 0, 0, 543, 797,
- 0, 815, 0, 0, 0, 2721, 0, 6001, 5084, 797,
- 0, 0, 0, 0, 0, 0, 5950, 0, 0, 0,
- 9, 0, 0, 0, 0, 0, 0, 0, 542, 956,
- 0, 0, 0, 5950, 3225, 0, 3948, 0, 0, 0,
- 0, 0, 965, 0, 0, 0, 0, 0, 0, 0,
- 14, 0, 0, 0, 0, 0, 0, 0, 867, 0,
- 0, 0, 0, 0, 1945, 6055, 0, 1945, 3226, 0,
- 6067, 0, 2722, 0, 0, 957, 6073, 0, 3380, 20,
- 0, 0, 958, 0, 0, 0, 0, 0, 0, 1944,
- 0, 0, 0, 23, 0, 0, 0, 0, 0, 815,
- 1157, 0, 901, 0, 0, 3227, 862, 0, 0, 959,
- 0, 0, 0, 0, 0, 0, 0, 960, 0, 0,
- 0, 0, 0, 0, 0, 797, 0, 0, 0, 28,
- 5829, 0, 0, 0, 4683, 4683, 1991, 1157, 2723, 0,
- 2724, 0, 0, 0, 0, 0, 2725, 0, 0, 0,
- 0, 0, 0, 961, 0, 0, 0, 0, 0, 0,
- 3947, 5877, 0, 0, 0, 0, 0, 0, 0, 0,
- 5892, 0, 0, 0, 0, 0, 0, 5950, 0, 0,
- 966, 0, 866, 815, 0, 0, 5815, 0, 0, 0,
- 0, 0, 0, 39, 0, 0, 0, 0, 962, 963,
- 0, 0, 0, 0, 0, 0, 2726, 0, 0, 0,
- 0, 0, 2072, 0, 0, 6176, 0, 0, 0, 0,
- 0, 0, 0, 5621, 0, 5621, 5621, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -1870,
- -1870, 0, 0, 2070, 0, 0, 0, 0, 0, 0,
- 2727, -1870, 0, 0, 6081, 0, 807, 2068, 0, 0,
+ 612, 539, 678, 716, 1927, 641, 2876, 760, 516, 717,
+ 826, 2420, 869, 1789, 2695, 541, 1230, 1281, 2756, 1244,
+ 832, 545, 811, 3331, 548, 815, 3096, 2909, 1471, 514,
+ 540, 566, 2826, 689, 907, 1472, 3055, 689, 489, 1312,
+ 490, 491, 689, 3416, 511, 703, 571, 2227, 3332, 3204,
+ 1393, 2393, 3072, 3368, 696, 2501, 2511, 2405, 3939, 2767,
+ 2405, 544, 822, 2736, 1235, 3219, 942, 2702, 3693, 543,
+ 3823, 944, 2149, 3341, 2152, 2153, 870, 4277, 3095, 1188,
+ 891, 4432, 2166, 2409, 894, 2810, 896, 3176, 897, 898,
+ 2434, 899, 900, 901, 721, 3826, 942, 3827, 3828, 1994,
+ 2493, 1196, 1338, 2829, 2555, 1345, 4346, 3946, 3709, 1502,
+ 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2869, 2871, 2872,
+ 2873, 2874, 2875, 3637, 1187, 2520, 2435, 3417, 1236, 2358,
+ 3284, 2499, 3316, 2383, 2600, 4807, 3649, 4340, 2195, 1955,
+ 821, 4885, 4472, 2324, 4886, 3020, 2841, 4773, 4794, 2908,
+ 729, 2978, 2979, 2130, 2849, 2851, 1823, 2854, 2855, 2499,
+ 2228, 3759, 728, 4321, 2491, 4336, 3284, 4023, 4024, 4502,
+ 5139, 4782, 3706, 1368, 2985, 1369, 3406, 940, 1371, 1372,
+ 1348, 1349, 1814, 3189, 3068, 4915, 5171, 3892, 842, 4054,
+ 3719, 4048, 542, 2909, 3001, 4048, 2229, 5465, 4518, 4347,
+ 4403, 3786, 3786, 3285, 3787, 4513, 4877, 940, 4769, 4513,
+ 833, 5272, 3791, 834, 4713, 4210, -2814, -2814, 3014, 3015,
+ 3325, 1927, -2520, 5660, 5661, 1505, -3684, 1807, 835, 2499,
+ 1306, -378, -1889, -1889, -3680, 836, 837, 1458, 692, -3677,
+ 2067, 2069, 2070, 4670, 1322, 2035, 2529, 869, 2517, -2521,
+ 2535, 1297, 800, 2112, 1444, 3325, 5181, 3065, 2519, -2119,
+ 3410, 5219, -2634, -2634, 2547, -1030, -1030, 1866, -390, -390,
+ 1458, 5099, 742, 2513, 2513, 1458, 1867, -492, -492, 2633,
+ -3682, 5637, -3678, 4581, 2513, 5058, 2459, -3681, 3256, -3679,
+ 3090, 1808, 1839, 4918, 1840, 3985, 5598, 723, -2634, 6177,
+ 4323, 4324, 4103, 3857, 4258, 4259, 805, 2186, 3145, 2077,
+ 1443, 870, 736, 2502, -3475, 2908, 737, 2078, 3208, 4375,
+ -2631, -2631, 2151, 2518, 745, 5280, 2079, 4528, -3397, -3397,
+ 2053, 5945, 2057, 3325, 1846, 1847, 4582, 4305, 42, 4669,
+ 4670, 1489, 3313, 5220, -3398, -3398, 805, 3393, 4156, 4293,
+ 2499, 4433, 3325, 2523, 2499, -3458, -2631, 2077, 2430, 825,
+ 3548, 2333, 720, 740, 4364, 2078, 5650, 3418, 2499, 3829,
+ 3830, -3462, 681, -3461, 2079, 1377, 3432, 4761, 4761, 2513,
+ 2688, 2689, 2690, 3577, 2691, 720, 2692, 1494, 2693, 49,
+ 2526, -3459, 4390, 2524, 2427, -2669, 2674, 2675, 3280, 2548,
+ 3786, 3394, 3976, 4267, 3325, 2685, 3310, 4859, 2525, 1842,
+ 2191, 4902, 2527, 6161, 4942, 2077, 2513, 5592, 2522, 5773,
+ 670, 3325, 2536, 2078, 2539, 2540, 2541, 2542, 1461, 2543,
+ 5099, 5495, 2079, 3753, 1458, 2746, 4777, 2749, 2077, 3549,
+ 2549, 2550, 2551, 2552, 2553, -3397, 2078, 4417, 5135, 4209,
+ 4404, 1458, 2762, 2763, 2765, 2079, 3325, 4354, -2685, 2768,
+ 2769, -3398, 2530, 2492, -2686, 2077, 2576, 2785, 2688, 2689,
+ 2690, -2687, 2691, 2078, 2692, 5221, 2693, 739, 3347, 1214,
+ 761, 1458, 2079, 2077, 2080, 42, 3325, 4761, 2263, 5817,
+ -3397, 2078, 4645, 5836, 2099, 3954, 3955, 2688, 2689, 2690,
+ 2079, 2691, 4101, 2692, 3685, 2693, -3398, 3358, 4006, -2814,
+ 2077, 636, 2099, 1458, 6341, 4273, 4177, 4178, 2078, 4434,
+ 2193, 1931, 2099, 2100, 2101, 802, -2514, 2079, 3550, 5417,
+ 3325, 6159, 2080, 3484, 3866, 1214, 49, 5149, 2602, 4778,
+ 5745, 2100, 2101, 2077, 636, 51, 3325, 516, 1425, 3325,
+ 6145, 2100, 2101, 1425, 4840, 1425, 6020, -1964, 5412, 5420,
+ 2079, 4967, 4777, 2077, 2077, 2260, 2099, 6293, 804, 5880,
+ 3170, 2078, 2078, 874, 2143, 3434, 2077, 4581, 2099, 5396,
+ 2079, 2079, 42, 511, 2078, 5758, 4671, 2102, 1385, 5496,
+ 2080, 2081, 4358, 2079, 5895, 788, 3105, 6050, 2183, 4943,
+ 4220, 2077, 5915, 5422, 6361, 2102, 5948, 2100, 2101, 2078,
+ -3460, 4783, 6357, 2080, 1384, 2102, 6342, 3593, 2079, 5424,
+ 810, 812, 5442, 734, 812, 674, 820, 5877, 789, 4274,
+ 4582, 3473, 1458, 49, -3397, 2224, 6127, 2226, 6316, 2081,
+ 2080, 539, 51, 1837, 5173, 2431, 2238, 6200, 516, 4539,
+ -3398, 5174, 3303, 5175, 849, 3348, 760, 6387, 2080, 2102,
+ 1393, 868, 685, 820, -3465, 4778, 1488, 545, 719, 514,
+ 873, 2102, 2103, 4513, 6360, 5816, 6127, 5242, 5210, 5878,
+ 541, 4209, 3286, 671, 511, 2080, 545, 1185, 4877, 548,
+ 2103, 3858, 2445, 820, 1458, 2077, 720, 2081, 3287, 2239,
+ 2103, 735, 4616, 2078, 1186, 884, 6362, 544, 1302, 3304,
+ 5533, 6051, 2079, 1234, -221, 872, 820, 5881, 6026, 1239,
+ 2081, 2144, 1240, 4360, 2141, 4968, 544, -724, 1231, 1320,
+ 820, 4450, 5211, 2150, 543, 1452, 940, 3757, 2080, 2080,
+ 885, 2164, 5948, 2184, 2103, 5791, 1325, 2081, 6021, 4627,
+ 4628, 2080, 1378, 5897, 849, 5882, 2103, 849, 2475, 1238,
+ 3633, 42, 1367, 5495, 6303, 2081, 3678, 1237, 790, 2084,
+ 2085, 2086, 2198, 2087, 1258, 2194, 2080, 2340, 802, 3171,
+ 2343, 4405, 2192, 3867, 2346, 2347, 2348, 5680, 3578, 2351,
+ 2352, 3686, 2081, 4478, 2922, 1448, 4364, 5224, 2077, 5226,
+ 1441, 3859, 5238, 1456, 1457, 2507, 2078, 4789, 3860, 4275,
+ 2583, 820, 49, 5099, 3861, 2079, 5256, 2264, 4183, 4871,
+ 638, 51, 5458, -1964, 4191, 2081, 1480, 820, 6294, 832,
+ 1258, 2225, 1303, 4646, 6157, 1478, 1491, -3585, 871, 831,
+ 3812, 2597, 2334, 682, 852, 2081, 2081, 6343, 3786, 802,
+ 4304, 5776, 4761, 638, 6162, 2487, 4310, 542, 2081, 3754,
+ 4314, 3433, 3209, 2266, 903, 5668, 4790, 472, 2895, 4461,
+ 2080, 541, 2487, 3366, 4293, 4583, 1806, 545, 999, 3311,
+ 548, 4376, 5471, 2081, 2454, 1811, 1834, 3097, 1836, 3862,
+ 2088, 812, 5774, 812, 743, 820, 868, -3475, 1845, -3397,
+ 6173, 1291, 545, 3797, 4844, 873, 5486, 2266, 3542, 3543,
+ 1841, 2450, 1843, 3881, 2423, -3398, 5608, 544, 3556, 3557,
+ -2180, 3560, 3561, 2389, 5204, 543, 760, 3395, 2896, 5712,
+ 1810, 3985, 4623, 1868, 2187, 4268, 4209, 6219, -3458, 6221,
+ 6222, 3977, 544, -2180, 744, 4791, 746, 2482, 5099, 3919,
+ 872, 2077, 3863, 6164, -3462, 802, -3461, 4359, 1918, 2078,
+ 5715, 1459, 5716, 2482, 1443, 1922, 3326, 1925, 2079, 4761,
+ 2170, 6435, 3551, 2080, -3459, 539, 5263, 2081, -115, 3209,
+ -115, 1933, 516, 1911, 1911, 5219, 1911, 1911, 1911, 541,
+ -2526, 2932, 2634, 1911, 1459, 545, 3679, 2036, 548, 1459,
+ -2814, 3326, -3684, 514, 540, 566, 2942, -378, 3920, 4885,
+ -3680, 2236, 4886, 5847, 472, -3677, -1889, -2527, 511, 833,
+ 1910, 1910, 834, 1910, 1910, 1910, 2700, 5388, 1909, 1909,
+ 1910, 1909, 1909, 1909, 2405, 544, 672, 835, 1909, -2634,
+ 6280, 6281, 1994, 543, 836, 837, -2634, -2634, 542, -1030,
+ 675, 6287, -390, 1809, 3989, 806, -3682, 3162, -3678, 5468,
+ 2434, -492, 3435, -3681, 4609, -3679, 2982, 5220, 2984, 4919,
+ 4325, 2988, 5599, 871, 4877, 2067, 2069, 3789, 3790, 3326,
+ 2081, 3292, 2054, 2996, 2058, 5736, 2999, 5738, 3292, 2054,
+ 3002, -119, 5743, -119, 2445, 2655, 2435, -2631, 3326, 5748,
+ 5749, 2585, 2919, 3131, -2631, -2631, 3956, 3957, 5172, 5755,
+ 2834, 472, -3397, 6317, 3146, 5099, 3017, 3018, 3019, -2669,
+ 2075, 4052, 2074, 4053, 5465, 5465, 2080, 5196, -3398, 2072,
+ 5199, 4103, 4103, 3282, 5330, 4103, 4103, 4492, 5332, 5212,
+ 2694, 4103, 4103, 4017, -2669, 4513, 3013, 4903, 2976, 4513,
+ 3326, 1908, 1908, 5593, 1908, 1908, 1908, 2077, 1459, 2513,
+ 3307, 1908, -111, 3308, -111, 2078, 542, 3326, 4842, 4583,
+ 5200, 3546, 3319, 5696, 2079, 1459, 887, 2910, 1886, 3267,
+ 3938, 3270, -2685, 820, 3463, 4476, 2513, 3466, -2686, 2513,
+ 709, 3485, 4193, -3460, 3281, -2687, 2509, 2482, 2513, 5221,
+ 2665, 5027, 3326, 3478, 2897, 1459, 4496, -2685, 5983, 3345,
+ 820, 5483, 3293, -2686, 3868, 1425, 3454, 5483, 3455, 820,
+ -2687, 4813, 820, 3497, 3298, 2356, 4761, 820, 2766, 4761,
+ 2165, 2077, 3326, 2081, 3446, 4816, 2878, 1459, -3710, 2078,
+ 3320, 942, 3980, 4383, 2301, 4102, 3326, -3465, 2079, 2104,
+ 2105, 2106, 2107, 2108, 2109, 2110, 2111, 6328, 820, 3159,
+ 1365, 3456, 2941, 3457, 1481, 3209, 3272, 2104, 2105, 2106,
+ 2107, 2108, 2109, 2110, 2111, 5243, 3326, 2682, 3259, 2106,
+ 2107, 2108, 2109, 2110, 2111, 5099, 2077, 849, 3273, 849,
+ 472, 5887, 3326, 5152, 2078, 3326, 2248, 4584, 802, 5698,
+ 2633, 2077, 2077, 2079, 802, 802, 3536, 3634, 4392, 2078,
+ 2078, 710, 674, 3043, 4993, 3465, 3440, 2099, 2079, 2079,
+ 4048, 2302, 3635, 2106, 2107, 2108, 2109, 2110, 2111, 3441,
+ 2312, 6394, 2080, 2104, 2105, 2106, 2107, 2108, 2109, 2110,
+ 2111, 4831, 3269, 2910, 802, 2325, 2100, 2101, 674, 5692,
+ 1471, 2077, 940, 2804, 3450, 4761, 1459, 2920, 1417, 2078,
+ 2326, 5700, 5702, 2853, 1886, 2338, 3719, 3707, 2079, 4639,
+ 5767, 4921, 4922, 4905, 3786, 3786, 4797, 4798, 2077, 4801,
+ 4802, 3652, 3708, 4648, 2341, 2342, 2078, 4651, 802, 2365,
+ -1889, 2188, 2074, 2430, 2077, 2079, 5140, 2206, 6140, 2072,
+ 6139, 2980, 2078, 1419, 2898, 4792, 2080, -2180, 674, 2388,
+ 2102, 2079, 3336, 4207, 1887, 2077, 2077, 5918, 1459, 1309,
+ 643, 6019, 1471, 2078, 2078, 2531, 3586, 2412, 2077, 3000,
+ -2180, 5353, 2079, 2079, 5842, 3984, 2078, 1876, 1896, 2081,
+ 6032, 6318, 5548, 4181, 2986, 2079, 3470, 5126, 2421, 2422,
+ 539, 4856, -3711, 5610, 1441, 2668, 3809, 516, 5144, 2643,
+ 3871, 2080, 2439, 2232, 6091, 6095, 4209, 5830, 6230, 2649,
+ 4239, 4070, 2429, 802, 1888, 820, 2080, 2080, 514, 3044,
+ 4237, 4166, 4396, 812, 802, -3710, 1230, 802, 1938, 1244,
+ 2909, 3571, 714, 511, 4407, 2103, 3195, 4262, 802, 3572,
+ 2089, 2090, 2091, 3189, 2077, -1889, 674, 2077, 3734, 5244,
+ 1393, 2077, 2078, 2081, 1418, 2078, 2290, 2797, 2798, 2078,
+ 760, 2079, 5238, 4453, 2079, 4455, 2080, 2306, 2079, 645,
+ -2119, 1339, -2119, 5414, 1235, 1214, 6237, 3190, 2077, 4934,
+ 4935, 3406, 6134, 942, 1458, -1889, 2078, 730, 2933, 3525,
+ 2102, 3526, 5034, 2080, 5526, 2079, 2445, 3284, -3284, 3284,
+ 1420, -348, -3491, 3078, 884, 714, 2633, 5127, 2081, 2080,
+ 4393, 2967, 2968, 1837, 2970, 2972, 2973, 2974, 5047, 2965,
+ 2077, 5857, 777, 2081, 2081, 3872, 2983, 4832, 2078, 4155,
+ 2080, 2080, 4194, 3371, 1877, 3870, 2099, 2079, 1236, 885,
+ 1887, 6091, 6122, 2080, 2998, 6095, 5245, 4141, 4144, 4147,
+ 4148, 3995, 2908, 1340, 4292, 4127, 4861, 4130, 6319, 4195,
+ 3023, 2077, 4499, 4006, 2877, 2100, 2101, 4160, 5612, 2078,
+ 854, 855, 6320, 2081, 1393, 2103, 2077, 3274, 2079, 4134,
+ 4135, 3062, 2702, 720, 2078, 1393, 1393, 6395, 715, 3364,
+ 2077, 2482, 1897, 2079, 940, 5427, 1333, 3175, 2078, 5768,
+ 2081, 2532, -1849, 5631, 4215, 5440, 5441, 2079, 3081, 1968,
+ 1969, 1970, 5152, 2077, 3735, 2077, 2081, 5141, 2916, 2080,
+ 2431, 2078, 2080, 2078, 5919, 636, 2080, -3491, 4471, 2102,
+ 2079, -1889, 2079, 2233, 3871, 5145, 6006, 2081, 2081, -3711,
+ 5309, 2945, 4128, 711, 4129, 2189, -1889, 4773, 2077, 2077,
+ 2081, 2207, 4677, 2080, 2017, 2981, 2078, 2078, 2503, 2022,
+ 5182, 715, 3810, 2077, 829, 2079, 2079, 3112, 3115, 2434,
+ 4208, 2078, 1214, 5202, 2505, 1878, 2077, 675, 3587, 2077,
+ 2079, 942, 1939, 5354, 2078, -1889, 4397, 2078, 2561, 3116,
+ 3117, 3107, 3108, 2079, 3191, 2080, 2079, 3537, 2987, 2077,
+ 3118, 3119, 3120, 2077, 2077, 2435, 5851, 2078, 5853, -1274,
+ 2077, 2078, 2078, 675, 2103, 3675, 2079, 850, 2078, 2183,
+ 2079, 2079, 6134, 4429, 3628, 902, 2081, 2079, 3874, 2081,
+ -3707, 2234, 1869, 2081, 3461, 4306, 2080, 5672, 3736, 6091,
+ 6095, 3648, 3067, 1891, 5769, 3653, 2405, 2235, 2405, 2405,
+ 714, 2080, 1422, 2304, 2558, 2434, 4360, -1849, -3284, 3872,
+ 2081, 5033, 802, 2799, 2570, 2080, 2800, 5037, 5038, 3815,
+ 1258, 3818, 3819, 675, 5150, 2580, 1823, 1409, 820, 2077,
+ 820, 802, 5970, 3100, 3351, 3352, 5299, 2078, 2080, 5920,
+ 2080, 2435, 940, 5314, 3106, 2077, 2079, 2077, 3226, 5307,
+ 3665, 3778, 2081, 2078, 3666, 2078, 3668, 3779, 2077, 1388,
+ -3294, 820, 2079, 5752, 2079, 5183, 2078, 820, 3590, 3591,
+ 3673, 5617, 4464, 2080, 2080, 2079, 3555, 2123, 6284, 4209,
+ -3491, 3873, 2842, 3681, 3682, 3151, 886, 5942, 2080, 4209,
+ 4209, -3705, 5889, 2081, 3632, -3708, 3302, 5349, 4534, 5742,
+ 4535, 2080, 2645, 714, 2080, 953, 5223, 3368, 2081, 2077,
+ 3734, 5237, 4240, 4942, 2184, 5974, 5247, 2078, 2318, 5974,
+ 4777, 675, 2081, -3706, 2080, 5971, 2079, 1818, 2080, 2080,
+ 802, 820, 6321, 2077, 6275, 2080, 6274, 4430, 637, 4466,
+ 2077, 2078, 3203, 2261, 5445, 2081, 3392, 2081, 2078, 4133,
+ 2079, 2946, 691, 6334, 4948, 3707, 715, 2079, 3599, 3600,
+ 5815, 2843, 4828, 4663, 706, 3353, 2118, 3643, -1849, 2077,
+ 3708, 6251, 4595, 6253, 4596, 516, 2074, 2078, 5246, 4664,
+ 2081, 2081, 6165, 2072, 638, 5921, 2079, 858, 859, 1434,
+ 6175, 3385, 2507, 6179, 5345, 2081, 4300, 2077, 2127, 2846,
+ 1870, 2459, 3223, 2634, 2080, 2078, 2877, 690, 2081, 4817,
+ 2508, 2081, 3874, 1892, 2079, 2150, 5346, 1258, 907, 869,
+ 2080, 5942, 2080, 4778, 5402, 887, 5184, -3707, 802, 3538,
+ 3193, 2081, 802, 2080, 5972, 2081, 2081, 1188, 802, 1410,
+ 4431, 3188, 2081, 2678, 3451, 3452, 2638, 5825, 1435, 2827,
+ 2844, 6335, 5831, 5832, 3086, 3386, 748, 3697, 5974, 715,
+ 6302, 5151, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111,
+ 3194, 2077, 516, 6285, 3875, 5974, 3735, 722, 5403, 2078,
+ 4950, 5800, 1871, 870, 2080, 4952, 5914, 2077, 2079, 2638,
+ 4007, 6244, 4953, 2835, 3458, 2078, 2319, 6146, 4943, 4241,
+ 820, 2440, 2882, 3163, 2079, 4209, 6336, 3195, 2080, 954,
+ 2124, 2081, 3087, 6252, 3284, 2080, 2077, 3559, 802, 3284,
+ -3294, 3468, 820, 820, 2078, 2902, 3284, 2081, 3269, 2081,
+ 820, 2934, 6203, 2079, 749, 3471, 6205, 3544, -3705, 2077,
+ 2081, 5963, -3708, 5965, 2080, 3644, 1465, 2078, 2262, 6029,
+ 4209, 5084, 2951, 5410, 5410, 3347, 2079, 867, 3469, 3474,
+ 812, 812, 802, 812, 812, 812, 812, 802, 820, 802,
+ -3706, 3475, 2080, 1234, 1819, 812, 905, 5404, 5979, 1239,
+ 3400, 2638, 1240, 4594, -1274, 4597, 3405, 724, 1231, 6245,
+ 6010, 2081, 2997, 812, 5216, 820, 6308, 6214, 1297, 3164,
+ 3736, 5602, 5958, 2077, 15, 2368, 2108, 2109, 2110, 2111,
+ 1288, 2078, 3003, 5362, 5363, 2081, 802, 5974, 6408, 1238,
+ 2079, 2077, 2081, 2639, 2299, 3196, 2452, 1237, 802, 2078,
+ 3823, -914, 2366, -914, 5446, 4845, 5447, 3197, 2079, 5514,
+ 2679, 5515, 3625, 4483, 4484, 5405, 2080, 3483, 2482, 1927,
+ 3495, 2081, 6083, 24, 3500, 4, 5, 3573, 1459, 2430,
+ 2640, -1889, 2080, -2119, -2119, 6277, 2639, 2077, 2991, 2634,
+ 5448, 2369, 1466, 6101, 2394, 2078, 6225, 6226, 820, 2081,
+ 3165, 3501, 2370, 849, 2079, 5801, 5802, 3619, 5522, 5711,
+ 2371, 2080, 1955, 802, 5396, 2928, 5706, -72, 3083, 5523,
+ 5449, 2077, 2453, 3988, 4214, 4246, 4247, 4668, 942, 2078,
+ 849, 2992, -725, 3596, 2080, 5974, 5476, 2372, 2079, 820,
+ 6314, 6113, 5917, 3504, 3733, 6215, 3102, 2555, 820, 820,
+ 820, 6301, 3348, 2929, 802, 5579, 762, 3198, 812, 812,
+ 6142, 6144, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2573,
+ 6324, 3620, 802, 2081, 3660, 4257, 4846, 42, 2639, 3661,
+ 5541, 6409, 3472, 802, 802, 5477, 2300, 905, 3664, 2081,
+ 2434, 820, 1804, 2373, 3667, 5603, 1927, 760, 2080, 3505,
+ 5877, 2395, 1393, 2509, 6192, 5803, 6340, 6195, 1393, 6366,
+ 4, 5, 867, 3521, 5572, 2482, 2080, 2077, 2081, 47,
+ 1934, 2374, 6216, 1393, 3690, 2078, 2435, 3199, 49, 5542,
+ 3715, 5397, 6412, 2445, 2079, -2364, 3524, 51, 3531, 940,
+ 763, 2081, 4890, 6388, 5048, 4114, 4442, 6378, 820, 4443,
+ 765, 60, 5878, 5450, 3707, 5567, 2877, 802, 3132, 4115,
+ 1328, 1467, 2080, 802, 3133, 2405, 3134, 3218, 2993, 3708,
+ 1935, 4029, 4062, 6401, 5580, 3305, 4182, 5804, 3798, 1468,
+ 6323, 5410, 5960, 3305, 5490, 5794, 4303, 5451, 3815, 802,
+ 1906, 1906, 4186, 1906, 1906, 1906, 2080, 3496, 4189, 4190,
+ 1906, 3571, 4532, 782, 5850, 2081, 5201, 2077, 2930, 5030,
+ 4444, 4454, 820, 6413, 2845, 2078, 5278, 5782, 4508, 3765,
+ -2364, 820, 4533, 2081, 2079, 3499, 4548, 3773, 3775, 3767,
+ 2476, 5478, 3768, 4550, 1936, 5877, 4309, 4891, 3776, 3135,
+ 4313, 2077, 5292, 4327, 5435, 1329, -914, 5296, 5414, 2078,
+ 3341, 807, 3312, 2077, 5640, 5641, 2077, 3699, 2079, 5491,
+ 5308, 2078, 541, 4350, 2078, 2890, 2431, 813, 545, 2081,
+ 2079, 548, 2212, 2079, 2583, 1430, -2364, 2476, 1834, 5651,
+ 5333, 2445, 2077, -598, 3343, 6402, 6403, 5878, 788, 5436,
+ 2078, 2857, 2080, 3350, 802, 802, 4328, 2891, 4157, 2079,
+ 874, 1330, 4572, 2081, 4184, 814, 1937, 2077, 544, 3362,
+ 3362, 2671, 4955, 4956, 3284, 2078, 543, 1393, 4573, 2077,
+ 5321, 789, 2499, 2077, 2079, 4465, 816, 2078, 4512, 3507,
+ 2405, 4999, 1814, 820, 4519, 2077, 2079, 802, 2077, 4351,
+ 2079, 4975, 6072, 2078, 5188, 5189, 2078, 802, 6000, 5054,
+ 2910, 5237, 2079, 4468, 3403, 2079, 4995, 5013, 5437, 2077,
+ 3384, 6009, 3409, 781, 2077, 3411, 3390, 2078, 626, 3391,
+ 2684, 2892, 2078, 2389, 5025, 5375, 2079, 3949, 5865, 6371,
+ 3508, 2079, 2080, 830, 541, 4506, 4507, 2858, 868, 782,
+ 545, 5807, 5737, 548, 545, 2202, 4516, 873, 3453, 2081,
+ 5866, 3723, 3724, 2859, 3510, 6088, 3389, 839, 3453, 5750,
+ 5327, 3511, 6392, 3782, 3388, 841, 2080, 3783, 2203, 2077,
+ 5337, 2671, 5759, 516, 5761, 720, 2671, 2078, 2080, 2077,
+ 544, 2080, 5190, 1927, 544, 5228, 2079, 2078, 543, 542,
+ 3514, 3950, 872, 4248, 3444, 2671, 2079, 5002, 5867, 4894,
+ 3625, 5004, 2893, 6073, 2369, 942, 4895, 2080, 2671, 4055,
+ 3987, 790, 1814, 853, 2077, 2370, 1814, 2477, 3515, 893,
+ 4060, 4061, 2078, 3142, 2860, 3544, 2077, 6072, 3725, 2077,
+ 2745, 2079, 2080, 2077, 2078, 2748, 1417, 2078, 4249, 2081,
+ 1418, 2078, 1854, 2079, 2080, 3619, 2079, 4385, 4386, 5229,
+ 2079, 4387, 4388, 4389, 2764, 5230, 5364, 3949, 2877, 5191,
+ 2080, 3949, 895, 2080, 2477, 802, 3326, 2784, 956, 802,
+ 3833, 3834, 1471, 2081, 6332, 6332, 1166, 4096, -2358, 4173,
+ -2358, 1419, 3533, 1164, 2080, 2081, 1420, 3387, 2081, 2080,
+ 2077, 788, 3519, 684, 4100, -1334, 1182, 2289, 2078, -1334,
+ 4250, 2478, 1855, 2479, 1292, 1856, 3143, 2079, 3522, 3620,
+ 2077, 542, 6368, 2074, 2081, 871, 940, 1294, 2078, 1421,
+ 2072, 3950, 2368, 4748, 789, 3950, 694, 2079, 1309, 2317,
+ 2213, 700, 1857, 2001, 2374, 2322, 2323, 3529, 6073, 2081,
+ -1334, 1858, 1314, 4251, 2080, -1334, 1304, 5589, 2478, 2077,
+ 2479, 2081, 2018, 2019, 2080, 3200, 472, 2078, 5600, 3200,
+ 3541, 4841, 3326, 6232, 1184, 1317, 2079, 2081, 820, 820,
+ 2081, 3128, 1190, 3129, 2214, 820, 2215, 1290, -1334, 3362,
+ 3362, 686, 5453, 3780, 4564, 686, 4565, 5455, 2369, 2080,
+ 686, 2081, 820, 2480, 820, 1323, 2081, 3638, 3639, 2370,
+ 1198, 2080, 3615, 2150, 2080, 2150, 3618, 2371, 2080, 4,
+ 5, 2503, 3623, 5704, 1335, 3624, 1907, 1914, 1326, 1919,
+ 1920, 1921, 3659, 812, 4527, 1214, 1924, 2505, 812, 6381,
+ 6383, 714, 1230, 1230, 2372, 1244, 1244, 812, 4657, 2405,
+ 2480, 3553, 4536, 812, 4, 5, 2093, 4987, 1337, 3662,
+ 5279, 2081, 3622, 6075, 5968, 4, 5, 4462, 4748, 1199,
+ 3669, 2081, 4818, 4755, 790, 2080, 2216, 2481, 1344, 623,
+ 802, 3970, 3971, 3672, 781, 3972, 714, 3973, 1346, 3974,
+ 1235, 1235, 2818, 2819, 4707, 2080, 2248, 5374, 4537, -750,
+ 2373, 6184, 6185, 820, 3702, 802, 2081, 1360, -2311, 1358,
+ 1359, 1364, 1362, 1447, 1363, 4252, 4253, 4254, 2081, 5984,
+ 4649, 2081, 4650, 1532, 2481, 2081, 2217, 1393, 2374, 1437,
+ 1438, 1393, 4538, 802, 2080, 3263, 4221, 1366, 4662, 3264,
+ 3729, 3265, 849, 3266, 802, 5985, 959, 4449, 4976, 1370,
+ 3427, 5811, 2094, 1373, 1236, 1236, 3732, -2311, 3365, 2533,
+ 3366, 4977, 2534, 760, 4659, 1375, 5352, -2309, 2095, 4924,
+ 3756, 9, 1376, 2218, 3761, 3762, 802, 4978, 812, 5877,
+ 960, 3459, 2081, 2743, 714, 802, 3774, 812, 2411, 2503,
+ 802, 2413, 2413, 3621, 4131, 1414, 802, 715, 6075, 2093,
+ 1450, 14, 2081, 2504, 4624, 2505, -950, 4979, 4755, 1452,
+ 1350, 802, 1463, 1351, 1352, 3796, -2309, 624, 1353, 2388,
+ 3801, 5968, 4, 5, 1465, 1475, 961, 1200, 4543, 1201,
+ 20, 5878, 4936, 962, 4938, 1479, 4290, 1959, 650, 2096,
+ 1202, 2081, 715, 714, 23, 2077, 3502, 5986, 3503, 5987,
+ 1379, 1485, 3931, 2078, 3934, 1486, 1203, 1487, 1492, -3580,
+ 963, -2311, 2079, 2219, 825, 3431, 1007, 1008, 964, 3832,
+ 1011, 5969, 1013, 4342, 1015, 1497, 820, 3839, 1815, 650,
+ 28, 5559, 802, 2445, 2445, 5780, 4980, 2220, 4485, 4486,
+ 4487, 651, 825, 1500, 6001, 2094, 2482, 3940, 1350, 3941,
+ 1422, 1351, 1352, -2311, 965, 2507, 1950, 3305, 3305, 1816,
+ 1817, 2095, -2311, 1380, 1825, 3968, 1814, 1393, 4544, 5630,
+ -2309, -2311, 3942, 2508, 3941, 3943, 1824, 3944, 3924, 625,
+ 1258, 1837, 1849, 5913, 6071, -2311, 3933, 4652, 4653, 5970,
+ 715, 4654, 1853, 4655, 39, 4656, 2601, 4981, 653, 966,
+ 967, 4015, 4545, 4016, 820, 2492, 4317, 1851, 4318, -1334,
+ 1859, 1807, -2309, -950, 4546, 1861, 5043, 4547, 1862, -3445,
+ 714, -2309, 1863, 2077, 5601, 4373, 4440, 4374, 4441, 2150,
+ -2309, 2078, 2096, 3302, 1864, 2093, 3948, -3447, -3444, 653,
+ 2079, 3969, 5988, 4555, -2309, 3953, 4822, 4823, -3446, 715,
+ 4824, 4825, 1872, 3979, 626, 802, 4826, 4827, 1865, 5054,
+ 1874, 802, 820, 820, 2877, 2150, 50, 5582, 4561, 1873,
+ 2080, 6072, 6439, 1875, 820, 1808, 2717, -3580, 5969, 1879,
+ 4562, 2172, 5971, 1880, 5968, 4, 5, 1204, 2506, 1752,
+ 3952, 4556, 4559, 3503, 2266, 4563, 4570, 2266, 1881, 4571,
+ 4377, 4, 5, 1883, 627, 82, 714, 1884, 1471, 1471,
+ 1381, 4982, 4983, 3263, 1882, 2920, 2920, 3264, 3493, 3271,
+ 4574, 3266, 4567, 2507, 4568, 4963, 4897, 968, 4898, 1942,
+ 5007, 2094, 2266, 5944, 1895, 1885, 2077, 5810, 5283, 5984,
+ 5284, 2508, 1956, 2718, 2078, 5041, 5970, 2095, 1258, 820,
+ 3615, 820, 1957, 2079, 3618, 1958, 714, 1911, 1911, 1911,
+ 3623, 5989, 4593, 3624, 2077, 5985, 3948, 2012, 1963, 5328,
+ 3948, 1964, 2078, 2492, 1965, 3953, 715, 2081, 655, 3953,
+ 5320, 2079, 6073, 4352, 4353, 1966, 4355, 4357, 5862, 2044,
+ 5326, 5972, 1967, 1971, 1910, 1910, 1910, 969, 2080, 5285,
+ 3622, 5286, 1909, 1909, 1909, 5031, 5032, 2173, 5287, 2719,
+ 5288, 2720, 1973, 3951, 1471, 2048, 1365, 2721, 2096, 2174,
+ 3952, 4719, 1974, 1975, 3952, 5338, -950, 5930, 2688, 2689,
+ 2690, 4084, 2691, 1976, 2692, 5947, 2693, 5339, 5315, 5971,
+ 5783, 5953, 5954, 5789, 5957, 5322, 5335, 2266, 5336, 5343,
+ 3573, 2266, 4113, 5795, 5355, 5380, 5356, 5381, 2077, 4086,
+ 4984, 4985, 715, 5400, 1977, 5401, 2078, 5986, 5513, 5987,
+ 4318, 1978, 5231, 2499, 2175, 2079, -950, 2722, 1979, 2074,
+ 516, 4137, 2176, 1980, 4385, 4386, 2072, 3123, 4387, 4388,
+ 4389, 5969, 1981, 766, 1205, 1206, 1207, 1208, 1982, 628,
+ 1393, 1393, 4748, 629, 5654, 2081, 4666, 1983, 1984, 802,
+ 714, 2080, 715, 4748, 820, 820, 2077, 2177, 2405, 2113,
+ 5770, 2723, 5771, 5232, 2078, 1908, 1908, 1908, 2097, 5756,
+ 3277, 3621, 5136, 2079, 767, 970, 1987, 1988, 5374, 2080,
+ 1989, 5969, 3707, 3951, 820, 4233, 2509, 3951, 5972, 3290,
+ 768, 2114, 5813, 4088, 5814, 1996, 5990, 3708, 3295, 5970,
+ 1997, 1998, 1999, 539, 3297, 2002, 4155, 4200, 2003, 4202,
+ 516, 5819, 3309, 5814, 5820, -3547, 5814, 541, 630, 5863,
+ 2004, 4318, 3321, 545, 2005, 3323, 548, -3580, 2368, 1234,
+ 1234, 514, 540, 566, 4269, 1239, 1239, -1676, 1240, 1240,
+ 489, 2827, 490, 491, 1231, 1231, 511, 4775, 571, 5970,
+ 6074, 2006, 5988, 802, 5233, 2007, 2724, 6296, 2081, 5864,
+ 4986, 4318, -723, 544, 6012, 2008, 6013, 2725, 6043, 2178,
+ 6044, 543, 6075, 2080, -1675, 1238, 1238, 6052, 2009, 6053,
+ -2311, 5559, 4755, 1237, 1237, 2010, 2081, 2077, 6087, 2011,
+ 4374, 5973, 5971, 4755, 2369, 2078, 2179, 6133, 2013, 1353,
+ 6212, 3193, 6213, 2014, 2079, 2370, 715, 769, 5931, 2015,
+ 4748, 2097, 6247, 2371, 5068, 5932, 4264, 6248, 6260, 5356,
+ 6261, 750, 751, 2016, 2020, 812, -2081, 6269, 2021, 6270,
+ 5933, 2080, -725, 802, 6286, 5214, 5814, 2023, 770, -2309,
+ 2372, 3194, 5971, 2115, 6288, 802, 5814, 5911, 6201, 802,
+ 3793, 6289, -2281, 5814, 2509, 820, 2024, 2025, 752, -725,
+ 2026, 2027, 5214, 2882, 2028, 2029, 1005, 1006, 1007, 1008,
+ 1009, 1010, 1011, 1012, 1013, 1014, 1015, 5789, 3195, 4461,
+ 2081, 4549, 6315, 625, 5814, 2030, -725, 2031, 2032, 767,
+ 820, 820, 2116, 6325, 542, 5814, 2373, 753, 2033, 2034,
+ 1471, 5972, 6348, 2037, 5356, 3707, 4032, 2920, 4966, 6425,
+ 4446, 6426, 4931, -725, 2038, 2039, 767, 2117, 959, 5930,
+ 3708, 5216, 2040, 2041, 2374, 2042, 820, 2043, 4366, 4367,
+ 4368, 4369, 3707, 4371, 4372, 2045, 2077, 6117, 2081, 2046,
+ 2047, 1814, 4400, 9, 2078, 2049, 3794, 3708, 5973, 2050,
+ 4755, 5972, 960, 2079, 2121, 2051, 4557, 5934, 626, 2688,
+ 2689, 5459, 2080, 5460, 2052, 5461, 1037, 5462, 2055, 5008,
+ 5935, 4415, 4416, 14, 4418, 2077, 4420, 4421, 4422, 4423,
+ 4424, 4425, 4426, 2078, 4428, -725, 3949, 5936, 4437, 2056,
+ 2059, 2180, 2079, 2060, 2061, 4560, 3196, 2097, 961, 2062,
+ 1806, 2063, 20, 2064, 5215, 962, 2065, 2120, 3197, 1811,
+ 2119, -2542, -725, -2528, -2529, 4459, 23, 2126, 2134, 541,
+ 5231, 2135, 769, 4748, 2125, 545, 2136, 2137, 548, 6054,
+ 2077, 2142, 963, 2168, 2169, 802, 637, 2171, 2078, 4748,
+ 964, 2190, 2208, 3235, 3236, 1057, 2209, 2079, 2210, 769,
+ 3950, 2211, 28, -725, 1810, 2422, 820, 820, 3248, 2230,
+ 3250, 802, 2231, 2240, 2243, 544, 5990, 2244, 2254, 2081,
+ 2181, 5232, 754, 543, 4498, 5173, 965, 6374, 6375, 2182,
+ -725, 6376, 5174, 6377, 5175, 2266, 2298, 2308, 6430, 755,
+ 3707, 5968, 4, 5, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 1012, 1013, 1014, 1015, 3708, 2314, 2310, 3198, 2320,
+ 1911, 2080, 2321, 714, 1279, 756, 39, 2327, 905, 2328,
+ 2330, 966, 967, 6158, 2332, 3484, 2336, 5622, 2353, 5937,
+ 2354, 5234, 2355, 6350, 1071, 2357, 2366, 5720, 5721, 2377,
+ 5723, 2378, 2381, 2391, 5216, 2397, 5984, 1910, 788, 648,
+ 2080, 2407, -1334, 3251, 3252, 1909, -1334, 2408, 757, 2418,
+ 5931, 5973, 2427, 4755, 2428, 2437, 2441, 5932, 6186, 4576,
+ -723, 5216, 5985, 2444, 2456, 2460, 2466, 1809, 3199, 4755,
+ 2473, 789, 5933, 2487, 2496, 2500, 2492, 2521, 50, 771,
+ 2528, 2537, 2544, 2545, 1037, 2554, 542, -1334, 4710, 6257,
+ 3235, 3236, -1334, -2081, -2281, 2080, 649, -166, 869, 2557,
+ 4614, 2559, 2560, 2564, 2565, 3248, 3381, 3250, 2081, 2567,
+ 2573, 2571, 2577, 2579, 820, 2591, 802, 82, 2586, 2589,
+ 3843, 820, 820, -950, 4632, -1334, 2593, 4635, 4636, 2594,
+ 905, 5235, 2595, 2596, 867, 2598, 2599, 6265, 4631, 968,
+ 2623, 2631, 2642, 1948, 5624, 658, 2646, 2081, 2644, 4342,
+ 2647, 2648, 2650, 2651, 2653, 6438, 2654, 2658, 2669, 715,
+ 2670, 2671, 870, 1057, 5986, 650, 5987, 2680, 1908, 2687,
+ 2701, 2729, 772, 2743, 5649, 2742, 2755, 651, 2761, 2744,
+ 2757, 5537, 5538, 4686, 5540, 516, 516, 2760, 5969, 5545,
+ 1995, 2808, 5549, 2812, 2823, 5552, 5553, 2833, 2837, 5934,
+ 3251, 3252, 2081, 5561, 2852, 5562, 2856, 2883, 2884, 969,
+ 2912, 790, 5935, 2918, 5568, 2911, 2924, 2917, 2935, 5216,
+ 2963, 2962, 2943, 2940, 6257, 802, 2964, 820, 2989, 5936,
+ 802, 802, 5870, 3004, 5871, 5872, 812, 4726, 4, 5,
+ 652, 5273, 3005, 3006, 5217, 3007, 3009, 3010, 3011, 3016,
+ 3029, -2131, 1071, 4780, 4711, 4712, 5970, 3026, 802, 802,
+ 3030, 5297, 3032, 3035, 3036, 4808, 2076, 4888, 2077, 3038,
+ 6265, 5217, 3037, 3039, 3046, 653, 2078, 3047, 3056, 3057,
+ 3058, 3059, 3060, 3061, 6329, 2079, 3063, 3064, 3070, 3074,
+ -914, 3071, -914, 3079, 3075, 3084, 4377, 3090, 3844, 5105,
+ 5106, 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5988,
+ 5116, 5117, 5118, 5119, 5120, 5121, 5122, 5123, 2430, 5124,
+ 5125, 3093, 3098, 5129, 5130, 3121, 6419, 2706, 2707, 2708,
+ 2709, 3124, 3968, 3125, 3126, 3127, 3130, 3138, 3139, 3140,
+ 6429, 3152, 3155, 3148, 3845, 3153, 6419, 970, 3156, 5971,
+ 3169, 3168, 3172, 6429, 5218, 3173, 1279, 3192, -2553, 2706,
+ 2707, 2708, 2709, 3206, 4727, 5623, 3220, 3215, 3207, 2156,
+ 3216, 5937, 5624, 2710, 2711, 2712, 3221, 3222, 3227, 3261,
+ 2548, 5218, 3258, 3288, 3296, 3314, 3317, 654, 3924, 3322,
+ 3339, 3333, 3338, 1421, 3344, 3345, 959, 3346, 3354, 3357,
+ 3377, 3401, 3614, 3402, 3420, 2710, 2711, 2712, 3969, 3423,
+ 3425, 3426, 3428, 4926, 655, 3437, 3439, 3442, 3438, 3445,
+ 3443, 9, 3846, 3453, 2713, 2714, 5239, 3509, 3512, 5234,
+ 960, 5249, 3460, 3565, 4729, 3577, 3464, 3467, 3476, 3477,
+ 3584, 3479, -1475, 2080, 3480, 3481, 3482, 516, 3552, 5625,
+ 4949, 14, 5626, 5409, 3486, 3494, 2713, 2714, 5972, 2297,
+ 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
+ 1015, 3498, 2368, 3506, 3513, 3535, 961, 869, 3517, 3518,
+ 20, 3530, 3523, 962, 3527, 3847, 2368, 3528, 2715, 3534,
+ 3540, 4730, 4731, 4732, 23, 3545, -1334, 2111, 5544, 3558,
+ 2132, 3848, 3849, 3567, 5744, 3568, 3850, 3851, 3852, -1641,
+ 963, 4733, 1167, 3569, 3570, 5677, 2035, 3589, 964, 2053,
+ 2715, 2057, 3592, 3594, 4998, 3948, 3595, 3597, 3598, 3605,
+ 28, 3601, 3606, 3627, 3953, 2289, 3642, 3607, 2369, 5235,
+ 2368, 870, 5391, 3646, 3645, 3647, 3654, 3650, 3655, 2370,
+ 2081, 2716, 2369, -73, 965, 3670, 4632, 2371, 3658, 3674,
+ 1037, 2406, 3684, 2370, 2406, 4734, 3687, 4735, 3694, 4614,
+ 4631, 2371, 5532, 820, 3853, 3688, 5029, 3712, 5434, 3952,
+ 4748, 3713, 3741, 2716, 2372, -914, 3743, 4736, 3745, 3749,
+ 5028, 3781, 3744, 3748, 39, 656, 3806, 3788, 2372, 966,
+ 967, 3792, 3813, 3817, 3825, 4737, 2369, 2827, 4799, 3821,
+ 3824, 3835, 4738, 657, 3836, 5547, 5055, 2370, 3837, 3840,
+ 3841, 5056, 3838, 5990, 1168, 2371, 3854, 4739, 5066, 3842,
+ 3879, 3882, 1169, 516, 4740, 3885, 3889, 3894, 3895, 1057,
+ 2373, 3896, 3897, 3898, 3921, 3899, 2717, 1170, 3900, 4741,
+ 3901, 3902, 2372, 3928, 2373, 3903, 5146, 1171, 1172, 1173,
+ 3904, 658, 4803, 4690, 3905, 802, 50, 1174, 2374, 3906,
+ 3907, 5100, 3908, 5416, -3849, 802, 3909, 5625, 2717, 3910,
+ 5626, 3911, 2374, 3912, 1814, 5432, 3913, 3914, 659, 5627,
+ 3915, 3916, 3917, 4, 5, 3918, 3935, 660, 3929, 5128,
+ 3958, 3959, 3951, 3936, 3934, 82, 4742, 3975, 2373, 3978,
+ 3981, 3930, 3931, 2718, 3932, 3982, 4743, 3994, 5973, 2482,
+ 4755, 3996, 3984, 3997, 3999, 3998, 4004, 968, 1071, 1807,
+ 4009, 2269, 4000, 4008, 4010, 4012, 2374, 4056, 4026, 4057,
+ 4058, 4071, 4072, 4073, 4079, 2718, -1684, 5154, 4092, 5901,
+ 4124, 4123, 4111, 3796, 4744, 4138, 5157, 4112, 4, 5,
+ 4125, 4161, 2882, 4139, 5669, 4151, 4152, 4745, 5674, 5675,
+ 4153, 1814, 3947, 3578, 4163, 4691, 4167, 4170, 4169, 2719,
+ -3849, 2720, 820, 4692, 4171, 4174, 4175, 2721, 4187, 4179,
+ 4188, 4180, 2946, 1808, 5205, 2945, 2269, 969, 4693, 3326,
+ 4212, 5156, 4226, 3366, 4227, 1175, 4746, 4232, 4694, 4695,
+ 4696, 2719, 4747, 2720, 4231, 4236, 3949, 1176, 4697, 2721,
+ 4245, 4272, 4265, 4278, 4238, 4244, 4280, 4282, 4283, 4284,
+ 5100, 4307, 4308, 4311, 4312, 4339, 4748, 4335, 4348, 4349,
+ 812, 5623, 4380, 4381, 4382, 5277, 4398, 2722, 5624, 4402,
+ 4408, 4452, -2034, 4460, 4409, 4463, 4410, 4469, 516, 4412,
+ 4493, 3342, 4473, 4475, 4481, 4480, 5290, 4510, 4501, 4503,
+ 4749, 4511, 4566, 4517, 3397, 4577, 4520, 4750, 4600, 2722,
+ 3950, 4521, 5298, 4578, 1906, 1906, 1906, 4522, 4523, 516,
+ 3614, 2723, 4588, 4589, 4592, 6398, 4617, 4602, 4618, 4603,
+ 4604, 4605, 3947, 4606, 4607, 4621, 3947, 4608, 4626, 4615,
+ 514, 4751, 4641, 4619, 4622, 4642, 4647, 1177, 4660, 4665,
+ 4678, 1911, 4666, 2723, 5155, 4667, 4752, 4753, 4689, 4681,
+ 4687, 3968, 4708, 3269, 4709, 970, 4715, 4716, 4718, 4754,
+ 4721, 4770, 4784, -1800, 2270, -1805, 4806, 4811, 4814, 4830,
+ 4820, 4815, 4835, 4821, 4848, 674, 4698, 1178, 1910, 4901,
+ 4893, 4916, 4920, 4614, 4927, 4928, 1909, 4933, 4699, 4941,
+ 4954, 1179, 4957, 4960, 4969, 4958, 4755, 4970, 5000, 3537,
+ 4583, 5009, 5011, 4325, 5016, 5012, 2724, 5015, 5017, 2895,
+ 5021, 5035, 5036, 5049, 51, 5072, 5067, 2725, 5073, 5068,
+ 5074, 5078, 5075, 5076, 2827, 2150, 5077, 3969, 5081, 2270,
+ 4888, 5101, 5102, 5103, 516, 4686, 5115, 4859, 2724, 5143,
+ 5165, 5845, -262, 5824, 5168, 2621, 5178, 5180, 820, 2725,
+ 5170, 5100, 5194, 5399, 5207, 5371, 5385, 5386, 5387, 2879,
+ 5208, 5209, 5241, 5225, 5216, 5227, 5240, 5250, 802, 5251,
+ 5252, 5253, 5254, 4700, 5255, 5257, 5258, 6305, 5259, 5268,
+ 5260, 5271, 5261, 5274, 820, 5275, 5289, 5282, 4701, 5293,
+ 5294, 5301, 5304, 5306, 5430, 5431, 5300, 5310, 5311, 5312,
+ 5319, 5323, 5325, 5467, 5444, 3924, 5324, 5329, 5331, 1908,
+ 2271, 5334, 5341, 5344, 5366, 5342, 5350, 5466, 5358, 5368,
+ 5382, 5480, 1161, 5369, 2272, 1814, 2273, 5377, 4702, 5370,
+ 5378, 5389, 5414, 5392, 3924, 5393, 5485, 1995, 5497, 5505,
+ 5506, 5489, 4703, 5507, 5510, 5517, 5154, 5512, 5518, 5519,
+ 5520, 5503, 2740, 1995, 5529, 5157, 5535, 5528, 2274, 5527,
+ 5530, 5533, 5546, 4396, 5550, 5551, 5583, 5539, 5585, 1161,
+ 3949, 2275, 5609, 5625, 5587, 2271, 5626, 5607, 5611, 5613,
+ 869, 5100, 5556, 5615, 5635, 5786, 5616, 5618, 5621, 2272,
+ 5632, 2273, 5566, 5647, 5066, 5066, 802, 5653, 5666, 5569,
+ 5156, 5570, 5571, 5648, 2276, 5658, 5555, 5659, 2827, 5667,
+ 5662, 5670, 5686, 5691, 5665, 802, 5565, 5693, 5682, 5684,
+ 5717, 5066, 2277, 2274, 6126, 5689, 5690, 5696, 5066, 5698,
+ 4441, 5722, 5713, 5100, 3950, 5724, 2275, 5714, 5725, 5727,
+ 5397, 5729, 5740, 5746, 870, 5757, 5751, 5747, 5591, 6434,
+ 5230, 5777, 5401, 5762, 5784, 5785, 5584, 5790, 5791, 5792,
+ 5794, 5797, 5812, 5808, 6126, 5828, 5816, 5402, 5818, 2276,
+ 5852, 5822, 5834, 5874, 5855, 5873, 516, 5838, 5876, 5884,
+ 5854, 2888, 5885, 5886, 5899, 5894, 5892, 2277, 1995, 5903,
+ 5893, 5902, 5904, 5910, 5912, 5916, 5926, 804, 5925, 5929,
+ 2278, 5949, 5950, 5961, 1911, 5955, 5997, 2279, 4726, 6011,
+ 6017, 6015, 6016, 6018, 6024, 6023, 6028, 2280, 6025, 6039,
+ 6037, 6045, 6046, 5155, 5639, 6049, 6041, 6042, 6070, 2955,
+ 6055, 2281, 6059, 6067, 3740, 3798, 5055, 5646, 6062, 6110,
+ 6098, 1910, 6084, 6086, 6104, 5066, 6106, 6108, 6112, 1909,
+ 6115, 6116, 6109, 6114, 6129, 6130, 5657, 6131, 6132, 5657,
+ 5657, 6166, 6173, 2282, 5663, 2278, 2283, 2877, 5100, 6202,
+ 6188, 6126, 2279, 6223, 6207, 6209, 5673, 6210, 6217, 6228,
+ 6234, 5681, 2280, 6220, 2284, 6243, 6235, -2526, -2527, 6229,
+ 6236, 6249, 4888, 6250, 6246, 6254, 2281, 5683, 1806, 5709,
+ 675, 5709, 4856, 4861, 6279, 6282, 6276, 1811, 6306, 6290,
+ 6291, 6300, 6351, 5685, 6304, 2285, 1804, 6309, 6372, 6354,
+ 3814, 6359, 5731, 6367, 5733, 6364, 6431, 6363, 2282, 6365,
+ 6373, 2283, 6385, 6380, 6389, 905, 6390, 6391, 6393, 6396,
+ 6397, 6399, 6394, 6395, 1949, 6405, 6406, 6420, 5695, 2284,
+ 5697, 6433, 1810, 4192, 1995, 3711, 4439, 5597, 5595, 4287,
+ 1161, 5596, 5952, 4829, 1161, 2877, 5694, 6003, 6138, 812,
+ 6298, 812, 1908, 5498, 5732, 1382, 1387, 3796, 1383, 3796,
+ 2285, 4917, 4456, 2442, 4451, 3948, 5376, 1161, 4923, 2903,
+ 3327, 1949, 3722, 4497, 3953, 4705, 1161, 4477, 3224, 3413,
+ 1499, 3412, 3414, 5841, 5735, 5100, 5066, 5100, 5840, 5688,
+ 5264, 820, 5100, 4875, 5066, 5753, 5020, 1906, 5026, 5100,
+ 5100, 6060, 6061, 5066, 6063, 6064, 6065, 6066, 5754, 5100,
+ 5351, 5634, 6172, 5798, 3582, 5100, 5066, 6259, 5066, 3952,
+ 6353, 6313, 6069, 5796, 3831, 2432, 5763, 6187, 5262, 5536,
+ 5999, 5664, 5578, 5267, 5734, 5408, 6333, 6227, 2406, 6231,
+ 3167, 1161, 1161, 1161, 1161, 6149, 5775, 1949, 6150, 6160,
+ 6151, 6152, 4988, 4951, 1161, 1809, 802, 4509, 6233, 6170,
+ 3278, 3960, 2512, 6297, 4580, 5003, 5005, 5001, 6358, 774,
+ 775, 6326, 5959, 6327, 4279, 6199, 5709, 6206, 6204, 5879,
+ 5730, 5728, 4720, 5265, 5576, 2451, 3294, 3094, 2624, 959,
+ 4263, 6035, 4261, 3888, 6168, 2827, 5883, 3260, 4168, 3703,
+ 4490, 4005, 4940, 803, 4126, 5657, 2416, 760, 4219, 5821,
+ 2415, 2367, 5295, 2139, 9, 4338, 5826, 802, 4176, 1416,
+ 5014, 5100, 5100, 960, 5856, 4095, 4093, 2821, 4146, 6180,
+ 4143, 802, 6183, 2880, 4610, 4530, 5316, 3924, 2677, 6299,
+ 6191, 6147, 3951, 6194, 14, 516, 812, 2731, 6384, 6382,
+ 1949, 2359, 6272, 3147, 3144, 5516, 2360, 2361, 2741, 5046,
+ 5861, 2362, 2364, 5719, 6155, 5379, 6156, 3137, 2686, 961,
+ 3808, 3158, 4599, 20, 5198, 5197, 962, 4334, 4598, 5629,
+ 959, 6048, 5891, 5365, 5620, 5100, 4341, 23, 5318, 5642,
+ 4337, 5100, 1439, 5888, 4994, 2424, 2410, 785, 2827, 4003,
+ 5203, 3800, 3337, 963, 5982, 9, 776, 5066, 5982, 1300,
+ 2569, 964, 2250, 3369, 960, 4939, 5809, 4363, 5905, 5909,
+ 5709, 874, 5059, 28, 5045, 5042, 5384, 1835, 6349, 6312,
+ 3676, 2995, 1284, 5709, 1285, 14, 1161, 1830, 3677, 4213,
+ 1949, 2417, 1287, 5839, 5924, 3716, 4944, 965, 5652, 2629,
+ -3702, -3702, -3702, 6352, 3082, 4998, 4768, 4768, 5521, 5726,
+ 961, 5657, 6437, 6432, 20, 6386, 6436, 962, 1951, 5956,
+ 3691, 5100, 3228, 4122, 4001, 4204, 4027, 5644, 23, 4205,
+ 1242, 3419, 3641, 4206, 1243, 5996, 4201, 39, 4198, 4197,
+ 812, 4640, 966, 967, 963, 3104, 3398, 1197, 2154, 3948,
+ 4836, 2133, 964, 812, 3878, 2923, 3229, 4172, 3953, 868,
+ 4281, 3421, 6030, 5778, 28, 545, 5303, 5206, 873, 2617,
+ 1334, 5100, 4889, 2618, 794, 778, 779, 780, 4781, 2313,
+ 3771, 802, 4937, 820, 5493, 1928, 3415, 1930, 965, 6031,
+ 5100, 802, 1949, 3230, 4500, 1949, 1940, 5982, 5061, 6005,
+ 6241, 5494, 5487, 3952, 5488, 544, 5504, 2562, 1941, 50,
+ 0, 1822, 0, 872, 5982, 0, 4768, 0, 0, 0,
+ 0, 6422, 0, 0, 0, 0, 6424, 0, 39, 0,
+ 0, 0, 0, 966, 967, 1995, 3462, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6085, 82, 0,
+ 0, 0, 6097, 0, 0, 0, 0, 0, 6103, 0,
+ 0, 0, 0, 0, 0, 1161, 0, 0, 0, 1161,
+ 968, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 820, 6111, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -3702, 802,
+ 50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5861, 0, 0, 0, 4686, 4686, 3532, 0, 0, 0,
+ 0, 0, 0, 1926, 0, 0, 3951, 0, 0, 3547,
+ 0, 0, 0, 4271, 0, 0, 871, 0, 0, 82,
+ 969, 5909, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5924, 0, 0, 0, 0, 0, 5982, 0, 0, 0,
+ 4888, 968, 0, 820, 0, 0, 0, 0, 6239, 0,
+ 6239, 6181, 6182, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3947, 0, 6193, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6208, 0, 0, 0, 0,
+ 0, 0, 0, 5657, 0, 5657, 5657, 0, 0, 0,
+ 0, 0, 0, 0, -3702, 0, 0, 0, 0, 3604,
+ 0, 0, 0, 2074, 0, 0, 0, 0, 0, 0,
+ 2072, 969, 0, 0, 0, 2156, 0, 0, 6238, 0,
+ 6238, 0, 0, 0, 0, 0, 4370, 0, 0, 0,
+ 0, 0, 0, 0, 5982, 0, 0, 0, 4888, 0,
+ 0, 0, 0, 0, 0, 0, 2827, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 970, 0,
+ 0, 4411, 0, 4413, 4414, 0, 801, 0, 820, 4419,
+ 0, 6266, 0, 0, 6267, 3231, 0, 4427, 0, 0,
+ 0, 4435, 0, 4438, 0, 0, 5657, 5657, 0, 0,
+ 6283, 0, 0, 0, 5982, 5982, 0, 5657, 0, 0,
+ 0, 0, 2621, 0, 0, 3232, 3233, 0, 3234, 3235,
+ 3236, 3237, 3238, 0, 3239, 3240, 3241, 3242, 3243, 3244,
+ 3245, 3246, 0, 3247, 3248, 3249, 3250, 0, 0, 0,
+ 0, 0, 5982, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2297, 2297, 0, 0, 820, 0, 0, 0, 970,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5657,
+ 0, 4768, 0, 0, 0, 0, 0, 0, 0, 4726,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2827, 0, 5153, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3251,
+ 3252, 0, -914, 0, -914, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1949, 0, 0, 0,
+ 2406, 0, 2406, 2406, 3820, 1161, 0, 1161, 0, 0,
+ 2430, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1318, 0, 0, 0, 0, 0, 0, 0, 4768, 0,
+ 0, 0, 0, 2827, 0, 0, 0, 820, 0, 0,
+ 0, 0, 820, 0, 0, 0, 4727, 2827, 0, 0,
+ 0, 0, 0, 2827, 0, 0, 1161, 1161, 0, 0,
+ 2827, 0, 1161, 0, 0, 0, 1161, 1161, 1161, 1408,
+ 0, 0, 0, 0, 0, 0, 1161, 1161, 1949, 0,
+ 0, 0, 1161, 0, 0, 0, 1161, 1161, 1161, 0,
+ 1161, 1161, 1161, 1949, 1949, 0, 0, 0, 1906, 0,
+ 1161, 0, 1161, 0, 0, 1161, 1161, 1161, 1161, 0,
+ 1161, 0, 1161, 1161, 0, 0, 4729, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1161, 1161, 1161, 1161,
+ 1161, 0, 1161, 1161, 1161, 1161, 1161, 1161, 0, 1161,
+ 1161, 0, 1161, 1161, 0, 1161, 1161, 0, 0, 1161,
+ 1161, 0, 1161, 1161, 0, 1161, 0, 1161, 0, 0,
+ 0, 1161, 1161, 1161, 0, 0, 1161, 1161, 1161, 1161,
+ 0, 1161, 0, 4730, 4731, 4732, 0, 0, 1161, 0,
+ 0, 0, 0, 0, 1161, 1161, 1161, 1161, 2621, 0,
+ 0, 0, 0, 4733, 0, 1161, 1161, 0, 1161, 1161,
+ 0, 0, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
+ 1161, 1161, 1161, 1161, 1161, 0, 0, 1161, 0, 0,
+ 0, 0, 1949, 0, 0, 0, 0, 0, 0, 1949,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1899, 4734, 0, 4735,
+ 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -914, 0, 4736,
+ 1949, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4768, 0, 4737, 4768, 0,
+ 0, 0, -1889, -1889, 4738, 0, 0, 0, 0, 0,
+ 4837, 4838, 4839, 0, -1889, 0, 0, 0, 0, 4739,
+ 0, 0, 5153, 0, 0, 0, 4740, 0, 0, 0,
+ 0, 0, 0, 0, 4908, 4911, 0, 4914, 0, 0,
+ 0, 4741, 0, 0, 0, 0, 0, 0, 0, 2633,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 909, 0, -1889, 0, 1161,
+ 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4742, 0,
+ 0, 0, 0, 0, 4149, 1949, 0, 910, 4743, 0,
+ 0, 0, 0, 0, 0, -1889, 1161, 0, 0, -1889,
+ 0, 1995, 0, -1889, 4768, 0, 0, 0, 912, 0,
+ 0, 0, -1889, -1889, 0, 0, 0, 913, 0, -1889,
+ 0, 0, 0, -1889, 0, 0, 4744, 0, -1889, 0,
+ -1889, 0, 0, 0, -1889, 0, 0, 0, 914, 4745,
+ 0, 0, -1889, 0, -1889, 0, 0, 0, 0, -1889,
+ 0, 1906, 915, 0, 0, 0, 0, 916, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2955, -1889,
+ 0, 0, 0, 4435, 0, 0, 0, 0, 4746, -1889,
+ 917, 0, -1889, 1161, 4747, 0, 0, 0, 0, 1949,
+ 0, 1949, 0, 0, 5006, 0, 0, -1833, -1833, 0,
+ 0, 0, -1889, 0, 0, 0, 0, 0, 4748, -1833,
+ 0, 1161, 0, 0, 0, 0, 0, 0, 1161, 0,
+ 0, -1889, 0, 0, 0, -1889, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1889, 0, 0, 0, 0, 918,
+ 0, 0, 4749, 919, 2633, 0, 0, 0, 0, 4750,
+ 0, 0, 0, -1889, 1804, 0, 0, 0, 0, 0,
+ 0, 920, 0, 0, 0, 921, 922, 0, -1889, 0,
+ 0, 0, -1833, 0, -1889, -1889, 0, 0, 0, 2251,
+ 0, 0, 0, 4751, 0, 2259, 0, 0, -1889, 0,
+ -1889, 0, 0, 0, 0, 0, 923, 0, 4752, 4753,
+ 0, 0, 0, 924, 925, 0, 0, 0, 0, 0,
+ -1833, 4754, 0, 0, -1833, 0, 0, 0, -1833, 0,
+ 0, 0, 0, 0, 0, 0, 0, -1833, -1833, 2406,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1833, 0,
+ 0, 3947, 0, -1833, 4724, -1833, 4725, 0, 4755, -1833,
+ 0, 4726, 4, 5, 0, 0, 0, -1833, 0, -1833,
+ 2604, 0, 0, 0, -1833, 0, 0, 0, 0, 1408,
+ 0, 0, 0, 0, 0, 0, 0, 5134, 0, 0,
+ 0, 0, 0, 0, -1833, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1833, 0, 0, -1833, 0, 0,
+ 2605, 0, 0, 0, -914, 0, -914, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -1833, 1161, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 959, 0, 2430, 0, 0, -1889, -1833, 0, 0, 0,
+ -1833, 0, 0, 2606, 0, 0, 0, 0, 2607, -1833,
+ 0, 0, 0, 0, 2443, 9, 0, 0, 0, 2608,
+ 2609, 0, 1949, 1161, 960, 2455, 0, 0, -1833, 0,
+ 0, 1161, 1161, 0, 0, 0, 0, 0, 4727, 0,
+ 0, 0, 0, -1833, 0, 14, 0, 0, 0, 0,
+ -1833, 0, 0, 0, 2406, 0, 0, 0, 0, 0,
+ 4728, 0, 0, -1833, 0, -1833, 0, 0, 0, 0,
+ 961, 0, 0, 0, 20, 0, 0, 962, 0, 0,
+ 0, 0, 0, 0, 0, 1161, 0, 0, 23, 0,
+ 0, 0, 0, 0, 0, 0, 1949, 1949, 0, 0,
+ 0, 0, 0, 0, 963, 0, 0, 0, 4729, 0,
+ 0, 0, 964, -1889, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 28, 0, 0, 0, 1161, 1161,
+ 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4542, 0, 0, 0, 0, 965, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4730, 4731, 4732, 0, 0,
+ 0, 0, 0, 0, 2610, 0, 0, 1949, 0, 0,
+ 0, 0, 0, 4575, 2611, 4733, 0, 1161, 39, 0,
+ 1949, 0, 0, 966, 967, 2612, 0, 0, 0, 0,
+ 0, 2613, 0, 0, 0, 1161, 4768, 0, 0, 1161,
+ 1161, 0, 1161, 1161, 0, 0, 0, 0, 0, 0,
+ 0, 1161, 0, 1161, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2614, 0, 4768, 3947, 2615, 0, 4768, 4734,
+ 0, 4735, 0, 0, 0, 867, 0, 0, 0, 0,
+ 0, 4634, 0, 0, 1161, 0, 0, 0, 0, -914,
+ 50, 4736, 0, 0, 0, 0, 0, 2616, 0, 0,
+ 5418, 5421, 5423, 5425, 0, 0, 5428, 5429, 0, 4737,
+ 1161, 5433, 0, 0, 5439, 0, 4738, 5443, 0, -1889,
+ 5418, 0, 0, 0, 5454, 5418, 1949, 0, 0, 82,
+ 0, 4739, 2634, 0, 0, 0, 0, 0, 4740, 0,
+ 0, 0, 0, 0, 0, 0, 1161, 2297, 0, 0,
+ -1889, 968, -1889, 4741, 0, -1889, -1889, 0, -1833, 0,
+ 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0,
+ 4768, 0, 0, 0, 0, 0, 0, 0, 4768, 0,
+ 0, 0, 0, 0, 4768, 4768, 0, 0, 0, 0,
+ 0, 0, 0, 2566, 0, 2566, 0, 0, 0, 1161,
+ 0, 0, 0, 0, 3990, 0, 1161, 4768, 0, 0,
+ 4742, 0, 0, 1949, 0, 0, 0, 0, 0, 0,
+ 4743, 969, 0, 0, 4768, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2406, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1949, 1949, 0, 0, 0, 0, 4744, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4745, 0, 0, 0, -1889, -1889, 0, 0, 4908,
+ 0, 4911, 0, 4914, 0, 0, 0, -1889, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1161, 0, 0, 0, 4768,
+ 4746, 0, 0, 0, 0, 0, 4747, 0, 0, 0,
+ 0, 4768, 2633, 0, 0, 4768, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1833, 0, 0, 5619, 1161, 0,
+ 4748, 0, 0, 0, 0, 0, 0, 2634, 0, 0,
+ -1889, 1949, 0, 1949, 1949, 1949, 0, 1161, 0, 970,
+ 0, 0, 0, 1161, 0, -1833, 4768, -1833, 0, 0,
+ -1833, -1833, 0, 0, 4749, 0, 0, 0, 0, 0,
+ 0, 4750, 0, 0, 0, 0, 0, 0, -1889, 0,
+ 0, 0, -1889, 0, 0, 0, -1889, 0, 0, 0,
+ 0, 0, 0, 0, 1161, -1889, -1889, 0, 0, 2805,
+ 0, 0, 0, 2809, 0, 4751, -1889, 0, 0, 2815,
+ 0, -1889, 0, -1889, 0, 0, 0, -1889, 0, 0,
+ 4752, 4753, 4768, 6278, 0, -1889, 0, -1889, 0, 0,
+ 0, 0, -1889, 4754, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1889, 0, 4768, 0, 0, 0, 0, 0,
+ 0, 0, -1889, 0, 0, -1889, 0, 0, 0, 0,
+ 4755, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -1889, 0, 0, 0, 2915,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1889, 0, 0, 4768, -1889, 4768,
+ 4768, 0, 0, 0, 0, 0, 0, -1889, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2969, 0, 0, -1889, 0, 2975, 1949,
+ 2977, 0, 1162, 0, 0, 0, 4768, 0, 0, 0,
+ 0, -1889, 0, 0, 0, 0, 0, 0, -1889, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1889, 0, -1889, 0, 0, 0, 0, 0, 0,
+ 4768, 0, 0, 0, 0, 0, 0, 3012, 0, 1162,
+ 0, 0, 0, 1161, 0, 0, 0, 1161, 0, 3022,
+ 1161, 0, 0, 0, 0, 0, 0, 0, 0, 1161,
+ 4768, 0, 0, 0, 0, 0, 0, 0, 1161, 0,
+ 1161, 1161, 0, 1161, 1161, 1161, 1161, 0, 1161, 0,
+ 1161, 1161, 0, 1161, 0, 0, 0, 0, 0, 0,
+ 0, 1161, 1161, 0, 0, 0, 1161, 1161, 1161, 0,
+ 0, 0, 0, 0, 0, 0, 1161, 1161, 1161, 0,
+ 1161, 0, 1161, 0, 1161, 0, 1161, 0, 1161, 0,
+ 0, 0, 0, 1161, 1161, 0, 1161, 1161, 1161, 0,
+ 0, 0, 1161, 0, 0, 1161, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1161, 0, 0, 1161, 0, 1161,
+ 1161, 1161, 0, 0, 1161, 3110, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1408, 0, 0, 1161, 0, 1161, 0,
+ 0, 1161, 0, 0, 1408, 1408, 0, 0, 0, 0,
+ 0, 1161, 1161, 1161, 1161, 1949, 1161, 0, 0, 0,
+ 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1949, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -1072, -1072, 0, 3211, 0,
+ 0, 0, 0, 0, 3214, 959, 0, 4726, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1949,
+ 0, 0, 0, 0, 0, 0, -1889, 0, 0, 0,
+ 9, 0, 0, 0, 0, 4849, 0, 4850, 4851, 960,
+ 0, 0, 2406, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1161, 0, 0, 0, 0, 0, 0, 4852,
+ 14, 4853, 0, 0, 0, 0, 0, 4854, 0, 0,
+ 1162, 0, 0, 0, 1162, 1161, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 961, 0, 0, 2430, 20,
+ 0, 0, 962, 0, 4726, 4, 5, 1162, 0, 4855,
+ 0, 0, 0, 23, 0, 0, 1162, 0, 0, 0,
+ 0, 0, 4149, 0, 0, 0, 0, 0, 0, 963,
+ 0, 0, 5573, 0, 4850, 0, 0, 964, 0, 0,
+ 0, 0, 0, 0, 4727, 0, 0, 0, 0, 28,
+ 0, 0, 0, 0, 0, 0, 4852, 1161, 0, 0,
+ 3361, 3361, 0, 0, 5574, 0, 0, 0, 0, 0,
+ 0, 0, 4856, 965, 0, 0, 0, 0, 1161, 0,
+ 0, 1162, 1162, 1162, 1162, 2430, 0, 0, 3376, 0,
+ 1949, 0, 0, 0, 1162, 0, 5575, 0, 1899, 0,
+ 0, 0, 0, 4857, 0, 4858, 0, 0, 0, 0,
+ 0, 0, -1889, 39, 4729, 0, 4859, 0, 966, 967,
+ 0, 0, 0, 0, 0, 2634, 0, 0, 0, 0,
+ 0, 4727, 0, 0, 0, 0, 0, 0, 0, 4860,
+ 0, 0, 0, -1889, 0, -1889, 0, 0, -1889, -1889,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4856,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4730, 4731, 4732, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 0, 0, 0, 0,
- 0, 0, 0, 5950, 0, 0, 0, 4878, 0, 6261,
- 6261, 0, 0, 0, 2831, 0, 2637, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 0, 815, 0, 0, 0,
- 0, 0, 0, 0, -1870, 2152, 0, 0, 0, 0,
- 0, 0, 0, 0, 5621, 5621, 964, 0, 6247, 5950,
- 5950, 2128, 0, 0, 0, 5621, 0, 0, 0, 0,
- 0, 0, 2728, 0, 0, 6149, 6150, 0, 0, 6260,
- 6260, 0, -1870, 2729, 0, 0, -1870, 6161, 0, 0,
- -1870, 0, 0, 0, 0, 0, 0, 0, 0, -1870,
- -1870, 5950, 0, 0, 3613, 0, 0, 0, 4878, 815,
- -1870, 0, 0, 0, 0, -1870, 0, -1870, 0, 0,
- 0, -1870, 0, 5621, 0, 0, 965, 0, 0, -1870,
- 0, -1870, 0, 0, 0, 2293, -1870, 3228, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831,
- 0, 0, 0, 0, 0, 0, -1870, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -1870, 3229, 3230, -1870,
- 3231, 3232, 3233, 3234, 3235, 0, 3236, 3237, 3238, 3239,
- 3240, 3241, 3242, 3243, 0, 3244, 3245, 3246, 3247, -1870,
- 0, 0, 0, 6230, 0, 0, 6231, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -1870, 0,
- 0, 0, -1870, 0, 0, 0, 0, 0, 0, 0,
- 0, -1870, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2402, 2285, 0, 2402,
- -1870, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2831, 0, 0, -1870, 815, 0, 0, 1945,
- 0, 815, -1870, 0, 966, 0, 2831, 0, 1157, 0,
- 1157, 0, 2831, 0, 0, -1870, 0, -1870, 0, 2831,
- 0, 3248, 3249, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 1157, 0, 0, 0, 0, 1157, 0, 0, 0, 1157,
- 1157, 1157, 0, 0, 0, 0, 0, 0, 0, 1157,
- 1157, 1945, 0, 0, 0, 1157, 0, 0, 0, 1157,
- 1157, 1157, 0, 1157, 1157, 1157, 1945, 1945, 0, 0,
- 0, 0, 0, 1157, 0, 1157, 0, 0, 1157, 1157,
- 1157, 1157, 0, 1157, 0, 1157, 1157, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 1157, 1157, 1157, 1157, 0, 1157, 1157, 1157, 1157, 1157,
- 1157, 0, 1157, 1157, 0, 1157, 1157, 0, 1157, 1157,
- 0, 0, 1157, 1157, 0, 1157, 1157, 0, 1157, 0,
- 1157, 0, 0, 0, 1157, 1157, 1157, 0, 0, 1157,
- 1157, 1157, 1157, 0, 1157, 0, 0, 0, 0, 0,
- 0, 1157, 0, 4721, 4, 5, 0, 1157, 1157, 1157,
- 1157, 0, 0, 0, 0, 0, 0, 3943, 1157, 1157,
- 0, 1157, 1157, 0, 0, 1157, 1157, 1157, 1157, 1157,
- 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 6030, 6031,
- 1157, 6033, 6034, 6035, 6036, 1945, 0, 0, 0, 0,
- 0, 0, 1945, 0, 0, 0, -904, 0, -904, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0,
- 0, 0, 0, 0, 2430, 0, 0, 0, 0, 0,
- -1870, 0, 0, 1945, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -1062, -1062,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4721, 4, 5, 0, 0, 0, 0, 0, 0, 0,
- 4722, 1902, 1902, 1902, 0, 0, 0, 3613, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4839, 3943,
- 4840, 4841, 0, 3943, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6148, 0,
- 0, 6151, 4842, 0, 4843, 0, 0, 0, 0, 6159,
- 4844, 0, 6162, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1157, 0, 1157, 0, 0, 0, 0, 0,
- 4724, 2430, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4845, 0, 0, 0, 0, 0, 1945, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4722, 0, 0,
- 0, 2625, 0, 0, 0, 0, 0, 4725, 4726, 4727,
- 0, 0, 0, -1870, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4846, 2638, 4728, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -1870, 0, -1870, 0, 0, -1870, -1870,
- 0, 0, 0, 0, 0, 0, 4847, 0, 4848, 0,
- 0, 0, 0, 0, 0, 0, 1157, 4724, 0, 4849,
- 0, 0, 1945, 0, 1945, 0, 0, 0, 0, 0,
- 0, 4729, 0, 4730, 0, 0, 0, 0, 0, 0,
- 0, 0, 4850, 1991, 1157, 0, 0, 0, 0, 0,
- 0, -904, 1157, 4731, 0, 0, 0, 0, 2744, 1991,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4732, 0, 0, 4725, 4726, 4727, 0, 4733, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4734, 4728, 0, 0, 0, 0, 0,
- 4735, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4736, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 955, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4851, 0, 0, 0, 0, 0, 0, 0, 4729, 0,
- 4730, 0, 0, 9, 0, 0, 0, 0, 0, 0,
- 0, 0, 956, 0, 0, 0, 0, 0, 0, 0,
- 4731, 0, 4737, 0, 0, 0, 0, 4852, 0, 0,
- 0, 0, 4738, 14, 0, 0, 0, 2892, 4732, 0,
- 0, 0, 0, 0, 1991, 4733, 0, 0, -3669, -3669,
- -3669, 0, 0, 0, 0, 0, 0, 0, 957, 0,
- 4734, 0, 20, 0, 0, 958, 0, 4735, 0, 0,
- 4739, 4853, 4854, 0, 0, 0, 23, 0, 4855, 0,
- 0, 0, 4736, 4740, 0, 2959, 0, 0, 0, 0,
- 4856, 0, 959, 0, 0, 0, 0, 0, 0, 0,
- 960, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 4857, 28, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4741, 0, 0, 0, 0, 0, 4742, 0,
- 0, 0, 0, 0, 0, 4858, 961, 0, 0, 4737,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4738,
- 0, 0, 0, 1945, 1157, 0, 0, 0, 0, 0,
- 0, 0, 1157, 1157, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 39, 0, 0, 0,
- 0, 962, 963, 0, 0, 0, 4743, 4739, 0, 4719,
- 1799, 4720, 0, 4744, 0, 0, 4721, 4, 5, 0,
- 4740, 0, 4859, 0, 0, 0, 0, 0, 0, 901,
- 1991, 0, 0, 0, 0, 0, 1157, 0, 0, 0,
- 0, 0, 0, 0, 0, 4745, 0, 1945, 1945, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4741,
- 4746, 4747, 0, 0, 0, 4742, -3669, 0, 50, -904,
- 955, -904, 0, 4748, 0, 0, 0, 0, 0, 1157,
- 1157, 1157, 0, 0, 0, 0, 0, 0, 0, 0,
- 4860, 0, 0, 0, 0, 9, 0, 2430, 0, 0,
- 0, 4861, 4862, 4863, 956, 0, 0, 82, 0, 0,
- 0, 0, 1902, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4743, 0, 14, 0, 0, 1945, 964,
- 4744, 0, 0, 0, 2402, 0, 3171, 5118, 1157, 0,
- 0, 1945, 0, 4722, 0, 0, 0, 0, 0, 0,
- 957, 0, 0, 0, 20, 0, 1157, 958, 0, 0,
- 1157, 1157, 4745, 1157, 1157, 4723, 0, 0, 23, 0,
- 0, 0, 1157, 0, 1157, 0, 0, 4746, 4747, 0,
- 0, 0, -3669, 0, 959, 0, 0, 0, 0, 0,
- 4748, 0, 960, 0, 4864, 0, 0, 0, 0, 965,
- 0, 0, 0, 0, 28, 1157, 0, 0, 0, 0,
- 0, 0, 0, 4724, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 955, 961, 0,
- 0, 1157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1157, 0, 0, 0, 1945, 0, 0,
- 0, 0, 9, 0, 0, 0, 1157, 0, -1062, 0,
- 0, 956, 0, 0, 0, 0, 0, 1157, 39, 0,
- 4725, 4726, 4727, 962, 963, 0, 0, 0, 0, 0,
- 0, 0, 14, 1157, 0, 0, 0, 0, 0, 0,
- 4728, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1158, 0, 0, 0, 0, 0, 0, 957, 0, 0,
- 0, 20, 0, 0, 958, 0, 0, 0, 0, 0,
- 1157, 0, 0, 0, 0, 23, 0, 1157, 0, 0,
- 0, 0, 0, 0, 1945, 0, 0, 966, 0, 0,
- 50, 959, 0, 0, 4729, 0, 4730, 1158, -3832, 960,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 28, 0, 0, -904, 0, 4731, 0, 0, 0,
- 0, 4759, 4759, 1945, 1945, 0, 0, 0, 0, 82,
- 0, 0, 0, 0, 4732, 961, 0, 0, 0, 0,
- 0, 4733, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 964, 0, 0, 0, 0, 4734, 0, 0, 0,
- 0, 0, 0, 4735, 0, 3420, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 39, 1157, 0, 4736, 0,
- 962, 963, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -3832, 0, 0, 0, 0, 1157,
- 0, 0, 0, 0, 1158, 0, 0, 0, 0, 0,
- 0, 965, 1945, 0, 1945, 1945, 1945, 0, 1157, 0,
- 0, 0, 4759, 1157, 1157, 4737, 0, 0, 0, 1991,
- 3461, 0, 0, 0, 0, 4738, 0, 50, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4739, 0, 0, 82, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4740, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 964, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3531, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3546, 0, 4741, 0, 0, 0, 0,
- 0, 4742, 0, 0, 4, 5, 0, 0, 0, 0,
- 1157, 1157, 0, 0, 0, 0, 0, 0, 0, 966,
- 0, 1922, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1241, 0, 1242, 0, 0, 0, 965, 0,
- 0, 0, 676, 0, 0, 0, 0, 0, 0, 1158,
- 0, 0, 0, 1158, 0, 0, 1210, 3943, 0, 4743,
- 0, 0, 0, 0, 1243, 1244, 4744, 0, 0, 0,
- 0, 0, 0, 0, 1245, 1945, 1158, 0, 0, 0,
- 0, 0, 0, 3603, 0, 1158, 0, 0, 16, 17,
- 0, 0, 0, 0, 0, 0, 0, 0, 4745, 2152,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4746, 4747, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4748, 0, 0, 1157,
- 1246, 0, 0, 1157, 0, 0, 1157, 0, 0, 0,
- 0, 0, 0, 0, 1247, 1157, 0, 0, 0, 0,
- 1158, 1158, 1158, 1158, 1157, 0, 1157, 1157, 0, 1157,
- 1157, 1157, 1157, 1158, 1157, 0, 1157, 1157, 0, 1157,
- 0, 0, 0, 0, 0, 0, 966, 1157, 1157, 0,
- 0, 0, 1157, 1157, 1157, 0, 2625, 0, 0, 0,
- 0, 0, 1157, 1157, 1157, 0, 1157, 0, 1157, 1248,
- 1157, 0, 1157, 0, 1157, 0, 0, 0, 0, 1157,
- 1157, 1249, 1157, 1157, 1157, 0, 0, 0, 1157, 0,
- 0, 1157, 0, 0, 0, 2293, 2293, 0, 0, 0,
- 1157, 0, 0, 1157, 0, 1157, 1157, 1157, 0, 0,
- 1157, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4759, 0, 0, 4721, 4, 5, 0, 0,
- 0, 0, 1157, 0, 1157, 0, 1250, 1157, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1157, 1157, 1157,
- 1157, 1945, 1157, 5538, 0, 4840, 0, 1157, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1945, 0,
- 0, 0, 0, 0, 0, 0, 0, 4842, 0, 1251,
- 0, 0, 0, 0, 0, 5539, 0, 0, 0, 0,
- 0, 0, 0, 0, 2402, 0, 2402, 2402, 3819, 1252,
- 0, 0, 0, 0, 0, 1157, 2430, 0, 1253, 0,
- 0, 0, 0, 0, 0, 1158, 0, 5540, 0, 1157,
- 0, 1254, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1255, 0, 0, 1945, 4759, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4722, 0, 0, 1256, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1157, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4846, 0, 0, 0, -2264, 1257, 0, 0, 1258, 0,
- 1259, 1157, 0, 905, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1902, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4848, 0, 0, 0, 1260, 1261, 0,
- 0, 0, 4724, 1262, 1263, 906, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1264, 0, 0, 0, 0, 0, 908, 4850, 0, 0,
- 0, 0, 0, 0, 0, 909, 1158, 0, 0, 0,
- 0, 1265, 0, 1157, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 910, 0, 0, 4725,
- 4726, 4727, 0, 1266, 1157, 0, 0, 2625, 0, 0,
- 911, 0, 0, 1158, 0, 912, 1945, 0, 0, 4728,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 955, 0, 0, 0, 913, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1267, 0, 9,
- 0, 0, 0, 0, 0, 4851, 0, 0, 956, 0,
- 0, 0, 1268, 4729, 0, 4730, 0, 0, 0, 0,
- 0, 1269, 0, 0, 1270, 1271, 0, 0, 0, -3660,
- 0, 0, 0, 0, 0, 4731, 0, 914, 0, 1272,
- 0, 915, 0, 0, 0, 0, 0, 4759, 0, 4759,
- 0, 5434, 0, 4732, 957, 0, 0, 0, -3659, 916,
- 4733, 958, 0, 917, 918, 0, 0, 0, 0, 0,
- 0, 0, 23, 0, 0, 4734, 1273, 0, 0, 0,
- 0, 0, 4735, 0, 1274, 0, 4853, 0, 959, 0,
- 0, 0, 0, 4855, 919, 0, 960, 4736, 0, 0,
- 0, 920, 921, -3286, 0, 1275, 0, 0, -3659, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1945, 0,
- 0, 0, 0, 0, 0, 0, 4857, 0, 0, 0,
- 1157, 0, 961, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1157, 0, 4146, 4737, -3286, 0, 0, 2608, 0,
- 0, 4759, 1276, 0, 4738, 0, 1157, 0, 0, 1157,
- 1991, 0, -3659, 0, 0, 0, 0, 962, 963, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1157, 1157, 0, 0, 2609, 1157,
- 0, 0, 4739, 1902, 0, 0, 0, 0, 1945, 0,
- 0, 0, 0, 0, 0, 4740, 0, 4859, 0, 0,
- 0, 1157, 0, 1157, 0, 1157, 0, 1157, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2959, 0, 0,
- 0, 2610, 1157, 0, -3659, 0, 2611, 0, 1945, 0,
- 0, 0, 0, 0, 4741, 0, 0, 2612, 2613, 0,
- 4742, 1157, 1157, 0, 0, 0, 1157, 0, 1157, 0,
- 1157, 0, 0, 0, 0, 1157, 0, 0, 0, 0,
- 0, 0, 0, -3660, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1799, 964, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1945, 0, 4743, 0,
- 0, 0, 1157, 0, 0, 4744, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1157, 0, 0, 0,
- 1157, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1158, 0, 1158, 4745, 1157, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5434,
- 0, 0, 4746, 4747, 0, 965, 0, 0, 0, 0,
- 0, 0, 1945, 0, 0, 4748, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3943, 0, 2402, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2614, 0, 0, 1158, 1158, 0, 0, 0,
- 0, 1158, 2615, 0, 0, 1158, 1158, 1158, 0, 0,
- 0, 0, 0, 2616, 0, 1158, 1158, 0, 0, 2617,
- 0, 1158, 0, 0, 0, 1158, 1158, 1158, 0, 1158,
- 1158, 1158, 0, 1157, 0, 0, 0, 0, 0, 1158,
- 0, 1158, 0, 1157, 1158, 1158, 1158, 1158, 0, 1158,
- 2618, 1158, 1158, 0, 2619, 0, 0, 1157, 0, 1945,
- 1157, 0, 0, 0, 0, 1158, 1158, 1158, 1158, 1158,
- 0, 1158, 1158, 1158, 1158, 1158, 1158, 0, 1158, 1158,
- 0, 1158, 1158, 2620, 1158, 1158, 0, 0, 1158, 1158,
- 0, 1158, 1158, 966, 1158, 0, 1158, 0, 0, 0,
- 1158, 1158, 1158, 0, 0, 1158, 1158, 1158, 1158, 0,
- 1158, 0, 0, 0, 0, 0, 0, 1158, 0, 0,
- 0, 0, 0, 1158, 1158, 1158, 1158, 0, 0, 0,
- 0, 0, 0, 0, 1158, 1158, 0, 1158, 1158, 0,
- 2402, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
- 1158, 1158, 1158, 1158, 0, 0, 1158, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 0, 1512, 1513, 0, 0, 0, 1517, 1518,
- 0, 0, 0, 0, 0, 0, 0, 0, 1527, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4540, 0, 0, 1549, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1562, 0, 0, 0,
- 1157, 1157, 0, 1157, 0, 0, 0, 0, 0, 0,
- 0, 0, 1577, 0, 6118, 0, 1157, 1157, 1157, 0,
- 4573, 0, 0, 0, 0, 0, 0, 4759, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1157, 1157, 1601, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4759, 3943, 0, 1158, 4759,
- 1158, 1620, 1621, 1622, 1157, 0, 0, 0, 0, 0,
- 0, 1630, 1631, 1632, 0, 0, 1157, 0, 862, 0,
- 0, 0, 0, 0, 0, 1157, 0, 0, 4632, 1647,
- 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0,
- 1157, 1157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1676, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 0, 0, 1157, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1703, 0,
- 0, 0, 0, 0, 2293, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4759, 0, 0, 0,
- 0, 1725, 1726, 1727, 4759, 0, 0, 955, 0, 0,
- 4759, 4759, 1158, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1746, 1747, 4721, 4, 5, 4721, 4,
- 5, 0, 9, 4759, 0, 0, 0, 0, 0, 0,
- 1158, 956, 0, 0, 0, 0, 0, 0, 1158, 0,
- 4759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
- 0, 1761, 0, 1762, 1763, 0, 0, 0, -904, 0,
- -904, 2402, 0, 0, 0, 0, 0, 957, 0, 0,
- 1764, 20, 0, 0, 958, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 23, 2430, 0, 0, 2430,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 959, 0, 0, 0, 0, 1765, 1766, 0, 960,
- 0, 0, 0, 0, 0, 0, 0, 4759, 0, 0,
- 0, 28, 0, 0, 0, 0, 0, 0, 0, 4759,
- 0, 0, 4722, 4759, 0, 4722, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 961, 0, 0, 0, 0,
- 0, 0, 1768, 0, 0, 0, 0, 0, 0, 0,
- 1157, 1157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4759, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 39, 0, 0, 0, 0,
- 962, 963, 0, 1769, 0, 0, 0, 0, 0, 0,
- 0, 0, 4724, 0, 0, 4724, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1157, 0, 0, 1945, 0, 0,
- 0, 0, 0, 0, 0, 1158, 0, 0, 4759, 6242,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1770, 1771, 50, 0, 4725,
- 4726, 4727, 4725, 4726, 4727, 0, 0, 0, 0, 0,
- 4759, 1772, 1773, 0, 0, 0, 0, 0, 1157, 4728,
- 1158, 0, 4728, 0, 0, 0, 0, 0, 1158, 1158,
- 0, 0, 0, 0, 0, 0, 82, 1945, 0, 0,
- 0, 0, 0, 0, 0, 1157, 1157, 0, 0, 0,
- 0, 0, 0, 1775, 0, 0, 0, 0, 964, 4759,
- 0, 4759, 4759, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4729, 0, 4730, 4729, 0, 4730, 0,
- 1157, 0, 1158, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -904, 0, 4731, 0, 0, 4731, 0,
- 0, 0, 4759, 0, 0, 0, 0, 0, 0, 0,
- 0, 3987, 0, 4732, 0, 0, 4732, 0, 0, 0,
- 4733, 0, 0, 4733, 0, 1158, 1158, 1158, 965, 0,
- 0, 0, 0, 0, 0, 4734, 0, 4759, 4734, 0,
- 0, 0, 4735, 0, 0, 4735, 0, 1777, 0, 955,
- 1778, 0, 0, 1779, 0, 0, 0, 4736, 0, 0,
- 4736, 0, 0, 0, 0, 0, 1157, 4759, 1157, 0,
- 0, 0, 0, 0, 9, 0, 1780, 0, 0, 0,
- 0, 0, 0, 956, 1158, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1782, 0, 0, 0,
- 0, 0, 1158, 0, 14, 0, 1158, 1158, 0, 1158,
- 1158, 0, 0, 0, 4737, 0, 0, 4737, 1158, 0,
- 1158, 0, 0, 0, 4738, 0, 0, 4738, 0, 957,
- 0, 0, 0, 20, 0, 0, 958, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 23, 0, 0,
- 0, 1158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4739, 959, 0, 4739, 966, 0, 0, 0,
- 0, 960, 0, 0, 0, 4740, 0, 1158, 4740, 0,
- 0, 1157, 0, 28, 0, 0, 0, 0, 0, 1158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 0, 0, 1157, 0, 961, 0, 0,
- 0, 0, 0, 1158, 4741, 0, 0, 4741, 0, 0,
- 4742, 0, 0, 4742, 0, 0, 0, 0, 1157, 1158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1157, 1157, 1159, 39, 0, 0,
- 0, 0, 962, 963, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 0, 0, 0,
- 0, 0, 0, 1158, 0, 0, 0, 0, 4743, 0,
- 0, 4743, 0, 0, 0, 4744, 0, 0, 4744, 0,
- 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2402,
- 0, 0, 0, 0, 0, 0, 0, 4745, 0, 50,
+ 0, 4733, 4858, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4729, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 0, 4860, 1161, 1161, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4861, 0, 0,
+ 0, 0, 0, 0, 0, 4734, 968, 4735, 0, 0,
+ 0, 0, 0, 0, 0, 1949, 0, 0, 4730, 4731,
+ 4732, 0, 0, 0, 0, 0, 3516, 4736, 0, 0,
+ 3520, 0, 0, 0, 4862, 0, 1162, 0, 4733, 6273,
+ 0, 0, 0, 0, 0, 4737, 0, 0, 0, 0,
+ 0, 0, 4738, 0, 0, 0, 0, 0, 0, 4225,
+ 0, 0, 1161, 0, 0, 1161, 0, 4739, 0, 0,
+ 0, 0, 0, 0, 4740, 0, 969, 0, 4863, 4864,
+ 0, 0, 0, 0, 4861, 4865, 0, 0, 0, 4741,
+ 1161, 1161, 4734, 0, 4735, 1161, 0, 4866, 0, 0,
+ 0, 0, 0, 0, 1949, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4736, 0, 0, 1161, 4867, 1161,
+ 0, 1161, 0, 1161, 0, 0, 959, 0, 0, 0,
+ 0, 0, 4737, 0, 0, 0, 0, 0, 1161, 4738,
+ 3361, 3361, 4868, 0, 1949, 0, 4742, 0, 0, 0,
+ 0, 9, 0, 0, 4739, 0, 4743, 1161, 1161, 0,
+ 960, 4740, 1161, 0, 1161, 4863, 1161, 0, 0, 0,
+ 0, 1161, 4865, 0, 0, 0, 4741, 0, 0, 0,
+ 0, 14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4744, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4867, 961, 4745, 0, 4869,
+ 20, 0, 1949, 962, 970, 1162, 1161, 0, 0, 1162,
+ 0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
+ 0, 3680, 0, 4742, 0, 0, 0, 0, 0, 0,
+ 963, 0, 0, 4743, 0, 0, 4746, 0, 964, 0,
+ 0, 0, 4747, 0, 1161, 0, 3704, 0, 0, 0,
+ 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4748, 4870, 1949, 0,
+ 0, 4744, 0, 0, 965, 0, 0, 0, 4871, 4872,
+ 4873, 0, 0, 0, 4745, 0, 4869, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4749, 0, 0, 0, 0, 0, 0, 4750, 0, 0,
+ 0, 0, 0, 0, 39, 0, 0, 3763, 0, 966,
+ 967, 0, 0, 4746, 0, 0, 3772, 0, 0, 4747,
+ 0, 1408, 0, 0, 0, 0, 0, 1408, 1161, 0,
+ 0, 4751, 0, 0, 0, 0, 0, 0, 1161, 0,
+ 959, 0, 1408, 4748, 0, 0, 4752, 4753, 0, 0,
+ 0, 0, 1161, 0, 1949, 1161, 0, 0, 0, 4754,
+ 0, 0, 0, 4874, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 960, 2621, 50, 4749, 0, 0,
+ 0, 0, 0, 0, 4750, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -3694, 4755, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 82, 0, 0, 4751, 0,
+ 961, 0, 0, 0, -3693, 0, 0, 962, 0, -1072,
+ 0, 0, 0, 4752, 4753, 0, 0, 968, 23, 0,
+ 0, 0, 0, 0, 0, 0, 4754, 0, 0, 0,
+ 0, 0, 0, 0, 963, 0, 0, 0, 0, 0,
+ 0, 0, 964, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -3693, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4755, 0, 0, 0, 0, 0, 1161,
+ 0, 0, 0, 0, 0, 0, 0, 0, 965, 0,
+ 0, 0, 0, 0, 0, 0, 0, 969, 0, 1161,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4726, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1408, 0, -3693, 0,
+ 0, 0, 3986, 966, 967, 1161, 1161, 0, 1161, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1161, 1161, 1161, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1161, 1161, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1162, 0, 1162, 0, 0,
+ 0, 2430, 0, 0, 0, 0, 0, 0, 0, 1161,
+ -3693, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 970, 0, 4727, 0, -3694,
+ 0, 0, 0, 0, 0, 0, 1162, 1162, 0, 0,
+ 0, 0, 1162, 0, 0, 0, 1162, 1162, 1162, 0,
+ 0, 968, 0, 0, 0, 1161, 1162, 1162, 0, 1161,
+ 0, 0, 1162, 0, 0, 0, 1162, 1162, 1162, 0,
+ 1162, 1162, 1162, 0, 0, 0, 0, 0, 0, 0,
+ 1162, 0, 1162, 0, 0, 1162, 1162, 1162, 1162, 0,
+ 1162, 0, 1162, 1162, 0, 0, 0, 4729, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1162, 1162, 1162, 1162,
+ 1162, 0, 1162, 1162, 1162, 1162, 1162, 1162, 0, 1162,
+ 1162, 969, 1162, 1162, 0, 1162, 1162, 0, 0, 1162,
+ 1162, 0, 1162, 1162, 0, 1162, 0, 1162, 0, 0,
+ 0, 1162, 1162, 1162, 0, 0, 1162, 1162, 1162, 1162,
+ 0, 1162, 0, 0, 4730, 4731, 4732, 0, 1162, 0,
+ 0, 0, 0, 0, 1162, 1162, 1162, 1162, 0, 0,
+ 2915, 0, 0, 0, 4733, 1162, 1162, 0, 1162, 1162,
+ 0, 0, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+ 1162, 1162, 1162, 1162, 1162, 0, 0, 1162, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4734, 0,
+ 4735, 0, 1162, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4736, 0, 0, 0, 0, 0, 0, 0, 0, 970,
+ 0, 4, 5, 0, 0, 0, 0, 0, 4737, 0,
+ 0, 0, 0, 0, 4230, 4738, 0, 0, 0, 0,
+ 0, 0, 0, 1161, 1161, 0, 0, 0, 0, 1245,
+ 4739, 1246, 0, 0, 0, 0, 0, 4740, 0, 681,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4741, 1214, 0, 0, 0, 0, 0, 0,
+ 0, 1247, 1248, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1249, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 16, 17, 0, 0, 1162,
+ 1161, 1162, 0, 1949, 4302, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1408, 0, 0, 4742,
+ 1408, 0, 0, 0, 0, 0, 0, 0, 0, 4743,
+ 0, 0, 0, 0, 0, 0, 1162, 1250, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1251, 0, 0, 1161, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4744, 0, 0,
+ 0, 0, 0, 1949, 0, 0, 0, 0, 0, 0,
4745, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4746, 4747, 0, 4746, 4747, 0, 0, 0,
- 0, 0, 0, 0, 0, 4748, 0, 0, 4748, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 82, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 0, 0, 0, 0, 0, 0, 4146,
- 964, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0,
- 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1158, 0, 0, 0, 0, 1158,
- 1158, 0, 0, 4222, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 965, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1252, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1161, 1253, 4746,
+ 0, 0, 0, 1162, 0, 4747, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 0, 0, 0, 0, 0, 0, 1945, 0, 0,
- 0, 0, 0, 1157, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 1158, 0, 1157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4748,
+ 0, 1162, 0, 0, 0, 0, 0, 0, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1254, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4749, 0, 0, 0, 0, 0, 0,
+ 4750, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1408, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1255, 0, 0, 0,
+ 1161, 0, 1161, 0, 4751, 0, 0, 0, 0, 0,
+ 0, 0, 4491, 0, 0, 0, 1256, 0, 0, 4752,
+ 4753, 0, 0, 0, 0, 1257, 0, 0, 0, 0,
+ 0, 0, 4754, 0, 0, 0, 0, 0, 1258, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1259,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4755,
+ 0, 0, 1260, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1159, 0, 0, 966, 1159,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -2281, 1261, 0, 0, 1262, 0, 1263, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1161, 0, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1264, 1265, 0, 0, 1162, 0,
+ 1266, 1267, 0, 0, 1161, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1268, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1161, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4625, 1269, 0,
+ 1517, 1518, 0, 1162, 0, 1522, 1523, 0, 0, 0,
+ 0, 1162, 1162, 0, 0, 1532, 0, 0, 0, 0,
+ 1270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1554, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1567, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1162, 0, 0, 0, 1582,
+ 0, 6148, 0, 0, 1271, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1272,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1273, 1606,
+ 0, 1274, 1275, 0, 0, 0, 4717, 0, 1162, 1162,
+ 1162, 4722, 4723, 0, 0, 0, 1276, 0, 1625, 1626,
+ 1627, 0, 0, 0, 0, 0, 0, 0, 1635, 1636,
+ 1637, 0, 0, 0, 0, 0, 0, 0, 0, 1408,
+ 1408, 0, 0, 0, 0, 0, 1652, 0, 0, 0,
+ 0, 0, 0, 1277, 0, 0, 0, 0, 0, 0,
+ 0, 1278, 0, 0, 0, 0, 0, 1162, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1681, 0,
+ 0, 0, -3304, 0, 1279, 1162, 0, 0, 0, 1162,
+ 1162, 0, 1162, 1162, 0, 0, 0, 0, 0, 0,
+ 0, 1162, 0, 1162, 0, 1708, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1730, 1731,
+ 1732, 0, 1163, 0, 1162, -3304, 1163, 0, 0, 0,
+ 0, 0, 1280, 0, 0, 0, 0, 0, 0, 0,
+ 1751, 1752, 0, 0, 1161, 0, 0, 0, 0, 1163,
+ 1162, 0, 0, 0, 0, 0, 0, 0, 1163, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1161, 0,
+ 0, 0, 0, 0, 0, 0, 1949, 0, 0, 0,
+ 0, 0, 1161, 0, 0, 0, 1162, 0, 1766, 0,
+ 1767, 1768, 0, 0, 0, 0, 0, 0, 1161, 0,
+ 0, 0, 1162, 0, 0, 0, 0, 1769, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 0, 0, 0, 0, 1158, 0, 0, 0, 1158,
- 0, 0, 1158, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 0, 0, 0, 0, 1159, 1159, 1159, 1159,
- 1158, 0, 1158, 1158, 0, 1158, 1158, 1158, 1158, 1159,
- 1158, 0, 1158, 1158, 0, 1158, 0, 0, 0, 0,
- 0, 0, 0, 1158, 1158, 0, 0, 0, 1158, 1158,
- 1158, 0, 0, 0, 0, 0, 0, 0, 1158, 1158,
- 1158, 0, 1158, 0, 1158, 0, 1158, 0, 1158, 0,
- 1158, 0, 0, 0, 0, 1158, 1158, 0, 1158, 1158,
- 1158, 0, 0, 0, 1158, 0, 0, 1158, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 0, 0, 1158,
- 0, 1158, 1158, 1158, 0, 0, 1158, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1158, 0,
- 1158, 0, 0, 1158, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1158, 1158, 1158, 1158, 0, 1158, 0,
- 0, 0, 0, 1158, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1163, 1163, 1163, 1163, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 1162,
+ 0, 0, 0, 1770, 1771, 0, 1162, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 796, 0,
- 0, 1158, 0, 1945, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 1158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1773,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1161,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1945, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0,
- 0, 0, 0, 0, 1158, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1158, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2625,
+ 1774, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1775, 1776, 0, 0, 0, 1162, 0, 0,
+ 0, 0, 0, 1162, 0, 0, 0, 0, 1777, 1778,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1157, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 1158,
+ 0, 0, 1161, 0, 0, 0, 5080, 0, 0, 0,
+ 0, 0, 0, 0, 1162, 0, 5104, 0, 0, 0,
+ 1780, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1158, 0, 0, 0, 0, 0, 0, 0, 0, 1159,
- 0, 0, 0, 0, 1157, 0, 0, 0, 0, 1314,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1949, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1403, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1782, 0, 0, 1783,
+ 0, 0, 1784, 0, 0, 0, 0, 0, 1949, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1161, 0, 0, 0, 0, 0, 1785, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1787, 1163, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1162, 0, 0, 0, 1162, 0, 0,
+ 1162, 0, 0, 0, 0, 1161, 0, 0, 0, 1162,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
+ 1162, 1162, 0, 1162, 1162, 1162, 1162, 0, 1162, 0,
+ 1162, 1162, 0, 1162, 0, 0, 0, 0, 0, 0,
+ 0, 1162, 1162, 0, 0, 0, 1162, 1162, 1162, 0,
+ 0, 0, 0, 0, 0, 0, 1162, 1162, 1162, 1161,
+ 1162, 0, 1162, 0, 1162, 0, 1162, 0, 1162, 0,
+ 0, 0, 0, 1162, 1162, 0, 1162, 1162, 1162, 0,
+ 0, 0, 1162, 0, 0, 1162, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1162, 0, 0, 1162, 0, 1162,
+ 1162, 1162, 0, 0, 1162, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1157, 0, 0, 0, 1157, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1162, 0, 1162, 0,
+ 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1162, 1162, 1162, 1162, 0, 1162, 0, 0, 0,
+ 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5415,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1161, 0,
+ 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1158, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 0, 0, 1158, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1895, 0, 0, 0,
- 1158, 1158, 0, 0, 0, 1158, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1157, 1158, 0, 1158,
- 0, 1158, 0, 1158, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1158, 0,
+ 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1158, 1158, 0,
- 0, 0, 1158, 0, 1158, 0, 1158, 0, 0, 0,
- 0, 1158, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5543, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5563, 0, 0, 0,
+ 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 0, 1163,
+ 0, 0, 0, 0, 0, 0, 0, 1162, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1158, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 0, 0, 0, 1158, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1159, 0, 1159, 0, 1158, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1163, 1163,
+ 0, 0, 0, 0, 1163, 0, 0, 0, 1163, 1163,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 1163, 1163,
+ 0, 0, 0, 0, 1163, 0, 0, 0, 1163, 1163,
+ 1163, 0, 1163, 1163, 1163, 0, 0, 0, 0, 0,
+ 0, 0, 1163, 0, 1163, 0, 0, 1163, 1163, 1163,
+ 1163, 0, 1163, 0, 1163, 1163, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1163, 1163,
+ 1163, 1163, 1163, 0, 1163, 1163, 1163, 1163, 1163, 1163,
+ 0, 1163, 1163, 0, 1163, 1163, 0, 1163, 1163, 0,
+ 0, 1163, 1163, 0, 1163, 1163, 0, 1163, 0, 1163,
+ 0, 0, 0, 1163, 1163, 1163, 0, 0, 1163, 1163,
+ 1163, 1163, 0, 1163, 0, 0, 0, 1162, 1162, 0,
+ 1163, 0, 0, 0, 0, 0, 1163, 1163, 1163, 1163,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 1163, 0,
+ 1163, 1163, 0, 0, 1163, 1163, 1163, 1163, 1163, 1163,
+ 1163, 1163, 1163, 1163, 1163, 1163, 1163, 0, 0, 1163,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1162, 0, 1163, 1162, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 1159, 0, 0, 0, 0, 1159, 0, 0,
- 0, 1159, 1159, 1159, 0, 0, 0, 0, 0, 0,
- 0, 1159, 1159, 0, 0, 0, 0, 1159, 0, 0,
- 0, 1159, 1159, 1159, 0, 1159, 1159, 1159, 0, 1158,
- 0, 0, 0, 0, 0, 1159, 0, 1159, 0, 1158,
- 1159, 1159, 1159, 1159, 0, 1159, 0, 1159, 1159, 0,
- 0, 0, 0, 1158, 0, 0, 1158, 0, 0, 0,
- 0, 1159, 1159, 1159, 1159, 1159, 0, 1159, 1159, 1159,
- 1159, 1159, 1159, 0, 1159, 1159, 0, 1159, 1159, 0,
- 1159, 1159, 0, 0, 1159, 1159, 0, 1159, 1159, 0,
- 1159, 0, 1159, 0, 0, 0, 1159, 1159, 1159, 0,
- 0, 1159, 1159, 1159, 1159, 0, 1159, 0, 0, 2247,
- 0, 0, 0, 1159, 0, 2255, 0, 0, 0, 1159,
- 1159, 1159, 1159, 0, 0, 0, 0, 0, 0, 0,
- 1159, 1159, 0, 1159, 1159, 0, 0, 1159, 1159, 1159,
- 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0,
+ 1162, 1162, 0, 0, 0, 1162, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1162, 0, 1162,
+ 0, 1162, 0, 1162, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5781, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1403, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1162, 1162, 0,
+ 0, 0, 1162, 0, 1162, 0, 1162, 0, 0, 0,
+ 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1163, 0, 1163, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1127, 0, 5827, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1162, 0, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 1158, 0, 1158,
+ 0, 0, 0, 0, 1162, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 1158, 1158, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2443, 0, 0, 1158, 1158, 0, 0,
- 0, 0, 0, 0, 2455, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 1159, 0, 0, 0,
- 1158, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 0, 0, 0, 0, 1158, 1158, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1158, 0, 0, 0, 1158,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1163, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1163, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
+ 0, 0, 1162, 0, 0, 1162, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6027, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6033, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6541,372 +6571,330 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162,
+ 6137, 0, 0, 0, 0, 0, 0, 0, 1960, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1986, 0, 0, 0, 1162, 1162, 0, 1162, 0,
+ 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1162, 1162, 1162, 0, 1163, 0, 0, 0, 0,
+ 0, 0, 0, 1163, 1163, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1162, 1162, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2073, 0,
+ 0, 1162, 0, 0, 0, 0, 0, 1163, 0, 0,
+ 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 1158, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 1163, 1163, 0, 0, 1162, 0, 0, 0, 1162,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2565, 0, 2565, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1158, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0,
+ 0, 1163, 1163, 0, 1163, 1163, 0, 0, 0, 0,
+ 0, 0, 0, 1163, 0, 1163, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1158, 0, 1159, 0, 0, 0,
- 0, 0, 0, 0, 1159, 1159, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 1158, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2267, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1158, 0, 1159, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 1159, 1159, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2809,
- 0, 0, 0, 2813, 0, 0, 0, 0, 0, 2819,
- 0, 0, 1158, 0, 1158, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 0, 0, 1159, 1159, 0, 1159, 1159, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 1159, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2919,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1123, 0, 0, 0,
- 0, 0, 0, 1159, 0, 0, 0, 1158, 0, 0,
- 0, 0, 0, 2973, 0, 1159, 0, 0, 2979, 0,
- 2981, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 0, 1158, 0, 0, 0, 0, 0, 0, 0, 1159,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1158, 1159, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3016, 0, 0,
- 1158, 1158, 0, 0, 0, 0, 0, 0, 0, 3026,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 1159,
+ 0, 0, 0, 1162, 1162, 0, 0, 0, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2464,
+ 0, 0, 0, 2469, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1491, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0,
+ 0, 0, 0, 0, 1162, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3114, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 0, 0, 0, 1403, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1403, 1403, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163,
+ 0, 0, 0, 0, 0, 1163, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1162, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1159, 0, 0, 0, 0, 1159, 1159, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 3209, 0, 0, 0, 0, 0, 3212, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1956,
- 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1158,
- 0, 0, 1982, 0, 0, 0, 0, 0, 0, 0,
- 0, 1996, 1159, 1159, 0, 1158, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1162, 0, 1162, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2069,
- 0, 0, 0, 0, 0, 0, 0, 0, 3360, 3360,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3375, 0, 0, 0,
- 0, 0, 0, 0, 0, 1158, 1895, 0, 0, 0,
- 0, 1159, 0, 0, 0, 1159, 0, 0, 1159, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 0, 1159, 1159,
- 0, 1159, 1159, 1159, 1159, 0, 1159, 0, 1159, 1159,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 1159,
- 1159, 0, 0, 0, 1159, 1159, 1159, 0, 0, 0,
- 0, 0, 0, 0, 1159, 1159, 1159, 0, 1159, 0,
- 1159, 0, 1159, 0, 1159, 0, 1159, 0, 0, 0,
- 0, 1159, 1159, 0, 1159, 1159, 1159, 0, 0, 0,
- 1159, 0, 0, 1159, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 0, 0, 1159, 0, 1159, 1159, 1159,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1158, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 1159, 0, 0, 1159,
- 0, 2263, 0, 0, 0, 0, 0, 0, 0, 1159,
- 1159, 1159, 1159, 0, 1159, 0, 0, 0, 0, 1159,
- 0, 0, 0, 0, 3515, 0, 0, 0, 3519, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 1158,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1158, 0, 0, 0, 0, 0, 0,
- 1159, 0, 0, 0, 0, 0, 0, 0, 3360, 3360,
- 0, 0, 2425, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1162, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1163, 0, 0, 0, 1163,
+ 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1163, 0, 0, 1162, 0, 0, 0, 0, 0,
+ 1163, 0, 1163, 1163, 0, 1163, 1163, 1163, 1163, 0,
+ 1163, 0, 1163, 1163, 0, 1163, 0, 1162, 0, 0,
+ 0, 0, 0, 1163, 1163, 0, 0, 0, 1163, 1163,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 1163, 1163,
+ 1163, 0, 1163, 0, 1163, 0, 1163, 0, 1163, 2627,
+ 1163, 2627, 0, 0, 0, 1163, 1163, 0, 1163, 1163,
+ 1163, 0, 0, 0, 1163, 0, 0, 1163, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 1163,
+ 0, 1163, 1163, 1163, 0, 0, 1163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2464,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0,
+ 1163, 0, 0, 1163, 0, 0, 2676, 0, 0, 0,
+ 2681, 0, 2683, 1163, 1163, 1163, 1163, 0, 1163, 0,
+ 2698, 2699, 0, 1163, 0, 0, 2728, 0, 0, 0,
+ 2733, 2734, 2735, 0, 2737, 2738, 2739, 0, 0, 0,
+ 0, 0, 0, 0, 2747, 0, 2750, 0, 0, 2751,
+ 2752, 2753, 2754, 0, 0, 0, 2758, 2759, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2770, 2771, 2778, 2782, 2783, 0, 2786, 2787, 2788, 2791,
+ 2792, 0, 0, 2795, 2796, 0, 2802, 2803, 0, 2806,
+ 2807, 0, 0, 0, 2811, 0, 2813, 2814, 0, 2816,
+ 0, 2817, 0, 0, 0, 2820, 2778, 2822, 0, 0,
+ 2828, 0, 2830, 2831, 0, 2832, 0, 0, 0, 0,
+ 0, 0, 2836, 0, 0, 0, 0, 0, 2838, 2839,
+ 2840, 0, 0, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1158, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1159, 0, 0, 0, 3679,
+ 0, 0, 0, 0, 1162, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0,
- 0, 0, 0, 0, 3703, 0, 0, 0, 0, 0,
- 1158, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2936, 0, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 1163,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3762, 0, 0, 0, 0,
- 0, 0, 0, 0, 3771, 0, 0, 0, 0, 1403,
- 0, 0, 0, 0, 0, 1403, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1403, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1158,
- 0, 0, 0, 1158, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3048, 0, 3053, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0,
+ 3076, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 1159, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1158, 1159, 0, 1159, 0, 1159, 0, 1159,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 0, 0, 0, 0,
- 0, 1403, 0, 0, 3983, 0, 0, 0, 0, 0,
- 0, 0, 0, 1159, 1159, 0, 0, 0, 1159, 0,
- 1159, 0, 1159, 0, 0, 0, 0, 1159, 0, 0,
- 2631, 0, 2631, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3154, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 0, 0, 1159, 0, 0, 0, 0, 2680, 0, 0,
- 0, 2685, 0, 2687, 0, 0, 0, 0, 0, 0,
- 1159, 2702, 2703, 0, 0, 0, 0, 2732, 0, 0,
- 0, 2737, 2738, 2739, 0, 2741, 2742, 2743, 0, 0,
- 0, 0, 0, 0, 0, 2751, 0, 2754, 0, 0,
- 2755, 2756, 2757, 2758, 0, 0, 0, 2762, 2763, 0,
+ 0, 0, 1162, 0, 0, 3178, 0, 0, 0, 0,
+ 0, 0, 3183, 0, 1163, 0, 0, 1163, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2774, 2775, 2782, 2786, 2787, 0, 2790, 2791, 2792,
- 2795, 2796, 0, 0, 2799, 2800, 0, 2806, 2807, 0,
- 2810, 2811, 0, 0, 0, 2815, 0, 2817, 2818, 0,
- 2820, 0, 2821, 0, 0, 0, 2824, 2782, 2826, 0,
- 0, 2832, 0, 2834, 2835, 1159, 2836, 0, 0, 0,
- 0, 0, 0, 2840, 0, 1159, 0, 0, 0, 2842,
- 2843, 2844, 0, 0, 0, 0, 0, 0, 0, 1159,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2919, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1163, 1163, 0, 0, 0, 1163, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163,
+ 0, 1163, 0, 1163, 0, 1163, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163,
+ 1163, 0, 0, 0, 1163, 0, 1163, 0, 1163, 0,
+ 0, 0, 0, 1163, 0, 0, 0, 0, 1162, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2940, 0, 0,
+ 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
+ 0, 0, 3370, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4227, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3422, 0, 0,
+ 0, 0, 0, 0, 0, 3429, 3430, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 3449,
+ 0, 0, 0, 0, 1163, 0, 0, 1163, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3052, 0, 3057, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 1159, 0, 1159, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4300, 1159, 1159,
- 1159, 3080, 0, 0, 0, 0, 0, 0, 0, 1403,
- 0, 0, 0, 1403, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 1159, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3488, 3490, 3492, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 3158, 0,
- 0, 0, 1159, 1159, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 1159, 3182, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0,
+ 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3554,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3562, 0, 3563, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 3588, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3602, 0, 0, 1163, 1163, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1163, 1163, 1163, 0, 0, 0, 0,
+ 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3657, 0, 0, 0, 0, 0, 0, 1163, 1163, 0,
+ 0, 0, 0, 0, 0, 0, 3663, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1163, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1163, 3683, 0, 0, 0, 0, 0, 0,
+ 3053, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1403, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4489, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3777,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3802, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3802, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3369, 1159, 1159, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3891, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3421, 0, 0, 0,
- 0, 0, 0, 0, 3428, 3429, 0, 0, 4623, 0,
- 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3448, 0,
+ 0, 0, 0, 0, 0, 1163, 1163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 1159, 0,
- 0, 3487, 3489, 3491, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4712, 0, 0,
- 0, 0, 4717, 4718, 0, 0, 0, 0, 0, 0,
- 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1403, 1403, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3553, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3561, 0, 3562, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1159, 0,
- 1159, 0, 0, 0, 0, 0, 0, 3587, 0, 0,
+ 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3601, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2425, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2425, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3656,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3662, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4028, 0, 0,
+ 0, 4030, 0, 0, 4031, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0,
- 0, 0, 3682, 0, 0, 0, 0, 0, 0, 3057,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
+ 0, 0, 4059, 0, 0, 0, 0, 4063, 4064, 4065,
+ 4066, 0, 4067, 0, 4068, 4069, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4074, 4075, 0, 0, 1163,
+ 4076, 4077, 4078, 0, 0, 0, 0, 0, 0, 0,
+ 4080, 4081, 4082, 0, 4083, 0, 4085, 0, 4087, 0,
+ 4089, 0, 4091, 0, 0, 0, 0, 2788, 4094, 0,
+ 2788, 0, 4097, 0, 0, 0, 4098, 0, 0, 4099,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4106, 0, 4107, 4108, 4109, 0, 0, 4110, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 1159, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4132, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4142, 4145, 0, 0,
+ 4150, 0, 1163, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3776, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3801, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3801, 0, 0, 0, 0, 2425, 2425, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3887, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5064, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5088, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3053, 0, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3053,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3950, 3951, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1159, 0, 0, 0, 0,
+ 0, 0, 4330, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4025, 0, 0, 0, 4027, 0, 0, 4028, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4056, 0, 0, 0,
- 0, 4060, 4061, 4062, 4063, 0, 4064, 0, 4065, 4066,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4071,
- 4072, 0, 0, 0, 4073, 4074, 4075, 0, 0, 0,
- 0, 0, 0, 0, 4077, 4078, 4079, 0, 4080, 0,
- 4082, 1159, 4084, 0, 4086, 0, 4088, 0, 0, 0,
- 0, 2792, 4091, 0, 2792, 0, 4094, 0, 0, 0,
- 4095, 0, 0, 4096, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4103, 0, 4104, 4105, 4106,
- 0, 0, 4107, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4129,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4139, 4142, 0, 0, 4147, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5377, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1159,
- 0, 0, 0, 0, 0, 0, 0, 4180, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2425, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3057, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1159, 0, 0, 0, 0,
- 0, 0, 0, 3057, 0, 0, 0, 0, 0, 0,
- 5508, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5528,
- 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1159,
+ 0, 4457, 4458, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4328, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4504, 0, 0, 4505,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1163, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4525, 4526, 0, 0, 0, 4531,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4551, 0, 4552, 0, 4553, 0, 4554, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1159, 0, 0, 0, 0, 0,
+ 0, 0, 4569, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4590, 4591, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3802, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0,
+ 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4638, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3053, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6914,123 +6902,112 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4474, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4494, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1159, 0, 0, 4502, 1159,
- 0, 4503, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4805, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3802, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3802, 0, 0, 4819,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4523, 4524, 0, 0,
- 0, 4529, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4549, 0, 4550, 0, 4551, 0, 4552,
- 0, 0, 0, 0, 0, 5744, 0, 0, 0, 0,
- 0, 0, 0, 0, 4567, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4588, 4589, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3801, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 5790, 0, 1159, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2425, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2425, 0,
- 0, 0, 2425, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3057, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4932, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4945, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4964,
+ 4965, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4972, 4973, 4974, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4996,
+ 4997, 1163, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4795, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3801, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3801,
- 0, 0, 4809, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5019, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5997, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6003, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3053,
+ 0, 0, 0, 3053, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1163, 0, 0, 0, 1163, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4951, 4952, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4959, 4960,
- 4961, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4983, 4984, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5006, 0, 0,
+ 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2425, 0, 0,
- 0, 0, 2425, 2425, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3057, 0, 0, 0, 3057, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5269, 5270, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3802, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3802, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3053, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 5238, 5239, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3801, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5509, 0, 5511, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3801, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2425, 2425, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3057, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5614, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 5474, 0,
- 5476, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3802, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7043,11 +7020,8 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5578, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3801, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2425, 2425, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7059,10 +7033,13 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3802, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3053, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5823, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7072,13 +7049,10 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3801, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3057, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 5786, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7088,6 +7062,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6036, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7097,2100 +7072,1876 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 996, 0, 0, 0, 0, 997,
- 998, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 999, 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
- 1008, 1009, 1010, 1011, 0, 0, 0, 0, 0, 6006,
- 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1013, 1014,
- 1015, 1016, 0, 0, 0, 0, 0, 0, 0, 1017,
- 1018, 0, 1019, 0, 0, 0, 0, 0, 0, 1020,
- 1021, 0, 0, 1022, 1023, 1024, 1025, 0, 1026, 13,
- 0, 1027, 1028, 0, 0, 0, 0, 0, 0, 0,
- 1029, 0, 0, 1030, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
- 0, 1031, 1032, 1033, 0, 1034, 0, 0, 0, 0,
- 0, 0, 0, 1035, 1036, 1037, 22, 0, 0, 0,
- 0, 0, 1038, 0, 0, 571, 0, 0, 0, 0,
- 0, 1039, 0, 0, 1040, 0, 0, 0, 0, 0,
- 0, 0, 0, 1041, 0, 1042, 0, 1043, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 6135,
- 0, 1044, 1045, 0, 1046, 0, 0, 0, 1047, 0,
- 0, 0, 0, 1048, 0, 0, 29, 1049, 0, 1050,
- 1051, 1052, 1053, 0, 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
- 1054, 1055, 1056, 0, 1057, 0, 0, 0, 0, 0,
- 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1059, 0, 0, 0, 0, 0, 0, 0,
- 1060, 1061, 0, 0, 0, 42, 0, 0, 0, 0,
- 0, 0, 0, 0, 2069, 0, 0, 0, 0, 1062,
- 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 1065,
- 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1068, 1069, 1070, 0, 0, 49, 0, 0, 1071,
- 1072, 0, 0, 0, 0, 51, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 1073, 1074,
- 1075, 1076, 61, 62, 63, 1077, 65, 66, 67, 68,
- 69, 70, 1078, 72, 73, 74, 75, 76, 77, 78,
- 1079, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 1080, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 1081, 108, 1082, 1083, 1084, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 1085,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 1086, 1087, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 3057, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 1088, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 1089,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
- 217, 1090, 1091, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 1092, 264, 265,
- 266, 267, 268, 1093, 270, 271, 272, 273, 274, 275,
- 276, 277, 1094, 1095, 280, 281, 282, 283, 284, 594,
- 285, 286, 287, 288, 289, 290, 291, 292, 3057, 293,
- 294, 295, 296, 595, 297, 298, 1096, 300, 301, 302,
- 303, 304, 305, 306, 1097, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 1098, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 1099, 363, 364, 365, 601, 367, 368, 1100, 370, 371,
- 372, 373, 374, 375, 1101, 377, 602, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 1102, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 1103, 1104, 1105, 1106, 429, 430,
- 431, 432, 1107, 1108, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 1109, 448, 1110, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 1111, 607, 1112, 464, 465, 466, 0, 467, 608, 469,
- 1113, 0, 0, 0, 0, 0, 0, 0, 0, 1114,
- 1115, 0, 0, 996, 0, 1116, 0, 0, 997, 998,
- 1117, 0, 0, 0, 1118, 1119, 0, 0, 1120, 999,
- 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
- 1009, 1010, 1011, 0, 0, 0, 0, 0, 0, 0,
- 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1013, 1014, 1015,
- 1016, 0, 0, 0, 2779, 0, 0, 0, 1017, 1018,
- 0, 1019, 0, 0, 0, 0, 0, 0, 1020, 1021,
- 0, 0, 1022, 1023, 1024, 1025, 0, 1026, 13, 0,
- 1027, 1028, 0, 0, 0, 0, 0, 0, 0, 1029,
- 0, 0, 1030, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1000, 0, 0, 0, 0, 1001, 1002,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1003,
+ 1004, 0, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 6167, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
- 1031, 1032, 1033, 0, 1034, 0, 0, 0, 0, 0,
- 0, 0, 1035, 1036, 1037, 22, 0, 0, 0, 0,
- 0, 1038, 0, 0, 571, 0, 0, 0, 0, 0,
- 1039, 0, 0, 1040, 0, 0, 0, 0, 0, 0,
- 0, 0, 1041, 2780, 1042, 0, 1043, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1044, 1045, 0, 1046, 0, 0, 0, 1047, 0, 0,
- 0, 0, 1048, 0, 0, 29, 1049, 0, 1050, 1051,
- 1052, 1053, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 1054,
- 1055, 1056, 0, 1057, 0, 0, 0, 0, 0, 0,
- 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1059, 0, 0, 0, 0, 0, 0, 0, 1060,
- 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1062, 0,
- 0, 0, 0, 0, 0, 1063, 1064, 0, 1065, 1066,
- 0, 0, 0, 0, 0, 0, 0, 0, 2781, 0,
- 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1068, 1069, 1070, 0, 0, 0, 0, 0, 1071, 1072,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 2073,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 42, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 49, 0, 0, 1075, 1076,
+ 0, 0, 3053, 0, 51, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 3053, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 2775, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 2776, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2777, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 1073, 1074, 1075,
- 1076, 61, 62, 63, 1077, 65, 66, 67, 68, 69,
- 70, 1078, 72, 73, 74, 75, 76, 77, 78, 1079,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 1080, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 1081,
- 108, 1082, 1083, 1084, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 1085, 125,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 1086, 1087, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 1088, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 1089, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 1090, 1091, 220, 221, 222, 223, 224, 225, 226, 227,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 1092, 264, 265, 266,
- 267, 268, 1093, 270, 271, 272, 273, 274, 275, 276,
- 277, 1094, 1095, 280, 281, 282, 283, 284, 594, 285,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 1096, 300, 301, 302, 303,
- 304, 305, 306, 1097, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 1098, 319, 320, 321, 322,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 1099,
- 363, 364, 365, 601, 367, 368, 1100, 370, 371, 372,
- 373, 374, 375, 1101, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 1102, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 1103, 1104, 1105, 1106, 429, 430, 431,
- 432, 1107, 1108, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 1109, 448, 1110, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 1111,
- 607, 1112, 464, 465, 466, 0, 467, 608, 469, 1113,
- 0, 0, 0, 0, 0, 0, 0, 0, 1114, 1115,
- 0, 0, 996, 0, 1116, 0, 0, 997, 998, 1117,
- 0, 0, 0, 1118, 1119, 0, 0, 1120, 999, 1000,
- 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
- 1010, 1011, 0, 0, 0, 0, 0, 0, 0, 1012,
- 0, 0, 0, 0, 0, 0, 2421, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2422, 1014, 1015, 1016,
- 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 0,
- 1019, 0, 0, 0, 0, 0, 0, 1020, 1021, 0,
- 0, 1022, 1023, 1024, 1025, 0, 1026, 13, 0, 1027,
- 1028, 0, 0, 0, 0, 0, 0, 0, 2423, 0,
- 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 1031,
- 1032, 1033, 0, 1034, 0, 0, 0, 0, 0, 0,
- 0, 1035, 1036, 1037, 22, 0, 0, 0, 0, 0,
- 1038, 0, 0, 571, 0, 0, 0, 0, 0, 1039,
- 0, 0, 1040, 0, 0, 0, 0, 0, 0, 0,
- 0, 1041, 0, 1042, 0, 1043, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1044,
- 1045, 0, 1046, 0, 0, 0, 1047, 0, 0, 0,
- 0, 1048, 0, 0, 29, 1049, 0, 1050, 1051, 1052,
- 1053, 0, 2424, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 1054, 1055,
- 1056, 0, 1057, 0, 0, 0, 0, 0, 0, 1058,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1059, 0, 0, 0, 0, 0, 0, 0, 1060, 1061,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1062, 0, 0,
- 0, 0, 0, 0, 1063, 1064, 0, 1065, 1066, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068,
- 1069, 1070, 0, 0, 0, 0, 0, 1071, 1072, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 1073, 1074, 1075, 1076,
- 61, 62, 63, 1077, 65, 66, 67, 68, 69, 70,
- 1078, 72, 73, 74, 75, 76, 77, 78, 1079, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 1080, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 1081, 108,
- 1082, 1083, 1084, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 1085, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 1086,
- 1087, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 1088, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 1089, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 1090,
- 1091, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 1092, 264, 265, 266, 267,
- 268, 1093, 270, 271, 272, 273, 274, 275, 276, 277,
- 1094, 1095, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 1096, 300, 301, 302, 303, 304,
- 305, 306, 1097, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 1098, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 1099, 363,
- 364, 365, 601, 367, 368, 1100, 370, 371, 372, 373,
- 374, 375, 1101, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 1102, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 1103, 1104, 1105, 1106, 429, 430, 431, 432,
- 1107, 1108, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 1109, 448, 1110, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 1111, 607,
- 1112, 464, 465, 466, 0, 467, 608, 469, 1113, 0,
- 0, 0, 0, 0, 0, 0, 0, 1114, 1115, 0,
- 0, 996, 0, 1116, 0, 0, 997, 998, 1117, 0,
- 0, 0, 1118, 1119, 0, 0, 1120, 999, 1000, 0,
- 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
- 1011, 0, 0, 0, 0, 0, 0, 0, 1012, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1013, 1014, 1015, 1016, 0,
- 0, 0, 0, 0, 0, 0, 1017, 1018, 0, 1019,
- 0, 0, 0, 0, 0, 0, 1020, 1021, 0, 0,
- 1022, 1023, 1024, 1025, 0, 1026, 13, 0, 1027, 1028,
- 0, 0, 0, 0, 0, 0, 0, 1029, 0, 0,
- 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 1031, 1032,
- 1033, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
- 1035, 1036, 1037, 22, 0, 0, 0, 0, 0, 1038,
- 0, 0, 571, 0, 0, 0, 0, 0, 1039, 0,
- 0, 1040, 0, 0, 0, 0, 0, 0, 0, 0,
- 1041, 0, 1042, 0, 1043, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1044, 1045,
- 0, 1046, 0, 0, 0, 1047, 0, 0, 0, 0,
- 1048, 0, 0, 29, 1049, 0, 1050, 1051, 1052, 1053,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 1054, 1055, 1056,
- 0, 1057, 0, 0, 0, 0, 0, 0, 1058, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1059,
- 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1062, 0, 0, 0,
- 0, 0, 0, 1063, 1064, 0, 1065, 1066, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1068, 1069,
- 1070, 0, 0, 0, 0, 0, 1071, 1072, 0, 1955,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 1073, 1074, 1075, 1076, 61,
- 62, 63, 1077, 65, 66, 67, 68, 69, 70, 1078,
- 72, 73, 74, 75, 76, 77, 78, 1079, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 1080, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 1081, 108, 1082,
- 1083, 1084, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 1085, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 1086, 1087,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 1088, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 1089, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 1090, 1091,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 1092, 264, 265, 266, 267, 268,
- 1093, 270, 271, 272, 273, 274, 275, 276, 277, 1094,
- 1095, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 1096, 300, 301, 302, 303, 304, 305,
- 306, 1097, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 1098, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 1099, 363, 364,
- 365, 601, 367, 368, 1100, 370, 371, 372, 373, 374,
- 375, 1101, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 1102, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 1103, 1104, 1105, 1106, 429, 430, 431, 432, 1107,
- 1108, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 1109, 448, 1110, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 1111, 607, 1112,
- 464, 465, 466, 0, 467, 608, 469, 1113, 0, 0,
- 0, 0, 0, 0, 0, 0, 1114, 1115, 0, 0,
- 996, 0, 1116, 0, 0, 997, 998, 1117, 0, 0,
- 0, 1118, 1119, 0, 0, 1120, 999, 1000, 0, 1001,
- 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1013, 1014, 1015, 1016, 0, 0,
- 0, 0, 0, 0, 0, 1017, 1018, 0, 1019, 0,
- 0, 0, 0, 0, 0, 1020, 1021, 0, 0, 1022,
- 1023, 1024, 1025, 0, 1026, 13, 0, 1027, 1028, 0,
- 0, 0, 0, 0, 0, 0, 3054, 0, 0, 1030,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 1031, 1032, 1033,
- 0, 1034, 0, 0, 0, 0, 0, 0, 0, 1035,
- 1036, 1037, 22, 0, 0, 0, 0, 0, 1038, 0,
- 3055, 571, 0, 0, 0, 0, 0, 1039, 0, 0,
- 1040, 0, 0, 0, 0, 0, 0, 0, 0, 1041,
- 0, 1042, 0, 1043, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1044, 1045, 0,
- 1046, 0, 0, 0, 1047, 0, 0, 0, 0, 1048,
- 0, 0, 29, 1049, 0, 1050, 1051, 1052, 1053, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 1054, 1055, 1056, 0,
- 1057, 0, 0, 0, 0, 0, 0, 1058, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1059, 0,
- 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1062, 0, 0, 0, 0,
- 0, 0, 1063, 1064, 0, 1065, 1066, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1068, 1069, 1070,
- 0, 0, 0, 0, 0, 1071, 1072, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 1073, 1074, 1075, 1076, 61, 62,
- 63, 1077, 65, 66, 67, 68, 69, 70, 1078, 72,
- 73, 74, 75, 76, 77, 78, 1079, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 1080, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 1081, 108, 1082, 1083,
- 1084, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 1085, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 1086, 1087, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 1088, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 1089, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 1090, 1091, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 1092, 264, 265, 266, 267, 268, 1093,
- 270, 271, 272, 273, 274, 275, 276, 277, 1094, 1095,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 1096, 300, 301, 302, 303, 304, 305, 306,
- 1097, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 1098, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 1099, 363, 364, 365,
- 601, 367, 368, 1100, 370, 371, 372, 373, 374, 375,
- 1101, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 1102, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 1103, 1104, 1105, 1106, 429, 430, 431, 432, 1107, 1108,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 1109, 448, 1110, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 1111, 607, 1112, 464,
- 465, 466, 0, 467, 608, 469, 1113, 0, 0, 0,
- 0, 0, 0, 0, 0, 1114, 1115, 0, 0, 996,
- 0, 1116, 0, 0, 997, 998, 1117, 0, 0, 0,
- 1118, 1119, 0, 0, 1120, 999, 1000, 0, 1001, 1002,
- 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 0,
- 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1013, 1014, 1015, 1016, 0, 0, 0,
- 0, 0, 0, 0, 1017, 1018, 0, 1019, 0, 0,
- 0, 0, 0, 0, 1020, 1021, 0, 0, 1022, 1023,
- 1024, 1025, 0, 1026, 13, 0, 1027, 1028, 0, 0,
- 0, 0, 0, 0, 0, 1029, 0, 0, 1030, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 1031, 1032, 1033, 0,
- 1034, 0, 0, 0, 3486, 0, 0, 0, 1035, 1036,
- 1037, 22, 0, 0, 0, 0, 0, 1038, 0, 0,
- 571, 0, 0, 0, 0, 0, 1039, 0, 0, 1040,
- 0, 0, 0, 0, 0, 0, 0, 0, 1041, 0,
- 1042, 0, 1043, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1044, 1045, 0, 1046,
- 0, 0, 0, 1047, 0, 0, 0, 0, 1048, 0,
- 0, 29, 1049, 0, 1050, 1051, 1052, 1053, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 1054, 1055, 1056, 0, 1057,
- 0, 0, 0, 0, 0, 0, 1058, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1059, 0, 0,
- 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1062, 0, 0, 0, 0, 0,
- 0, 1063, 1064, 0, 1065, 1066, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1068, 1069, 1070, 0,
- 0, 0, 0, 0, 1071, 1072, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 1073, 1074, 1075, 1076, 61, 62, 63,
- 1077, 65, 66, 67, 68, 69, 70, 1078, 72, 73,
- 74, 75, 76, 77, 78, 1079, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 1080, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 1081, 108, 1082, 1083, 1084,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 1085, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 1086, 1087, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 1088, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 1089, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 1090, 1091, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 1092, 264, 265, 266, 267, 268, 1093, 270,
- 271, 272, 273, 274, 275, 276, 277, 1094, 1095, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 1096, 300, 301, 302, 303, 304, 305, 306, 1097,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 1098, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 1099, 363, 364, 365, 601,
- 367, 368, 1100, 370, 371, 372, 373, 374, 375, 1101,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 1102, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 1103,
- 1104, 1105, 1106, 429, 430, 431, 432, 1107, 1108, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 1109, 448, 1110, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 1111, 607, 1112, 464, 465,
- 466, 0, 467, 608, 469, 1113, 0, 0, 0, 0,
- 0, 0, 0, 0, 1114, 1115, 0, 0, 996, 0,
- 1116, 0, 0, 997, 998, 1117, 0, 0, 0, 1118,
- 1119, 0, 0, 1120, 999, 1000, 0, 1001, 1002, 1003,
- 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 0, 0,
- 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1013, 1014, 1015, 1016, 0, 0, 0, 0,
- 0, 0, 0, 1017, 1018, 0, 1019, 0, 0, 0,
- 0, 0, 0, 1020, 1021, 0, 0, 1022, 1023, 1024,
- 1025, 0, 1026, 13, 0, 1027, 1028, 0, 0, 0,
- 0, 0, 0, 0, 1029, 0, 0, 1030, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 0, 0, 0, 1031, 1032, 1033, 0, 1034,
- 0, 0, 0, 3488, 0, 0, 0, 1035, 1036, 1037,
- 22, 0, 0, 0, 0, 0, 1038, 0, 0, 571,
- 0, 0, 0, 0, 0, 1039, 0, 0, 1040, 0,
- 0, 0, 0, 0, 0, 0, 0, 1041, 0, 1042,
- 0, 1043, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1044, 1045, 0, 1046, 0,
- 0, 0, 1047, 0, 0, 0, 0, 1048, 0, 0,
- 29, 1049, 0, 1050, 1051, 1052, 1053, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 1054, 1055, 1056, 0, 1057, 0,
- 0, 0, 0, 0, 0, 1058, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1059, 0, 0, 0,
- 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0,
- 1063, 1064, 0, 1065, 1066, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1068, 1069, 1070, 0, 0,
- 0, 0, 0, 1071, 1072, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
- 58, 59, 1073, 1074, 1075, 1076, 61, 62, 63, 1077,
- 65, 66, 67, 68, 69, 70, 1078, 72, 73, 74,
- 75, 76, 77, 78, 1079, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 1080, 96, 578, 98, 99, 100, 101, 102, 579,
- 103, 104, 105, 106, 1081, 108, 1082, 1083, 1084, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 1085, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 1086, 1087, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 1088, 589, 188, 189, 590, 191, 192, 591, 0,
- 194, 195, 196, 1089, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 1090, 1091, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 1092, 264, 265, 266, 267, 268, 1093, 270, 271,
- 272, 273, 274, 275, 276, 277, 1094, 1095, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
- 1096, 300, 301, 302, 303, 304, 305, 306, 1097, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
- 1098, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 1099, 363, 364, 365, 601, 367,
- 368, 1100, 370, 371, 372, 373, 374, 375, 1101, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 1102,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 1103, 1104,
- 1105, 1106, 429, 430, 431, 432, 1107, 1108, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 1109, 448, 1110, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 1111, 607, 1112, 464, 465, 466,
- 0, 467, 608, 469, 1113, 0, 0, 0, 0, 0,
- 0, 0, 0, 1114, 1115, 0, 0, 996, 0, 1116,
- 0, 0, 997, 998, 1117, 0, 0, 0, 1118, 1119,
- 0, 0, 1120, 999, 1000, 0, 1001, 1002, 1003, 1004,
- 1005, 1006, 1007, 1008, 1009, 1010, 1011, 0, 0, 0,
- 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1013, 1014, 1015, 1016, 0, 0, 0, 0, 0,
- 0, 0, 1017, 1018, 0, 1019, 0, 0, 0, 0,
- 0, 0, 1020, 1021, 0, 0, 1022, 1023, 1024, 1025,
- 0, 1026, 13, 0, 1027, 1028, 0, 0, 0, 0,
- 0, 0, 0, 1029, 0, 0, 1030, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 1031, 1032, 1033, 0, 1034, 0,
- 0, 0, 3490, 0, 0, 0, 1035, 1036, 1037, 22,
- 0, 0, 0, 0, 0, 1038, 0, 0, 571, 0,
- 0, 0, 0, 0, 1039, 0, 0, 1040, 0, 0,
- 0, 0, 0, 0, 0, 0, 1041, 0, 1042, 0,
- 1043, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1044, 1045, 0, 1046, 0, 0,
- 0, 1047, 0, 0, 0, 0, 1048, 0, 0, 29,
- 1049, 0, 1050, 1051, 1052, 1053, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 1054, 1055, 1056, 0, 1057, 0, 0,
- 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1059, 0, 0, 0, 0,
- 0, 0, 0, 1060, 1061, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1062, 0, 0, 0, 0, 0, 0, 1063,
- 1064, 0, 1065, 1066, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1068, 1069, 1070, 0, 0, 0,
- 0, 0, 1071, 1072, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 1073, 1074, 1075, 1076, 61, 62, 63, 1077, 65,
- 66, 67, 68, 69, 70, 1078, 72, 73, 74, 75,
- 76, 77, 78, 1079, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 1080, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 1081, 108, 1082, 1083, 1084, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 1085, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 1086, 1087, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 1088, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 1089, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 1090, 1091, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 1092, 264, 265, 266, 267, 268, 1093, 270, 271, 272,
- 273, 274, 275, 276, 277, 1094, 1095, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 1096,
- 300, 301, 302, 303, 304, 305, 306, 1097, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 1098,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 1099, 363, 364, 365, 601, 367, 368,
- 1100, 370, 371, 372, 373, 374, 375, 1101, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 1102, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 1103, 1104, 1105,
- 1106, 429, 430, 431, 432, 1107, 1108, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 1109,
- 448, 1110, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 1111, 607, 1112, 464, 465, 466, 0,
- 467, 608, 469, 1113, 0, 0, 0, 0, 0, 0,
- 0, 0, 1114, 1115, 0, 0, 996, 0, 1116, 0,
- 0, 997, 998, 1117, 0, 0, 0, 1118, 1119, 0,
- 0, 1120, 999, 1000, 0, 1001, 1002, 1003, 1004, 1005,
- 1006, 1007, 1008, 1009, 1010, 1011, 0, 0, 0, 0,
- 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1013, 1014, 1015, 1016, 0, 0, 0, 0, 0, 0,
- 0, 1017, 1018, 0, 1019, 0, 0, 0, 0, 0,
- 0, 1020, 1021, 0, 0, 1022, 1023, 1024, 1025, 0,
- 1026, 13, 0, 1027, 1028, 0, 0, 0, 0, 0,
- 0, 0, 5030, 0, 0, 1030, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
- 0, 0, 0, 1031, 1032, 1033, 0, 1034, 0, 0,
- 0, 0, 0, 0, 0, 1035, 1036, 1037, 22, 0,
- 0, 0, 0, 0, 1038, 0, 3055, 571, 0, 0,
- 0, 0, 0, 1039, 0, 0, 1040, 0, 0, 0,
- 0, 0, 0, 0, 0, 1041, 0, 1042, 0, 1043,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1044, 1045, 0, 1046, 0, 0, 0,
- 1047, 0, 0, 0, 0, 1048, 0, 0, 29, 1049,
- 0, 1050, 1051, 1052, 1053, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 1054, 1055, 1056, 0, 1057, 0, 0, 0,
- 0, 0, 0, 1058, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1059, 0, 0, 0, 0, 0,
- 0, 0, 1060, 1061, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1062, 0, 0, 0, 0, 0, 0, 1063, 1064,
- 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1068, 1069, 1070, 0, 0, 0, 0,
- 0, 1071, 1072, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
- 1073, 1074, 1075, 1076, 61, 62, 63, 1077, 65, 66,
- 67, 68, 69, 70, 1078, 72, 73, 74, 75, 76,
- 77, 78, 1079, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 1080,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
- 105, 106, 1081, 108, 1082, 1083, 1084, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 1085, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 1086, 1087, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 1088,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 1089, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 1090, 1091, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 1092,
- 264, 265, 266, 267, 268, 1093, 270, 271, 272, 273,
- 274, 275, 276, 277, 1094, 1095, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 1096, 300,
- 301, 302, 303, 304, 305, 306, 1097, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 1098, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 1099, 363, 364, 365, 601, 367, 368, 1100,
- 370, 371, 372, 373, 374, 375, 1101, 377, 602, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 1102, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 1103, 1104, 1105, 1106,
- 429, 430, 431, 432, 1107, 1108, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 1109, 448,
- 1110, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 1111, 607, 1112, 464, 465, 466, 0, 467,
- 608, 469, 1113, 0, 0, 0, 0, 0, 0, 0,
- 0, 1114, 1115, 0, 0, 996, 0, 1116, 0, 0,
- 997, 998, 1117, 0, 0, 0, 1118, 1119, 0, 0,
- 1120, 999, 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006,
- 1007, 1008, 1009, 1010, 1011, 0, 0, 0, 0, 0,
- 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1013,
- 1014, 1015, 1016, 0, 0, 0, 0, 0, 0, 0,
- 1017, 1018, 0, 1019, 0, 0, 0, 0, 0, 0,
- 1020, 1021, 0, 0, 1022, 1023, 1024, 1025, 0, 1026,
- 13, 0, 1027, 1028, 0, 0, 0, 0, 0, 0,
- 0, 1029, 0, 0, 1030, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 1031, 1032, 1033, 0, 1034, 0, 0, 0,
- 0, 0, 0, 0, 1035, 1036, 1037, 22, 0, 0,
- 0, 0, 0, 1038, 0, 0, 571, 0, 0, 0,
- 0, 0, 1039, 0, 0, 1040, 0, 0, 0, 0,
- 0, 0, 0, 0, 1041, 0, 1042, 0, 1043, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1044, 1045, 0, 1046, 0, 0, 0, 1047,
- 0, 0, 0, 0, 1048, 0, 0, 29, 1049, 0,
- 1050, 1051, 1052, 1053, 0, 0, 0, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 1054, 1055, 1056, 0, 1057, 0, 0, 0, 0,
- 0, 0, 1058, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1059, 0, 0, 0, 0, 0, 0,
- 0, 1060, 1061, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1062, 0, 0, 0, 0, 0, 0, 1063, 1064, 0,
- 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1068, 1069, 1070, 0, 0, 0, 0, 0,
- 1071, 1072, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 1073,
- 1074, 1075, 1076, 61, 62, 63, 1077, 65, 66, 67,
- 68, 69, 70, 1078, 72, 73, 74, 75, 76, 77,
- 78, 1079, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 1080, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 1081, 108, 1082, 1083, 1084, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 1085, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 1086, 1087, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 1088, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 1089, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 1090, 1091, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 1092, 264,
- 265, 266, 267, 268, 1093, 270, 271, 272, 273, 274,
- 275, 276, 277, 1094, 1095, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 1096, 300, 301,
- 302, 303, 304, 305, 306, 1097, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 1098, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 1099, 363, 364, 365, 601, 367, 368, 1100, 370,
- 371, 372, 373, 374, 375, 1101, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 1102, 407, 408, 409,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 1103, 1104, 1105, 1106, 429,
- 430, 431, 432, 1107, 1108, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 1109, 448, 1110,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 1111, 607, 1112, 464, 465, 466, 0, 467, 608,
- 469, 1113, 0, 0, 0, 0, 0, 0, 0, 0,
- 1114, 1115, 0, 0, 996, 0, 1116, 0, 0, 997,
- 998, 1117, 0, 0, 0, 1118, 1119, 0, 0, 1120,
- 999, 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
- 1008, 1009, 1010, 1011, 0, 0, 0, 0, 0, 0,
- 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1013, 1014,
- 1015, 1016, 0, 0, 0, 0, 0, 0, 0, 1017,
- 1018, 0, 1019, 0, 0, 0, 0, 0, 0, 1020,
- 1021, 0, 0, 1022, 1023, 1024, 1025, 0, 1026, 13,
- 0, 1027, 1028, 0, 0, 0, 0, 0, 0, 0,
- 1029, 0, 0, 1030, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
- 0, 1031, 1032, 1033, 0, 1034, 0, 0, 0, 0,
- 0, 0, 0, 1035, 1036, 1037, 22, 0, 0, 0,
- 0, 0, 1038, 0, 0, 571, 0, 0, 0, 0,
- 0, 1039, 0, 0, 1040, 0, 0, 0, 0, 0,
- 0, 0, 0, 1041, 0, 1042, 0, 1043, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1044, 1045, 0, 1046, 0, 0, 0, 1047, 0,
- 0, 0, 0, 1048, 0, 0, 29, 1049, 0, 1050,
- 1051, 1052, 1053, 0, 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
- 1054, 1055, 1056, 0, 1057, 0, 0, 0, 0, 0,
- 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1059, 0, 0, 0, 0, 0, 0, 0,
- 1060, 1061, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1062,
- 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 1065,
- 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1068, 1069, 1070, 0, 0, 0, 0, 0, 1071,
- 1072, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 1073, 1074,
- 1075, 1076, 61, 62, 63, 1077, 65, 66, 67, 68,
- 69, 70, 1078, 72, 73, 74, 75, 76, 77, 78,
- 1079, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 1080, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 1081, 108, 1082, 1083, 1084, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 1085,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 1086, 1087, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 1088, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 1089,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
- 217, 1090, 1091, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 1092, 264, 265,
- 266, 267, 268, 1093, 270, 271, 272, 273, 274, 275,
- 276, 277, 1094, 1095, 280, 281, 282, 283, 284, 594,
- 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 1096, 300, 301, 302,
- 303, 304, 305, 306, 1097, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 1098, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 1099, 363, 364, 365, 601, 367, 368, 1100, 370, 371,
- 372, 373, 374, 375, 1101, 377, 602, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 1102, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 1103, 1104, 1105, 1106, 429, 430,
- 431, 432, 1107, 1108, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 1109, 448, 1110, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 1111, 607, 1112, 464, 465, 466, 0, 467, 608, 469,
- 1113, 0, 0, 0, 0, 0, 0, 0, 0, 1114,
- 1115, 0, 0, 996, 0, 1116, 0, 0, 997, 998,
- 1981, 0, 0, 0, 1118, 1119, 0, 0, 1120, 999,
- 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
- 1009, 1010, 1011, 0, 0, 0, 0, 0, 0, 0,
- 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1013, 1014, 1015,
- 1016, 0, 0, 0, 0, 0, 0, 0, 1017, 1018,
- 0, 1019, 0, 0, 0, 0, 0, 0, 1020, 1021,
- 0, 0, 1022, 1023, 1024, 1025, 0, 1026, 13, 0,
- 1027, 1028, 0, 0, 0, 0, 0, 0, 0, 1029,
- 0, 0, 1030, 0, 0, 0, 0, 0, 0, 0,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 3179, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3180, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 3181,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
- 1031, 1032, 1033, 0, 1034, 0, 0, 0, 0, 0,
- 0, 0, 1035, 1036, 1037, 22, 0, 0, 0, 0,
- 0, 1038, 0, 0, 571, 0, 0, 0, 0, 0,
- 1039, 0, 0, 1040, 0, 0, 0, 0, 0, 0,
- 0, 0, 1041, 0, 1042, 0, 1043, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1044, 1045, 0, 1046, 0, 0, 0, 1047, 0, 0,
- 0, 0, 1048, 0, 0, 29, 1049, 0, 1050, 1051,
- 1052, 1053, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 1054,
- 1055, 1056, 0, 1057, 0, 0, 0, 0, 0, 0,
- 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1059, 0, 0, 0, 0, 0, 0, 0, 1060,
- 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1062, 0,
- 0, 0, 0, 0, 0, 1063, 1064, 0, 1065, 1066,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1068, 1069, 1070, 0, 0, 0, 0, 0, 1071, 1072,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 3182, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 1073, 1074, 1075,
- 1076, 61, 62, 63, 1077, 65, 66, 67, 68, 69,
- 70, 1078, 72, 73, 74, 75, 76, 77, 78, 1079,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 1080, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 1081,
- 108, 1082, 1083, 1084, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 1085, 125,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 1086, 1087, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 1088, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 1089, 2629,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 1090, 1091, 220, 221, 222, 223, 224, 225, 226, 227,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 1092, 264, 265, 266,
- 267, 268, 1093, 270, 271, 272, 273, 274, 275, 276,
- 277, 1094, 1095, 280, 281, 282, 283, 284, 594, 285,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 1096, 300, 301, 302, 303,
- 304, 305, 306, 1097, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 1098, 319, 320, 321, 322,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 1099,
- 363, 364, 365, 601, 367, 368, 1100, 370, 371, 372,
- 373, 374, 375, 1101, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 1102, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 1103, 1104, 1105, 1106, 429, 430, 431,
- 432, 1107, 1108, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 2630, 448, 1110, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 1111,
- 607, 1112, 464, 465, 466, 0, 467, 608, 469, 1113,
- 0, 0, 0, 0, 0, 0, 0, 0, 1114, 1115,
- 0, 0, 996, 0, 1116, 0, 0, 997, 998, 1117,
- 0, 0, 0, 1118, 1119, 0, 0, 1120, 999, 1000,
- 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
- 1010, 1011, 0, 0, 0, 0, 0, 0, 0, 1012,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1013, 1014, 1015, 1016,
- 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 0,
- 1019, 0, 0, 0, 0, 0, 0, 1020, 1021, 0,
- 0, 1022, 1023, 1024, 1025, 0, 1026, 13, 0, 1027,
- 1028, 0, 0, 0, 0, 0, 0, 0, 1029, 0,
- 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 1031,
- 1032, 1033, 0, 1034, 0, 0, 0, 0, 0, 0,
- 0, 1035, 1036, 1037, 22, 0, 0, 0, 0, 0,
- 1038, 0, 0, 571, 0, 0, 0, 0, 0, 1039,
- 0, 0, 1040, 0, 0, 0, 0, 0, 0, 0,
- 0, 1041, 0, 1042, 0, 1043, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1044,
- 1045, 0, 1046, 0, 0, 0, 1047, 0, 0, 0,
- 0, 1048, 0, 0, 29, 1049, 0, 1050, 1051, 1052,
- 1053, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 1054, 1055,
- 1056, 0, 1057, 0, 0, 0, 0, 0, 0, 1058,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1059, 0, 0, 0, 0, 0, 0, 0, 1060, 1061,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1062, 0, 0,
- 0, 0, 0, 0, 1063, 1064, 0, 1065, 1066, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068,
- 1069, 1070, 0, 0, 0, 0, 0, 1071, 1072, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 1073, 1074, 1075, 1076,
- 61, 62, 63, 1077, 65, 66, 67, 68, 69, 70,
- 1078, 72, 73, 74, 75, 76, 77, 78, 1079, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 1080, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 1081, 108,
- 1082, 1083, 1084, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 1085, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 1086,
- 1087, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 1088, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 1089, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 1090,
- 1091, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 1092, 264, 265, 266, 267,
- 268, 1093, 270, 271, 272, 273, 274, 275, 276, 277,
- 1094, 1095, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 1096, 300, 301, 302, 303, 304,
- 305, 306, 1097, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 1098, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 1099, 363,
- 364, 365, 601, 367, 368, 1100, 370, 371, 372, 373,
- 374, 375, 1101, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 1102, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 1103, 1104, 1105, 1106, 429, 430, 431, 432,
- 1107, 1108, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 2630, 448, 1110, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 1111, 607,
- 1112, 464, 465, 466, 0, 467, 608, 469, 1113, 0,
- 0, 0, 0, 0, 0, 0, 0, 1114, 1115, 0,
- 0, 996, 0, 1116, 0, 0, 997, 998, 1117, 0,
- 0, 0, 1118, 1119, 0, 0, 1120, 999, 1000, 0,
- 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
- 1011, 0, 0, 0, 0, 0, 0, 0, 1012, 0,
- 0, 0, 0, 0, 0, 2851, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1013, 1014, 1015, 1016, 0,
- 0, 0, 0, 0, 0, 0, 1017, 1018, 0, 1019,
- 0, 0, 0, 0, 0, 0, 1020, 1021, 0, 0,
- 1022, 1023, 1024, 1025, 0, 1026, 13, 0, 1027, 1028,
- 0, 0, 0, 0, 0, 0, 0, 1029, 0, 0,
- 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 1031, 1032,
- 1033, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
- 1035, 1036, 1037, 22, 0, 0, 0, 0, 0, 1038,
- 0, 0, 571, 0, 0, 0, 0, 0, 1039, 0,
- 0, 1040, 0, 0, 0, 0, 0, 0, 0, 0,
- 1041, 0, 1042, 0, 1043, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1044, 1045,
- 0, 1046, 0, 0, 0, 1047, 0, 0, 0, 0,
- 1048, 0, 0, 29, 0, 0, 1050, 1051, 1052, 1053,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 1054, 1055, 1056,
- 0, 1057, 0, 0, 0, 0, 0, 0, 1058, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1059,
- 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1062, 0, 0, 0,
- 0, 0, 0, 1063, 1064, 0, 1065, 1066, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1068, 1069,
- 1070, 0, 0, 0, 0, 0, 1071, 1072, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 1073, 1074, 1075, 1076, 61,
- 62, 63, 1077, 65, 66, 67, 68, 69, 2852, 1078,
- 72, 73, 74, 75, 76, 77, 78, 1079, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 1080, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 1081, 108, 1082,
- 1083, 1084, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 1085, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 1086, 1087,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 1088, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 1089, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 1090, 1091,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 1092, 264, 265, 266, 267, 268,
- 1093, 270, 271, 272, 273, 274, 275, 276, 277, 1094,
- 1095, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 1096, 300, 301, 302, 303, 304, 305,
- 306, 1097, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 1098, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 1099, 363, 364,
- 365, 601, 367, 368, 1100, 370, 371, 372, 373, 374,
- 375, 1101, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 1102, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 1103, 1104, 1105, 1106, 429, 430, 431, 432, 1107,
- 1108, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 1109, 448, 1110, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 1111, 607, 1112,
- 464, 465, 466, 0, 467, 608, 469, 1113, 0, 0,
- 0, 0, 0, 0, 0, 0, 1114, 1115, 0, 0,
- 996, 0, 1116, 0, 0, 997, 998, 1117, 0, 0,
- 0, 1118, 1119, 0, 0, 1120, 999, 1000, 0, 1001,
- 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1013, 1014, 1015, 1016, 0, 0,
- 0, 0, 0, 0, 0, 1017, 1018, 0, 1019, 0,
- 0, 0, 0, 0, 0, 1020, 1021, 0, 0, 1022,
- 1023, 1024, 1025, 0, 1026, 13, 0, 1027, 1028, 0,
- 0, 0, 0, 0, 0, 0, 1029, 0, 0, 1030,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 1031, 1032, 1033,
- 0, 1034, 0, 0, 0, 0, 0, 0, 0, 1035,
- 1036, 1037, 22, 0, 0, 0, 0, 0, 1038, 0,
- 0, 571, 0, 0, 0, 0, 0, 1039, 0, 0,
- 4087, 0, 0, 0, 0, 0, 0, 0, 0, 1041,
- 0, 1042, 0, 1043, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1044, 1045, 0,
- 1046, 0, 0, 0, 1047, 0, 0, 0, 0, 1048,
- 0, 0, 29, 1049, 0, 1050, 1051, 1052, 1053, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 1054, 1055, 1056, 0,
- 1057, 0, 0, 0, 0, 0, 0, 1058, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1059, 0,
- 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1062, 0, 0, 0, 0,
- 0, 0, 1063, 1064, 0, 1065, 1066, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1068, 1069, 1070,
- 0, 0, 0, 0, 0, 1071, 1072, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 1073, 1074, 1075, 1076, 61, 62,
- 63, 1077, 65, 66, 67, 68, 69, 70, 1078, 72,
- 73, 74, 75, 76, 77, 78, 1079, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 1080, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 1081, 108, 1082, 1083,
- 1084, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 1085, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 1086, 1087, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 1088, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 1089, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 1090, 1091, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 1092, 264, 265, 266, 267, 268, 1093,
- 270, 271, 272, 273, 274, 275, 276, 277, 1094, 1095,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 1096, 300, 301, 302, 303, 304, 305, 306,
- 1097, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 1098, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 1099, 363, 364, 365,
- 601, 367, 368, 1100, 370, 371, 372, 373, 374, 375,
- 1101, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 1102, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 1103, 1104, 1105, 1106, 429, 430, 431, 432, 1107, 1108,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 1109, 448, 1110, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 1111, 607, 1112, 464,
- 465, 466, 0, 467, 608, 469, 1113, 0, 0, 0,
- 0, 0, 0, 0, 0, 1114, 1115, 0, 0, 996,
- 0, 1116, 0, 0, 997, 998, 1117, 0, 0, 0,
- 1118, 1119, 0, 0, 1120, 999, 1000, 0, 1001, 1002,
- 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 0,
- 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1013, 1014, 1015, 1016, 0, 0, 0,
- 0, 0, 0, 0, 1017, 1018, 0, 1019, 0, 0,
- 0, 0, 0, 0, 1020, 1021, 0, 0, 1022, 1023,
- 1024, 1025, 0, 1026, 13, 0, 1027, 1028, 0, 0,
- 0, 0, 0, 0, 0, 1029, 0, 0, 1030, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 1031, 1032, 1033, 0,
- 1034, 0, 0, 0, 0, 0, 0, 0, 1035, 1036,
- 1037, 22, 0, 0, 0, 0, 0, 1038, 0, 0,
- 571, 0, 0, 0, 0, 0, 1039, 0, 0, 4102,
- 0, 0, 0, 0, 0, 0, 0, 0, 1041, 0,
- 1042, 0, 1043, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1044, 1045, 0, 1046,
- 0, 0, 0, 1047, 0, 0, 0, 0, 1048, 0,
- 0, 29, 1049, 0, 1050, 1051, 1052, 1053, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 1054, 1055, 1056, 0, 1057,
- 0, 0, 0, 0, 0, 0, 1058, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1059, 0, 0,
- 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1062, 0, 0, 0, 0, 0,
- 0, 1063, 1064, 0, 1065, 1066, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1068, 1069, 1070, 0,
- 0, 0, 0, 0, 1071, 1072, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 1073, 1074, 1075, 1076, 61, 62, 63,
- 1077, 65, 66, 67, 68, 69, 70, 1078, 72, 73,
- 74, 75, 76, 77, 78, 1079, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 1080, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 1081, 108, 1082, 1083, 1084,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 1085, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 1086, 1087, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 1088, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 1089, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 1090, 1091, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 1092, 264, 265, 266, 267, 268, 1093, 270,
- 271, 272, 273, 274, 275, 276, 277, 1094, 1095, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 1096, 300, 301, 302, 303, 304, 305, 306, 1097,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 1098, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 1099, 363, 364, 365, 601,
- 367, 368, 1100, 370, 371, 372, 373, 374, 375, 1101,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 1102, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 1103,
- 1104, 1105, 1106, 429, 430, 431, 432, 1107, 1108, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 1109, 448, 1110, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 1111, 607, 1112, 464, 465,
- 466, 0, 467, 608, 469, 1113, 0, 0, 0, 0,
- 0, 0, 0, 0, 1114, 1115, 0, 0, 996, 0,
- 1116, 0, 0, 997, 998, 1117, 0, 0, 0, 1118,
- 1119, 0, 0, 1120, 999, 1000, 0, 1001, 1002, 1003,
- 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 0, 0,
- 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1013, 1014, 1015, 1016, 0, 0, 0, 0,
- 0, 0, 0, 1017, 1018, 0, 1019, 0, 0, 0,
- 0, 0, 0, 1020, 1021, 0, 0, 1022, 1023, 1024,
- 1025, 0, 1026, 13, 0, 1027, 1028, 0, 0, 0,
- 0, 0, 0, 0, 1029, 0, 0, 1030, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 0, 0, 0, 1031, 1032, 1033, 0, 1034,
- 0, 0, 0, 0, 0, 0, 0, 1035, 1036, 1037,
- 22, 0, 0, 0, 0, 0, 1038, 0, 0, 571,
- 0, 0, 0, 0, 0, 1039, 0, 0, 1040, 0,
- 0, 0, 0, 0, 0, 0, 0, 1041, 0, 1042,
- 0, 1043, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1044, 1045, 6226, 1046, 0,
- 0, 0, 1047, 0, 0, 0, 0, 1048, 0, 0,
- 29, 0, 0, 1050, 1051, 1052, 1053, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 1054, 1055, 1056, 0, 1057, 0,
- 0, 0, 0, 0, 0, 1058, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1059, 0, 0, 0,
- 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0,
- 1063, 1064, 0, 1065, 1066, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1068, 1069, 1070, 0, 0,
- 0, 0, 0, 1071, 1072, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
- 58, 59, 1073, 1074, 1075, 1076, 61, 62, 63, 1077,
- 65, 66, 67, 68, 69, 70, 1078, 72, 73, 74,
- 75, 76, 77, 78, 1079, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 1080, 96, 578, 98, 99, 100, 101, 102, 579,
- 103, 104, 105, 106, 1081, 108, 1082, 1083, 1084, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 1085, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 1086, 1087, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 1088, 589, 188, 189, 590, 191, 192, 591, 0,
- 194, 195, 196, 1089, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 1090, 1091, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 1092, 264, 265, 266, 267, 268, 1093, 270, 271,
- 272, 273, 274, 275, 276, 277, 1094, 1095, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
- 1096, 300, 301, 302, 303, 304, 305, 306, 1097, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
- 1098, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 1099, 363, 364, 365, 601, 367,
- 368, 1100, 370, 371, 372, 373, 374, 375, 1101, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 1102,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 1103, 1104,
- 1105, 1106, 429, 430, 431, 432, 1107, 1108, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 1109, 448, 1110, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 1111, 607, 1112, 464, 465, 466,
- 0, 467, 608, 469, 1113, 0, 0, 0, 0, 0,
- 0, 0, 0, 1114, 1115, 0, 0, 996, 0, 1116,
- 0, 0, 997, 998, 1117, 0, 0, 0, 1118, 1119,
- 0, 0, 1120, 999, 1000, 0, 1001, 1002, 1003, 1004,
- 1005, 1006, 1007, 1008, 1009, 1010, 1011, 0, 0, 0,
- 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1013, 1014, 1015, 1016, 0, 0, 0, 0, 0,
- 0, 0, 1017, 1018, 0, 1019, 0, 0, 0, 0,
- 0, 0, 1020, 1021, 0, 0, 1022, 1023, 1024, 1025,
- 0, 1026, 13, 0, 1027, 1028, 0, 0, 0, 0,
- 0, 0, 0, 1029, 0, 0, 1030, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 1031, 1032, 1033, 0, 1034, 0,
- 0, 0, 0, 0, 0, 0, 1035, 1036, 1037, 22,
- 0, 0, 0, 0, 0, 1038, 0, 0, 571, 0,
- 0, 0, 0, 0, 1039, 0, 0, 1948, 0, 0,
- 0, 0, 0, 0, 0, 0, 1041, 0, 1042, 0,
- 1043, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1044, 1045, 0, 1046, 0, 0,
- 0, 1047, 0, 0, 0, 0, 1048, 0, 0, 29,
- 0, 0, 1050, 1051, 1052, 1053, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 1054, 1055, 1056, 0, 1057, 0, 0,
- 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1059, 0, 0, 0, 0,
- 0, 0, 0, 1060, 1061, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1062, 0, 0, 0, 0, 0, 0, 1063,
- 1064, 0, 1065, 1066, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1068, 1069, 1070, 0, 0, 0,
- 0, 0, 1071, 1072, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 1073, 1074, 1075, 1076, 61, 62, 63, 1077, 65,
- 66, 67, 68, 69, 70, 1078, 72, 73, 74, 75,
- 76, 77, 78, 1079, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 1080, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 1081, 108, 1082, 1083, 1084, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 1085, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 1086, 1087, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 1088, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 1089, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 1090, 1091, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 1092, 264, 265, 266, 267, 268, 1093, 270, 271, 272,
- 273, 274, 275, 276, 277, 1094, 1095, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 1096,
- 300, 301, 302, 303, 304, 305, 306, 1097, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 1098,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 1099, 363, 364, 365, 601, 367, 368,
- 1100, 370, 371, 372, 373, 374, 375, 1101, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 1102, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 1103, 1104, 1105,
- 1106, 429, 430, 431, 432, 1107, 1108, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 1109,
- 448, 1110, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 1111, 607, 1112, 464, 465, 466, 0,
- 467, 608, 469, 1113, 0, 0, 0, 0, 0, 0,
- 0, 0, 1949, 1950, 0, 0, 996, 0, 1116, 0,
- 0, 997, 998, 1117, 0, 0, 0, 1118, 1119, 0,
- 0, 1120, 999, 1000, 0, 1001, 1002, 1003, 1004, 1005,
- 1006, 1007, 1008, 1009, 1010, 1011, 0, 0, 0, 0,
- 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1013, 1014, 1015, 1016, 0, 0, 0, 0, 0, 0,
- 0, 1017, 1018, 0, 1019, 0, 0, 0, 0, 0,
- 0, 1020, 1021, 0, 0, 1022, 1023, 1024, 1025, 0,
- 1026, 13, 0, 1027, 1028, 0, 0, 0, 0, 0,
- 0, 0, 1029, 0, 0, 1030, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
- 0, 0, 0, 1031, 1032, 1033, 0, 1034, 0, 0,
- 0, 0, 0, 0, 0, 1035, 1036, 1037, 22, 0,
- 0, 0, 0, 0, 1038, 0, 0, 571, 0, 0,
- 0, 0, 0, 1039, 0, 0, 2062, 0, 0, 0,
- 0, 0, 0, 0, 0, 1041, 0, 1042, 0, 1043,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1044, 1045, 0, 1046, 0, 0, 0,
- 1047, 0, 0, 0, 0, 1048, 0, 0, 29, 0,
- 0, 1050, 1051, 1052, 1053, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 1054, 1055, 1056, 0, 1057, 0, 0, 0,
- 0, 0, 0, 1058, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1059, 0, 0, 0, 0, 0,
- 0, 0, 1060, 1061, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1062, 0, 0, 0, 0, 0, 0, 1063, 1064,
- 0, 1065, 1066, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1068, 1069, 1070, 0, 0, 0, 0,
- 0, 1071, 1072, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
- 1073, 1074, 1075, 1076, 61, 62, 63, 1077, 65, 66,
- 67, 68, 69, 70, 1078, 72, 73, 74, 75, 76,
- 77, 78, 1079, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 1080,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
- 105, 106, 1081, 108, 1082, 1083, 1084, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 1085, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 1086, 1087, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 1088,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 1089, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 1090, 1091, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 1092,
- 264, 265, 266, 267, 268, 1093, 270, 271, 272, 273,
- 274, 275, 276, 277, 1094, 1095, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 1096, 300,
- 301, 302, 303, 304, 305, 306, 1097, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 1098, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 1099, 363, 364, 365, 601, 367, 368, 1100,
- 370, 371, 372, 373, 374, 375, 1101, 377, 602, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 1102, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 1103, 1104, 1105, 1106,
- 429, 430, 431, 432, 1107, 1108, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 1109, 448,
- 1110, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 1111, 607, 1112, 464, 465, 466, 0, 467,
- 608, 469, 1113, 0, 0, 0, 0, 0, 0, 0,
- 0, 1949, 1950, 0, 0, 996, 0, 1116, 0, 0,
- 997, 998, 1117, 0, 0, 0, 1118, 1119, 0, 0,
- 1120, 999, 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006,
- 1007, 1008, 1009, 1010, 1011, 0, 0, 0, 0, 0,
- 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1013,
- 1014, 1015, 1016, 0, 0, 0, 0, 0, 0, 0,
- 1017, 1018, 0, 1019, 0, 0, 0, 0, 0, 0,
- 1020, 1021, 0, 0, 1022, 1023, 1024, 1025, 0, 1026,
- 13, 0, 1027, 1028, 0, 0, 0, 0, 0, 0,
- 0, 1029, 0, 0, 1030, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 1031, 1032, 1033, 0, 1034, 0, 0, 0,
- 0, 0, 0, 0, 1035, 1036, 1037, 22, 0, 0,
- 0, 0, 0, 1038, 0, 0, 571, 0, 0, 0,
- 0, 0, 1039, 0, 0, 2064, 0, 0, 0, 0,
- 0, 0, 0, 0, 1041, 0, 1042, 0, 1043, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1044, 1045, 0, 1046, 0, 0, 0, 1047,
- 0, 0, 0, 0, 1048, 0, 0, 29, 0, 0,
- 1050, 1051, 1052, 1053, 0, 0, 0, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 1054, 1055, 1056, 0, 1057, 0, 0, 0, 0,
- 0, 0, 1058, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1059, 0, 0, 0, 0, 0, 0,
- 0, 1060, 1061, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1062, 0, 0, 0, 0, 0, 0, 1063, 1064, 0,
- 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1068, 1069, 1070, 0, 0, 0, 0, 0,
- 1071, 1072, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 1073,
- 1074, 1075, 1076, 61, 62, 63, 1077, 65, 66, 67,
- 68, 69, 70, 1078, 72, 73, 74, 75, 76, 77,
- 78, 1079, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 1080, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 1081, 108, 1082, 1083, 1084, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 1085, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 1086, 1087, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 1088, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 1089, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 1090, 1091, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 1092, 264,
- 265, 266, 267, 268, 1093, 270, 271, 272, 273, 274,
- 275, 276, 277, 1094, 1095, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 1096, 300, 301,
- 302, 303, 304, 305, 306, 1097, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 1098, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 1099, 363, 364, 365, 601, 367, 368, 1100, 370,
- 371, 372, 373, 374, 375, 1101, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 1102, 407, 408, 409,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 1103, 1104, 1105, 1106, 429,
- 430, 431, 432, 1107, 1108, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 1109, 448, 1110,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 1111, 607, 1112, 464, 465, 466, 0, 467, 608,
- 469, 1113, 0, 0, 0, 0, 0, 0, 0, 0,
- 1949, 1950, 0, 0, 996, 0, 1116, 0, 0, 997,
- 998, 1117, 0, 0, 0, 1118, 1119, 0, 0, 1120,
- 999, 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
- 1008, 1009, 1010, 1011, 0, 0, 0, 0, 0, 0,
- 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1013, 1014,
- 1015, 1016, 0, 0, 0, 0, 0, 0, 0, 1017,
- 1018, 0, 1019, 0, 0, 0, 0, 0, 0, 1020,
- 1021, 0, 0, 1022, 1023, 1024, 1025, 0, 1026, 13,
- 0, 1027, 1028, 0, 0, 0, 0, 0, 0, 0,
- 1029, 0, 0, 1030, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
- 0, 1031, 1032, 1033, 0, 1034, 0, 0, 0, 0,
- 0, 0, 0, 1035, 1036, 1037, 22, 0, 0, 0,
- 0, 0, 1038, 0, 0, 571, 0, 0, 0, 0,
- 0, 1039, 0, 0, 1040, 0, 0, 0, 0, 0,
- 0, 0, 0, 1041, 0, 1042, 0, 1043, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1044, 1045, 0, 1046, 0, 0, 0, 1047, 0,
- 0, 0, 0, 1048, 0, 0, 29, 0, 0, 1050,
- 1051, 1052, 1053, 0, 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
- 1054, 1055, 1056, 0, 1057, 0, 0, 0, 0, 0,
- 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1059, 0, 0, 0, 0, 0, 0, 0,
- 1060, 1061, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1062,
- 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 1065,
- 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1068, 1069, 1070, 0, 0, 0, 0, 0, 1071,
- 1072, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 1073, 1074,
- 1075, 1076, 61, 62, 63, 1077, 65, 66, 67, 68,
- 69, 70, 1078, 72, 73, 74, 75, 76, 77, 78,
- 1079, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 1080, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 1081, 108, 1082, 1083, 1084, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 1085,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 1086, 1087, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 1088, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 1089,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
- 217, 1090, 1091, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 1092, 264, 265,
- 266, 267, 268, 1093, 270, 271, 272, 273, 274, 275,
- 276, 277, 1094, 1095, 280, 281, 282, 283, 284, 594,
- 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 1096, 300, 301, 302,
- 303, 304, 305, 306, 1097, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 1098, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 1099, 363, 364, 365, 601, 367, 368, 1100, 370, 371,
- 372, 373, 374, 375, 1101, 377, 602, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 1102, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 1103, 1104, 1105, 1106, 429, 430,
- 431, 432, 1107, 1108, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 1109, 448, 1110, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 1111, 607, 1112, 464, 465, 466, 0, 467, 608, 469,
- 1113, 0, 0, 0, 0, 0, 0, 0, 0, 1114,
- 1115, 0, 0, 996, 0, 1116, 0, 0, 997, 998,
- 1117, 0, 0, 0, 1118, 1119, 0, 0, 1120, 999,
- 1000, 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
- 1009, 1010, 1011, 0, 0, 0, 0, 0, 0, 0,
- 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1013, 1014, 1015,
- 1016, 0, 0, 0, 0, 0, 0, 0, 1017, 1018,
- 0, 1019, 0, 0, 0, 0, 0, 0, 1020, 1021,
- 0, 0, 1022, 1023, 1024, 1025, 0, 1026, 13, 0,
- 1027, 1028, 0, 0, 0, 0, 0, 0, 0, 1029,
- 0, 0, 1030, 0, 0, 0, 0, 0, 0, 0,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 1959, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 3050,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
- 1031, 1032, 1033, 0, 1034, 0, 0, 0, 0, 0,
- 0, 0, 1035, 1036, 1037, 22, 0, 0, 0, 0,
- 0, 1038, 0, 0, 571, 0, 0, 0, 0, 0,
- 1039, 0, 0, 2872, 0, 0, 0, 0, 0, 0,
- 0, 0, 1041, 0, 1042, 0, 1043, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1044, 1045, 0, 1046, 0, 0, 0, 1047, 0, 0,
- 0, 0, 1048, 0, 0, 29, 0, 0, 1050, 1051,
- 1052, 1053, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 1054,
- 1055, 1056, 0, 1057, 0, 0, 0, 0, 0, 0,
- 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1059, 0, 0, 0, 0, 0, 0, 0, 1060,
- 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1062, 0,
- 0, 0, 0, 0, 0, 1063, 1064, 0, 1065, 1066,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1068, 1069, 1070, 0, 0, 0, 0, 0, 1071, 1072,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 3051, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 1073, 1074, 1075,
- 1076, 61, 62, 63, 1077, 65, 66, 67, 68, 69,
- 70, 1078, 72, 73, 74, 75, 76, 77, 78, 1079,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 1080, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 1081,
- 108, 1082, 1083, 1084, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 1085, 125,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 1086, 1087, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 1088, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 1089, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 1090, 1091, 220, 221, 222, 223, 224, 225, 226, 227,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 1092, 264, 265, 266,
- 267, 268, 1093, 270, 271, 272, 273, 274, 275, 276,
- 277, 1094, 1095, 280, 281, 282, 283, 284, 594, 285,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 1096, 300, 301, 302, 303,
- 304, 305, 306, 1097, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 1098, 319, 320, 321, 322,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 1099,
- 363, 364, 365, 601, 367, 368, 1100, 370, 371, 372,
- 373, 374, 375, 1101, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 1102, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 1103, 1104, 1105, 1106, 429, 430, 431,
- 432, 1107, 1108, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 1109, 448, 1110, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 1111,
- 607, 1112, 464, 465, 466, 0, 467, 608, 469, 1113,
- 0, 0, 0, 0, 0, 0, 0, 0, 1114, 1115,
- 0, 0, 996, 0, 1116, 0, 0, 997, 998, 1117,
- 0, 0, 0, 1118, 1119, 0, 0, 1120, 999, 1000,
- 0, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
- 1010, 1011, 0, 0, 0, 0, 0, 0, 0, 1012,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1013, 1014, 1015, 1016,
- 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 0,
- 1019, 0, 0, 0, 0, 0, 0, 1020, 1021, 0,
- 0, 1022, 1023, 1024, 1025, 0, 1026, 13, 0, 1027,
- 1028, 0, 0, 0, 0, 0, 0, 0, 1029, 0,
- 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 1031,
- 1032, 1033, 0, 1034, 0, 0, 0, 0, 0, 0,
- 0, 1035, 1036, 1037, 22, 0, 0, 0, 0, 0,
- 1038, 0, 0, 571, 0, 0, 0, 0, 0, 1039,
- 0, 0, 2874, 0, 0, 0, 0, 0, 0, 0,
- 0, 1041, 0, 1042, 0, 1043, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1044,
- 1045, 0, 1046, 0, 0, 0, 1047, 0, 0, 0,
- 0, 1048, 0, 0, 29, 0, 0, 1050, 1051, 1052,
- 1053, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 1054, 1055,
- 1056, 0, 1057, 0, 0, 0, 0, 0, 0, 1058,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1059, 0, 0, 0, 0, 0, 0, 0, 1060, 1061,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1062, 0, 0,
- 0, 0, 0, 0, 1063, 1064, 0, 1065, 1066, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068,
- 1069, 1070, 0, 0, 0, 0, 0, 1071, 1072, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 1073, 1074, 1075, 1076,
- 61, 62, 63, 1077, 65, 66, 67, 68, 69, 70,
- 1078, 72, 73, 74, 75, 76, 77, 78, 1079, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 1080, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 1081, 108,
- 1082, 1083, 1084, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 1085, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 1086,
- 1087, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 1088, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 1089, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 1090,
- 1091, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 1092, 264, 265, 266, 267,
- 268, 1093, 270, 271, 272, 273, 274, 275, 276, 277,
- 1094, 1095, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 1096, 300, 301, 302, 303, 304,
- 305, 306, 1097, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 1098, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 1099, 363,
- 364, 365, 601, 367, 368, 1100, 370, 371, 372, 373,
- 374, 375, 1101, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 1102, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 1103, 1104, 1105, 1106, 429, 430, 431, 432,
- 1107, 1108, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 1109, 448, 1110, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 1111, 607,
- 1112, 464, 465, 466, 0, 467, 608, 469, 1113, 0,
- 0, 0, 0, 0, 0, 0, 0, 1114, 1115, 0,
- 0, 996, 0, 1116, 0, 0, 997, 998, 1117, 0,
- 0, 0, 1118, 1119, 0, 0, 1120, 6088, 6089, 0,
- 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
- 1011, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1014, 1015, 1016, 0,
- 0, 0, 0, 0, 0, 0, 1017, 1018, 0, 1019,
- 0, 0, 0, 0, 0, 0, 1020, 1021, 0, 0,
- 1022, 1023, 1024, 1025, 0, 1026, 13, 0, 1027, 1028,
- 0, 0, 0, 0, 0, 0, 0, 1029, 0, 0,
- 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 1031, 1032,
- 1033, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
- 1035, 1036, 1037, 22, 0, 0, 0, 0, 0, 1038,
- 0, 0, 571, 0, 0, 0, 0, 0, 1039, 0,
- 0, 1948, 0, 0, 0, 0, 0, 0, 0, 0,
- 1041, 0, 1042, 0, 1043, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1044, 1045,
- 0, 1046, 0, 0, 0, 1047, 0, 0, 0, 0,
- 1048, 0, 0, 29, 0, 0, 1050, 1051, 1052, 1053,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 1054, 1055, 1056,
- 0, 1057, 0, 0, 0, 0, 0, 0, 1058, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1059,
- 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1062, 0, 0, 0,
- 0, 0, 0, 1063, 1064, 0, 1065, 1066, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1068, 1069,
- 1070, 0, 0, 0, 0, 0, 1071, 1072, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 1073, 1074, 1075, 1076, 61,
- 62, 63, 1077, 65, 66, 67, 68, 69, 70, 1078,
- 72, 73, 74, 75, 76, 77, 78, 1079, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 1080, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 1081, 108, 1082,
- 1083, 1084, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 1085, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 1086, 1087,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 1088, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 1089, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 1090, 1091,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 1092, 264, 265, 266, 267, 268,
- 1093, 270, 271, 272, 273, 274, 275, 276, 277, 1094,
- 1095, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 1096, 300, 301, 302, 303, 304, 305,
- 306, 1097, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 1098, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 1099, 363, 364,
- 365, 601, 367, 368, 1100, 370, 371, 372, 373, 374,
- 375, 1101, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 1102, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 1103, 1104, 1105, 1106, 429, 430, 431, 432, 1107,
- 1108, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 1109, 448, 1110, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 1111, 607, 1112,
- 464, 465, 466, 0, 467, 608, 469, 1113, 0, 0,
- 0, 0, 0, 0, 0, 0, 6090, 6091, 0, 0,
- 996, 0, 0, 0, 0, 1986, 0, 6092, 0, 0,
- 0, 0, 1119, 0, 0, 1120, 1941, 1942, 0, 1001,
- 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 1033,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 1053, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 2908, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 2909, 426, 427, 2910, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 6384, 467, 608, 469, 470, 2828, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4, 5,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1120, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 6384, 467, 608, 469, 470, 2828,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 5, 0, 0, 0, 0, 0, 0, 0, 6385,
- 0, 0, 0, 0, 0, 0, 2829, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
- 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
- 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 1986, 467, 608, 469,
- 470, 0, 0, 0, 0, 0, 0, 1941, 1942, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2829, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 3487, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 3489, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 3491, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 5044,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 3051, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1985, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 2625,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 2626, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 2626, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 2847, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 2848, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 4090, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 4105, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 1053, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 6262, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1952, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1953, 1954, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 2066, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1953, 1954, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 2068, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1953, 1954, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1044, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 2868, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 1003,
+ 1004, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1017, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 2870, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1118, 1119, 1000, 0, 0, 0, 1120, 1001, 1002,
+ 0, 0, 0, 1121, 0, 0, 0, 1122, 1123, 6118,
+ 6119, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1018, 1019,
+ 1020, 0, 0, 0, 0, 0, 0, 0, 1021, 1022,
+ 0, 1023, 0, 0, 0, 0, 0, 0, 1024, 1025,
+ 0, 0, 1026, 1027, 1028, 1029, 0, 1030, 13, 0,
+ 1031, 1032, 0, 0, 0, 0, 0, 0, 0, 1033,
+ 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 1035, 1036, 1037, 0, 1038, 0, 0, 0, 0, 0,
+ 0, 0, 1039, 1040, 1041, 22, 0, 0, 0, 0,
+ 0, 1042, 0, 0, 572, 0, 0, 0, 0, 0,
+ 1043, 0, 0, 1952, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1045, 0, 1046, 0, 1047, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1048, 1049, 0, 1050, 0, 0, 0, 1051, 0, 0,
+ 0, 0, 1052, 0, 0, 29, 0, 0, 1054, 1055,
+ 1056, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1058,
+ 1059, 1060, 0, 1061, 0, 0, 0, 0, 0, 0,
+ 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064,
+ 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0,
+ 0, 0, 0, 0, 0, 1067, 1068, 0, 1069, 1070,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1072, 1073, 1074, 0, 0, 0, 0, 0, 1075, 1076,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 1077, 1078, 1079,
+ 1080, 61, 62, 63, 1081, 65, 66, 67, 68, 69,
+ 70, 1082, 72, 73, 74, 75, 76, 77, 78, 1083,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 1084, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 1085,
+ 108, 1086, 1087, 1088, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 1089, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 1090, 1091, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 1092, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 1093, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 1094, 1095, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 1096, 264, 265, 266,
+ 267, 268, 1097, 270, 271, 272, 273, 274, 275, 276,
+ 277, 1098, 1099, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 1100, 300, 301, 302, 303,
+ 304, 305, 306, 1101, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 1102, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 1103,
+ 363, 364, 365, 602, 367, 368, 1104, 370, 371, 372,
+ 373, 374, 375, 1105, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 1106, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 1107, 1108, 1109, 1110, 429,
+ 430, 431, 432, 1111, 1112, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 1113, 448, 449,
+ 1114, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 1115, 608, 1116, 465, 466, 467, 0, 468,
+ 609, 470, 1117, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6120, 6121, 1000, 0, 0, 0, 0, 1990, 0,
+ 0, 0, 0, 6122, 0, 0, 0, 0, 1123, 1945,
+ 1946, 1124, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 1013, 1014, 1015, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 1037, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 1057, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9198,56 +8949,57 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
+ 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 2904, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 2905, 426, 427, 2906, 429,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 608, 464, 465, 466, 467, 6415, 468,
+ 609, 470, 471, 2824, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 1986, 467, 608, 469, 470, 0, 0,
- 0, 0, 0, 0, 1941, 1942, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1987, 0, 0,
- 0, 0, 0, 0, 0, 1120, 0, 0, 0, 0,
+ 0, 1124, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9257,7 +9009,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 571,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9275,513 +9027,290 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 2828, 467, 608, 469, 470, 0, 0, 0, 0, 0,
- 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1120, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 6415, 468, 609, 470, 471, 2824, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 6416,
+ 0, 0, 0, 0, 0, 0, 2825, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 1, 0, 2, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4, 5, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2829,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 6, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 8, 0, 9, 0, 10, 0, 11,
- 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 14, 0, 0, 15, 0,
- 16, 17, 0, 0, 0, 0, 0, 18, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 20, 0, 0, 0, 21, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 23, 0,
- 0, 0, 0, 0, 0, 0, 0, 24, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 25, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
- 27, 0, 0, 0, 28, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 30, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 32, 33, 34, 0, 0, 0, 0,
- 0, 0, 0, 0, 35, 36, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 37, 38, 39, 0,
- 40, 0, 0, 0, 0, 41, 0, 0, 0, 0,
- 0, 42, 0, 0, 0, 43, 44, 45, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 46, 0, 47, 0, 48, 0, 0, 0, 0,
- 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
- 50, 51, 0, 0, 0, 52, 53, 54, 0, 55,
- 56, 57, 58, 59, 0, 60, 0, 0, 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, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 0, 96, 97, 98, 99, 100, 101,
- 102, 0, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 0, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 0, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 0, 179, 0, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 0, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 0, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 0,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 0, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 0, 467, 468, 469, 470, 1, 0, 0,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4, 5, 0, 0, 0, 471, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 7, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
- 9, 0, 10, 0, 11, 0, 0, 0, 0, 0,
- 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 14, 0, 0, 15, 0, 16, 17, 0, 0, 0,
- 0, 0, 18, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
- 0, 0, 0, 21, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
- 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 26, 0, 27, 0, 0, 0, 28,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 30, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 32, 33,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 35,
- 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 37, 38, 39, 0, 40, 0, 0, 0, 0,
- 41, 0, 0, 0, 0, 0, 42, 0, 0, 0,
- 43, 44, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 46, 0, 47, 0,
- 48, 0, 0, 0, 0, 0, 0, 49, 0, 0,
- 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
- 52, 53, 54, 0, 55, 56, 57, 58, 59, 0,
- 60, 0, 0, 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, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 0, 96,
- 97, 98, 99, 100, 101, 102, 0, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 0, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 0,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
- 179, 0, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 0, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 0, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 0, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 0, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
+ 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 462, 463, 464, 465, 466, 0, 467, 468,
- 469, 470, 1, 0, 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4, 5, 0, 0,
- 0, 471, 0, 0, 0, 0, 0, 0, 0, 0,
+ 460, 461, 462, 608, 464, 465, 466, 467, 1990, 468,
+ 609, 470, 471, 0, 0, 0, 0, 0, 0, 1945,
+ 1946, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 6, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 8, 0, 0, 0, 10, 0, 11,
- 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 15, 0,
- 16, 17, 0, 0, 0, 0, 0, 18, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 24, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 25, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
- 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 30, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 32, 33, 34, 0, 0, 0, 0,
- 0, 0, 0, 0, 35, 36, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
- 40, 0, 0, 0, 0, 41, 0, 0, 0, 0,
- 0, 42, 0, 0, 0, 43, 44, 45, 0, 0,
+ 0, 2825, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 46, 0, 47, 0, 48, 0, 0, 0, 0,
- 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
- 0, 51, 0, 0, 0, 52, 53, 54, 0, 55,
- 56, 57, 58, 59, 0, 60, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 0, 0,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 0, 96, 97, 98, 99, 100, 101,
- 102, 0, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 0, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 0, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 0, 179, 0, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 0, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 0, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 0,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 0, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 0, 467, 468, 469, 470, 4, 5, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 471, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5068, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 762, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 3706, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3707, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 764, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 5069, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
+ 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 608, 464, 465, 466, 467, 1990, 468,
+ 609, 470, 471, 0, 0, 0, 0, 0, 0, 1945,
+ 1946, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1991, 0, 0, 0, 0, 0, 0,
+ 0, 1124, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5070, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1385, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 42, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 49, 0, 0, 0, 0, 0,
- 0, 0, 0, 51, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
+ 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 608, 464, 465, 466, 467, 2824, 468,
+ 609, 470, 471, 0, 0, 0, 0, 0, 0, 4,
5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1386, 0,
- 0, 0, 0, 0, 0, 0, 793, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1124, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1384, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1385, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9799,127 +9328,355 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
+ 136, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 608, 464, 465, 466, 467, 0, 468,
+ 609, 470, 471, 1, 0, 2, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2825, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8, 0, 9, 0, 10, 0,
+ 11, 0, 0, 0, 0, 0, 0, 0, 12, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 14, 0, 0, 15,
+ 0, 16, 17, 0, 0, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 22, 0, 0, 0, 0, 0, 23,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 26,
+ 0, 27, 0, 0, 0, 28, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 30, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 33, 34, 0, 0, 0,
+ 0, 0, 0, 0, 0, 35, 36, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 37, 38, 39,
+ 0, 40, 0, 0, 0, 0, 41, 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 43, 44, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 47, 0, 48, 0, 0, 0,
+ 0, 0, 0, 49, 0, 0, 0, 0, 0, 0,
+ 0, 50, 51, 0, 0, 0, 52, 53, 54, 0,
+ 55, 56, 57, 58, 59, 0, 60, 0, 0, 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, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 0, 96, 97, 98, 99, 100,
+ 101, 102, 0, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 0, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 0, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 0, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 0, 179, 0, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 0, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 0, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 0, 285, 286, 287,
+ 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
+ 0, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 0, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 0, 0, 392,
+ 393, 0, 394, 395, 396, 397, 398, 399, 400, 401,
402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
- 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1386,
- 0, 0, 0, 0, 1387, 0, 0, 793, 0, 0,
+ 462, 463, 464, 465, 466, 467, 0, 468, 469, 470,
+ 471, 1, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 5, 0, 0, 0,
+ 0, 472, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 7, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8, 0, 9, 0, 10, 0, 11, 0,
+ 0, 0, 0, 0, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 14, 0, 0, 15, 0, 16,
+ 17, 0, 0, 0, 0, 0, 18, 0, 0, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 23, 0, 0,
+ 0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 25, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 26, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 32, 33, 34, 0, 0, 0, 0, 0,
+ 0, 0, 0, 35, 36, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 37, 38, 39, 0, 40,
+ 0, 0, 0, 0, 41, 0, 0, 0, 0, 0,
+ 42, 0, 0, 0, 43, 44, 45, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1385, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
+ 46, 0, 47, 0, 48, 0, 0, 0, 0, 0,
+ 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+ 51, 0, 0, 0, 52, 53, 54, 0, 55, 56,
+ 57, 58, 59, 0, 60, 0, 0, 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, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 0, 96, 97, 98, 99, 100, 101, 102,
+ 0, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 0, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 0, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 0, 179, 0, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 0, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 0, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 0, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 0, 314, 315, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 467, 0, 468, 469, 470, 471, 1,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 4, 5, 0, 0, 0, 0, 472,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 0, 0, 0, 10, 0, 11, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 0, 0,
+ 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 15, 0, 16, 17, 0,
+ 0, 0, 0, 0, 18, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 0, 0, 22,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 26, 0, 27, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
+ 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 33, 34, 0, 0, 0, 0, 0, 0, 0,
+ 0, 35, 36, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 37, 38, 0, 0, 40, 0, 0,
+ 0, 0, 41, 0, 0, 0, 0, 0, 42, 0,
+ 0, 0, 43, 44, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 46, 0,
+ 47, 0, 48, 0, 0, 0, 0, 0, 0, 49,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 0,
+ 0, 0, 52, 53, 54, 0, 55, 56, 57, 58,
+ 59, 0, 60, 0, 0, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 0, 0, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 0, 96, 97, 98, 99, 100, 101, 102, 0, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 0, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 0, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 0, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 0, 0, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 0, 179, 0, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 0, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 0, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 0, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 293, 294, 295, 296, 0, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 0, 314, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
+ 389, 390, 391, 0, 0, 392, 393, 0, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 0, 468, 469, 470, 471, 4, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 472, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5084, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 767, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
+ 0, 0, 572, 3707, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3708, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
- 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
- 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1386, 0, 0, 0, 0, 1387, 0, 0, 793, 0,
+ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 769, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 52, 53, 54, 573,
+ 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 574, 0,
+ 575, 576, 84, 85, 86, 87, 88, 89, 577, 91,
+ 92, 93, 94, 95, 578, 96, 579, 98, 99, 100,
+ 101, 102, 580, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 0, 112, 113, 114, 581, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 582, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 583, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 584, 148, 149, 150, 151, 585, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 586,
+ 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 587, 588, 179, 0, 180, 181,
+ 182, 589, 184, 185, 186, 590, 188, 189, 591, 191,
+ 192, 592, 0, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 593, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 594, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 595, 285, 286, 287,
+ 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
+ 596, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 5085, 309, 310, 311, 312, 313, 597, 314,
+ 598, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 599,
+ 345, 346, 347, 600, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 601, 359, 360, 361, 362, 363, 364,
+ 365, 602, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 603, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 0, 0, 392,
+ 393, 0, 394, 395, 396, 397, 604, 399, 400, 605,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 606, 435, 436, 437, 438, 439, 440, 441,
+ 442, 607, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 608, 464, 465, 466, 467, 0, 468, 609, 470,
+ 471, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5086,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9928,8 +9685,8 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1385, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1390, 0, 0,
+ 0, 0, 0, 0, 0, 0, 572, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -9940,78 +9697,80 @@ static const yytype_int16 yytable[] =
34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 42, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 49, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,
+ 52, 53, 54, 573, 55, 56, 57, 58, 59, 0,
0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
+ 78, 79, 574, 0, 575, 576, 84, 85, 86, 87,
+ 88, 89, 577, 91, 92, 93, 94, 95, 578, 96,
+ 579, 98, 99, 100, 101, 102, 580, 103, 104, 105,
106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
+ 581, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 582, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 583, 139, 0, 140, 141, 142,
+ 143, 144, 145, 146, 584, 148, 149, 150, 151, 585,
152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
+ 162, 163, 164, 586, 166, 0, 0, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 587, 588,
+ 179, 0, 180, 181, 182, 589, 184, 185, 186, 590,
+ 188, 189, 591, 191, 192, 592, 0, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 593, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 594, 217, 218, 219, 220, 221, 222, 223, 224, 225,
226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
+ 595, 285, 286, 287, 288, 289, 290, 291, 292, 0,
+ 293, 294, 295, 296, 596, 297, 298, 299, 300, 301,
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
+ 312, 313, 597, 314, 598, 316, 317, 318, 319, 320,
321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
+ 341, 342, 343, 599, 345, 346, 347, 600, 349, 350,
+ 351, 352, 353, 354, 355, 356, 357, 601, 359, 360,
+ 361, 362, 363, 364, 365, 602, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 603, 379, 380,
381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 4, 5, 0, 0, 0, 0, 0, 0,
+ 391, 0, 0, 392, 393, 0, 394, 395, 396, 397,
+ 604, 399, 400, 605, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 606, 435, 436, 437,
+ 438, 439, 440, 441, 442, 607, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 608, 464, 465, 466, 467,
+ 0, 468, 609, 470, 471, 4, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1386, 0, 0, 0, 0, 0, 0, 0, 793,
+ 0, 0, 0, 0, 0, 1391, 0, 0, 0, 0,
+ 0, 0, 0, 798, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1389, 0, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 1390, 0, 0, 0, 0, 0, 0, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 571, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10019,56 +9778,129 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
+ 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
+ 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 0, 468, 609, 470, 471, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1391,
+ 0, 0, 0, 0, 1392, 0, 0, 798, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1390, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
- 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 362, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 602, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 607, 463, 464, 465, 466, 0, 467,
- 608, 469, 470, 4, 5, 0, 0, 0, 0, 0,
- 0, 0, 0, 3359, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 793, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
+ 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 586, 166, 0, 0, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 180, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
+ 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 608, 464, 465, 466, 467, 0, 468,
+ 609, 470, 471, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1391, 0, 0, 0, 0, 1392, 0,
+ 0, 798, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10076,8 +9908,8 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1390,
+ 0, 0, 0, 0, 0, 0, 0, 0, 572, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10095,276 +9927,54 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
+ 0, 0, 52, 53, 54, 573, 55, 56, 57, 58,
59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
+ 76, 77, 78, 79, 574, 0, 575, 576, 84, 85,
+ 86, 87, 88, 89, 577, 91, 92, 93, 94, 95,
+ 578, 96, 579, 98, 99, 100, 101, 102, 580, 103,
104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
+ 113, 114, 581, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 582, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 583, 139, 0, 140,
+ 141, 142, 143, 144, 145, 146, 584, 148, 149, 150,
+ 151, 585, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 586, 166, 0, 0, 167,
168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
+ 587, 588, 179, 0, 180, 181, 182, 589, 184, 185,
+ 186, 590, 188, 189, 591, 191, 192, 592, 0, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
+ 205, 206, 593, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 594, 217, 218, 219, 220, 221, 222, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
+ 283, 284, 595, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 293, 294, 295, 296, 596, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
+ 310, 311, 312, 313, 597, 314, 598, 316, 317, 318,
319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
+ 339, 340, 341, 342, 343, 599, 345, 346, 347, 600,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 601,
+ 359, 360, 361, 362, 363, 364, 365, 602, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 603,
379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 4, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5235, 0, 0, 0, 0, 0, 0,
- 0, 5070, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 5496, 0, 0, 571,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
- 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 0, 467, 608, 469, 470, 4, 5, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 5070, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 790, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 791, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 792, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
+ 389, 390, 391, 0, 0, 392, 393, 0, 394, 395,
+ 396, 397, 604, 399, 400, 605, 402, 403, 404, 405,
406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
+ 426, 427, 428, 429, 430, 431, 432, 433, 606, 435,
+ 436, 437, 438, 439, 440, 441, 442, 607, 444, 445,
446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 456, 457, 458, 459, 460, 461, 462, 608, 464, 465,
+ 466, 467, 0, 468, 609, 470, 471, 4, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 793, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 4, 5, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 793, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1391, 0, 0,
+ 0, 0, 0, 0, 0, 798, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10374,7 +9984,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 572, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10391,213 +10001,64 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
+ 0, 0, 0, 0, 0, 0, 52, 53, 54, 573,
55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
+ 72, 73, 74, 75, 76, 77, 78, 79, 574, 0,
+ 575, 576, 84, 85, 86, 87, 88, 89, 577, 91,
+ 92, 93, 94, 95, 578, 96, 579, 98, 99, 100,
+ 101, 102, 580, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 0, 112, 113, 114, 581, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 582, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
+ 583, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 584, 148, 149, 150, 151, 585, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 586,
166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
+ 174, 175, 176, 177, 587, 588, 179, 0, 180, 181,
+ 182, 589, 184, 185, 186, 590, 188, 189, 591, 191,
+ 192, 592, 0, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 593, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 594, 217, 218, 219,
220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
+ 279, 280, 281, 282, 283, 284, 595, 285, 286, 287,
288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 596, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 597, 314,
+ 598, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
- 813, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 715, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5070, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1464, 0, 0, 13, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 0, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
- 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 599,
+ 345, 346, 347, 600, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 601, 359, 360, 361, 362, 363, 364,
+ 365, 602, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 603, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 0, 0, 392,
+ 393, 0, 394, 395, 396, 397, 604, 399, 400, 605,
402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
+ 432, 433, 606, 435, 436, 437, 438, 439, 440, 441,
+ 442, 607, 444, 445, 446, 447, 448, 449, 450, 451,
452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 1209, 467, 608, 469, 470,
+ 462, 608, 464, 465, 466, 467, 0, 468, 609, 470,
+ 471, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3360, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 798,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4, 5, 0, 0, 0, 0, 0, 0, 2883,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1210, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1211, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 1212, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 572, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10615,130 +10076,54 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 1213, 55, 56, 57, 58, 59, 0,
+ 52, 53, 54, 573, 55, 56, 57, 58, 59, 0,
0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 1214, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
+ 78, 79, 574, 0, 575, 576, 84, 85, 86, 87,
+ 88, 89, 577, 91, 92, 93, 94, 95, 578, 96,
+ 579, 98, 99, 100, 101, 102, 580, 103, 104, 105,
106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
+ 581, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 582, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 583, 139, 0, 140, 141, 142,
+ 143, 144, 145, 146, 584, 148, 149, 150, 151, 585,
152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 1215, 184, 185, 186, 589,
- 1216, 189, 590, 191, 192, 591, 0, 194, 195, 196,
+ 162, 163, 164, 586, 166, 0, 0, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 587, 588,
+ 179, 0, 180, 181, 182, 589, 184, 185, 186, 590,
+ 188, 189, 591, 191, 192, 592, 0, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 1217, 225,
+ 593, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 594, 217, 218, 219, 220, 221, 222, 223, 224, 225,
226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 1218, 274,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 1219,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 1220, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
+ 595, 285, 286, 287, 288, 289, 290, 291, 292, 0,
+ 293, 294, 295, 296, 596, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 597, 314, 598, 316, 317, 318, 319, 320,
321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 1221, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 1222, 375, 376, 377, 602, 379, 380,
+ 341, 342, 343, 599, 345, 346, 347, 600, 349, 350,
+ 351, 352, 353, 354, 355, 356, 357, 601, 359, 360,
+ 361, 362, 363, 364, 365, 602, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 603, 379, 380,
381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 1223,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 1224,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 1225, 463, 464, 465, 466, 1209, 467, 608,
- 469, 470, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 5, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1210, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1211, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 1212, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 1213, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 1214, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 1215, 184, 185,
- 186, 589, 1216, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 1217, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 1218, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 1219, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 1220, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 1221, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 1222, 375, 376, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
+ 391, 0, 0, 392, 393, 0, 394, 395, 396, 397,
+ 604, 399, 400, 605, 402, 403, 404, 405, 406, 407,
408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
+ 428, 429, 430, 431, 432, 433, 606, 435, 436, 437,
+ 438, 439, 440, 441, 442, 607, 444, 445, 446, 447,
448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 1225, 463, 464, 465, 466, 2136,
- 467, 608, 469, 470, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4, 5, 813, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 715, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 458, 459, 460, 461, 462, 608, 464, 465, 466, 467,
+ 0, 468, 609, 470, 471, 4, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5266, 0, 0, 0, 0,
+ 0, 0, 0, 5086, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10747,8 +10132,8 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 5531, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10765,130 +10150,54 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 2380, 467, 608, 469, 470, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4, 5, 813,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 715,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 2670, 467, 608, 469, 470, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
- 5, 813, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 715, 0, 0, 0, 0, 0, 0, 0, 0,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 0, 468, 609, 470, 471, 4,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5086, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10898,7 +10207,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 572, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -10916,130 +10225,54 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
+ 54, 573, 55, 56, 57, 58, 59, 0, 0, 0,
0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
+ 574, 0, 575, 576, 84, 85, 86, 87, 88, 89,
+ 577, 91, 92, 93, 94, 95, 578, 96, 579, 98,
+ 99, 100, 101, 102, 580, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 0, 112, 113, 114, 581, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 582, 125,
126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
+ 136, 137, 583, 139, 0, 140, 141, 142, 143, 144,
+ 145, 146, 584, 148, 149, 150, 151, 585, 152, 153,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
+ 164, 586, 166, 0, 0, 167, 168, 169, 795, 171,
+ 172, 173, 174, 175, 176, 177, 587, 588, 179, 0,
+ 796, 181, 182, 589, 184, 185, 186, 590, 188, 189,
+ 591, 191, 192, 592, 0, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 593, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 594, 217,
218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
+ 277, 278, 279, 280, 281, 282, 283, 284, 595, 285,
286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
+ 295, 296, 596, 297, 298, 299, 300, 301, 302, 303,
+ 304, 797, 306, 307, 308, 309, 310, 311, 312, 313,
+ 597, 314, 598, 316, 317, 318, 319, 320, 321, 322,
323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 2287, 467, 608, 469, 470,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1941, 1942, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2288, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
+ 343, 599, 345, 346, 347, 600, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 601, 359, 360, 361, 362,
+ 363, 364, 365, 602, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 603, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 0,
+ 0, 392, 393, 0, 394, 395, 396, 397, 604, 399,
+ 400, 605, 402, 403, 404, 405, 406, 407, 408, 409,
410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
+ 430, 431, 432, 433, 606, 435, 436, 437, 438, 439,
+ 440, 441, 442, 607, 444, 445, 446, 447, 448, 449,
450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 2287, 467, 608,
- 469, 470, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1941, 1942, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 460, 461, 462, 608, 464, 465, 466, 467, 0, 468,
+ 609, 470, 471, 4, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 798, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11048,7 +10281,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 572, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11066,131 +10299,55 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
+ 0, 0, 52, 53, 54, 573, 55, 56, 57, 58,
59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
+ 76, 77, 78, 79, 574, 0, 575, 576, 84, 85,
+ 86, 87, 88, 89, 577, 91, 92, 93, 94, 95,
+ 578, 96, 579, 98, 99, 100, 101, 102, 580, 103,
104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
+ 113, 114, 581, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 582, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 583, 139, 0, 140,
+ 141, 142, 143, 144, 145, 146, 584, 148, 149, 150,
+ 151, 585, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 586, 166, 0, 0, 167,
168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
+ 587, 588, 179, 0, 180, 181, 182, 589, 184, 185,
+ 186, 590, 188, 189, 591, 191, 192, 592, 0, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
+ 205, 206, 593, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 594, 217, 218, 219, 220, 221, 222, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
+ 283, 284, 595, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 293, 294, 295, 296, 596, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
+ 310, 311, 312, 313, 597, 314, 598, 316, 317, 318,
319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
+ 339, 340, 341, 342, 343, 599, 345, 346, 347, 600,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 601,
+ 359, 360, 361, 362, 363, 364, 365, 602, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 603,
379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 2394, 998, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1941, 1942, 0, 0, 0,
- 0, 0, 0, 0, 2395, 0, 2396, 0, 2397, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2398, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
+ 389, 390, 391, 0, 0, 392, 393, 0, 394, 395,
+ 396, 397, 604, 399, 400, 605, 402, 403, 404, 405,
406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
+ 426, 427, 428, 429, 430, 431, 432, 433, 606, 435,
+ 436, 437, 438, 439, 440, 441, 442, 607, 444, 445,
446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 2394, 998, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1941, 1942, 0,
- 0, 0, 0, 0, 0, 0, 2395, 0, 2396, 0,
- 2397, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 456, 457, 458, 459, 460, 461, 462, 608, 464, 465,
+ 466, 467, 0, 468, 609, 470, 471, 4, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 798, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
@@ -11199,7 +10356,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 572, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11209,147 +10366,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3163,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 52, 53, 54, 573,
55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
+ 72, 73, 74, 75, 76, 77, 78, 79, 574, 0,
+ 575, 576, 84, 85, 86, 87, 88, 89, 577, 91,
+ 92, 93, 94, 95, 578, 96, 579, 98, 99, 100,
+ 101, 102, 580, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 0, 112, 113, 114, 581, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 582, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
+ 583, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 584, 148, 149, 150, 151, 585, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 586,
166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
+ 174, 175, 176, 177, 587, 588, 179, 0, 180, 181,
+ 182, 589, 184, 185, 186, 590, 188, 189, 591, 191,
+ 192, 592, 0, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 593, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 594, 217, 218, 219,
220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
+ 279, 280, 281, 282, 283, 284, 595, 285, 286, 287,
288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 596, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 597, 314,
+ 598, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 3164, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 2394, 998,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1941,
- 1942, 0, 0, 0, 0, 0, 0, 0, 2395, 0,
- 2396, 0, 2397, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4464, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 599,
+ 345, 346, 347, 600, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 601, 359, 360, 361, 362, 363, 364,
+ 365, 602, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 603, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 0, 0, 392,
+ 393, 0, 394, 395, 396, 397, 604, 399, 400, 605,
402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
+ 432, 433, 606, 435, 436, 437, 438, 439, 440, 441,
+ 442, 607, 444, 445, 446, 447, 448, 449, 450, 451,
452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
- 2394, 998, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1941, 1942, 0, 0, 0, 0, 0, 0, 0,
- 2395, 0, 2396, 0, 2397, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 462, 608, 464, 465, 466, 467, 0, 468, 609, 470,
+ 471, 4, 5, 818, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 720, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5086,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1469, 0, 0,
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 572, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11367,71 +10448,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
+ 52, 53, 54, 573, 55, 56, 57, 58, 59, 0,
0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
+ 78, 79, 574, 0, 575, 576, 84, 85, 86, 87,
+ 88, 89, 577, 91, 92, 93, 94, 95, 578, 96,
+ 579, 98, 99, 100, 101, 102, 580, 103, 104, 105,
106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
+ 581, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 582, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 583, 139, 0, 140, 141, 142,
+ 143, 144, 145, 146, 584, 148, 149, 150, 151, 585,
152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
+ 162, 163, 164, 586, 166, 0, 0, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 587, 588,
+ 179, 0, 180, 181, 182, 589, 184, 185, 186, 590,
+ 188, 189, 591, 191, 192, 592, 0, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 593, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 594, 217, 218, 219, 220, 221, 222, 223, 224, 225,
226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
+ 595, 285, 286, 287, 288, 289, 290, 291, 292, 0,
+ 293, 294, 295, 296, 596, 297, 298, 299, 300, 301,
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
+ 312, 313, 597, 314, 598, 316, 317, 318, 319, 320,
321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 1941, 1942, 0, 0, 0, 0, 0, 0,
+ 341, 342, 343, 599, 345, 346, 347, 600, 349, 350,
+ 351, 352, 353, 354, 355, 356, 357, 601, 359, 360,
+ 361, 362, 363, 364, 365, 602, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 603, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 388, 389, 0,
+ 391, 0, 0, 392, 393, 0, 394, 395, 396, 397,
+ 604, 399, 400, 605, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 606, 435, 436, 437,
+ 438, 439, 440, 441, 442, 607, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 608, 464, 465, 466, 467,
+ 0, 468, 609, 470, 471, 4, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2061, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 571, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11440,73 +10522,148 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
+ 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
+ 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 1213, 468, 609, 470, 471, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
- 0, 2889, 2890, 2891, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 362, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 602, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 2879,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1214, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1215, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1216, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 1217, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 1218, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 1219, 184, 185, 186, 590, 1220,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 1221, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 1222, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 1223, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 1224, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 1225, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 1226, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 1227, 400, 605, 402, 403, 404, 405, 406, 407, 408,
409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
+ 1228, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 607, 463, 464, 465, 466, 0, 467,
- 608, 469, 470, 4, 5, 0, 0, 0, 0, 0,
- 0, 0, 0, 4631, 0, 0, 0, 0, 0, 0,
+ 459, 460, 461, 462, 1229, 464, 465, 466, 467, 1213,
+ 468, 609, 470, 471, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1214, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1215, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1216, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11515,71 +10672,73 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 4, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 3340, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 53, 54, 1217, 55, 56,
+ 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 1218, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 1219,
+ 184, 185, 186, 590, 1220, 189, 591, 191, 192, 592,
+ 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
+ 222, 223, 1221, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 1222, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 1223, 293, 294, 295, 296, 596, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 1224,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 1225, 601, 359, 360, 361, 362, 363, 364, 365, 602,
+ 367, 368, 369, 370, 371, 372, 373, 1226, 375, 376,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 1229,
+ 464, 465, 466, 467, 2140, 468, 609, 470, 471, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 5, 818, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 571,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11589,52 +10748,54 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
- 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 0, 467, 608, 469, 470, 1941, 1942, 0, 0, 0,
- 0, 0, 0, 0, 0, 4480, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 2384,
+ 468, 609, 470, 471, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 5, 818, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 720, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11646,7 +10807,7 @@ static const yytype_int16 yytable[] =
0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11663,71 +10824,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 0, 0,
- 0, 0, 0, 0, 0, 0, 5323, 0, 0, 0,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 2666, 468, 609, 470, 471, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 5, 818, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11737,71 +10899,73 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 4, 5, 0,
- 0, 0, 0, 0, 0, 0, 0, 5609, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 2291,
+ 468, 609, 470, 471, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1945, 1946, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 2292, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -11811,202 +10975,206 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
+ 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
+ 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
- 0, 0, 0, 0, 0, 3322, 0, 0, 5914, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 709,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 2291, 468, 609, 470, 471, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1945, 1946, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 710, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 3957, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3958, 0, 680, 0, 3959, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
- 5, 813, 0, 0, 0, 0, 0, 0, 3323, 0,
- 0, 715, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1453, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2141, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2142,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 2398, 1002, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1945, 1946, 0, 0, 0,
+ 0, 0, 0, 0, 2399, 0, 2400, 0, 2401, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
- 4, 5, 813, 1454, 0, 0, 0, 0, 0, 0,
- 0, 0, 715, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1453, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2402, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
+ 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
+ 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 0, 468, 609, 470, 471, 2398,
+ 1002, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1945, 1946, 0, 0, 0, 0, 0, 0, 0, 2399,
+ 0, 2400, 0, 2401, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12016,7 +11184,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12027,589 +11195,296 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3159, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 3160, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 0, 1454, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1501, 1502, 1503,
- 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513,
- 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523,
- 1524, 1525, 1526, 1527, 1528, 1529, 0, 1530, 1531, 1532,
- 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 0, 1541,
- 13, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550,
- 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
- 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 19, 1569,
- 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 0,
- 1579, 1580, 1581, 1582, 1583, 0, 0, 22, 1584, 1585,
- 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595,
- 0, 1596, 1597, 0, 1598, 1599, 1600, 1601, 1602, 1603,
- 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613,
- 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623,
- 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
- 1634, 1635, 1636, 1637, 1638, 1639, 1640, 29, 1641, 1642,
- 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 31,
- 1652, 1653, 1654, 1655, 0, 1656, 1657, 1658, 1659, 1660,
- 34, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669,
- 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679,
- 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689,
- 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699,
- 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709,
- 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719,
- 1720, 0, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
- 1729, 1730, 1731, 1732, 1733, 1734, 1735, 0, 1736, 1737,
- 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747,
- 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757,
- 52, 53, 54, 0, 55, 56, 57, 58, 59, 0,
- 1758, 1759, 1760, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 1761, 85, 1762, 1763,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 0, 1764, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 1765, 1766, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 1767, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 1768, 586, 587,
- 179, 0, 180, 181, 182, 0, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 1769, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 0, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 1770, 1771, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 0, 1772, 1773, 292, 1774,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 0, 1775, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 1776, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 0, 374, 375, 376, 377, 602, 0, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 1777, 423, 424, 1778, 426, 427, 1779, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 0, 1780, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 1781, 463, 464, 465, 466, 0, 467, 608,
- 469, 1782, 4, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1501, 1502,
- 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512,
- 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522,
- 1523, 1524, 1525, 1526, 1527, 1528, 1529, 0, 1530, 1531,
- 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 0,
- 1541, 13, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549,
- 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559,
- 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 19,
- 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578,
- 0, 1579, 1580, 1581, 1582, 1583, 0, 0, 22, 1584,
- 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
- 1595, 0, 1596, 1597, 0, 1598, 1599, 1600, 1601, 1602,
- 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612,
- 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622,
- 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632,
- 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 29, 1641,
- 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651,
- 31, 1652, 1653, 1654, 1655, 0, 1656, 1657, 1658, 1659,
- 1660, 34, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668,
- 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678,
- 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688,
- 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698,
- 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708,
- 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718,
- 1719, 1720, 0, 1721, 1722, 1723, 1724, 1725, 1726, 1727,
- 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 0, 1736,
- 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746,
- 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756,
- 1757, 52, 53, 54, 0, 55, 56, 57, 58, 59,
- 0, 1758, 1759, 1760, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 574, 575, 1761, 85, 1762,
- 1763, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 0, 1764, 579, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 1765, 1766, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 1767, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 1768, 586,
- 587, 179, 0, 180, 181, 182, 0, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 1769,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 0, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 1770, 1771, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 0, 1772, 1773, 292,
- 1774, 293, 294, 295, 296, 595, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 0, 1775,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 4446, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 0, 374, 375, 376, 377, 602, 0,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 1777, 423, 424, 1778, 426, 427, 1779,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
- 449, 0, 1780, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 1781, 463, 464, 465, 466, 0, 467,
- 608, 469, 1782, 4, 5, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1501,
- 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511,
- 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521,
- 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 0, 1530,
- 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540,
- 0, 1541, 13, 1542, 1543, 1544, 1545, 1546, 1547, 1548,
- 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558,
- 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568,
- 19, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577,
- 1578, 0, 1579, 1580, 1581, 1582, 1583, 0, 0, 22,
- 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593,
- 1594, 1595, 0, 1596, 1597, 0, 1598, 1599, 1600, 1601,
- 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611,
- 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621,
- 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631,
- 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 29,
- 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650,
- 1651, 31, 1652, 1653, 1654, 1655, 0, 1656, 1657, 1658,
- 1659, 1660, 34, 1661, 1662, 1663, 1664, 1665, 1666, 1667,
- 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
- 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687,
- 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697,
- 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707,
- 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717,
- 1718, 1719, 1720, 0, 1721, 1722, 1723, 1724, 1725, 1726,
- 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 0,
- 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745,
- 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755,
- 1756, 1757, 52, 53, 54, 0, 55, 56, 57, 58,
- 59, 0, 1758, 1759, 1760, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 1761, 85,
- 1762, 1763, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 0, 1764, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 1765, 1766, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 1767, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 1768,
- 586, 587, 179, 0, 180, 181, 182, 0, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 1769, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 0, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 1770, 1771, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 0, 1772, 1773,
- 292, 1774, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 0,
- 1775, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 0, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 5640, 374, 375, 376, 377, 602,
- 0, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 1777, 423, 424, 1778, 426, 427,
- 1779, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 0, 1780, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 1781, 463, 464, 465, 466, 0,
- 467, 608, 469, 1782, 4, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510,
- 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520,
- 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 0,
- 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539,
- 1540, 0, 1541, 13, 1542, 1543, 1544, 1545, 1546, 1547,
- 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557,
- 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567,
- 1568, 19, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576,
- 1577, 1578, 0, 1579, 1580, 1581, 1582, 1583, 0, 0,
- 22, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 3941,
- 1593, 1594, 1595, 0, 1596, 1597, 0, 1598, 1599, 1600,
- 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610,
- 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620,
- 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630,
- 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640,
- 29, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649,
- 1650, 1651, 31, 1652, 1653, 1654, 1655, 0, 1656, 1657,
- 1658, 1659, 1660, 34, 1661, 1662, 1663, 1664, 1665, 1666,
- 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676,
- 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686,
- 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696,
- 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706,
- 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716,
- 1717, 1718, 1719, 1720, 0, 1721, 1722, 1723, 1724, 1725,
- 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735,
- 0, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744,
- 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754,
- 1755, 1756, 1757, 52, 53, 54, 0, 55, 56, 57,
- 58, 59, 0, 1758, 1759, 1760, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 1761,
- 85, 1762, 1763, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 0, 1764, 579,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 1765, 1766, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 1767, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 1768, 586, 587, 179, 0, 180, 181, 182, 0, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 1769, 216, 593, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 0, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 1770, 1771, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 0, 1772,
- 1773, 292, 1774, 293, 294, 295, 296, 595, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 0, 1775, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 0, 363, 364, 365, 601, 367,
- 368, 369, 370, 371, 372, 0, 374, 375, 376, 377,
- 602, 0, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 1777, 423, 424, 1778, 426,
- 427, 1779, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 0, 1780, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 0, 463, 464, 465, 466,
- 0, 467, 608, 469, 1782, 4, 5, 813, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 715, 0, 0,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 2398, 1002, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1945, 1946, 0, 0, 0,
+ 0, 0, 0, 0, 2399, 0, 2400, 0, 2401, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 904, 905, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 906, 0, 0, 0,
- 907, 0, 0, 0, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 908, 0, 0,
- 0, 0, 0, 0, 0, 0, 909, 0, 0, 0,
0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 910, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 911, 0, 0, 0, 0, 912, 0, 0, 0,
+ 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 913,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 914, 0,
- 0, 0, 915, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 916, 0, 0, 0, 917, 918, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4467, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 919, 0, 0, 0, 0,
- 0, 0, 920, 921, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 53, 54, 573, 55, 56,
57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 922,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 923,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 924, 161, 162, 163, 164, 925, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 926, 927,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
+ 74, 75, 76, 77, 78, 79, 574, 0, 575, 576,
+ 84, 85, 86, 87, 88, 89, 577, 91, 92, 93,
+ 94, 95, 578, 96, 579, 98, 99, 100, 101, 102,
+ 580, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 0, 112, 113, 114, 581, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 582, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 583, 139,
+ 0, 140, 141, 142, 143, 144, 145, 146, 584, 148,
+ 149, 150, 151, 585, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 586, 166, 0,
+ 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 587, 588, 179, 0, 180, 181, 182, 589,
+ 184, 185, 186, 590, 188, 189, 591, 191, 192, 592,
0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
+ 203, 204, 205, 206, 593, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 594, 217, 218, 219, 220, 221,
222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
+ 281, 282, 283, 284, 595, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 293, 294, 295, 296, 596, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 928, 321, 322, 323, 929, 325, 326,
- 327, 328, 329, 930, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 931, 342, 343, 598, 345, 346,
- 932, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
+ 308, 309, 310, 311, 312, 313, 597, 314, 598, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 599, 345, 346,
+ 347, 600, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 601, 359, 360, 361, 362, 363, 364, 365, 602,
367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 933, 379, 380, 381, 934, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 935, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 813, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 715, 0,
+ 377, 603, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 0, 0, 392, 393, 0,
+ 394, 395, 396, 397, 604, 399, 400, 605, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 606, 435, 436, 437, 438, 439, 440, 441, 442, 607,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 608,
+ 464, 465, 466, 467, 0, 468, 609, 470, 471, 2398,
+ 1002, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1945, 1946, 0, 0, 0, 0, 0, 0, 0, 2399,
+ 0, 2400, 0, 2401, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1187, 905, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 906, 0, 0,
- 0, 907, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 908, 0,
- 0, 0, 0, 0, 0, 0, 0, 909, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 910, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 911, 0, 0, 0, 0, 912, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 913, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 914,
- 0, 0, 0, 915, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 916, 0, 0, 0, 917, 918, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 919, 0, 0, 0,
- 0, 0, 0, 920, 921, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
- 1188, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 922, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 923, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 924, 161, 162, 163, 164, 925, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 926,
- 927, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 318, 319, 928, 321, 322, 323, 1189, 325,
- 326, 327, 328, 329, 930, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 931, 342, 343, 598, 345,
- 346, 932, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 933, 379, 380, 381, 934, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 406, 407, 408, 409, 935, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 4, 5, 0,
- 0, 0, 2692, 2693, 5422, 0, 5423, 0, 5424, 715,
- 5425, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5426, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 1945, 1946, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
- 813, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 715, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 2885, 2886, 2887, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4633, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 907, 1464, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12627,72 +11502,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
- 5, 813, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 715, 0, 0, 0, 0, 0, 0, 0, 0,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3342, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2156, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2157,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12700,53 +11575,128 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
- 4, 5, 0, 0, 1346, 0, 0, 1347, 1348, 0,
- 0, 0, 1349, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 1945, 1946, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4482, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5359, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12757,7 +11707,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12775,220 +11725,220 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 813, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 715, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2141,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5645, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2142, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 4, 5, 813, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 715, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1464, 0,
- 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
+ 0, 0, 0, 0, 0, 3325, 0, 0, 5946, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 714,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 571, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 715, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 3961, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3962, 0, 685, 0, 3963, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
- 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 362, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 602, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 607, 463, 464, 465, 466, 0, 467,
- 608, 469, 470, 4, 5, 813, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 715, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2192, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 818, 0, 0, 0, 0, 0,
+ 0, 3326, 0, 0, 720, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1458, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2146, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12997,71 +11947,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 4, 5, 813, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 818, 1459,
+ 0, 0, 0, 0, 0, 0, 0, 0, 720, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1458,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 907,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 571,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13071,146 +12022,518 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
- 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 0, 1459, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1506, 1507, 1508, 1509,
+ 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519,
+ 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529,
+ 1530, 1531, 1532, 1533, 1534, 0, 1535, 1536, 1537, 1538,
+ 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 13,
+ 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556,
+ 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
+ 1567, 1568, 1569, 1570, 1571, 1572, 1573, 19, 1574, 1575,
+ 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 0, 1584,
+ 1585, 1586, 1587, 1588, 0, 0, 22, 1589, 1590, 1591,
+ 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 0,
+ 1601, 1602, 0, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
+ 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
+ 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629,
+ 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639,
+ 1640, 1641, 1642, 1643, 1644, 1645, 29, 1646, 1647, 1648,
+ 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 31, 1657,
+ 1658, 1659, 1660, 0, 1661, 1662, 1663, 1664, 1665, 34,
+ 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675,
+ 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685,
+ 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695,
+ 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705,
+ 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715,
+ 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725,
+ 0, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734,
+ 1735, 1736, 1737, 1738, 1739, 1740, 0, 1741, 1742, 1743,
+ 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753,
+ 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 52,
+ 53, 54, 0, 55, 56, 57, 58, 59, 0, 1763,
+ 1764, 1765, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 1766, 85, 1767, 1768, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 0, 1769, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 1770, 1771, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 1772, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 1773, 587, 588, 179,
+ 0, 180, 181, 182, 0, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 1774, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 0, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 1775,
+ 1776, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 0, 1777, 1778, 292, 1779, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 0, 1780, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 1781, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 0, 374, 375, 376, 377, 603, 0, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 1782, 423, 424, 1783, 426, 427, 1784,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 0, 1785, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 1786, 464, 465, 466, 467, 0,
+ 468, 609, 470, 1787, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
+ 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
+ 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 0,
+ 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544,
+ 1545, 0, 1546, 13, 1547, 1548, 1549, 1550, 1551, 1552,
+ 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562,
+ 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572,
+ 1573, 19, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581,
+ 1582, 1583, 0, 1584, 1585, 1586, 1587, 1588, 0, 0,
+ 22, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597,
+ 1598, 1599, 1600, 0, 1601, 1602, 0, 1603, 1604, 1605,
+ 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
+ 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625,
+ 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635,
+ 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645,
+ 29, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654,
+ 1655, 1656, 31, 1657, 1658, 1659, 1660, 0, 1661, 1662,
+ 1663, 1664, 1665, 34, 1666, 1667, 1668, 1669, 1670, 1671,
+ 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681,
+ 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691,
+ 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701,
+ 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
+ 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721,
+ 1722, 1723, 1724, 1725, 0, 1726, 1727, 1728, 1729, 1730,
+ 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740,
+ 0, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
+ 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
+ 1760, 1761, 1762, 52, 53, 54, 0, 55, 56, 57,
+ 58, 59, 0, 1763, 1764, 1765, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 1766,
+ 85, 1767, 1768, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 0, 1769, 580,
103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 1770, 1771, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 1772, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
+ 1773, 587, 588, 179, 0, 180, 181, 182, 0, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 1774, 216, 594, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 252, 253, 254, 255, 256, 0, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
+ 272, 273, 274, 1775, 1776, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 0, 1777,
+ 1778, 292, 1779, 293, 294, 295, 296, 596, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
+ 0, 1780, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 4448, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 0, 374, 375, 376, 377,
+ 603, 0, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 1782, 423, 424,
+ 1783, 426, 427, 1784, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 0, 1785, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 1786, 464,
+ 465, 466, 467, 0, 468, 609, 470, 1787, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1506, 1507, 1508, 1509, 1510, 1511,
+ 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521,
+ 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531,
+ 1532, 1533, 1534, 0, 1535, 1536, 1537, 1538, 1539, 1540,
+ 1541, 1542, 1543, 1544, 1545, 0, 1546, 13, 1547, 1548,
+ 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558,
+ 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568,
+ 1569, 1570, 1571, 1572, 1573, 19, 1574, 1575, 1576, 1577,
+ 1578, 1579, 1580, 1581, 1582, 1583, 0, 1584, 1585, 1586,
+ 1587, 1588, 0, 0, 22, 1589, 1590, 1591, 1592, 1593,
+ 1594, 1595, 1596, 1597, 1598, 1599, 1600, 0, 1601, 1602,
+ 0, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611,
+ 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621,
+ 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631,
+ 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641,
+ 1642, 1643, 1644, 1645, 29, 1646, 1647, 1648, 1649, 1650,
+ 1651, 1652, 1653, 1654, 1655, 1656, 31, 1657, 1658, 1659,
+ 1660, 0, 1661, 1662, 1663, 1664, 1665, 34, 1666, 1667,
+ 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
+ 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687,
+ 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697,
+ 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707,
+ 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717,
+ 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 0, 1726,
+ 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736,
+ 1737, 1738, 1739, 1740, 0, 1741, 1742, 1743, 1744, 1745,
+ 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755,
+ 1756, 1757, 1758, 1759, 1760, 1761, 1762, 52, 53, 54,
+ 0, 55, 56, 57, 58, 59, 0, 1763, 1764, 1765,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 1766, 85, 1767, 1768, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 0, 1769, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 1770, 1771,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 1772, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 1773, 587, 588, 179, 0, 180,
+ 181, 182, 0, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 1774, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 0,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 1775, 1776, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 0, 1777, 1778, 292, 1779, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 0, 1780, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 0, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 5676,
+ 374, 375, 376, 377, 603, 0, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 1782, 423, 424, 1783, 426, 427, 1784, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 0, 1785, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 1786, 464, 465, 466, 467, 0, 468, 609,
+ 470, 1787, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1506, 1507,
+ 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517,
+ 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527,
+ 1528, 1529, 1530, 1531, 1532, 1533, 1534, 0, 1535, 1536,
+ 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0,
+ 1546, 13, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554,
+ 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564,
+ 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 19,
+ 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583,
+ 0, 1584, 1585, 1586, 1587, 1588, 0, 0, 22, 1589,
+ 1590, 1591, 1592, 1593, 1594, 1595, 1596, 3945, 1598, 1599,
+ 1600, 0, 1601, 1602, 0, 1603, 1604, 1605, 1606, 1607,
+ 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617,
+ 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627,
+ 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637,
+ 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 29, 1646,
+ 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656,
+ 31, 1657, 1658, 1659, 1660, 0, 1661, 1662, 1663, 1664,
+ 1665, 34, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673,
+ 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683,
+ 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693,
+ 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703,
+ 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713,
+ 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723,
+ 1724, 1725, 0, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
+ 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 0, 1741,
+ 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751,
+ 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761,
+ 1762, 52, 53, 54, 0, 55, 56, 57, 58, 59,
+ 0, 1763, 1764, 1765, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 1766, 85, 1767,
+ 1768, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 0, 1769, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 1770, 1771, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 1772, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 1773, 587,
+ 588, 179, 0, 180, 181, 182, 0, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 1774,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 0, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 1775, 1776, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 0, 1777, 1778, 292,
+ 1779, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 0, 1780,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 0, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 0, 374, 375, 376, 377, 603, 0,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 0, 467, 608, 469, 470, 1941, 1942, 0, 0, 0,
+ 417, 418, 419, 420, 421, 1782, 423, 424, 1783, 426,
+ 427, 1784, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 0, 1785, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 0, 464, 465, 466,
+ 467, 0, 468, 609, 470, 1787, 4, 5, 818, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 720, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 908, 909, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 910, 0, 0,
+ 0, 911, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 912, 0,
+ 0, 0, 0, 0, 0, 0, 0, 913, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 914, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 915, 0, 0, 0, 0, 916, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 917, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 918,
+ 0, 0, 0, 919, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 920, 0, 0, 0, 921, 922, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 923, 0, 0, 0,
+ 0, 0, 0, 924, 925, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 926, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 927, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 928, 161, 162, 163, 164, 929, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 930,
+ 931, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 932, 321, 322, 323, 933, 325,
+ 326, 327, 328, 329, 934, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 935, 342, 343, 599, 345,
+ 346, 936, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 937, 379, 380, 381, 938, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 939, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 818, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1191, 909,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
+ 0, 910, 0, 0, 0, 911, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 912, 0, 0, 0, 0, 0, 0, 0,
+ 0, 913, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 914, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 915, 0, 0, 0,
+ 0, 916, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 917, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 918, 0, 0, 0, 919, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 920, 0, 0, 0, 921,
+ 922, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 923, 0, 0, 0, 0, 0, 0, 924, 925, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 0, 2889, 2890, 2891, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 813, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 715, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 1192, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 926, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 927, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 928, 161, 162,
+ 163, 164, 929, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 930, 931, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 932, 321,
+ 322, 323, 1193, 325, 326, 327, 328, 329, 934, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 935,
+ 342, 343, 599, 345, 346, 936, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 937, 379, 380, 381,
+ 938, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 939, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 0, 0, 0, 2688,
+ 2689, 5459, 0, 5460, 0, 5461, 720, 5462, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3276, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5463, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13219,71 +12542,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 4, 5, 813,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 715,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
+ 818, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 720, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2141, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 0, 0, 0, 911, 1469, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13293,71 +12617,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
- 813, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 715, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 818, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 720, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2160, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3628, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2161, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13367,73 +12692,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
- 5, 813, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 715, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
+ 1350, 0, 0, 1351, 1352, 0, 0, 0, 1353, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3933,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13441,64 +12764,66 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
- 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 818, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2145, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2146, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13509,79 +12834,78 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 679,
- 0, 0, 0, 0, 0, 0, 0, 0, 680, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 813, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 715, 0, 0, 0, 0, 0, 0,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 818, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 720, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1469, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13590,63 +12914,139 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
+ 818, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 720, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2196, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 818, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 720, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 849,
- 850, 0, 0, 0, 0, 0, 0, 0, 0, 851,
+ 0, 0, 0, 0, 0, 0, 0, 911, 0, 0,
0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 852, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13664,71 +13064,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 0, 55, 56, 57, 58, 59,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 0, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 0, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 853, 854, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 183, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 299, 300,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 362, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 602, 379,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 855, 463, 464, 465, 466, 0, 467,
- 608, 469, 470, 4, 5, 0, 0, 0, 0, 0,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 1945, 1946, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1911, 0, 0, 0, 0, 0, 0, 22,
- 1912, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13738,55 +13138,130 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 1913, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 4, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 2885, 2886, 2887, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 818, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 818, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 720, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4627, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2145, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
@@ -13794,7 +13269,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 571,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13812,125 +13287,200 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 0, 467, 608, 469, 470, 4, 5, 0, 0, 0,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
+ 818, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 720, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3629, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 818, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 720, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 680, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3937, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13941,9 +13491,9 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -13954,77 +13504,78 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 684, 0, 0, 0, 0,
+ 0, 0, 0, 0, 685, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 1941, 1942, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1943, 0,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 818, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14033,52 +13584,126 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 854, 855, 0, 0, 0, 0, 0, 0, 0,
+ 0, 856, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 857,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 1941, 1942,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 0, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 0, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 0, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 858, 859,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 183, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 860, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14086,12 +13711,12 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2151, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1915, 0, 0,
+ 0, 0, 0, 0, 22, 1916, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14109,70 +13734,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
+ 1917, 279, 280, 281, 282, 283, 284, 595, 285, 286,
287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 1941,
- 1942, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 720, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4629, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2957,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14182,64 +13808,138 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 2958, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 685, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2970, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1827,
0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14257,72 +13957,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 1945, 1946, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1947, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3699, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14331,51 +14030,127 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 1941, 1942, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 1945, 1946,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2155, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 1945, 1946, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14383,11 +14158,11 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2957, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2953, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 571, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14405,71 +14180,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 299, 300,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 362, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 602, 379,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 607, 463, 464, 465, 466, 0, 467,
- 608, 469, 470, 4, 5, 0, 0, 0, 0, 0,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 2954, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2966, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 4679,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14478,64 +14254,138 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3700, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 601, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 4, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 1945, 1946, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2953, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 571,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14553,72 +14403,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 572, 55, 56, 57,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 0, 467, 608, 469, 470, 4, 5, 0, 0, 0,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5048, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 0, 0, 0, 4682, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14627,64 +14477,139 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 572, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 588,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 607, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 720, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5062, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 5519, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14701,71 +14626,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 4, 5, 0,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5529, 0, 0,
+ 5554, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14774,52 +14700,126 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5564, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14832,7 +14832,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 571, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14840,7 +14840,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
- 0, 0, 0, 0, 5874, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5906, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14850,71 +14850,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 572, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 588, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 607,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
- 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 571, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14923,51 +14923,126 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 572, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 588, 184, 185, 186, 589, 188, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 0, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 607, 463, 464, 465, 466, 0, 467, 608, 469, 470,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 573, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 589, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 727,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 608, 464, 465, 466, 467, 0, 468, 609, 470, 471,
4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14980,7 +15055,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14998,72 +15073,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 53, 54, 572, 55, 56, 57, 58, 59, 0, 0,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 574, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 808, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 584, 152,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 588, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 722, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 595,
285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 607, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 1945, 1946, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 571, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15072,72 +15146,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 572, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 574, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 577, 96,
- 578, 98, 99, 100, 101, 102, 579, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 803, 114,
- 580, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 581, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 583, 148, 149, 150, 151, 584,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 587,
- 179, 0, 180, 181, 182, 588, 184, 185, 186, 589,
- 188, 189, 590, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 593, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 594, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 595, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 596, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 598, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 600, 359, 360,
- 361, 362, 363, 364, 365, 601, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 602, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 605, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 607, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 1941, 1942, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 571, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 572, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15146,72 +15220,73 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 572, 55, 56, 57, 58, 59,
- 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 573, 0, 574, 575, 84, 85, 86,
- 87, 88, 89, 576, 91, 92, 93, 94, 95, 577,
- 96, 578, 98, 99, 100, 101, 102, 579, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
- 114, 580, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 581, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 582, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 583, 148, 149, 150, 151,
- 584, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 585, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 586,
- 587, 179, 0, 180, 181, 182, 588, 184, 185, 186,
- 589, 188, 189, 590, 191, 192, 591, 0, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 592, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 593, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 594, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 595, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 596, 314, 597, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 598, 345, 346, 347, 599, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 600, 359,
- 360, 361, 362, 363, 364, 365, 601, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 602, 379,
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 603,
- 399, 400, 604, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 605, 435, 436, 437, 438,
- 439, 440, 441, 442, 606, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 607, 463, 464, 465, 466, 0, 467,
- 608, 469, 470, 4, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 573, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 589, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 2311, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 608, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 572, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15220,71 +15295,74 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 53, 54, 572, 55, 56, 57, 58,
- 59, 0, 0, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 573, 0, 574, 575, 84, 85,
- 86, 87, 88, 89, 576, 91, 92, 93, 94, 95,
- 577, 96, 578, 98, 99, 100, 101, 102, 579, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 112,
- 113, 114, 580, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 581, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 582, 139, 0, 140,
- 141, 142, 143, 144, 145, 146, 583, 148, 149, 150,
- 151, 584, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 585, 166, 0, 0, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 586, 587, 179, 0, 180, 181, 182, 588, 184, 185,
- 186, 589, 188, 189, 590, 191, 192, 591, 0, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 592, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 593, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 0, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 594, 285, 286, 287, 288, 289, 290, 291,
- 292, 0, 293, 294, 295, 296, 595, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 596, 314, 597, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 598, 345, 346, 347, 599,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 600,
- 359, 360, 361, 362, 363, 364, 365, 2307, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 602,
- 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 0, 394, 395, 396, 397,
- 603, 399, 400, 604, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 605, 435, 436, 437,
- 438, 439, 440, 441, 442, 606, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 607, 463, 464, 465, 466, 0,
- 467, 608, 469, 470, 4, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2971, 53, 54, 573, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 589, 184, 185, 186,
+ 590, 188, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 608, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 720, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3608, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3609, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 571,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15292,73 +15370,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 3610, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 575,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 585, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 3611, 184, 185, 186, 590, 0, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 0, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 3612, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 0, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 3613, 464, 465, 466, 467, 0, 468, 609, 470, 471,
+ 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2975, 53, 54, 572, 55, 56, 57,
- 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 573, 0, 574, 575, 84,
- 85, 86, 87, 88, 89, 576, 91, 92, 93, 94,
- 95, 577, 96, 578, 98, 99, 100, 101, 102, 579,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
- 112, 113, 114, 580, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 581, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 582, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 583, 148, 149,
- 150, 151, 584, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 585, 166, 0, 0,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 586, 587, 179, 0, 180, 181, 182, 588, 184,
- 185, 186, 589, 188, 189, 590, 191, 192, 591, 0,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 592, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 593, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 594, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 595, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 596, 314, 597, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 598, 345, 346, 347,
- 599, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 600, 359, 360, 361, 362, 363, 364, 365, 601, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 602, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 603, 399, 400, 604, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 605, 435, 436,
- 437, 438, 439, 440, 441, 442, 606, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 607, 463, 464, 465, 466,
- 0, 467, 608, 469, 470, 4, 5, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 715, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3607, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 572, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 3608, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15367,72 +15444,72 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 573, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 574, 0, 575, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 578, 96, 579,
+ 98, 99, 100, 101, 102, 580, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 581,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 582,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 584, 148, 149, 150, 151, 585, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 3727, 177, 587, 588, 179,
+ 0, 180, 181, 182, 589, 184, 185, 186, 590, 188,
+ 189, 591, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 594,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 3728, 279, 280, 281, 282, 283, 284, 595,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 596, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 597, 314, 598, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 599, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 601, 359, 360, 361,
+ 362, 363, 364, 365, 602, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 603, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 606, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 608, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 3609, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 84, 85, 86, 87, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 101, 102,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 586, 587, 179, 0, 180, 181, 182, 3610,
- 184, 185, 186, 589, 0, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 0, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 289,
- 290, 291, 292, 3611, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 362, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 373, 0, 375, 376,
- 377, 602, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 3612, 463, 464, 465,
- 466, 0, 467, 608, 469, 470, 4, 5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 572,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 571, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+ 5858, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15442,71 +15519,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 53, 54, 572, 55,
- 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 573, 0, 574,
- 575, 84, 85, 86, 87, 88, 89, 576, 91, 92,
- 93, 94, 95, 577, 96, 578, 98, 99, 100, 101,
- 102, 579, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 0, 112, 113, 114, 580, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 581, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 582,
- 139, 0, 140, 141, 142, 143, 144, 145, 146, 583,
- 148, 149, 150, 151, 584, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 585, 166,
- 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 3726, 177, 586, 587, 179, 0, 180, 181, 182,
- 588, 184, 185, 186, 589, 188, 189, 590, 191, 192,
- 591, 0, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 592, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 593, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 3727, 279,
- 280, 281, 282, 283, 284, 594, 285, 286, 287, 288,
- 289, 290, 291, 292, 0, 293, 294, 295, 296, 595,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 596, 314, 597,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 598, 345,
- 346, 347, 599, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 600, 359, 360, 361, 362, 363, 364, 365,
- 601, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 602, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 0, 394,
- 395, 396, 397, 603, 399, 400, 604, 402, 403, 404,
+ 0, 0, 0, 52, 53, 54, 573, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 84,
+ 85, 86, 87, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 101, 102, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 587, 588, 179, 0, 180, 181, 182, 589, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 594, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 362, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 603, 379, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 605,
- 435, 436, 437, 438, 439, 440, 441, 442, 606, 444,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 607, 463, 464,
- 465, 466, 0, 467, 608, 469, 470, 4, 5, 0,
+ 455, 456, 457, 458, 459, 460, 461, 462, 608, 464,
+ 465, 466, 467, 0, 468, 609, 470, 471, 4, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 571, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3378, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5826, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15516,71 +15593,73 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 53, 54, 572,
- 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 573, 0,
- 574, 575, 84, 85, 86, 87, 88, 89, 576, 91,
- 92, 93, 94, 95, 577, 96, 578, 98, 99, 100,
- 101, 102, 579, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 0, 112, 113, 114, 580, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 581, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 582, 139, 0, 140, 141, 142, 143, 144, 145, 146,
- 583, 148, 149, 150, 151, 584, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 585,
- 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 586, 587, 179, 0, 180, 181,
- 182, 588, 184, 185, 186, 589, 188, 189, 590, 191,
- 192, 591, 0, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 592, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 593, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 594, 285, 286, 287,
- 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
- 595, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 596, 314,
- 597, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 598,
- 345, 346, 347, 599, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 600, 359, 360, 361, 362, 363, 364,
- 365, 601, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 602, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 0,
- 394, 395, 396, 397, 603, 399, 400, 604, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 605, 435, 436, 437, 438, 439, 440, 441, 442, 606,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, 459, 460, 461, 607, 463,
- 464, 465, 466, 0, 467, 608, 469, 470, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
+ 3379, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 574,
+ 0, 575, 576, 84, 85, 86, 87, 88, 89, 577,
+ 91, 92, 93, 94, 95, 578, 96, 579, 98, 99,
+ 100, 101, 102, 580, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 0, 112, 113, 114, 581, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 582, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 583, 139, 0, 140, 141, 142, 143, 144, 145,
+ 146, 584, 148, 149, 150, 151, 585, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 586, 166, 0, 0, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 587, 588, 179, 0, 180,
+ 181, 182, 3380, 184, 185, 186, 590, 188, 189, 591,
+ 191, 192, 592, 0, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 593, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 594, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 595, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
+ 296, 596, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 597,
+ 314, 598, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 599, 345, 346, 347, 600, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 601, 359, 360, 361, 362, 363,
+ 364, 365, 602, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 603, 379, 380, 381, 382, 383,
+ 384, 385, 386, 387, 388, 389, 390, 391, 0, 0,
+ 392, 393, 0, 394, 395, 396, 397, 604, 399, 400,
+ 605, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 606, 435, 436, 437, 438, 439, 440,
+ 441, 442, 607, 444, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
+ 461, 462, 0, 464, 465, 466, 467, 0, 468, 609,
+ 470, 471, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 720, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3609, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 3377, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15589,73 +15668,71 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 53, 54, 3610, 55, 56, 57, 58, 59,
+ 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 574, 0, 575, 576, 84, 85, 86,
+ 87, 88, 89, 577, 91, 92, 93, 94, 95, 578,
+ 96, 579, 98, 99, 100, 101, 102, 580, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 0, 112, 113,
+ 114, 581, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 582, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 583, 139, 0, 140, 141,
+ 142, 143, 144, 145, 146, 584, 148, 149, 150, 151,
+ 585, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 586, 166, 0, 0, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 587,
+ 588, 179, 0, 180, 181, 182, 3611, 184, 185, 186,
+ 590, 0, 189, 591, 191, 192, 592, 0, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 593, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 594, 217, 218, 219, 220, 221, 222, 223, 0,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 595, 285, 286, 287, 288, 289, 290, 291, 292,
+ 3612, 293, 294, 295, 296, 596, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 597, 314, 598, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 599, 345, 346, 347, 600, 349,
+ 350, 351, 352, 353, 354, 355, 356, 357, 601, 359,
+ 360, 361, 362, 363, 364, 365, 602, 367, 368, 369,
+ 370, 371, 372, 373, 0, 375, 376, 377, 603, 379,
+ 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 0, 0, 392, 393, 0, 394, 395, 396,
+ 397, 604, 399, 400, 605, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 606, 435, 436,
+ 437, 438, 439, 440, 441, 442, 607, 444, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 3613, 464, 465, 466,
+ 467, 0, 468, 609, 470, 471, 4, 5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 3378, 55, 56, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 573,
- 0, 574, 575, 84, 85, 86, 87, 88, 89, 576,
- 91, 92, 93, 94, 95, 577, 96, 578, 98, 99,
- 100, 101, 102, 579, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 0, 112, 113, 114, 580, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 581, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 582, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 583, 148, 149, 150, 151, 584, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 585, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 586, 587, 179, 0, 180,
- 181, 182, 3379, 184, 185, 186, 589, 188, 189, 590,
- 191, 192, 591, 0, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 592, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 593, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 594, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 595, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 596,
- 314, 597, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 598, 345, 346, 347, 599, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 600, 359, 360, 361, 362, 363,
- 364, 365, 601, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 602, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 603, 399, 400, 604, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 605, 435, 436, 437, 438, 439, 440, 441, 442,
- 606, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 0,
- 463, 464, 465, 466, 0, 467, 608, 469, 470, 4,
- 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 715, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 856, 0, 13, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
- 0, 0, 0, 0, 3608, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 857, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15664,64 +15741,65 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 53,
- 54, 3609, 55, 56, 57, 58, 59, 0, 0, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 573, 0, 574, 575, 84, 85, 86, 87, 88, 89,
- 576, 91, 92, 93, 94, 95, 577, 96, 578, 98,
- 99, 100, 101, 102, 579, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 0, 112, 113, 114, 580, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 581, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 582, 139, 0, 140, 141, 142, 143, 144,
- 145, 146, 583, 148, 149, 150, 151, 584, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 585, 166, 0, 0, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 586, 587, 179, 0,
- 180, 181, 182, 3610, 184, 185, 186, 589, 0, 189,
- 590, 191, 192, 591, 0, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 592, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 593, 217,
- 218, 219, 220, 221, 222, 223, 0, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 0, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 594, 285,
- 286, 287, 288, 289, 290, 291, 292, 3611, 293, 294,
- 295, 296, 595, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 596, 314, 597, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 598, 345, 346, 347, 599, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 600, 359, 360, 361, 362,
- 363, 364, 365, 601, 367, 368, 369, 370, 371, 372,
- 373, 0, 375, 376, 377, 602, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 0, 394, 395, 396, 397, 603, 399, 400, 604,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 605, 435, 436, 437, 438, 439, 440, 441,
- 442, 606, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 3612, 463, 464, 465, 466, 0, 467, 608, 469, 470,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 53, 54, 0, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 574, 0, 0,
+ 576, 84, 85, 86, 87, 88, 89, 577, 91, 92,
+ 93, 94, 95, 578, 96, 579, 98, 99, 100, 101,
+ 102, 580, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 0, 112, 113, 114, 581, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 582, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 583,
+ 139, 0, 140, 141, 142, 143, 144, 145, 146, 584,
+ 148, 149, 150, 151, 0, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 586, 166,
+ 0, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 587, 588, 179, 0, 180, 181, 182,
+ 183, 184, 185, 186, 590, 188, 189, 591, 191, 192,
+ 592, 0, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 593, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 594, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 0,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 595, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 293, 294, 295, 296, 596,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 597, 314, 598,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 599, 345,
+ 346, 347, 600, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 601, 359, 360, 361, 362, 363, 364, 365,
+ 602, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 603, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 0, 0, 392, 393,
+ 0, 394, 395, 396, 397, 604, 399, 400, 605, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 606, 435, 436, 437, 438, 439, 440, 441, 442,
+ 607, 444, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
+ 860, 464, 465, 466, 467, 0, 468, 609, 470, 471,
4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 851, 0, 13,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 852, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15742,271 +15820,210 @@ static const yytype_int16 yytable[] =
53, 54, 0, 55, 56, 57, 58, 59, 0, 0,
0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 573, 0, 0, 575, 84, 85, 86, 87, 88,
- 89, 576, 91, 92, 93, 94, 95, 577, 96, 578,
- 98, 99, 100, 101, 102, 579, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 0, 112, 113, 114, 580,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 581,
+ 79, 574, 0, 0, 576, 84, 85, 86, 87, 88,
+ 89, 577, 91, 92, 93, 94, 95, 0, 96, 579,
+ 98, 99, 100, 101, 102, 0, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 0, 112, 113, 114, 0,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 0,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 582, 139, 0, 140, 141, 142, 143,
- 144, 145, 146, 583, 148, 149, 150, 151, 0, 152,
+ 135, 136, 137, 583, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 0, 148, 149, 150, 151, 0, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 585, 166, 0, 0, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 586, 587, 179,
- 0, 180, 181, 182, 183, 184, 185, 186, 589, 188,
- 189, 590, 191, 192, 591, 0, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 592,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 593,
+ 163, 164, 586, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 587, 0, 179,
+ 0, 180, 181, 182, 183, 184, 185, 186, 590, 188,
+ 189, 0, 191, 192, 592, 0, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 593,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 0,
217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 594,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 0,
285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
- 294, 295, 296, 595, 297, 298, 299, 300, 301, 302,
+ 294, 295, 296, 0, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 596, 314, 597, 316, 317, 318, 319, 320, 321,
+ 313, 0, 314, 598, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 598, 345, 346, 347, 599, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 600, 359, 360, 361,
- 362, 363, 364, 365, 601, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 602, 379, 380, 381,
+ 342, 343, 0, 345, 346, 347, 600, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 0, 359, 360, 361,
+ 362, 363, 364, 365, 0, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 0, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 0, 394, 395, 396, 397, 603, 399, 400,
- 604, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 605, 435, 436, 437, 438, 439, 440,
- 441, 442, 606, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 855, 463, 464, 465, 466, 0, 467, 608, 469,
- 470, 4, 5, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 604,
+ 399, 400, 605, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 0, 435, 436, 437, 438,
+ 439, 440, 441, 442, 607, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 463, 464, 465, 466, 467, 0,
+ 468, 609, 470, 471, 4, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 52, 53, 54, 0, 55, 56, 57, 58, 59, 0,
- 0, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 573, 0, 0, 575, 84, 85, 86, 87,
- 88, 89, 576, 91, 92, 93, 94, 95, 0, 96,
- 578, 98, 99, 100, 101, 102, 0, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 0, 112, 113, 114,
- 0, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 0, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 582, 139, 0, 140, 141, 142,
- 143, 144, 145, 146, 0, 148, 149, 150, 151, 0,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 585, 166, 0, 0, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 586, 0,
- 179, 0, 180, 181, 182, 183, 184, 185, 186, 589,
- 188, 189, 0, 191, 192, 591, 0, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 592, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 0, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 0, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 0, 285, 286, 287, 288, 289, 290, 291, 292, 0,
- 293, 294, 295, 296, 0, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 0, 314, 597, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 0, 345, 346, 347, 599, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 0, 359, 360,
- 361, 362, 363, 364, 365, 0, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 0, 379, 380,
- 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 0, 394, 395, 396, 397, 603, 399,
- 400, 604, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 435, 436, 437, 438, 439,
- 440, 441, 442, 606, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 462, 463, 464, 465, 466, 0, 467, 608,
- 469, 470, 4, 5, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 1902,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 0, 0, 0, 0, 0, 1898, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1913, 0, 0, 0,
+ 0, 0, 0, 52, 53, 54, 1903, 55, 0, 57,
+ 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 0, 72, 73, 74,
+ 75, 76, 77, 78, 79, 0, 0, 0, 0, 84,
+ 85, 86, 87, 88, 0, 0, 91, 92, 93, 94,
+ 95, 0, 0, 0, 98, 99, 100, 101, 102, 0,
+ 103, 104, 105, 106, 0, 0, 0, 0, 0, 0,
+ 112, 0, 114, 0, 116, 117, 1904, 119, 120, 121,
+ 122, 123, 124, 0, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 0, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 0, 148, 149,
+ 150, 151, 0, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 0, 166, 0, 0,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 0, 0, 0, 0, 181, 182, 1905, 184,
+ 185, 186, 0, 188, 189, 0, 191, 192, 0, 0,
+ 194, 0, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 0, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 0, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 0, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 293, 294, 295, 296, 0, 0, 0,
+ 299, 0, 301, 302, 0, 304, 305, 306, 307, 0,
+ 309, 310, 311, 312, 0, 0, 0, 0, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 0, 343, 0, 345, 346, 347,
+ 0, 349, 350, 0, 352, 353, 354, 355, 356, 357,
+ 0, 359, 360, 361, 362, 363, 364, 365, 0, 367,
+ 368, 369, 0, 371, 372, 373, 374, 0, 376, 377,
+ 0, 0, 380, 381, 0, 0, 384, 385, 386, 0,
+ 388, 0, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 0, 399, 400, 0, 402, 0, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 0,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 0,
+ 435, 436, 0, 438, 439, 440, 441, 4, 5, 444,
+ 445, 0, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 0, 0,
+ 465, 466, 0, 0, 468, 0, 470, 471, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1902, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1909, 0, 0, 0, 0, 0,
- 0, 52, 53, 54, 1899, 55, 0, 57, 58, 59,
- 0, 0, 0, 0, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 0, 72, 73, 74, 75, 76,
- 77, 78, 79, 0, 0, 0, 0, 84, 85, 86,
- 87, 88, 0, 0, 91, 92, 93, 94, 95, 0,
- 0, 0, 98, 99, 100, 101, 102, 0, 103, 104,
- 105, 106, 0, 0, 0, 0, 0, 0, 112, 0,
- 114, 0, 116, 117, 1900, 119, 120, 121, 122, 123,
- 124, 0, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 0, 139, 0, 140, 141,
- 142, 143, 144, 145, 146, 0, 148, 149, 150, 151,
- 0, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 0, 0, 0, 166, 0, 0, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
- 0, 0, 0, 0, 181, 182, 1901, 184, 185, 186,
- 0, 188, 189, 0, 191, 192, 0, 0, 194, 0,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 0, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 0, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 0, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 0, 285, 286, 287, 288, 289, 290, 291, 292,
- 0, 293, 294, 295, 296, 0, 0, 0, 299, 0,
- 301, 302, 0, 304, 305, 306, 307, 0, 309, 310,
- 311, 312, 0, 0, 0, 0, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 0, 343, 0, 345, 346, 347, 0, 349,
- 350, 0, 352, 353, 354, 355, 356, 357, 0, 359,
- 360, 361, 362, 363, 364, 365, 0, 367, 368, 369,
- 0, 371, 372, 373, 374, 0, 376, 377, 4, 5,
- 380, 381, 0, 0, 384, 385, 386, 0, 388, 0,
- 390, 391, 392, 393, 0, 394, 395, 396, 397, 0,
- 399, 400, 0, 402, 0, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 0, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 0, 435, 436, 0, 438,
- 439, 440, 441, 0, 0, 444, 445, 13, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 0, 0, 464, 465, 0, 0, 467,
- 0, 469, 470, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 1898, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1923,
+ 0, 0, 0, 0, 0, 0, 52, 53, 54, 1903,
+ 55, 0, 57, 58, 59, 0, 0, 0, 0, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 0,
+ 72, 73, 74, 75, 76, 77, 78, 79, 0, 0,
+ 0, 0, 84, 85, 86, 87, 88, 0, 0, 91,
+ 92, 93, 94, 95, 0, 0, 0, 98, 99, 100,
+ 101, 102, 0, 103, 104, 105, 106, 0, 0, 0,
+ 0, 0, 0, 112, 0, 114, 0, 116, 117, 1904,
+ 119, 120, 121, 122, 123, 124, 0, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 0, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 0, 148, 149, 150, 151, 0, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
+ 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 0, 0, 0, 0, 0, 181,
+ 182, 1905, 184, 185, 186, 0, 188, 189, 0, 191,
+ 192, 0, 0, 194, 0, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 0, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 0, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 0, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 0, 285, 286, 287,
+ 288, 289, 290, 291, 292, 0, 293, 294, 295, 296,
+ 0, 0, 0, 299, 0, 301, 302, 0, 304, 305,
+ 306, 307, 0, 309, 310, 311, 312, 0, 0, 0,
+ 0, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 0, 343, 0,
+ 345, 346, 347, 0, 349, 350, 0, 352, 353, 354,
+ 355, 356, 357, 0, 359, 360, 361, 362, 363, 364,
+ 365, 0, 367, 368, 369, 0, 371, 372, 373, 374,
+ 0, 376, 377, 0, 0, 380, 381, 0, 0, 384,
+ 385, 386, 0, 388, 0, 390, 391, 0, 0, 392,
+ 393, 0, 394, 395, 396, 397, 0, 399, 400, 0,
+ 402, 0, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 0, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 0, 435, 436, 0, 438, 439, 440, 441,
+ 4, 5, 444, 445, 0, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 0, 0, 465, 466, 0, 0, 468, 0, 470,
+ 471, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1919, 0, 0, 0, 0, 0, 0, 52, 53, 54,
- 1899, 55, 0, 57, 58, 59, 0, 0, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 0, 72, 73, 74, 75, 76, 77, 78, 79, 0,
- 0, 0, 0, 84, 85, 86, 87, 88, 0, 0,
- 91, 92, 93, 94, 95, 0, 0, 0, 98, 99,
- 100, 101, 102, 0, 103, 104, 105, 106, 0, 0,
- 0, 0, 0, 0, 112, 0, 114, 0, 116, 117,
- 1900, 119, 120, 121, 122, 123, 124, 0, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 0, 139, 0, 140, 141, 142, 143, 144, 145,
- 146, 0, 148, 149, 150, 151, 0, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
- 0, 166, 0, 0, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 0, 0, 0, 0, 0,
- 181, 182, 1901, 184, 185, 186, 0, 188, 189, 0,
- 191, 192, 0, 0, 194, 0, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 0, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 0, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 0, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 0, 285, 286,
- 287, 288, 289, 290, 291, 292, 0, 293, 294, 295,
- 296, 0, 0, 0, 299, 0, 301, 302, 0, 304,
- 305, 306, 307, 0, 309, 310, 311, 312, 0, 0,
- 0, 0, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 0, 343,
- 0, 345, 346, 347, 0, 349, 350, 0, 352, 353,
- 354, 355, 356, 357, 0, 359, 360, 361, 362, 363,
- 364, 365, 0, 367, 368, 369, 0, 371, 372, 373,
- 374, 0, 376, 377, 4, 5, 380, 381, 0, 0,
- 384, 385, 386, 0, 388, 0, 390, 391, 392, 393,
- 0, 394, 395, 396, 397, 0, 399, 400, 0, 402,
- 0, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 0, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 0, 435, 436, 0, 438, 439, 440, 441, 0,
- 0, 444, 445, 13, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 0,
- 0, 464, 465, 0, 0, 467, 0, 469, 470, 0,
- 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 22, 0, 0, 0, 0, 0, 0, 0, 0, 1898,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1902, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -16016,145 +16033,146 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 53, 54, 1899, 55, 0, 57,
- 58, 59, 0, 0, 0, 0, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 0, 72, 73, 74,
- 75, 76, 77, 78, 79, 0, 0, 0, 0, 84,
- 85, 86, 87, 88, 0, 0, 91, 92, 93, 94,
- 95, 0, 0, 0, 98, 99, 100, 101, 102, 0,
- 103, 104, 105, 106, 0, 0, 0, 0, 0, 0,
- 112, 0, 114, 0, 116, 117, 1900, 119, 120, 121,
- 122, 123, 124, 0, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 0, 139, 0,
- 140, 141, 142, 143, 144, 145, 146, 0, 148, 149,
- 150, 151, 0, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 0, 0, 0, 166, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 53, 54, 1903, 55, 0, 57, 58, 59, 0, 0,
+ 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 0, 72, 73, 74, 75, 76, 77, 78,
+ 79, 0, 0, 0, 0, 84, 85, 86, 87, 88,
+ 0, 0, 91, 92, 93, 94, 95, 0, 0, 0,
+ 98, 99, 100, 101, 102, 0, 103, 104, 105, 106,
+ 0, 0, 0, 0, 0, 0, 112, 0, 114, 0,
+ 116, 117, 1904, 119, 120, 121, 122, 123, 124, 0,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 0, 139, 0, 140, 141, 142, 143,
+ 144, 145, 146, 0, 148, 149, 150, 151, 0, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 0, 166, 0, 0, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 0, 0,
+ 0, 0, 181, 182, 1905, 184, 185, 186, 0, 188,
+ 189, 0, 191, 192, 0, 0, 194, 0, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 0,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 0,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 0, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 0,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 293,
+ 294, 295, 296, 0, 0, 0, 299, 0, 301, 302,
+ 0, 304, 305, 306, 307, 0, 309, 310, 311, 312,
+ 0, 0, 0, 0, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 0, 343, 0, 345, 346, 347, 0, 349, 350, 0,
+ 352, 353, 354, 355, 356, 357, 0, 359, 360, 361,
+ 362, 363, 364, 365, 0, 367, 368, 369, 0, 371,
+ 372, 373, 374, 0, 376, 377, 0, 0, 380, 381,
+ 0, 0, 384, 385, 386, 0, 388, 0, 390, 391,
+ 0, 0, 392, 393, 0, 394, 395, 396, 397, 0,
+ 399, 400, 0, 402, 0, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 0, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 0, 435, 436, 0, 438,
+ 439, 440, 441, 0, 0, 444, 445, 0, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 460, 461, 462, 4, 5, 465, 466, 0, 0,
+ 468, 0, 470, 471, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
+ 1516, 0, 4033, 1519, 1520, 1521, 0, 0, 1524, 1525,
+ 1526, 1527, 1528, 1529, 1530, 1531, 4034, 1533, 1534, 0,
+ 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544,
+ 1545, 0, 1546, 13, 1547, 1548, 1549, 1550, 1551, 1552,
+ 1553, 4035, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562,
+ 1563, 1564, 1565, 1566, 4036, 1568, 1569, 1570, 1571, 1572,
+ 1573, 19, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581,
+ 4037, 1583, 0, 1584, 1585, 1586, 1587, 1588, 0, 0,
+ 22, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 3945,
+ 1598, 1599, 1600, 0, 1601, 1602, 0, 1603, 4038, 1605,
+ 4039, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
+ 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 0,
+ 0, 0, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 0,
+ 0, 0, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645,
+ 29, 1646, 1647, 1648, 1649, 1650, 1651, 0, 1653, 1654,
+ 1655, 1656, 31, 1657, 1658, 1659, 1660, 0, 1661, 1662,
+ 1663, 1664, 1665, 34, 1666, 1667, 1668, 1669, 1670, 1671,
+ 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 0,
+ 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691,
+ 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701,
+ 1702, 1703, 1704, 0, 1706, 1707, 0, 1709, 1710, 1711,
+ 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721,
+ 1722, 1723, 1724, 1725, 0, 1726, 1727, 1728, 1729, 0,
+ 0, 0, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740,
+ 4040, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
+ 1750, 0, 4041, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
+ 1760, 1761, 1762, 52, 53, 54, 0, 55, 56, 57,
+ 58, 59, 0, 1763, 1764, 1765, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 574, 0, 575, 576, 0,
+ 85, 0, 0, 88, 89, 577, 91, 92, 93, 94,
+ 95, 578, 96, 579, 98, 99, 100, 0, 0, 580,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 0,
+ 112, 113, 114, 581, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 582, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 4042, 4043, 137, 583, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 584, 148, 149,
+ 150, 151, 585, 152, 153, 154, 0, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 586, 166, 0, 0,
167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 0, 0, 0, 0, 0, 181, 182, 1901, 184,
- 185, 186, 0, 188, 189, 0, 191, 192, 0, 0,
- 194, 0, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 0, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 0, 217, 218, 219, 220, 221, 222,
+ 0, 587, 588, 179, 0, 180, 181, 182, 0, 184,
+ 185, 186, 590, 188, 189, 591, 191, 192, 592, 0,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 593, 208, 209, 210, 211, 212, 213,
+ 214, 0, 216, 594, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 0, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 252, 253, 254, 255, 256, 0, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 0, 285, 286, 287, 288, 289, 290,
- 291, 292, 0, 293, 294, 295, 296, 0, 0, 0,
- 299, 0, 301, 302, 0, 304, 305, 306, 307, 0,
- 309, 310, 311, 312, 0, 0, 0, 0, 316, 317,
+ 272, 273, 274, 0, 4044, 277, 278, 279, 280, 281,
+ 282, 283, 284, 595, 285, 286, 287, 288, 0, 0,
+ 0, 292, 1779, 293, 294, 295, 296, 596, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 597, 314, 598, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 0, 343, 0, 345, 346, 347,
- 0, 349, 350, 0, 352, 353, 354, 355, 356, 357,
- 0, 359, 360, 361, 362, 363, 364, 365, 0, 367,
- 368, 369, 0, 371, 372, 373, 374, 0, 376, 377,
- 0, 0, 380, 381, 0, 0, 384, 385, 386, 0,
- 388, 0, 390, 391, 392, 393, 0, 394, 395, 396,
- 397, 0, 399, 400, 0, 402, 0, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 0, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 0, 435, 436,
- 0, 438, 439, 440, 441, 0, 0, 444, 445, 0,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 4, 5, 464, 465, 0,
- 0, 467, 0, 469, 470, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509,
- 1510, 1511, 0, 4030, 1514, 1515, 1516, 0, 0, 1519,
- 1520, 1521, 1522, 1523, 1524, 1525, 1526, 4031, 1528, 1529,
- 0, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538,
- 1539, 1540, 0, 1541, 13, 1542, 1543, 1544, 1545, 1546,
- 1547, 1548, 4032, 1550, 1551, 1552, 1553, 1554, 1555, 1556,
- 1557, 1558, 1559, 1560, 1561, 4033, 1563, 1564, 1565, 1566,
- 1567, 1568, 19, 1569, 1570, 1571, 1572, 1573, 1574, 1575,
- 1576, 4034, 1578, 0, 1579, 1580, 1581, 1582, 1583, 0,
- 0, 22, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
- 3941, 1593, 1594, 1595, 0, 1596, 1597, 0, 1598, 4035,
- 1600, 4036, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
- 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
- 0, 0, 0, 1623, 1624, 1625, 1626, 1627, 1628, 1629,
- 0, 0, 0, 1633, 1634, 1635, 1636, 1637, 1638, 1639,
- 1640, 29, 1641, 1642, 1643, 1644, 1645, 1646, 0, 1648,
- 1649, 1650, 1651, 31, 1652, 1653, 1654, 1655, 0, 1656,
- 1657, 1658, 1659, 1660, 34, 1661, 1662, 1663, 1664, 1665,
- 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675,
- 0, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685,
- 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695,
- 1696, 1697, 1698, 1699, 0, 1701, 1702, 0, 1704, 1705,
- 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715,
- 1716, 1717, 1718, 1719, 1720, 0, 1721, 1722, 1723, 1724,
- 0, 0, 0, 1728, 1729, 1730, 1731, 1732, 1733, 1734,
- 1735, 4037, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743,
- 1744, 1745, 0, 4038, 1748, 1749, 1750, 1751, 1752, 1753,
- 1754, 1755, 1756, 1757, 52, 53, 54, 0, 55, 56,
- 57, 58, 59, 0, 1758, 1759, 1760, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 574, 575,
- 0, 85, 0, 0, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 0, 0,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 4039, 4040, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 584, 152, 153, 154, 0, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 0, 586, 587, 179, 0, 180, 181, 182, 0,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 0, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 0, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 0, 4041, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 0,
- 0, 0, 292, 1774, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 0, 0, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 0, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 0, 374, 375, 376,
- 377, 602, 4042, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 0, 423, 424, 0,
- 426, 427, 4043, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 0, 4044, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 0, 463, 464, 465,
- 466, 0, 467, 608, 469, 4, 5, 0, 0, 0,
+ 0, 0, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 599, 345, 346, 347,
+ 600, 349, 350, 351, 352, 353, 354, 355, 356, 357,
+ 601, 359, 360, 361, 0, 363, 364, 365, 602, 367,
+ 368, 369, 370, 371, 372, 0, 374, 375, 376, 377,
+ 603, 4045, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 0, 0, 392, 393, 0, 394,
+ 395, 396, 397, 604, 399, 400, 605, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 0, 423, 424,
+ 0, 426, 427, 4046, 429, 430, 431, 432, 433, 606,
+ 435, 436, 437, 438, 439, 440, 441, 442, 607, 444,
+ 445, 446, 447, 448, 449, 450, 0, 4047, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 0, 464,
+ 465, 466, 467, 0, 468, 609, 470, 4, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 852, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
+ 0, 0, 857, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0,
- 0, 0, 5431, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 0, 0, 0, 0, 5150, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -16163,1586 +16181,1542 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 53, 54, 0, 55, 56,
- 57, 58, 59, 0, 0, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 573, 0, 0, 575,
- 0, 85, 0, 0, 88, 89, 576, 91, 92, 93,
- 94, 95, 577, 96, 578, 98, 99, 100, 0, 0,
- 579, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 0, 112, 113, 114, 580, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 581, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 0, 0, 137, 582, 139,
- 0, 140, 141, 142, 143, 144, 145, 146, 583, 148,
- 149, 150, 151, 0, 152, 153, 154, 0, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 585, 166, 0,
- 0, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 0, 586, 587, 179, 0, 180, 181, 182, 5432,
- 184, 185, 186, 589, 188, 189, 590, 191, 192, 591,
- 0, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 592, 208, 209, 210, 211, 212,
- 213, 214, 0, 216, 593, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 0, 250,
- 251, 252, 253, 254, 255, 256, 0, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 0, 0, 277, 278, 279, 280,
- 281, 282, 283, 284, 594, 285, 286, 287, 288, 0,
- 0, 0, 292, 0, 293, 294, 295, 296, 595, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 596, 314, 597, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 0, 0, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 598, 345, 346,
- 347, 599, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 600, 359, 360, 361, 0, 363, 364, 365, 601,
- 367, 368, 369, 370, 371, 372, 0, 374, 375, 376,
- 377, 602, 0, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 0, 394, 395,
- 396, 397, 603, 399, 400, 604, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 0, 423, 424, 0,
- 426, 427, 0, 429, 430, 431, 432, 433, 605, 435,
- 436, 437, 438, 439, 440, 441, 442, 606, 444, 445,
- 446, 447, 448, 449, 0, 0, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 1781, 463, 464, 465,
- 466, 0, 467, 608, 469
+ 0, 0, 0, 0, 0, 0, 52, 53, 54, 0,
+ 55, 56, 57, 58, 59, 0, 0, 0, 0, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 574, 0,
+ 0, 576, 0, 85, 0, 0, 88, 89, 577, 91,
+ 92, 93, 94, 95, 578, 96, 579, 98, 99, 100,
+ 0, 0, 580, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 0, 112, 113, 114, 581, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 582, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 0, 0, 137,
+ 583, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 584, 148, 149, 150, 151, 0, 152, 153, 154, 0,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 586,
+ 166, 0, 0, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 0, 587, 588, 179, 0, 180, 181,
+ 182, 5151, 184, 185, 186, 590, 188, 189, 591, 191,
+ 192, 592, 0, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 593, 208, 209, 210,
+ 211, 212, 213, 214, 0, 216, 594, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 0, 250, 251, 252, 253, 254, 255, 256, 0, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 0, 0, 277, 278,
+ 279, 280, 281, 282, 283, 284, 595, 285, 286, 287,
+ 288, 0, 0, 0, 292, 0, 293, 294, 295, 296,
+ 596, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 597, 314,
+ 598, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 0, 0, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 599,
+ 345, 346, 347, 600, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 601, 359, 360, 361, 0, 363, 364,
+ 365, 602, 367, 368, 369, 370, 371, 372, 0, 374,
+ 375, 376, 377, 603, 0, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 0, 0, 392,
+ 393, 0, 394, 395, 396, 397, 604, 399, 400, 605,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
+ 0, 423, 424, 0, 426, 427, 0, 429, 430, 431,
+ 432, 433, 606, 435, 436, 437, 438, 439, 440, 441,
+ 442, 607, 444, 445, 446, 447, 448, 449, 450, 0,
+ 0, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 1786, 464, 465, 466, 467, 0, 468, 609, 470
};
static const yytype_int16 yycheck[] =
{
- 3, 0, 30, 631, 82, 8, 856, 967, 645, 82,
- 693, 471, 2109, 693, 694, 0, 0, 1446, 645, 2003,
- 1967, 0, 2264, 0, 639, 2320, 2442, 0, 2058, 0,
- 809, 2122, 1414, 36, 660, 1417, 1411, 40, 623, 721,
- 0, 626, 45, 2294, 0, 48, 2559, 0, 0, 2565,
- 0, 2667, 1828, 1276, 809, 2626, 693, 776, 1621, 0,
- 0, 1973, 1577, 628, 3285, 2012, 693, 1982, 3602, 2319,
- 3034, 2461, 1182, 2575, 2405, 688, 2042, 629, 661, 1044,
- 661, 1798, 761, 41, 763, 3753, 1417, 766, 767, 0,
- 1457, 2512, 3298, 1517, 2060, 647, 661, 649, 650, 651,
- 652, 653, 654, 655, 1386, 657, 658, 3911, 691, 3829,
- 691, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103,
- 2104, 2105, 2106, 2107, 3178, 1518, 691, 2548, 1457, 4393,
- 1255, 1405, 1647, 1343, 4393, 687, 1876, 641, 2548, 738,
- 877, 3046, 741, 3986, 3822, 2179, 2180, 4293, 2122, 714,
- 178, 3685, 1277, 2237, 847, 2668, 1549, 4299, 3109, 4439,
- 3797, 3044, 165, 728, 4771, 1218, 4315, 1220, 1221, 2080,
- 3413, 3414, 2288, 856, 2655, 1228, 2432, 2088, 2089, 3811,
- 2091, 2092, 4023, 2186, 1577, 3139, 3220, 1013, 38, 2943,
- 3434, 743, 744, 3830, 3669, 3073, 700, 2288, 3138, 3139,
- 3430, 5140, 2956, 2206, 3434, 1278, 4283, 4039, 4761, 4043,
- 4882, 4043, 3148, 0, 6, 7, 2513, 5121, 639, 856,
- 3883, 639, 639, 639, 1184, 851, 1622, 2230, 2231, 856,
- 639, 4393, 4262, 15, 2369, 1620, 1632, 15, 15, 876,
- 12, 2545, 16, 17, 15, 1630, 26, 97, 83, 876,
- 42, 2285, 47, 1768, 1647, 67, 42, 1772, 6, 7,
- 825, 6, 7, 53, 15, 15, 6, 7, 15, 15,
- 2660, 1786, 1621, 1622, 526, 1485, 5124, 6, 7, 15,
- 15, 15, 26, 1632, 5320, 47, 6, 7, 1114, 1115,
- 1116, 127, 65, 6, 7, 4796, 15, 6, 7, 63,
- 145, 1127, 787, 33, 889, 890, 891, 892, 4282, 4283,
- 31, 41, 315, 89, 2288, 47, 344, 42, 42, 4671,
- 50, 42, 1746, 178, 53, 33, 42, 11, 12, 122,
- 895, 1727, 836, 41, 182, 206, 888, 1761, 26, 31,
- 1725, 1765, 50, 3580, 47, 53, 898, 899, 31, 31,
- 26, 1775, 51, 1777, 1778, 1779, 1780, 31, 1782, 99,
- 244, 5354, 5355, 366, 31, 31, 156, 42, 1764, 1793,
- 1794, 1795, 1796, 1797, 2669, 1768, 3330, 232, 1727, 1772,
- 53, 42, 299, 217, 1769, 31, 268, 4891, 158, 242,
- 3330, 254, 283, 1786, 1953, 1954, 33, 26, 143, 314,
- 51, 6, 7, 1962, 41, 104, 31, 2504, 201, 110,
- 123, 318, 4719, 50, 123, 1764, 26, 3766, 26, 4393,
- 24, 25, 26, 3898, 28, 127, 30, 232, 32, 3183,
- 3184, 42, 244, 1992, 26, 1994, 378, 42, 2643, 33,
- 310, 251, 305, 3851, 4839, 433, 42, 41, 4839, 1824,
- 2009, 2010, 2011, 104, 26, 168, 50, 2016, 2017, 168,
- 24, 25, 26, 4753, 28, 2024, 30, 971, 32, 24,
- 25, 26, 119, 28, 26, 30, 182, 32, 208, 123,
- 281, 4839, 254, 156, 26, 33, 471, 267, 47, 99,
- 33, 99, 3375, 41, 143, 33, 33, 290, 41, 299,
- 208, 143, 50, 41, 41, 152, 71, 50, 127, 128,
- 3026, 448, 50, 50, 387, 5642, 127, 42, 5122, 99,
- 28, 42, 178, 526, 168, 314, 33, 99, 427, 99,
- 122, 42, 33, 305, 41, 203, 178, 71, 33, 73,
- 41, 314, 314, 50, 65, 371, 41, 99, 33, 50,
- 54, 299, 537, 537, 14, 50, 41, 99, 314, 42,
- 5961, 71, 6115, 408, 788, 50, 4873, 4764, 96, 178,
- 254, 208, 645, 153, 258, 42, 591, 42, 33, 203,
- 50, 203, 4386, 328, 5432, 315, 41, 114, 33, 582,
- 128, 393, 197, 33, 42, 50, 41, 537, 2338, 312,
- 33, 41, 5533, 312, 542, 50, 197, 315, 41, 211,
- 50, 1304, 173, 4147, 208, 203, 641, 50, 110, 622,
- 623, 305, 6059, 626, 2919, 628, 6063, 155, 203, 5622,
- 314, 5135, 268, 4296, 14, 33, 99, 352, 53, 314,
- 639, 688, 3875, 41, 1209, 292, 386, 107, 232, 203,
- 335, 598, 50, 1218, 639, 639, 1221, 1117, 661, 1147,
- 208, 1226, 54, 43, 44, 208, 645, 1386, 645, 598,
- 208, 208, 723, 1272, 645, 1274, 4508, 614, 315, 4154,
- 127, 660, 685, 660, 528, 203, 6305, 1366, 691, 660,
- 1369, 1179, 1257, 740, 1373, 1374, 1375, 1376, 290, 639,
- 4849, 208, 528, 706, 645, 4867, 234, 208, 281, 779,
- 40, 714, 427, 208, 693, 3921, 693, 787, 1473, 660,
- 6339, 315, 693, 208, 727, 728, 173, 107, 686, 676,
- 314, 1841, 192, 294, 645, 4840, 787, 4842, 201, 781,
- 4845, 53, 5441, 693, 786, 772, 788, 676, 57, 660,
- 386, 299, 693, 208, 4859, 4171, 4172, 760, 414, 747,
- 1870, 358, 787, 208, 779, 3015, 258, 315, 208, 454,
- 5701, 709, 315, 776, 254, 208, 341, 315, 315, 4753,
- 5375, 688, 693, 287, 311, 3027, 252, 686, 638, 727,
- 793, 580, 122, 643, 787, 629, 504, 824, 801, 802,
- 6201, 366, 787, 1496, 6241, 414, 809, 642, 315, 659,
- 208, 613, 192, 173, 315, 252, 386, 287, 474, 378,
- 315, 423, 825, 673, 580, 305, 3780, 632, 5118, 1444,
- 315, 834, 366, 145, 314, 3166, 5440, 779, 314, 649,
- 3780, 547, 1407, 669, 847, 782, 696, 6400, 160, 5129,
- 314, 3787, 477, 726, 659, 3791, 366, 658, 645, 817,
- 315, 743, 5989, 780, 577, 782, 196, 782, 577, 639,
- 315, 201, 851, 660, 851, 315, 4284, 856, 3083, 856,
- 851, 884, 315, 886, 299, 3639, 889, 890, 891, 892,
- 893, 782, 895, 4867, 2323, 730, 1481, 876, 782, 876,
- 755, 506, 3153, 738, 5457, 876, 741, 669, 281, 779,
- 851, 782, 578, 758, 3209, 506, 779, 315, 5270, 593,
- 2835, 2836, 1474, 723, 688, 4162, 1386, 593, 5235, 782,
- 5127, 779, 581, 577, 294, 876, 894, 669, 896, 732,
- 851, 642, 4291, 335, 643, 856, 782, 593, 782, 2860,
- 2861, 954, 2863, 2864, 957, 717, 1441, 5805, 5657, 5807,
- 290, 964, 5998, 966, 3169, 876, 5470, 743, 5232, 742,
- 782, 970, 614, 5232, 5475, 287, 5477, 980, 955, 956,
- 560, 958, 959, 960, 779, 970, 970, 779, 965, 769,
- 1242, 970, 643, 970, 786, 787, 786, 970, 5670, 970,
- 3250, 787, 779, 3307, 3308, 787, 1971, 779, 782, 787,
- 2392, 3146, 3147, 3016, 955, 956, 787, 958, 959, 960,
- 970, 2131, 1987, 1444, 965, 769, 1444, 1444, 1444, 970,
- 970, 1283, 5062, 779, 763, 1444, 787, 787, 786, 763,
- 787, 786, 763, 5120, 955, 956, 786, 958, 959, 960,
- 780, 787, 787, 787, 965, 3350, 5363, 786, 2183, 970,
- 2185, 2392, 787, 2188, 851, 2432, 786, 2177, 787, 856,
- 5232, 787, 384, 786, 782, 2200, 779, 786, 2203, 2361,
- 782, 769, 2207, 6076, 2137, 6078, 6079, 779, 763, 876,
- 2372, 2520, 780, 769, 782, 779, 779, 779, 2527, 2152,
- 5653, 5654, 763, 2432, 780, 2490, 782, 2492, 2233, 2234,
- 2235, 708, 779, 786, 782, 2511, 1119, 768, 1117, 4002,
- 2505, 1876, 4785, 1949, 1950, 4803, 787, 4661, 4806, 6033,
- 6034, 704, 1117, 780, 3431, 4969, 3433, 4969, 2523, 4973,
- 769, 4973, 2538, 5538, 5118, 2541, 5120, 5538, 785, 1842,
- 2535, 780, 763, 782, 2550, 2228, 4389, 2122, 782, 769,
- 782, 769, 2511, 782, 692, 730, 2551, 763, 955, 956,
- 14, 958, 959, 960, 779, 4807, 780, 769, 965, 1182,
- 5538, 786, 787, 970, 6177, 6178, 780, 3284, 782, 2538,
- 2749, 787, 2541, 2752, 782, 6188, 5503, 769, 5505, 43,
- 44, 2550, 5797, 5510, 33, 33, 1209, 782, 4624, 2768,
- 5517, 5518, 41, 41, 299, 1218, 780, 769, 1221, 528,
- 5527, 50, 50, 1226, 1448, 780, 5533, 769, 782, 2788,
- 169, 53, 33, 28, 782, 30, 14, 780, 763, 782,
- 41, 1319, 763, 780, 782, 782, 1939, 42, 1833, 50,
- 281, 33, 763, 6246, 1257, 3339, 1839, 723, 5232, 41,
- 768, 769, 787, 107, 782, 43, 44, 6206, 50, 4323,
- 5823, 2481, 99, 780, 1839, 4809, 787, 57, 1960, 780,
- 763, 782, 3522, 4337, 2110, 780, 723, 782, 19, 20,
- 229, 71, 1295, 73, 1297, 780, 763, 782, 763, 779,
- 1303, 1304, 40, 299, 787, 14, 782, 151, 768, 769,
- 770, 771, 772, 773, 4558, 763, 391, 1320, 782, 72,
- 787, 143, 787, 2288, 684, 369, 1329, 782, 4558, 107,
- 33, 704, 3537, 376, 43, 44, 281, 782, 41, 787,
- 1343, 1344, 782, 143, 2607, 448, 5512, 50, 192, 782,
- 33, 4305, 4306, 2132, 2036, 281, 1383, 376, 41, 50,
- 232, 1364, 735, 5082, 4242, 4305, 4306, 50, 33, 19,
- 20, 2090, 4406, 4309, 4310, 1940, 41, 2132, 331, 208,
- 208, 295, 780, 1386, 1387, 50, 5666, 1386, 768, 769,
- 770, 771, 772, 773, 5701, 572, 376, 116, 107, 239,
- 5707, 1386, 732, 317, 1407, 1909, 1448, 208, 232, 1367,
- 1368, 99, 376, 144, 192, 1919, 53, 33, 143, 40,
- 19, 20, 1425, 471, 141, 2204, 208, 98, 4182, 3669,
- 71, 75, 580, 5274, 50, 5540, 258, 1272, 2491, 1274,
- 435, 390, 4196, 1446, 1447, 1444, 4200, 127, 580, 2204,
- 494, 763, 5721, 178, 378, 5991, 1441, 1460, 196, 1444,
- 1444, 232, 1312, 33, 3714, 196, 208, 143, 1471, 3711,
- 1473, 41, 3588, 1323, 270, 3459, 298, 10, 1481, 1482,
- 50, 2164, 1485, 192, 2164, 5981, 315, 315, 160, 2168,
- 160, 3741, 197, 1496, 144, 3751, 3886, 3588, 298, 33,
- 136, 491, 752, 6110, 1444, 208, 454, 41, 225, 67,
- 1345, 614, 803, 201, 315, 3936, 50, 3938, 2237, 314,
- 2630, 1981, 363, 14, 644, 208, 3936, 2164, 3938, 779,
- 4481, 4482, 4013, 315, 5672, 5842, 5674, 2164, 5170, 510,
- 769, 178, 3747, 208, 2109, 144, 196, 226, 178, 235,
- 74, 780, 43, 44, 5861, 33, 2139, 5723, 2139, 333,
- 33, 341, 389, 41, 391, 3341, 505, 193, 41, 746,
- 577, 226, 50, 369, 2139, 196, 281, 50, 287, 359,
- 74, 5850, 553, 2338, 2169, 2170, 366, 2172, 2173, 2174,
- 2175, 572, 236, 3577, 127, 232, 2422, 196, 425, 2184,
- 5278, 3567, 3568, 3569, 3570, 782, 4489, 755, 361, 2302,
- 2238, 391, 315, 561, 3588, 3355, 107, 2202, 74, 5094,
- 492, 1456, 298, 755, 2128, 4015, 143, 675, 455, 5104,
- 5105, 107, 315, 736, 314, 5313, 3583, 459, 208, 3551,
- 593, 3552, 2361, 3554, 634, 688, 3561, 3562, 5367, 299,
- 315, 695, 3857, 2372, 2373, 386, 74, 6264, 3898, 459,
- 151, 2340, 2341, 2926, 2927, 2344, 307, 787, 492, 688,
- 2349, 2350, 2351, 704, 208, 33, 3679, 33, 369, 2278,
- 5818, 352, 6218, 41, 608, 41, 244, 3892, 3983, 3894,
- 3895, 4934, 50, 688, 50, 3900, 434, 782, 494, 315,
- 258, 192, 787, 3908, 779, 654, 2305, 3912, 688, 3914,
- 101, 4227, 743, 432, 74, 314, 192, 688, 6214, 2347,
- 2348, 492, 2287, 67, 688, 76, 77, 568, 568, 33,
- 208, 357, 658, 74, 33, 208, 386, 41, 3105, 14,
- 33, 33, 41, 1816, 432, 315, 50, 173, 41, 41,
- 475, 50, 666, 506, 2337, 460, 2436, 50, 50, 704,
- 2345, 588, 392, 2328, 703, 746, 497, 403, 43, 44,
- 566, 33, 2337, 6269, 2339, 782, 3105, 551, 704, 41,
- 704, 315, 2747, 459, 463, 775, 782, 386, 50, 3012,
- 3172, 787, 3174, 3175, 5768, 622, 720, 321, 743, 3783,
- 472, 506, 472, 494, 358, 2915, 2916, 57, 463, 1812,
- 232, 328, 123, 434, 6310, 2380, 127, 1820, 3185, 1822,
- 10, 71, 5796, 73, 2561, 5300, 5800, 321, 5974, 1832,
- 1833, 2941, 107, 5975, 191, 74, 1839, 315, 1841, 1842,
- 458, 3172, 315, 3174, 3175, 3127, 5524, 497, 5997, 40,
- 208, 3133, 208, 33, 6003, 653, 3185, 168, 2471, 633,
- 2985, 41, 173, 40, 2989, 321, 2991, 1870, 45, 5712,
- 50, 33, 5509, 1876, 231, 33, 2441, 572, 31, 41,
- 3005, 4635, 101, 41, 127, 2938, 4640, 4641, 50, 614,
- 4944, 3975, 50, 3018, 3019, 206, 2589, 2590, 497, 695,
- 244, 6165, 2955, 321, 208, 296, 2959, 6166, 1911, 208,
- 2536, 268, 338, 4484, 4154, 208, 208, 192, 472, 1023,
- 1024, 1025, 766, 767, 768, 769, 770, 771, 772, 773,
- 10, 150, 568, 5907, 177, 4840, 1939, 1940, 342, 2504,
- 4845, 763, 5620, 3977, 4998, 4850, 208, 4363, 2513, 404,
- 730, 141, 374, 782, 782, 33, 2639, 315, 33, 315,
- 756, 321, 2466, 41, 1068, 4216, 41, 127, 763, 1073,
- 5944, 6109, 50, 768, 769, 50, 4218, 5371, 2591, 5796,
- 321, 782, 1981, 601, 127, 448, 4499, 5961, 1973, 767,
- 768, 769, 770, 771, 772, 773, 1981, 468, 241, 704,
- 782, 10, 2639, 3213, 695, 196, 2084, 33, 4339, 33,
- 568, 315, 2639, 744, 167, 41, 315, 41, 649, 33,
- 409, 410, 315, 315, 50, 209, 50, 41, 208, 386,
- 2667, 33, 145, 437, 2037, 506, 50, 2663, 2041, 41,
- 2667, 398, 119, 167, 2047, 421, 208, 127, 50, 461,
- 208, 746, 2665, 315, 145, 2058, 293, 766, 767, 768,
- 769, 770, 771, 772, 773, 42, 33, 5745, 6025, 160,
- 313, 6028, 5777, 723, 41, 152, 712, 296, 3038, 782,
- 33, 493, 321, 50, 4505, 2070, 2070, 782, 41, 4510,
- 572, 341, 443, 444, 744, 4505, 4517, 50, 652, 782,
- 4510, 47, 3376, 337, 117, 118, 2109, 4517, 2111, 359,
- 4350, 4351, 595, 568, 4354, 4355, 366, 782, 755, 753,
- 4360, 4361, 99, 5791, 2127, 5793, 763, 5944, 2131, 2132,
- 208, 6105, 141, 208, 5854, 315, 2139, 2140, 5197, 323,
- 53, 498, 462, 2862, 2648, 744, 33, 4387, 779, 386,
- 2654, 614, 170, 315, 41, 567, 2838, 315, 2161, 312,
- 106, 99, 2666, 50, 5223, 541, 2169, 2170, 2171, 2172,
- 2173, 2174, 2175, 2176, 2177, 2178, 5081, 5082, 4383, 4384,
- 4385, 2184, 208, 457, 208, 2164, 668, 2164, 312, 88,
- 661, 5980, 205, 2164, 208, 458, 63, 72, 2201, 2202,
- 3976, 2204, 4407, 4408, 364, 4410, 208, 307, 691, 229,
- 310, 568, 782, 5918, 2164, 292, 671, 4128, 71, 4130,
- 73, 364, 2225, 2164, 35, 36, 37, 6201, 39, 463,
- 528, 251, 3285, 251, 2237, 3345, 648, 315, 5916, 5633,
- 315, 208, 33, 156, 5638, 5639, 99, 5152, 782, 5154,
- 41, 126, 2935, 2164, 5308, 208, 3996, 3997, 495, 50,
- 5928, 5467, 745, 3223, 746, 2893, 577, 81, 6225, 282,
- 590, 5025, 5026, 736, 141, 766, 767, 768, 769, 770,
- 771, 772, 773, 5342, 2287, 2120, 6090, 6091, 448, 315,
- 450, 315, 154, 384, 770, 771, 772, 773, 2935, 2302,
- 63, 315, 780, 3678, 2307, 448, 33, 450, 2935, 782,
- 131, 120, 4224, 315, 41, 613, 4033, 6106, 6107, 782,
- 55, 208, 454, 50, 713, 2328, 600, 716, 413, 33,
- 413, 723, 2335, 147, 2337, 2338, 2339, 41, 601, 2922,
- 2343, 2922, 2345, 214, 158, 156, 50, 667, 315, 403,
- 225, 33, 166, 602, 3729, 226, 47, 2922, 2361, 41,
- 1464, 4566, 315, 417, 226, 303, 304, 499, 50, 2372,
- 2373, 669, 2207, 6041, 2939, 33, 6044, 2380, 141, 193,
- 540, 33, 4587, 41, 3751, 2970, 217, 6279, 3081, 41,
- 2975, 3351, 50, 5787, 33, 787, 2856, 540, 50, 2984,
- 0, 6169, 41, 5953, 489, 2990, 489, 128, 3127, 218,
- 281, 50, 5921, 5922, 3133, 106, 151, 208, 293, 3032,
- 47, 4663, 3751, 33, 782, 47, 782, 528, 315, 3148,
- 151, 41, 167, 6325, 3816, 249, 568, 6249, 2441, 3118,
- 50, 33, 3121, 2278, 4684, 5995, 3125, 2450, 47, 41,
- 281, 33, 3207, 2456, 614, 627, 287, 2460, 50, 41,
- 47, 47, 5367, 277, 2537, 403, 3065, 53, 50, 55,
- 2305, 614, 2545, 4889, 3154, 3040, 780, 4808, 2481, 106,
- 730, 208, 6250, 782, 106, 3816, 3596, 51, 7, 782,
- 782, 766, 767, 768, 769, 770, 771, 772, 773, 573,
- 574, 2504, 4918, 238, 208, 3787, 33, 106, 3937, 3791,
- 2513, 683, 613, 366, 41, 148, 3626, 4032, 151, 106,
- 782, 5575, 787, 50, 315, 6293, 208, 5029, 33, 144,
- 3115, 602, 3117, 386, 763, 128, 41, 475, 3123, 3124,
- 104, 2544, 128, 4933, 101, 50, 33, 6359, 6360, 6245,
- 208, 6060, 763, 4974, 41, 6064, 208, 2536, 57, 2536,
- 6328, 154, 3615, 50, 4974, 2536, 33, 5196, 669, 208,
- 5324, 5325, 71, 2576, 41, 2578, 650, 476, 3631, 212,
- 2583, 196, 3, 50, 3637, 3638, 2589, 2590, 315, 6285,
- 6358, 3156, 463, 150, 2667, 2536, 3978, 33, 208, 136,
- 3355, 5230, 782, 2606, 2607, 3980, 4030, 4031, 4523, 4524,
- 31, 315, 6257, 6258, 50, 3298, 208, 4041, 780, 145,
- 3339, 158, 782, 3588, 782, 2536, 208, 2630, 5044, 4576,
- 57, 2634, 141, 315, 160, 5540, 4666, 4552, 153, 4032,
- 4606, 2644, 419, 5607, 769, 4038, 73, 3978, 2651, 426,
- 33, 4044, 4567, 168, 6299, 780, 2659, 315, 41, 2662,
- 2639, 3298, 2639, 315, 769, 33, 33, 50, 2639, 206,
- 779, 3298, 4619, 41, 41, 780, 315, 782, 787, 413,
- 5109, 208, 50, 50, 2663, 5114, 2663, 586, 2667, 787,
- 2667, 1050, 2663, 682, 593, 2438, 2667, 254, 2639, 2442,
- 599, 690, 763, 208, 782, 315, 695, 782, 214, 311,
- 1069, 1070, 533, 534, 19, 20, 537, 538, 539, 3284,
- 226, 208, 2663, 315, 2709, 2709, 2667, 271, 2639, 3689,
- 713, 647, 31, 315, 717, 3418, 88, 328, 282, 296,
- 154, 208, 33, 6252, 6253, 768, 769, 3430, 305, 2536,
- 41, 3434, 2663, 3435, 780, 65, 2667, 314, 782, 50,
- 510, 3344, 268, 3344, 3446, 3447, 1334, 22, 782, 3451,
- 258, 328, 1340, 1341, 29, 674, 31, 5027, 737, 3344,
- 782, 3418, 23, 289, 178, 26, 27, 33, 315, 705,
- 31, 3418, 708, 3430, 780, 41, 782, 3434, 36, 37,
- 33, 4350, 4351, 3430, 50, 4354, 4355, 3434, 41, 2812,
- 315, 4360, 4361, 2816, 33, 782, 779, 50, 3597, 735,
- 1424, 3503, 41, 1427, 1428, 208, 2829, 743, 315, 782,
- 4582, 50, 343, 5249, 4586, 50, 735, 81, 3520, 88,
- 208, 208, 3597, 33, 5260, 33, 299, 780, 315, 782,
- 33, 41, 2639, 41, 5094, 6315, 6316, 2856, 41, 417,
- 50, 33, 50, 53, 5104, 5105, 3431, 50, 3433, 41,
- 780, 2856, 782, 6407, 226, 5504, 2663, 141, 50, 36,
- 2667, 128, 6103, 40, 5089, 5090, 5091, 5092, 45, 33,
- 5095, 5096, 5521, 780, 780, 5100, 782, 41, 5103, 746,
- 780, 5106, 782, 147, 5109, 5534, 50, 5536, 5113, 5114,
- 2051, 2052, 2915, 2916, 158, 670, 268, 208, 33, 2922,
- 33, 24, 166, 2926, 2927, 28, 41, 30, 41, 32,
- 436, 780, 315, 782, 670, 50, 2939, 50, 2941, 6033,
- 6034, 2944, 2945, 33, 113, 114, 115, 315, 315, 193,
- 281, 41, 763, 764, 765, 24, 2935, 4339, 2935, 28,
- 50, 30, 208, 32, 2935, 214, 2969, 2970, 782, 460,
- 3653, 3654, 2975, 3653, 3654, 208, 33, 226, 4890, 128,
- 33, 2984, 351, 352, 41, 4208, 338, 2990, 41, 208,
- 33, 782, 4555, 50, 2935, 784, 785, 50, 41, 780,
- 3960, 782, 119, 786, 33, 249, 123, 50, 4339, 780,
- 127, 782, 41, 5043, 3017, 780, 3653, 3654, 208, 388,
- 208, 50, 145, 312, 315, 208, 3653, 3654, 662, 145,
- 3033, 4254, 281, 277, 145, 152, 208, 3040, 3041, 3042,
- 289, 101, 780, 5614, 782, 28, 3004, 30, 5253, 33,
- 5255, 168, 5257, 780, 4164, 787, 173, 41, 427, 3687,
- 5300, 413, 33, 780, 208, 782, 50, 3070, 3787, 315,
- 41, 3921, 3791, 127, 3077, 324, 780, 734, 3081, 50,
- 47, 780, 315, 782, 436, 88, 4461, 4212, 120, 206,
- 150, 5006, 780, 208, 782, 208, 315, 3557, 780, 23,
- 2935, 5306, 26, 27, 3107, 5345, 787, 31, 3111, 3112,
- 3113, 463, 3115, 47, 3117, 281, 515, 516, 208, 3122,
- 3123, 3124, 780, 657, 3127, 315, 129, 315, 780, 436,
- 3133, 530, 315, 532, 101, 780, 4912, 782, 743, 779,
- 2431, 780, 145, 315, 4197, 3148, 4199, 2982, 2935, 3152,
- 57, 208, 114, 3156, 3157, 208, 5572, 780, 2993, 782,
- 268, 780, 4215, 782, 71, 208, 73, 18, 19, 20,
- 780, 315, 786, 287, 33, 292, 470, 786, 40, 208,
- 5210, 782, 41, 150, 128, 3770, 147, 436, 780, 40,
- 780, 50, 782, 55, 254, 141, 3824, 158, 780, 780,
- 315, 782, 315, 5819, 3207, 166, 151, 24, 25, 26,
- 3213, 28, 647, 30, 463, 32, 454, 606, 18, 19,
- 20, 5312, 779, 779, 208, 315, 625, 626, 5744, 584,
- 3065, 33, 3797, 602, 3307, 3308, 296, 208, 3921, 41,
- 40, 3996, 3997, 3321, 3079, 305, 748, 749, 50, 751,
- 619, 753, 475, 780, 314, 3258, 3975, 779, 315, 262,
- 704, 499, 315, 3266, 3829, 3830, 71, 580, 328, 128,
- 735, 779, 315, 73, 333, 780, 645, 5261, 281, 287,
- 780, 3284, 782, 4658, 3921, 779, 315, 254, 249, 151,
- 293, 96, 333, 780, 3921, 780, 5809, 782, 779, 99,
- 3865, 203, 333, 5333, 109, 167, 658, 203, 551, 160,
- 662, 782, 283, 780, 3940, 779, 277, 686, 3321, 3298,
- 125, 3298, 40, 561, 5239, 283, 128, 311, 3331, 296,
- 3333, 315, 50, 427, 196, 338, 3339, 55, 305, 3342,
- 33, 3344, 3345, 360, 315, 196, 786, 314, 41, 208,
- 155, 3186, 3355, 5769, 780, 779, 782, 50, 40, 3194,
- 160, 328, 780, 780, 782, 782, 604, 33, 50, 15,
- 780, 5613, 782, 55, 225, 41, 238, 780, 780, 782,
- 782, 779, 779, 735, 50, 955, 956, 3298, 958, 959,
- 960, 743, 4171, 4172, 779, 965, 196, 780, 779, 306,
- 307, 201, 780, 203, 782, 780, 208, 782, 779, 658,
- 413, 737, 780, 780, 33, 779, 4171, 4172, 40, 779,
- 779, 355, 41, 779, 73, 225, 5677, 38, 3431, 234,
- 3433, 50, 4655, 151, 341, 3412, 3413, 3414, 780, 3418,
- 782, 3418, 293, 780, 4126, 782, 779, 3418, 4963, 167,
- 779, 3430, 359, 3430, 182, 3434, 315, 3434, 33, 366,
- 577, 780, 780, 782, 782, 399, 41, 401, 780, 151,
- 782, 3412, 3413, 3414, 780, 50, 782, 3418, 196, 737,
- 780, 5776, 782, 779, 391, 167, 735, 5782, 5783, 780,
- 295, 779, 779, 293, 743, 5586, 213, 780, 4277, 782,
- 779, 3412, 3413, 3414, 780, 5596, 782, 213, 780, 128,
- 782, 3298, 779, 315, 196, 208, 4945, 779, 779, 3430,
- 238, 4149, 4277, 3434, 213, 763, 764, 765, 779, 5192,
- 5193, 3534, 5195, 213, 780, 386, 31, 5200, 160, 779,
- 5203, 785, 208, 5206, 5207, 779, 346, 780, 780, 779,
- 782, 5214, 127, 5216, 779, 779, 238, 491, 3557, 779,
- 3563, 780, 5225, 779, 751, 4947, 3551, 24, 25, 26,
- 4963, 28, 3557, 30, 196, 32, 787, 780, 47, 782,
- 4633, 4634, 5612, 3418, 5531, 780, 386, 782, 3591, 208,
- 4309, 4310, 780, 3596, 3597, 533, 534, 780, 779, 537,
- 538, 539, 779, 225, 409, 410, 779, 541, 780, 779,
- 24, 25, 33, 15, 28, 5599, 30, 283, 32, 780,
- 41, 782, 315, 3626, 3697, 3412, 3413, 3414, 780, 50,
- 782, 3418, 360, 208, 779, 15, 780, 106, 780, 779,
- 782, 644, 3641, 3430, 495, 779, 3649, 3434, 3651, 315,
- 780, 780, 782, 782, 588, 658, 3641, 3641, 780, 662,
- 782, 779, 3641, 780, 3641, 780, 763, 780, 3641, 779,
- 3641, 293, 779, 3746, 3653, 3654, 3653, 3654, 406, 779,
- 3683, 3641, 3653, 3654, 5714, 3641, 779, 779, 3641, 3641,
- 780, 3641, 3695, 3766, 6207, 495, 315, 780, 779, 782,
- 3641, 3641, 779, 3653, 3654, 708, 4759, 128, 780, 4294,
- 782, 779, 3653, 3654, 24, 25, 43, 779, 28, 779,
- 30, 33, 32, 780, 780, 203, 782, 780, 779, 41,
- 3641, 780, 735, 782, 779, 19, 20, 780, 50, 779,
- 315, 68, 3653, 3654, 678, 780, 513, 782, 515, 516,
- 77, 780, 779, 558, 559, 5739, 484, 779, 18, 19,
- 20, 6056, 782, 530, 386, 532, 700, 3770, 779, 24,
- 25, 98, 3775, 28, 4483, 30, 4485, 32, 779, 779,
- 40, 33, 75, 75, 3787, 779, 779, 208, 3791, 41,
- 779, 779, 779, 5884, 3797, 264, 123, 266, 50, 779,
- 127, 53, 3805, 130, 779, 779, 779, 779, 277, 779,
- 779, 779, 779, 73, 141, 677, 128, 128, 584, 547,
- 779, 203, 779, 730, 293, 779, 3829, 3830, 779, 779,
- 157, 779, 779, 126, 126, 563, 564, 779, 165, 99,
- 568, 569, 570, 779, 779, 4624, 3919, 779, 5511, 779,
- 177, 4533, 145, 145, 3641, 5952, 779, 4472, 625, 626,
- 660, 145, 3865, 779, 779, 779, 779, 160, 160, 4624,
- 258, 782, 670, 495, 201, 4558, 460, 688, 3881, 779,
+ 3, 0, 30, 82, 971, 8, 2113, 472, 0, 82,
+ 632, 1451, 646, 861, 1971, 0, 698, 699, 2007, 698,
+ 640, 0, 624, 2560, 0, 627, 2324, 2126, 814, 0,
+ 0, 0, 2062, 36, 665, 814, 2268, 40, 0, 726,
+ 0, 0, 45, 2663, 0, 48, 0, 1280, 2566, 2442,
+ 781, 1416, 2298, 2622, 41, 1582, 1626, 1419, 3288, 2016,
+ 1422, 0, 630, 1986, 698, 2461, 666, 1977, 3030, 0,
+ 3174, 666, 1222, 2576, 1224, 1225, 646, 3754, 2323, 693,
+ 648, 3915, 1232, 1422, 652, 2046, 654, 2409, 656, 657,
+ 1462, 659, 660, 661, 83, 3181, 696, 3183, 3184, 1048,
+ 1523, 696, 743, 2064, 1803, 746, 3833, 3301, 3042, 852,
+ 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108,
+ 2109, 2110, 2111, 2939, 692, 1652, 1462, 2664, 698, 1391,
+ 2513, 1554, 2549, 1410, 1880, 4317, 2952, 3823, 1259, 1017,
+ 629, 4395, 3989, 1347, 4395, 2241, 2084, 4288, 4301, 2126,
+ 178, 2183, 2184, 1186, 2092, 2093, 882, 2095, 2096, 1582,
+ 1281, 3105, 165, 3798, 1522, 3812, 2549, 3414, 3415, 4026,
+ 4774, 4297, 3040, 766, 2190, 768, 2651, 666, 771, 772,
+ 748, 749, 861, 2432, 2292, 4441, 4794, 3222, 642, 3435,
+ 3069, 3431, 0, 2292, 2210, 3435, 1282, 5136, 4046, 3834,
+ 3887, 3134, 3135, 2514, 3135, 4042, 4395, 696, 4286, 4046,
+ 640, 4892, 3144, 640, 4265, 3670, 6, 7, 2234, 2235,
+ 26, 1188, 15, 5392, 5393, 856, 15, 861, 640, 1652,
+ 719, 15, 6, 7, 15, 640, 640, 42, 38, 15,
+ 1118, 1119, 1120, 12, 733, 31, 1773, 881, 1627, 15,
+ 1777, 705, 528, 1131, 793, 26, 4806, 2289, 1637, 31,
+ 2656, 4849, 6, 7, 1791, 6, 7, 80, 6, 7,
+ 42, 4724, 47, 1626, 1627, 42, 89, 6, 7, 53,
+ 15, 5356, 15, 51, 1637, 4674, 1490, 15, 127, 15,
+ 127, 861, 894, 15, 896, 3343, 15, 97, 42, 182,
+ 16, 17, 3523, 88, 127, 128, 42, 63, 2373, 33,
+ 792, 881, 315, 1625, 203, 2292, 344, 41, 242, 31,
+ 6, 7, 127, 1635, 47, 4901, 50, 206, 6, 7,
+ 31, 244, 31, 26, 902, 903, 104, 31, 254, 11,
+ 12, 830, 2546, 4849, 6, 7, 42, 178, 3581, 3770,
+ 1773, 122, 26, 1732, 1777, 203, 42, 33, 99, 268,
+ 122, 158, 31, 366, 3855, 41, 283, 2665, 1791, 3185,
+ 3186, 203, 57, 203, 50, 281, 299, 4285, 4286, 1732,
+ 24, 25, 26, 378, 28, 31, 30, 841, 32, 305,
+ 1769, 203, 3879, 1751, 42, 42, 1957, 1958, 2505, 310,
+ 3333, 232, 3333, 110, 26, 1966, 252, 217, 1766, 898,
+ 318, 47, 1770, 314, 143, 33, 1769, 47, 1730, 252,
+ 145, 26, 1780, 41, 1782, 1783, 1784, 1785, 808, 1787,
+ 4883, 5162, 50, 299, 42, 1996, 53, 1998, 33, 201,
+ 1798, 1799, 1800, 1801, 1802, 123, 41, 3902, 4760, 3670,
+ 47, 42, 2013, 2014, 2015, 50, 26, 65, 42, 2020,
+ 2021, 123, 1774, 391, 42, 33, 1831, 2028, 24, 25,
+ 26, 42, 28, 41, 30, 4849, 32, 358, 67, 71,
+ 472, 42, 50, 33, 208, 254, 26, 4395, 239, 5658,
+ 168, 41, 387, 5678, 14, 3303, 3304, 24, 25, 26,
+ 50, 28, 28, 30, 3022, 32, 168, 314, 3376, 299,
+ 33, 197, 14, 42, 99, 358, 3602, 3603, 41, 290,
+ 435, 975, 14, 43, 44, 528, 582, 50, 290, 99,
+ 26, 6021, 208, 128, 65, 71, 305, 4779, 1881, 156,
+ 5547, 43, 44, 33, 197, 314, 26, 539, 786, 26,
+ 6010, 43, 44, 791, 4388, 793, 591, 314, 5098, 99,
+ 50, 193, 53, 33, 33, 1308, 14, 427, 539, 110,
+ 577, 41, 41, 646, 644, 299, 33, 51, 14, 10,
+ 50, 50, 254, 539, 41, 5568, 258, 107, 337, 5165,
+ 208, 315, 182, 50, 5758, 119, 2342, 209, 167, 328,
+ 3686, 33, 458, 99, 99, 107, 5814, 43, 44, 41,
+ 203, 4298, 6311, 208, 777, 107, 201, 2915, 50, 99,
+ 623, 624, 99, 598, 627, 281, 629, 144, 152, 472,
+ 104, 151, 42, 305, 312, 1276, 5985, 1278, 6281, 315,
+ 208, 640, 314, 141, 22, 386, 690, 755, 640, 151,
+ 312, 29, 42, 31, 643, 244, 1121, 6356, 208, 107,
+ 1391, 646, 267, 666, 203, 156, 829, 646, 3, 640,
+ 646, 107, 192, 4510, 6317, 783, 6025, 4859, 99, 196,
+ 665, 3902, 57, 408, 640, 208, 665, 690, 4877, 665,
+ 192, 476, 1478, 696, 42, 33, 31, 315, 73, 743,
+ 192, 676, 4157, 41, 691, 143, 201, 646, 711, 99,
+ 141, 323, 50, 698, 463, 646, 719, 258, 5882, 698,
+ 315, 791, 698, 314, 1213, 357, 665, 225, 698, 732,
+ 733, 3925, 153, 1222, 665, 791, 1225, 314, 208, 208,
+ 178, 1230, 5950, 312, 192, 601, 735, 315, 783, 4174,
+ 4175, 208, 658, 5760, 743, 5738, 192, 746, 1501, 698,
+ 31, 254, 765, 5494, 6254, 315, 3011, 698, 292, 35,
+ 36, 37, 1261, 39, 366, 690, 208, 1370, 781, 786,
+ 1373, 378, 690, 314, 1377, 1378, 1379, 5413, 783, 1382,
+ 1383, 3023, 315, 314, 2137, 798, 4287, 4850, 33, 4852,
+ 792, 586, 4855, 806, 807, 341, 41, 96, 593, 652,
+ 1843, 814, 305, 5266, 599, 50, 4869, 568, 3626, 629,
+ 506, 314, 5134, 580, 3640, 315, 143, 830, 688, 1449,
+ 366, 477, 713, 728, 6019, 822, 839, 746, 646, 639,
+ 3162, 1874, 639, 528, 644, 315, 315, 432, 3781, 852,
+ 3781, 287, 4760, 506, 755, 783, 3788, 665, 315, 725,
+ 3792, 784, 786, 786, 664, 5405, 155, 783, 169, 786,
+ 208, 856, 783, 786, 4295, 643, 861, 856, 678, 725,
+ 856, 593, 5138, 315, 1486, 861, 889, 2327, 891, 674,
+ 156, 894, 725, 896, 669, 898, 881, 786, 901, 577,
+ 783, 701, 881, 3149, 4391, 881, 5148, 786, 2831, 2832,
+ 897, 1479, 899, 3211, 1453, 577, 5305, 856, 2856, 2857,
+ 299, 2859, 2860, 1412, 593, 856, 1391, 758, 229, 5505,
+ 861, 3979, 4165, 746, 690, 642, 4157, 6106, 786, 6108,
+ 6109, 3334, 881, 299, 719, 234, 669, 786, 5401, 786,
+ 881, 33, 737, 6028, 786, 958, 786, 547, 961, 41,
+ 5510, 766, 5512, 786, 1446, 968, 772, 970, 50, 4877,
+ 1246, 6431, 734, 208, 786, 974, 786, 315, 784, 786,
+ 786, 984, 974, 959, 960, 5573, 962, 963, 964, 974,
+ 783, 2141, 766, 969, 766, 974, 3012, 783, 974, 766,
+ 790, 772, 791, 974, 974, 974, 2156, 791, 3253, 5263,
+ 791, 1287, 5263, 5694, 783, 791, 790, 783, 974, 1449,
+ 959, 960, 1449, 962, 963, 964, 1975, 5078, 959, 960,
+ 969, 962, 963, 964, 2396, 974, 761, 1449, 969, 783,
+ 6209, 6210, 1991, 974, 1449, 1449, 790, 791, 856, 790,
+ 706, 6220, 790, 861, 3352, 791, 791, 2396, 791, 5137,
+ 2432, 790, 786, 791, 4150, 791, 2187, 5573, 2189, 791,
+ 786, 2192, 791, 881, 5263, 1953, 1954, 3142, 3143, 772,
+ 315, 2521, 783, 2204, 783, 5538, 2207, 5540, 2528, 783,
+ 2211, 784, 5545, 786, 1880, 791, 2432, 783, 772, 5552,
+ 5553, 1844, 2135, 2365, 790, 791, 3310, 3311, 4795, 5562,
+ 786, 783, 790, 6282, 2376, 5568, 2237, 2238, 2239, 766,
+ 1123, 3432, 1121, 3434, 6063, 6064, 208, 4813, 790, 1121,
+ 4816, 4352, 4353, 2512, 4982, 4356, 4357, 4005, 4986, 560,
+ 784, 4362, 4363, 791, 791, 4982, 2232, 783, 2181, 4986,
+ 772, 959, 960, 783, 962, 963, 964, 33, 766, 2512,
+ 2539, 969, 784, 2542, 786, 41, 974, 772, 4389, 643,
+ 4817, 789, 2551, 790, 50, 766, 614, 2126, 178, 2491,
+ 3287, 2493, 766, 1186, 2745, 3993, 2539, 2748, 766, 2542,
+ 173, 786, 232, 786, 2506, 766, 732, 786, 2551, 5573,
+ 1943, 4626, 772, 2764, 505, 766, 4014, 791, 5834, 786,
+ 1213, 5145, 2524, 791, 745, 1453, 784, 5151, 786, 1222,
+ 791, 4325, 1225, 2784, 2536, 1388, 5134, 1230, 784, 5137,
+ 791, 33, 772, 315, 784, 4339, 2114, 766, 74, 41,
+ 2552, 1841, 3338, 50, 1323, 771, 772, 786, 50, 769,
+ 770, 771, 772, 773, 774, 775, 776, 784, 1261, 251,
+ 784, 784, 791, 786, 581, 786, 295, 769, 770, 771,
+ 772, 773, 774, 775, 776, 53, 772, 1964, 2482, 771,
+ 772, 773, 774, 775, 776, 5738, 33, 1276, 317, 1278,
+ 783, 5744, 772, 4782, 41, 772, 1299, 771, 1301, 790,
+ 53, 33, 33, 50, 1307, 1308, 53, 578, 331, 41,
+ 41, 294, 281, 448, 4560, 784, 786, 14, 50, 50,
+ 4560, 1324, 593, 771, 772, 773, 774, 775, 776, 786,
+ 1333, 116, 208, 769, 770, 771, 772, 773, 774, 775,
+ 776, 53, 2492, 2292, 1347, 1348, 43, 44, 281, 5475,
+ 2136, 33, 1841, 2040, 786, 5263, 766, 2136, 123, 41,
+ 1349, 5487, 5488, 2094, 178, 1368, 4245, 145, 50, 4185,
+ 72, 4457, 4458, 4408, 4307, 4308, 4307, 4308, 33, 4311,
+ 4312, 791, 160, 4199, 1371, 1372, 41, 4203, 1391, 1392,
+ 143, 376, 1391, 99, 33, 50, 54, 376, 6006, 1391,
+ 6004, 376, 41, 168, 705, 694, 208, 786, 281, 1412,
+ 107, 50, 791, 433, 414, 33, 33, 136, 766, 50,
+ 528, 5874, 2208, 41, 41, 71, 160, 1430, 33, 2208,
+ 786, 160, 50, 50, 5690, 791, 41, 371, 178, 315,
+ 5893, 67, 10, 791, 376, 50, 784, 421, 1451, 1452,
+ 1449, 173, 74, 5310, 1446, 1944, 314, 1449, 226, 1913,
+ 369, 208, 1465, 378, 5953, 5954, 4687, 725, 649, 1923,
+ 3715, 3460, 1461, 1476, 474, 1478, 208, 208, 1449, 614,
+ 3712, 3589, 390, 1486, 1487, 321, 2168, 1490, 98, 2168,
+ 3589, 783, 40, 1449, 3890, 192, 268, 3742, 1501, 791,
+ 766, 767, 768, 3752, 33, 258, 281, 33, 448, 287,
+ 2241, 33, 41, 315, 127, 41, 1316, 409, 410, 41,
+ 1985, 50, 5575, 3940, 50, 3942, 208, 1327, 50, 208,
+ 28, 232, 30, 791, 2168, 71, 6140, 73, 33, 4483,
+ 4484, 4016, 5993, 2143, 42, 298, 41, 403, 2143, 784,
+ 107, 786, 4638, 208, 5201, 50, 2342, 3940, 232, 3942,
+ 173, 417, 369, 2306, 143, 40, 53, 541, 315, 208,
+ 593, 2173, 2174, 141, 2176, 2177, 2178, 2179, 4664, 2172,
+ 33, 5707, 493, 315, 315, 494, 2188, 299, 41, 3578,
+ 208, 208, 632, 2626, 528, 270, 14, 50, 2168, 178,
+ 414, 6090, 783, 208, 2206, 6094, 384, 3568, 3569, 3570,
+ 3571, 3357, 3589, 314, 386, 3553, 338, 3555, 244, 659,
+ 2242, 33, 4018, 4491, 2113, 43, 44, 3584, 5314, 41,
+ 76, 77, 258, 315, 2365, 192, 33, 666, 50, 3562,
+ 3563, 2282, 3552, 31, 41, 2376, 2377, 432, 196, 2603,
+ 33, 786, 392, 50, 2143, 5110, 287, 649, 41, 361,
+ 315, 307, 143, 5349, 3680, 5120, 5121, 50, 2309, 1027,
+ 1028, 1029, 5161, 33, 614, 33, 315, 335, 2132, 208,
+ 386, 41, 208, 41, 403, 197, 208, 494, 3986, 107,
+ 50, 178, 50, 608, 369, 463, 5849, 315, 315, 321,
+ 4947, 232, 784, 686, 786, 690, 459, 5848, 33, 33,
+ 315, 690, 4230, 208, 1072, 690, 41, 41, 57, 1077,
+ 143, 196, 580, 33, 635, 50, 50, 2349, 2350, 3101,
+ 750, 41, 71, 4819, 73, 669, 33, 706, 472, 33,
+ 50, 2341, 352, 472, 41, 232, 654, 41, 1821, 2351,
+ 2352, 2344, 2345, 50, 2436, 208, 50, 504, 690, 33,
+ 2353, 2354, 2355, 33, 33, 3101, 5700, 41, 5702, 281,
+ 33, 41, 41, 706, 192, 3008, 50, 746, 41, 167,
+ 50, 50, 6233, 404, 2934, 658, 315, 50, 697, 315,
+ 74, 706, 333, 315, 2743, 3784, 208, 5409, 738, 6288,
+ 6289, 2951, 2291, 393, 506, 2955, 3168, 722, 3170, 3171,
+ 40, 208, 577, 746, 1817, 3187, 314, 298, 492, 494,
+ 315, 4637, 1825, 715, 1827, 208, 718, 4643, 4644, 3168,
+ 366, 3170, 3171, 706, 226, 1838, 2562, 211, 1841, 33,
+ 1843, 1844, 293, 2332, 2587, 2588, 4932, 41, 208, 568,
+ 208, 3187, 2341, 4957, 2343, 33, 50, 33, 2472, 4945,
+ 2981, 3123, 315, 41, 2985, 41, 2987, 3129, 33, 780,
+ 232, 1874, 50, 5559, 50, 298, 41, 1880, 2911, 2912,
+ 3001, 5336, 3978, 208, 208, 50, 434, 54, 101, 5110,
+ 697, 566, 122, 3014, 3015, 2384, 475, 5805, 208, 5120,
+ 5121, 74, 5749, 315, 2937, 74, 2537, 5011, 784, 5544,
+ 786, 208, 1915, 40, 208, 471, 4850, 4486, 315, 33,
+ 448, 4855, 127, 143, 312, 5833, 4860, 41, 580, 5837,
+ 53, 706, 315, 74, 208, 386, 50, 74, 208, 208,
+ 1943, 1944, 568, 33, 6198, 208, 6197, 568, 460, 3981,
+ 33, 41, 2441, 363, 99, 315, 2635, 315, 41, 434,
+ 50, 492, 737, 595, 4501, 145, 196, 50, 2922, 2923,
+ 5656, 201, 4365, 4219, 235, 2589, 1151, 580, 459, 33,
+ 160, 6163, 784, 6165, 786, 1977, 1985, 41, 766, 4221,
+ 315, 315, 6033, 1985, 506, 714, 50, 443, 444, 47,
+ 6055, 2635, 341, 6058, 229, 315, 641, 33, 1183, 2088,
+ 551, 3215, 2466, 766, 208, 41, 2505, 653, 315, 4341,
+ 359, 315, 697, 613, 50, 2514, 251, 366, 2659, 2663,
+ 208, 5939, 208, 156, 72, 614, 459, 321, 2041, 786,
+ 191, 315, 2045, 208, 495, 315, 315, 2661, 2051, 423,
+ 671, 2431, 315, 114, 786, 786, 572, 5669, 106, 2062,
+ 290, 693, 5674, 5675, 627, 2635, 598, 3034, 5976, 196,
+ 6252, 463, 769, 770, 771, 772, 773, 774, 775, 776,
+ 231, 33, 2074, 296, 759, 5993, 614, 145, 126, 41,
+ 4507, 99, 633, 2663, 208, 4512, 5782, 33, 50, 572,
+ 3377, 120, 4519, 2074, 786, 41, 758, 6011, 328, 314,
+ 2113, 1469, 2115, 572, 50, 5336, 748, 268, 208, 675,
+ 287, 315, 685, 6164, 4507, 208, 33, 2858, 2131, 4512,
+ 492, 786, 2135, 2136, 41, 2124, 4519, 315, 3288, 315,
+ 2143, 2144, 6089, 50, 676, 784, 6093, 2834, 321, 33,
+ 315, 5828, 321, 5830, 208, 758, 791, 41, 568, 5886,
+ 5381, 75, 2165, 5097, 5098, 67, 50, 646, 786, 786,
+ 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182,
+ 321, 786, 208, 2168, 321, 2188, 665, 225, 5833, 2168,
+ 2644, 572, 2168, 4131, 706, 4133, 2650, 756, 2168, 218,
+ 5857, 315, 2205, 2206, 384, 2208, 6261, 462, 2662, 668,
+ 738, 5297, 5824, 33, 101, 81, 773, 774, 775, 776,
+ 699, 41, 2211, 5039, 5040, 315, 2229, 6135, 457, 2168,
+ 50, 33, 315, 749, 232, 386, 413, 2168, 2241, 41,
+ 5344, 71, 10, 73, 389, 173, 391, 398, 50, 5183,
+ 311, 5185, 2931, 3999, 4000, 293, 208, 786, 786, 3226,
+ 786, 315, 5948, 150, 786, 19, 20, 2889, 766, 99,
+ 786, 758, 208, 771, 772, 6201, 749, 33, 510, 766,
+ 425, 147, 542, 5960, 454, 41, 6120, 6121, 2291, 315,
+ 749, 786, 158, 2282, 50, 303, 304, 2931, 271, 5504,
+ 166, 208, 3180, 2306, 10, 468, 5500, 602, 2311, 282,
+ 455, 33, 489, 3346, 3679, 36, 37, 4227, 2918, 41,
+ 2309, 553, 236, 2918, 208, 6233, 101, 193, 50, 2332,
+ 6277, 5976, 458, 786, 3077, 590, 2339, 4036, 2341, 2342,
+ 2343, 6245, 244, 506, 2347, 335, 0, 498, 2351, 2352,
+ 6007, 6008, 770, 771, 772, 773, 774, 775, 776, 127,
+ 6286, 2931, 2365, 315, 2966, 3730, 294, 254, 749, 2971,
+ 5227, 600, 784, 2376, 2377, 150, 374, 856, 2980, 315,
+ 3752, 2384, 861, 249, 2986, 131, 3353, 2852, 208, 786,
+ 144, 561, 3123, 732, 6071, 403, 6300, 6074, 3129, 6325,
+ 19, 20, 881, 786, 5261, 786, 208, 33, 315, 296,
+ 127, 277, 667, 3144, 3028, 41, 3752, 568, 305, 5228,
+ 3061, 127, 170, 3209, 50, 528, 786, 314, 786, 2918,
+ 7, 315, 342, 6359, 4666, 57, 148, 6341, 2441, 151,
+ 602, 328, 196, 588, 145, 5254, 2935, 2450, 47, 71,
+ 528, 711, 208, 2456, 53, 3817, 55, 2460, 690, 160,
+ 177, 786, 786, 6389, 454, 2538, 3616, 475, 3150, 729,
+ 6285, 5405, 725, 2546, 352, 601, 786, 622, 3817, 2482,
+ 959, 960, 3632, 962, 963, 964, 208, 784, 3638, 3639,
+ 969, 783, 786, 154, 5699, 315, 4818, 33, 661, 791,
+ 212, 3941, 2505, 251, 734, 41, 4899, 5611, 4035, 3111,
+ 613, 2514, 786, 315, 50, 784, 786, 3119, 3120, 3112,
+ 127, 296, 3115, 786, 241, 144, 3788, 437, 3121, 128,
+ 3792, 33, 4925, 51, 454, 613, 366, 4930, 791, 41,
+ 5043, 791, 2545, 33, 5360, 5361, 33, 3036, 50, 427,
+ 4946, 41, 2537, 413, 41, 461, 386, 766, 2537, 315,
+ 50, 2537, 47, 50, 3597, 226, 669, 127, 2571, 5378,
+ 4987, 3357, 33, 153, 2577, 6390, 6391, 196, 119, 499,
+ 41, 55, 208, 2586, 2587, 2588, 104, 493, 168, 50,
+ 2663, 669, 786, 315, 3627, 766, 313, 33, 2537, 2602,
+ 2603, 47, 4525, 4526, 4987, 41, 2537, 3338, 786, 33,
+ 786, 152, 4035, 33, 50, 3980, 141, 41, 4041, 784,
+ 3982, 4578, 3301, 2626, 4047, 33, 50, 2630, 33, 489,
+ 50, 4554, 386, 41, 117, 118, 41, 2640, 5843, 4669,
+ 3589, 5575, 50, 3982, 2647, 50, 4569, 4608, 568, 33,
+ 2635, 5856, 2655, 128, 33, 2658, 2635, 41, 413, 2635,
+ 106, 567, 41, 3152, 4621, 5058, 50, 3301, 136, 6337,
+ 784, 50, 208, 766, 2659, 4033, 4034, 151, 2663, 154,
+ 2659, 5643, 5539, 2659, 2663, 128, 4044, 2663, 772, 315,
+ 158, 573, 574, 167, 784, 314, 2635, 791, 772, 5556,
+ 784, 784, 6370, 715, 2635, 311, 208, 719, 151, 33,
+ 784, 47, 5569, 2705, 5571, 31, 47, 41, 208, 33,
+ 2659, 208, 205, 3690, 2663, 217, 50, 41, 2659, 2537,
+ 784, 3301, 2663, 454, 2705, 47, 50, 4584, 206, 419,
+ 3419, 4588, 648, 497, 147, 3345, 426, 208, 47, 3436,
+ 3345, 292, 3431, 328, 33, 158, 3435, 364, 784, 63,
+ 3447, 3448, 41, 166, 238, 3452, 33, 386, 650, 33,
+ 106, 50, 208, 33, 41, 106, 123, 41, 499, 315,
+ 127, 41, 647, 50, 208, 3419, 50, 533, 534, 281,
+ 50, 537, 538, 539, 106, 287, 5041, 3431, 3287, 282,
+ 208, 3435, 318, 208, 364, 2808, 772, 106, 154, 2812,
+ 3190, 3191, 3598, 315, 6293, 6294, 510, 3504, 784, 3598,
+ 786, 168, 2825, 65, 208, 315, 173, 2635, 315, 208,
+ 33, 119, 784, 258, 3521, 123, 740, 1316, 41, 127,
+ 561, 448, 707, 450, 178, 710, 249, 50, 784, 3419,
+ 33, 2659, 6331, 2852, 315, 2663, 3345, 783, 41, 206,
+ 2852, 3431, 81, 617, 152, 3435, 40, 50, 50, 1338,
+ 355, 45, 737, 1054, 277, 1344, 1345, 784, 497, 315,
+ 168, 746, 299, 604, 208, 173, 343, 5280, 448, 33,
+ 450, 315, 1073, 1074, 208, 2438, 783, 41, 5291, 2442,
+ 784, 771, 772, 6133, 687, 417, 50, 315, 2911, 2912,
+ 315, 784, 695, 786, 399, 2918, 401, 700, 206, 2922,
+ 2923, 36, 5125, 789, 28, 40, 30, 5130, 147, 208,
+ 45, 315, 2935, 540, 2937, 141, 315, 2940, 2941, 158,
+ 47, 208, 2931, 3432, 208, 3434, 2931, 166, 208, 19,
+ 20, 57, 2931, 5490, 749, 2931, 959, 960, 128, 962,
+ 963, 964, 2965, 2966, 784, 71, 969, 73, 2971, 6346,
+ 6347, 40, 3654, 3655, 193, 3654, 3655, 2980, 4211, 4341,
+ 540, 50, 784, 2986, 19, 20, 55, 4557, 670, 2978,
+ 4900, 315, 2931, 747, 18, 19, 20, 3964, 617, 106,
+ 2989, 315, 4341, 757, 292, 208, 491, 614, 670, 88,
+ 3013, 24, 25, 3000, 128, 28, 40, 30, 281, 32,
+ 3654, 3655, 2055, 2056, 4257, 208, 3029, 5057, 784, 53,
+ 249, 6063, 6064, 3036, 3037, 3038, 315, 460, 101, 753,
+ 754, 784, 756, 47, 758, 766, 767, 768, 315, 73,
+ 4200, 315, 4202, 71, 614, 315, 541, 3788, 277, 789,
+ 790, 3792, 784, 3066, 208, 24, 3688, 790, 4218, 28,
+ 3073, 30, 3061, 32, 3077, 99, 43, 3925, 96, 145,
+ 283, 5650, 151, 662, 3654, 3655, 3075, 150, 784, 307,
+ 786, 109, 310, 3558, 4215, 145, 5019, 101, 167, 4464,
+ 3103, 68, 145, 588, 3107, 3108, 3109, 125, 3111, 144,
+ 77, 784, 315, 786, 40, 3118, 3119, 3120, 1429, 57,
+ 3123, 1432, 1433, 2931, 50, 312, 3129, 196, 747, 55,
+ 127, 98, 315, 71, 4167, 73, 160, 155, 757, 791,
+ 23, 3144, 736, 26, 27, 3148, 150, 226, 31, 3152,
+ 3153, 18, 19, 20, 791, 120, 123, 264, 784, 266,
+ 127, 196, 4485, 130, 4487, 281, 3768, 311, 214, 238,
+ 277, 315, 196, 40, 141, 33, 784, 201, 786, 203,
+ 226, 657, 784, 41, 786, 436, 293, 746, 783, 268,
+ 157, 254, 50, 678, 268, 53, 24, 25, 165, 3188,
+ 28, 225, 30, 3825, 32, 114, 3209, 3196, 790, 214,
+ 177, 5241, 3215, 3999, 4000, 5608, 234, 702, 113, 114,
+ 115, 226, 268, 287, 5844, 151, 786, 784, 23, 786,
+ 577, 26, 27, 296, 201, 341, 31, 3310, 3311, 470,
+ 786, 167, 305, 289, 128, 3324, 3925, 3978, 784, 5348,
+ 254, 314, 784, 359, 786, 784, 790, 786, 3261, 338,
+ 366, 141, 151, 5781, 299, 328, 3269, 24, 25, 293,
+ 196, 28, 647, 30, 241, 32, 281, 295, 324, 246,
+ 247, 784, 784, 786, 3287, 391, 784, 606, 786, 577,
+ 783, 3925, 296, 160, 784, 475, 4661, 784, 584, 783,
+ 40, 305, 706, 33, 5293, 784, 784, 786, 786, 3798,
+ 314, 41, 238, 3944, 580, 55, 3301, 783, 783, 324,
+ 50, 3324, 346, 784, 328, 3301, 4352, 4353, 783, 196,
+ 4356, 4357, 333, 3336, 413, 3338, 4362, 4363, 737, 5369,
+ 203, 3344, 3345, 3346, 3833, 3834, 313, 5270, 784, 333,
+ 208, 386, 6438, 333, 3357, 3925, 411, 436, 225, 551,
+ 784, 88, 386, 287, 18, 19, 20, 474, 306, 307,
+ 3301, 784, 784, 786, 786, 784, 784, 786, 203, 784,
+ 3869, 19, 20, 783, 463, 352, 40, 283, 4174, 4175,
+ 436, 409, 410, 24, 786, 4174, 4175, 28, 128, 30,
+ 784, 32, 784, 341, 786, 784, 784, 374, 786, 790,
+ 784, 151, 786, 5806, 360, 427, 33, 5649, 784, 73,
+ 786, 359, 783, 478, 41, 4658, 293, 167, 366, 3432,
+ 3419, 3434, 783, 50, 3419, 783, 40, 3413, 3414, 3415,
+ 3419, 465, 4129, 3419, 33, 99, 3431, 15, 783, 4976,
+ 3435, 783, 41, 391, 783, 3431, 196, 315, 463, 3435,
+ 784, 50, 497, 3843, 3844, 783, 3846, 3847, 5714, 740,
+ 784, 495, 783, 783, 3413, 3414, 3415, 444, 208, 784,
+ 3419, 786, 3413, 3414, 3415, 4635, 4636, 214, 784, 544,
+ 786, 546, 783, 3301, 4280, 740, 784, 552, 238, 226,
+ 3431, 4280, 783, 783, 3435, 784, 160, 145, 24, 25,
+ 26, 128, 28, 783, 30, 5813, 32, 784, 4958, 386,
+ 784, 5819, 5820, 5622, 784, 784, 784, 786, 786, 784,
+ 4152, 786, 3535, 5632, 784, 784, 786, 786, 33, 128,
+ 558, 559, 196, 784, 783, 786, 41, 201, 784, 203,
+ 786, 783, 75, 4976, 281, 50, 160, 612, 783, 3558,
+ 3552, 3564, 289, 783, 533, 534, 3558, 786, 537, 538,
+ 539, 225, 783, 88, 681, 682, 683, 684, 783, 658,
+ 4311, 4312, 617, 662, 784, 315, 786, 783, 783, 3592,
+ 40, 208, 196, 617, 3597, 3598, 33, 324, 4960, 73,
+ 784, 656, 786, 126, 41, 3413, 3414, 3415, 677, 5566,
+ 2501, 3419, 4762, 50, 129, 582, 783, 783, 5648, 208,
+ 783, 225, 145, 3431, 3627, 3698, 732, 3435, 495, 2520,
+ 145, 38, 784, 128, 786, 783, 660, 160, 2529, 293,
+ 783, 783, 783, 3642, 2535, 783, 5635, 3650, 783, 3652,
+ 3642, 784, 2543, 786, 784, 105, 786, 3642, 737, 784,
+ 783, 786, 2553, 3642, 783, 2556, 3642, 746, 81, 3654,
+ 3655, 3642, 3642, 3642, 3747, 3654, 3655, 213, 3654, 3655,
+ 3642, 3684, 3642, 3642, 3654, 3655, 3642, 4289, 3642, 293,
+ 725, 783, 346, 3696, 217, 783, 751, 6234, 315, 784,
+ 718, 786, 225, 3642, 784, 783, 786, 762, 784, 436,
+ 786, 3642, 747, 208, 213, 3654, 3655, 784, 783, 786,
+ 783, 5751, 757, 3654, 3655, 783, 315, 33, 784, 783,
+ 786, 755, 386, 757, 147, 41, 463, 391, 783, 31,
+ 784, 191, 786, 783, 50, 158, 196, 262, 386, 783,
+ 617, 677, 784, 166, 786, 393, 3745, 784, 784, 786,
+ 786, 351, 352, 783, 783, 3768, 281, 784, 783, 786,
+ 408, 208, 72, 3776, 784, 75, 786, 783, 293, 783,
+ 193, 231, 386, 213, 784, 3788, 786, 5776, 6086, 3792,
+ 203, 784, 430, 786, 732, 3798, 783, 783, 388, 72,
+ 783, 783, 75, 3806, 783, 783, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 5916, 268, 786,
+ 315, 127, 784, 338, 786, 783, 126, 783, 783, 129,
+ 3833, 3834, 213, 784, 3642, 786, 249, 427, 783, 783,
+ 4626, 495, 784, 783, 786, 145, 283, 4626, 4535, 784,
+ 3923, 786, 4474, 126, 783, 783, 129, 754, 43, 145,
+ 160, 384, 783, 783, 277, 783, 3869, 783, 3857, 3858,
+ 3859, 3860, 145, 3862, 3863, 783, 33, 5984, 315, 783,
+ 783, 4560, 3885, 68, 41, 783, 299, 160, 755, 783,
+ 757, 495, 77, 50, 15, 783, 53, 535, 413, 24,
+ 25, 26, 208, 28, 783, 30, 122, 32, 783, 4596,
+ 548, 3900, 3901, 98, 3903, 33, 3905, 3906, 3907, 3908,
+ 3909, 3910, 3911, 41, 3913, 225, 4560, 565, 3917, 783,
+ 783, 658, 50, 783, 783, 53, 386, 677, 123, 783,
+ 3925, 783, 127, 783, 217, 130, 783, 783, 398, 3925,
+ 791, 15, 225, 783, 783, 3958, 141, 766, 584, 3944,
+ 75, 203, 262, 617, 786, 3944, 128, 203, 3944, 5926,
+ 33, 258, 157, 786, 670, 3978, 460, 783, 41, 617,
+ 165, 690, 127, 515, 516, 201, 690, 50, 706, 262,
+ 4560, 676, 177, 293, 3925, 3998, 3999, 4000, 530, 510,
+ 532, 4004, 429, 143, 786, 3944, 660, 177, 786, 315,
+ 737, 126, 602, 3944, 4017, 22, 201, 24, 25, 746,
+ 293, 28, 29, 30, 31, 786, 582, 360, 6421, 619,
+ 145, 18, 19, 20, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 160, 127, 786, 498, 394,
+ 4026, 208, 786, 40, 692, 645, 241, 786, 2537, 579,
+ 701, 246, 247, 6020, 766, 128, 7, 55, 746, 707,
+ 463, 594, 463, 6305, 290, 783, 10, 5517, 5518, 786,
+ 5520, 217, 31, 136, 384, 296, 73, 4026, 119, 88,
+ 208, 151, 123, 625, 626, 4026, 127, 65, 688, 393,
+ 386, 755, 42, 757, 42, 408, 3, 393, 6065, 4112,
+ 225, 384, 99, 583, 746, 791, 311, 3925, 568, 757,
+ 427, 152, 408, 783, 783, 224, 391, 783, 313, 644,
+ 783, 783, 15, 791, 122, 783, 3944, 168, 513, 6169,
+ 515, 516, 173, 658, 430, 208, 145, 662, 4782, 127,
+ 4153, 127, 352, 790, 790, 530, 2635, 532, 315, 54,
+ 127, 786, 791, 120, 4167, 643, 4169, 352, 791, 177,
+ 182, 4174, 4175, 160, 4177, 206, 706, 4180, 4181, 784,
+ 2659, 704, 333, 647, 2663, 333, 333, 6176, 4177, 374,
+ 141, 506, 44, 1001, 410, 710, 561, 315, 311, 4821,
+ 128, 154, 311, 783, 177, 6437, 790, 786, 791, 196,
+ 783, 47, 4782, 201, 201, 214, 203, 427, 4026, 784,
+ 784, 106, 737, 786, 5374, 336, 784, 226, 648, 791,
+ 784, 5223, 5224, 4236, 5226, 4227, 4228, 784, 225, 5231,
+ 1048, 127, 5234, 127, 784, 5237, 5238, 784, 791, 535,
+ 625, 626, 315, 5245, 783, 5247, 167, 783, 136, 444,
+ 287, 292, 548, 127, 5256, 786, 773, 786, 73, 384,
+ 127, 690, 786, 791, 6304, 4278, 773, 4280, 151, 565,
+ 4283, 4284, 5722, 490, 5724, 5725, 4289, 18, 19, 20,
+ 289, 4893, 703, 451, 594, 127, 786, 435, 690, 127,
+ 786, 784, 290, 4292, 679, 680, 293, 783, 4311, 4312,
+ 783, 4931, 154, 427, 3, 4318, 1124, 4396, 33, 786,
+ 6309, 594, 151, 217, 363, 324, 41, 239, 510, 510,
+ 510, 510, 360, 510, 6291, 50, 510, 786, 786, 120,
+ 71, 766, 73, 287, 676, 47, 4835, 127, 360, 4729,
+ 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 346,
+ 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747, 99, 4749,
+ 4750, 673, 596, 4753, 4754, 746, 6406, 92, 93, 94,
+ 95, 784, 4461, 784, 784, 784, 784, 158, 158, 210,
+ 6420, 786, 65, 783, 406, 791, 6426, 582, 137, 386,
+ 251, 439, 791, 6433, 704, 664, 692, 418, 480, 92,
+ 93, 94, 95, 783, 145, 403, 784, 786, 480, 1227,
+ 595, 707, 410, 138, 139, 140, 786, 283, 68, 783,
+ 310, 704, 736, 391, 310, 237, 57, 436, 4441, 30,
+ 222, 705, 128, 206, 203, 786, 43, 786, 783, 287,
+ 146, 154, 2931, 649, 42, 138, 139, 140, 4461, 784,
+ 784, 784, 427, 4466, 463, 784, 784, 784, 773, 128,
+ 784, 68, 484, 772, 189, 190, 4856, 786, 786, 594,
+ 77, 4861, 783, 217, 215, 378, 784, 784, 784, 784,
+ 591, 784, 783, 208, 784, 784, 784, 4489, 783, 715,
+ 4503, 98, 718, 5096, 784, 784, 189, 190, 495, 1317,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 127, 688, 676, 315, 704, 208, 3188, 3189, 429,
- 160, 752, 510, 143, 782, 177, 782, 782, 636, 3744,
- 582, 716, 4594, 55, 241, 18, 19, 20, 360, 246,
- 247, 4558, 119, 127, 217, 782, 123, 394, 782, 782,
- 127, 4558, 225, 225, 645, 579, 196, 40, 699, 763,
- 7, 201, 3921, 203, 3921, 2500, 743, 5894, 463, 660,
- 53, 3954, 752, 463, 779, 152, 208, 6162, 686, 677,
- 10, 3940, 782, 3940, 2519, 225, 217, 31, 145, 3940,
- 73, 168, 3975, 2528, 6390, 136, 173, 296, 151, 2534,
- 122, 65, 22, 694, 24, 25, 313, 2542, 28, 29,
- 30, 31, 3995, 3996, 3997, 677, 99, 2552, 4001, 3940,
- 2555, 393, 408, 315, 42, 474, 42, 3, 743, 206,
- 3921, 4014, 583, 787, 311, 427, 779, 779, 3853, 3854,
- 3855, 3856, 224, 3858, 3859, 352, 391, 779, 779, 3940,
- 779, 6273, 33, 293, 15, 779, 127, 411, 127, 787,
- 41, 786, 54, 5990, 352, 786, 4023, 374, 127, 50,
- 81, 782, 53, 5482, 5483, 787, 5485, 160, 120, 201,
- 787, 3896, 3897, 315, 3899, 177, 3901, 3902, 3903, 3904,
- 3905, 3906, 3907, 643, 3909, 704, 780, 333, 3913, 333,
- 333, 141, 4023, 506, 44, 311, 346, 561, 6035, 128,
- 311, 384, 384, 196, 779, 292, 154, 177, 201, 786,
- 203, 40, 386, 782, 478, 779, 4109, 6137, 106, 393,
- 787, 47, 4023, 427, 336, 780, 147, 444, 780, 782,
- 787, 780, 225, 780, 408, 780, 386, 158, 648, 780,
- 127, 391, 127, 780, 3921, 166, 779, 787, 167, 779,
- 851, 782, 136, 287, 782, 856, 430, 4150, 290, 127,
- 770, 73, 787, 3940, 782, 688, 127, 19, 20, 151,
- 6144, 4164, 193, 4166, 6406, 876, 105, 770, 4171, 4172,
- 544, 4174, 546, 490, 4177, 4178, 701, 451, 552, 127,
- 782, 688, 127, 4811, 780, 435, 779, 782, 779, 154,
- 293, 217, 427, 3, 151, 57, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 208, 782, 386,
- 679, 680, 681, 682, 363, 239, 393, 360, 249, 510,
- 510, 510, 510, 510, 510, 782, 782, 763, 120, 676,
- 4233, 408, 287, 47, 127, 495, 4023, 673, 612, 4224,
- 4225, 596, 6272, 346, 955, 956, 277, 958, 959, 960,
- 743, 535, 191, 430, 965, 582, 5685, 196, 5687, 5688,
- 4825, 403, 780, 780, 548, 81, 780, 780, 410, 81,
- 158, 780, 4275, 158, 4277, 210, 779, 4280, 4281, 787,
- 782, 565, 656, 386, 65, 5338, 137, 439, 251, 787,
- 418, 4294, 231, 6277, 664, 779, 122, 480, 4883, 480,
- 782, 594, 594, 250, 780, 782, 4309, 4310, 6255, 283,
- 595, 68, 81, 4316, 315, 734, 4394, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 779, 268,
- 310, 147, 391, 310, 237, 147, 57, 30, 782, 4174,
- 703, 72, 158, 222, 75, 6375, 158, 206, 128, 203,
- 166, 782, 782, 779, 166, 287, 63, 146, 535, 6389,
- 154, 42, 465, 780, 780, 6395, 649, 780, 128, 780,
- 427, 548, 6402, 770, 748, 201, 780, 193, 147, 4457,
- 577, 193, 780, 769, 780, 759, 779, 203, 565, 158,
- 780, 203, 495, 6, 7, 126, 780, 166, 129, 780,
- 660, 5080, 780, 780, 780, 18, 690, 780, 270, 702,
- 702, 780, 780, 780, 145, 362, 780, 122, 780, 281,
- 779, 705, 782, 370, 193, 782, 780, 780, 780, 160,
- 779, 782, 782, 249, 203, 782, 4439, 249, 385, 780,
- 53, 780, 787, 780, 780, 779, 217, 386, 395, 396,
- 397, 773, 4287, 779, 4457, 782, 779, 4460, 405, 398,
- 4463, 277, 780, 779, 290, 277, 779, 378, 81, 591,
- 31, 31, 31, 4472, 427, 782, 131, 128, 782, 782,
- 249, 763, 787, 299, 127, 5122, 217, 4472, 4472, 787,
- 127, 787, 752, 504, 225, 5122, 201, 128, 4501, 88,
- 5065, 782, 4487, 782, 782, 5184, 119, 787, 277, 782,
- 123, 780, 613, 690, 127, 258, 780, 782, 53, 5199,
- 782, 100, 47, 136, 137, 5375, 365, 127, 705, 670,
- 143, 262, 576, 782, 147, 782, 5101, 19, 20, 152,
- 158, 154, 158, 750, 439, 158, 507, 549, 3839, 3840,
- 123, 3842, 3843, 166, 416, 168, 145, 660, 557, 498,
- 173, 779, 293, 657, 268, 268, 268, 268, 430, 268,
- 432, 713, 4575, 314, 716, 57, 203, 127, 779, 4558,
- 193, 4558, 156, 725, 410, 290, 734, 763, 763, 763,
- 203, 763, 763, 206, 763, 763, 543, 763, 763, 763,
- 763, 1312, 464, 763, 4607, 763, 763, 763, 555, 763,
- 763, 317, 763, 226, 427, 477, 763, 4620, 763, 295,
- 787, 4624, 299, 763, 4627, 214, 763, 763, 763, 568,
- 763, 763, 245, 576, 780, 168, 249, 226, 34, 333,
- 287, 780, 780, 287, 755, 258, 780, 4558, 510, 752,
- 5202, 782, 392, 384, 4657, 782, 506, 787, 787, 782,
- 154, 787, 427, 4666, 277, 780, 528, 153, 4667, 153,
- 787, 780, 780, 780, 780, 4678, 213, 787, 780, 292,
- 65, 769, 787, 769, 780, 298, 299, 4672, 780, 782,
- 5369, 4764, 5375, 640, 5373, 5374, 779, 779, 403, 312,
- 289, 314, 338, 287, 697, 410, 287, 241, 655, 584,
- 4713, 128, 128, 787, 787, 492, 4719, 232, 779, 30,
- 4723, 769, 321, 779, 733, 545, 780, 779, 763, 782,
- 779, 763, 203, 126, 203, 786, 782, 333, 5375, 203,
- 287, 50, 712, 4746, 606, 158, 693, 158, 5375, 782,
- 780, 613, 408, 31, 408, 31, 31, 240, 53, 283,
- 707, 623, 72, 779, 779, 75, 779, 30, 30, 5729,
- 461, 4558, 4607, 787, 177, 637, 780, 245, 6, 7,
- 770, 584, 770, 143, 5467, 352, 155, 787, 270, 95,
- 18, 155, 4627, 4796, 780, 780, 780, 780, 30, 206,
- 787, 780, 4805, 5440, 779, 153, 33, 669, 780, 782,
- 672, 780, 780, 5440, 41, 782, 126, 65, 780, 129,
- 128, 780, 4825, 50, 780, 53, 688, 779, 31, 780,
- 5467, 31, 763, 779, 232, 145, 177, 779, 782, 780,
- 5467, 311, 704, 232, 782, 779, 459, 436, 734, 779,
- 160, 203, 690, 81, 554, 690, 408, 719, 779, 779,
- 299, 299, 779, 594, 378, 92, 93, 94, 95, 53,
- 4873, 780, 782, 31, 463, 782, 208, 446, 287, 53,
- 4883, 212, 780, 439, 251, 4888, 131, 713, 502, 780,
- 716, 119, 65, 256, 168, 123, 780, 780, 504, 127,
- 314, 643, 206, 65, 782, 4890, 4909, 780, 136, 137,
- 780, 138, 139, 140, 782, 225, 347, 169, 217, 147,
- 780, 782, 780, 780, 152, 6354, 154, 314, 780, 447,
- 158, 173, 779, 763, 416, 4920, 4920, 782, 166, 754,
- 168, 167, 741, 418, 5509, 173, 418, 217, 430, 203,
- 432, 5630, 262, 53, 247, 780, 250, 4934, 676, 247,
- 299, 299, 189, 190, 577, 193, 170, 30, 5046, 30,
- 779, 702, 593, 217, 384, 203, 217, 217, 206, 65,
- 217, 208, 464, 293, 159, 705, 217, 159, 4823, 705,
- 592, 603, 217, 4934, 217, 477, 217, 217, 226, 252,
- 5003, 203, 203, 386, 485, 128, 439, 584, 713, 314,
- 203, 716, 154, 602, 780, 427, 780, 245, 780, 498,
- 725, 249, 549, 4934, 155, 613, 253, 71, 510, 780,
- 258, 780, 782, 65, 780, 780, 406, 50, 782, 787,
- 5043, 5669, 780, 5046, 780, 782, 528, 779, 787, 277,
- 6103, 5054, 5130, 779, 779, 644, 427, 5042, 5042, 654,
- 53, 780, 5065, 31, 292, 5068, 378, 5070, 362, 779,
- 779, 299, 117, 662, 384, 65, 370, 65, 65, 30,
- 446, 779, 5085, 741, 312, 331, 314, 141, 315, 316,
- 160, 385, 741, 225, 390, 422, 314, 669, 5101, 424,
- 281, 395, 396, 397, 782, 780, 549, 780, 445, 780,
- 685, 405, 779, 782, 5797, 780, 419, 779, 5121, 708,
- 583, 160, 779, 160, 606, 236, 5129, 779, 53, 782,
- 780, 613, 105, 779, 5137, 780, 203, 750, 786, 780,
- 779, 623, 782, 5122, 786, 5122, 735, 4934, 786, 127,
- 763, 65, 65, 65, 743, 637, 31, 127, 287, 160,
- 5797, 411, 127, 782, 314, 287, 5194, 780, 6221, 782,
- 5797, 780, 785, 786, 674, 782, 584, 780, 601, 780,
- 5183, 5209, 5819, 649, 411, 440, 601, 669, 779, 787,
- 672, 5219, 5819, 5196, 5197, 5198, 367, 779, 5226, 779,
- 5228, 5229, 299, 779, 787, 5208, 688, 5210, 72, 787,
- 780, 5122, 120, 120, 5217, 5218, 281, 73, 287, 287,
- 5223, 721, 281, 287, 685, 584, 5061, 5230, 72, 72,
- 15, 160, 5235, 50, 5953, 780, 696, 719, 711, 30,
- 782, 782, 780, 779, 18, 65, 786, 5250, 779, 543,
- 65, 478, 218, 779, 786, 144, 217, 99, 99, 428,
- 6, 555, 5097, 5098, 584, 584, 723, 296, 649, 779,
- 418, 418, 5107, 779, 430, 780, 5995, 780, 782, 180,
- 779, 779, 779, 160, 594, 741, 5121, 160, 296, 5854,
- 201, 339, 99, 53, 427, 154, 702, 5274, 697, 779,
- 589, 203, 780, 779, 5139, 779, 426, 198, 737, 247,
- 352, 127, 779, 422, 779, 207, 173, 544, 5321, 546,
- 779, 338, 780, 218, 779, 552, 585, 780, 779, 779,
- 5333, 5334, 780, 5274, 251, 5122, 782, 6017, 838, 5342,
- 782, 480, 203, 780, 780, 6398, 332, 427, 5351, 577,
- 203, 5354, 5355, 780, 112, 203, 5359, 65, 780, 296,
- 5363, 655, 101, 5274, 649, 203, 203, 143, 5371, 116,
- 432, 30, 258, 5376, 779, 3641, 3053, 3915, 782, 5257,
- 5255, 5253, 3763, 6102, 5781, 612, 4372, 5952, 5462, 5821,
- 5979, 6209, 702, 2133, 774, 5137, 5375, 1469, 5375, 693,
- 3940, 4446, 3924, 5046, 4457, 2558, 2121, 3074, 4242, 5244,
- 4013, 3991, 2467, 707, 840, 2663, 5652, 5651, 5496, 2664,
- 5498, 5421, 4872, 2665, 4393, 5525, 4616, 5317, 4620, 656,
- 6023, 2901, 6392, 4724, 4725, 4726, 4727, 4728, 4729, 4730,
- 4731, 4732, 4733, 5003, 4735, 4736, 4737, 4738, 4739, 4740,
- 4741, 4742, 4743, 4744, 5599, 6139, 4747, 4748, 6277, 6234,
- 5907, 5440, 5597, 5440, 5375, 3185, 1457, 4867, 5191, 5497,
- 5803, 6036, 5475, 5499, 5477, 5235, 5363, 4873, 5079, 6102,
- 6258, 6092, 5995, 5984, 5984, 5984, 5984, 5274, 5467, 4555,
- 5467, 43, 4508, 6105, 4033, 6017, 1621, 997, 2502, 5502,
- 5503, 5504, 5505, 4112, 3317, 4583, 5509, 5510, 4578, 5512,
- 4586, 6283, 491, 1013, 5517, 5518, 68, 1017, 5521, 491,
- 6252, 748, 750, 5526, 5527, 77, 6253, 5788, 3755, 5440,
- 5533, 5534, 759, 5536, 6048, 763, 92, 93, 94, 95,
- 1040, 5544, 6060, 5378, 1044, 6064, 98, 5698, 2527, 1049,
- 5495, 4278, 780, 4872, 782, 4846, 5467, 785, 786, 5394,
- 4851, 5564, 5493, 5232, 1885, 1478, 5866, 2317, 3743, 3738,
- 5573, 123, 3213, 6014, 5702, 127, 2484, 4001, 130, 3591,
- 6208, 3042, 138, 139, 140, 3375, 4490, 537, 5375, 141,
- 3551, 5664, 1441, 5671, 6159, 780, 3684, 1388, 1206, 5672,
- 1428, 5674, 3820, 4917, 3600, 157, 4607, 3502, 3499, 5612,
- 2055, 3569, 3568, 165, 1114, 1115, 1116, 1117, 4149, 5622,
- 1120, 2111, 4058, 5626, 4946, 177, 1987, 1127, 1956, 1977,
- 5633, 5634, 6092, 189, 190, 5638, 5639, 6211, 5983, 6316,
- 6315, 5480, 2368, 2373, 5156, 5648, 4660, 5987, 5054, 201,
- 5988, 1386, 1386, 5440, 2363, 3162, 1386, 5660, 1386, 5662,
- 1962, 5664, 1386, 5666, 2389, 4135, 5651, 6232, 3807, 5672,
- 4805, 5674, 4133, 5676, 4804, 5884, 5714, 5312, 5029, 3823,
- 5467, 5308, 4947, 3816, 5329, 786, 1419, 4566, 1449, 241,
- 4811, 509, 491, 3156, 246, 247, 3331, 253, 5701, 703,
- 2628, 4487, 1296, 3368, 5707, 4672, 5709, 5612, 3850, 4659,
- 5060, 5714, 6272, 4657, 884, 2576, 3013, 885, 5796, 694,
- 5723, 2193, 5800, 1223, 3014, 694, 3676, 1444, 3068, 5648,
- 694, 5734, 5735, 5345, 2306, 1890, 4493, 6275, 5161, 6321,
- 5489, 6395, 6402, 1001, 3365, 5818, 5819, 3033, 5333, 3418,
- 3653, 693, 3654, 2670, 2947, 3655, 3650, 5760, 693, 2644,
- 316, 313, 3646, 3645, 4183, 691, 1187, 1221, 5771, 2337,
- 4382, 3596, 4923, 3207, 5777, 6403, 4825, 2133, 1878, 1878,
- 3758, 5569, 5785, 4394, 5787, 734, 1330, 515, 491, 491,
- 491, 970, 4484, 2666, 4016, 5973, 5087, 989, 5801, 4676,
- 352, 5974, 6203, 970, 4291, 5431, 5440, 3764, 5099, 1309,
- 5440, 5432, 5469, 1313, 6379, 5818, 5447, -1, 5797, 6384,
- 5797, 876, 374, 989, -1, 2536, -1, 1816, -1, -1,
- 5858, -1, -1, -1, -1, -1, -1, -1, -1, 5842,
- 5819, -1, 5819, -1, -1, 43, -1, -1, 5819, 5852,
- -1, 5854, -1, -1, -1, 411, -1, 5860, 5861, 5862,
- -1, -1, -1, -1, -1, -1, 5944, -1, -1, -1,
- 68, -1, -1, -1, -1, -1, -1, -1, 5819, 77,
- -1, -1, -1, 5961, 108, -1, 5797, -1, -1, -1,
- -1, -1, 444, -1, -1, -1, -1, -1, -1, -1,
- 98, -1, -1, -1, -1, -1, -1, -1, 5819, -1,
- -1, -1, -1, -1, 1414, 5918, -1, 1417, 142, -1,
- 5923, -1, 478, -1, -1, 123, 5929, -1, 2639, 127,
- -1, -1, 130, -1, -1, -1, -1, -1, -1, 997,
- -1, -1, -1, 141, -1, -1, -1, -1, -1, 5952,
- 1450, -1, 2663, -1, -1, 179, 2667, -1, -1, 157,
- -1, -1, -1, -1, -1, -1, -1, 165, -1, -1,
- -1, -1, -1, -1, -1, 5978, -1, -1, -1, 177,
- 5983, -1, -1, -1, 5987, 5988, 1044, 1487, 544, -1,
- 546, -1, -1, -1, -1, -1, 552, -1, -1, -1,
- -1, -1, -1, 201, -1, -1, -1, -1, -1, -1,
- 5797, 6014, -1, -1, -1, -1, -1, -1, -1, -1,
- 6023, -1, -1, -1, -1, -1, -1, 6105, -1, -1,
- 582, -1, 5819, 6036, -1, -1, 6109, -1, -1, -1,
- -1, -1, -1, 241, -1, -1, -1, -1, 246, 247,
- -1, -1, -1, -1, -1, -1, 612, -1, -1, -1,
- -1, -1, 1120, -1, -1, 6068, -1, -1, -1, -1,
- -1, -1, -1, 6076, -1, 6078, 6079, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 6,
- 7, -1, -1, 6092, -1, -1, -1, -1, -1, -1,
- 656, 18, -1, -1, 5939, -1, 6109, 6092, -1, -1,
- -1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
- -1, -1, -1, 6201, -1, -1, -1, 6205, -1, 6202,
- 6203, -1, -1, -1, 6137, -1, 53, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 352, -1, 6159, -1, -1, -1,
- -1, -1, -1, -1, 81, 1223, -1, -1, -1, -1,
- -1, -1, -1, -1, 6177, 6178, 374, -1, 6181, 6257,
- 6258, 733, -1, -1, -1, 6188, -1, -1, -1, -1,
- -1, -1, 748, -1, -1, 6030, 6031, -1, -1, 6202,
- 6203, -1, 119, 759, -1, -1, 123, 6042, -1, -1,
- 127, -1, -1, -1, -1, -1, -1, -1, -1, 136,
- 137, 6299, -1, -1, 2935, -1, -1, -1, 6306, 6232,
- 147, -1, -1, -1, -1, 152, -1, 154, -1, -1,
- -1, 158, -1, 6246, -1, -1, 444, -1, -1, 166,
- -1, 168, -1, -1, -1, 1313, 173, 481, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 6272,
- -1, -1, -1, -1, -1, -1, 193, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 203, 511, 512, 206,
- 514, 515, 516, 517, 518, -1, 520, 521, 522, 523,
- 524, 525, 526, 527, -1, 529, 530, 531, 532, 226,
- -1, -1, -1, 6148, -1, -1, 6151, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 245, -1,
- -1, -1, 249, -1, -1, -1, -1, -1, -1, -1,
- -1, 258, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1414, 3068, -1, 1417,
- 277, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 6375, -1, -1, 292, 6379, -1, -1, 1879,
- -1, 6384, 299, -1, 582, -1, 6389, -1, 1888, -1,
- 1890, -1, 6395, -1, -1, 312, -1, 314, -1, 6402,
- -1, 625, 626, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1949,
- 1950, -1, -1, -1, -1, 1955, -1, -1, -1, 1959,
- 1960, 1961, -1, -1, -1, -1, -1, -1, -1, 1969,
- 1970, 1971, -1, -1, -1, 1975, -1, -1, -1, 1979,
- 1980, 1981, -1, 1983, 1984, 1985, 1986, 1987, -1, -1,
- -1, -1, -1, 1993, -1, 1995, -1, -1, 1998, 1999,
- 2000, 2001, -1, 2003, -1, 2005, 2006, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 2019,
- 2020, 2021, 2022, 2023, -1, 2025, 2026, 2027, 2028, 2029,
- 2030, -1, 2032, 2033, -1, 2035, 2036, -1, 2038, 2039,
- -1, -1, 2042, 2043, -1, 2045, 2046, -1, 2048, -1,
- 2050, -1, -1, -1, 2054, 2055, 2056, -1, -1, 2059,
- 2060, 2061, 2062, -1, 2064, -1, -1, -1, -1, -1,
- -1, 2071, -1, 18, 19, 20, -1, 2077, 2078, 2079,
- 2080, -1, -1, -1, -1, -1, -1, 3298, 2088, 2089,
- -1, 2091, 2092, -1, -1, 2095, 2096, 2097, 2098, 2099,
- 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 5899, 5900,
- 2110, 5902, 5903, 5904, 5905, 2115, -1, -1, -1, -1,
- -1, -1, 2122, -1, -1, -1, 71, -1, 73, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2145, -1, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
- 577, -1, -1, 2163, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 6, 7,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 18, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- 145, 3412, 3413, 3414, -1, -1, -1, 3418, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 46, 3430,
- 48, 49, -1, 3434, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 6029, -1,
- -1, 6032, 70, -1, 72, -1, -1, -1, -1, 6040,
- 78, -1, 6043, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2262, -1, 2264, -1, -1, -1, -1, -1,
- 215, 99, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 110, -1, -1, -1, -1, -1, 2288, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 2299,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 145, -1, -1,
- -1, 1879, -1, -1, -1, -1, -1, 272, 273, 274,
- -1, -1, -1, 750, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 173, 763, 292, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 780, -1, 782, -1, -1, 785, 786,
- -1, -1, -1, -1, -1, -1, 204, -1, 206, -1,
- -1, -1, -1, -1, -1, -1, 2386, 215, -1, 217,
- -1, -1, 2392, -1, 2394, -1, -1, -1, -1, -1,
- -1, 346, -1, 348, -1, -1, -1, -1, -1, -1,
- -1, -1, 240, 1971, 2414, -1, -1, -1, -1, -1,
- -1, 366, 2422, 368, -1, -1, -1, -1, 1986, 1987,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 386, -1, -1, 272, 273, 274, -1, 393, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 408, 292, -1, -1, -1, -1, -1,
- 415, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 430, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 43, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 338, -1, -1, -1, -1, -1, -1, -1, 346, -1,
- 348, -1, -1, 68, -1, -1, -1, -1, -1, -1,
- -1, -1, 77, -1, -1, -1, -1, -1, -1, -1,
- 368, -1, 487, -1, -1, -1, -1, 375, -1, -1,
- -1, -1, 497, 98, -1, -1, -1, 2115, 386, -1,
- -1, -1, -1, -1, 2122, 393, -1, -1, 113, 114,
- 115, -1, -1, -1, -1, -1, -1, -1, 123, -1,
- 408, -1, 127, -1, -1, 130, -1, 415, -1, -1,
- 535, 419, 420, -1, -1, -1, 141, -1, 426, -1,
- -1, -1, 430, 548, -1, 2163, -1, -1, -1, -1,
- 438, -1, 157, -1, -1, -1, -1, -1, -1, -1,
- 165, -1, -1, -1, -1, -1, -1, -1, -1, 2629,
- -1, 459, 177, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 587, -1, -1, -1, -1, -1, 593, -1,
- -1, -1, -1, -1, -1, 483, 201, -1, -1, 487,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 497,
- -1, -1, -1, 2673, 2674, -1, -1, -1, -1, -1,
- -1, -1, 2682, 2683, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
- -1, 246, 247, -1, -1, -1, 651, 535, -1, 11,
- 3921, 13, -1, 658, -1, -1, 18, 19, 20, -1,
- 548, -1, 550, -1, -1, -1, -1, -1, -1, 3940,
- 2288, -1, -1, -1, -1, -1, 2736, -1, -1, -1,
- -1, -1, -1, -1, -1, 690, -1, 2747, 2748, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 587,
- 705, 706, -1, -1, -1, 593, 311, -1, 313, 71,
- 43, 73, -1, 718, -1, -1, -1, -1, -1, 2779,
- 2780, 2781, -1, -1, -1, -1, -1, -1, -1, -1,
- 618, -1, -1, -1, -1, 68, -1, 99, -1, -1,
- -1, 629, 630, 631, 77, -1, -1, 352, -1, -1,
- -1, -1, 4023, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 651, -1, 98, -1, -1, 2828, 374,
- 658, -1, -1, -1, 2392, -1, 2394, 782, 2838, -1,
- -1, 2841, -1, 145, -1, -1, -1, -1, -1, -1,
- 123, -1, -1, -1, 127, -1, 2856, 130, -1, -1,
- 2860, 2861, 690, 2863, 2864, 167, -1, -1, 141, -1,
- -1, -1, 2872, -1, 2874, -1, -1, 705, 706, -1,
- -1, -1, 427, -1, 157, -1, -1, -1, -1, -1,
- 718, -1, 165, -1, 722, -1, -1, -1, -1, 444,
- -1, -1, -1, -1, 177, 2905, -1, -1, -1, -1,
- -1, -1, -1, 215, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 43, 201, -1,
- -1, 2931, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2943, -1, -1, -1, 2947, -1, -1,
- -1, -1, 68, -1, -1, -1, 2956, -1, 786, -1,
- -1, 77, -1, -1, -1, -1, -1, 2967, 241, -1,
- 272, 273, 274, 246, 247, -1, -1, -1, -1, -1,
- -1, -1, 98, 2983, -1, -1, -1, -1, -1, -1,
- 292, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 674, -1, -1, -1, -1, -1, -1, 123, -1, -1,
- -1, 127, -1, -1, 130, -1, -1, -1, -1, -1,
- 3020, -1, -1, -1, -1, 141, -1, 3027, -1, -1,
- -1, -1, -1, -1, 3034, -1, -1, 582, -1, -1,
- 313, 157, -1, -1, 346, -1, 348, 721, 321, 165,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 177, -1, -1, 366, -1, 368, -1, -1, -1,
- -1, 4282, 4283, 3073, 3074, -1, -1, -1, -1, 352,
- -1, -1, -1, -1, 386, 201, -1, -1, -1, -1,
- -1, 393, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 374, -1, -1, -1, -1, 408, -1, -1, -1,
- -1, -1, -1, 415, -1, 2673, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, 3126, -1, 430, -1,
- 246, 247, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 427, -1, -1, -1, -1, 3159,
- -1, -1, -1, -1, 838, -1, -1, -1, -1, -1,
- -1, 444, 3172, -1, 3174, 3175, 3176, -1, 3178, -1,
- -1, -1, 4393, 3183, 3184, 487, -1, -1, -1, 2747,
- 2748, -1, -1, -1, -1, 497, -1, 313, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3219,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 535, -1, -1, 352, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 548, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 374, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2828, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2841, -1, 587, -1, -1, -1, -1,
- -1, 593, -1, -1, 19, 20, -1, -1, -1, -1,
- 3300, 3301, -1, -1, -1, -1, -1, -1, -1, 582,
- -1, 427, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 47, -1, 49, -1, -1, -1, 444, -1,
- -1, -1, 57, -1, -1, -1, -1, -1, -1, 1013,
- -1, -1, -1, 1017, -1, -1, 71, 4558, -1, 651,
- -1, -1, -1, -1, 79, 80, 658, -1, -1, -1,
- -1, -1, -1, -1, 89, 3365, 1040, -1, -1, -1,
- -1, -1, -1, 2931, -1, 1049, -1, -1, 103, 104,
- -1, -1, -1, -1, -1, -1, -1, -1, 690, 2947,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 705, 706, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 718, -1, -1, 3419,
- 145, -1, -1, 3423, -1, -1, 3426, -1, -1, -1,
- -1, -1, -1, -1, 159, 3435, -1, -1, -1, -1,
- 1114, 1115, 1116, 1117, 3444, -1, 3446, 3447, -1, 3449,
- 3450, 3451, 3452, 1127, 3454, -1, 3456, 3457, -1, 3459,
- -1, -1, -1, -1, -1, -1, 582, 3467, 3468, -1,
- -1, -1, 3472, 3473, 3474, -1, 3034, -1, -1, -1,
- -1, -1, 3482, 3483, 3484, -1, 3486, -1, 3488, 214,
- 3490, -1, 3492, -1, 3494, -1, -1, -1, -1, 3499,
- 3500, 226, 3502, 3503, 3504, -1, -1, -1, 3508, -1,
- -1, 3511, -1, -1, -1, 3073, 3074, -1, -1, -1,
- 3520, -1, -1, 3523, -1, 3525, 3526, 3527, -1, -1,
- 3530, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4753, -1, -1, 18, 19, 20, -1, -1,
- -1, -1, 3552, -1, 3554, -1, 281, 3557, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3567, 3568, 3569,
- 3570, 3571, 3572, 46, -1, 48, -1, 3577, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3588, -1,
- -1, -1, -1, -1, -1, -1, -1, 70, -1, 324,
- -1, -1, -1, -1, -1, 78, -1, -1, -1, -1,
- -1, -1, -1, -1, 3172, -1, 3174, 3175, 3176, 344,
- -1, -1, -1, -1, -1, 3625, 99, -1, 353, -1,
- -1, -1, -1, -1, -1, 1309, -1, 110, -1, 3639,
- -1, 366, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 377, -1, -1, 3655, 4867, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 145, -1, -1, 400, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3688, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 173, -1, -1, -1, 429, 430, -1, -1, 433, -1,
- 435, 3711, -1, 48, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4934, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 206, -1, -1, -1, 462, 463, -1,
- -1, -1, 215, 468, 469, 80, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 485, -1, -1, -1, -1, -1, 101, 240, -1, -1,
- -1, -1, -1, -1, -1, 110, 1450, -1, -1, -1,
- -1, 506, -1, 3783, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 131, -1, -1, 272,
- 273, 274, -1, 528, 3804, -1, -1, 3365, -1, -1,
- 145, -1, -1, 1487, -1, 150, 3816, -1, -1, 292,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 43, -1, -1, -1, 173, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 582, -1, 68,
- -1, -1, -1, -1, -1, 338, -1, -1, 77, -1,
- -1, -1, 597, 346, -1, 348, -1, -1, -1, -1,
- -1, 606, -1, -1, 609, 610, -1, -1, -1, 98,
- -1, -1, -1, -1, -1, 368, -1, 232, -1, 624,
- -1, 236, -1, -1, -1, -1, -1, 5118, -1, 5120,
- -1, 5122, -1, 386, 123, -1, -1, -1, 127, 254,
- 393, 130, -1, 258, 259, -1, -1, -1, -1, -1,
- -1, -1, 141, -1, -1, 408, 661, -1, -1, -1,
- -1, -1, 415, -1, 669, -1, 419, -1, 157, -1,
- -1, -1, -1, 426, 289, -1, 165, 430, -1, -1,
- -1, 296, 297, 688, -1, 690, -1, -1, 177, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3978, -1,
- -1, -1, -1, -1, -1, -1, 459, -1, -1, -1,
- 3990, -1, 201, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4011, -1, 3571, 487, 740, -1, -1, 353, -1,
- -1, 5232, 747, -1, 497, -1, 4026, -1, -1, 4029,
- 3588, -1, 241, -1, -1, -1, -1, 246, 247, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4054, 4055, -1, -1, 393, 4059,
- -1, -1, 535, 5274, -1, -1, -1, -1, 4068, -1,
- -1, -1, -1, -1, -1, 548, -1, 550, -1, -1,
- -1, 4081, -1, 4083, -1, 4085, -1, 4087, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3655, -1, -1,
- -1, 436, 4102, -1, 313, -1, 441, -1, 4108, -1,
- -1, -1, -1, -1, 587, -1, -1, 452, 453, -1,
- 593, 4121, 4122, -1, -1, -1, 4126, -1, 4128, -1,
- 4130, -1, -1, -1, -1, 4135, -1, -1, -1, -1,
- -1, -1, -1, 352, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5375, 374, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4176, -1, 651, -1,
- -1, -1, 4182, -1, -1, 658, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4196, -1, -1, -1,
- 4200, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1888, -1, 1890, 690, 4218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5440,
- -1, -1, 705, 706, -1, 444, -1, -1, -1, -1,
- -1, -1, 4242, -1, -1, 718, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5467, -1, 3816, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 607, -1, -1, 1949, 1950, -1, -1, -1,
- -1, 1955, 617, -1, -1, 1959, 1960, 1961, -1, -1,
- -1, -1, -1, 628, -1, 1969, 1970, -1, -1, 634,
- -1, 1975, -1, -1, -1, 1979, 1980, 1981, -1, 1983,
- 1984, 1985, -1, 4313, -1, -1, -1, -1, -1, 1993,
- -1, 1995, -1, 4323, 1998, 1999, 2000, 2001, -1, 2003,
- 665, 2005, 2006, -1, 669, -1, -1, 4337, -1, 4339,
- 4340, -1, -1, -1, -1, 2019, 2020, 2021, 2022, 2023,
- -1, 2025, 2026, 2027, 2028, 2029, 2030, -1, 2032, 2033,
- -1, 2035, 2036, 698, 2038, 2039, -1, -1, 2042, 2043,
- -1, 2045, 2046, 582, 2048, -1, 2050, -1, -1, -1,
- 2054, 2055, 2056, -1, -1, 2059, 2060, 2061, 2062, -1,
- 2064, -1, -1, -1, -1, -1, -1, 2071, -1, -1,
- -1, -1, -1, 2077, 2078, 2079, 2080, -1, -1, -1,
- -1, -1, -1, -1, 2088, 2089, -1, 2091, 2092, -1,
- 3978, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103,
- 2104, 2105, 2106, 2107, -1, -1, 2110, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2145, -1, 56, 57, -1, -1, -1, 61, 62,
- -1, -1, -1, -1, -1, -1, -1, -1, 71, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4068, -1, -1, 96, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 109, -1, -1, -1,
- 4530, 4531, -1, 4533, -1, -1, -1, -1, -1, -1,
- -1, -1, 125, -1, 127, -1, 4546, 4547, 4548, -1,
- 4108, -1, -1, -1, -1, -1, -1, 5768, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4570, 4571, 155, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5796, 5797, -1, 2262, 5800,
- 2264, 174, 175, 176, 4594, -1, -1, -1, -1, -1,
- -1, 184, 185, 186, -1, -1, 4606, -1, 5819, -1,
- -1, -1, -1, -1, -1, 4615, -1, -1, 4176, 202,
- -1, -1, -1, -1, -1, 2299, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4635, -1, -1, -1, -1,
- 4640, 4641, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 234, -1, -1, -1, -1, -1, -1, -1, 4659,
- -1, -1, -1, 4663, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 261, -1,
- -1, -1, -1, -1, 4242, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5907, -1, -1, -1,
- -1, 284, 285, 286, 5915, -1, -1, 43, -1, -1,
- 5921, 5922, 2386, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 306, 307, 18, 19, 20, 18, 19,
- 20, -1, 68, 5944, -1, -1, -1, -1, -1, -1,
- 2414, 77, -1, -1, -1, -1, -1, -1, 2422, -1,
- 5961, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 98, -1, -1, -1, -1, -1, -1, -1,
- -1, 354, -1, 356, 357, -1, -1, -1, 71, -1,
- 73, 4339, -1, -1, -1, -1, -1, 123, -1, -1,
- 373, 127, -1, -1, 130, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 141, 99, -1, -1, 99,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 157, -1, -1, -1, -1, 409, 410, -1, 165,
- -1, -1, -1, -1, -1, -1, -1, 6048, -1, -1,
- -1, 177, -1, -1, -1, -1, -1, -1, -1, 6060,
- -1, -1, 145, 6064, -1, 145, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 201, -1, -1, -1, -1,
- -1, -1, 455, -1, -1, -1, -1, -1, -1, -1,
- 4880, 4881, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 6105, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- 246, 247, -1, 496, -1, -1, -1, -1, -1, -1,
- -1, -1, 215, -1, -1, 215, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4944, -1, -1, 4947, -1, -1,
- -1, -1, -1, -1, -1, 2629, -1, -1, 6169, 6170,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 558, 559, 313, -1, 272,
- 273, 274, 272, 273, 274, -1, -1, -1, -1, -1,
- 6201, 574, 575, -1, -1, -1, -1, -1, 4998, 292,
- 2674, -1, 292, -1, -1, -1, -1, -1, 2682, 2683,
- -1, -1, -1, -1, -1, -1, 352, 5017, -1, -1,
- -1, -1, -1, -1, -1, 5025, 5026, -1, -1, -1,
- -1, -1, -1, 616, -1, -1, -1, -1, 374, 6250,
- -1, 6252, 6253, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 346, -1, 348, 346, -1, 348, -1,
- 5060, -1, 2736, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 366, -1, 368, -1, -1, 368, -1,
- -1, -1, 6293, -1, -1, -1, -1, -1, -1, -1,
- -1, 427, -1, 386, -1, -1, 386, -1, -1, -1,
- 393, -1, -1, 393, -1, 2779, 2780, 2781, 444, -1,
- -1, -1, -1, -1, -1, 408, -1, 6328, 408, -1,
- -1, -1, 415, -1, -1, 415, -1, 710, -1, 43,
- 713, -1, -1, 716, -1, -1, -1, 430, -1, -1,
- 430, -1, -1, -1, -1, -1, 5146, 6358, 5148, -1,
- -1, -1, -1, -1, 68, -1, 739, -1, -1, -1,
- -1, -1, -1, 77, 2838, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 759, -1, -1, -1,
- -1, -1, 2856, -1, 98, -1, 2860, 2861, -1, 2863,
- 2864, -1, -1, -1, 487, -1, -1, 487, 2872, -1,
- 2874, -1, -1, -1, 497, -1, -1, 497, -1, 123,
- -1, -1, -1, 127, -1, -1, 130, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 141, -1, -1,
- -1, 2905, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 535, 157, -1, 535, 582, -1, -1, -1,
- -1, 165, -1, -1, -1, 548, -1, 2931, 548, -1,
- -1, 5261, -1, 177, -1, -1, -1, -1, -1, 2943,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 2956, -1, -1, 5285, -1, 201, -1, -1,
- -1, -1, -1, 2967, 587, -1, -1, 587, -1, -1,
- 593, -1, -1, 593, -1, -1, -1, -1, 5308, 2983,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5324, 5325, 674, 241, -1, -1,
- -1, -1, 246, 247, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3020, -1, -1, -1,
- -1, -1, -1, 3027, -1, -1, -1, -1, 651, -1,
- -1, 651, -1, -1, -1, 658, -1, -1, 658, -1,
- -1, -1, -1, 721, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 4947,
- -1, -1, -1, -1, -1, -1, -1, 690, -1, 313,
- 690, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 705, 706, -1, 705, 706, -1, -1, -1,
- -1, -1, -1, -1, -1, 718, -1, -1, 718, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 352, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3126, -1, -1, -1, -1, -1, -1, 5017,
+ 32, 784, 81, 784, 784, 791, 123, 5161, 784, 784,
+ 127, 784, 786, 130, 786, 547, 81, 786, 253, 784,
+ 784, 272, 273, 274, 141, 784, 577, 776, 5230, 783,
+ 735, 563, 564, 783, 5546, 783, 568, 569, 570, 784,
+ 157, 292, 250, 783, 783, 5413, 31, 766, 165, 31,
+ 253, 31, 786, 427, 4577, 4560, 131, 128, 786, 791,
+ 177, 786, 791, 127, 4560, 3064, 127, 791, 147, 704,
+ 81, 5161, 5081, 786, 504, 786, 786, 791, 786, 158,
+ 315, 316, 147, 602, 201, 128, 4609, 166, 784, 613,
+ 122, 1419, 258, 158, 1422, 346, 784, 348, 53, 4622,
+ 4609, 166, 5215, 4626, 636, 786, 4629, 786, 5117, 4560,
+ 617, 100, 47, 316, 193, 366, 670, 368, 365, 127,
+ 4629, 576, 786, 786, 241, 644, 753, 158, 193, 246,
+ 247, 158, 507, 439, 783, 386, 147, 4660, 203, 549,
+ 123, 557, 393, 662, 268, 5233, 4669, 158, 268, 268,
+ 268, 4670, 657, 660, 362, 166, 688, 408, 4681, 268,
+ 314, 203, 370, 4675, 415, 783, 127, 766, 766, 201,
+ 249, 766, 766, 766, 736, 766, 411, 385, 766, 430,
+ 766, 766, 193, 156, 249, 766, 4779, 395, 396, 397,
+ 766, 710, 203, 250, 766, 4718, 313, 405, 277, 766,
+ 766, 4724, 766, 5103, 321, 4728, 766, 715, 411, 766,
+ 718, 766, 277, 766, 5413, 5115, 766, 766, 737, 727,
+ 766, 766, 766, 19, 20, 766, 317, 746, 784, 4752,
+ 791, 766, 4560, 295, 786, 352, 487, 427, 249, 299,
+ 576, 784, 784, 478, 784, 168, 497, 34, 755, 786,
+ 757, 333, 791, 791, 287, 791, 786, 374, 290, 5413,
+ 506, 57, 287, 758, 392, 154, 277, 784, 427, 153,
+ 153, 791, 784, 784, 784, 478, 213, 4782, 784, 5766,
+ 772, 784, 791, 4806, 535, 65, 4782, 791, 19, 20,
+ 772, 699, 4815, 784, 5407, 784, 786, 548, 5411, 5412,
+ 783, 5500, 3301, 783, 338, 362, 287, 241, 287, 544,
+ 427, 546, 4835, 370, 584, 128, 128, 552, 783, 791,
+ 783, 791, 492, 5413, 4833, 232, 57, 444, 385, 772,
+ 30, 4782, 784, 786, 783, 543, 587, 321, 395, 396,
+ 397, 544, 593, 546, 790, 783, 5500, 555, 405, 552,
+ 786, 545, 735, 203, 766, 766, 333, 126, 203, 203,
+ 4883, 50, 287, 158, 158, 786, 617, 714, 408, 408,
+ 4893, 403, 31, 31, 31, 4898, 240, 612, 410, 53,
+ 283, 30, 784, 30, 783, 461, 783, 245, 4900, 783,
+ 143, 773, 177, 784, 773, 584, 4919, 95, 352, 791,
+ 651, 155, 30, 155, 2639, 791, 784, 658, 206, 612,
+ 5500, 784, 4931, 783, 3413, 3414, 3415, 784, 784, 4931,
+ 3419, 656, 786, 786, 784, 6385, 153, 784, 65, 784,
+ 784, 784, 3431, 784, 784, 766, 3435, 783, 128, 784,
+ 4931, 692, 31, 783, 783, 31, 232, 655, 786, 784,
+ 311, 4947, 786, 656, 4782, 177, 707, 708, 232, 783,
+ 783, 5060, 736, 6133, 554, 582, 692, 692, 203, 720,
+ 408, 783, 783, 299, 270, 299, 783, 378, 53, 31,
+ 784, 786, 208, 786, 446, 281, 543, 695, 4947, 53,
+ 287, 212, 784, 5016, 439, 251, 4947, 131, 555, 502,
+ 784, 709, 65, 168, 784, 256, 757, 314, 784, 504,
+ 643, 206, 65, 786, 786, 784, 751, 784, 347, 169,
+ 217, 784, 784, 784, 314, 447, 784, 762, 173, 786,
+ 783, 786, 766, 766, 5057, 5544, 766, 5060, 757, 270,
+ 5139, 167, 744, 418, 5056, 5068, 418, 217, 751, 203,
+ 53, 5693, 784, 5666, 247, 1883, 299, 299, 5081, 762,
+ 676, 5084, 170, 5086, 30, 5056, 5075, 5076, 5077, 783,
+ 30, 593, 65, 217, 384, 217, 217, 217, 5101, 159,
+ 707, 159, 217, 640, 707, 217, 592, 6257, 217, 603,
+ 217, 203, 217, 203, 5117, 386, 252, 485, 655, 128,
+ 439, 314, 203, 154, 5113, 5114, 584, 427, 784, 784,
+ 784, 498, 613, 5136, 5123, 5138, 549, 155, 71, 4947,
+ 416, 784, 784, 65, 406, 786, 784, 5136, 784, 784,
+ 50, 654, 679, 786, 430, 5834, 432, 784, 695, 791,
+ 786, 783, 791, 783, 5167, 783, 427, 1975, 784, 53,
+ 31, 790, 709, 378, 783, 65, 5161, 783, 65, 117,
+ 65, 5170, 1990, 1991, 30, 5161, 744, 446, 464, 783,
+ 331, 141, 160, 390, 744, 225, 669, 5225, 422, 726,
+ 5834, 477, 281, 715, 314, 416, 718, 424, 786, 784,
+ 5844, 5214, 5240, 549, 783, 727, 445, 784, 784, 430,
+ 687, 432, 5250, 784, 5227, 5228, 5229, 419, 160, 5257,
+ 5161, 5259, 5260, 786, 510, 783, 5239, 583, 5241, 160,
+ 783, 236, 53, 105, 783, 5248, 5249, 203, 784, 783,
+ 127, 5254, 528, 464, 5985, 784, 786, 790, 5261, 790,
+ 786, 65, 783, 5266, 5834, 65, 477, 784, 65, 31,
+ 127, 411, 287, 127, 5844, 314, 786, 160, 5281, 6429,
+ 287, 584, 786, 784, 784, 784, 5275, 649, 601, 440,
+ 601, 783, 367, 791, 6025, 299, 783, 72, 783, 510,
+ 790, 783, 791, 120, 427, 784, 5298, 791, 120, 281,
+ 790, 2119, 287, 73, 687, 281, 287, 528, 2126, 72,
+ 287, 584, 72, 15, 160, 50, 698, 5298, 784, 713,
+ 606, 30, 786, 783, 5310, 786, 784, 613, 18, 218,
+ 783, 65, 65, 783, 99, 144, 217, 623, 99, 6,
+ 428, 725, 296, 5161, 5357, 649, 584, 584, 430, 2167,
+ 783, 637, 418, 783, 3079, 6047, 5369, 5370, 418, 160,
+ 786, 5310, 784, 784, 180, 5378, 783, 783, 704, 5310,
+ 160, 201, 783, 744, 296, 339, 5389, 99, 53, 5392,
+ 5393, 154, 783, 669, 5397, 606, 672, 5886, 5401, 589,
+ 699, 6132, 613, 426, 784, 783, 5409, 783, 203, 198,
+ 352, 5414, 623, 783, 690, 207, 127, 783, 783, 740,
+ 422, 739, 5501, 739, 784, 783, 637, 5416, 5413, 5502,
+ 706, 5504, 173, 338, 784, 783, 585, 5413, 251, 784,
+ 783, 218, 480, 5432, 786, 721, 3925, 786, 427, 784,
+ 3165, 784, 5531, 784, 5533, 203, 6423, 332, 669, 203,
+ 112, 672, 65, 203, 784, 3944, 296, 101, 649, 203,
+ 203, 143, 116, 432, 1001, 30, 783, 258, 5481, 690,
+ 5483, 786, 5413, 3642, 2292, 3049, 3919, 5288, 5284, 3764,
+ 1017, 5286, 5818, 4374, 1021, 5984, 5480, 5846, 6003, 5502,
+ 6236, 5504, 5310, 5167, 5532, 777, 779, 5510, 777, 5512,
+ 721, 4448, 3944, 1474, 3928, 5500, 5060, 1044, 4461, 2125,
+ 2559, 1048, 3070, 4016, 5500, 4245, 1053, 3994, 2467, 2660,
+ 845, 2659, 2661, 5688, 5537, 5538, 5539, 5540, 5687, 5468,
+ 4882, 5544, 5545, 4395, 5547, 5560, 4618, 4026, 4622, 5552,
+ 5553, 5931, 5932, 5556, 5934, 5935, 5936, 5937, 5561, 5562,
+ 5016, 5353, 6053, 5635, 2897, 5568, 5569, 6171, 5571, 5500,
+ 6309, 6270, 5939, 5633, 3187, 1462, 5579, 6066, 4877, 5222,
+ 5840, 5401, 5266, 4883, 5534, 5095, 6294, 6122, 2396, 6132,
+ 2398, 1118, 1119, 1120, 1121, 6014, 5599, 1124, 6014, 6025,
+ 6014, 6014, 4557, 4510, 1131, 5413, 5609, 4036, 6135, 6047,
+ 2503, 3320, 1626, 6235, 4115, 4585, 4588, 4580, 6315, 493,
+ 493, 6288, 5825, 6289, 3756, 6078, 5699, 6094, 6090, 5735,
+ 5530, 5528, 4281, 4882, 5263, 1483, 2528, 2321, 1889, 43,
+ 3744, 5898, 3739, 3215, 6044, 5648, 5739, 2485, 3592, 3038,
+ 4004, 3376, 4492, 539, 3552, 5658, 1446, 6122, 3685, 5662,
+ 1433, 1393, 4929, 1210, 68, 3821, 5669, 5670, 3601, 785,
+ 4609, 5674, 5675, 77, 5705, 3503, 3500, 2059, 3570, 6059,
+ 3569, 5684, 6062, 2115, 4152, 4061, 4959, 5690, 1960, 6242,
+ 6070, 6013, 5500, 6073, 98, 5687, 5699, 1981, 6347, 6346,
+ 1227, 1391, 6191, 2377, 2372, 5187, 1391, 1391, 1991, 4663,
+ 5713, 1391, 1391, 5515, 6017, 5068, 6018, 2367, 1966, 123,
+ 3158, 2393, 4138, 127, 4815, 4814, 130, 3808, 4136, 5348,
+ 43, 5916, 5751, 5043, 5344, 5738, 3824, 141, 4960, 5365,
+ 3817, 5744, 791, 5746, 4568, 1454, 1424, 511, 5751, 3369,
+ 4821, 3152, 2571, 157, 5833, 68, 493, 5760, 5837, 708,
+ 1827, 165, 1300, 2624, 77, 4489, 5648, 3854, 5771, 5772,
+ 5843, 5844, 4675, 177, 4662, 4660, 5074, 890, 6304, 6268,
+ 3009, 2197, 699, 5856, 699, 98, 1313, 889, 3010, 3677,
+ 1317, 1449, 699, 5684, 5797, 3064, 4495, 201, 5381, 1894,
+ 113, 114, 115, 6307, 2310, 5808, 4285, 4286, 5192, 5524,
+ 123, 5814, 6434, 6426, 127, 6352, 6433, 130, 1005, 5822,
+ 3029, 5824, 108, 3538, 3366, 3654, 3419, 5369, 141, 3655,
+ 698, 2666, 2943, 3656, 698, 5838, 3651, 241, 3647, 3646,
+ 5843, 4186, 246, 247, 157, 2341, 2640, 696, 1225, 5834,
+ 4384, 1191, 165, 5856, 3209, 2137, 142, 3597, 5834, 5844,
+ 3759, 2669, 5890, 5605, 177, 5844, 4935, 4835, 5844, 1882,
+ 739, 5874, 4396, 1882, 517, 493, 493, 493, 4295, 1334,
+ 3117, 5884, 4486, 5886, 5161, 974, 2662, 974, 201, 5892,
+ 5893, 5894, 1419, 179, 4019, 1422, 993, 5976, 4679, 5848,
+ 6143, 5161, 5150, 5834, 5151, 5844, 5171, 1821, 993, 313,
+ -1, 881, -1, 5844, 5993, -1, 4395, -1, -1, -1,
+ -1, 6410, -1, -1, -1, -1, 6415, -1, 241, -1,
+ -1, -1, -1, 246, 247, 2743, 2744, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5950, 352, -1,
+ -1, -1, 5955, -1, -1, -1, -1, -1, 5961, -1,
+ -1, -1, -1, -1, -1, 1492, -1, -1, -1, 1496,
374, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5984, 5971, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 311, 6002,
+ 313, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 6013, -1, -1, -1, 6017, 6018, 2824, -1, -1, -1,
+ -1, -1, -1, 427, -1, -1, 5834, -1, -1, 2837,
+ -1, -1, -1, 3748, -1, -1, 5844, -1, -1, 352,
+ 444, 6044, -1, -1, -1, -1, -1, -1, -1, -1,
+ 6053, -1, -1, -1, -1, -1, 6135, -1, -1, -1,
+ 6139, 374, -1, 6066, -1, -1, -1, -1, 6141, -1,
+ 6143, 6060, 6061, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4560, -1, 6072, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6098, -1, -1, -1, -1,
+ -1, -1, -1, 6106, -1, 6108, 6109, -1, -1, -1,
+ -1, -1, -1, -1, 427, -1, -1, -1, -1, 2927,
+ -1, -1, -1, 6122, -1, -1, -1, -1, -1, -1,
+ 6122, 444, -1, -1, -1, 2943, -1, -1, 6141, -1,
+ 6143, -1, -1, -1, -1, -1, 3861, -1, -1, -1,
+ -1, -1, -1, -1, 6233, -1, -1, -1, 6237, -1,
+ -1, -1, -1, -1, -1, -1, 6169, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 582, -1,
+ -1, 3896, -1, 3898, 3899, -1, 528, -1, 6191, 3904,
+ -1, 6180, -1, -1, 6183, 481, -1, 3912, -1, -1,
+ -1, 3916, -1, 3918, -1, -1, 6209, 6210, -1, -1,
+ 6213, -1, -1, -1, 6293, 6294, -1, 6220, -1, -1,
+ -1, -1, 3030, -1, -1, 511, 512, -1, 514, 515,
+ 516, 517, 518, -1, 520, 521, 522, 523, 524, 525,
+ 526, 527, -1, 529, 530, 531, 532, -1, -1, -1,
+ -1, -1, 6331, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3069, 3070, -1, -1, 6268, -1, -1, -1, 582,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 6282,
+ -1, 4760, -1, -1, -1, -1, -1, -1, -1, 18,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 6304, -1, 4782, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 625,
+ 626, -1, 71, -1, 73, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1883, -1, -1, -1,
+ 3168, -1, 3170, 3171, 3172, 1892, -1, 1894, -1, -1,
+ 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 732, -1, -1, -1, -1, -1, -1, -1, 4877, -1,
+ -1, -1, -1, 6406, -1, -1, -1, 6410, -1, -1,
+ -1, -1, 6415, -1, -1, -1, 145, 6420, -1, -1,
+ -1, -1, -1, 6426, -1, -1, 1953, 1954, -1, -1,
+ 6433, -1, 1959, -1, -1, -1, 1963, 1964, 1965, 781,
+ -1, -1, -1, -1, -1, -1, 1973, 1974, 1975, -1,
+ -1, -1, 1979, -1, -1, -1, 1983, 1984, 1985, -1,
+ 1987, 1988, 1989, 1990, 1991, -1, -1, -1, 4947, -1,
+ 1997, -1, 1999, -1, -1, 2002, 2003, 2004, 2005, -1,
+ 2007, -1, 2009, 2010, -1, -1, 215, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2023, 2024, 2025, 2026,
+ 2027, -1, 2029, 2030, 2031, 2032, 2033, 2034, -1, 2036,
+ 2037, -1, 2039, 2040, -1, 2042, 2043, -1, -1, 2046,
+ 2047, -1, 2049, 2050, -1, 2052, -1, 2054, -1, -1,
+ -1, 2058, 2059, 2060, -1, -1, 2063, 2064, 2065, 2066,
+ -1, 2068, -1, 272, 273, 274, -1, -1, 2075, -1,
+ -1, -1, -1, -1, 2081, 2082, 2083, 2084, 3366, -1,
+ -1, -1, -1, 292, -1, 2092, 2093, -1, 2095, 2096,
+ -1, -1, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106,
+ 2107, 2108, 2109, 2110, 2111, -1, -1, 2114, -1, -1,
+ -1, -1, 2119, -1, -1, -1, -1, -1, -1, 2126,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 958, 346, -1, 348,
+ -1, -1, 2149, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 366, -1, 368,
+ 2167, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 5134, -1, 386, 5137, -1,
+ -1, -1, 6, 7, 393, -1, -1, -1, -1, -1,
+ 4385, 4386, 4387, -1, 18, -1, -1, -1, -1, 408,
+ -1, -1, 5161, -1, -1, -1, 415, -1, -1, -1,
+ -1, -1, -1, -1, 4409, 4410, -1, 4412, -1, -1,
+ -1, 430, -1, -1, -1, -1, -1, -1, -1, 53,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 48, -1, 81, -1, 2266,
+ -1, 2268, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 487, -1,
+ -1, -1, -1, -1, 3572, 2292, -1, 80, 497, -1,
+ -1, -1, -1, -1, -1, 119, 2303, -1, -1, 123,
+ -1, 3589, -1, 127, 5263, -1, -1, -1, 101, -1,
+ -1, -1, 136, 137, -1, -1, -1, 110, -1, 143,
+ -1, -1, -1, 147, -1, -1, 535, -1, 152, -1,
+ 154, -1, -1, -1, 158, -1, -1, -1, 131, 548,
+ -1, -1, 166, -1, 168, -1, -1, -1, -1, 173,
+ -1, 5310, 145, -1, -1, -1, -1, 150, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3656, 193,
+ -1, -1, -1, 4568, -1, -1, -1, -1, 587, 203,
+ 173, -1, 206, 2390, 593, -1, -1, -1, -1, 2396,
+ -1, 2398, -1, -1, 4589, -1, -1, 6, 7, -1,
+ -1, -1, 226, -1, -1, -1, -1, -1, 617, 18,
+ -1, 2418, -1, -1, -1, -1, -1, -1, 2425, -1,
+ -1, 245, -1, -1, -1, 249, -1, -1, -1, -1,
+ -1, -1, -1, -1, 258, -1, -1, -1, -1, 232,
+ -1, -1, 651, 236, 53, -1, -1, -1, -1, 658,
+ -1, -1, -1, 277, 5413, -1, -1, -1, -1, -1,
+ -1, 254, -1, -1, -1, 258, 259, -1, 292, -1,
+ -1, -1, 81, -1, 298, 299, -1, -1, -1, 1301,
+ -1, -1, -1, 692, -1, 1307, -1, -1, 312, -1,
+ 314, -1, -1, -1, -1, -1, 289, -1, 707, 708,
+ -1, -1, -1, 296, 297, -1, -1, -1, -1, -1,
+ 119, 720, -1, -1, 123, -1, -1, -1, 127, -1,
+ -1, -1, -1, -1, -1, -1, -1, 136, 137, 3817,
+ -1, -1, -1, -1, -1, -1, -1, -1, 147, -1,
+ -1, 5500, -1, 152, 11, 154, 13, -1, 757, 158,
+ -1, 18, 19, 20, -1, -1, -1, 166, -1, 168,
+ 353, -1, -1, -1, 173, -1, -1, -1, -1, 1391,
+ -1, -1, -1, -1, -1, -1, -1, 786, -1, -1,
+ -1, -1, -1, -1, 193, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 203, -1, -1, 206, -1, -1,
+ 393, -1, -1, -1, 71, -1, 73, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 226, 2625, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 43, -1, 99, -1, -1, 459, 245, -1, -1, -1,
+ 249, -1, -1, 436, -1, -1, -1, -1, 441, 258,
+ -1, -1, -1, -1, 1476, 68, -1, -1, -1, 452,
+ 453, -1, 2669, 2670, 77, 1487, -1, -1, 277, -1,
+ -1, 2678, 2679, -1, -1, -1, -1, -1, 145, -1,
+ -1, -1, -1, 292, -1, 98, -1, -1, -1, -1,
+ 299, -1, -1, -1, 3982, -1, -1, -1, -1, -1,
+ 167, -1, -1, 312, -1, 314, -1, -1, -1, -1,
+ 123, -1, -1, -1, 127, -1, -1, 130, -1, -1,
+ -1, -1, -1, -1, -1, 2732, -1, -1, 141, -1,
+ -1, -1, -1, -1, -1, -1, 2743, 2744, -1, -1,
+ -1, -1, -1, -1, 157, -1, -1, -1, 215, -1,
+ -1, -1, 165, 577, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 177, -1, -1, -1, 2775, 2776,
+ 2777, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4071, -1, -1, -1, -1, 201, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 272, 273, 274, -1, -1,
+ -1, -1, -1, -1, 607, -1, -1, 2824, -1, -1,
+ -1, -1, -1, 4111, 617, 292, -1, 2834, 241, -1,
+ 2837, -1, -1, 246, 247, 628, -1, -1, -1, -1,
+ -1, 634, -1, -1, -1, 2852, 5805, -1, -1, 2856,
+ 2857, -1, 2859, 2860, -1, -1, -1, -1, -1, -1,
+ -1, 2868, -1, 2870, -1, -1, -1, -1, -1, -1,
+ -1, -1, 665, -1, 5833, 5834, 669, -1, 5837, 346,
+ -1, 348, -1, -1, -1, 5844, -1, -1, -1, -1,
+ -1, 4179, -1, -1, 2901, -1, -1, -1, -1, 366,
+ 313, 368, -1, -1, -1, -1, -1, 700, -1, -1,
+ 5105, 5106, 5107, 5108, -1, -1, 5111, 5112, -1, 386,
+ 2927, 5116, -1, -1, 5119, -1, 393, 5122, -1, 753,
+ 5125, -1, -1, -1, 5129, 5130, 2943, -1, -1, 352,
+ -1, 408, 766, -1, -1, -1, -1, -1, 415, -1,
+ -1, -1, -1, -1, -1, -1, 2963, 4245, -1, -1,
+ 784, 374, 786, 430, -1, 789, 790, -1, 577, -1,
+ -1, -1, 2979, -1, -1, -1, -1, -1, -1, -1,
+ 5939, -1, -1, -1, -1, -1, -1, -1, 5947, -1,
+ -1, -1, -1, -1, 5953, 5954, -1, -1, -1, -1,
+ -1, -1, -1, 1825, -1, 1827, -1, -1, -1, 3016,
+ -1, -1, -1, -1, 427, -1, 3023, 5976, -1, -1,
+ 487, -1, -1, 3030, -1, -1, -1, -1, -1, -1,
+ 497, 444, -1, -1, 5993, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4341, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3069, 3070, -1, -1, -1, -1, 535, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 548, -1, -1, -1, 6, 7, -1, -1, 5284,
+ -1, 5286, -1, 5288, -1, -1, -1, 18, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3122, -1, -1, -1, 6078,
+ 587, -1, -1, -1, -1, -1, 593, -1, -1, -1,
+ -1, 6090, 53, -1, -1, 6094, -1, -1, -1, -1,
+ -1, -1, -1, -1, 753, -1, -1, 5342, 3155, -1,
+ 617, -1, -1, -1, -1, -1, -1, 766, -1, -1,
+ 81, 3168, -1, 3170, 3171, 3172, -1, 3174, -1, 582,
+ -1, -1, -1, 3180, -1, 784, 6135, 786, -1, -1,
+ 789, 790, -1, -1, 651, -1, -1, -1, -1, -1,
+ -1, 658, -1, -1, -1, -1, -1, -1, 119, -1,
+ -1, -1, 123, -1, -1, -1, 127, -1, -1, -1,
+ -1, -1, -1, -1, 3221, 136, 137, -1, -1, 2041,
+ -1, -1, -1, 2045, -1, 692, 147, -1, -1, 2051,
+ -1, 152, -1, 154, -1, -1, -1, 158, -1, -1,
+ 707, 708, 6201, 6202, -1, 166, -1, 168, -1, -1,
+ -1, -1, 173, 720, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 193, -1, 6233, -1, -1, -1, -1, -1,
+ -1, -1, 203, -1, -1, 206, -1, -1, -1, -1,
+ 757, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 226, -1, -1, -1, 2131,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 245, -1, -1, 6286, 249, 6288,
+ 6289, -1, -1, -1, -1, -1, -1, 258, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2175, -1, -1, 277, -1, 2180, 3366,
+ 2182, -1, 679, -1, -1, -1, 6325, -1, -1, -1,
+ -1, 292, -1, -1, -1, -1, -1, -1, 299, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 312, -1, 314, -1, -1, -1, -1, -1, -1,
+ 6359, -1, -1, -1, -1, -1, -1, 2229, -1, 726,
+ -1, -1, -1, 3420, -1, -1, -1, 3424, -1, 2241,
+ 3427, -1, -1, -1, -1, -1, -1, -1, -1, 3436,
+ 6389, -1, -1, -1, -1, -1, -1, -1, 3445, -1,
+ 3447, 3448, -1, 3450, 3451, 3452, 3453, -1, 3455, -1,
+ 3457, 3458, -1, 3460, -1, -1, -1, -1, -1, -1,
+ -1, 3468, 3469, -1, -1, -1, 3473, 3474, 3475, -1,
+ -1, -1, -1, -1, -1, -1, 3483, 3484, 3485, -1,
+ 3487, -1, 3489, -1, 3491, -1, 3493, -1, 3495, -1,
+ -1, -1, -1, 3500, 3501, -1, 3503, 3504, 3505, -1,
+ -1, -1, 3509, -1, -1, 3512, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3521, -1, -1, 3524, -1, 3526,
+ 3527, 3528, -1, -1, 3531, 2347, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2365, -1, -1, 3553, -1, 3555, -1,
+ -1, 3558, -1, -1, 2376, 2377, -1, -1, -1, -1,
+ -1, 3568, 3569, 3570, 3571, 3572, 3573, -1, -1, -1,
+ -1, 3578, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3589, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6, 7, -1, 2450, -1,
+ -1, -1, -1, -1, 2456, 43, -1, 18, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3656,
+ -1, -1, -1, -1, -1, -1, 577, -1, -1, -1,
+ 68, -1, -1, -1, -1, 46, -1, 48, 49, 77,
+ -1, -1, 4960, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3689, -1, -1, -1, -1, -1, -1, 70,
+ 98, 72, -1, -1, -1, -1, -1, 78, -1, -1,
+ 1017, -1, -1, -1, 1021, 3712, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 123, -1, -1, 99, 127,
+ -1, -1, 130, -1, 18, 19, 20, 1044, -1, 110,
+ -1, -1, -1, 141, -1, -1, 1053, -1, -1, -1,
+ -1, -1, 5030, -1, -1, -1, -1, -1, -1, 157,
+ -1, -1, 46, -1, 48, -1, -1, 165, -1, -1,
+ -1, -1, -1, -1, 145, -1, -1, -1, -1, 177,
+ -1, -1, -1, -1, -1, -1, 70, 3784, -1, -1,
+ 2602, 2603, -1, -1, 78, -1, -1, -1, -1, -1,
+ -1, -1, 173, 201, -1, -1, -1, -1, 3805, -1,
+ -1, 1118, 1119, 1120, 1121, 99, -1, -1, 2630, -1,
+ 3817, -1, -1, -1, 1131, -1, 110, -1, 2640, -1,
+ -1, -1, -1, 204, -1, 206, -1, -1, -1, -1,
+ -1, -1, 753, 241, 215, -1, 217, -1, 246, 247,
+ -1, -1, -1, -1, -1, 766, -1, -1, -1, -1,
+ -1, 145, -1, -1, -1, -1, -1, -1, -1, 240,
+ -1, -1, -1, 784, -1, 786, -1, -1, 789, 790,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 173,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3159, -1, -1, -1, -1,
- 838, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 3178, -1, -1, -1, -1, 3183,
- 3184, -1, -1, 427, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 444, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3219, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5575, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5599,
- -1, -1, -1, -1, -1, -1, -1, 5607, -1, -1,
- -1, -1, -1, 5613, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3300, 3301, -1, 5629,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 1013, -1, -1, 582, 1017,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1040, -1, -1, -1, -1, -1, -1, -1,
- -1, 1049, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5739,
- -1, -1, -1, -1, -1, 3419, -1, -1, -1, 3423,
- -1, -1, 3426, -1, -1, -1, -1, -1, -1, -1,
- -1, 3435, -1, -1, -1, -1, 1114, 1115, 1116, 1117,
- 3444, -1, 3446, 3447, -1, 3449, 3450, 3451, 3452, 1127,
- 3454, -1, 3456, 3457, -1, 3459, -1, -1, -1, -1,
- -1, -1, -1, 3467, 3468, -1, -1, -1, 3472, 3473,
- 3474, -1, -1, -1, -1, -1, -1, -1, 3482, 3483,
- 3484, -1, 3486, -1, 3488, -1, 3490, -1, 3492, -1,
- 3494, -1, -1, -1, -1, 3499, 3500, -1, 3502, 3503,
- 3504, -1, -1, -1, 3508, -1, -1, 3511, -1, -1,
- -1, -1, -1, -1, -1, -1, 3520, -1, -1, 3523,
- -1, 3525, 3526, 3527, -1, -1, 3530, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5867, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3552, -1,
- 3554, -1, -1, 3557, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3567, 3568, 3569, 3570, -1, 3572, -1,
- -1, -1, -1, 3577, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 272, 273, 274, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 313, -1, -1, -1, -1,
+ -1, 292, 206, -1, -1, -1, -1, -1, -1, -1,
+ -1, 215, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 352, -1, 240, 3954, 3955, -1,
+ -1, -1, -1, -1, -1, -1, -1, 338, -1, -1,
+ -1, -1, -1, -1, -1, 346, 374, 348, -1, -1,
+ -1, -1, -1, -1, -1, 3982, -1, -1, 272, 273,
+ 274, -1, -1, -1, -1, -1, 2808, 368, -1, -1,
+ 2812, -1, -1, -1, 375, -1, 1313, -1, 292, 6194,
+ -1, -1, -1, -1, -1, 386, -1, -1, -1, -1,
+ -1, -1, 393, -1, -1, -1, -1, -1, -1, 427,
+ -1, -1, 4029, -1, -1, 4032, -1, 408, -1, -1,
+ -1, -1, -1, -1, 415, -1, 444, -1, 419, 420,
+ -1, -1, -1, -1, 338, 426, -1, -1, -1, 430,
+ 4057, 4058, 346, -1, 348, 4062, -1, 438, -1, -1,
+ -1, -1, -1, -1, 4071, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 368, -1, -1, 4084, 459, 4086,
+ -1, 4088, -1, 4090, -1, -1, 43, -1, -1, -1,
+ -1, -1, 386, -1, -1, -1, -1, -1, 4105, 393,
+ 2922, 2923, 483, -1, 4111, -1, 487, -1, -1, -1,
+ -1, 68, -1, -1, 408, -1, 497, 4124, 4125, -1,
+ 77, 415, 4129, -1, 4131, 419, 4133, -1, -1, -1,
+ -1, 4138, 426, -1, -1, -1, 430, -1, -1, -1,
+ -1, 98, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 535, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 459, 123, 548, -1, 550,
+ 127, -1, 4179, 130, 582, 1492, 4183, -1, -1, 1496,
+ -1, -1, -1, -1, 141, -1, -1, -1, -1, -1,
+ -1, 3013, -1, 487, -1, -1, -1, -1, -1, -1,
+ 157, -1, -1, 497, -1, -1, 587, -1, 165, -1,
+ -1, -1, 593, -1, 4221, -1, 3038, -1, -1, -1,
+ 177, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 617, 618, 4245, -1,
+ -1, 535, -1, -1, 201, -1, -1, -1, 629, 630,
+ 631, -1, -1, -1, 548, -1, 550, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 651, -1, -1, -1, -1, -1, -1, 658, -1, -1,
+ -1, -1, -1, -1, 241, -1, -1, 3109, -1, 246,
+ 247, -1, -1, 587, -1, -1, 3118, -1, -1, 593,
+ -1, 3123, -1, -1, -1, -1, -1, 3129, 4315, -1,
+ -1, 692, -1, -1, -1, -1, -1, -1, 4325, -1,
+ 43, -1, 3144, 617, -1, -1, 707, 708, -1, -1,
+ -1, -1, 4339, -1, 4341, 4342, -1, -1, -1, 720,
+ -1, -1, -1, 724, -1, 68, -1, -1, -1, -1,
+ -1, -1, -1, -1, 77, 5643, 313, 651, -1, -1,
+ -1, -1, -1, -1, 658, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 98, 757, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 352, -1, -1, 692, -1,
+ 123, -1, -1, -1, 127, -1, -1, 130, -1, 790,
+ -1, -1, -1, 707, 708, -1, -1, 374, 141, -1,
+ -1, -1, -1, -1, -1, -1, 720, -1, -1, -1,
+ -1, -1, -1, -1, 157, -1, -1, -1, -1, -1,
+ -1, -1, 165, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 177, -1, -1, -1, -1, -1,
+ -1, -1, -1, 757, -1, -1, -1, -1, -1, 4476,
+ -1, -1, -1, -1, -1, -1, -1, -1, 201, -1,
+ -1, -1, -1, -1, -1, -1, -1, 444, -1, 4496,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 18, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3338, -1, 241, -1,
+ -1, -1, 3344, 246, 247, 4532, 4533, -1, 4535, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4548, 4549, 4550, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4572, 4573, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1892, -1, 1894, -1, -1,
+ -1, 99, -1, -1, -1, -1, -1, -1, -1, 4596,
+ 313, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4608, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4617, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 582, -1, 145, -1, 352,
+ -1, -1, -1, -1, -1, -1, 1953, 1954, -1, -1,
+ -1, -1, 1959, -1, -1, -1, 1963, 1964, 1965, -1,
+ -1, 374, -1, -1, -1, 4662, 1973, 1974, -1, 4666,
+ -1, -1, 1979, -1, -1, -1, 1983, 1984, 1985, -1,
+ 1987, 1988, 1989, -1, -1, -1, -1, -1, -1, -1,
+ 1997, -1, 1999, -1, -1, 2002, 2003, 2004, 2005, -1,
+ 2007, -1, 2009, 2010, -1, -1, -1, 215, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2023, 2024, 2025, 2026,
+ 2027, -1, 2029, 2030, 2031, 2032, 2033, 2034, -1, 2036,
+ 2037, 444, 2039, 2040, -1, 2042, 2043, -1, -1, 2046,
+ 2047, -1, 2049, 2050, -1, 2052, -1, 2054, -1, -1,
+ -1, 2058, 2059, 2060, -1, -1, 2063, 2064, 2065, 2066,
+ -1, 2068, -1, -1, 272, 273, 274, -1, 2075, -1,
+ -1, -1, -1, -1, 2081, 2082, 2083, 2084, -1, -1,
+ 3592, -1, -1, -1, 292, 2092, 2093, -1, 2095, 2096,
+ -1, -1, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106,
+ 2107, 2108, 2109, 2110, 2111, -1, -1, 2114, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 346, -1,
+ 348, -1, 2149, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 368, -1, -1, -1, -1, -1, -1, -1, -1, 582,
+ -1, 19, 20, -1, -1, -1, -1, -1, 386, -1,
+ -1, -1, -1, -1, 3696, 393, -1, -1, -1, -1,
+ -1, -1, -1, 4890, 4891, -1, -1, -1, -1, 47,
+ 408, 49, -1, -1, -1, -1, -1, 415, -1, 57,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 430, 71, -1, -1, -1, -1, -1, -1,
+ -1, 79, 80, -1, -1, -1, -1, -1, -1, -1,
+ -1, 89, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 103, 104, -1, -1, 2266,
+ 4957, 2268, -1, 4960, 3776, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3788, -1, -1, 487,
+ 3792, -1, -1, -1, -1, -1, -1, -1, -1, 497,
+ -1, -1, -1, -1, -1, -1, 2303, 145, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 159, -1, -1, 5011, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 535, -1, -1,
+ -1, -1, -1, 5030, -1, -1, -1, -1, -1, -1,
+ 548, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 214, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5074, 226, 587,
+ -1, -1, -1, 2390, -1, 593, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 617,
+ -1, 2418, -1, -1, -1, -1, -1, -1, 2425, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 281, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
+ 658, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3978, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 324, -1, -1, -1,
+ 5177, -1, 5179, -1, 692, -1, -1, -1, -1, -1,
+ -1, -1, 4004, -1, -1, -1, 344, -1, -1, 707,
+ 708, -1, -1, -1, -1, 353, -1, -1, -1, -1,
+ -1, -1, 720, -1, -1, -1, -1, -1, 366, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 377,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 757,
+ -1, -1, 400, -1, 679, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 429, 430, -1, -1, 433, -1, 435, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5293, -1, -1, -1,
+ -1, 726, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 462, 463, -1, -1, 2625, -1,
+ 468, 469, -1, -1, 5321, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 485, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5344, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4169, 506, -1,
+ 56, 57, -1, 2670, -1, 61, 62, -1, -1, -1,
+ -1, 2678, 2679, -1, -1, 71, -1, -1, -1, -1,
+ 528, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 526, -1,
- -1, 3625, -1, 5953, -1, -1, -1, -1, -1, -1,
- -1, 1309, -1, -1, -1, 3639, -1, -1, -1, -1,
+ 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 109, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2732, -1, -1, -1, 125,
+ -1, 127, -1, -1, 582, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 597,
+ -1, -1, -1, -1, -1, -1, -1, -1, 606, 155,
+ -1, 609, 610, -1, -1, -1, 4278, -1, 2775, 2776,
+ 2777, 4283, 4284, -1, -1, -1, 624, -1, 174, 175,
+ 176, -1, -1, -1, -1, -1, -1, -1, 184, 185,
+ 186, -1, -1, -1, -1, -1, -1, -1, -1, 4311,
+ 4312, -1, -1, -1, -1, -1, 202, -1, -1, -1,
+ -1, -1, -1, 661, -1, -1, -1, -1, -1, -1,
+ -1, 669, -1, -1, -1, -1, -1, 2834, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 234, -1,
+ -1, -1, 690, -1, 692, 2852, -1, -1, -1, 2856,
+ 2857, -1, 2859, 2860, -1, -1, -1, -1, -1, -1,
+ -1, 2868, -1, 2870, -1, 261, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 284, 285,
+ 286, -1, 1017, -1, 2901, 743, 1021, -1, -1, -1,
+ -1, -1, 750, -1, -1, -1, -1, -1, -1, -1,
+ 306, 307, -1, -1, 5611, -1, -1, -1, -1, 1044,
+ 2927, -1, -1, -1, -1, -1, -1, -1, 1053, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5635, -1,
+ -1, -1, -1, -1, -1, -1, 5643, -1, -1, -1,
+ -1, -1, 5649, -1, -1, -1, 2963, -1, 354, -1,
+ 356, 357, -1, -1, -1, -1, -1, -1, 5665, -1,
+ -1, -1, 2979, -1, -1, -1, -1, 373, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5995, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 6007, -1, -1,
- -1, -1, -1, -1, 3688, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1118, 1119, 1120, 1121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1131, -1, -1, 3016,
+ -1, -1, -1, 409, 410, -1, 3023, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3711, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5607,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 455,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5776,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 6092, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1450, -1, -1, -1, -1, -1, -1, 3783,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 496, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3122, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3804, -1, -1, -1, -1, -1, -1, -1, -1, 1487,
- -1, -1, -1, -1, 6144, -1, -1, -1, -1, 727,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3155, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 558, 559, -1, -1, -1, 3174, -1, -1,
+ -1, -1, -1, 3180, -1, -1, -1, -1, 574, 575,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1313, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5899, -1, -1, -1, 4718, -1, -1, -1,
+ -1, -1, -1, -1, 3221, -1, 4728, -1, -1, -1,
+ 616, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 776, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5985, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 712, -1, -1, 715,
+ -1, -1, 718, -1, -1, -1, -1, -1, 6025, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 6273, -1, -1, -1, 6277, -1, -1,
+ 6037, -1, -1, -1, -1, -1, 742, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 762, 1492, -1, -1,
+ -1, 1496, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3990, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4011, -1, -1,
+ -1, -1, -1, 3420, -1, -1, -1, 3424, -1, -1,
+ 3427, -1, -1, -1, -1, 6122, -1, -1, -1, 3436,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3445, -1,
+ 3447, 3448, -1, 3450, 3451, 3452, 3453, -1, 3455, -1,
+ 3457, 3458, -1, 3460, -1, -1, -1, -1, -1, -1,
+ -1, 3468, 3469, -1, -1, -1, 3473, 3474, 3475, -1,
+ -1, -1, -1, -1, -1, -1, 3483, 3484, 3485, 6176,
+ 3487, -1, 3489, -1, 3491, -1, 3493, -1, 3495, -1,
+ -1, -1, -1, 3500, 3501, -1, 3503, 3504, 3505, -1,
+ -1, -1, 3509, -1, -1, 3512, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3521, -1, -1, 3524, -1, 3526,
+ 3527, 3528, -1, -1, 3531, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4026, -1, -1, 4029, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3553, -1, 3555, -1,
+ -1, 3558, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3568, 3569, 3570, 3571, -1, 3573, -1, -1, -1,
+ -1, 3578, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5101,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 954, -1, -1, -1,
- 4054, 4055, -1, -1, -1, 4059, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 6305, -1,
+ -1, -1, 6309, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 6406, 4081, -1, 4083,
- -1, 4085, -1, 4087, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4102, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4121, 4122, -1,
- -1, -1, 4126, -1, 4128, -1, 4130, -1, -1, -1,
- -1, 4135, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4182, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4196, -1, -1, -1, 4200, -1, -1, -1,
+ -1, -1, 3689, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1888, -1, 1890, -1, 4218, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3712, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5229, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5248, -1, -1, -1,
+ 6437, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1892, -1, 1894,
+ -1, -1, -1, -1, -1, -1, -1, 3784, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3805, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 1949, 1950, -1, -1, -1, -1, 1955, -1, -1,
- -1, 1959, 1960, 1961, -1, -1, -1, -1, -1, -1,
- -1, 1969, 1970, -1, -1, -1, -1, 1975, -1, -1,
- -1, 1979, 1980, 1981, -1, 1983, 1984, 1985, -1, 4313,
- -1, -1, -1, -1, -1, 1993, -1, 1995, -1, 4323,
- 1998, 1999, 2000, 2001, -1, 2003, -1, 2005, 2006, -1,
- -1, -1, -1, 4337, -1, -1, 4340, -1, -1, -1,
- -1, 2019, 2020, 2021, 2022, 2023, -1, 2025, 2026, 2027,
- 2028, 2029, 2030, -1, 2032, 2033, -1, 2035, 2036, -1,
- 2038, 2039, -1, -1, 2042, 2043, -1, 2045, 2046, -1,
- 2048, -1, 2050, -1, -1, -1, 2054, 2055, 2056, -1,
- -1, 2059, 2060, 2061, 2062, -1, 2064, -1, -1, 1297,
- -1, -1, -1, 2071, -1, 1303, -1, -1, -1, 2077,
- 2078, 2079, 2080, -1, -1, -1, -1, -1, -1, -1,
- 2088, 2089, -1, 2091, 2092, -1, -1, 2095, 2096, 2097,
- 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107,
- -1, -1, 2110, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1953, 1954,
+ -1, -1, -1, -1, 1959, -1, -1, -1, 1963, 1964,
+ 1965, -1, -1, -1, -1, -1, -1, -1, 1973, 1974,
+ -1, -1, -1, -1, 1979, -1, -1, -1, 1983, 1984,
+ 1985, -1, 1987, 1988, 1989, -1, -1, -1, -1, -1,
+ -1, -1, 1997, -1, 1999, -1, -1, 2002, 2003, 2004,
+ 2005, -1, 2007, -1, 2009, 2010, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 2023, 2024,
+ 2025, 2026, 2027, -1, 2029, 2030, 2031, 2032, 2033, 2034,
+ -1, 2036, 2037, -1, 2039, 2040, -1, 2042, 2043, -1,
+ -1, 2046, 2047, -1, 2049, 2050, -1, 2052, -1, 2054,
+ -1, -1, -1, 2058, 2059, 2060, -1, -1, 2063, 2064,
+ 2065, 2066, -1, 2068, -1, -1, -1, 3954, 3955, -1,
+ 2075, -1, -1, -1, -1, -1, 2081, 2082, 2083, 2084,
+ -1, -1, -1, -1, -1, -1, -1, 2092, 2093, -1,
+ 2095, 2096, -1, -1, 2099, 2100, 2101, 2102, 2103, 2104,
+ 2105, 2106, 2107, 2108, 2109, 2110, 2111, -1, -1, 2114,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 2145, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1386, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4029, -1, 2149, 4032, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4057, 4058, -1, -1, -1, 4062, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4530, 4531, -1, 4533,
+ -1, -1, -1, -1, -1, -1, -1, 4084, -1, 4086,
+ -1, 4088, -1, 4090, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5609, 4105, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4546, 4547, 4548, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4124, 4125, -1,
+ -1, -1, 4129, -1, 4131, -1, 4133, -1, -1, -1,
+ -1, 4138, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 2266, -1, 2268, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 679, -1, 5670, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1471, -1, -1, 4570, 4571, -1, -1,
- -1, -1, -1, -1, 1482, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 2262, -1, 2264, -1, -1, -1,
- 4594, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4606, -1, -1, -1, -1, -1, -1, -1,
- -1, 4615, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2299, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4635, -1, -1, -1, -1, 4640, 4641, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4183, -1, 2303, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4659, -1, -1, -1, 4663,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4221, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2386, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 2414, -1, -1, -1,
- -1, -1, -1, -1, 2422, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2390, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2418, -1, -1, -1, -1, -1, -1,
+ 2425, -1, -1, -1, -1, -1, -1, -1, 4315, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4325, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4339, -1, -1, 4342, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5884, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5894, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4880, 4881, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4476,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4496,
+ 6002, -1, -1, -1, -1, -1, -1, -1, 1021, -1,
+ 2625, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1820, -1, 1822, -1, -1, -1, -1, -1,
+ -1, 1044, -1, -1, -1, 4532, 4533, -1, 4535, -1,
+ 1053, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4548, 4549, 4550, -1, 2670, -1, -1, -1, -1,
+ -1, -1, -1, 2678, 2679, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4572, 4573, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4596,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1121, -1,
+ -1, 4608, -1, -1, -1, -1, -1, 2732, -1, -1,
+ 4617, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4944, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2629, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2775, 2776, 2777, -1, -1, 4662, -1, -1, -1, 4666,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4998, -1, 2674, -1, -1, -1,
- -1, -1, -1, -1, 2682, 2683, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5025, 5026, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5060, -1, 2736, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 2834,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2852, -1, -1,
+ -1, 2856, 2857, -1, 2859, 2860, -1, -1, -1, -1,
+ -1, -1, -1, 2868, -1, 2870, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2901, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2779, 2780, 2781, -1, -1, -1, -1, -1, -1,
+ 1313, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 2927, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 2037,
- -1, -1, -1, 2041, -1, -1, -1, -1, -1, 2047,
- -1, -1, 5146, -1, 5148, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 2838, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2856, -1,
- -1, -1, 2860, 2861, -1, 2863, 2864, -1, -1, -1,
- -1, -1, -1, -1, 2872, -1, 2874, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 2963, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 2127,
- -1, -1, -1, -1, -1, -1, -1, 2905, -1, -1,
+ -1, -1, -1, -1, 2979, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 674, -1, -1, -1,
- -1, -1, -1, 2931, -1, -1, -1, 5261, -1, -1,
- -1, -1, -1, 2171, -1, 2943, -1, -1, 2176, -1,
- 2178, -1, -1, -1, -1, -1, -1, -1, 2956, -1,
- -1, 5285, -1, -1, -1, -1, -1, -1, -1, 2967,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5308, 2983, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 2225, -1, -1,
- 5324, 5325, -1, -1, -1, -1, -1, -1, -1, 2237,
+ -1, -1, -1, 4890, 4891, -1, -1, -1, -1, -1,
+ -1, 3016, -1, -1, -1, -1, -1, -1, 3023, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3020, -1, -1, -1, -1, -1, -1, 3027,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4957, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1492,
+ -1, -1, -1, 1496, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3122, -1, -1,
+ -1, -1, -1, -1, 5011, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 838, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2343, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3126, -1,
- -1, -1, -1, 2361, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 2372, 2373, -1, -1, -1, -1,
+ 3155, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3174,
+ -1, -1, -1, -1, -1, 3180, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5074, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3159, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3178, -1, -1, -1, -1, 3183, 3184, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3219, 2450, -1, -1, -1, -1, -1, 2456, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5575, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1017,
- -1, -1, -1, -1, -1, 5599, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5613,
- -1, -1, 1040, -1, -1, -1, -1, -1, -1, -1,
- -1, 1049, 3300, 3301, -1, 5629, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 5177, -1, 5179, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1117,
- -1, -1, -1, -1, -1, -1, -1, -1, 2606, 2607,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 2634, -1, -1, -1,
- -1, -1, -1, -1, -1, 5739, 2644, -1, -1, -1,
- -1, 3419, -1, -1, -1, 3423, -1, -1, 3426, -1,
- -1, -1, -1, -1, -1, -1, -1, 3435, -1, -1,
- -1, -1, -1, -1, -1, -1, 3444, -1, 3446, 3447,
- -1, 3449, 3450, 3451, 3452, -1, 3454, -1, 3456, 3457,
- -1, 3459, -1, -1, -1, -1, -1, -1, -1, 3467,
- 3468, -1, -1, -1, 3472, 3473, 3474, -1, -1, -1,
- -1, -1, -1, -1, 3482, 3483, 3484, -1, 3486, -1,
- 3488, -1, 3490, -1, 3492, -1, 3494, -1, -1, -1,
- -1, 3499, 3500, -1, 3502, 3503, 3504, -1, -1, -1,
- 3508, -1, -1, 3511, -1, -1, -1, -1, -1, -1,
- -1, -1, 3520, -1, -1, 3523, -1, 3525, 3526, 3527,
- -1, -1, 3530, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5867, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 3552, -1, 3554, -1, -1, 3557,
- -1, 1309, -1, -1, -1, -1, -1, -1, -1, 3567,
- 3568, 3569, 3570, -1, 3572, -1, -1, -1, -1, 3577,
- -1, -1, -1, -1, 2812, -1, -1, -1, 2816, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3625, -1, 5953,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3639, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5293, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3420, -1, -1, -1, 3424,
+ -1, -1, 3427, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3436, -1, -1, 5321, -1, -1, -1, -1, -1,
+ 3445, -1, 3447, 3448, -1, 3450, 3451, 3452, 3453, -1,
+ 3455, -1, 3457, 3458, -1, 3460, -1, 5344, -1, -1,
+ -1, -1, -1, 3468, 3469, -1, -1, -1, 3473, 3474,
+ 3475, -1, -1, -1, -1, -1, -1, -1, 3483, 3484,
+ 3485, -1, 3487, -1, 3489, -1, 3491, -1, 3493, 1892,
+ 3495, 1894, -1, -1, -1, 3500, 3501, -1, 3503, 3504,
+ 3505, -1, -1, -1, 3509, -1, -1, 3512, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3521, -1, -1, 3524,
+ -1, 3526, 3527, 3528, -1, -1, 3531, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5995, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 6007, -1, -1, -1, -1, -1, -1,
- 3688, -1, -1, -1, -1, -1, -1, -1, 2926, 2927,
- -1, -1, 1450, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3711, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3553, -1,
+ 3555, -1, -1, 3558, -1, -1, 1959, -1, -1, -1,
+ 1963, -1, 1965, 3568, 3569, 3570, 3571, -1, 3573, -1,
+ 1973, 1974, -1, 3578, -1, -1, 1979, -1, -1, -1,
+ 1983, 1984, 1985, -1, 1987, 1988, 1989, -1, -1, -1,
+ -1, -1, -1, -1, 1997, -1, 1999, -1, -1, 2002,
+ 2003, 2004, 2005, -1, -1, -1, 2009, 2010, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1487,
+ 2023, 2024, 2025, 2026, 2027, -1, 2029, 2030, 2031, 2032,
+ 2033, -1, -1, 2036, 2037, -1, 2039, 2040, -1, 2042,
+ 2043, -1, -1, -1, 2047, -1, 2049, 2050, -1, 2052,
+ -1, 2054, -1, -1, -1, 2058, 2059, 2060, -1, -1,
+ 2063, -1, 2065, 2066, -1, 2068, -1, -1, -1, -1,
+ -1, -1, 2075, -1, -1, -1, -1, -1, 2081, 2082,
+ 2083, -1, -1, -1, 3689, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3712, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 6092, -1,
+ -1, -1, -1, -1, 5611, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3783, -1, -1, -1, 3017,
+ -1, -1, -1, -1, -1, -1, 2149, -1, 5635, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3804, -1, -1, -1,
- -1, -1, -1, -1, 3042, -1, -1, -1, -1, -1,
- 6144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5649, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5665, 3784,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3113, -1, -1, -1, -1,
- -1, -1, -1, -1, 3122, -1, -1, -1, -1, 3127,
- -1, -1, -1, -1, -1, 3133, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 6273,
- -1, -1, -1, 6277, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2266, -1, 2268, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5776,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2303, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3990, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4011, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4026, -1,
- -1, 4029, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4054, 4055, -1, -1,
- -1, 4059, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3954,
+ 3955, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 6406, 4081, -1, 4083, -1, 4085, -1, 4087,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4102, -1, -1, -1, -1, -1,
- -1, 3339, -1, -1, 3342, -1, -1, -1, -1, -1,
- -1, -1, -1, 4121, 4122, -1, -1, -1, 4126, -1,
- 4128, -1, 4130, -1, -1, -1, -1, 4135, -1, -1,
- 1888, -1, 1890, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2390, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5899, -1, -1, 2418, -1, -1, -1, -1,
+ -1, -1, 2425, -1, 4029, -1, -1, 4032, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4182, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4196, -1,
- -1, -1, 4200, -1, -1, -1, -1, 1955, -1, -1,
- -1, 1959, -1, 1961, -1, -1, -1, -1, -1, -1,
- 4218, 1969, 1970, -1, -1, -1, -1, 1975, -1, -1,
- -1, 1979, 1980, 1981, -1, 1983, 1984, 1985, -1, -1,
- -1, -1, -1, -1, -1, 1993, -1, 1995, -1, -1,
- 1998, 1999, 2000, 2001, -1, -1, -1, 2005, 2006, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2019, 2020, 2021, 2022, 2023, -1, 2025, 2026, 2027,
- 2028, 2029, -1, -1, 2032, 2033, -1, 2035, 2036, -1,
- 2038, 2039, -1, -1, -1, 2043, -1, 2045, 2046, -1,
- 2048, -1, 2050, -1, -1, -1, 2054, 2055, 2056, -1,
- -1, 2059, -1, 2061, 2062, 4313, 2064, -1, -1, -1,
- -1, -1, -1, 2071, -1, 4323, -1, -1, -1, 2077,
- 2078, 2079, -1, -1, -1, -1, -1, -1, -1, 4337,
- -1, -1, 4340, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4057, 4058, -1, -1, -1, 4062, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 3591, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4084,
+ -1, 4086, -1, 4088, -1, 4090, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5985, -1,
+ 4105, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4124,
+ 4125, -1, -1, -1, 4129, -1, 4131, -1, 4133, -1,
+ -1, -1, -1, 4138, -1, -1, -1, -1, 6025, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 6037, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 2145, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4183, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4221, -1, -1, -1,
+ -1, -1, 2625, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 6122, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2670, -1, -1,
+ -1, -1, -1, -1, -1, 2678, 2679, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 6176,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3695, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4315, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4325, -1, -1, -1, -1, -1, -1, -1, -1, 2732,
+ -1, -1, -1, -1, 4339, -1, -1, 4342, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 2262, -1, 2264, -1, -1, -1,
+ -1, -1, 2775, 2776, 2777, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4530, 4531, -1, 4533, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3775, 4546, 4547,
- 4548, 2299, -1, -1, -1, -1, -1, -1, -1, 3787,
- -1, -1, -1, 3791, -1, -1, -1, -1, -1, -1,
- -1, -1, 4570, 4571, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4594, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4606, -1,
- -1, -1, -1, -1, -1, -1, -1, 4615, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4635, 2386, -1,
- -1, -1, 4640, 4641, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 6305, -1,
+ -1, -1, 6309, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4659, -1, -1, -1, 4663, 2414, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 2852,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2868, -1, 2870, -1, -1,
+ -1, 4476, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4496, -1, -1, -1, -1, -1, -1, 2901, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2927, -1, -1, 4532, 4533, -1,
+ 4535, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4548, 4549, 4550, -1, -1, -1, -1,
+ 6437, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2963, -1, -1, -1, -1, -1, -1, 4572, 4573, -1,
+ -1, -1, -1, -1, -1, -1, 2979, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4596, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4608, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4617, 3016, -1, -1, -1, -1, -1, -1,
+ 3023, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3975, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4662, -1, -1,
+ -1, 4666, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4001, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3122,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3155, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3174, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3221, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 2629, 4880, 4881, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 2674, -1, -1, -1,
- -1, -1, -1, -1, 2682, 2683, -1, -1, 4166, -1,
- -1, -1, -1, -1, -1, -1, 4944, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4890, 4891, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2736, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4998, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5025, 5026, -1,
- -1, 2779, 2780, 2781, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4275, -1, -1,
- -1, -1, 4280, 4281, -1, -1, -1, -1, -1, -1,
- -1, -1, 5060, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4309, 4310, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2856, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 2872, -1, 2874, -1, -1, -1,
+ -1, -1, 4957, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5146, -1,
- 5148, -1, -1, -1, -1, -1, -1, 2905, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 2931, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2943, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 2956, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 2967,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 2983, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5011, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3420, -1, -1,
+ -1, 3424, -1, -1, 3427, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3445, -1, -1, -1, -1, 3450, 3451, 3452,
+ 3453, -1, 3455, -1, 3457, 3458, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3468, 3469, -1, -1, 5074,
+ 3473, 3474, 3475, -1, -1, -1, -1, -1, -1, -1,
+ 3483, 3484, 3485, -1, 3487, -1, 3489, -1, 3491, -1,
+ 3493, -1, 3495, -1, -1, -1, -1, 3500, 3501, -1,
+ 3503, -1, 3505, -1, -1, -1, 3509, -1, -1, 3512,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 5261, -1, -1, -1, -1, -1, -1,
- -1, -1, 3020, -1, -1, -1, -1, -1, -1, 3027,
- -1, -1, -1, -1, -1, -1, -1, 5285, -1, -1,
+ -1, 3524, -1, 3526, 3527, 3528, -1, -1, 3531, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 5308, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5324, 5325, -1, -1,
+ -1, -1, -1, -1, -1, 3558, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3569, 3570, -1, -1,
+ 3573, -1, 5177, -1, 5179, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3126, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3159, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3178, -1, -1, -1, -1, 3183, 3184, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3689, -1, 5293, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3219, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4713, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4723, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3712,
+ -1, -1, -1, -1, -1, -1, 5321, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5344,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3300, 3301, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5575, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3805, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5599, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5613, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5629, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3419, -1, -1, -1, 3423, -1, -1, 3426, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3444, -1, -1, -1,
- -1, 3449, 3450, 3451, 3452, -1, 3454, -1, 3456, 3457,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3467,
- 3468, -1, -1, -1, 3472, 3473, 3474, -1, -1, -1,
- -1, -1, -1, -1, 3482, 3483, 3484, -1, 3486, -1,
- 3488, 5739, 3490, -1, 3492, -1, 3494, -1, -1, -1,
- -1, 3499, 3500, -1, 3502, -1, 3504, -1, -1, -1,
- 3508, -1, -1, 3511, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 3523, -1, 3525, 3526, 3527,
- -1, -1, 3530, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3557,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3568, 3569, -1, -1, 3572, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5085, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5867,
- -1, -1, -1, -1, -1, -1, -1, 3625, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 3639, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3954, 3955, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 3688, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5953, -1, -1, -1, -1,
- -1, -1, -1, 3711, -1, -1, -1, -1, -1, -1,
- 5198, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 5217,
- -1, -1, -1, -1, -1, -1, -1, 5995, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 6007,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5611, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3804, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4029, -1, -1, 4032,
+ 5635, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 5649, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4057, 4058, -1, -1, -1, 4062,
+ 5665, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 4084, -1, 4086, -1, 4088, -1, 4090, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4105, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 6092, -1, -1, -1, -1, -1,
+ -1, 4124, 4125, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4138, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5776, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4183, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 6144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4221, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17750,51 +17724,48 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 5899, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3990, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4315, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4325, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4339, -1, -1, 4342,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4011, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 6273, -1, -1, 4026, 6277,
- -1, 4029, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4054, 4055, -1, -1,
- -1, 4059, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4081, -1, 4083, -1, 4085, -1, 4087,
- -1, -1, -1, -1, -1, 5573, -1, -1, -1, -1,
- -1, -1, -1, -1, 4102, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4121, 4122, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4135, -1, -1,
+ 5985, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5634, -1, 6406, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4182, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4196, -1,
- -1, -1, 4200, -1, -1, -1, -1, -1, -1, -1,
+ 6025, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 6037, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4476, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4496, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 6122, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4532,
+ 4533, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4548, 4549, 4550, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4572,
+ 4573, 6176, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4313, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4323, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 4337,
- -1, -1, 4340, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4617, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5852, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5862, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4662,
+ -1, -1, -1, 4666, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 6305, -1, -1, -1, 6309, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17802,72 +17773,64 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 5978, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4530, 4531, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4546, 4547,
- 4548, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4570, 4571, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 6437, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4615, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 4635, -1, -1,
- -1, -1, 4640, 4641, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4659, -1, -1, -1, 4663, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4890, 4891, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4957, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5011, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5074, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4880, 4881, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4944, -1, -1, -1,
+ -1, -1, -1, -1, 5177, -1, 5179, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4998, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5025, 5026, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 5060, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5321, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5344, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 5146, -1,
- 5148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17880,11 +17843,8 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5285, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 5308, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 5324, 5325, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17895,10 +17855,13 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 5611, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5649, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5665, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17909,13 +17872,10 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 5575, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 5613, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5629, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17924,6 +17884,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5899, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -17933,88 +17894,86 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, 8, 9,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
+ 20, -1, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, 6037, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, 6122,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, 254, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 3, -1, -1, -1, -1, 8,
- 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 19, 20, -1, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, -1, 5867,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 57, 58,
- 59, 60, -1, -1, -1, -1, -1, -1, -1, 68,
- 69, -1, 71, -1, -1, -1, -1, -1, -1, 78,
- 79, -1, -1, 82, 83, 84, 85, -1, 87, 88,
- -1, 90, 91, -1, -1, -1, -1, -1, -1, -1,
- 99, -1, -1, 102, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
- -1, 120, 121, 122, -1, 124, -1, -1, -1, -1,
- -1, -1, -1, 132, 133, 134, 135, -1, -1, -1,
- -1, -1, 141, -1, -1, 144, -1, -1, -1, -1,
- -1, 150, -1, -1, 153, -1, -1, -1, -1, -1,
- -1, -1, -1, 162, -1, 164, -1, 166, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 6007,
- -1, 180, 181, -1, 183, -1, -1, -1, 187, -1,
- -1, -1, -1, 192, -1, -1, 195, 196, -1, 198,
- 199, 200, 201, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
- 219, 220, 221, -1, 223, -1, -1, -1, -1, -1,
- -1, 230, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 241, -1, -1, -1, -1, -1, -1, -1,
- 249, 250, -1, -1, -1, 254, -1, -1, -1, -1,
- -1, -1, -1, -1, 6092, -1, -1, -1, -1, 268,
- -1, -1, -1, -1, -1, -1, 275, 276, -1, 278,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 290, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 300, 301, 302, -1, -1, 305, -1, -1, 308,
- 309, -1, -1, -1, -1, 314, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, 6273, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, 6406, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, 768,
- 769, -1, -1, 3, -1, 774, -1, -1, 8, 9,
- 779, -1, -1, -1, 783, 784, -1, -1, 787, 19,
- 20, -1, 22, 23, 24, 25, 26, 27, 28, 29,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, 305, -1, -1, 308, 309,
+ -1, -1, 6305, -1, 314, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, 6437, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
@@ -18079,713 +18038,21 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, 768, 769,
- -1, -1, 3, -1, 774, -1, -1, 8, 9, 779,
- -1, -1, -1, 783, 784, -1, -1, 787, 19, 20,
- -1, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, 47, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 57, 58, 59, 60,
- -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
- 71, -1, -1, -1, -1, -1, -1, 78, 79, -1,
- -1, 82, 83, 84, 85, -1, 87, 88, -1, 90,
- 91, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, 102, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, 120,
- 121, 122, -1, 124, -1, -1, -1, -1, -1, -1,
- -1, 132, 133, 134, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, 150,
- -1, -1, 153, -1, -1, -1, -1, -1, -1, -1,
- -1, 162, -1, 164, -1, 166, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
- 181, -1, 183, -1, -1, -1, 187, -1, -1, -1,
- -1, 192, -1, -1, 195, 196, -1, 198, 199, 200,
- 201, -1, 203, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, 219, 220,
- 221, -1, 223, -1, -1, -1, -1, -1, -1, 230,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, -1, -1, -1, 249, 250,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 268, -1, -1,
- -1, -1, -1, -1, 275, 276, -1, 278, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 290,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
- 301, 302, -1, -1, -1, -1, -1, 308, 309, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, 768, 769, -1,
- -1, 3, -1, 774, -1, -1, 8, 9, 779, -1,
- -1, -1, 783, 784, -1, -1, 787, 19, 20, -1,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, -1, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 57, 58, 59, 60, -1,
- -1, -1, -1, -1, -1, -1, 68, 69, -1, 71,
- -1, -1, -1, -1, -1, -1, 78, 79, -1, -1,
- 82, 83, 84, 85, -1, 87, 88, -1, 90, 91,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- 102, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, 120, 121,
- 122, -1, 124, -1, -1, -1, -1, -1, -1, -1,
- 132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
- -1, -1, 144, -1, -1, -1, -1, -1, 150, -1,
- -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
- 162, -1, 164, -1, 166, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 180, 181,
- -1, 183, -1, -1, -1, 187, -1, -1, -1, -1,
- 192, -1, -1, 195, 196, -1, 198, 199, 200, 201,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, 219, 220, 221,
- -1, 223, -1, -1, -1, -1, -1, -1, 230, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 241,
- -1, -1, -1, -1, -1, -1, -1, 249, 250, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 268, -1, -1, -1,
- -1, -1, -1, 275, 276, -1, 278, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 290, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
- 302, -1, -1, -1, -1, -1, 308, 309, -1, 311,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, 768, 769, -1, -1,
- 3, -1, 774, -1, -1, 8, 9, 779, -1, -1,
- -1, 783, 784, -1, -1, 787, 19, 20, -1, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 57, 58, 59, 60, -1, -1,
- -1, -1, -1, -1, -1, 68, 69, -1, 71, -1,
- -1, -1, -1, -1, -1, 78, 79, -1, -1, 82,
- 83, 84, 85, -1, 87, 88, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, 120, 121, 122,
- -1, 124, -1, -1, -1, -1, -1, -1, -1, 132,
- 133, 134, 135, -1, -1, -1, -1, -1, 141, -1,
- 143, 144, -1, -1, -1, -1, -1, 150, -1, -1,
- 153, -1, -1, -1, -1, -1, -1, -1, -1, 162,
- -1, 164, -1, 166, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 180, 181, -1,
- 183, -1, -1, -1, 187, -1, -1, -1, -1, 192,
- -1, -1, 195, 196, -1, 198, 199, 200, 201, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, 219, 220, 221, -1,
- 223, -1, -1, -1, -1, -1, -1, 230, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 241, -1,
- -1, -1, -1, -1, -1, -1, 249, 250, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 268, -1, -1, -1, -1,
- -1, -1, 275, 276, -1, 278, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 290, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 300, 301, 302,
- -1, -1, -1, -1, -1, 308, 309, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, -1, -1, -1,
- -1, -1, -1, -1, -1, 768, 769, -1, -1, 3,
- -1, 774, -1, -1, 8, 9, 779, -1, -1, -1,
- 783, 784, -1, -1, 787, 19, 20, -1, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 57, 58, 59, 60, -1, -1, -1,
- -1, -1, -1, -1, 68, 69, -1, 71, -1, -1,
- -1, -1, -1, -1, 78, 79, -1, -1, 82, 83,
- 84, 85, -1, 87, 88, -1, 90, 91, -1, -1,
- -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, 120, 121, 122, -1,
- 124, -1, -1, -1, 128, -1, -1, -1, 132, 133,
- 134, 135, -1, -1, -1, -1, -1, 141, -1, -1,
- 144, -1, -1, -1, -1, -1, 150, -1, -1, 153,
- -1, -1, -1, -1, -1, -1, -1, -1, 162, -1,
- 164, -1, 166, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 180, 181, -1, 183,
- -1, -1, -1, 187, -1, -1, -1, -1, 192, -1,
- -1, 195, 196, -1, 198, 199, 200, 201, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, 219, 220, 221, -1, 223,
- -1, -1, -1, -1, -1, -1, 230, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
- -1, -1, -1, -1, -1, 249, 250, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 268, -1, -1, -1, -1, -1,
- -1, 275, 276, -1, 278, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 290, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 300, 301, 302, -1,
- -1, -1, -1, -1, 308, 309, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, 768, 769, -1, -1, 3, -1,
- 774, -1, -1, 8, 9, 779, -1, -1, -1, 783,
- 784, -1, -1, 787, 19, 20, -1, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, -1, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 57, 58, 59, 60, -1, -1, -1, -1,
- -1, -1, -1, 68, 69, -1, 71, -1, -1, -1,
- -1, -1, -1, 78, 79, -1, -1, 82, 83, 84,
- 85, -1, 87, 88, -1, 90, 91, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, 102, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, 120, 121, 122, -1, 124,
- -1, -1, -1, 128, -1, -1, -1, 132, 133, 134,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
- -1, -1, -1, -1, -1, 150, -1, -1, 153, -1,
- -1, -1, -1, -1, -1, -1, -1, 162, -1, 164,
- -1, 166, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, 181, -1, 183, -1,
- -1, -1, 187, -1, -1, -1, -1, 192, -1, -1,
- 195, 196, -1, 198, 199, 200, 201, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, 219, 220, 221, -1, 223, -1,
- -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
- -1, -1, -1, -1, 249, 250, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 268, -1, -1, -1, -1, -1, -1,
- 275, 276, -1, 278, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 290, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 300, 301, 302, -1, -1,
- -1, -1, -1, 308, 309, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, 768, 769, -1, -1, 3, -1, 774,
- -1, -1, 8, 9, 779, -1, -1, -1, 783, 784,
- -1, -1, 787, 19, 20, -1, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
- -1, -1, 68, 69, -1, 71, -1, -1, -1, -1,
- -1, -1, 78, 79, -1, -1, 82, 83, 84, 85,
- -1, 87, 88, -1, 90, 91, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, 102, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, 120, 121, 122, -1, 124, -1,
- -1, -1, 128, -1, -1, -1, 132, 133, 134, 135,
- -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
- -1, -1, -1, -1, 150, -1, -1, 153, -1, -1,
- -1, -1, -1, -1, -1, -1, 162, -1, 164, -1,
- 166, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 180, 181, -1, 183, -1, -1,
- -1, 187, -1, -1, -1, -1, 192, -1, -1, 195,
- 196, -1, 198, 199, 200, 201, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, 219, 220, 221, -1, 223, -1, -1,
- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- -1, -1, -1, 249, 250, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 268, -1, -1, -1, -1, -1, -1, 275,
- 276, -1, 278, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 300, 301, 302, -1, -1, -1,
- -1, -1, 308, 309, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, -1, -1, -1, -1, -1, -1,
- -1, -1, 768, 769, -1, -1, 3, -1, 774, -1,
- -1, 8, 9, 779, -1, -1, -1, 783, 784, -1,
- -1, 787, 19, 20, -1, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 57, 58, 59, 60, -1, -1, -1, -1, -1, -1,
- -1, 68, 69, -1, 71, -1, -1, -1, -1, -1,
- -1, 78, 79, -1, -1, 82, 83, 84, 85, -1,
- 87, 88, -1, 90, 91, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, 102, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, 120, 121, 122, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, 132, 133, 134, 135, -1,
- -1, -1, -1, -1, 141, -1, 143, 144, -1, -1,
- -1, -1, -1, 150, -1, -1, 153, -1, -1, -1,
- -1, -1, -1, -1, -1, 162, -1, 164, -1, 166,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 180, 181, -1, 183, -1, -1, -1,
- 187, -1, -1, -1, -1, 192, -1, -1, 195, 196,
- -1, 198, 199, 200, 201, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, 219, 220, 221, -1, 223, -1, -1, -1,
- -1, -1, -1, 230, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 241, -1, -1, -1, -1, -1,
- -1, -1, 249, 250, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 268, -1, -1, -1, -1, -1, -1, 275, 276,
- -1, 278, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 290, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 300, 301, 302, -1, -1, -1, -1,
- -1, 308, 309, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, 768, 769, -1, -1, 3, -1, 774, -1, -1,
- 8, 9, 779, -1, -1, -1, 783, 784, -1, -1,
- 787, 19, 20, -1, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
- 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
- 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
- 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
- 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
- -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
- -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
- -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
- -1, -1, -1, -1, 192, -1, -1, 195, 196, -1,
- 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
- -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
- -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
- 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
- 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- 768, 769, -1, -1, 3, -1, 774, -1, -1, 8,
- 9, 779, -1, -1, -1, 783, 784, -1, -1, 787,
- 19, 20, -1, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 57, 58,
- 59, 60, -1, -1, -1, -1, -1, -1, -1, 68,
- 69, -1, 71, -1, -1, -1, -1, -1, -1, 78,
- 79, -1, -1, 82, 83, 84, 85, -1, 87, 88,
- -1, 90, 91, -1, -1, -1, -1, -1, -1, -1,
- 99, -1, -1, 102, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
- -1, 120, 121, 122, -1, 124, -1, -1, -1, -1,
- -1, -1, -1, 132, 133, 134, 135, -1, -1, -1,
- -1, -1, 141, -1, -1, 144, -1, -1, -1, -1,
- -1, 150, -1, -1, 153, -1, -1, -1, -1, -1,
- -1, -1, -1, 162, -1, 164, -1, 166, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 180, 181, -1, 183, -1, -1, -1, 187, -1,
- -1, -1, -1, 192, -1, -1, 195, 196, -1, 198,
- 199, 200, 201, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
- 219, 220, 221, -1, 223, -1, -1, -1, -1, -1,
- -1, 230, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 241, -1, -1, -1, -1, -1, -1, -1,
- 249, 250, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 268,
- -1, -1, -1, -1, -1, -1, 275, 276, -1, 278,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 290, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 300, 301, 302, -1, -1, -1, -1, -1, 308,
- 309, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, 768,
- 769, -1, -1, 3, -1, 774, -1, -1, 8, 9,
- 779, -1, -1, -1, 783, 784, -1, -1, 787, 19,
- 20, -1, 22, 23, 24, 25, 26, 27, 28, 29,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
-1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
@@ -18801,7 +18068,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
-1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
- 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ 200, 201, -1, 203, -1, -1, -1, 207, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -18848,711 +18115,19 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, 768, 769,
- -1, -1, 3, -1, 774, -1, -1, 8, 9, 779,
- -1, -1, -1, 783, 784, -1, -1, 787, 19, 20,
- -1, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 57, 58, 59, 60,
- -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
- 71, -1, -1, -1, -1, -1, -1, 78, 79, -1,
- -1, 82, 83, 84, 85, -1, 87, 88, -1, 90,
- 91, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, 102, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, 120,
- 121, 122, -1, 124, -1, -1, -1, -1, -1, -1,
- -1, 132, 133, 134, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, 150,
- -1, -1, 153, -1, -1, -1, -1, -1, -1, -1,
- -1, 162, -1, 164, -1, 166, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
- 181, -1, 183, -1, -1, -1, 187, -1, -1, -1,
- -1, 192, -1, -1, 195, 196, -1, 198, 199, 200,
- 201, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, 219, 220,
- 221, -1, 223, -1, -1, -1, -1, -1, -1, 230,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, -1, -1, -1, 249, 250,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 268, -1, -1,
- -1, -1, -1, -1, 275, 276, -1, 278, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 290,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
- 301, 302, -1, -1, -1, -1, -1, 308, 309, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, 768, 769, -1,
- -1, 3, -1, 774, -1, -1, 8, 9, 779, -1,
- -1, -1, 783, 784, -1, -1, 787, 19, 20, -1,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, -1, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -1, 47, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 57, 58, 59, 60, -1,
- -1, -1, -1, -1, -1, -1, 68, 69, -1, 71,
- -1, -1, -1, -1, -1, -1, 78, 79, -1, -1,
- 82, 83, 84, 85, -1, 87, 88, -1, 90, 91,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- 102, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, 120, 121,
- 122, -1, 124, -1, -1, -1, -1, -1, -1, -1,
- 132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
- -1, -1, 144, -1, -1, -1, -1, -1, 150, -1,
- -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
- 162, -1, 164, -1, 166, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 180, 181,
- -1, 183, -1, -1, -1, 187, -1, -1, -1, -1,
- 192, -1, -1, 195, -1, -1, 198, 199, 200, 201,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, 219, 220, 221,
- -1, 223, -1, -1, -1, -1, -1, -1, 230, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 241,
- -1, -1, -1, -1, -1, -1, -1, 249, 250, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 268, -1, -1, -1,
- -1, -1, -1, 275, 276, -1, 278, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 290, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
- 302, -1, -1, -1, -1, -1, 308, 309, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, 768, 769, -1, -1,
- 3, -1, 774, -1, -1, 8, 9, 779, -1, -1,
- -1, 783, 784, -1, -1, 787, 19, 20, -1, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 57, 58, 59, 60, -1, -1,
- -1, -1, -1, -1, -1, 68, 69, -1, 71, -1,
- -1, -1, -1, -1, -1, 78, 79, -1, -1, 82,
- 83, 84, 85, -1, 87, 88, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, 120, 121, 122,
- -1, 124, -1, -1, -1, -1, -1, -1, -1, 132,
- 133, 134, 135, -1, -1, -1, -1, -1, 141, -1,
- -1, 144, -1, -1, -1, -1, -1, 150, -1, -1,
- 153, -1, -1, -1, -1, -1, -1, -1, -1, 162,
- -1, 164, -1, 166, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 180, 181, -1,
- 183, -1, -1, -1, 187, -1, -1, -1, -1, 192,
- -1, -1, 195, 196, -1, 198, 199, 200, 201, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, 219, 220, 221, -1,
- 223, -1, -1, -1, -1, -1, -1, 230, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 241, -1,
- -1, -1, -1, -1, -1, -1, 249, 250, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 268, -1, -1, -1, -1,
- -1, -1, 275, 276, -1, 278, 279, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 290, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 300, 301, 302,
- -1, -1, -1, -1, -1, 308, 309, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, -1, -1, -1,
- -1, -1, -1, -1, -1, 768, 769, -1, -1, 3,
- -1, 774, -1, -1, 8, 9, 779, -1, -1, -1,
- 783, 784, -1, -1, 787, 19, 20, -1, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 57, 58, 59, 60, -1, -1, -1,
- -1, -1, -1, -1, 68, 69, -1, 71, -1, -1,
- -1, -1, -1, -1, 78, 79, -1, -1, 82, 83,
- 84, 85, -1, 87, 88, -1, 90, 91, -1, -1,
- -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, 120, 121, 122, -1,
- 124, -1, -1, -1, -1, -1, -1, -1, 132, 133,
- 134, 135, -1, -1, -1, -1, -1, 141, -1, -1,
- 144, -1, -1, -1, -1, -1, 150, -1, -1, 153,
- -1, -1, -1, -1, -1, -1, -1, -1, 162, -1,
- 164, -1, 166, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 180, 181, -1, 183,
- -1, -1, -1, 187, -1, -1, -1, -1, 192, -1,
- -1, 195, 196, -1, 198, 199, 200, 201, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, 219, 220, 221, -1, 223,
- -1, -1, -1, -1, -1, -1, 230, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 241, -1, -1,
- -1, -1, -1, -1, -1, 249, 250, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 268, -1, -1, -1, -1, -1,
- -1, 275, 276, -1, 278, 279, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 290, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 300, 301, 302, -1,
- -1, -1, -1, -1, 308, 309, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, 768, 769, -1, -1, 3, -1,
- 774, -1, -1, 8, 9, 779, -1, -1, -1, 783,
- 784, -1, -1, 787, 19, 20, -1, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, -1, -1,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 57, 58, 59, 60, -1, -1, -1, -1,
- -1, -1, -1, 68, 69, -1, 71, -1, -1, -1,
- -1, -1, -1, 78, 79, -1, -1, 82, 83, 84,
- 85, -1, 87, 88, -1, 90, 91, -1, -1, -1,
- -1, -1, -1, -1, 99, -1, -1, 102, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, 120, 121, 122, -1, 124,
- -1, -1, -1, -1, -1, -1, -1, 132, 133, 134,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
- -1, -1, -1, -1, -1, 150, -1, -1, 153, -1,
- -1, -1, -1, -1, -1, -1, -1, 162, -1, 164,
- -1, 166, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, 181, 182, 183, -1,
- -1, -1, 187, -1, -1, -1, -1, 192, -1, -1,
- 195, -1, -1, 198, 199, 200, 201, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, 219, 220, 221, -1, 223, -1,
- -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 241, -1, -1, -1,
- -1, -1, -1, -1, 249, 250, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 268, -1, -1, -1, -1, -1, -1,
- 275, 276, -1, 278, 279, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 290, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 300, 301, 302, -1, -1,
- -1, -1, -1, 308, 309, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, 768, 769, -1, -1, 3, -1, 774,
- -1, -1, 8, 9, 779, -1, -1, -1, 783, 784,
- -1, -1, 787, 19, 20, -1, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
- -1, -1, 68, 69, -1, 71, -1, -1, -1, -1,
- -1, -1, 78, 79, -1, -1, 82, 83, 84, 85,
- -1, 87, 88, -1, 90, 91, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, 102, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, 120, 121, 122, -1, 124, -1,
- -1, -1, -1, -1, -1, -1, 132, 133, 134, 135,
- -1, -1, -1, -1, -1, 141, -1, -1, 144, -1,
- -1, -1, -1, -1, 150, -1, -1, 153, -1, -1,
- -1, -1, -1, -1, -1, -1, 162, -1, 164, -1,
- 166, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 180, 181, -1, 183, -1, -1,
- -1, 187, -1, -1, -1, -1, 192, -1, -1, 195,
- -1, -1, 198, 199, 200, 201, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, 219, 220, 221, -1, 223, -1, -1,
- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 241, -1, -1, -1, -1,
- -1, -1, -1, 249, 250, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 268, -1, -1, -1, -1, -1, -1, 275,
- 276, -1, 278, 279, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 300, 301, 302, -1, -1, -1,
- -1, -1, 308, 309, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, -1, -1, -1, -1, -1, -1,
- -1, -1, 768, 769, -1, -1, 3, -1, 774, -1,
- -1, 8, 9, 779, -1, -1, -1, 783, 784, -1,
- -1, 787, 19, 20, -1, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 57, 58, 59, 60, -1, -1, -1, -1, -1, -1,
- -1, 68, 69, -1, 71, -1, -1, -1, -1, -1,
- -1, 78, 79, -1, -1, 82, 83, 84, 85, -1,
- 87, 88, -1, 90, 91, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, 102, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, 120, 121, 122, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, 132, 133, 134, 135, -1,
- -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
- -1, -1, -1, 150, -1, -1, 153, -1, -1, -1,
- -1, -1, -1, -1, -1, 162, -1, 164, -1, 166,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 180, 181, -1, 183, -1, -1, -1,
- 187, -1, -1, -1, -1, 192, -1, -1, 195, -1,
- -1, 198, 199, 200, 201, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, 219, 220, 221, -1, 223, -1, -1, -1,
- -1, -1, -1, 230, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 241, -1, -1, -1, -1, -1,
- -1, -1, 249, 250, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 268, -1, -1, -1, -1, -1, -1, 275, 276,
- -1, 278, 279, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 290, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 300, 301, 302, -1, -1, -1, -1,
- -1, 308, 309, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, -1, -1, -1, -1, -1, -1, -1,
- -1, 768, 769, -1, -1, 3, -1, 774, -1, -1,
- 8, 9, 779, -1, -1, -1, 783, 784, -1, -1,
- 787, 19, 20, -1, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
- 58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
- 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
- 78, 79, -1, -1, 82, 83, 84, 85, -1, 87,
- 88, -1, 90, 91, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, 102, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, 120, 121, 122, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, 132, 133, 134, 135, -1, -1,
- -1, -1, -1, 141, -1, -1, 144, -1, -1, -1,
- -1, -1, 150, -1, -1, 153, -1, -1, -1, -1,
- -1, -1, -1, -1, 162, -1, 164, -1, 166, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 180, 181, -1, 183, -1, -1, -1, 187,
- -1, -1, -1, -1, 192, -1, -1, 195, -1, -1,
- 198, 199, 200, 201, -1, -1, -1, -1, -1, 207,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, 219, 220, 221, -1, 223, -1, -1, -1, -1,
- -1, -1, 230, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 241, -1, -1, -1, -1, -1, -1,
- -1, 249, 250, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 268, -1, -1, -1, -1, -1, -1, 275, 276, -1,
- 278, 279, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 300, 301, 302, -1, -1, -1, -1, -1,
- 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- 768, 769, -1, -1, 3, -1, 774, -1, -1, 8,
- 9, 779, -1, -1, -1, 783, 784, -1, -1, 787,
- 19, 20, -1, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 57, 58,
- 59, 60, -1, -1, -1, -1, -1, -1, -1, 68,
- 69, -1, 71, -1, -1, -1, -1, -1, -1, 78,
- 79, -1, -1, 82, 83, 84, 85, -1, 87, 88,
- -1, 90, 91, -1, -1, -1, -1, -1, -1, -1,
- 99, -1, -1, 102, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
- -1, 120, 121, 122, -1, 124, -1, -1, -1, -1,
- -1, -1, -1, 132, 133, 134, 135, -1, -1, -1,
- -1, -1, 141, -1, -1, 144, -1, -1, -1, -1,
- -1, 150, -1, -1, 153, -1, -1, -1, -1, -1,
- -1, -1, -1, 162, -1, 164, -1, 166, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 180, 181, -1, 183, -1, -1, -1, 187, -1,
- -1, -1, -1, 192, -1, -1, 195, -1, -1, 198,
- 199, 200, 201, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
- 219, 220, 221, -1, 223, -1, -1, -1, -1, -1,
- -1, 230, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 241, -1, -1, -1, -1, -1, -1, -1,
- 249, 250, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 268,
- -1, -1, -1, -1, -1, -1, 275, 276, -1, 278,
- 279, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 290, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 300, 301, 302, -1, -1, -1, -1, -1, 308,
- 309, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, -1, -1, 768,
- 769, -1, -1, 3, -1, 774, -1, -1, 8, 9,
- 779, -1, -1, -1, 783, 784, -1, -1, 787, 19,
- 20, -1, 22, 23, 24, 25, 26, 27, 28, 29,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
@@ -19569,7 +18144,7 @@ static const yytype_int16 yycheck[] =
-1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
- -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
@@ -19581,7 +18156,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ -1, 311, -1, -1, -1, -1, -1, -1, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
@@ -19617,418 +18192,1578 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, 768, 769,
- -1, -1, 3, -1, 774, -1, -1, 8, 9, 779,
- -1, -1, -1, 783, 784, -1, -1, 787, 19, 20,
- -1, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 57, 58, 59, 60,
- -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
- 71, -1, -1, -1, -1, -1, -1, 78, 79, -1,
- -1, 82, 83, 84, 85, -1, 87, 88, -1, 90,
- 91, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, 102, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, 120,
- 121, 122, -1, 124, -1, -1, -1, -1, -1, -1,
- -1, 132, 133, 134, 135, -1, -1, -1, -1, -1,
- 141, -1, -1, 144, -1, -1, -1, -1, -1, 150,
- -1, -1, 153, -1, -1, -1, -1, -1, -1, -1,
- -1, 162, -1, 164, -1, 166, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
- 181, -1, 183, -1, -1, -1, 187, -1, -1, -1,
- -1, 192, -1, -1, 195, -1, -1, 198, 199, 200,
- 201, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, 219, 220,
- 221, -1, 223, -1, -1, -1, -1, -1, -1, 230,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 241, -1, -1, -1, -1, -1, -1, -1, 249, 250,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 268, -1, -1,
- -1, -1, -1, -1, 275, 276, -1, 278, 279, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 290,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
- 301, 302, -1, -1, -1, -1, -1, 308, 309, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, -1,
- -1, -1, -1, -1, -1, -1, -1, 768, 769, -1,
- -1, 3, -1, 774, -1, -1, 8, 9, 779, -1,
- -1, -1, 783, 784, -1, -1, 787, 19, 20, -1,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 58, 59, 60, -1,
- -1, -1, -1, -1, -1, -1, 68, 69, -1, 71,
- -1, -1, -1, -1, -1, -1, 78, 79, -1, -1,
- 82, 83, 84, 85, -1, 87, 88, -1, 90, 91,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- 102, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, 120, 121,
- 122, -1, 124, -1, -1, -1, -1, -1, -1, -1,
- 132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
- -1, -1, 144, -1, -1, -1, -1, -1, 150, -1,
- -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
- 162, -1, 164, -1, 166, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 180, 181,
- -1, 183, -1, -1, -1, 187, -1, -1, -1, -1,
- 192, -1, -1, 195, -1, -1, 198, 199, 200, 201,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, 219, 220, 221,
- -1, 223, -1, -1, -1, -1, -1, -1, 230, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 241,
- -1, -1, -1, -1, -1, -1, -1, 249, 250, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 268, -1, -1, -1,
- -1, -1, -1, 275, 276, -1, 278, 279, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 290, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
- 302, -1, -1, -1, -1, -1, 308, 309, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, 768, 769, -1, -1,
- 3, -1, -1, -1, -1, 8, -1, 779, -1, -1,
- -1, -1, 784, -1, -1, 787, 19, 20, -1, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, 122,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, 201, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 290, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, 3, 756, 757, 758, 759, 8, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 787, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, 143, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, 128, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, 128, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, 128, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, 143, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, 3, 756, 757, 758, 759, 8,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, 780,
- -1, -1, -1, -1, -1, -1, 787, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, 47, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, 196, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ 180, 181, 182, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 57, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
- -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, 8, 756, 757, 758,
- 759, -1, -1, -1, -1, -1, -1, 19, 20, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, 777, 8, 9,
+ -1, -1, -1, 783, -1, -1, -1, 787, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 787, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
+ 60, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, 71, -1, -1, -1, -1, -1, -1, 78, 79,
+ -1, -1, 82, 83, 84, 85, -1, 87, 88, -1,
+ 90, 91, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ 120, 121, 122, -1, 124, -1, -1, -1, -1, -1,
+ -1, -1, 132, 133, 134, 135, -1, -1, -1, -1,
+ -1, 141, -1, -1, 144, -1, -1, -1, -1, -1,
+ 150, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, 164, -1, 166, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, 181, -1, 183, -1, -1, -1, 187, -1, -1,
+ -1, -1, 192, -1, -1, 195, -1, -1, 198, 199,
+ 200, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, 219,
+ 220, 221, -1, 223, -1, -1, -1, -1, -1, -1,
+ 230, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 241, -1, -1, -1, -1, -1, -1, -1, 249,
+ 250, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 268, -1,
+ -1, -1, -1, -1, -1, 275, 276, -1, 278, 279,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, 302, -1, -1, -1, -1, -1, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, -1,
+ -1, 771, 772, 3, -1, -1, -1, -1, 8, -1,
+ -1, -1, -1, 783, -1, -1, -1, -1, 788, 19,
+ 20, 791, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, 122, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
+ -1, 201, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20036,55 +19771,57 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 290, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, 8, 756, 757, 758, 759, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
+ -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, 3, 759,
+ 760, 761, 762, 8, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 779, -1, -1,
- -1, -1, -1, -1, -1, 787, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20148,7 +19885,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -20156,466 +19893,243 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- 8, 756, 757, 758, 759, -1, -1, -1, -1, -1,
- -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 787, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ 755, 756, 757, 3, 759, 760, 761, 762, 8, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, 784,
+ -1, -1, -1, -1, -1, -1, 791, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 5, -1, 7, 8, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 19, 20, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 787,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 48, 49, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 66, -1, 68, -1, 70, -1, 72,
- -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 98, -1, -1, 101, -1,
- 103, 104, -1, -1, -1, -1, -1, 110, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -1, -1, -1, 131, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, 141, -1,
- -1, -1, -1, -1, -1, -1, -1, 150, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 161, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 171, -1,
- 173, -1, -1, -1, 177, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, 204, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, 216, 217, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, 227, 228, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 239, 240, 241, -1,
- 243, -1, -1, -1, -1, 248, -1, -1, -1, -1,
- -1, 254, -1, -1, -1, 258, 259, 260, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 294, -1, 296, -1, 298, -1, -1, -1, -1,
- -1, -1, 305, -1, -1, -1, -1, -1, -1, -1,
- 313, 314, -1, -1, -1, 318, 319, 320, -1, 322,
- 323, 324, 325, 326, -1, 328, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, -1, 367, 368, 369, 370, 371, 372,
- 373, -1, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, -1, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, -1, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, -1, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, -1, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, -1, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, -1,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, -1, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 5, -1, -1,
- 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 19, 20, -1, -1, -1, 779, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 48, 49, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 66, -1,
- 68, -1, 70, -1, 72, -1, -1, -1, -1, -1,
- -1, -1, 80, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 98, -1, -1, 101, -1, 103, 104, -1, -1, -1,
- -1, -1, 110, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 127,
- -1, -1, -1, 131, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, 141, -1, -1, -1, -1, -1, -1,
- -1, -1, 150, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 161, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 171, -1, 173, -1, -1, -1, 177,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, 204, -1, -1, 207,
- -1, -1, -1, -1, -1, -1, -1, -1, 216, 217,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, 227,
- 228, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 239, 240, 241, -1, 243, -1, -1, -1, -1,
- 248, -1, -1, -1, -1, -1, 254, -1, -1, -1,
- 258, 259, 260, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 294, -1, 296, -1,
- 298, -1, -1, -1, -1, -1, -1, 305, -1, -1,
- -1, -1, -1, -1, -1, 313, 314, -1, -1, -1,
- 318, 319, 320, -1, 322, 323, 324, 325, 326, -1,
- 328, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, -1, 367,
- 368, 369, 370, 371, 372, 373, -1, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- -1, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, -1,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, -1,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- -1, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- -1, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, -1, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, -1, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 5, -1, -1, 8, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 19, 20, -1, -1,
- -1, 779, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 48, 49, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 66, -1, -1, -1, 70, -1, 72,
- -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 101, -1,
- 103, 104, -1, -1, -1, -1, -1, 110, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 131, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 150, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 161, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 171, -1,
- 173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, 204, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, 216, 217, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, 227, 228, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 239, 240, -1, -1,
- 243, -1, -1, -1, -1, 248, -1, -1, -1, -1,
- -1, 254, -1, -1, -1, 258, 259, 260, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
+ -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, 8, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 294, -1, 296, -1, 298, -1, -1, -1, -1,
- -1, -1, 305, -1, -1, -1, -1, -1, -1, -1,
- -1, 314, -1, -1, -1, 318, 319, 320, -1, 322,
- 323, 324, 325, 326, -1, 328, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, -1,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, -1, 367, 368, 369, 370, 371, 372,
- 373, -1, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, -1, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, -1, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, -1, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, -1, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, -1, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, -1,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, -1, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 779, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 75, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 129, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, 145, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 160, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 262, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
+ -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, 8, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 783, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 787, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 254, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 305, -1, -1, -1, -1, -1,
- -1, -1, -1, 314, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
+ -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, 8, 759,
+ 760, 761, 762, -1, -1, -1, -1, -1, -1, 19,
20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 779, -1,
- -1, -1, -1, -1, -1, -1, 787, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 111, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
-1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
@@ -20671,92 +20185,320 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 779,
- -1, -1, -1, -1, 784, -1, -1, 787, -1, -1,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, 5, -1, 7, 8, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 48, 49, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 66, -1, 68, -1, 70, -1,
+ 72, -1, -1, -1, -1, -1, -1, -1, 80, -1,
+ -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
+ -1, 103, 104, -1, -1, -1, -1, -1, 110, -1,
+ -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 127, -1, -1, -1, 131,
+ -1, -1, -1, 135, -1, -1, -1, -1, -1, 141,
+ -1, -1, -1, -1, -1, -1, -1, -1, 150, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 161,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 171,
+ -1, 173, -1, -1, -1, 177, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
+ -1, -1, 204, -1, -1, 207, -1, -1, -1, -1,
+ -1, -1, -1, -1, 216, 217, 218, -1, -1, -1,
+ -1, -1, -1, -1, -1, 227, 228, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 239, 240, 241,
+ -1, 243, -1, -1, -1, -1, 248, -1, -1, -1,
+ -1, -1, 254, -1, -1, -1, 258, 259, 260, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, 294, -1, 296, -1, 298, -1, -1, -1,
+ -1, -1, -1, 305, -1, -1, -1, -1, -1, -1,
+ -1, 313, 314, -1, -1, -1, 318, 319, 320, -1,
+ 322, 323, 324, 325, 326, -1, 328, -1, -1, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, -1, 367, 368, 369, 370, 371,
+ 372, 373, -1, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, -1, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, -1, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, -1, 458, -1, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, -1, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, -1, 569, 570, 571,
+ 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
+ -1, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, -1, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
+ 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
+ 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
+ 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
+ 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
+ 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
+ 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
+ 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
+ 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
+ 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
+ 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761,
+ 762, 5, -1, -1, 8, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
+ -1, 783, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 48, 49, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 66, -1, 68, -1, 70, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 98, -1, -1, 101, -1, 103,
+ 104, -1, -1, -1, -1, -1, 110, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 127, -1, -1, -1, 131, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, 141, -1, -1,
+ -1, -1, -1, -1, -1, -1, 150, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 161, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 171, -1, 173,
+ -1, -1, -1, 177, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ 204, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, 216, 217, 218, -1, -1, -1, -1, -1,
+ -1, -1, -1, 227, 228, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 239, 240, 241, -1, 243,
+ -1, -1, -1, -1, 248, -1, -1, -1, -1, -1,
+ 254, -1, -1, -1, 258, 259, 260, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 294, -1, 296, -1, 298, -1, -1, -1, -1, -1,
+ -1, 305, -1, -1, -1, -1, -1, -1, -1, 313,
+ 314, -1, -1, -1, 318, 319, 320, -1, 322, 323,
+ 324, 325, 326, -1, 328, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, -1, 367, 368, 369, 370, 371, 372, 373,
+ -1, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, -1, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, -1, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
+ -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, -1, 458, -1, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, -1, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, -1, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, -1, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, -1, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
+ 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
+ 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 5,
+ -1, -1, 8, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 19, 20, -1, -1, -1, -1, 783,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 48, 49, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 66, -1, -1, -1, 70, -1, 72, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 101, -1, 103, 104, -1,
+ -1, -1, -1, -1, 110, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 131, -1, -1, -1, 135,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 150, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 161, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 171, -1, 173, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
+ -1, -1, -1, -1, -1, -1, -1, -1, 204, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ 216, 217, 218, -1, -1, -1, -1, -1, -1, -1,
+ -1, 227, 228, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 239, 240, -1, -1, 243, -1, -1,
+ -1, -1, 248, -1, -1, -1, -1, -1, 254, -1,
+ -1, -1, 258, 259, 260, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 294, -1,
+ 296, -1, 298, -1, -1, -1, -1, -1, -1, 305,
+ -1, -1, -1, -1, -1, -1, -1, -1, 314, -1,
+ -1, -1, 318, 319, 320, -1, 322, 323, 324, 325,
+ 326, -1, 328, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, -1, -1, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ -1, 367, 368, 369, 370, 371, 372, 373, -1, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, -1, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, -1, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, -1, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, -1, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, -1, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, -1, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, -1, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 783, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
- -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
- 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
- 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
- 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
- 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
- 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
- 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 779, -1, -1, -1, -1, 784, -1, -1, 787, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 75, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 129, -1, -1,
+ -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
+ -1, -1, 144, 145, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 160, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 262, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
+ 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
+ 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
+ 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
+ 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
+ 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
+ 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
+ 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
+ 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
+ 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
+ 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
+ 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761,
+ 762, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 791,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20777,13 +20519,13 @@ static const yytype_int16 yycheck[] =
218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 254, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 305, -1, -1,
+ -1, -1, -1, -1, -1, -1, 314, -1, -1, -1,
318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
@@ -20820,246 +20562,24 @@ static const yytype_int16 yycheck[] =
648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 779, -1, -1, -1, -1, -1, -1, -1, 787,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, 770, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 787, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 779, -1, -1, -1, -1, -1, -1,
- -1, 787, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 135, -1, -1, -1, -1, -1, 141, -1, -1, 144,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 787, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 783, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 111, -1, -1,
-1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21116,7 +20636,7 @@ static const yytype_int16 yycheck[] =
644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
@@ -21124,27 +20644,29 @@ static const yytype_int16 yycheck[] =
724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 783,
+ -1, -1, -1, -1, 788, -1, -1, 791, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 787, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
+ -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21152,56 +20674,129 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
+ -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
+ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
+ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
+ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
+ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
+ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
+ 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
+ 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
+ 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
+ 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
+ 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
+ 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
+ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
+ 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 783, -1, -1, -1, -1, 788, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 787, -1, -1, -1, -1, -1,
+ -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
+ -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
+ 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
+ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+ 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
+ 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 19, 20, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 783, -1, -1,
+ -1, -1, -1, -1, -1, 791, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21264,173 +20859,24 @@ static const yytype_int16 yycheck[] =
642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 787, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 85, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761,
+ 762, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ -1, 773, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 791,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, -1, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 779, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, 3, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 19, 20, -1, -1, -1, -1, -1, -1, 779,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 71, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
@@ -21477,7 +20923,7 @@ static const yytype_int16 yycheck[] =
538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
+ 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
@@ -21488,94 +20934,18 @@ static const yytype_int16 yycheck[] =
648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, 3, 756, 757,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 71, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 99, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, 3,
- 756, 757, 758, 759, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 19, 20, 21, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 31, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 783, -1, -1, -1, -1,
+ -1, -1, -1, 791, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21584,7 +20954,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, 141, -1, -1,
144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21638,7 +21008,7 @@ static const yytype_int16 yycheck[] =
644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
@@ -21646,86 +21016,10 @@ static const yytype_int16 yycheck[] =
724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, 3, 756, 757, 758, 759, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 19, 20, 21,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 31,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, 3, 756, 757, 758, 759, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 19,
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 791, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21788,95 +21082,19 @@ static const yytype_int16 yycheck[] =
640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
+ 670, 671, 672, 673, 674, 675, 676, 677, 678, -1,
+ -1, 681, 682, -1, 684, 685, 686, 687, 688, 689,
690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, 3, 756, 757, 758, 759,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 74, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, 3, 756, 757,
- 758, 759, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 750, 751, 752, 753, 754, 755, 756, 757, -1, 759,
+ 760, 761, 762, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 791, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -21939,94 +21157,18 @@ static const yytype_int16 yycheck[] =
646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
+ 676, 677, 678, -1, -1, 681, 682, -1, 684, 685,
686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 8, 9, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, 28, -1, 30, -1, 32, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 251, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, -1, 759, 760, 761, 762, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 8, 9, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 19, 20, -1,
- -1, -1, -1, -1, -1, -1, 28, -1, 30, -1,
- 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 791, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22046,7 +21188,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 251,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22089,98 +21231,22 @@ static const yytype_int16 yycheck[] =
642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 8, 9,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, 28, -1,
- 30, -1, 32, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 251, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 8, 9, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- 28, -1, 30, -1, 32, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761,
+ 762, 19, 20, 21, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 791,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 85, -1, -1,
88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
@@ -22239,112 +21305,36 @@ static const yytype_int16 yycheck[] =
638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
+ 668, 669, 670, 671, 672, 673, 674, 675, 676, -1,
+ 678, -1, -1, 681, 682, -1, 684, 685, 686, 687,
688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- -1, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
- -1, -1, -1, 770, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ -1, 759, 760, 761, 762, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 783, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22352,71 +21342,74 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, 770, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
+ -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
+ 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
+ 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
+ 754, 755, 756, 757, 3, 759, 760, 761, 762, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, 783,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 71, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22426,59 +21419,61 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, -1, 770, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, 3,
+ 759, 760, 761, 762, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 71, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 99, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22526,7 +21521,7 @@ static const yytype_int16 yycheck[] =
544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
+ 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
@@ -22536,7 +21531,7 @@ static const yytype_int16 yycheck[] =
644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
@@ -22544,27 +21539,28 @@ static const yytype_int16 yycheck[] =
724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
- -1, -1, -1, -1, -1, -1, 770, -1, -1, -1,
+ 754, 755, 756, 757, 3, 759, 760, 761, 762, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22574,71 +21570,73 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
- -1, -1, -1, -1, -1, -1, -1, 770, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, 3,
+ 759, 760, 761, 762, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, 20, 21, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 31, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22648,202 +21646,206 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- -1, -1, -1, -1, -1, 26, -1, -1, 770, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 40,
+ -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
+ -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
+ 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
+ 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
+ 754, 755, 756, 757, 3, 759, 760, 761, 762, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, 196, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, 209, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 265, -1, 267, -1, 269, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, 769, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 42, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 57, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, 3,
+ 759, 760, 761, 762, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 74, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, 21, 763, -1, -1, -1, -1, -1, -1,
- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 42, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
+ -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
+ 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
+ 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
+ 754, 755, 756, 757, 3, 759, 760, 761, 762, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -22907,339 +21909,44 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, 763, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, -1, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, -1,
- 128, 129, 130, 131, 132, -1, -1, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- -1, 149, 150, -1, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, -1, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, -1, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, -1, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 319, 320, -1, 322, 323, 324, 325, 326, -1,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, -1, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, -1, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, -1, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, -1, 574, 575, 576, 577,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, -1, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, -1, 661, 662, 663, 664, 665, -1, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- -1, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 8, 9, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
+ -1, -1, -1, -1, 28, -1, 30, -1, 32, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- -1, 128, 129, 130, 131, 132, -1, -1, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, -1, 149, 150, -1, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, -1, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, -1, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, -1, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, -1, 322, 323, 324, 325, 326,
- -1, 328, 329, 330, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, -1, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, -1, 460, 461, 462, -1, 464, 465, 466,
- 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, -1, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, 568, 569, 570, 571, 572, -1, 574, 575, 576,
- 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
- 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
- 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, -1, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
- 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
- 657, 658, 659, -1, 661, 662, 663, 664, 665, -1,
- 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
- 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, -1, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, -1, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- -1, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, -1, 128, 129, 130, 131, 132, -1, -1, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, -1, 149, 150, -1, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, -1, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, -1, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, -1,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, -1, 322, 323, 324, 325,
- 326, -1, 328, 329, 330, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, -1, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, -1, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, -1, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, -1, 574, 575,
- 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, -1,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, -1, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- -1, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, -1, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, -1, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, -1, 128, 129, 130, 131, 132, -1, -1,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, -1, 149, 150, -1, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, -1, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, -1, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- -1, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, -1, 322, 323, 324,
- 325, 326, -1, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, -1, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, -1, 460, 461, 462, -1, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, -1, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, 568, 569, 570, 571, 572, -1, 574,
- 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
- 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- -1, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
- 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
- 645, 646, 647, 648, -1, 650, 651, 652, 653, 654,
- 655, 656, 657, 658, 659, -1, 661, 662, 663, 664,
- 665, -1, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, -1, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, -1, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, 21, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 31, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 47, 48, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
- 84, -1, -1, -1, 88, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 101, -1, -1,
- -1, -1, -1, -1, -1, -1, 110, -1, -1, -1,
-1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 131, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, 145, -1, -1, -1, -1, 150, -1, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 173,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 232, -1,
- -1, -1, 236, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 254, -1, -1, -1, 258, 259, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 251, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 289, -1, -1, -1, -1,
- -1, -1, 296, 297, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
@@ -23277,7 +21984,7 @@ static const yytype_int16 yycheck[] =
644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
@@ -23285,305 +21992,161 @@ static const yytype_int16 yycheck[] =
724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, 21, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 47, 48, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
- -1, 84, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 101, -1,
- -1, -1, -1, -1, -1, -1, -1, 110, -1, -1,
- -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 131, -1,
- -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
- -1, 144, 145, -1, -1, -1, -1, 150, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 232,
- -1, -1, -1, 236, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 254, -1, -1, -1, 258, 259, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 289, -1, -1, -1,
- -1, -1, -1, 296, 297, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
- 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
- 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
- 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
- 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
- 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
- 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
- -1, -1, 24, 25, 26, -1, 28, -1, 30, 31,
- 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 8,
+ 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, 28,
+ -1, 30, -1, 32, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 84, 85, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 251, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 8, 9, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, 20, -1, -1, -1,
+ -1, -1, -1, -1, 28, -1, 30, -1, 32, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
- -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
- 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
- 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
- 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 57, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
+ -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 251, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, 23, -1, -1, 26, 27, -1,
- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
+ -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
+ -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
+ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
+ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
+ 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
+ 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
+ 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
+ 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
+ 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
+ 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
+ 674, 675, 676, 677, 678, -1, -1, 681, 682, -1,
+ 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
+ 754, 755, 756, 757, -1, 759, 760, 761, 762, 8,
+ 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, 28,
+ -1, 30, -1, 32, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -23648,95 +22211,170 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, 21, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, 21, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 85, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, 773, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, 773, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
@@ -23796,36 +22434,35 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, 21, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 31, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, 773, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -23834,57 +22471,133 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, 21, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ 773, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, 773, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 84,
-1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -23944,7 +22657,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -23952,89 +22665,164 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ -1, -1, -1, -1, -1, 26, -1, -1, 773, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 40,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, 196, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, 209, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 265, -1, 267, -1, 269, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, 772, -1, -1, 31, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 42, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, -1, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, 21, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, 21, 766,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24092,125 +22880,200 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, 21,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 31,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 57, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
- 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, 766, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, -1, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, -1, 128,
+ 129, 130, 131, 132, -1, -1, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
+ 149, 150, -1, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, -1, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ -1, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, -1, 296, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
+ 319, 320, -1, 322, 323, 324, 325, 326, -1, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, -1, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, -1, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, -1, 574, 575, 576, 577, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, -1, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, -1, 661, 662, 663, 664, 665, -1, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, -1, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, -1,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, -1, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, -1, 128, 129, 130, 131, 132, -1, -1,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, -1, 149, 150, -1, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, -1, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, -1, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ -1, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, -1, 322, 323, 324,
+ 325, 326, -1, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, -1, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, -1, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, -1, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, -1, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ -1, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, -1, 661, 662, 663, 664,
+ 665, -1, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, -1, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, -1, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, -1, 128, 129, 130,
+ 131, 132, -1, -1, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
+ -1, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, -1, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, -1, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, -1, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ -1, 322, 323, 324, 325, 326, -1, 328, 329, 330,
331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
-1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 371, -1, 373, 374, 375, 376, 377, 378, 379, 380,
381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
@@ -24219,138 +23082,213 @@ static const yytype_int16 yycheck[] =
431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
- 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 461, 462, -1, 464, 465, 466, 467, 468, 469, 470,
471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, -1,
541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 571, 572, -1, 574, 575, 576, 577, 578, 579, 580,
581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 611, 612, 613, 614, -1, 616, 617, 618, 619, 620,
621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 641, 642, 643, 644, 645, 646, 647, 648, -1, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 661, 662, 663, 664, 665, -1, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, -1, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ -1, 128, 129, 130, 131, 132, -1, -1, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, -1, 149, 150, -1, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, -1, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, -1, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, -1, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, 320, -1, 322, 323, 324, 325, 326,
+ -1, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, -1, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, -1, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, -1, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, -1, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, -1, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, -1, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, -1, 661, 662, 663, 664, 665, -1,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, -1, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, -1, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, 21, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 47, 48, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 101, -1,
+ -1, -1, -1, -1, -1, -1, -1, 110, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 131, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, 145, -1, -1, -1, -1, 150, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ 173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 232,
+ -1, -1, -1, 236, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 254, -1, -1, -1, 258, 259, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 289, -1, -1, -1,
+ -1, -1, -1, 296, 297, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 47, 48,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, 80, -1, -1, -1, 84, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 101, -1, -1, -1, -1, -1, -1, -1,
+ -1, 110, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 131, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, 145, -1, -1, -1,
+ -1, 150, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 173, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 232, -1, -1, -1, 236, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 258,
- -1, -1, -1, -1, -1, -1, -1, -1, 267, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 254, -1, -1, -1, 258,
+ 259, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 289, -1, -1, -1, -1, -1, -1, 296, 297, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
@@ -24389,35 +23327,35 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, 21, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, 24,
+ 25, 26, -1, 28, -1, 30, 31, 32, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24427,59 +23365,134 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
- 77, -1, -1, -1, -1, -1, -1, -1, -1, 86,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 84, 85, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
@@ -24501,10 +23514,10 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, -1, 322, 323, 324, 325, 326,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
-1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, -1, -1, 353, 354, 355, 356,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
@@ -24512,8 +23525,8 @@ static const yytype_int16 yycheck[] =
397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- -1, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
@@ -24537,35 +23550,36 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ 23, -1, -1, 26, 27, -1, -1, -1, 31, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 128, -1, -1, -1, -1, -1, -1, 135,
- 136, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24574,59 +23588,133 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 57, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, 21, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 53, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 85, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24685,7 +23773,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -24693,81 +23781,156 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 84, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24778,7 +23941,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 128, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
-1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24798,7 +23961,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 323, 324, 325, 326, -1, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
@@ -24833,35 +23996,37 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 30, -1,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
+ 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24869,59 +24034,132 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, 21, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, 57, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -24981,35 +24219,36 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25019,56 +24258,130 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
- 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 258, -1, -1, -1, -1,
+ -1, -1, -1, -1, 267, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 63, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25130,36 +24443,35 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25168,59 +24480,135 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, -1, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, -1, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, -1, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 128, -1, -1,
+ -1, -1, -1, -1, 135, 136, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 53, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
@@ -25278,90 +24666,165 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, 225,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 267, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 128,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 30, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25426,7 +24889,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -25434,27 +24897,27 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 47, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25464,59 +24927,134 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25574,35 +25112,36 @@ static const yytype_int16 yycheck[] =
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
+ 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25611,52 +25150,126 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25722,35 +25335,36 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25760,51 +25374,125 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, -1, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 47, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25813,7 +25501,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
@@ -25871,35 +25559,35 @@ static const yytype_int16 yycheck[] =
649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 99, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, 144, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -25909,51 +25597,126 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
+ -1, -1, -1, -1, 225, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26019,35 +25782,35 @@ static const yytype_int16 yycheck[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, 686,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, 750, 751, 752, 753, 754, -1, 756,
- 757, 758, 759, 19, 20, -1, -1, -1, -1, -1,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
- -1, -1, -1, -1, -1, -1, -1, -1, 144, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 195,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 218, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26057,51 +25820,126 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, -1, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, -1, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, -1, -1, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, -1, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 470, 471, 472, 473, -1, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
- 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, -1, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
- 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
- 576, -1, 578, 579, 580, 581, 582, 583, 584, 585,
- 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
- 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
- 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655,
- 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
- 676, 677, 678, 679, 680, -1, 682, 683, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
- 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
- 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 751, 752, 753, 754, -1,
- 756, 757, 758, 759, 19, 20, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26167,7 +26005,7 @@ static const yytype_int16 yycheck[] =
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
- 675, 676, 677, 678, 679, 680, -1, 682, 683, 684,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
@@ -26175,29 +26013,27 @@ static const yytype_int16 yycheck[] =
725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- -1, 756, 757, 758, 759, 19, 20, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 31, -1, -1,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 99, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
+ -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26205,60 +26041,137 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, -1, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, -1, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
- 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, 660, -1, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758, 759, 19, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, -1, -1, -1, -1,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
+ -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, -1, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, -1, 415, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
+ 441, 442, -1, -1, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 455, 456, 457, 458, -1, 460,
+ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, 473, -1, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
+ 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
+ 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
+ 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
+ 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+ 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
+ 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
+ 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
+ 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
+ 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
+ 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, 753, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ -1, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
@@ -26294,18 +26207,18 @@ static const yytype_int16 yycheck[] =
433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
-1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 463, 464, 465, 466, 467, -1, 469, 470, 471, 472,
473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
- 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 503, 504, 505, -1, 507, 508, 509, 510, 511, 512,
513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
@@ -26313,37 +26226,38 @@ static const yytype_int16 yycheck[] =
623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
- 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 653, 654, 655, 656, 657, 658, 659, 660, -1, 662,
663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
- 673, 674, 675, 676, 677, 678, 679, 680, -1, 682,
- 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
- 753, 754, -1, 756, 757, 758, 759, 19, 20, -1,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
+ 19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
- -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26352,52 +26266,126 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, -1, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ -1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
+ 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
+ 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
+ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 457, 458, -1, 460, 461,
- 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
- 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
- -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
- 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
- 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
- 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
- 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
- 642, 643, 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, -1,
- 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
- 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
- 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
- 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 754, -1, 756, 757, 758, 759, 19, 20,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, -1, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
+ 755, 756, 757, -1, 759, 760, 761, 762, 19, 20,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26463,36 +26451,36 @@ static const yytype_int16 yycheck[] =
641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, 686, 687, 688, 689, 690,
+ 671, 672, 673, 674, 675, 676, 677, 678, -1, -1,
+ 681, 682, -1, 684, 685, 686, 687, 688, 689, 690,
691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
721, 722, 723, 724, 725, 726, 727, 728, 729, 730,
731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, -1,
- 751, 752, 753, 754, -1, 756, 757, 758, 759, 19,
- 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, -1,
+ 741, 742, 743, 744, 745, 746, 747, 748, 749, 750,
+ 751, 752, -1, 754, 755, 756, 757, -1, 759, 760,
+ 761, 762, 19, 20, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
+ -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 195, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 207, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 218, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26501,64 +26489,139 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, -1, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 412, 413, -1, 415, 416, 417, 418, 419,
- 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, -1, -1, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 455, 456, 457, 458, -1,
- 460, 461, 462, 463, 464, 465, 466, 467, -1, 469,
- 470, 471, 472, 473, -1, 475, 476, 477, 478, 479,
- 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
- 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
- 500, 501, 502, 503, 504, 505, -1, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
- 530, 531, -1, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
- 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
- 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
- 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
- 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
- 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
- 660, -1, 662, 663, 664, 665, 666, 667, 668, 669,
- 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
- 680, -1, 682, 683, 684, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
- 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
- 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
- 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, -1, 756, 757, 758, 759,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, -1, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, -1, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, -1, 415, 416,
+ 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
+ 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
+ 437, 438, 439, 440, 441, 442, -1, -1, 445, 446,
+ 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, -1, 460, 461, 462, 463, 464, 465, 466,
+ 467, -1, 469, 470, 471, 472, 473, -1, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, 504, 505, -1,
+ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
+ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
+ 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
+ 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
+ 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
+ 567, 568, 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
+ 597, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
+ 627, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
+ 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
+ 657, 658, 659, 660, -1, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, -1, -1, 681, 682, -1, 684, 685, 686,
+ 687, 688, 689, 690, 691, 692, 693, 694, 695, 696,
+ 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
+ 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+ 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
+ 747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, -1, 759, 760, 761, 762, 19, 20, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, 88, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ -1, 144, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 195, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 207, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 218, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 318, 319, 320, -1, 322,
+ 323, 324, 325, 326, -1, -1, -1, -1, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, -1, -1,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, -1, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, -1, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, -1, 428, 429, 430, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ -1, -1, 445, 446, 447, 448, 449, 450, 451, 452,
+ 453, 454, 455, 456, 457, 458, -1, 460, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, -1, 475, 476, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
+ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 529, 530, 531, -1,
+ 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
+ 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
+ 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
+ 573, 574, 575, 576, -1, 578, 579, 580, 581, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
+ 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
+ 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
+ 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 671, 672,
+ 673, 674, 675, 676, 677, 678, -1, -1, 681, 682,
+ -1, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 704, 705, 706, 707, 708, 709, 710, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
+ 723, 724, 725, 726, 727, 728, 729, 730, 731, 732,
+ 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 744, 745, 746, 747, 748, 749, 750, 751, 752,
+ 753, 754, 755, 756, 757, -1, 759, 760, 761, 762,
19, 20, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 86, -1, 88,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
- -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26580,270 +26643,210 @@ static const yytype_int16 yycheck[] =
-1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
349, 350, -1, -1, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, -1, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 359, 360, 361, 362, 363, 364, 365, -1, 367, 368,
+ 369, 370, 371, 372, 373, -1, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, -1, 385, 386, 387, -1,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, -1,
399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
409, 410, 411, 412, 413, -1, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, -1, 428,
+ 419, 420, 421, -1, 423, 424, 425, 426, -1, 428,
429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
439, 440, 441, 442, -1, -1, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 449, 450, 451, 452, 453, 454, 455, 456, -1, 458,
-1, 460, 461, 462, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, -1, 475, 476, 477, 478,
+ 469, -1, 471, 472, 473, -1, 475, 476, 477, 478,
479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, -1,
499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
- 559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, -1,
569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+ 579, 580, 581, -1, 583, 584, 585, 586, 587, 588,
589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
+ 599, -1, 601, 602, 603, 604, 605, 606, 607, 608,
609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 640, 641, 642, 643, 644, 645, 646, 647, 648,
- 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
+ 629, 630, -1, 632, 633, 634, 635, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, -1, 646, 647, 648,
+ 649, 650, 651, 652, -1, 654, 655, 656, 657, 658,
+ 659, 660, 661, 662, 663, 664, -1, 666, 667, 668,
669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
- 679, 680, -1, 682, 683, 684, 685, 686, 687, 688,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, 688,
689, 690, 691, 692, 693, 694, 695, 696, 697, 698,
699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
- 719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
+ 719, 720, 721, 722, 723, -1, 725, 726, 727, 728,
729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, -1, 756, 757, 758,
- 759, 19, 20, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 135, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 195, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 207,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 218, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, -1,
+ 759, 760, 761, 762, 19, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 318, 319, 320, -1, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 350, -1, -1, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, -1, 367,
- 368, 369, 370, 371, 372, 373, -1, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, -1, 385, 386, 387,
- -1, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- -1, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, -1, 415, 416, 417,
- 418, 419, 420, 421, -1, 423, 424, 425, 426, -1,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, -1, -1, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 455, 456, -1,
- 458, -1, 460, 461, 462, 463, 464, 465, 466, 467,
- 468, 469, -1, 471, 472, 473, -1, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
- -1, 499, 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, -1, 533, 534, 535, 536, 537,
- 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
- -1, 569, 570, 571, 572, 573, 574, 575, 576, -1,
- 578, 579, 580, 581, -1, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
- 598, 599, -1, 601, 602, 603, 604, 605, 606, 607,
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
- 628, 629, 630, -1, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 643, 644, -1, 646, 647,
- 648, 649, 650, 651, 652, -1, 654, 655, 656, 657,
- 658, 659, 660, 661, 662, 663, 664, -1, 666, 667,
- 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
- 678, 679, 680, -1, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, -1, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, -1, 756, 757,
- 758, 759, 19, 20, -1, -1, -1, -1, -1, -1,
+ 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
- -1, -1, -1, -1, -1, -1, -1, 144, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 195, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 218, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 311, -1, -1, -1,
+ -1, -1, -1, 318, 319, 320, 321, 322, -1, 324,
+ 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, -1, 342, 343, 344,
+ 345, 346, 347, 348, 349, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, -1, -1, 361, 362, 363, 364,
+ 365, -1, -1, -1, 369, 370, 371, 372, 373, -1,
+ 375, 376, 377, 378, -1, -1, -1, -1, -1, -1,
+ 385, -1, 387, -1, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, -1, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, -1, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, -1, 423, 424,
+ 425, 426, -1, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, -1, -1, -1, 442, -1, -1,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, -1, -1, -1, -1, -1, 461, 462, 463, 464,
+ 465, 466, -1, 468, 469, -1, 471, 472, -1, -1,
+ 475, -1, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, -1, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, -1, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
+ 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, -1, 569, 570, 571, 572, 573, 574,
+ 575, 576, -1, 578, 579, 580, 581, -1, -1, -1,
+ 585, -1, 587, 588, -1, 590, 591, 592, 593, -1,
+ 595, 596, 597, 598, -1, -1, -1, -1, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, -1, 630, -1, 632, 633, 634,
+ -1, 636, 637, -1, 639, 640, 641, 642, 643, 644,
+ -1, 646, 647, 648, 649, 650, 651, 652, -1, 654,
+ 655, 656, -1, 658, 659, 660, 661, -1, 663, 664,
+ -1, -1, 667, 668, -1, -1, 671, 672, 673, -1,
+ 675, -1, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, -1, 689, 690, -1, 692, -1, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, -1,
+ 715, 716, 717, 718, 719, 720, 721, 722, 723, -1,
+ 725, 726, -1, 728, 729, 730, 731, 19, 20, 734,
+ 735, -1, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, -1, -1,
+ 755, 756, -1, -1, 759, -1, 761, 762, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
+ -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 311, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 322, -1, 324, 325, 326,
- -1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, -1, 342, 343, 344, 345, 346,
- 347, 348, 349, -1, -1, -1, -1, 354, 355, 356,
- 357, 358, -1, -1, 361, 362, 363, 364, 365, -1,
- -1, -1, 369, 370, 371, 372, 373, -1, 375, 376,
- 377, 378, -1, -1, -1, -1, -1, -1, 385, -1,
- 387, -1, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, -1, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, -1, 413, -1, 415, 416,
- 417, 418, 419, 420, 421, -1, 423, 424, 425, 426,
- -1, 428, 429, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, -1, -1, -1, 442, -1, -1, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, -1,
- -1, -1, -1, -1, 461, 462, 463, 464, 465, 466,
- -1, 468, 469, -1, 471, 472, -1, -1, 475, -1,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, -1, 489, 490, 491, 492, 493, 494, 495, 496,
- 497, -1, 499, 500, 501, 502, 503, 504, 505, 506,
- 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
- 527, 528, 529, 530, 531, -1, 533, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554, 555, 556,
- 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
- 567, -1, 569, 570, 571, 572, 573, 574, 575, 576,
- -1, 578, 579, 580, 581, -1, -1, -1, 585, -1,
- 587, 588, -1, 590, 591, 592, 593, -1, 595, 596,
- 597, 598, -1, -1, -1, -1, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
- 627, 628, -1, 630, -1, 632, 633, 634, -1, 636,
- 637, -1, 639, 640, 641, 642, 643, 644, -1, 646,
- 647, 648, 649, 650, 651, 652, -1, 654, 655, 656,
- -1, 658, 659, 660, 661, -1, 663, 664, 19, 20,
- 667, 668, -1, -1, 671, 672, 673, -1, 675, -1,
- 677, 678, 679, 680, -1, 682, 683, 684, 685, -1,
- 687, 688, -1, 690, -1, 692, 693, 694, 695, 696,
- 697, 698, 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, -1, 713, 714, 715, 716,
- 717, 718, 719, 720, 721, -1, 723, 724, -1, 726,
- 727, 728, 729, -1, -1, 732, 733, 88, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
- 747, 748, 749, -1, -1, 752, 753, -1, -1, 756,
- -1, 758, 759, -1, -1, 116, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 135, -1, -1, -1, -1, -1,
- -1, -1, -1, 144, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 207, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 311,
+ -1, -1, -1, -1, -1, -1, 318, 319, 320, 321,
+ 322, -1, 324, 325, 326, -1, -1, -1, -1, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, -1,
+ 342, 343, 344, 345, 346, 347, 348, 349, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, -1, -1, 361,
+ 362, 363, 364, 365, -1, -1, -1, 369, 370, 371,
+ 372, 373, -1, 375, 376, 377, 378, -1, -1, -1,
+ -1, -1, -1, 385, -1, 387, -1, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, -1, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ -1, 413, -1, 415, 416, 417, 418, 419, 420, 421,
+ -1, 423, 424, 425, 426, -1, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, -1, -1, -1,
+ 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, -1, -1, -1, -1, -1, 461,
+ 462, 463, 464, 465, 466, -1, 468, 469, -1, 471,
+ 472, -1, -1, 475, -1, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, -1, 489, 490, 491,
+ 492, 493, 494, 495, 496, 497, -1, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ -1, 533, 534, 535, 536, 537, 538, 539, 540, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
+ 562, 563, 564, 565, 566, 567, -1, 569, 570, 571,
+ 572, 573, 574, 575, 576, -1, 578, 579, 580, 581,
+ -1, -1, -1, 585, -1, 587, 588, -1, 590, 591,
+ 592, 593, -1, 595, 596, 597, 598, -1, -1, -1,
+ -1, 603, 604, 605, 606, 607, 608, 609, 610, 611,
+ 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
+ 622, 623, 624, 625, 626, 627, 628, -1, 630, -1,
+ 632, 633, 634, -1, 636, 637, -1, 639, 640, 641,
+ 642, 643, 644, -1, 646, 647, 648, 649, 650, 651,
+ 652, -1, 654, 655, 656, -1, 658, 659, 660, 661,
+ -1, 663, 664, -1, -1, 667, 668, -1, -1, 671,
+ 672, 673, -1, 675, -1, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, -1, 689, 690, -1,
+ 692, -1, 694, 695, 696, 697, 698, 699, 700, 701,
+ 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
+ 712, 713, -1, 715, 716, 717, 718, 719, 720, 721,
+ 722, 723, -1, 725, 726, -1, 728, 729, 730, 731,
+ 19, 20, 734, 735, -1, 737, 738, 739, 740, 741,
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, -1, -1, 755, 756, -1, -1, 759, -1, 761,
+ 762, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 311, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, -1, 324, 325, 326, -1, -1, -1, -1,
- 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
- -1, 342, 343, 344, 345, 346, 347, 348, 349, -1,
- -1, -1, -1, 354, 355, 356, 357, 358, -1, -1,
- 361, 362, 363, 364, 365, -1, -1, -1, 369, 370,
- 371, 372, 373, -1, 375, 376, 377, 378, -1, -1,
- -1, -1, -1, -1, 385, -1, 387, -1, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, -1, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, -1, 413, -1, 415, 416, 417, 418, 419, 420,
- 421, -1, 423, 424, 425, 426, -1, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, -1, -1,
- -1, 442, -1, -1, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, -1, -1, -1, -1, -1,
- 461, 462, 463, 464, 465, 466, -1, 468, 469, -1,
- 471, 472, -1, -1, 475, -1, 477, 478, 479, 480,
- 481, 482, 483, 484, 485, 486, 487, -1, 489, 490,
- 491, 492, 493, 494, 495, 496, 497, -1, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
- 531, -1, 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 564, 565, 566, 567, -1, 569, 570,
- 571, 572, 573, 574, 575, 576, -1, 578, 579, 580,
- 581, -1, -1, -1, 585, -1, 587, 588, -1, 590,
- 591, 592, 593, -1, 595, 596, 597, 598, -1, -1,
- -1, -1, 603, 604, 605, 606, 607, 608, 609, 610,
- 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 627, 628, -1, 630,
- -1, 632, 633, 634, -1, 636, 637, -1, 639, 640,
- 641, 642, 643, 644, -1, 646, 647, 648, 649, 650,
- 651, 652, -1, 654, 655, 656, -1, 658, 659, 660,
- 661, -1, 663, 664, 19, 20, 667, 668, -1, -1,
- 671, 672, 673, -1, 675, -1, 677, 678, 679, 680,
- -1, 682, 683, 684, 685, -1, 687, 688, -1, 690,
- -1, 692, 693, 694, 695, 696, 697, 698, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
- 711, -1, 713, 714, 715, 716, 717, 718, 719, 720,
- 721, -1, 723, 724, -1, 726, 727, 728, 729, -1,
- -1, 732, 733, 88, 735, 736, 737, 738, 739, 740,
- 741, 742, 743, 744, 745, 746, 747, 748, 749, -1,
- -1, 752, 753, -1, -1, 756, -1, 758, 759, -1,
- -1, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 116, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 135, -1, -1, -1, -1, -1, -1, -1, -1, 144,
+ -1, -1, -1, -1, -1, -1, 135, -1, -1, -1,
+ -1, -1, -1, -1, -1, 144, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 195, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 207, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 218,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 207, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 218, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -26852,146 +26855,146 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 318,
+ 319, 320, 321, 322, -1, 324, 325, 326, -1, -1,
+ -1, -1, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, -1, 342, 343, 344, 345, 346, 347, 348,
+ 349, -1, -1, -1, -1, 354, 355, 356, 357, 358,
+ -1, -1, 361, 362, 363, 364, 365, -1, -1, -1,
+ 369, 370, 371, 372, 373, -1, 375, 376, 377, 378,
+ -1, -1, -1, -1, -1, -1, 385, -1, 387, -1,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, -1,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, -1, 413, -1, 415, 416, 417, 418,
+ 419, 420, 421, -1, 423, 424, 425, 426, -1, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ -1, -1, -1, 442, -1, -1, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, -1, -1, -1,
+ -1, -1, 461, 462, 463, 464, 465, 466, -1, 468,
+ 469, -1, 471, 472, -1, -1, 475, -1, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, -1,
+ 489, 490, 491, 492, 493, 494, 495, 496, 497, -1,
+ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
+ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
+ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
+ 529, 530, 531, -1, 533, 534, 535, 536, 537, 538,
+ 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 560, 561, 562, 563, 564, 565, 566, 567, -1,
+ 569, 570, 571, 572, 573, 574, 575, 576, -1, 578,
+ 579, 580, 581, -1, -1, -1, 585, -1, 587, 588,
+ -1, 590, 591, 592, 593, -1, 595, 596, 597, 598,
+ -1, -1, -1, -1, 603, 604, 605, 606, 607, 608,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
+ -1, 630, -1, 632, 633, 634, -1, 636, 637, -1,
+ 639, 640, 641, 642, 643, 644, -1, 646, 647, 648,
+ 649, 650, 651, 652, -1, 654, 655, 656, -1, 658,
+ 659, 660, 661, -1, 663, 664, -1, -1, 667, 668,
+ -1, -1, 671, 672, 673, -1, 675, -1, 677, 678,
+ -1, -1, 681, 682, -1, 684, 685, 686, 687, -1,
+ 689, 690, -1, 692, -1, 694, 695, 696, 697, 698,
+ 699, 700, 701, 702, 703, 704, 705, 706, 707, 708,
+ 709, 710, 711, 712, 713, -1, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, -1, 725, 726, -1, 728,
+ 729, 730, 731, -1, -1, 734, 735, -1, 737, 738,
+ 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
+ 749, 750, 751, 752, 19, 20, 755, 756, -1, -1,
+ 759, -1, 761, 762, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 322, -1, 324,
- 325, 326, -1, -1, -1, -1, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, -1, 342, 343, 344,
- 345, 346, 347, 348, 349, -1, -1, -1, -1, 354,
- 355, 356, 357, 358, -1, -1, 361, 362, 363, 364,
- 365, -1, -1, -1, 369, 370, 371, 372, 373, -1,
- 375, 376, 377, 378, -1, -1, -1, -1, -1, -1,
- 385, -1, 387, -1, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, -1, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, -1, 413, -1,
- 415, 416, 417, 418, 419, 420, 421, -1, 423, 424,
- 425, 426, -1, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, -1, -1, -1, 442, -1, -1,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, -1, 57, 58, 59, 60, -1, -1, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, -1,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, -1, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, -1, 128, 129, 130, 131, 132, -1, -1,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, -1, 149, 150, -1, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, -1,
+ -1, -1, 177, 178, 179, 180, 181, 182, 183, -1,
+ -1, -1, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, -1, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, -1, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, -1,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, -1, 259, 260, -1, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, -1, 280, 281, 282, 283, -1,
+ -1, -1, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, -1, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, -1, 322, 323, 324,
+ 325, 326, -1, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, -1, 352, 353, -1,
+ 355, -1, -1, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, -1, -1, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, -1,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, -1, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, -1, -1,
445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, -1, -1, -1, -1, -1, 461, 462, 463, 464,
- 465, 466, -1, 468, 469, -1, 471, 472, -1, -1,
- 475, -1, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, -1, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, -1, 499, 500, 501, 502, 503, 504,
+ -1, 456, 457, 458, -1, 460, 461, 462, -1, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, -1,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, -1, 497, 498, 499, 500, 501, 502, 503, 504,
505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
525, 526, 527, 528, 529, 530, 531, -1, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 535, 536, 537, 538, 539, -1, 541, 542, 543, 544,
545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
- 565, 566, 567, -1, 569, 570, 571, 572, 573, 574,
- 575, 576, -1, 578, 579, 580, 581, -1, -1, -1,
- 585, -1, 587, 588, -1, 590, 591, 592, 593, -1,
- 595, 596, 597, 598, -1, -1, -1, -1, 603, 604,
+ 555, 556, 557, -1, 559, 560, 561, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 572, -1, -1,
+ -1, 576, 577, 578, 579, 580, 581, 582, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
- 625, 626, 627, 628, -1, 630, -1, 632, 633, 634,
- -1, 636, 637, -1, 639, 640, 641, 642, 643, 644,
- -1, 646, 647, 648, 649, 650, 651, 652, -1, 654,
- 655, 656, -1, 658, 659, 660, 661, -1, 663, 664,
- -1, -1, 667, 668, -1, -1, 671, 672, 673, -1,
- 675, -1, 677, 678, 679, 680, -1, 682, 683, 684,
- 685, -1, 687, 688, -1, 690, -1, 692, 693, 694,
+ -1, -1, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
+ 645, 646, 647, 648, -1, 650, 651, 652, 653, 654,
+ 655, 656, 657, 658, 659, -1, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674,
+ 675, 676, 677, 678, -1, -1, 681, 682, -1, 684,
+ 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
705, 706, 707, 708, 709, 710, 711, -1, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, -1, 723, 724,
- -1, 726, 727, 728, 729, -1, -1, 732, 733, -1,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 19, 20, 752, 753, -1,
- -1, 756, -1, 758, 759, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, -1, 57, 58, 59, 60, -1, -1, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, -1, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, -1, 128, 129, 130, 131, 132, -1,
- -1, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, -1, 149, 150, -1, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- -1, -1, -1, 177, 178, 179, 180, 181, 182, 183,
- -1, -1, -1, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, -1, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, -1, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- -1, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, -1, 259, 260, -1, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, -1, 280, 281, 282, 283,
- -1, -1, -1, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, -1, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, -1, 322, 323,
- 324, 325, 326, -1, 328, 329, 330, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, 352, 353,
- -1, 355, -1, -1, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, -1, -1,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, -1, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, -1, 456, 457, 458, -1, 460, 461, 462, -1,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, -1, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, -1, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, -1, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, -1,
- -1, -1, 576, 577, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, -1, -1, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, -1, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, -1, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, -1, 711, 712, -1,
- 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, -1, 739, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, -1, 751, 752, 753,
- 754, -1, 756, 757, 758, 19, 20, -1, -1, -1,
+ -1, 716, 717, 718, 719, 720, 721, 722, 723, 724,
+ 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
+ 735, 736, 737, 738, 739, 740, -1, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, -1, 754,
+ 755, 756, 757, -1, 759, 760, 761, 19, 20, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 116, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,
- 144, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 135, -1, -1, -1, -1, -1, -1,
+ -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 195, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 207, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 218, -1, -1, -1, -1, -1,
- -1, -1, 226, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 195, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 207, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 218, -1, -1, -1,
+ -1, -1, -1, -1, 226, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -27000,51 +27003,51 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 318, 319, 320, -1, 322, 323,
- 324, 325, 326, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 347, 348, 349, 350, -1, -1, 353,
- -1, 355, -1, -1, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, -1, -1,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, -1, -1, 411, 412, 413,
- -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, -1, 428, 429, 430, -1, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, -1,
- -1, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, -1, 456, 457, 458, -1, 460, 461, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- -1, 475, 476, 477, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, -1, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511, 512, 513,
- 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 529, 530, 531, -1, 533,
- 534, 535, 536, 537, 538, 539, -1, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 554, 555, 556, 557, -1, -1, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571, 572, -1,
- -1, -1, 576, -1, 578, 579, 580, 581, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 608, 609, 610, 611, 612, 613,
- 614, -1, -1, 617, 618, 619, 620, 621, 622, 623,
- 624, 625, 626, 627, 628, 629, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, -1, 650, 651, 652, 653,
- 654, 655, 656, 657, 658, 659, -1, 661, 662, 663,
- 664, 665, -1, 667, 668, 669, 670, 671, 672, 673,
- 674, 675, 676, 677, 678, 679, 680, -1, 682, 683,
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693,
- 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 707, 708, 709, -1, 711, 712, -1,
- 714, 715, -1, 717, 718, 719, 720, 721, 722, 723,
- 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, -1, -1, 740, 741, 742, 743,
- 744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, -1, 756, 757, 758
+ -1, -1, -1, -1, -1, -1, 318, 319, 320, -1,
+ 322, 323, 324, 325, 326, -1, -1, -1, -1, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
+ -1, 353, -1, 355, -1, -1, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ -1, -1, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, -1, -1, 411,
+ 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, -1, 428, 429, 430, -1,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, -1, -1, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, -1, 456, 457, 458, -1, 460, 461,
+ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, 473, -1, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, -1, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ -1, 533, 534, 535, 536, 537, 538, 539, -1, 541,
+ 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+ 552, 553, 554, 555, 556, 557, -1, -1, 560, 561,
+ 562, 563, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, -1, -1, -1, 576, -1, 578, 579, 580, 581,
+ 582, 583, 584, 585, 586, 587, 588, 589, 590, 591,
+ 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
+ 612, 613, 614, -1, -1, 617, 618, 619, 620, 621,
+ 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
+ 632, 633, 634, 635, 636, 637, 638, 639, 640, 641,
+ 642, 643, 644, 645, 646, 647, 648, -1, 650, 651,
+ 652, 653, 654, 655, 656, 657, 658, 659, -1, 661,
+ 662, 663, 664, 665, -1, 667, 668, 669, 670, 671,
+ 672, 673, 674, 675, 676, 677, 678, -1, -1, 681,
+ 682, -1, 684, 685, 686, 687, 688, 689, 690, 691,
+ 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
+ 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
+ -1, 713, 714, -1, 716, 717, -1, 719, 720, 721,
+ 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
+ 732, 733, 734, 735, 736, 737, 738, 739, 740, -1,
+ -1, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, 753, 754, 755, 756, 757, -1, 759, 760, 761
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -27090,997 +27093,1002 @@ static const yytype_int16 yystos[] =
647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
667, 668, 669, 670, 671, 672, 673, 674, 675, 676,
- 677, 678, 679, 680, 682, 683, 684, 685, 686, 687,
- 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
- 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
- 708, 709, 710, 711, 712, 713, 714, 715, 716, 717,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 730, 731, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
- 748, 749, 750, 751, 752, 753, 754, 756, 757, 758,
- 759, 779, 789, 792, 793, 794, 795, 796, 798, 804,
- 806, 821, 868, 907, 908, 915, 916, 929, 964, 989,
- 1007, 1069, 1122, 1223, 1276, 1279, 1289, 1294, 1300, 1313,
- 1316, 1322, 1325, 1330, 1337, 1349, 1352, 1355, 1356, 1358,
- 1361, 1362, 1364, 1365, 1368, 1369, 1372, 1609, 1611, 1624,
- 1627, 1665, 1674, 1692, 1700, 1714, 1718, 1719, 1723, 1724,
- 1734, 1741, 1749, 1751, 1757, 1760, 1761, 1793, 1815, 1837,
- 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1848, 1889, 1896,
- 1898, 1907, 1910, 1946, 1948, 1953, 1954, 1955, 1956, 1981,
- 1990, 1991, 1992, 1994, 2019, 2021, 2022, 2075, 2076, 2094,
- 2100, 144, 321, 350, 352, 353, 360, 366, 368, 374,
- 388, 398, 412, 422, 427, 441, 456, 457, 463, 467,
- 470, 473, 488, 498, 568, 582, 600, 602, 631, 635,
- 645, 653, 665, 686, 689, 722, 731, 750, 757, 1815,
- 1817, 1826, 1833, 1837, 1838, 1839, 1840, 1841, 1842, 1843,
- 1846, 2002, 88, 226, 338, 413, 463, 658, 662, 735,
- 1224, 1960, 1961, 1962, 1963, 197, 460, 506, 1324, 1721,
- 1826, 965, 528, 1317, 208, 2102, 1675, 88, 145, 214,
- 226, 289, 436, 463, 644, 662, 708, 735, 743, 1623,
- 992, 859, 930, 1625, 1752, 145, 408, 758, 1766, 281,
- 704, 1892, 990, 1324, 1123, 1008, 57, 528, 1706, 258,
- 267, 904, 909, 911, 1826, 653, 735, 1892, 994, 909,
- 910, 859, 1359, 1849, 1701, 909, 1897, 1666, 1826, 1357,
- 991, 235, 1795, 1628, 173, 294, 684, 1735, 1947, 40,
- 196, 1405, 1993, 2099, 3, 31, 1820, 145, 1892, 753,
- 1950, 1610, 482, 1826, 1324, 403, 917, 1899, 805, 598,
- 676, 1826, 1324, 1742, 1950, 1826, 1758, 47, 669, 717,
- 47, 669, 1693, 598, 676, 351, 352, 388, 427, 602,
- 619, 645, 686, 1984, 1358, 1365, 1368, 0, 7, 790,
- 602, 88, 129, 145, 262, 293, 644, 735, 838, 1201,
- 1202, 1623, 1960, 1961, 1962, 1963, 128, 154, 1375, 1376,
- 1605, 1353, 1350, 119, 152, 292, 1367, 1957, 1366, 1957,
- 448, 460, 591, 787, 1720, 1721, 1812, 1826, 1362, 1364,
- 42, 787, 787, 386, 1243, 1826, 862, 1826, 763, 763,
- 862, 141, 1622, 21, 1820, 1826, 1828, 1622, 1268, 1269,
- 268, 1393, 1964, 1965, 1960, 763, 1892, 1349, 1352, 1624,
- 1627, 1665, 1674, 1717, 787, 869, 311, 945, 946, 966,
- 969, 972, 817, 818, 1820, 743, 1314, 1892, 328, 76,
- 77, 86, 144, 443, 444, 750, 891, 892, 894, 900,
- 927, 928, 1817, 1837, 1838, 1839, 1840, 1841, 1846, 1993,
- 2004, 2019, 2020, 2066, 2084, 2085, 2087, 2088, 2090, 143,
- 178, 475, 614, 1677, 1690, 1691, 1622, 1613, 63, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 658, 1892,
- 977, 1817, 2006, 2020, 47, 48, 80, 84, 101, 110,
- 131, 145, 150, 173, 232, 236, 254, 258, 259, 289,
- 296, 297, 353, 393, 436, 441, 452, 453, 607, 611,
- 617, 628, 634, 665, 669, 698, 1828, 1911, 1915, 1916,
- 1917, 1919, 1921, 1922, 1923, 1924, 945, 960, 1630, 471,
- 675, 1753, 154, 1762, 1890, 43, 77, 123, 130, 157,
- 165, 201, 246, 247, 374, 444, 582, 886, 929, 931,
- 932, 933, 934, 936, 939, 942, 943, 944, 954, 955,
- 956, 957, 958, 964, 979, 982, 989, 2011, 2012, 2026,
- 2027, 2092, 2093, 2095, 2100, 1892, 3, 8, 9, 19,
- 20, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 40, 57, 58, 59, 60, 68, 69, 71,
- 78, 79, 82, 83, 84, 85, 87, 90, 91, 99,
- 102, 120, 121, 122, 124, 132, 133, 134, 141, 150,
- 153, 162, 164, 166, 180, 181, 183, 187, 192, 196,
- 198, 199, 200, 201, 219, 220, 221, 223, 230, 241,
- 249, 250, 268, 275, 276, 278, 279, 290, 300, 301,
- 302, 308, 309, 327, 328, 329, 330, 334, 341, 349,
- 366, 379, 381, 382, 383, 398, 410, 411, 466, 478,
- 500, 501, 546, 552, 561, 562, 585, 593, 605, 649,
- 656, 663, 694, 713, 714, 715, 716, 721, 722, 735,
- 737, 749, 751, 759, 768, 769, 774, 779, 783, 784,
- 787, 1368, 1374, 1399, 1400, 1401, 1402, 1406, 1417, 1421,
- 1422, 1423, 1424, 1425, 1426, 1427, 1431, 1432, 1433, 1441,
- 1447, 1448, 1449, 1450, 1451, 1453, 1456, 1785, 1788, 1790,
- 1791, 1792, 1809, 1816, 1818, 1819, 1826, 1833, 1844, 1845,
- 65, 1009, 510, 250, 362, 370, 385, 395, 396, 397,
- 405, 543, 555, 655, 693, 707, 912, 914, 737, 905,
- 911, 1826, 859, 1622, 886, 980, 911, 47, 333, 611,
- 1908, 1909, 1917, 1919, 47, 106, 264, 266, 277, 293,
- 474, 679, 680, 681, 682, 1378, 1385, 1386, 1959, 3,
- 71, 99, 144, 321, 366, 463, 468, 506, 556, 577,
- 593, 644, 661, 687, 717, 750, 1166, 1815, 1824, 1835,
- 1837, 1838, 1839, 1841, 1842, 1843, 1846, 1850, 1860, 1871,
- 2002, 47, 49, 79, 80, 89, 145, 159, 214, 226,
- 281, 324, 344, 353, 366, 377, 400, 430, 433, 435,
- 462, 463, 468, 469, 485, 506, 528, 582, 597, 606,
- 609, 610, 624, 661, 669, 690, 747, 1166, 1200, 1702,
- 1706, 1707, 1709, 1718, 1817, 1861, 911, 1892, 178, 1673,
- 779, 1644, 1653, 945, 2008, 1794, 1630, 1736, 1826, 1950,
- 343, 2101, 1828, 1331, 1290, 50, 1951, 1399, 1472, 799,
- 299, 801, 1725, 417, 1812, 1814, 1826, 1900, 1828, 141,
- 1068, 1820, 128, 1295, 528, 613, 669, 1743, 1744, 287,
- 1951, 746, 1759, 670, 817, 232, 314, 1280, 1281, 1282,
- 670, 817, 281, 1695, 1622, 1622, 23, 26, 27, 31,
- 1786, 1787, 1821, 1983, 1983, 1983, 460, 1982, 1983, 1983,
- 780, 780, 786, 1826, 1068, 1068, 145, 1068, 1068, 662,
- 843, 145, 145, 281, 658, 214, 226, 289, 436, 1964,
- 337, 860, 860, 1960, 111, 135, 779, 784, 1374, 1377,
- 1477, 1480, 1492, 1495, 1496, 1497, 1508, 1509, 1510, 1511,
- 1513, 1514, 1515, 1812, 211, 423, 1600, 1601, 1606, 312,
- 1538, 1375, 123, 127, 168, 173, 206, 577, 1387, 1563,
- 1568, 1569, 1578, 1579, 1583, 226, 1582, 1595, 1605, 47,
- 106, 1958, 1958, 1958, 1578, 1580, 1368, 1371, 1372, 1579,
- 1581, 1370, 47, 1826, 1716, 127, 1715, 787, 1354, 1351,
- 2023, 1826, 1826, 42, 763, 1647, 1648, 1226, 734, 1228,
- 787, 542, 709, 727, 85, 1828, 1829, 1830, 1915, 1229,
- 120, 1234, 1233, 859, 281, 143, 581, 1270, 1271, 1272,
- 657, 436, 743, 1964, 1828, 1301, 1826, 779, 872, 945,
- 967, 1399, 114, 974, 972, 287, 1315, 1616, 1617, 1812,
- 2020, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 87, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 128,
- 129, 130, 131, 132, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 149, 150, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 208, 209, 210, 211, 213, 214, 215, 216,
- 217, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 296, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 328, 329,
- 330, 354, 356, 357, 373, 409, 410, 431, 455, 496,
- 558, 559, 574, 575, 577, 616, 649, 710, 713, 716,
- 739, 750, 759, 887, 927, 1128, 1130, 1131, 1132, 1134,
- 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1817,
- 1836, 1837, 1838, 1839, 1840, 1841, 1846, 1847, 2001, 2002,
- 786, 470, 782, 74, 321, 2103, 2086, 2090, 894, 786,
- 128, 1678, 128, 1678, 1679, 1680, 1687, 1688, 1826, 1690,
- 1826, 141, 1621, 1622, 862, 862, 862, 862, 1826, 859,
- 1828, 859, 1614, 1622, 1622, 993, 151, 978, 606, 1920,
- 647, 647, 705, 708, 735, 743, 779, 1398, 475, 584,
- 704, 580, 735, 89, 743, 333, 551, 633, 333, 333,
- 203, 333, 371, 528, 669, 551, 287, 203, 782, 779,
- 283, 427, 178, 414, 474, 1632, 1634, 393, 613, 1754,
- 1755, 360, 178, 392, 1768, 1812, 1893, 1894, 144, 321,
- 391, 463, 1817, 1827, 1840, 1841, 1842, 1846, 2003, 311,
- 1827, 128, 136, 561, 1826, 1827, 1827, 1827, 1826, 311,
- 1827, 1826, 427, 2092, 1994, 1995, 2021, 945, 959, 1826,
- 127, 177, 241, 313, 98, 352, 2027, 2093, 786, 1323,
- 1457, 19, 20, 30, 1816, 1833, 31, 1787, 153, 768,
- 769, 1424, 779, 779, 779, 311, 1399, 1475, 1476, 779,
- 779, 779, 779, 779, 1398, 1398, 1398, 779, 1397, 779,
- 779, 779, 779, 779, 779, 779, 779, 779, 779, 779,
- 779, 779, 1399, 779, 779, 779, 8, 779, 1473, 1474,
- 1809, 1816, 779, 779, 779, 779, 1399, 1397, 779, 779,
- 779, 779, 779, 779, 779, 779, 779, 779, 15, 779,
- 779, 779, 779, 1398, 1397, 1397, 779, 779, 1398, 779,
- 779, 779, 779, 779, 779, 779, 779, 779, 779, 779,
- 779, 31, 779, 779, 779, 779, 779, 779, 779, 779,
- 737, 779, 779, 779, 737, 779, 779, 779, 779, 31,
- 779, 779, 779, 31, 779, 779, 779, 779, 779, 779,
- 779, 779, 153, 1424, 153, 1424, 1424, 1124, 1368, 1399,
- 1793, 1826, 1816, 33, 41, 50, 208, 315, 1403, 1404,
- 35, 36, 37, 39, 156, 763, 764, 765, 1407, 55,
- 151, 167, 238, 677, 1405, 14, 43, 44, 107, 192,
- 766, 767, 768, 769, 770, 771, 772, 773, 1424, 73,
- 38, 213, 213, 751, 1821, 787, 779, 15, 1010, 54,
- 287, 782, 763, 1821, 1327, 1829, 1831, 1326, 733, 1920,
- 584, 203, 128, 203, 1360, 1386, 3, 1828, 258, 644,
- 787, 57, 99, 1167, 1168, 1647, 1828, 127, 1647, 1647,
- 1916, 99, 1816, 1854, 1863, 1851, 57, 99, 1170, 1171,
- 1828, 787, 1647, 1852, 782, 670, 1721, 779, 88, 214,
- 226, 281, 289, 324, 436, 463, 658, 735, 743, 167,
- 312, 1713, 63, 688, 376, 688, 688, 318, 688, 435,
- 688, 1713, 47, 1081, 1828, 1567, 1568, 1573, 128, 151,
- 1708, 1710, 376, 688, 127, 688, 704, 676, 47, 355,
- 399, 401, 491, 541, 588, 678, 700, 1696, 1697, 1698,
- 817, 477, 817, 1573, 1713, 1710, 510, 429, 378, 608,
- 704, 720, 1721, 1392, 688, 740, 143, 1267, 1654, 782,
- 177, 1796, 1797, 1804, 1826, 1633, 1634, 1812, 2038, 2104,
- 782, 1332, 1333, 1334, 1335, 1812, 1616, 363, 568, 239,
- 568, 1952, 782, 1399, 802, 57, 270, 416, 430, 432,
- 464, 477, 510, 528, 606, 613, 623, 637, 669, 672,
- 688, 719, 1726, 1731, 1732, 1817, 1892, 3, 74, 918,
- 919, 920, 921, 1816, 582, 232, 374, 1405, 1826, 797,
- 743, 1292, 1892, 1746, 360, 1745, 782, 653, 1826, 1952,
- 127, 1283, 1284, 1283, 580, 755, 394, 782, 1283, 1283,
- 1617, 1826, 1820, 782, 579, 1986, 699, 1987, 763, 158,
- 639, 1985, 7, 791, 1826, 825, 1068, 859, 859, 1068,
- 829, 831, 1068, 1068, 63, 1068, 1068, 836, 837, 743,
- 463, 463, 1964, 779, 1477, 1497, 1509, 1510, 1511, 1512,
- 1513, 1826, 10, 1383, 81, 147, 158, 166, 193, 249,
- 277, 1504, 1505, 782, 217, 1506, 1507, 31, 1822, 1822,
- 3, 1602, 1603, 1604, 1826, 1828, 1539, 136, 1542, 1538,
- 454, 561, 1570, 296, 8, 28, 30, 32, 251, 1574,
- 1575, 1788, 1816, 151, 65, 1575, 1567, 1387, 1826, 1387,
- 1388, 1388, 1371, 1717, 393, 1722, 1786, 1826, 1826, 1579,
- 1582, 47, 57, 99, 203, 1399, 1888, 42, 42, 1820,
- 99, 386, 1065, 1066, 1078, 1079, 1174, 408, 863, 1826,
- 1398, 3, 863, 1812, 583, 1829, 1830, 1831, 1930, 1934,
- 1622, 1272, 413, 489, 862, 1812, 743, 1302, 1303, 1617,
- 787, 870, 873, 874, 1399, 973, 311, 968, 970, 2000,
- 2016, 2017, 427, 807, 1616, 127, 364, 448, 450, 540,
- 614, 782, 1318, 1319, 1320, 2091, 779, 1149, 1150, 1152,
- 1152, 391, 1150, 1158, 1160, 779, 1145, 1146, 1150, 224,
- 1145, 1158, 57, 71, 73, 306, 341, 359, 730, 1133,
- 1138, 1140, 1160, 1166, 1175, 1177, 1133, 1158, 1133, 1145,
- 779, 1158, 1133, 1152, 1152, 1133, 1152, 779, 1145, 1158,
- 71, 307, 307, 310, 1145, 1152, 779, 890, 1152, 1152,
- 1152, 1152, 1152, 15, 787, 893, 1145, 310, 1152, 1152,
- 1152, 1152, 1152, 779, 1146, 1154, 127, 1826, 127, 352,
- 1993, 2088, 2089, 786, 786, 1812, 54, 1676, 1619, 1620,
- 1813, 1826, 127, 1381, 1382, 1538, 782, 1681, 787, 1689,
- 120, 1826, 862, 787, 1914, 1917, 1831, 1929, 1616, 1615,
- 1612, 177, 2010, 643, 976, 704, 780, 333, 1831, 333,
- 333, 1930, 214, 226, 281, 463, 861, 1918, 353, 393,
- 436, 441, 452, 453, 607, 617, 628, 634, 665, 669,
- 698, 1922, 1924, 1802, 1803, 1816, 961, 141, 1267, 479,
- 735, 1399, 1756, 1756, 1338, 506, 1767, 53, 763, 1534,
- 1535, 1536, 572, 746, 782, 1891, 44, 945, 311, 1826,
- 561, 128, 154, 945, 311, 779, 953, 177, 786, 787,
- 1996, 935, 782, 985, 983, 988, 984, 2097, 2096, 1616,
- 3, 1458, 1828, 787, 779, 47, 1466, 1537, 1466, 1466,
- 1399, 1476, 114, 311, 427, 1399, 1472, 1399, 106, 1466,
- 1537, 780, 24, 25, 26, 28, 30, 32, 780, 1587,
- 1591, 1592, 1399, 1399, 1809, 780, 1363, 1364, 1373, 1793,
- 92, 93, 94, 95, 138, 139, 140, 189, 190, 253,
- 316, 411, 478, 544, 546, 552, 612, 656, 748, 759,
- 1531, 1532, 1399, 106, 1459, 1459, 1446, 1399, 1399, 1399,
- 1531, 1399, 1399, 1399, 1816, 1474, 336, 782, 787, 106,
- 1466, 1399, 106, 1466, 1399, 1399, 1399, 1399, 1399, 780,
- 1402, 780, 1399, 1399, 780, 648, 1466, 1466, 106, 1466,
- 780, 1587, 1466, 1466, 1399, 1399, 1428, 1429, 1430, 64,
- 163, 288, 1399, 1418, 1419, 1420, 1399, 1399, 106, 1466,
- 1399, 1399, 1399, 1414, 1415, 1399, 1399, 1471, 1472, 1399,
- 1399, 409, 410, 713, 716, 1533, 1399, 1399, 1472, 1812,
- 1399, 1399, 127, 1812, 1471, 1399, 127, 1399, 1399, 1812,
- 1399, 1399, 1532, 1532, 1399, 1418, 1399, 780, 8, 787,
- 1810, 1826, 1399, 1471, 1399, 1399, 1399, 780, 782, 1364,
- 1399, 787, 1399, 1399, 1399, 1401, 122, 201, 290, 732,
- 1405, 47, 340, 1401, 1408, 1401, 779, 1374, 1401, 1401,
- 167, 55, 151, 167, 238, 1402, 1402, 1402, 1402, 1402,
- 1402, 1402, 153, 1402, 153, 1402, 1402, 1402, 1402, 1402,
- 1172, 1828, 1424, 779, 1455, 1548, 1826, 779, 136, 328,
- 329, 330, 1816, 1434, 461, 493, 567, 648, 1416, 169,
- 229, 505, 703, 1011, 1015, 1750, 1820, 914, 410, 713,
- 716, 913, 1456, 1790, 1809, 782, 287, 1328, 1329, 1812,
- 945, 782, 127, 1831, 1830, 1931, 861, 1918, 770, 1390,
- 1391, 1393, 468, 506, 661, 1862, 1647, 1917, 1826, 73,
- 1399, 1881, 1880, 1879, 787, 787, 1647, 782, 1853, 232,
- 492, 1882, 1883, 1884, 1885, 1826, 1872, 99, 717, 1816,
- 1855, 1867, 1857, 1858, 1860, 1871, 688, 127, 770, 1068,
- 63, 862, 862, 1812, 862, 318, 862, 862, 862, 1812,
- 1831, 1812, 1392, 1392, 376, 688, 1713, 862, 1713, 1708,
- 376, 688, 1713, 151, 1711, 510, 553, 688, 1705, 1705,
- 1713, 1826, 862, 1713, 1830, 1708, 1713, 1820, 490, 701,
- 451, 127, 1699, 782, 435, 688, 1812, 1710, 1708, 1708,
- 127, 1713, 1713, 1713, 1480, 1664, 1812, 1393, 1656, 1658,
- 779, 1651, 2009, 782, 779, 1800, 154, 1635, 885, 427,
- 3, 151, 782, 217, 1343, 1345, 1346, 448, 614, 1291,
- 363, 239, 1399, 800, 99, 143, 803, 1399, 1659, 1660,
- 510, 510, 510, 510, 360, 510, 817, 510, 782, 1392,
- 1727, 1828, 913, 923, 782, 763, 1535, 1901, 120, 676,
- 1399, 1293, 1616, 287, 1748, 817, 1744, 1826, 47, 1278,
- 627, 683, 1285, 1286, 127, 819, 820, 673, 1282, 819,
- 1891, 1786, 596, 1988, 1828, 833, 1826, 827, 1914, 1930,
- 1828, 1068, 1068, 822, 1812, 1068, 862, 2077, 1393, 1973,
- 847, 1393, 1068, 1068, 1068, 743, 1493, 782, 780, 780,
- 780, 780, 780, 782, 780, 1477, 47, 53, 55, 128,
- 1384, 1536, 158, 158, 210, 1516, 166, 249, 1504, 1516,
- 1477, 1495, 779, 1383, 1607, 1828, 782, 787, 1399, 65,
- 137, 1540, 1542, 251, 649, 1571, 1575, 572, 668, 746,
- 1389, 1816, 439, 251, 577, 782, 787, 664, 1564, 649,
- 1571, 1596, 1399, 2024, 2025, 1227, 1648, 1066, 73, 1166,
- 418, 191, 231, 268, 386, 398, 498, 568, 865, 867,
- 1631, 1828, 1631, 1235, 779, 480, 242, 782, 1938, 1812,
- 1232, 1231, 1812, 782, 595, 1304, 1826, 872, 780, 782,
- 283, 945, 970, 886, 68, 108, 142, 179, 481, 511,
- 512, 514, 515, 516, 517, 518, 520, 521, 522, 523,
- 524, 525, 526, 527, 529, 530, 531, 532, 625, 626,
- 808, 809, 816, 127, 1321, 734, 1617, 1319, 779, 896,
- 24, 28, 30, 32, 1158, 1157, 1647, 1158, 30, 295,
- 317, 666, 1147, 1148, 1148, 1175, 99, 1172, 1158, 1133,
- 1176, 1177, 1167, 57, 73, 391, 1161, 1148, 1222, 1786,
- 1158, 1222, 1148, 310, 1148, 1158, 888, 889, 2007, 2020,
- 42, 99, 1993, 2014, 1133, 1133, 1148, 252, 723, 1826,
- 2014, 237, 1144, 1176, 57, 1178, 1133, 1158, 1148, 30,
- 1148, 895, 26, 769, 903, 904, 1584, 1586, 2104, 1506,
- 703, 782, 1683, 787, 1689, 222, 1562, 1563, 1688, 128,
- 770, 1826, 203, 1826, 782, 782, 67, 244, 1273, 1616,
- 1616, 886, 779, 947, 950, 287, 314, 1913, 63, 770,
- 1812, 1826, 1928, 1928, 780, 782, 1999, 2016, 1635, 1399,
- 1831, 1339, 1340, 1341, 1342, 1812, 146, 144, 321, 463,
- 1817, 1823, 1832, 1837, 1838, 1839, 1840, 1841, 1842, 1843,
- 1846, 2002, 178, 232, 755, 1895, 1586, 1894, 940, 945,
- 154, 649, 1826, 937, 945, 947, 948, 952, 1826, 872,
- 1826, 977, 979, 980, 2008, 2084, 2104, 1891, 1862, 42,
- 1816, 1399, 780, 1467, 780, 780, 283, 427, 1399, 1399,
- 53, 299, 780, 299, 782, 1442, 780, 770, 780, 782,
- 782, 780, 780, 1364, 128, 780, 1444, 1445, 1399, 782,
- 782, 782, 769, 780, 782, 780, 782, 782, 780, 779,
- 1809, 1816, 1466, 780, 780, 1466, 780, 782, 782, 780,
- 780, 780, 151, 782, 782, 780, 780, 1466, 780, 780,
- 780, 780, 782, 128, 782, 780, 128, 1399, 128, 1399,
- 128, 1399, 128, 780, 782, 780, 1466, 780, 780, 782,
- 782, 780, 782, 782, 782, 780, 780, 780, 782, 780,
- 780, 782, 780, 780, 780, 1812, 780, 780, 780, 1812,
- 782, 780, 782, 782, 780, 782, 782, 782, 780, 780,
- 782, 1816, 1826, 780, 787, 53, 504, 782, 1189, 780,
- 780, 1531, 1531, 1472, 780, 785, 1816, 122, 201, 290,
- 732, 779, 50, 1399, 434, 1401, 1401, 779, 1374, 1401,
- 1401, 1399, 1399, 1549, 217, 1551, 779, 779, 779, 779,
- 779, 787, 1393, 1438, 1439, 1440, 378, 779, 1020, 1021,
- 1013, 1020, 1014, 591, 1023, 160, 472, 1399, 763, 1831,
- 1831, 782, 1891, 427, 131, 1917, 128, 782, 1928, 1928,
- 782, 1399, 1807, 1816, 787, 787, 787, 99, 144, 321,
- 463, 577, 750, 1817, 1820, 1825, 1834, 1837, 1838, 1839,
- 1840, 1842, 1843, 1846, 2002, 1875, 127, 1647, 99, 1172,
- 1173, 1831, 31, 578, 593, 1887, 1888, 1826, 1826, 1864,
- 1863, 127, 580, 755, 504, 782, 782, 1647, 1888, 787,
- 1856, 787, 1647, 782, 782, 1859, 1399, 780, 1826, 862,
- 862, 1820, 1399, 862, 1713, 1713, 862, 1713, 1820, 128,
- 1712, 859, 1713, 613, 1573, 1698, 1711, 819, 1708, 1812,
- 1713, 1713, 1399, 258, 1506, 1660, 780, 782, 1652, 886,
- 1797, 1801, 1803, 53, 1636, 1637, 2092, 2105, 1828, 99,
- 1336, 1826, 1334, 1812, 1006, 1345, 145, 160, 1198, 1347,
- 801, 782, 100, 1737, 817, 1732, 1616, 1733, 921, 924,
- 925, 920, 573, 574, 650, 922, 454, 561, 1826, 1902,
- 1903, 1820, 1616, 448, 614, 736, 1296, 1297, 1298, 1586,
- 47, 1747, 670, 782, 365, 1277, 1694, 782, 127, 1989,
- 1064, 1065, 299, 723, 1210, 1826, 314, 1912, 1938, 844,
- 1826, 1826, 1812, 824, 862, 2046, 2047, 862, 2072, 1068,
- 1068, 1812, 862, 1826, 862, 1068, 1399, 1477, 1477, 785,
- 576, 713, 717, 1379, 1380, 1426, 1380, 158, 1516, 1516,
- 1508, 158, 203, 299, 1530, 1826, 1535, 1166, 1169, 1603,
- 1826, 1399, 1543, 1808, 1541, 750, 1545, 1540, 314, 580,
- 1572, 1571, 507, 1586, 1575, 1576, 439, 1575, 1575, 1816,
- 549, 1565, 1808, 123, 779, 1888, 1888, 1064, 1820, 1648,
- 1648, 557, 268, 268, 657, 1820, 268, 268, 268, 182,
- 360, 406, 484, 547, 563, 564, 568, 569, 570, 636,
- 686, 840, 841, 88, 476, 586, 593, 599, 674, 735,
- 845, 846, 65, 314, 742, 1932, 270, 369, 494, 566,
- 695, 756, 1926, 1927, 1934, 314, 1941, 1891, 203, 855,
- 1240, 779, 1966, 1230, 1303, 127, 871, 1399, 2000, 971,
- 763, 763, 763, 763, 763, 763, 763, 763, 763, 763,
- 763, 763, 763, 763, 763, 763, 763, 763, 763, 763,
- 763, 763, 763, 763, 763, 782, 819, 734, 877, 878,
- 1826, 2067, 2068, 2069, 156, 780, 780, 780, 780, 1826,
- 782, 317, 295, 99, 1172, 1157, 780, 782, 780, 780,
- 782, 144, 1128, 1817, 1837, 1838, 1839, 1840, 1841, 1846,
- 1399, 1399, 2014, 2014, 787, 763, 1178, 209, 265, 269,
- 901, 902, 903, 906, 1405, 1826, 24, 25, 28, 30,
- 32, 427, 1380, 1620, 1826, 299, 1826, 576, 168, 1577,
- 1480, 787, 1689, 1812, 1917, 1831, 1891, 427, 897, 898,
- 951, 34, 1930, 333, 787, 787, 287, 287, 1802, 962,
- 1636, 782, 1343, 1345, 1822, 755, 506, 392, 941, 154,
- 938, 949, 780, 782, 787, 1997, 986, 975, 981, 1827,
- 981, 981, 2098, 427, 1825, 1399, 782, 1399, 1399, 283,
- 57, 71, 96, 109, 125, 153, 155, 295, 307, 409,
- 410, 559, 666, 716, 739, 1130, 1468, 1469, 1470, 1167,
- 1167, 1468, 1472, 780, 153, 153, 1399, 1472, 1472, 782,
- 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1402, 787, 780,
- 780, 1399, 1399, 1399, 1399, 1399, 780, 1399, 1399, 1399,
- 1399, 128, 1399, 128, 1399, 128, 1399, 153, 1399, 780,
- 1415, 1399, 1414, 1472, 1399, 1399, 1399, 1472, 28, 768,
- 1584, 1588, 153, 1399, 1399, 1399, 1399, 1399, 787, 787,
- 1826, 57, 71, 1184, 1185, 1186, 1187, 1188, 1587, 1586,
- 780, 769, 769, 1373, 1401, 780, 782, 1401, 50, 1399,
- 434, 1531, 1531, 1550, 1826, 65, 780, 1452, 1471, 1399,
- 1430, 1471, 1399, 1420, 1471, 1471, 1816, 1399, 780, 782,
- 779, 1029, 1402, 1021, 168, 1059, 1060, 1587, 697, 1024,
- 338, 1016, 1012, 913, 287, 1329, 287, 241, 584, 1929,
- 1830, 128, 128, 1391, 1394, 1394, 787, 787, 787, 1647,
- 1399, 1831, 1874, 1647, 779, 779, 1647, 1647, 1888, 792,
- 232, 632, 659, 1886, 1884, 1883, 1873, 1826, 1882, 1826,
- 1868, 1857, 1858, 1867, 433, 747, 1584, 1589, 1703, 30,
- 1712, 1538, 1708, 1669, 1670, 1810, 1381, 1394, 1393, 1655,
- 1657, 1660, 427, 780, 779, 1629, 1618, 1812, 786, 321,
- 1993, 2028, 1344, 779, 1660, 763, 819, 127, 314, 1728,
- 1729, 763, 782, 36, 37, 454, 499, 561, 604, 763,
- 764, 765, 1904, 1906, 1538, 127, 128, 1299, 1297, 819,
- 1286, 1820, 733, 1287, 110, 642, 1993, 2005, 1586, 545,
- 358, 472, 652, 1216, 1216, 203, 1210, 333, 1941, 126,
- 203, 203, 823, 839, 840, 2046, 2080, 386, 867, 1993,
- 2043, 2044, 2045, 2073, 1974, 862, 834, 2079, 641, 2078,
- 1812, 782, 1380, 31, 1402, 50, 287, 1477, 1508, 158,
- 158, 1477, 1508, 1498, 1499, 780, 782, 1525, 1526, 1168,
- 1608, 16, 17, 782, 1544, 51, 104, 1566, 1399, 1455,
- 1546, 1547, 1545, 712, 1572, 1576, 1389, 782, 1566, 1570,
- 1393, 1597, 1598, 1599, 1173, 1168, 408, 408, 413, 489,
- 1648, 1648, 65, 1648, 1650, 1648, 182, 547, 314, 1648,
- 1649, 1649, 841, 1236, 1820, 1820, 1820, 1820, 1586, 1820,
- 1820, 780, 782, 31, 593, 1828, 1935, 1936, 31, 31,
- 31, 50, 1925, 533, 534, 537, 538, 539, 1939, 1940,
- 331, 593, 1239, 1225, 390, 654, 240, 1241, 1826, 1967,
- 53, 1966, 47, 378, 1305, 872, 283, 779, 779, 1586,
- 779, 1586, 1586, 1820, 1820, 1589, 1820, 1586, 1820, 1820,
- 1820, 1820, 1820, 1820, 1820, 1586, 1820, 404, 568, 671,
- 1791, 122, 290, 1586, 1594, 1820, 1586, 809, 780, 782,
- 148, 151, 212, 881, 1993, 2015, 649, 927, 1128, 898,
- 30, 1176, 1786, 1176, 888, 1826, 30, 782, 2092, 461,
- 787, 1480, 1689, 1392, 251, 1575, 245, 1685, 1538, 1891,
- 1273, 177, 899, 780, 1399, 950, 314, 1943, 584, 770,
- 770, 1930, 1930, 113, 114, 115, 963, 1626, 1341, 1812,
- 1345, 143, 1348, 1763, 1399, 948, 1826, 872, 2010, 352,
- 975, 787, 1399, 1399, 1152, 1152, 1145, 1154, 95, 155,
- 1150, 1149, 1151, 1153, 1152, 155, 1153, 1150, 780, 780,
- 780, 780, 1443, 1399, 1399, 780, 206, 1461, 1461, 1399,
- 782, 782, 780, 782, 780, 780, 780, 151, 1435, 1436,
- 1816, 780, 780, 780, 780, 780, 782, 127, 782, 1399,
- 1399, 1399, 1399, 780, 780, 53, 1409, 780, 53, 780,
- 780, 780, 28, 30, 30, 780, 782, 1399, 780, 780,
- 782, 782, 780, 1816, 1826, 787, 779, 1179, 1179, 51,
- 104, 643, 768, 1181, 1182, 1183, 782, 782, 1399, 1399,
- 780, 1472, 1401, 780, 782, 1401, 1551, 1543, 206, 1454,
- 780, 780, 780, 780, 780, 780, 779, 1394, 1440, 1017,
- 1018, 1019, 1826, 780, 1589, 153, 65, 779, 1031, 763,
- 779, 1021, 1831, 1812, 128, 1931, 1931, 53, 1395, 1820,
- 1826, 770, 1816, 1826, 1826, 1876, 1888, 1887, 31, 31,
- 1866, 1865, 387, 726, 232, 1888, 1647, 1647, 1888, 24,
- 25, 28, 30, 32, 1573, 1704, 1713, 782, 1667, 1647,
- 1535, 1660, 780, 782, 177, 1363, 11, 12, 258, 1001,
- 1363, 1638, 1640, 1643, 1506, 311, 2029, 2030, 779, 225,
- 1527, 1528, 1529, 1826, 779, 1730, 232, 250, 362, 370,
- 385, 395, 396, 397, 405, 543, 555, 640, 655, 693,
- 707, 926, 925, 1905, 1573, 734, 554, 513, 816, 1288,
- 690, 690, 1812, 203, 1830, 1239, 408, 1812, 1812, 11,
- 13, 18, 145, 167, 215, 272, 273, 274, 292, 346,
- 348, 368, 386, 393, 408, 415, 430, 487, 497, 535,
- 548, 587, 593, 651, 658, 690, 705, 706, 718, 997,
- 999, 1070, 1072, 1073, 1075, 1077, 1078, 1079, 1086, 1817,
- 1070, 2081, 53, 156, 2037, 1820, 2043, 779, 882, 1993,
- 2032, 2034, 862, 848, 1966, 779, 884, 2032, 2033, 96,
- 155, 234, 692, 1084, 2033, 835, 1494, 1380, 1380, 203,
- 1501, 1508, 1508, 203, 1503, 1399, 779, 1006, 1826, 1523,
- 1524, 378, 1770, 1808, 53, 782, 1808, 1571, 1575, 1399,
- 780, 782, 1588, 1588, 1588, 1588, 1588, 1588, 1631, 846,
- 31, 53, 299, 1933, 1937, 208, 1926, 1586, 1586, 1586,
- 1791, 768, 1584, 1585, 1939, 173, 294, 1237, 446, 46,
+ 677, 678, 681, 682, 684, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 754, 755, 756, 757, 759, 760,
+ 761, 762, 783, 793, 796, 797, 798, 799, 800, 802,
+ 808, 810, 825, 868, 875, 914, 915, 922, 923, 936,
+ 971, 996, 1014, 1076, 1131, 1232, 1286, 1289, 1299, 1304,
+ 1310, 1323, 1326, 1332, 1335, 1340, 1347, 1359, 1362, 1365,
+ 1366, 1368, 1371, 1372, 1374, 1375, 1378, 1379, 1382, 1623,
+ 1625, 1638, 1641, 1679, 1688, 1706, 1714, 1728, 1732, 1733,
+ 1737, 1738, 1748, 1755, 1763, 1765, 1771, 1774, 1775, 1807,
+ 1829, 1851, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1862,
+ 1904, 1911, 1913, 1922, 1925, 1961, 1963, 1968, 1969, 1970,
+ 1971, 2001, 2010, 2011, 2012, 2014, 2043, 2045, 2046, 2093,
+ 2110, 2116, 144, 321, 350, 352, 353, 360, 366, 368,
+ 374, 388, 398, 412, 422, 427, 441, 456, 457, 463,
+ 467, 470, 473, 488, 498, 568, 582, 600, 602, 631,
+ 635, 645, 653, 665, 688, 691, 724, 733, 753, 760,
+ 1829, 1831, 1840, 1847, 1851, 1852, 1853, 1854, 1855, 1856,
+ 1857, 1860, 2028, 88, 226, 338, 413, 463, 658, 662,
+ 737, 1233, 1975, 1976, 1977, 1978, 197, 460, 506, 1334,
+ 1735, 1840, 972, 528, 1327, 208, 2118, 1689, 88, 145,
+ 214, 226, 289, 324, 436, 463, 644, 662, 710, 737,
+ 746, 865, 866, 867, 1637, 999, 863, 937, 1639, 1766,
+ 145, 408, 761, 1780, 281, 706, 1907, 997, 1334, 1132,
+ 1015, 57, 528, 1720, 258, 267, 911, 916, 918, 1840,
+ 653, 737, 1907, 1001, 916, 917, 863, 1369, 1863, 1715,
+ 916, 1912, 1680, 1840, 1367, 998, 235, 1809, 1642, 173,
+ 294, 686, 1749, 1962, 40, 196, 1419, 2013, 2115, 3,
+ 31, 1834, 145, 1907, 756, 1965, 1624, 482, 1840, 1334,
+ 403, 924, 1914, 809, 598, 676, 1840, 1334, 1756, 1965,
+ 1840, 1772, 47, 669, 719, 47, 669, 1707, 598, 676,
+ 351, 352, 388, 427, 602, 619, 645, 688, 2004, 1368,
+ 1375, 1378, 0, 7, 794, 602, 88, 129, 145, 262,
+ 293, 644, 737, 842, 1210, 1211, 1637, 1975, 1976, 1977,
+ 1978, 128, 154, 1385, 1386, 1619, 1363, 1360, 119, 152,
+ 292, 1377, 1972, 1376, 1972, 448, 460, 591, 791, 1734,
+ 1735, 1826, 1840, 1372, 1374, 42, 791, 791, 386, 1252,
+ 1840, 869, 1840, 766, 766, 869, 141, 1636, 21, 1834,
+ 1840, 1842, 1636, 1278, 1279, 268, 1403, 1979, 1980, 1975,
+ 766, 1907, 1359, 1362, 1638, 1641, 1679, 1688, 1731, 791,
+ 876, 311, 952, 953, 973, 976, 979, 821, 822, 1834,
+ 746, 1324, 1907, 328, 76, 77, 86, 144, 443, 444,
+ 753, 898, 899, 901, 907, 934, 935, 1831, 1851, 1852,
+ 1853, 1854, 1855, 1860, 2013, 2030, 2043, 2044, 2084, 2100,
+ 2101, 2103, 2104, 2106, 143, 178, 475, 614, 1691, 1704,
+ 1705, 1636, 1627, 63, 1636, 318, 1636, 1636, 1636, 1636,
+ 1636, 1636, 658, 1907, 984, 1831, 2032, 2044, 47, 48,
+ 80, 84, 101, 110, 131, 145, 150, 173, 232, 236,
+ 254, 258, 259, 289, 296, 297, 353, 393, 436, 441,
+ 452, 453, 607, 611, 617, 628, 634, 665, 669, 700,
+ 1842, 1926, 1930, 1931, 1932, 1934, 1936, 1937, 1938, 1939,
+ 952, 967, 1644, 471, 675, 1767, 154, 1776, 1905, 43,
+ 77, 123, 130, 157, 165, 201, 246, 247, 374, 444,
+ 582, 893, 936, 938, 939, 940, 941, 943, 946, 949,
+ 950, 951, 961, 962, 963, 964, 965, 971, 986, 989,
+ 996, 2037, 2038, 2050, 2051, 2108, 2109, 2111, 2116, 1907,
+ 3, 8, 9, 19, 20, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 40, 57, 58, 59,
+ 60, 68, 69, 71, 78, 79, 82, 83, 84, 85,
+ 87, 90, 91, 99, 102, 120, 121, 122, 124, 132,
+ 133, 134, 141, 150, 153, 162, 164, 166, 180, 181,
+ 183, 187, 192, 196, 198, 199, 200, 201, 219, 220,
+ 221, 223, 230, 241, 249, 250, 268, 275, 276, 278,
+ 279, 290, 300, 301, 302, 308, 309, 327, 328, 329,
+ 330, 334, 341, 349, 366, 379, 381, 382, 383, 398,
+ 410, 411, 466, 478, 500, 501, 546, 552, 561, 562,
+ 585, 593, 605, 649, 656, 663, 696, 715, 716, 717,
+ 718, 723, 724, 737, 740, 752, 754, 762, 771, 772,
+ 777, 783, 787, 788, 791, 1378, 1384, 1413, 1414, 1415,
+ 1416, 1420, 1431, 1435, 1436, 1437, 1438, 1439, 1440, 1441,
+ 1445, 1446, 1447, 1455, 1461, 1462, 1463, 1464, 1465, 1467,
+ 1470, 1799, 1802, 1804, 1805, 1806, 1823, 1830, 1832, 1833,
+ 1840, 1847, 1858, 1859, 65, 1016, 510, 250, 362, 370,
+ 385, 395, 396, 397, 405, 543, 555, 655, 695, 709,
+ 919, 921, 740, 912, 918, 1840, 863, 1636, 893, 987,
+ 918, 47, 333, 611, 1923, 1924, 1932, 1934, 47, 106,
+ 264, 266, 277, 293, 474, 681, 682, 683, 684, 1388,
+ 1395, 1396, 1974, 3, 71, 99, 144, 321, 366, 463,
+ 468, 506, 556, 577, 593, 644, 661, 689, 719, 753,
+ 1175, 1829, 1838, 1849, 1851, 1852, 1853, 1855, 1856, 1857,
+ 1860, 1864, 1874, 1885, 2028, 47, 49, 79, 80, 89,
+ 145, 159, 214, 226, 281, 324, 344, 353, 366, 377,
+ 400, 430, 433, 435, 462, 463, 468, 469, 485, 506,
+ 528, 582, 597, 606, 609, 610, 624, 661, 669, 692,
+ 750, 1175, 1209, 1716, 1720, 1721, 1723, 1732, 1831, 1875,
+ 918, 1907, 178, 1687, 783, 1658, 1667, 952, 2034, 1808,
+ 1644, 1750, 1840, 1965, 343, 2117, 1842, 1341, 1300, 50,
+ 1966, 1413, 1486, 803, 299, 805, 1739, 417, 1826, 1828,
+ 1840, 1915, 1842, 141, 1075, 1834, 128, 1305, 528, 613,
+ 669, 1757, 1758, 287, 1966, 749, 1773, 670, 821, 232,
+ 314, 1290, 1291, 1292, 670, 821, 281, 1709, 1636, 1636,
+ 23, 26, 27, 31, 1800, 1801, 1835, 2003, 2003, 2003,
+ 460, 2002, 2003, 2003, 784, 784, 790, 1840, 1075, 1075,
+ 145, 1075, 1075, 662, 847, 145, 145, 281, 658, 226,
+ 289, 436, 866, 867, 1979, 337, 864, 864, 1975, 111,
+ 135, 783, 788, 1384, 1387, 1491, 1494, 1506, 1509, 1510,
+ 1511, 1522, 1523, 1524, 1525, 1527, 1528, 1529, 1826, 211,
+ 423, 1614, 1615, 1620, 312, 1552, 1385, 123, 127, 168,
+ 173, 206, 577, 1397, 1577, 1582, 1583, 1592, 1593, 1597,
+ 226, 1596, 1609, 1619, 47, 106, 1973, 1973, 1973, 1592,
+ 1594, 1378, 1381, 1382, 1593, 1595, 1380, 47, 1840, 1730,
+ 127, 1729, 791, 1364, 1361, 2047, 1840, 1840, 42, 766,
+ 1661, 1662, 1235, 736, 1237, 791, 542, 711, 729, 85,
+ 1842, 1843, 1844, 1930, 1238, 120, 1243, 1242, 863, 281,
+ 143, 581, 1280, 1281, 1282, 657, 436, 746, 1979, 1842,
+ 1311, 1840, 783, 879, 952, 974, 1406, 114, 981, 979,
+ 287, 1325, 1630, 1631, 1826, 2044, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 87, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 128, 129, 130, 131, 132, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 149, 150, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 208, 209, 210,
+ 211, 213, 214, 215, 216, 217, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 328, 329, 330, 354, 356, 357, 373,
+ 409, 410, 431, 455, 496, 558, 559, 574, 575, 577,
+ 616, 649, 712, 715, 718, 742, 753, 762, 894, 934,
+ 1137, 1139, 1140, 1141, 1143, 1144, 1145, 1146, 1147, 1148,
+ 1149, 1150, 1151, 1152, 1831, 1850, 1851, 1852, 1853, 1854,
+ 1855, 1860, 1861, 2027, 2028, 790, 470, 786, 74, 321,
+ 2119, 2102, 2106, 901, 790, 128, 1693, 128, 1633, 1634,
+ 1693, 1694, 1695, 1827, 1840, 1704, 1840, 141, 1635, 869,
+ 869, 863, 1842, 863, 1628, 1840, 1636, 1636, 1000, 151,
+ 985, 606, 1935, 647, 647, 707, 710, 737, 746, 783,
+ 1412, 475, 584, 706, 580, 737, 80, 89, 746, 333,
+ 551, 633, 333, 333, 203, 333, 371, 528, 669, 551,
+ 287, 203, 786, 783, 283, 427, 178, 414, 474, 1646,
+ 1648, 393, 613, 1768, 1769, 360, 178, 392, 1782, 1826,
+ 1908, 1909, 144, 321, 391, 463, 1831, 1841, 1854, 1855,
+ 1856, 1860, 2029, 311, 1841, 128, 136, 561, 1840, 1841,
+ 1841, 1841, 1840, 311, 1841, 1840, 427, 2108, 2014, 2015,
+ 2045, 952, 966, 1840, 127, 177, 241, 313, 98, 352,
+ 2051, 2109, 790, 1333, 1471, 19, 20, 30, 1830, 1847,
+ 31, 1801, 153, 771, 772, 1438, 783, 783, 783, 311,
+ 1413, 1489, 1490, 783, 783, 783, 783, 783, 1412, 1412,
+ 1412, 783, 1411, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 783, 1413, 783, 783, 783,
+ 8, 783, 1487, 1488, 1823, 1830, 783, 783, 783, 783,
+ 1413, 1411, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 15, 783, 783, 783, 783, 1412, 1411, 1411,
+ 783, 783, 1412, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 31, 783, 783, 783, 783,
+ 783, 783, 783, 783, 740, 783, 783, 783, 740, 783,
+ 783, 783, 783, 31, 783, 783, 783, 31, 783, 783,
+ 783, 783, 783, 783, 783, 783, 153, 1438, 153, 1438,
+ 1438, 1133, 1378, 1413, 1807, 1840, 1830, 33, 41, 50,
+ 208, 315, 1417, 1418, 35, 36, 37, 39, 156, 766,
+ 767, 768, 1421, 55, 151, 167, 238, 677, 1419, 14,
+ 43, 44, 107, 192, 769, 770, 771, 772, 773, 774,
+ 775, 776, 1438, 73, 38, 213, 213, 754, 1835, 791,
+ 783, 15, 1017, 54, 287, 786, 766, 1835, 1337, 1843,
+ 1845, 1336, 735, 1935, 584, 203, 128, 203, 1370, 1396,
+ 3, 1842, 258, 644, 791, 57, 99, 1176, 1177, 1661,
+ 1842, 127, 1661, 1661, 1931, 99, 1830, 1868, 1877, 1865,
+ 57, 99, 1179, 1180, 1842, 791, 1661, 1866, 786, 670,
+ 1735, 783, 88, 214, 226, 281, 289, 324, 436, 463,
+ 658, 737, 746, 167, 312, 1727, 63, 690, 376, 690,
+ 690, 318, 690, 435, 690, 1727, 47, 1090, 1842, 1581,
+ 1582, 1587, 128, 151, 1722, 1724, 376, 690, 127, 690,
+ 706, 676, 47, 355, 399, 401, 491, 541, 588, 678,
+ 702, 1710, 1711, 1712, 821, 477, 821, 1587, 1727, 1724,
+ 510, 429, 378, 608, 706, 722, 1735, 1402, 690, 743,
+ 143, 1277, 1668, 786, 177, 1810, 1811, 1818, 1840, 1647,
+ 1648, 1826, 2062, 2120, 786, 1342, 1343, 1344, 1345, 1826,
+ 1630, 363, 568, 239, 568, 1967, 786, 1413, 806, 57,
+ 270, 416, 430, 432, 464, 477, 510, 528, 606, 613,
+ 623, 637, 669, 672, 690, 721, 1740, 1745, 1746, 1831,
+ 1907, 3, 74, 925, 926, 927, 928, 1830, 582, 232,
+ 374, 1419, 1840, 801, 746, 1302, 1907, 1760, 360, 1759,
+ 786, 653, 1840, 1967, 127, 1293, 1294, 1293, 580, 758,
+ 394, 786, 1293, 1293, 1631, 1840, 1834, 786, 579, 2006,
+ 701, 2007, 766, 158, 639, 2005, 7, 795, 1840, 829,
+ 1075, 863, 863, 1075, 833, 835, 1075, 1075, 1075, 840,
+ 841, 1075, 1075, 746, 463, 463, 1979, 783, 1491, 1511,
+ 1523, 1524, 1525, 1526, 1527, 1840, 10, 1393, 81, 147,
+ 158, 166, 193, 249, 277, 1518, 1519, 786, 217, 1520,
+ 1521, 31, 1836, 1836, 3, 1616, 1617, 1618, 1840, 1842,
+ 1553, 136, 1556, 1552, 454, 561, 1584, 296, 8, 28,
+ 30, 32, 251, 1588, 1589, 1802, 1830, 151, 65, 1589,
+ 1581, 1397, 1840, 1397, 1398, 1398, 1381, 1731, 393, 1736,
+ 1800, 1840, 1840, 1593, 1596, 1405, 1902, 42, 42, 1834,
+ 99, 386, 1072, 1073, 1087, 1088, 1183, 408, 870, 1840,
+ 1412, 3, 870, 1826, 583, 1843, 1844, 1845, 1945, 1949,
+ 1636, 1282, 413, 489, 869, 1826, 746, 1312, 1313, 1631,
+ 791, 877, 880, 881, 1413, 980, 311, 975, 977, 1413,
+ 2020, 2041, 2042, 427, 811, 1630, 127, 364, 448, 450,
+ 540, 614, 786, 1328, 1329, 1330, 2107, 783, 1158, 1159,
+ 1161, 1161, 391, 1159, 1167, 1169, 783, 1154, 1155, 1159,
+ 224, 1154, 1167, 57, 71, 73, 306, 341, 359, 732,
+ 1142, 1147, 1149, 1169, 1175, 1184, 1186, 1142, 1167, 1142,
+ 1154, 783, 1167, 1142, 1161, 1161, 1142, 1161, 783, 1154,
+ 1167, 71, 307, 307, 310, 1154, 1161, 783, 897, 1161,
+ 1161, 1161, 1161, 1161, 15, 791, 900, 1154, 310, 1161,
+ 1161, 1161, 1161, 1161, 783, 1155, 1163, 127, 1840, 127,
+ 352, 2013, 2104, 2105, 790, 790, 1826, 54, 1690, 1633,
+ 1840, 786, 1697, 127, 1391, 1392, 1552, 791, 1703, 120,
+ 1840, 1929, 1932, 1845, 1944, 1630, 791, 1629, 1626, 177,
+ 2036, 643, 983, 706, 784, 333, 647, 1845, 333, 333,
+ 1945, 281, 865, 1933, 353, 393, 436, 441, 452, 453,
+ 607, 617, 628, 634, 665, 669, 700, 1937, 1939, 1816,
+ 1817, 1830, 968, 141, 1277, 479, 737, 1413, 1770, 1770,
+ 1348, 506, 1781, 53, 766, 1548, 1549, 1550, 572, 749,
+ 786, 1906, 44, 952, 311, 1840, 561, 128, 154, 952,
+ 311, 783, 960, 177, 790, 791, 2016, 942, 786, 992,
+ 990, 995, 991, 2113, 2112, 1630, 3, 1472, 1842, 791,
+ 783, 47, 1480, 1551, 1480, 1480, 1413, 1490, 114, 311,
+ 427, 1413, 1486, 1413, 106, 1480, 1551, 784, 24, 25,
+ 26, 28, 30, 32, 784, 1601, 1605, 1606, 1413, 1413,
+ 1823, 784, 1373, 1374, 1383, 1807, 92, 93, 94, 95,
+ 138, 139, 140, 189, 190, 253, 316, 411, 478, 544,
+ 546, 552, 612, 656, 751, 762, 1545, 1546, 1413, 106,
+ 1473, 1473, 1460, 1413, 1413, 1413, 1545, 1413, 1413, 1413,
+ 1830, 1488, 336, 786, 791, 106, 1480, 1413, 106, 1480,
+ 1413, 1413, 1413, 1413, 1413, 784, 1416, 784, 1413, 1413,
+ 784, 648, 1480, 1480, 106, 1480, 784, 1601, 1480, 1480,
+ 1413, 1413, 1442, 1443, 1444, 64, 163, 288, 1413, 1432,
+ 1433, 1434, 1413, 1413, 106, 1480, 1413, 1413, 1413, 1428,
+ 1429, 1413, 1413, 1485, 1486, 1413, 1413, 409, 410, 715,
+ 718, 1547, 1413, 1413, 1486, 1826, 1413, 1413, 127, 1826,
+ 1485, 1413, 127, 1413, 1413, 1826, 1413, 1413, 1546, 1546,
+ 1413, 1432, 1413, 784, 8, 791, 1824, 1840, 1413, 1485,
+ 1413, 1413, 1413, 784, 786, 1374, 1413, 791, 1413, 1413,
+ 1413, 1415, 122, 201, 290, 734, 1419, 47, 340, 1415,
+ 1422, 1415, 783, 1384, 1415, 1415, 167, 55, 151, 167,
+ 238, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 153, 1416,
+ 153, 1416, 1416, 1416, 1416, 1416, 1181, 1842, 1438, 783,
+ 1469, 1562, 1840, 783, 136, 328, 329, 330, 1830, 1448,
+ 461, 493, 567, 648, 1430, 169, 229, 505, 705, 1018,
+ 1022, 1764, 1834, 921, 410, 715, 718, 920, 1470, 1804,
+ 1823, 786, 287, 1338, 1339, 1826, 952, 786, 127, 1845,
+ 1844, 1946, 865, 1933, 773, 1400, 1401, 1403, 468, 506,
+ 661, 1876, 1661, 1932, 1840, 73, 1413, 1895, 1894, 1893,
+ 791, 791, 1661, 786, 1867, 232, 492, 1896, 1897, 1898,
+ 1899, 1840, 1886, 99, 719, 1830, 1869, 1881, 1871, 1872,
+ 1874, 1885, 690, 127, 773, 1075, 63, 869, 869, 1826,
+ 869, 318, 869, 869, 869, 1826, 1845, 1826, 1402, 1402,
+ 376, 690, 1727, 869, 1727, 1722, 376, 690, 1727, 151,
+ 1725, 510, 553, 690, 1719, 1719, 1727, 1840, 869, 1727,
+ 1844, 1722, 1727, 1834, 490, 703, 451, 127, 1713, 786,
+ 435, 690, 1826, 1724, 1722, 1722, 127, 1727, 1727, 1727,
+ 1494, 1678, 1826, 1403, 1670, 1672, 783, 1665, 2035, 786,
+ 783, 1814, 154, 1649, 892, 427, 3, 151, 786, 217,
+ 1353, 1355, 1356, 448, 614, 1301, 363, 239, 1413, 804,
+ 99, 143, 807, 1413, 1673, 1674, 510, 510, 510, 510,
+ 360, 510, 821, 510, 786, 1402, 1741, 1842, 920, 930,
+ 786, 766, 1549, 1916, 120, 676, 1413, 1303, 1630, 287,
+ 1762, 821, 1758, 1840, 47, 1288, 627, 685, 1295, 1296,
+ 127, 823, 824, 673, 1292, 823, 1906, 1800, 596, 2008,
+ 1842, 837, 1840, 831, 1929, 1945, 1842, 1075, 1075, 826,
+ 1826, 2094, 1403, 1988, 851, 1403, 869, 869, 1075, 1075,
+ 1075, 746, 1507, 786, 784, 784, 784, 784, 784, 786,
+ 784, 1491, 47, 53, 55, 128, 1394, 1550, 158, 158,
+ 210, 1530, 166, 249, 1518, 1530, 1491, 1509, 783, 1393,
+ 1621, 1842, 786, 791, 1413, 65, 137, 1554, 1556, 251,
+ 649, 1585, 1589, 572, 668, 749, 1399, 1830, 439, 251,
+ 577, 786, 791, 664, 1578, 649, 1585, 1610, 1413, 47,
+ 57, 99, 203, 1413, 1903, 2048, 2049, 1236, 1662, 1073,
+ 73, 1175, 418, 191, 231, 268, 386, 398, 498, 568,
+ 872, 874, 1645, 1842, 1645, 1244, 783, 480, 242, 786,
+ 1953, 1826, 1241, 1240, 1826, 786, 595, 1314, 1840, 879,
+ 784, 786, 283, 952, 977, 1404, 893, 68, 108, 142,
+ 179, 481, 511, 512, 514, 515, 516, 517, 518, 520,
+ 521, 522, 523, 524, 525, 526, 527, 529, 530, 531,
+ 532, 625, 626, 812, 813, 820, 127, 1331, 736, 1631,
+ 1329, 783, 903, 24, 28, 30, 32, 1167, 1166, 1661,
+ 1167, 30, 295, 317, 666, 1156, 1157, 1157, 1184, 99,
+ 1181, 1167, 1142, 1185, 1186, 1176, 57, 73, 391, 1170,
+ 1157, 1231, 1800, 1167, 1231, 1157, 310, 1157, 1167, 895,
+ 896, 2033, 2044, 42, 99, 2013, 2039, 1142, 1142, 1157,
+ 252, 725, 1840, 2039, 237, 1153, 1185, 57, 1187, 1142,
+ 1167, 1157, 30, 1157, 902, 26, 772, 910, 911, 1598,
+ 1600, 2120, 1520, 705, 1692, 1699, 791, 1634, 128, 222,
+ 1576, 1577, 773, 1840, 203, 786, 786, 67, 244, 1283,
+ 1840, 1630, 1630, 893, 783, 954, 957, 287, 314, 1928,
+ 773, 1826, 1840, 1943, 1943, 784, 786, 2019, 2041, 1649,
+ 1413, 1845, 1349, 1350, 1351, 1352, 1826, 146, 144, 321,
+ 463, 1831, 1837, 1846, 1851, 1852, 1853, 1854, 1855, 1856,
+ 1857, 1860, 2028, 178, 232, 758, 1910, 1600, 1909, 947,
+ 952, 154, 649, 1840, 944, 952, 954, 955, 959, 1840,
+ 879, 1840, 984, 986, 987, 2034, 2100, 2120, 1906, 1876,
+ 42, 1830, 1413, 784, 1481, 784, 784, 283, 427, 1413,
+ 1413, 53, 299, 784, 299, 786, 1456, 784, 773, 784,
+ 786, 786, 784, 784, 1374, 128, 784, 1458, 1459, 1413,
+ 786, 786, 786, 772, 784, 786, 784, 786, 786, 784,
+ 783, 1823, 1830, 1480, 784, 784, 1480, 784, 786, 786,
+ 784, 784, 784, 151, 786, 786, 784, 784, 1480, 784,
+ 784, 784, 784, 786, 128, 786, 784, 128, 1413, 128,
+ 1413, 128, 1413, 128, 784, 786, 784, 1480, 784, 784,
+ 786, 786, 784, 786, 786, 786, 784, 784, 784, 786,
+ 784, 784, 786, 784, 784, 784, 1826, 784, 784, 784,
+ 1826, 786, 784, 786, 786, 784, 786, 786, 786, 784,
+ 784, 786, 1830, 1840, 784, 791, 53, 504, 786, 1198,
+ 784, 784, 1545, 1545, 1486, 784, 789, 1830, 122, 201,
+ 290, 734, 783, 50, 1413, 434, 1415, 1415, 783, 1384,
+ 1415, 1415, 1413, 1413, 1563, 217, 1565, 783, 783, 783,
+ 783, 783, 791, 1403, 1452, 1453, 1454, 378, 783, 1027,
+ 1028, 1020, 1027, 1021, 591, 1030, 160, 472, 1413, 766,
+ 1845, 1845, 786, 1906, 427, 131, 1932, 128, 786, 1943,
+ 1943, 786, 1413, 1821, 1830, 791, 791, 791, 99, 144,
+ 321, 463, 577, 753, 1831, 1834, 1839, 1848, 1851, 1852,
+ 1853, 1854, 1856, 1857, 1860, 2028, 1889, 127, 1661, 99,
+ 1181, 1182, 1845, 31, 578, 593, 1901, 1902, 1840, 1840,
+ 1878, 1877, 127, 580, 758, 504, 786, 786, 1661, 1902,
+ 791, 1870, 791, 1661, 786, 786, 1873, 1413, 784, 1840,
+ 869, 869, 1834, 1413, 869, 1727, 1727, 869, 1727, 1834,
+ 128, 1726, 863, 1727, 613, 1587, 1712, 1725, 823, 1722,
+ 1826, 1727, 1727, 1413, 258, 1520, 1674, 784, 786, 1666,
+ 893, 1811, 1815, 1817, 53, 1650, 1651, 2108, 2121, 1842,
+ 99, 1346, 1840, 1344, 1826, 1013, 1355, 145, 160, 1207,
+ 1357, 805, 786, 100, 1751, 821, 1746, 1630, 1747, 928,
+ 931, 932, 927, 573, 574, 650, 929, 454, 561, 1840,
+ 1917, 1918, 1834, 1630, 448, 614, 738, 1306, 1307, 1308,
+ 1600, 47, 1761, 670, 786, 365, 1287, 1708, 786, 127,
+ 2009, 1071, 1072, 299, 725, 1219, 1840, 314, 1927, 1953,
+ 848, 1840, 1840, 1826, 828, 869, 2090, 1075, 1075, 1999,
+ 2000, 1999, 1826, 869, 1840, 869, 1075, 1413, 1491, 1491,
+ 789, 576, 715, 719, 1389, 1390, 1440, 1390, 158, 1530,
+ 1530, 1522, 158, 203, 299, 1544, 1840, 1549, 1175, 1178,
+ 1617, 1840, 1413, 1557, 1822, 1555, 753, 1559, 1554, 314,
+ 580, 1586, 1585, 507, 1600, 1589, 1590, 439, 1589, 1589,
+ 1830, 549, 1579, 1822, 123, 783, 1404, 1404, 1404, 1902,
+ 1902, 1071, 1834, 1662, 1662, 557, 268, 268, 657, 1834,
+ 268, 268, 268, 182, 360, 406, 484, 547, 563, 564,
+ 568, 569, 570, 636, 688, 844, 845, 88, 476, 586,
+ 593, 599, 674, 737, 849, 850, 65, 314, 745, 1947,
+ 270, 369, 494, 566, 697, 759, 1941, 1942, 1949, 314,
+ 1956, 1906, 203, 859, 1249, 783, 1981, 1239, 1313, 127,
+ 878, 1413, 2020, 978, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 786,
+ 823, 736, 884, 885, 1840, 2085, 2086, 2087, 156, 784,
+ 784, 784, 784, 1840, 786, 317, 295, 99, 1181, 1166,
+ 784, 786, 784, 784, 786, 144, 1137, 1831, 1851, 1852,
+ 1853, 1854, 1855, 1860, 1405, 1405, 2039, 2039, 791, 766,
+ 1187, 209, 265, 269, 908, 909, 910, 913, 1419, 1840,
+ 24, 25, 28, 30, 32, 427, 1390, 1645, 299, 1840,
+ 1494, 576, 168, 1591, 791, 1703, 1826, 1932, 1845, 1906,
+ 427, 904, 905, 958, 34, 1945, 333, 791, 791, 287,
+ 287, 1816, 969, 1650, 786, 1353, 1355, 1836, 758, 506,
+ 392, 948, 154, 945, 956, 784, 786, 791, 2017, 993,
+ 982, 988, 1841, 988, 988, 2114, 427, 1839, 1413, 786,
+ 1413, 1413, 283, 57, 71, 96, 109, 125, 153, 155,
+ 295, 307, 409, 410, 559, 666, 718, 742, 1139, 1482,
+ 1483, 1484, 1176, 1176, 1482, 1486, 784, 153, 153, 1413,
+ 1486, 1486, 786, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
+ 1416, 791, 784, 784, 1413, 1413, 1413, 1413, 1413, 784,
+ 1413, 1413, 1413, 1413, 128, 1413, 128, 1413, 128, 1413,
+ 153, 1413, 784, 1429, 1413, 1428, 1486, 1413, 1413, 1413,
+ 1486, 28, 771, 1598, 1602, 153, 1413, 1413, 1413, 1413,
+ 1413, 791, 791, 1840, 57, 71, 1193, 1194, 1195, 1196,
+ 1197, 1601, 1600, 784, 772, 772, 1383, 1415, 784, 786,
+ 1415, 50, 1413, 434, 1545, 1545, 1564, 1840, 65, 784,
+ 1466, 1485, 1413, 1444, 1485, 1413, 1434, 1485, 1485, 1830,
+ 1413, 784, 786, 783, 1036, 1416, 1028, 168, 1066, 1067,
+ 1601, 699, 1031, 338, 1023, 1019, 920, 287, 1339, 287,
+ 241, 584, 1944, 1844, 128, 128, 1401, 1404, 1404, 791,
+ 791, 791, 1661, 1405, 1845, 1888, 1661, 783, 783, 1661,
+ 1661, 1902, 796, 232, 632, 659, 1900, 1898, 1897, 1887,
+ 1840, 1896, 1840, 1882, 1871, 1872, 1881, 433, 750, 1598,
+ 1603, 1717, 30, 1726, 1552, 1722, 1683, 1684, 1824, 1391,
+ 1404, 1403, 1669, 1671, 1674, 427, 784, 783, 1643, 1632,
+ 1826, 790, 321, 2013, 2052, 1354, 783, 1674, 766, 823,
+ 127, 314, 1742, 1743, 766, 786, 36, 37, 454, 499,
+ 561, 604, 766, 767, 768, 1919, 1921, 1552, 127, 128,
+ 1309, 1307, 823, 1296, 1834, 735, 1297, 110, 642, 2013,
+ 2031, 1600, 545, 358, 472, 652, 1225, 1225, 203, 1219,
+ 333, 1956, 126, 203, 203, 827, 843, 844, 2091, 1989,
+ 869, 2097, 386, 874, 1996, 1997, 1998, 2098, 838, 2096,
+ 641, 2095, 1826, 786, 1390, 31, 1416, 50, 287, 1491,
+ 1522, 158, 158, 1491, 1522, 1512, 1513, 784, 786, 1539,
+ 1540, 1177, 1622, 16, 17, 786, 1558, 51, 104, 1580,
+ 1413, 1469, 1560, 1561, 1559, 714, 1586, 1590, 1399, 786,
+ 1580, 1584, 1403, 1611, 1612, 1613, 1182, 1177, 408, 408,
+ 413, 489, 1662, 1662, 65, 1662, 1664, 1662, 182, 547,
+ 314, 1662, 1663, 1663, 845, 1245, 1834, 1834, 1834, 1834,
+ 1600, 1834, 1834, 784, 786, 31, 593, 1842, 1950, 1951,
+ 31, 31, 31, 50, 1940, 533, 534, 537, 538, 539,
+ 1954, 1955, 331, 593, 1248, 1234, 390, 654, 240, 1250,
+ 1840, 1982, 53, 1981, 47, 378, 1315, 879, 283, 783,
+ 783, 1600, 783, 1600, 1600, 1834, 1834, 1603, 1834, 1600,
+ 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1600, 1834, 404,
+ 568, 671, 1805, 122, 290, 1600, 1608, 1834, 1600, 813,
+ 784, 786, 148, 151, 212, 888, 2013, 2040, 649, 934,
+ 1137, 905, 30, 1185, 1800, 1185, 895, 1413, 1413, 1840,
+ 30, 786, 2108, 461, 1494, 1552, 1402, 251, 1589, 245,
+ 1701, 1906, 1283, 177, 906, 784, 1405, 957, 314, 1958,
+ 584, 773, 773, 1945, 1945, 113, 114, 115, 970, 1640,
+ 1351, 1826, 1355, 143, 1358, 1777, 1405, 955, 1840, 879,
+ 2036, 352, 982, 791, 1413, 1413, 1161, 1161, 1154, 1163,
+ 95, 155, 1159, 1158, 1160, 1162, 1161, 155, 1162, 1159,
+ 784, 784, 784, 784, 1457, 1413, 1413, 784, 206, 1475,
+ 1475, 1413, 786, 786, 784, 786, 784, 784, 784, 151,
+ 1449, 1450, 1830, 784, 784, 784, 784, 784, 786, 127,
+ 786, 1413, 1413, 1413, 1413, 784, 784, 53, 1423, 784,
+ 53, 784, 784, 784, 28, 30, 30, 784, 786, 1413,
+ 784, 784, 786, 786, 784, 1830, 1840, 791, 783, 1188,
+ 1188, 51, 104, 643, 771, 1190, 1191, 1192, 786, 786,
+ 1413, 1413, 784, 1486, 1415, 784, 786, 1415, 1565, 1557,
+ 206, 1468, 784, 784, 784, 784, 784, 784, 783, 1404,
+ 1454, 1024, 1025, 1026, 1840, 784, 1603, 153, 65, 783,
+ 1038, 766, 783, 1028, 1845, 1826, 128, 1946, 1946, 53,
+ 1409, 1834, 1840, 773, 1830, 1840, 1840, 1890, 1413, 1902,
+ 1901, 31, 31, 1880, 1879, 387, 728, 232, 1902, 1661,
+ 1661, 1902, 24, 25, 28, 30, 32, 1587, 1718, 1727,
+ 786, 1681, 1661, 1549, 1674, 784, 786, 177, 1373, 11,
+ 12, 258, 1008, 1373, 1652, 1654, 1657, 1520, 311, 2053,
+ 2054, 783, 225, 1541, 1542, 1543, 1840, 783, 1744, 232,
+ 250, 362, 370, 385, 395, 396, 397, 405, 543, 555,
+ 640, 655, 695, 709, 933, 932, 1920, 1587, 736, 554,
+ 513, 679, 680, 820, 1298, 692, 692, 1826, 203, 1844,
+ 1248, 408, 1826, 1826, 11, 13, 18, 145, 167, 215,
+ 272, 273, 274, 292, 346, 348, 368, 386, 393, 408,
+ 415, 430, 487, 497, 535, 548, 587, 593, 617, 651,
+ 658, 692, 707, 708, 720, 757, 1004, 1006, 1077, 1079,
+ 1080, 1082, 1083, 1084, 1086, 1087, 1088, 1095, 1831, 1077,
+ 783, 889, 2013, 2056, 2058, 869, 852, 53, 156, 2061,
+ 1834, 1996, 2061, 1981, 783, 891, 2022, 2056, 2057, 96,
+ 155, 234, 694, 1093, 2022, 839, 1508, 1390, 1390, 203,
+ 1515, 1522, 1522, 203, 1517, 1413, 783, 1013, 1840, 1537,
+ 1538, 378, 1784, 1822, 53, 786, 1822, 1585, 1589, 1413,
+ 784, 786, 1602, 1602, 1602, 1602, 1602, 1602, 1645, 850,
+ 31, 53, 299, 1948, 1952, 208, 1941, 1600, 1600, 1600,
+ 1805, 771, 1598, 1599, 1954, 173, 294, 1246, 446, 46,
48, 49, 70, 72, 78, 110, 173, 204, 206, 217,
240, 338, 375, 419, 420, 426, 438, 459, 483, 550,
- 618, 629, 630, 631, 722, 1004, 1071, 1073, 1244, 1249,
- 1251, 1254, 1260, 1261, 1262, 1264, 1265, 1559, 1405, 1949,
- 342, 437, 849, 287, 419, 426, 851, 780, 782, 1968,
- 1969, 53, 47, 779, 1306, 2000, 812, 813, 1586, 814,
- 815, 1586, 810, 811, 1586, 2068, 212, 890, 15, 787,
- 780, 902, 1826, 1538, 1826, 439, 251, 1686, 1682, 1349,
- 1793, 131, 1938, 1938, 960, 1999, 960, 1638, 1348, 502,
- 143, 328, 1769, 1998, 987, 2104, 1826, 1176, 1151, 1176,
- 1176, 780, 1531, 1531, 65, 256, 1460, 168, 1463, 1464,
- 780, 1399, 1399, 1472, 193, 357, 780, 314, 1437, 1399,
- 1399, 1399, 1531, 96, 109, 125, 155, 234, 295, 409,
- 410, 558, 559, 716, 1138, 1139, 1410, 1411, 1412, 1413,
- 1468, 1594, 1531, 1399, 1399, 1826, 1587, 780, 1189, 1184,
- 1182, 1184, 1185, 1586, 780, 1472, 206, 1552, 65, 780,
- 1471, 1395, 780, 782, 347, 1062, 1399, 1015, 217, 1032,
- 1033, 1034, 1587, 1017, 1931, 1820, 1826, 787, 1647, 1647,
- 1888, 780, 780, 1888, 1888, 1870, 1869, 1573, 1670, 1538,
- 99, 1659, 1525, 1394, 1660, 780, 1641, 1642, 1805, 1806,
- 1810, 1826, 1793, 1639, 1685, 1643, 2031, 2030, 47, 1250,
- 1258, 1259, 1826, 780, 782, 1589, 1738, 1739, 447, 173,
- 779, 763, 782, 826, 1812, 754, 830, 832, 75, 594,
- 787, 1087, 1088, 1089, 1090, 1098, 1099, 1104, 1105, 1106,
- 1198, 1201, 1202, 1811, 1826, 167, 741, 418, 1812, 1648,
- 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 418,
- 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
- 421, 541, 1826, 1648, 1648, 1002, 1003, 1004, 782, 1072,
- 998, 1647, 2037, 226, 463, 1993, 2063, 2064, 2065, 883,
- 864, 54, 335, 995, 203, 53, 875, 876, 247, 676,
- 247, 1966, 22, 29, 31, 1478, 1500, 299, 1502, 299,
- 1530, 143, 298, 459, 1518, 1519, 1522, 117, 118, 205,
- 282, 1771, 1772, 170, 1773, 1566, 1548, 1547, 1566, 1572,
- 1571, 1394, 1599, 593, 1820, 1935, 30, 30, 593, 99,
- 153, 560, 1238, 75, 217, 384, 594, 702, 1090, 1098,
- 1099, 1266, 1198, 1266, 217, 1266, 217, 217, 281, 287,
- 75, 126, 217, 594, 702, 1103, 1198, 1266, 1648, 217,
- 65, 1006, 53, 287, 384, 763, 1198, 1275, 1648, 217,
- 159, 705, 159, 217, 705, 1266, 217, 592, 217, 217,
- 217, 1071, 782, 1003, 1249, 779, 1089, 603, 1399, 1399,
- 203, 855, 862, 203, 386, 856, 1826, 1631, 1363, 1968,
- 1307, 485, 780, 782, 780, 782, 780, 782, 252, 1826,
- 1684, 128, 439, 1390, 1631, 584, 314, 1942, 1942, 203,
- 1661, 154, 872, 981, 427, 780, 780, 1462, 1808, 1786,
- 1463, 1465, 1574, 780, 780, 782, 780, 498, 549, 613,
- 780, 780, 1145, 155, 1153, 71, 1153, 1176, 780, 780,
- 782, 780, 780, 780, 1180, 780, 782, 780, 65, 229,
- 251, 1553, 1554, 1808, 780, 1019, 1531, 160, 472, 780,
- 782, 1035, 780, 770, 1878, 1877, 1888, 1888, 819, 1562,
- 406, 1798, 780, 782, 787, 1364, 1645, 1646, 1810, 1631,
- 901, 780, 782, 1528, 780, 782, 50, 1740, 1657, 1820,
- 816, 779, 828, 1828, 779, 779, 1221, 1811, 10, 127,
- 1100, 1826, 780, 782, 72, 126, 225, 293, 1102, 1197,
- 1104, 1068, 1198, 1199, 1199, 1107, 787, 1812, 1648, 99,
- 1586, 1593, 99, 1586, 99, 1586, 99, 1586, 1074, 1589,
- 1586, 1586, 1820, 1820, 1648, 1586, 1828, 454, 499, 568,
- 1083, 1586, 1589, 1589, 99, 1586, 1820, 99, 389, 391,
- 425, 455, 588, 622, 1082, 1593, 1586, 1593, 1000, 1769,
- 1072, 1070, 26, 28, 30, 32, 99, 1590, 1591, 1820,
- 1826, 226, 463, 892, 1817, 1837, 1840, 1841, 1846, 2049,
- 2050, 2051, 2057, 2062, 2065, 2018, 2055, 2018, 2053, 427,
- 2065, 879, 880, 2068, 865, 866, 1949, 2074, 101, 150,
- 296, 996, 654, 1968, 780, 877, 1979, 1980, 1820, 1979,
- 53, 31, 378, 1481, 1399, 779, 1399, 779, 780, 1198,
- 1198, 1519, 65, 65, 117, 65, 1772, 271, 282, 1774,
- 1775, 1572, 779, 446, 30, 331, 141, 1068, 141, 1067,
- 741, 1067, 1621, 1621, 1324, 1621, 1250, 1259, 1812, 1166,
- 1621, 160, 1622, 10, 1621, 741, 225, 1621, 1621, 99,
- 1826, 1324, 1560, 1561, 1810, 1005, 1621, 1621, 1812, 99,
- 1826, 1324, 1259, 1621, 1324, 1324, 1324, 1250, 46, 78,
- 110, 1262, 1085, 1087, 335, 454, 1274, 1531, 669, 1820,
- 422, 1242, 314, 1970, 1631, 1310, 1826, 47, 779, 1308,
- 813, 815, 811, 15, 787, 1631, 1402, 131, 1939, 1944,
- 1945, 424, 1685, 281, 975, 782, 1566, 780, 1399, 549,
- 445, 1589, 780, 1586, 1565, 780, 55, 403, 410, 713,
- 716, 725, 1555, 1556, 1790, 1566, 685, 1061, 1016, 779,
- 1022, 1034, 1036, 1826, 1888, 1888, 1577, 1799, 1805, 770,
- 1826, 780, 782, 1647, 283, 1259, 1739, 419, 780, 1218,
- 1220, 1826, 779, 583, 1218, 1218, 779, 1826, 1088, 779,
- 160, 160, 1199, 1068, 236, 1191, 1221, 1826, 1068, 1068,
- 660, 927, 1108, 1129, 1131, 1826, 780, 1820, 779, 1820,
- 53, 1063, 1002, 2055, 2053, 786, 2082, 2051, 2062, 2057,
- 2052, 786, 2052, 786, 2013, 780, 782, 105, 2037, 203,
- 849, 864, 2070, 1128, 2070, 1968, 779, 780, 1530, 1530,
- 127, 1517, 1517, 1786, 1786, 65, 1786, 65, 65, 1775,
- 31, 1238, 411, 1237, 1405, 1324, 1405, 1100, 1826, 1811,
- 1250, 1811, 1246, 287, 1248, 1168, 1811, 1621, 1258, 127,
- 160, 1811, 1811, 1250, 782, 1566, 1009, 1826, 1811, 1587,
- 314, 1106, 1250, 1255, 1250, 780, 1826, 850, 857, 858,
- 72, 361, 506, 780, 782, 1309, 252, 723, 1826, 287,
- 584, 1945, 1662, 1631, 1812, 1808, 780, 780, 780, 725,
- 1556, 1557, 1790, 649, 601, 440, 1558, 601, 1790, 1062,
- 779, 1029, 1025, 99, 303, 304, 403, 475, 1037, 1668,
- 1803, 787, 1646, 1660, 2016, 367, 780, 782, 1566, 779,
- 1218, 779, 780, 780, 1826, 779, 1399, 1068, 1221, 1826,
- 1812, 299, 1209, 723, 1221, 1221, 1110, 787, 1101, 1102,
- 1109, 787, 1733, 1001, 1000, 2037, 2060, 2037, 2058, 352,
- 427, 2048, 1826, 1826, 862, 1993, 2035, 2068, 2039, 2040,
- 1393, 854, 855, 2071, 2035, 2035, 195, 1482, 1483, 1826,
- 1535, 780, 780, 136, 158, 206, 1521, 1520, 1786, 1786,
- 1786, 780, 120, 1252, 120, 144, 196, 1217, 110, 258,
- 1106, 1318, 281, 287, 73, 1811, 1826, 1273, 1245, 1561,
- 287, 287, 281, 1274, 1256, 1258, 1247, 685, 852, 2092,
- 584, 72, 72, 1826, 225, 1311, 1312, 1826, 15, 1402,
- 160, 1506, 1566, 458, 50, 458, 136, 403, 568, 712,
- 1027, 1028, 1826, 780, 696, 1030, 1039, 711, 145, 386,
- 393, 408, 535, 548, 565, 705, 1053, 1054, 1055, 1058,
- 1075, 1707, 1631, 244, 770, 1891, 1220, 30, 782, 1219,
- 845, 1891, 1891, 782, 1826, 780, 1221, 1209, 723, 779,
- 1192, 1216, 1091, 1216, 1093, 1094, 18, 225, 293, 386,
- 495, 752, 1075, 1111, 1112, 1121, 1163, 1164, 1165, 1190,
- 1405, 1131, 73, 99, 201, 203, 346, 465, 660, 1115,
- 1117, 1155, 1156, 1164, 1826, 780, 1076, 1077, 2018, 786,
- 2018, 786, 2104, 2083, 2056, 2054, 2035, 2084, 1975, 851,
- 2037, 218, 780, 782, 1484, 65, 65, 779, 779, 1811,
- 591, 779, 1253, 144, 99, 99, 1274, 1812, 217, 1173,
- 1324, 1826, 1811, 1812, 1257, 1296, 1399, 428, 853, 6,
- 842, 584, 584, 780, 782, 723, 296, 1764, 1557, 649,
- 209, 323, 780, 782, 1587, 779, 1041, 1043, 1038, 418,
- 1648, 1648, 418, 1648, 1648, 1648, 1648, 779, 1048, 1055,
- 430, 299, 386, 497, 723, 744, 1075, 1203, 1206, 1211,
- 1212, 1213, 1217, 1566, 780, 1826, 780, 780, 314, 1204,
- 1208, 1212, 1215, 1205, 1207, 1212, 1214, 1826, 782, 1097,
- 1095, 1216, 1193, 1826, 180, 1194, 779, 1092, 779, 779,
- 160, 1820, 702, 1164, 741, 160, 201, 1172, 19, 20,
- 768, 769, 779, 1125, 1126, 1127, 1374, 1421, 1789, 296,
- 339, 99, 53, 391, 1156, 1162, 2061, 2059, 427, 2013,
- 2034, 2033, 2041, 1812, 856, 2039, 1478, 1483, 127, 1132,
- 1134, 1135, 1136, 1486, 1487, 1527, 1529, 1102, 1587, 1032,
- 1127, 1006, 1034, 1006, 154, 1399, 1312, 1663, 1169, 1026,
- 1028, 779, 1042, 1043, 1044, 182, 1040, 1043, 1648, 1820,
- 1820, 1648, 1590, 1590, 1587, 1828, 697, 1049, 1050, 1648,
- 1216, 1820, 1648, 1216, 1263, 1264, 1265, 1213, 752, 1891,
- 589, 1263, 1215, 1263, 1214, 780, 1826, 779, 779, 1096,
- 780, 782, 462, 590, 667, 203, 1195, 1218, 779, 1218,
- 1218, 426, 1159, 1791, 1791, 1124, 198, 737, 649, 1125,
- 1157, 1155, 2039, 2039, 2035, 864, 247, 352, 127, 422,
- 842, 1485, 207, 120, 218, 780, 780, 780, 779, 1671,
- 1672, 1810, 1765, 1030, 780, 782, 182, 1046, 1047, 1402,
- 1820, 1820, 1051, 780, 782, 1080, 1828, 1586, 1265, 1264,
- 585, 1203, 1817, 780, 1218, 1218, 779, 1826, 101, 296,
- 780, 1218, 780, 780, 780, 779, 1396, 427, 686, 1116,
- 1826, 1993, 2036, 2036, 1979, 2104, 1393, 857, 1481, 218,
- 1478, 1032, 782, 1647, 251, 1776, 1043, 782, 1045, 1052,
- 1828, 1050, 1263, 780, 1219, 1218, 67, 244, 258, 568,
- 1196, 1196, 1203, 780, 1204, 1205, 780, 1587, 1113, 1114,
- 1163, 1113, 595, 691, 745, 1118, 864, 2042, 1976, 1478,
- 99, 201, 432, 1488, 1489, 1490, 1491, 780, 1672, 1660,
- 480, 1770, 1047, 780, 1056, 1057, 1058, 1191, 780, 1219,
- 99, 201, 332, 203, 203, 1203, 780, 1163, 1119, 1120,
- 1121, 427, 112, 24, 25, 28, 30, 1478, 1479, 203,
- 1489, 1491, 1489, 1490, 65, 1773, 1058, 1203, 780, 296,
- 101, 1121, 649, 116, 432, 203, 203, 1786, 143, 1777,
- 1203, 1196, 1196, 1977, 30, 779, 1779, 457, 600, 1971,
- 1972, 170, 251, 1778, 3, 780, 1780, 1781, 1810, 258,
- 1782, 1828, 1978, 1828, 780, 782, 1783, 1784, 1810, 1631,
- 2092, 1781, 782, 1647, 842, 1784, 1393, 1660, 1394
+ 618, 629, 630, 631, 724, 1011, 1078, 1080, 1253, 1258,
+ 1260, 1263, 1269, 1270, 1271, 1274, 1275, 1573, 1419, 1964,
+ 342, 437, 853, 287, 419, 426, 855, 784, 786, 1983,
+ 1984, 53, 47, 783, 1316, 2020, 816, 817, 1600, 818,
+ 819, 1600, 814, 815, 1600, 2086, 212, 897, 15, 791,
+ 784, 1404, 1404, 909, 1552, 1698, 1840, 439, 251, 1702,
+ 1696, 1403, 1413, 131, 1953, 1953, 967, 2019, 967, 1652,
+ 1358, 502, 143, 328, 1783, 1413, 2018, 994, 2120, 1840,
+ 1185, 1160, 1185, 1185, 784, 1545, 1545, 65, 256, 1474,
+ 168, 1477, 1478, 784, 1413, 1413, 1486, 193, 357, 784,
+ 314, 1451, 1413, 1413, 1413, 1545, 96, 109, 125, 155,
+ 234, 295, 409, 410, 558, 559, 718, 1147, 1148, 1424,
+ 1425, 1426, 1427, 1482, 1608, 1545, 1413, 1413, 1840, 1601,
+ 784, 1198, 1193, 1191, 1193, 1194, 1600, 784, 1486, 206,
+ 1566, 65, 784, 1485, 1409, 784, 786, 347, 1069, 1413,
+ 1022, 217, 1039, 1040, 1041, 1601, 1024, 1946, 1834, 1840,
+ 791, 1661, 1661, 1902, 1404, 784, 784, 1902, 1902, 1884,
+ 1883, 1587, 1684, 1552, 99, 1673, 1539, 1404, 1674, 784,
+ 1655, 1656, 1819, 1820, 1824, 1840, 1807, 1653, 1701, 1657,
+ 2055, 2054, 47, 1259, 1267, 1268, 1840, 784, 786, 1603,
+ 1752, 1753, 447, 173, 783, 766, 766, 766, 786, 830,
+ 1826, 757, 834, 836, 75, 594, 791, 1096, 1097, 1098,
+ 1099, 1107, 1108, 1113, 1114, 1115, 1207, 1210, 1211, 1825,
+ 1840, 167, 744, 418, 1826, 1662, 1662, 1662, 1662, 1662,
+ 1662, 1662, 1662, 1662, 1662, 418, 1662, 1662, 1662, 1662,
+ 1662, 1662, 1662, 1662, 1662, 1662, 421, 541, 1840, 1662,
+ 1662, 1009, 1010, 1011, 786, 1079, 1661, 1005, 890, 871,
+ 54, 335, 1002, 203, 226, 463, 2013, 2081, 2082, 2083,
+ 226, 463, 899, 1831, 1851, 1854, 1855, 1860, 2024, 2067,
+ 2068, 2070, 2071, 2076, 2083, 53, 882, 883, 247, 2023,
+ 676, 2023, 1981, 22, 29, 31, 1492, 1514, 299, 1516,
+ 299, 1544, 143, 298, 459, 1532, 1533, 1536, 117, 118,
+ 205, 282, 1785, 1786, 170, 1787, 1580, 1562, 1561, 1580,
+ 1586, 1585, 1404, 1613, 593, 1834, 1950, 30, 30, 593,
+ 99, 153, 560, 1247, 75, 217, 384, 594, 704, 1099,
+ 1107, 1108, 1276, 1207, 1276, 217, 1276, 217, 217, 281,
+ 287, 75, 126, 217, 594, 704, 1112, 1207, 1276, 1662,
+ 217, 65, 1013, 53, 287, 384, 766, 1207, 1285, 1662,
+ 217, 159, 707, 159, 217, 707, 1276, 217, 592, 217,
+ 217, 217, 1078, 786, 1010, 1258, 783, 1098, 603, 1413,
+ 1413, 203, 859, 869, 203, 386, 860, 1840, 1645, 1373,
+ 1983, 1317, 485, 784, 786, 784, 786, 784, 786, 252,
+ 1840, 1700, 1645, 128, 439, 1400, 1645, 1359, 1807, 1404,
+ 584, 314, 1957, 1957, 203, 1675, 154, 1404, 879, 988,
+ 427, 784, 784, 1476, 1822, 1800, 1477, 1479, 1588, 784,
+ 784, 786, 784, 498, 549, 613, 784, 784, 1154, 155,
+ 1162, 71, 1162, 1185, 784, 784, 786, 784, 784, 784,
+ 1189, 784, 786, 784, 65, 229, 251, 1567, 1568, 1822,
+ 784, 1026, 1545, 160, 472, 784, 786, 1042, 784, 773,
+ 1892, 1891, 1902, 1902, 823, 1576, 406, 1812, 784, 786,
+ 791, 1374, 1659, 1660, 1824, 1645, 908, 784, 786, 1542,
+ 784, 786, 50, 1754, 1671, 1834, 1834, 1834, 820, 783,
+ 832, 1842, 783, 783, 1230, 1825, 10, 127, 1109, 1840,
+ 784, 786, 72, 126, 225, 293, 1111, 1206, 1113, 1075,
+ 1207, 1208, 1208, 1116, 791, 1826, 1662, 99, 1600, 1607,
+ 99, 1600, 99, 1600, 99, 1600, 1081, 1603, 1600, 1600,
+ 1834, 1834, 1662, 1600, 1842, 454, 499, 568, 1092, 1600,
+ 1603, 1603, 99, 1600, 1834, 99, 389, 391, 425, 455,
+ 588, 622, 1091, 1607, 1600, 1607, 1007, 1783, 1079, 26,
+ 28, 30, 32, 99, 1604, 1605, 1834, 1840, 1077, 886,
+ 887, 2086, 872, 873, 1964, 2092, 101, 150, 296, 1003,
+ 654, 1408, 2074, 1408, 2072, 427, 2083, 2074, 2072, 790,
+ 352, 427, 2069, 2024, 2071, 2076, 1983, 784, 884, 1994,
+ 1995, 871, 2088, 1834, 2088, 53, 31, 378, 1495, 1413,
+ 783, 1413, 783, 784, 1207, 1207, 1533, 65, 65, 117,
+ 65, 1786, 271, 282, 1788, 1789, 1586, 783, 446, 30,
+ 331, 141, 1075, 141, 1074, 744, 1074, 1635, 1635, 1334,
+ 1635, 1259, 1268, 1826, 1175, 1635, 160, 1636, 10, 1635,
+ 744, 225, 1635, 1635, 99, 1840, 1334, 1574, 1575, 1824,
+ 1012, 1635, 1635, 1826, 99, 1840, 1334, 1268, 1635, 1334,
+ 1334, 1334, 1259, 46, 78, 110, 1271, 1094, 1096, 335,
+ 454, 1284, 1545, 669, 1834, 422, 1251, 314, 1985, 1645,
+ 1320, 1840, 47, 783, 1318, 817, 819, 815, 15, 791,
+ 1645, 1416, 1404, 131, 1954, 1959, 1960, 424, 1701, 281,
+ 982, 786, 1580, 784, 1413, 549, 445, 1603, 784, 1600,
+ 1579, 784, 55, 403, 410, 715, 718, 727, 1569, 1570,
+ 1804, 1580, 687, 1068, 1023, 783, 1029, 1041, 1043, 1840,
+ 1902, 1902, 1591, 1813, 1819, 773, 1840, 784, 786, 1661,
+ 283, 1268, 1753, 419, 784, 1227, 1229, 1840, 783, 583,
+ 1227, 1227, 783, 1840, 1097, 783, 160, 160, 1208, 1075,
+ 236, 1200, 1230, 1840, 1075, 1075, 660, 934, 1117, 1138,
+ 1140, 1840, 784, 1834, 783, 1834, 53, 1070, 1009, 784,
+ 786, 105, 2061, 203, 853, 1840, 790, 1840, 790, 1407,
+ 2061, 2079, 2061, 2077, 2120, 2099, 1137, 2089, 869, 2013,
+ 2059, 2059, 1983, 783, 784, 1544, 1544, 127, 1531, 1531,
+ 1800, 1800, 65, 1800, 65, 65, 1789, 31, 1247, 411,
+ 1246, 1419, 1334, 1419, 1109, 1840, 1825, 1259, 1825, 1255,
+ 287, 1257, 1177, 1825, 1635, 1267, 127, 160, 1825, 1825,
+ 1259, 786, 1580, 1016, 1840, 1825, 1601, 314, 1115, 1259,
+ 1264, 1259, 784, 1840, 854, 861, 862, 72, 361, 506,
+ 784, 786, 1319, 252, 725, 1840, 287, 584, 1960, 1676,
+ 1645, 1826, 1822, 784, 784, 784, 727, 1570, 1571, 1804,
+ 649, 601, 440, 1572, 601, 1804, 1069, 783, 1036, 1032,
+ 99, 303, 304, 403, 475, 1044, 1682, 1817, 791, 1660,
+ 1674, 2041, 367, 784, 786, 1580, 783, 1227, 783, 784,
+ 784, 1840, 783, 1413, 1075, 1230, 1840, 1826, 299, 1218,
+ 725, 1230, 1230, 1119, 791, 1110, 1111, 1118, 791, 1747,
+ 1008, 1007, 2086, 2063, 2064, 1403, 858, 859, 2075, 2073,
+ 2059, 1408, 790, 1408, 790, 427, 1407, 2061, 195, 1496,
+ 1497, 1840, 1549, 784, 784, 136, 158, 206, 1535, 1534,
+ 1800, 1800, 1800, 784, 120, 1261, 120, 144, 196, 1226,
+ 110, 258, 1115, 1328, 281, 287, 73, 1825, 1840, 1283,
+ 1254, 1575, 287, 287, 281, 1284, 1265, 1267, 1256, 687,
+ 856, 2108, 584, 72, 72, 1840, 225, 1321, 1322, 1840,
+ 15, 1416, 160, 1520, 1580, 458, 50, 458, 136, 403,
+ 568, 714, 1034, 1035, 1840, 784, 698, 1037, 1046, 713,
+ 145, 386, 393, 408, 535, 548, 565, 707, 1060, 1061,
+ 1062, 1065, 1082, 1721, 1645, 244, 773, 1906, 1229, 30,
+ 786, 1228, 849, 1906, 1906, 786, 1840, 784, 1230, 1218,
+ 725, 783, 1201, 1225, 1100, 1225, 1102, 1103, 18, 225,
+ 293, 386, 495, 755, 1082, 1120, 1121, 1130, 1172, 1173,
+ 1174, 1199, 1419, 1140, 73, 99, 201, 203, 346, 465,
+ 660, 1124, 1126, 1164, 1165, 1173, 1840, 784, 1085, 1086,
+ 2059, 2100, 1990, 855, 2021, 2058, 2022, 2080, 2078, 2059,
+ 2063, 218, 784, 786, 1498, 65, 65, 783, 783, 1825,
+ 591, 783, 1262, 144, 99, 99, 1284, 1826, 217, 1182,
+ 1334, 1840, 1825, 1826, 1266, 1306, 1413, 428, 857, 6,
+ 846, 584, 584, 784, 786, 725, 296, 1778, 1571, 649,
+ 209, 323, 784, 786, 1601, 783, 1048, 1050, 1045, 418,
+ 1662, 1662, 418, 1662, 1662, 1662, 1662, 783, 1055, 1062,
+ 430, 299, 386, 497, 725, 747, 1082, 1212, 1215, 1220,
+ 1221, 1222, 1226, 1580, 784, 1840, 784, 784, 314, 1213,
+ 1217, 1221, 1224, 1214, 1216, 1221, 1223, 1840, 786, 1106,
+ 1104, 1225, 1202, 1840, 180, 1203, 783, 1101, 783, 783,
+ 160, 1834, 704, 1173, 744, 160, 201, 1181, 19, 20,
+ 771, 772, 783, 1134, 1135, 1136, 1384, 1435, 1803, 296,
+ 339, 99, 53, 391, 1165, 1171, 2065, 1826, 860, 871,
+ 2023, 2026, 2063, 2025, 2063, 846, 1492, 1497, 127, 1141,
+ 1143, 1144, 1145, 1500, 1501, 1541, 1543, 1111, 1601, 1039,
+ 1136, 314, 755, 1272, 1041, 1272, 154, 1413, 1322, 1677,
+ 1178, 1033, 1035, 783, 1049, 1050, 1051, 182, 1047, 1050,
+ 1662, 1834, 1834, 1662, 1604, 1604, 1601, 1842, 699, 1056,
+ 1057, 1662, 1225, 1834, 1662, 1225, 1273, 1274, 1275, 1222,
+ 755, 1906, 589, 1273, 1224, 1273, 1223, 784, 1840, 783,
+ 783, 1105, 784, 786, 462, 590, 667, 203, 1204, 1227,
+ 783, 1227, 1227, 426, 1168, 1805, 1805, 1133, 198, 740,
+ 649, 1134, 1166, 1164, 352, 127, 422, 871, 1840, 2013,
+ 2060, 2060, 1499, 207, 120, 218, 784, 784, 784, 739,
+ 739, 1013, 1272, 1013, 783, 1685, 1686, 1824, 1779, 1037,
+ 784, 786, 182, 1053, 1054, 1416, 1834, 1834, 1058, 784,
+ 786, 1089, 1842, 1600, 1275, 1274, 585, 1212, 1831, 784,
+ 1227, 1227, 783, 1840, 101, 296, 784, 1227, 784, 784,
+ 784, 783, 1410, 427, 688, 1125, 2120, 1403, 861, 1495,
+ 218, 1492, 1013, 1039, 786, 1661, 251, 1790, 1050, 786,
+ 1052, 1059, 1842, 1057, 1273, 784, 1228, 1227, 67, 244,
+ 258, 568, 1205, 1205, 1212, 784, 1213, 1214, 784, 1601,
+ 1122, 1123, 1172, 1122, 595, 693, 748, 1127, 2066, 1991,
+ 1492, 99, 201, 432, 1502, 1503, 1504, 1505, 784, 1686,
+ 1674, 480, 1784, 1054, 784, 1063, 1064, 1065, 1200, 784,
+ 1228, 99, 201, 332, 203, 203, 1212, 784, 1172, 1128,
+ 1129, 1130, 427, 112, 24, 25, 28, 30, 1492, 1493,
+ 203, 1503, 1505, 1503, 1504, 65, 1787, 1065, 1212, 784,
+ 296, 101, 1130, 649, 116, 432, 203, 203, 1800, 143,
+ 1791, 1212, 1205, 1205, 1992, 30, 783, 1793, 457, 600,
+ 1986, 1987, 170, 251, 1792, 3, 784, 1794, 1795, 1824,
+ 258, 1796, 1842, 1993, 1842, 784, 786, 1797, 1798, 1824,
+ 1645, 2108, 1795, 786, 1661, 846, 1798, 1403, 1674, 1404
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int16 yyr1[] =
{
- 0, 788, 789, 790, 789, 789, 791, 791, 792, 792,
- 792, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 794, 795, 795, 797, 796, 798, 799, 800, 798,
- 801, 802, 801, 803, 803, 805, 804, 807, 806, 808,
- 808, 809, 809, 809, 809, 809, 809, 809, 809, 809,
- 809, 809, 809, 809, 809, 809, 809, 809, 809, 809,
- 809, 810, 810, 810, 811, 812, 812, 812, 813, 814,
- 814, 814, 815, 816, 816, 816, 816, 816, 816, 816,
- 816, 817, 817, 818, 819, 819, 820, 822, 823, 821,
- 824, 821, 825, 826, 821, 827, 828, 821, 829, 830,
- 821, 831, 832, 821, 833, 821, 834, 821, 835, 821,
- 836, 821, 837, 821, 821, 821, 838, 821, 821, 839,
- 839, 840, 840, 841, 841, 841, 841, 841, 841, 841,
- 841, 841, 841, 841, 841, 841, 841, 842, 842, 844,
- 843, 845, 845, 846, 846, 846, 846, 846, 846, 846,
- 848, 847, 850, 849, 849, 851, 851, 851, 851, 852,
- 852, 853, 853, 854, 854, 855, 856, 856, 858, 857,
- 859, 860, 860, 861, 861, 861, 861, 862, 862, 863,
- 863, 864, 864, 865, 865, 865, 865, 865, 865, 865,
- 866, 866, 867, 867, 869, 868, 870, 868, 871, 868,
- 872, 872, 873, 873, 874, 874, 875, 876, 875, 877,
- 877, 878, 879, 879, 880, 880, 881, 881, 881, 883,
- 882, 884, 885, 885, 886, 886, 887, 887, 887, 888,
- 889, 889, 890, 891, 893, 892, 892, 892, 895, 894,
- 896, 896, 897, 899, 898, 900, 900, 900, 900, 901,
- 901, 902, 903, 903, 904, 905, 905, 906, 906, 906,
- 906, 906, 906, 907, 907, 908, 909, 909, 910, 910,
- 911, 911, 912, 912, 913, 913, 913, 914, 914, 914,
- 914, 914, 914, 914, 914, 914, 914, 914, 914, 914,
- 915, 916, 917, 917, 918, 918, 919, 919, 920, 921,
- 921, 922, 922, 922, 923, 924, 924, 925, 926, 926,
- 926, 926, 926, 926, 926, 926, 926, 926, 926, 926,
- 926, 926, 927, 927, 928, 928, 930, 929, 932, 931,
- 933, 933, 935, 934, 934, 936, 936, 937, 936, 938,
- 936, 939, 939, 940, 939, 941, 939, 942, 943, 944,
- 946, 945, 947, 949, 948, 951, 950, 952, 952, 953,
- 953, 954, 954, 954, 955, 956, 956, 956, 957, 957,
- 958, 959, 959, 961, 962, 960, 963, 963, 963, 963,
- 965, 964, 967, 966, 966, 968, 968, 969, 969, 971,
- 970, 973, 972, 974, 974, 975, 975, 976, 976, 977,
- 978, 978, 978, 979, 980, 981, 983, 982, 984, 982,
- 985, 986, 987, 982, 988, 982, 990, 989, 991, 989,
- 992, 993, 989, 994, 989, 995, 995, 996, 996, 996,
- 998, 997, 997, 997, 999, 999, 1000, 1000, 1001, 1001,
- 1002, 1003, 1003, 1005, 1004, 1006, 1008, 1007, 1010, 1009,
- 1011, 1012, 1011, 1011, 1011, 1013, 1011, 1011, 1014, 1011,
- 1015, 1015, 1016, 1016, 1017, 1017, 1018, 1018, 1019, 1020,
- 1021, 1022, 1023, 1023, 1024, 1025, 1024, 1026, 1024, 1027,
- 1027, 1028, 1029, 1030, 1030, 1031, 1031, 1032, 1032, 1033,
- 1033, 1035, 1034, 1036, 1037, 1038, 1037, 1039, 1037, 1037,
- 1037, 1037, 1040, 1040, 1041, 1041, 1042, 1042, 1044, 1045,
- 1043, 1046, 1046, 1047, 1047, 1048, 1048, 1049, 1049, 1051,
- 1050, 1052, 1053, 1053, 1054, 1054, 1055, 1055, 1056, 1056,
- 1057, 1057, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058,
- 1058, 1059, 1060, 1059, 1059, 1061, 1061, 1062, 1062, 1063,
- 1063, 1064, 1064, 1065, 1065, 1066, 1066, 1066, 1067, 1067,
- 1068, 1068, 1069, 1069, 1070, 1070, 1071, 1071, 1072, 1072,
- 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
- 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
- 1073, 1074, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
- 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1075, 1075, 1075,
- 1075, 1076, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1082,
- 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1084, 1084,
- 1084, 1084, 1085, 1086, 1087, 1087, 1088, 1088, 1088, 1088,
- 1088, 1089, 1089, 1091, 1090, 1092, 1090, 1093, 1090, 1094,
- 1090, 1095, 1090, 1096, 1090, 1097, 1090, 1098, 1099, 1100,
- 1101, 1101, 1102, 1103, 1103, 1104, 1104, 1105, 1107, 1106,
- 1109, 1108, 1110, 1108, 1111, 1111, 1112, 1112, 1113, 1113,
- 1114, 1114, 1115, 1115, 1115, 1115, 1116, 1115, 1115, 1115,
- 1117, 1117, 1118, 1118, 1118, 1118, 1119, 1119, 1120, 1120,
- 1121, 1121, 1121, 1121, 1123, 1122, 1124, 1124, 1125, 1125,
- 1126, 1126, 1127, 1127, 1128, 1129, 1129, 1130, 1130, 1130,
- 1131, 1131, 1131, 1131, 1131, 1131, 1132, 1132, 1132, 1132,
- 1132, 1132, 1132, 1132, 1132, 1132, 1133, 1133, 1133, 1133,
- 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1135, 1135,
- 1135, 1135, 1135, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
- 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1137, 1137,
- 1138, 1139, 1139, 1140, 1140, 1141, 1141, 1141, 1141, 1141,
- 1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1144, 1144,
- 1145, 1145, 1145, 1146, 1147, 1147, 1147, 1147, 1147, 1147,
- 1148, 1149, 1149, 1149, 1149, 1150, 1151, 1152, 1152, 1153,
- 1153, 1154, 1154, 1155, 1155, 1156, 1156, 1156, 1156, 1156,
- 1156, 1156, 1157, 1157, 1158, 1158, 1159, 1159, 1160, 1161,
- 1162, 1163, 1163, 1163, 1164, 1164, 1164, 1165, 1165, 1166,
- 1166, 1167, 1167, 1168, 1168, 1169, 1169, 1170, 1170, 1171,
- 1171, 1172, 1173, 1173, 1174, 1174, 1175, 1175, 1175, 1176,
- 1176, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
- 1178, 1178, 1180, 1179, 1181, 1181, 1182, 1183, 1183, 1183,
- 1183, 1184, 1185, 1186, 1186, 1187, 1188, 1188, 1189, 1189,
- 1190, 1190, 1191, 1192, 1192, 1193, 1193, 1194, 1194, 1194,
- 1194, 1195, 1195, 1195, 1195, 1195, 1196, 1196, 1196, 1196,
- 1196, 1197, 1197, 1198, 1198, 1199, 1199, 1200, 1200, 1200,
- 1201, 1202, 1203, 1203, 1204, 1204, 1205, 1205, 1206, 1206,
- 1207, 1207, 1208, 1208, 1209, 1209, 1210, 1210, 1210, 1211,
- 1211, 1212, 1212, 1212, 1212, 1212, 1213, 1213, 1214, 1215,
- 1215, 1216, 1216, 1216, 1217, 1217, 1218, 1218, 1219, 1219,
- 1220, 1220, 1221, 1221, 1222, 1222, 1224, 1225, 1223, 1226,
- 1223, 1227, 1223, 1223, 1228, 1223, 1229, 1223, 1230, 1223,
- 1231, 1223, 1232, 1223, 1233, 1223, 1223, 1234, 1235, 1236,
- 1223, 1237, 1237, 1238, 1238, 1238, 1238, 1239, 1239, 1239,
- 1239, 1239, 1240, 1240, 1240, 1240, 1241, 1241, 1242, 1242,
- 1243, 1243, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
- 1244, 1244, 1245, 1244, 1244, 1246, 1244, 1247, 1244, 1244,
- 1244, 1244, 1244, 1244, 1248, 1244, 1249, 1250, 1250, 1252,
- 1251, 1253, 1253, 1253, 1255, 1254, 1256, 1257, 1256, 1258,
- 1258, 1259, 1260, 1260, 1261, 1262, 1262, 1262, 1262, 1262,
- 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
- 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
- 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263, 1263,
- 1263, 1263, 1263, 1264, 1264, 1265, 1265, 1266, 1266, 1267,
- 1267, 1269, 1268, 1270, 1270, 1271, 1271, 1272, 1272, 1273,
- 1273, 1273, 1274, 1274, 1274, 1275, 1275, 1275, 1275, 1277,
- 1276, 1278, 1276, 1276, 1276, 1279, 1280, 1280, 1281, 1281,
- 1282, 1282, 1282, 1284, 1283, 1285, 1285, 1286, 1286, 1286,
- 1287, 1287, 1287, 1288, 1288, 1290, 1289, 1291, 1291, 1291,
- 1292, 1293, 1292, 1295, 1294, 1296, 1296, 1297, 1297, 1298,
- 1298, 1298, 1299, 1299, 1299, 1301, 1300, 1302, 1302, 1303,
- 1304, 1304, 1305, 1305, 1306, 1307, 1306, 1308, 1309, 1308,
- 1310, 1310, 1310, 1311, 1311, 1311, 1312, 1312, 1313, 1313,
- 1314, 1315, 1314, 1317, 1316, 1318, 1318, 1319, 1319, 1320,
- 1320, 1320, 1320, 1320, 1320, 1321, 1321, 1323, 1322, 1324,
- 1324, 1324, 1326, 1325, 1325, 1327, 1327, 1328, 1328, 1329,
- 1331, 1330, 1332, 1332, 1333, 1333, 1334, 1335, 1336, 1336,
- 1338, 1337, 1339, 1339, 1340, 1340, 1341, 1342, 1344, 1343,
- 1346, 1345, 1347, 1347, 1348, 1348, 1350, 1349, 1351, 1349,
- 1353, 1352, 1354, 1352, 1355, 1355, 1357, 1356, 1359, 1360,
- 1358, 1361, 1362, 1363, 1363, 1364, 1364, 1366, 1365, 1367,
- 1365, 1368, 1368, 1369, 1370, 1369, 1369, 1371, 1371, 1372,
- 1373, 1374, 1374, 1375, 1375, 1376, 1377, 1377, 1378, 1378,
- 1379, 1379, 1379, 1380, 1380, 1380, 1381, 1382, 1382, 1383,
- 1383, 1384, 1384, 1384, 1384, 1385, 1385, 1386, 1386, 1386,
- 1387, 1387, 1388, 1388, 1389, 1389, 1389, 1389, 1390, 1390,
- 1390, 1391, 1391, 1392, 1393, 1394, 1395, 1395, 1395, 1395,
- 1395, 1396, 1396, 1396, 1397, 1397, 1397, 1398, 1398, 1399,
- 1399, 1399, 1399, 1399, 1400, 1400, 1400, 1400, 1400, 1400,
- 1400, 1400, 1400, 1400, 1400, 1400, 1401, 1401, 1401, 1401,
- 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
- 1401, 1401, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402,
- 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402,
- 1402, 1403, 1403, 1404, 1404, 1405, 1405, 1406, 1406, 1407,
- 1407, 1407, 1407, 1407, 1407, 1408, 1408, 1409, 1409, 1410,
- 1410, 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1412, 1412,
- 1412, 1413, 1413, 1414, 1415, 1415, 1416, 1416, 1416, 1416,
- 1417, 1418, 1418, 1419, 1420, 1420, 1420, 1420, 1420, 1420,
- 1420, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421,
- 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421,
- 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421,
- 1422, 1422, 1422, 1422, 1423, 1423, 1424, 1424, 1424, 1424,
- 1424, 1424, 1425, 1425, 1426, 1426, 1427, 1427, 1427, 1427,
- 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427,
- 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1428, 1428, 1429,
- 1429, 1430, 1430, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
- 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
- 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
- 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
- 1432, 1432, 1432, 1432, 1434, 1433, 1433, 1433, 1433, 1433,
- 1433, 1433, 1433, 1433, 1433, 1433, 1435, 1435, 1436, 1436,
- 1437, 1437, 1438, 1438, 1439, 1439, 1440, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1442, 1443, 1441, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1444, 1441, 1445,
- 1441, 1446, 1441, 1447, 1447, 1448, 1448, 1448, 1449, 1449,
- 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
- 1449, 1450, 1452, 1451, 1451, 1453, 1453, 1454, 1455, 1457,
- 1456, 1458, 1458, 1458, 1458, 1459, 1459, 1460, 1460, 1461,
- 1461, 1462, 1462, 1463, 1463, 1464, 1465, 1467, 1466, 1468,
- 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1469, 1469, 1469,
- 1469, 1469, 1469, 1469, 1469, 1470, 1470, 1470, 1470, 1471,
- 1471, 1472, 1472, 1473, 1473, 1474, 1474, 1475, 1475, 1476,
- 1476, 1477, 1477, 1478, 1478, 1478, 1479, 1479, 1479, 1479,
- 1479, 1480, 1481, 1482, 1482, 1484, 1483, 1485, 1483, 1486,
- 1486, 1486, 1487, 1487, 1487, 1487, 1488, 1488, 1488, 1488,
- 1488, 1489, 1489, 1489, 1490, 1491, 1493, 1494, 1492, 1495,
- 1495, 1496, 1496, 1497, 1498, 1497, 1499, 1497, 1497, 1500,
- 1497, 1501, 1497, 1497, 1502, 1497, 1503, 1497, 1497, 1504,
- 1504, 1504, 1505, 1505, 1506, 1506, 1507, 1508, 1508, 1508,
- 1508, 1508, 1509, 1509, 1510, 1510, 1511, 1511, 1512, 1512,
- 1513, 1513, 1514, 1515, 1515, 1516, 1516, 1517, 1517, 1517,
- 1517, 1518, 1518, 1520, 1519, 1521, 1519, 1522, 1522, 1523,
- 1524, 1523, 1526, 1525, 1527, 1527, 1528, 1528, 1529, 1529,
- 1530, 1530, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
- 1531, 1531, 1531, 1531, 1532, 1532, 1532, 1532, 1532, 1532,
- 1532, 1532, 1532, 1533, 1533, 1533, 1533, 1534, 1534, 1534,
- 1535, 1535, 1536, 1537, 1537, 1538, 1539, 1538, 1540, 1541,
- 1540, 1542, 1542, 1543, 1543, 1544, 1544, 1544, 1545, 1545,
- 1546, 1546, 1547, 1549, 1548, 1550, 1550, 1551, 1551, 1552,
- 1552, 1553, 1553, 1554, 1554, 1555, 1555, 1556, 1556, 1556,
- 1557, 1557, 1557, 1558, 1558, 1558, 1558, 1558, 1558, 1559,
- 1560, 1560, 1561, 1562, 1562, 1564, 1563, 1565, 1565, 1566,
- 1566, 1566, 1567, 1567, 1568, 1568, 1568, 1568, 1569, 1569,
- 1569, 1569, 1569, 1570, 1570, 1571, 1571, 1572, 1572, 1573,
- 1574, 1574, 1574, 1575, 1575, 1575, 1575, 1575, 1575, 1576,
- 1577, 1577, 1577, 1577, 1578, 1578, 1578, 1579, 1579, 1580,
- 1581, 1582, 1582, 1582, 1583, 1583, 1584, 1584, 1585, 1585,
- 1586, 1586, 1586, 1586, 1586, 1586, 1587, 1587, 1587, 1587,
- 1587, 1588, 1588, 1588, 1588, 1589, 1589, 1589, 1589, 1589,
- 1590, 1590, 1590, 1590, 1590, 1591, 1592, 1592, 1593, 1593,
- 1594, 1594, 1594, 1596, 1595, 1597, 1597, 1598, 1598, 1599,
- 1601, 1600, 1602, 1602, 1603, 1604, 1604, 1604, 1605, 1607,
- 1608, 1606, 1606, 1606, 1610, 1609, 1612, 1611, 1613, 1611,
- 1611, 1611, 1611, 1614, 1611, 1611, 1611, 1611, 1615, 1611,
- 1611, 1616, 1616, 1617, 1618, 1619, 1619, 1620, 1621, 1621,
- 1622, 1622, 1623, 1623, 1625, 1626, 1624, 1628, 1629, 1627,
- 1630, 1631, 1632, 1632, 1632, 1633, 1633, 1634, 1634, 1635,
- 1635, 1637, 1636, 1638, 1638, 1639, 1638, 1640, 1641, 1641,
- 1642, 1642, 1643, 1644, 1644, 1645, 1645, 1646, 1647, 1647,
- 1648, 1648, 1649, 1649, 1650, 1650, 1652, 1651, 1654, 1653,
- 1655, 1655, 1656, 1656, 1657, 1657, 1658, 1658, 1659, 1659,
- 1660, 1660, 1661, 1662, 1663, 1661, 1664, 1664, 1666, 1667,
- 1668, 1665, 1669, 1669, 1670, 1670, 1671, 1671, 1672, 1673,
- 1673, 1675, 1674, 1676, 1676, 1677, 1677, 1678, 1679, 1680,
- 1681, 1682, 1680, 1683, 1684, 1680, 1685, 1686, 1685, 1687,
- 1687, 1688, 1688, 1689, 1689, 1690, 1690, 1691, 1691, 1691,
- 1693, 1694, 1692, 1695, 1695, 1696, 1696, 1697, 1697, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1699, 1699,
- 1701, 1700, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1703, 1702, 1704, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1705,
- 1705, 1705, 1706, 1706, 1707, 1707, 1708, 1708, 1709, 1709,
- 1710, 1710, 1711, 1711, 1712, 1712, 1713, 1713, 1713, 1715,
- 1714, 1716, 1714, 1717, 1717, 1717, 1717, 1717, 1717, 1718,
- 1718, 1719, 1720, 1720, 1720, 1720, 1721, 1721, 1722, 1722,
- 1722, 1723, 1725, 1724, 1727, 1726, 1726, 1728, 1728, 1729,
- 1730, 1729, 1731, 1731, 1732, 1732, 1732, 1732, 1732, 1732,
- 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732,
- 1732, 1732, 1733, 1733, 1734, 1735, 1736, 1735, 1735, 1737,
- 1737, 1738, 1738, 1738, 1739, 1740, 1740, 1742, 1741, 1743,
- 1743, 1745, 1744, 1746, 1744, 1744, 1747, 1747, 1748, 1748,
- 1749, 1750, 1749, 1752, 1751, 1753, 1753, 1753, 1754, 1754,
- 1754, 1755, 1755, 1756, 1756, 1758, 1757, 1759, 1759, 1760,
- 1762, 1763, 1764, 1765, 1761, 1766, 1766, 1767, 1767, 1768,
- 1768, 1768, 1769, 1769, 1769, 1770, 1770, 1771, 1771, 1772,
- 1772, 1772, 1772, 1773, 1773, 1774, 1774, 1775, 1775, 1776,
- 1776, 1777, 1777, 1778, 1778, 1779, 1779, 1779, 1780, 1780,
- 1781, 1781, 1782, 1782, 1783, 1783, 1784, 1785, 1785, 1785,
- 1785, 1786, 1786, 1787, 1787, 1787, 1788, 1788, 1788, 1789,
- 1789, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790,
- 1790, 1791, 1791, 1791, 1791, 1791, 1792, 1792, 1792, 1794,
- 1793, 1795, 1795, 1796, 1796, 1797, 1798, 1799, 1798, 1800,
- 1800, 1801, 1802, 1803, 1803, 1804, 1805, 1805, 1806, 1806,
- 1807, 1807, 1808, 1809, 1809, 1809, 1809, 1809, 1810, 1810,
- 1810, 1810, 1810, 1811, 1811, 1811, 1811, 1812, 1812, 1812,
- 1813, 1813, 1814, 1815, 1815, 1816, 1816, 1816, 1817, 1818,
- 1818, 1818, 1818, 1819, 1820, 1821, 1822, 1823, 1823, 1824,
- 1824, 1825, 1825, 1825, 1826, 1826, 1827, 1827, 1828, 1828,
- 1828, 1829, 1829, 1829, 1830, 1830, 1831, 1832, 1832, 1832,
- 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1833,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834,
- 1834, 1834, 1834, 1834, 1834, 1835, 1835, 1835, 1835, 1835,
- 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1836, 1836,
- 1836, 1836, 1836, 1836, 1836, 1836, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1838,
- 1838, 1838, 1838, 1838, 1838, 1839, 1839, 1839, 1839, 1839,
- 1839, 1839, 1839, 1839, 1839, 1840, 1840, 1840, 1841, 1841,
- 1841, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842,
- 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842,
- 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1843, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
- 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1845,
- 1845, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846,
- 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846,
+ 0, 792, 793, 794, 793, 793, 795, 795, 796, 796,
+ 796, 797, 797, 797, 797, 797, 797, 797, 797, 797,
+ 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
+ 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
+ 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
+ 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
+ 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
+ 797, 798, 799, 799, 801, 800, 802, 803, 804, 802,
+ 805, 806, 805, 807, 807, 809, 808, 811, 810, 812,
+ 812, 813, 813, 813, 813, 813, 813, 813, 813, 813,
+ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
+ 813, 814, 814, 814, 815, 816, 816, 816, 817, 818,
+ 818, 818, 819, 820, 820, 820, 820, 820, 820, 820,
+ 820, 821, 821, 822, 823, 823, 824, 826, 827, 825,
+ 828, 825, 829, 830, 825, 831, 832, 825, 833, 834,
+ 825, 835, 836, 825, 837, 825, 838, 825, 839, 825,
+ 840, 825, 841, 825, 825, 825, 842, 825, 825, 843,
+ 843, 844, 844, 845, 845, 845, 845, 845, 845, 845,
+ 845, 845, 845, 845, 845, 845, 845, 846, 846, 848,
+ 847, 849, 849, 850, 850, 850, 850, 850, 850, 850,
+ 852, 851, 854, 853, 853, 855, 855, 855, 855, 856,
+ 856, 857, 857, 858, 858, 859, 860, 860, 862, 861,
+ 863, 864, 864, 865, 865, 865, 865, 866, 866, 867,
+ 867, 868, 868, 869, 869, 870, 870, 871, 871, 872,
+ 872, 872, 872, 872, 872, 872, 873, 873, 874, 874,
+ 876, 875, 877, 875, 878, 875, 879, 879, 880, 880,
+ 881, 881, 882, 883, 882, 884, 884, 885, 886, 886,
+ 887, 887, 888, 888, 888, 890, 889, 891, 892, 892,
+ 893, 893, 894, 894, 894, 895, 896, 896, 897, 898,
+ 900, 899, 899, 899, 902, 901, 903, 903, 904, 906,
+ 905, 907, 907, 907, 907, 908, 908, 909, 910, 910,
+ 911, 912, 912, 913, 913, 913, 913, 913, 913, 914,
+ 914, 915, 916, 916, 917, 917, 918, 918, 919, 919,
+ 920, 920, 920, 921, 921, 921, 921, 921, 921, 921,
+ 921, 921, 921, 921, 921, 921, 922, 923, 924, 924,
+ 925, 925, 926, 926, 927, 928, 928, 929, 929, 929,
+ 930, 931, 931, 932, 933, 933, 933, 933, 933, 933,
+ 933, 933, 933, 933, 933, 933, 933, 933, 934, 934,
+ 935, 935, 937, 936, 939, 938, 940, 940, 942, 941,
+ 941, 943, 943, 944, 943, 945, 943, 946, 946, 947,
+ 946, 948, 946, 949, 950, 951, 953, 952, 954, 956,
+ 955, 958, 957, 959, 959, 960, 960, 961, 961, 961,
+ 962, 963, 963, 963, 964, 964, 965, 966, 966, 968,
+ 969, 967, 970, 970, 970, 970, 972, 971, 974, 973,
+ 973, 975, 975, 976, 976, 978, 977, 980, 979, 981,
+ 981, 982, 982, 983, 983, 984, 985, 985, 985, 986,
+ 987, 988, 990, 989, 991, 989, 992, 993, 994, 989,
+ 995, 989, 997, 996, 998, 996, 999, 1000, 996, 1001,
+ 996, 1002, 1002, 1003, 1003, 1003, 1005, 1004, 1004, 1004,
+ 1006, 1006, 1007, 1007, 1008, 1008, 1009, 1010, 1010, 1012,
+ 1011, 1013, 1015, 1014, 1017, 1016, 1018, 1019, 1018, 1018,
+ 1018, 1020, 1018, 1018, 1021, 1018, 1022, 1022, 1023, 1023,
+ 1024, 1024, 1025, 1025, 1026, 1027, 1028, 1029, 1030, 1030,
+ 1031, 1032, 1031, 1033, 1031, 1034, 1034, 1035, 1036, 1037,
+ 1037, 1038, 1038, 1039, 1039, 1040, 1040, 1042, 1041, 1043,
+ 1044, 1045, 1044, 1046, 1044, 1044, 1044, 1044, 1047, 1047,
+ 1048, 1048, 1049, 1049, 1051, 1052, 1050, 1053, 1053, 1054,
+ 1054, 1055, 1055, 1056, 1056, 1058, 1057, 1059, 1060, 1060,
+ 1061, 1061, 1062, 1062, 1063, 1063, 1064, 1064, 1065, 1065,
+ 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1067, 1066,
+ 1066, 1068, 1068, 1069, 1069, 1070, 1070, 1071, 1071, 1072,
+ 1072, 1073, 1073, 1073, 1074, 1074, 1075, 1075, 1076, 1076,
+ 1077, 1077, 1078, 1078, 1079, 1079, 1079, 1080, 1080, 1080,
+ 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+ 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1080, 1080,
+ 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+ 1080, 1080, 1080, 1082, 1082, 1082, 1082, 1083, 1083, 1084,
+ 1084, 1085, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1091,
+ 1091, 1091, 1091, 1091, 1091, 1092, 1092, 1092, 1093, 1093,
+ 1093, 1093, 1094, 1095, 1096, 1096, 1097, 1097, 1097, 1097,
+ 1097, 1098, 1098, 1100, 1099, 1101, 1099, 1102, 1099, 1103,
+ 1099, 1104, 1099, 1105, 1099, 1106, 1099, 1107, 1108, 1109,
+ 1110, 1110, 1111, 1112, 1112, 1113, 1113, 1114, 1116, 1115,
+ 1118, 1117, 1119, 1117, 1120, 1120, 1121, 1121, 1122, 1122,
+ 1123, 1123, 1124, 1124, 1124, 1124, 1125, 1124, 1124, 1124,
+ 1126, 1126, 1127, 1127, 1127, 1127, 1128, 1128, 1129, 1129,
+ 1130, 1130, 1130, 1130, 1132, 1131, 1133, 1133, 1134, 1134,
+ 1135, 1135, 1136, 1136, 1137, 1138, 1138, 1139, 1139, 1139,
+ 1140, 1140, 1140, 1140, 1140, 1140, 1141, 1141, 1141, 1141,
+ 1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142,
+ 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144,
+ 1144, 1144, 1144, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
+ 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1146, 1146,
+ 1147, 1148, 1148, 1149, 1149, 1150, 1150, 1150, 1150, 1150,
+ 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1153, 1153,
+ 1154, 1154, 1154, 1155, 1156, 1156, 1156, 1156, 1156, 1156,
+ 1157, 1158, 1158, 1158, 1158, 1159, 1160, 1161, 1161, 1162,
+ 1162, 1163, 1163, 1164, 1164, 1165, 1165, 1165, 1165, 1165,
+ 1165, 1165, 1166, 1166, 1167, 1167, 1168, 1168, 1169, 1170,
+ 1171, 1172, 1172, 1172, 1173, 1173, 1173, 1174, 1174, 1175,
+ 1175, 1176, 1176, 1177, 1177, 1178, 1178, 1179, 1179, 1180,
+ 1180, 1181, 1182, 1182, 1183, 1183, 1184, 1184, 1184, 1185,
+ 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
+ 1187, 1187, 1189, 1188, 1190, 1190, 1191, 1192, 1192, 1192,
+ 1192, 1193, 1194, 1195, 1195, 1196, 1197, 1197, 1198, 1198,
+ 1199, 1199, 1200, 1201, 1201, 1202, 1202, 1203, 1203, 1203,
+ 1203, 1204, 1204, 1204, 1204, 1204, 1205, 1205, 1205, 1205,
+ 1205, 1206, 1206, 1207, 1207, 1208, 1208, 1209, 1209, 1209,
+ 1210, 1211, 1212, 1212, 1213, 1213, 1214, 1214, 1215, 1215,
+ 1216, 1216, 1217, 1217, 1218, 1218, 1219, 1219, 1219, 1220,
+ 1220, 1221, 1221, 1221, 1221, 1221, 1222, 1222, 1223, 1224,
+ 1224, 1225, 1225, 1225, 1226, 1226, 1227, 1227, 1228, 1228,
+ 1229, 1229, 1230, 1230, 1231, 1231, 1233, 1234, 1232, 1235,
+ 1232, 1236, 1232, 1232, 1237, 1232, 1238, 1232, 1239, 1232,
+ 1240, 1232, 1241, 1232, 1242, 1232, 1232, 1243, 1244, 1245,
+ 1232, 1246, 1246, 1247, 1247, 1247, 1247, 1248, 1248, 1248,
+ 1248, 1248, 1249, 1249, 1249, 1249, 1250, 1250, 1251, 1251,
+ 1252, 1252, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
+ 1253, 1253, 1254, 1253, 1253, 1255, 1253, 1256, 1253, 1253,
+ 1253, 1253, 1253, 1253, 1257, 1253, 1258, 1259, 1259, 1261,
+ 1260, 1262, 1262, 1262, 1264, 1263, 1265, 1266, 1265, 1267,
+ 1267, 1268, 1269, 1269, 1270, 1271, 1271, 1271, 1271, 1271,
+ 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+ 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+ 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1272, 1272,
+ 1272, 1273, 1273, 1273, 1273, 1273, 1274, 1274, 1275, 1275,
+ 1276, 1276, 1277, 1277, 1279, 1278, 1280, 1280, 1281, 1281,
+ 1282, 1282, 1283, 1283, 1283, 1284, 1284, 1284, 1285, 1285,
+ 1285, 1285, 1287, 1286, 1288, 1286, 1286, 1286, 1289, 1290,
+ 1290, 1291, 1291, 1292, 1292, 1292, 1294, 1293, 1295, 1295,
+ 1296, 1296, 1296, 1297, 1297, 1297, 1297, 1297, 1298, 1298,
+ 1300, 1299, 1301, 1301, 1301, 1302, 1303, 1302, 1305, 1304,
+ 1306, 1306, 1307, 1307, 1308, 1308, 1308, 1309, 1309, 1309,
+ 1311, 1310, 1312, 1312, 1313, 1314, 1314, 1315, 1315, 1316,
+ 1317, 1316, 1318, 1319, 1318, 1320, 1320, 1320, 1321, 1321,
+ 1321, 1322, 1322, 1323, 1323, 1324, 1325, 1324, 1327, 1326,
+ 1328, 1328, 1329, 1329, 1330, 1330, 1330, 1330, 1330, 1330,
+ 1331, 1331, 1333, 1332, 1334, 1334, 1334, 1336, 1335, 1335,
+ 1337, 1337, 1338, 1338, 1339, 1341, 1340, 1342, 1342, 1343,
+ 1343, 1344, 1345, 1346, 1346, 1348, 1347, 1349, 1349, 1350,
+ 1350, 1351, 1352, 1354, 1353, 1356, 1355, 1357, 1357, 1358,
+ 1358, 1360, 1359, 1361, 1359, 1363, 1362, 1364, 1362, 1365,
+ 1365, 1367, 1366, 1369, 1370, 1368, 1371, 1372, 1373, 1373,
+ 1374, 1374, 1376, 1375, 1377, 1375, 1378, 1378, 1379, 1380,
+ 1379, 1379, 1381, 1381, 1382, 1383, 1384, 1384, 1385, 1385,
+ 1386, 1387, 1387, 1388, 1388, 1389, 1389, 1389, 1390, 1390,
+ 1390, 1391, 1392, 1392, 1393, 1393, 1394, 1394, 1394, 1394,
+ 1395, 1395, 1396, 1396, 1396, 1397, 1397, 1398, 1398, 1399,
+ 1399, 1399, 1399, 1400, 1400, 1400, 1401, 1401, 1402, 1403,
+ 1404, 1405, 1406, 1407, 1408, 1409, 1409, 1409, 1409, 1409,
+ 1410, 1410, 1410, 1411, 1411, 1411, 1412, 1412, 1413, 1413,
+ 1413, 1413, 1413, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
+ 1414, 1414, 1414, 1414, 1414, 1415, 1415, 1415, 1415, 1415,
+ 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
+ 1415, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416,
+ 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416,
+ 1417, 1417, 1418, 1418, 1419, 1419, 1420, 1420, 1421, 1421,
+ 1421, 1421, 1421, 1421, 1422, 1422, 1423, 1423, 1424, 1424,
+ 1424, 1425, 1425, 1425, 1425, 1425, 1425, 1426, 1426, 1426,
+ 1427, 1427, 1428, 1429, 1429, 1430, 1430, 1430, 1430, 1431,
+ 1432, 1432, 1433, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
+ 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435,
+ 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435,
+ 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1436,
+ 1436, 1436, 1436, 1437, 1437, 1438, 1438, 1438, 1438, 1438,
+ 1438, 1439, 1439, 1440, 1440, 1441, 1441, 1441, 1441, 1441,
+ 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441,
+ 1441, 1441, 1441, 1441, 1441, 1441, 1442, 1442, 1443, 1443,
+ 1444, 1444, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
+ 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
+ 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1446,
+ 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
+ 1446, 1446, 1446, 1448, 1447, 1447, 1447, 1447, 1447, 1447,
+ 1447, 1447, 1447, 1447, 1447, 1449, 1449, 1450, 1450, 1451,
+ 1451, 1452, 1452, 1453, 1453, 1454, 1455, 1455, 1455, 1455,
+ 1455, 1455, 1455, 1456, 1457, 1455, 1455, 1455, 1455, 1455,
+ 1455, 1455, 1455, 1455, 1455, 1455, 1458, 1455, 1459, 1455,
+ 1460, 1455, 1461, 1461, 1462, 1462, 1462, 1463, 1463, 1463,
+ 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+ 1464, 1466, 1465, 1465, 1467, 1467, 1468, 1469, 1471, 1470,
+ 1472, 1472, 1472, 1472, 1473, 1473, 1474, 1474, 1475, 1475,
+ 1476, 1476, 1477, 1477, 1478, 1479, 1481, 1480, 1482, 1482,
+ 1482, 1482, 1482, 1482, 1482, 1482, 1483, 1483, 1483, 1483,
+ 1483, 1483, 1483, 1483, 1484, 1484, 1484, 1484, 1485, 1485,
+ 1486, 1486, 1487, 1487, 1488, 1488, 1489, 1489, 1490, 1490,
+ 1491, 1491, 1492, 1492, 1492, 1493, 1493, 1493, 1493, 1493,
+ 1494, 1495, 1496, 1496, 1498, 1497, 1499, 1497, 1500, 1500,
+ 1500, 1501, 1501, 1501, 1501, 1502, 1502, 1502, 1502, 1502,
+ 1503, 1503, 1503, 1504, 1505, 1507, 1508, 1506, 1509, 1509,
+ 1510, 1510, 1511, 1512, 1511, 1513, 1511, 1511, 1514, 1511,
+ 1515, 1511, 1511, 1516, 1511, 1517, 1511, 1511, 1518, 1518,
+ 1518, 1519, 1519, 1520, 1520, 1521, 1522, 1522, 1522, 1522,
+ 1522, 1523, 1523, 1524, 1524, 1525, 1525, 1526, 1526, 1527,
+ 1527, 1528, 1529, 1529, 1530, 1530, 1531, 1531, 1531, 1531,
+ 1532, 1532, 1534, 1533, 1535, 1533, 1536, 1536, 1537, 1538,
+ 1537, 1540, 1539, 1541, 1541, 1542, 1542, 1543, 1543, 1544,
+ 1544, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1545, 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546,
+ 1546, 1546, 1547, 1547, 1547, 1547, 1548, 1548, 1548, 1549,
+ 1549, 1550, 1551, 1551, 1552, 1553, 1552, 1554, 1555, 1554,
+ 1556, 1556, 1557, 1557, 1558, 1558, 1558, 1559, 1559, 1560,
+ 1560, 1561, 1563, 1562, 1564, 1564, 1565, 1565, 1566, 1566,
+ 1567, 1567, 1568, 1568, 1569, 1569, 1570, 1570, 1570, 1571,
+ 1571, 1571, 1572, 1572, 1572, 1572, 1572, 1572, 1573, 1574,
+ 1574, 1575, 1576, 1576, 1578, 1577, 1579, 1579, 1580, 1580,
+ 1580, 1581, 1581, 1582, 1582, 1582, 1582, 1583, 1583, 1583,
+ 1583, 1583, 1584, 1584, 1585, 1585, 1586, 1586, 1587, 1588,
+ 1588, 1588, 1589, 1589, 1589, 1589, 1589, 1589, 1590, 1591,
+ 1591, 1591, 1591, 1592, 1592, 1592, 1593, 1593, 1594, 1595,
+ 1596, 1596, 1596, 1597, 1597, 1598, 1598, 1599, 1599, 1600,
+ 1600, 1600, 1600, 1600, 1600, 1601, 1601, 1601, 1601, 1601,
+ 1602, 1602, 1602, 1602, 1603, 1603, 1603, 1603, 1603, 1604,
+ 1604, 1604, 1604, 1604, 1605, 1606, 1606, 1607, 1607, 1608,
+ 1608, 1608, 1610, 1609, 1611, 1611, 1612, 1612, 1613, 1615,
+ 1614, 1616, 1616, 1617, 1618, 1618, 1618, 1619, 1621, 1622,
+ 1620, 1620, 1620, 1624, 1623, 1626, 1625, 1627, 1625, 1625,
+ 1625, 1625, 1628, 1625, 1625, 1625, 1625, 1629, 1625, 1625,
+ 1630, 1630, 1631, 1632, 1633, 1633, 1634, 1635, 1635, 1636,
+ 1636, 1637, 1637, 1639, 1640, 1638, 1642, 1643, 1641, 1644,
+ 1645, 1646, 1646, 1646, 1647, 1647, 1648, 1648, 1649, 1649,
+ 1651, 1650, 1652, 1652, 1653, 1652, 1654, 1655, 1655, 1656,
+ 1656, 1657, 1658, 1658, 1659, 1659, 1660, 1661, 1661, 1662,
+ 1662, 1663, 1663, 1664, 1664, 1666, 1665, 1668, 1667, 1669,
+ 1669, 1670, 1670, 1671, 1671, 1672, 1672, 1673, 1673, 1674,
+ 1674, 1675, 1676, 1677, 1675, 1678, 1678, 1680, 1681, 1682,
+ 1679, 1683, 1683, 1684, 1684, 1685, 1685, 1686, 1687, 1687,
+ 1689, 1688, 1690, 1690, 1691, 1692, 1691, 1693, 1694, 1696,
+ 1695, 1697, 1698, 1695, 1699, 1700, 1695, 1701, 1702, 1701,
+ 1703, 1703, 1704, 1704, 1705, 1705, 1705, 1707, 1708, 1706,
+ 1709, 1709, 1710, 1710, 1711, 1711, 1712, 1712, 1712, 1712,
+ 1712, 1712, 1712, 1712, 1712, 1713, 1713, 1715, 1714, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1717, 1716, 1718, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1719, 1719, 1719, 1720,
+ 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1724, 1724, 1725,
+ 1725, 1726, 1726, 1727, 1727, 1727, 1729, 1728, 1730, 1728,
+ 1731, 1731, 1731, 1731, 1731, 1731, 1732, 1732, 1733, 1734,
+ 1734, 1734, 1734, 1735, 1735, 1736, 1736, 1736, 1737, 1739,
+ 1738, 1741, 1740, 1740, 1742, 1742, 1743, 1744, 1743, 1745,
+ 1745, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746,
+ 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1747,
+ 1747, 1748, 1749, 1750, 1749, 1749, 1751, 1751, 1752, 1752,
+ 1752, 1753, 1754, 1754, 1756, 1755, 1757, 1757, 1759, 1758,
+ 1760, 1758, 1758, 1761, 1761, 1762, 1762, 1763, 1764, 1763,
+ 1766, 1765, 1767, 1767, 1767, 1768, 1768, 1768, 1769, 1769,
+ 1770, 1770, 1772, 1771, 1773, 1773, 1774, 1776, 1777, 1778,
+ 1779, 1775, 1780, 1780, 1781, 1781, 1782, 1782, 1782, 1783,
+ 1783, 1783, 1784, 1784, 1785, 1785, 1786, 1786, 1786, 1786,
+ 1787, 1787, 1788, 1788, 1789, 1789, 1790, 1790, 1791, 1791,
+ 1792, 1792, 1793, 1793, 1793, 1794, 1794, 1795, 1795, 1796,
+ 1796, 1797, 1797, 1798, 1799, 1799, 1799, 1799, 1800, 1800,
+ 1801, 1801, 1801, 1802, 1802, 1802, 1803, 1803, 1804, 1804,
+ 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1805, 1805,
+ 1805, 1805, 1805, 1806, 1806, 1806, 1808, 1807, 1809, 1809,
+ 1810, 1810, 1811, 1812, 1813, 1812, 1814, 1814, 1815, 1816,
+ 1817, 1817, 1818, 1819, 1819, 1820, 1820, 1821, 1821, 1822,
+ 1823, 1823, 1823, 1823, 1823, 1824, 1824, 1824, 1824, 1824,
+ 1825, 1825, 1825, 1825, 1826, 1826, 1826, 1827, 1827, 1828,
+ 1829, 1829, 1830, 1830, 1830, 1831, 1832, 1832, 1832, 1832,
+ 1833, 1834, 1835, 1836, 1837, 1837, 1838, 1838, 1839, 1839,
+ 1839, 1840, 1840, 1841, 1841, 1842, 1842, 1842, 1843, 1843,
+ 1843, 1844, 1844, 1845, 1846, 1846, 1846, 1846, 1846, 1846,
1846, 1846, 1846, 1846, 1846, 1846, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
- 1847, 1847, 1849, 1848, 1850, 1850, 1851, 1850, 1852, 1850,
- 1853, 1850, 1854, 1854, 1855, 1855, 1856, 1855, 1857, 1857,
- 1859, 1858, 1858, 1860, 1860, 1860, 1861, 1861, 1861, 1861,
- 1862, 1862, 1862, 1862, 1864, 1863, 1865, 1863, 1866, 1863,
- 1868, 1867, 1869, 1867, 1870, 1867, 1872, 1871, 1873, 1871,
- 1874, 1871, 1875, 1871, 1876, 1871, 1877, 1871, 1878, 1871,
- 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1879, 1871, 1880,
- 1871, 1881, 1871, 1882, 1882, 1882, 1882, 1883, 1884, 1885,
- 1885, 1886, 1886, 1886, 1886, 1887, 1887, 1887, 1888, 1888,
- 1888, 1888, 1888, 1890, 1889, 1891, 1891, 1891, 1892, 1892,
- 1893, 1893, 1894, 1895, 1895, 1895, 1895, 1895, 1897, 1896,
- 1899, 1898, 1900, 1900, 1901, 1900, 1902, 1902, 1903, 1903,
- 1904, 1904, 1904, 1904, 1905, 1904, 1906, 1906, 1906, 1906,
- 1906, 1907, 1908, 1908, 1908, 1908, 1908, 1909, 1909, 1910,
- 1911, 1911, 1911, 1911, 1912, 1912, 1913, 1913, 1914, 1914,
- 1915, 1916, 1917, 1917, 1918, 1918, 1919, 1919, 1920, 1920,
- 1921, 1921, 1921, 1921, 1922, 1923, 1923, 1923, 1923, 1924,
- 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924,
- 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924,
- 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924,
- 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924,
- 1924, 1925, 1925, 1926, 1926, 1927, 1927, 1927, 1928, 1928,
- 1928, 1928, 1929, 1929, 1930, 1930, 1931, 1931, 1932, 1932,
- 1933, 1933, 1934, 1934, 1934, 1934, 1935, 1935, 1936, 1937,
- 1937, 1937, 1938, 1938, 1938, 1938, 1938, 1939, 1939, 1939,
- 1939, 1939, 1940, 1940, 1941, 1941, 1942, 1942, 1943, 1943,
- 1944, 1944, 1945, 1945, 1947, 1946, 1948, 1949, 1949, 1950,
- 1950, 1951, 1951, 1951, 1952, 1952, 1952, 1953, 1954, 1954,
- 1954, 1955, 1956, 1957, 1957, 1957, 1958, 1958, 1958, 1959,
- 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1960, 1960,
- 1961, 1962, 1963, 1963, 1963, 1964, 1964, 1965, 1965, 1966,
- 1966, 1967, 1967, 1969, 1968, 1970, 1970, 1970, 1970, 1971,
- 1971, 1972, 1972, 1974, 1975, 1976, 1977, 1978, 1973, 1980,
- 1979, 1981, 1981, 1981, 1981, 1981, 1981, 1982, 1982, 1983,
- 1983, 1983, 1984, 1984, 1984, 1985, 1985, 1985, 1986, 1986,
- 1987, 1988, 1987, 1989, 1989, 1990, 1990, 1991, 1991, 1992,
- 1993, 1994, 1994, 1995, 1996, 1995, 1997, 1995, 1998, 1995,
- 1999, 2000, 2001, 2002, 2002, 2003, 2003, 2003, 2003, 2003,
- 2003, 2003, 2003, 2004, 2004, 2004, 2004, 2004, 2004, 2004,
- 2004, 2005, 2005, 2005, 2006, 2007, 2009, 2008, 2010, 2011,
- 2012, 2013, 2014, 2014, 2014, 2015, 2015, 2015, 2017, 2016,
- 2018, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2020,
- 2020, 2021, 2021, 2023, 2022, 2024, 2022, 2025, 2022, 2026,
- 2026, 2027, 2028, 2028, 2029, 2029, 2031, 2030, 2032, 2033,
- 2033, 2034, 2034, 2035, 2035, 2036, 2036, 2037, 2037, 2038,
- 2040, 2041, 2042, 2039, 2043, 2043, 2044, 2044, 2045, 2045,
- 2047, 2046, 2048, 2048, 2049, 2049, 2049, 2050, 2050, 2051,
- 2051, 2052, 2054, 2053, 2056, 2055, 2057, 2057, 2057, 2059,
- 2058, 2061, 2060, 2062, 2063, 2063, 2064, 2064, 2065, 2065,
- 2066, 2066, 2067, 2068, 2068, 2068, 2069, 2069, 2069, 2069,
- 2071, 2070, 2073, 2074, 2072, 2075, 2075, 2075, 2075, 2075,
- 2077, 2076, 2078, 2076, 2079, 2076, 2076, 2080, 2076, 2081,
- 2082, 2083, 2076, 2084, 2084, 2086, 2085, 2085, 2087, 2087,
- 2088, 2088, 2089, 2089, 2090, 2090, 2090, 2091, 2090, 2092,
- 2092, 2092, 2092, 2092, 2092, 2093, 2093, 2093, 2093, 2093,
- 2093, 2093, 2093, 2093, 2093, 2093, 2094, 2094, 2094, 2094,
- 2096, 2095, 2097, 2098, 2095, 2099, 2099, 2101, 2100, 2102,
- 2103, 2100, 2105, 2104
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1848,
+ 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+ 1848, 1848, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849,
+ 1849, 1849, 1849, 1849, 1849, 1850, 1850, 1850, 1850, 1850,
+ 1850, 1850, 1850, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
+ 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
+ 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
+ 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
+ 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
+ 1851, 1851, 1851, 1851, 1851, 1851, 1852, 1852, 1852, 1852,
+ 1852, 1852, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853,
+ 1853, 1853, 1854, 1854, 1854, 1855, 1855, 1855, 1856, 1856,
+ 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
+ 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
+ 1856, 1856, 1856, 1856, 1857, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858,
+ 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1859, 1859, 1860,
+ 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+ 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+ 1860, 1860, 1860, 1860, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
+ 1863, 1862, 1864, 1864, 1865, 1864, 1866, 1864, 1867, 1864,
+ 1868, 1868, 1869, 1869, 1870, 1869, 1871, 1871, 1873, 1872,
+ 1872, 1874, 1874, 1874, 1875, 1875, 1875, 1875, 1876, 1876,
+ 1876, 1876, 1878, 1877, 1879, 1877, 1880, 1877, 1882, 1881,
+ 1883, 1881, 1884, 1881, 1886, 1885, 1887, 1885, 1888, 1885,
+ 1889, 1885, 1890, 1885, 1891, 1885, 1892, 1885, 1885, 1885,
+ 1885, 1885, 1885, 1885, 1885, 1893, 1885, 1894, 1885, 1895,
+ 1885, 1896, 1896, 1896, 1896, 1897, 1898, 1899, 1899, 1900,
+ 1900, 1900, 1900, 1901, 1901, 1901, 1902, 1902, 1902, 1903,
+ 1903, 1903, 1905, 1904, 1906, 1906, 1906, 1907, 1907, 1908,
+ 1908, 1909, 1910, 1910, 1910, 1910, 1910, 1912, 1911, 1914,
+ 1913, 1915, 1915, 1916, 1915, 1917, 1917, 1918, 1918, 1919,
+ 1919, 1919, 1919, 1920, 1919, 1921, 1921, 1921, 1921, 1921,
+ 1922, 1923, 1923, 1923, 1923, 1923, 1924, 1924, 1925, 1926,
+ 1926, 1926, 1926, 1927, 1927, 1928, 1928, 1929, 1929, 1930,
+ 1931, 1932, 1932, 1933, 1933, 1934, 1934, 1935, 1935, 1936,
+ 1936, 1936, 1936, 1937, 1938, 1938, 1938, 1938, 1939, 1939,
+ 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939,
+ 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939,
+ 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939,
+ 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939,
+ 1939, 1940, 1940, 1941, 1941, 1942, 1942, 1942, 1943, 1943,
+ 1943, 1943, 1944, 1944, 1945, 1945, 1946, 1946, 1947, 1947,
+ 1948, 1948, 1949, 1949, 1949, 1949, 1950, 1950, 1951, 1952,
+ 1952, 1952, 1953, 1953, 1953, 1953, 1953, 1954, 1954, 1954,
+ 1954, 1954, 1955, 1955, 1956, 1956, 1957, 1957, 1958, 1958,
+ 1959, 1959, 1960, 1960, 1962, 1961, 1963, 1964, 1964, 1965,
+ 1965, 1966, 1966, 1966, 1967, 1967, 1967, 1968, 1969, 1969,
+ 1969, 1970, 1971, 1972, 1972, 1972, 1973, 1973, 1973, 1974,
+ 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1975, 1975,
+ 1976, 1977, 1978, 1978, 1978, 1979, 1979, 1980, 1980, 1981,
+ 1981, 1982, 1982, 1984, 1983, 1985, 1985, 1985, 1985, 1986,
+ 1986, 1987, 1987, 1989, 1990, 1991, 1992, 1993, 1988, 1995,
+ 1994, 1996, 1996, 1997, 1997, 1998, 1998, 2000, 1999, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2002, 2002, 2003, 2003, 2003,
+ 2004, 2004, 2004, 2005, 2005, 2005, 2006, 2006, 2007, 2008,
+ 2007, 2009, 2009, 2010, 2010, 2011, 2011, 2012, 2013, 2014,
+ 2014, 2015, 2016, 2015, 2017, 2015, 2018, 2015, 2019, 2020,
+ 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2028, 2029,
+ 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2030, 2030, 2030,
+ 2030, 2030, 2030, 2030, 2030, 2031, 2031, 2031, 2032, 2033,
+ 2035, 2034, 2036, 2037, 2038, 2039, 2039, 2039, 2040, 2040,
+ 2040, 2042, 2041, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2043, 2044, 2044, 2045, 2045, 2047, 2046, 2048, 2046, 2049,
+ 2046, 2050, 2050, 2051, 2052, 2052, 2053, 2053, 2055, 2054,
+ 2056, 2057, 2057, 2058, 2058, 2059, 2059, 2060, 2060, 2061,
+ 2061, 2062, 2064, 2065, 2066, 2063, 2067, 2067, 2067, 2068,
+ 2069, 2069, 2070, 2070, 2071, 2071, 2073, 2072, 2075, 2074,
+ 2076, 2076, 2076, 2078, 2077, 2080, 2079, 2081, 2081, 2082,
+ 2082, 2083, 2083, 2084, 2084, 2085, 2086, 2086, 2086, 2087,
+ 2087, 2087, 2087, 2089, 2088, 2091, 2092, 2090, 2094, 2093,
+ 2095, 2093, 2096, 2093, 2093, 2097, 2093, 2098, 2099, 2093,
+ 2100, 2100, 2102, 2101, 2101, 2103, 2103, 2104, 2104, 2105,
+ 2105, 2106, 2106, 2106, 2107, 2106, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
+ 2109, 2109, 2109, 2110, 2110, 2110, 2110, 2112, 2111, 2113,
+ 2114, 2111, 2115, 2115, 2117, 2116, 2118, 2119, 2116, 2121,
+ 2120
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -28108,51 +28116,52 @@ static const yytype_int8 yyr2[] =
12, 1, 3, 2, 2, 2, 2, 2, 2, 2,
0, 12, 0, 6, 2, 0, 1, 3, 1, 0,
2, 0, 2, 0, 1, 4, 0, 2, 0, 3,
- 0, 0, 1, 1, 1, 1, 2, 3, 1, 0,
- 2, 0, 2, 2, 2, 2, 2, 3, 3, 1,
- 1, 2, 3, 3, 0, 4, 0, 6, 0, 8,
- 0, 3, 0, 1, 3, 1, 0, 0, 2, 3,
- 1, 1, 0, 1, 3, 1, 1, 1, 1, 0,
- 4, 3, 0, 3, 2, 3, 1, 3, 5, 2,
- 1, 3, 3, 1, 0, 4, 4, 1, 0, 6,
- 0, 3, 0, 0, 3, 1, 1, 1, 1, 1,
- 3, 1, 1, 1, 3, 0, 1, 1, 1, 1,
- 2, 1, 1, 2, 3, 3, 1, 1, 0, 1,
- 0, 2, 3, 5, 1, 1, 1, 1, 1, 1,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 6, 4, 3, 1, 0, 2, 0, 2, 2,
+ 2, 2, 2, 3, 3, 1, 1, 2, 3, 3,
+ 0, 4, 0, 6, 0, 8, 0, 3, 0, 1,
+ 3, 1, 0, 0, 2, 3, 1, 1, 0, 1,
+ 3, 1, 1, 1, 1, 0, 4, 3, 0, 3,
+ 2, 3, 1, 3, 5, 2, 1, 3, 3, 1,
+ 0, 4, 4, 1, 0, 6, 0, 3, 0, 0,
+ 5, 1, 1, 1, 1, 1, 3, 1, 1, 1,
+ 3, 0, 1, 1, 1, 1, 2, 1, 1, 2,
+ 3, 3, 1, 1, 0, 1, 0, 2, 3, 5,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 4, 0, 1, 1, 3, 1, 3, 3, 1,
- 2, 1, 1, 1, 1, 1, 3, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 4, 0, 1,
+ 1, 3, 1, 3, 3, 1, 2, 1, 1, 1,
+ 1, 1, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 0, 5, 0, 2,
- 1, 1, 0, 3, 1, 1, 2, 0, 4, 0,
- 5, 1, 2, 0, 4, 0, 5, 2, 2, 2,
- 0, 2, 0, 0, 3, 0, 3, 1, 3, 0,
- 3, 1, 1, 1, 3, 3, 4, 5, 2, 4,
- 2, 1, 3, 0, 0, 6, 0, 2, 2, 2,
- 0, 6, 0, 3, 1, 1, 2, 1, 2, 0,
- 5, 0, 5, 0, 2, 0, 1, 0, 1, 2,
- 5, 3, 5, 3, 5, 1, 0, 5, 0, 5,
- 0, 0, 0, 8, 0, 5, 0, 3, 0, 3,
- 0, 0, 5, 0, 3, 1, 1, 1, 1, 1,
- 0, 5, 3, 1, 2, 4, 0, 4, 1, 4,
- 1, 0, 1, 0, 4, 0, 0, 3, 0, 6,
- 6, 0, 4, 2, 2, 0, 3, 2, 0, 3,
- 0, 1, 0, 3, 0, 1, 1, 3, 1, 4,
- 3, 3, 0, 2, 0, 0, 7, 0, 10, 1,
- 3, 1, 1, 0, 2, 0, 3, 1, 3, 0,
- 1, 0, 6, 1, 0, 0, 4, 0, 3, 1,
- 1, 1, 1, 1, 1, 3, 1, 3, 0, 0,
- 5, 1, 3, 1, 1, 0, 3, 1, 3, 0,
- 4, 1, 0, 1, 2, 1, 1, 1, 0, 1,
- 2, 1, 3, 4, 3, 3, 3, 3, 4, 4,
- 3, 0, 0, 6, 3, 0, 2, 0, 1, 0,
- 1, 0, 1, 1, 2, 1, 1, 3, 0, 3,
- 0, 3, 1, 3, 0, 1, 1, 2, 1, 2,
+ 1, 3, 0, 5, 0, 2, 1, 1, 0, 3,
+ 1, 1, 2, 0, 4, 0, 5, 1, 2, 0,
+ 4, 0, 5, 2, 2, 2, 0, 4, 0, 0,
+ 5, 0, 5, 1, 3, 0, 3, 1, 1, 1,
+ 3, 3, 4, 5, 2, 4, 2, 1, 3, 0,
+ 0, 6, 0, 2, 2, 2, 0, 6, 0, 3,
+ 1, 1, 2, 1, 2, 0, 5, 0, 5, 0,
+ 2, 0, 1, 0, 1, 2, 5, 3, 5, 3,
+ 5, 1, 0, 5, 0, 5, 0, 0, 0, 8,
+ 0, 5, 0, 3, 0, 3, 0, 0, 5, 0,
+ 3, 1, 1, 1, 1, 1, 0, 5, 3, 1,
+ 2, 4, 0, 4, 1, 4, 1, 0, 1, 0,
+ 4, 0, 0, 3, 0, 6, 6, 0, 4, 2,
+ 2, 0, 3, 2, 0, 3, 0, 1, 0, 3,
+ 0, 1, 1, 3, 1, 4, 3, 3, 0, 2,
+ 0, 0, 7, 0, 10, 1, 3, 1, 1, 0,
+ 2, 0, 3, 1, 3, 0, 1, 0, 6, 1,
+ 0, 0, 4, 0, 3, 1, 1, 1, 1, 1,
+ 1, 3, 1, 3, 0, 0, 5, 1, 3, 1,
+ 1, 0, 3, 1, 3, 0, 4, 1, 0, 1,
+ 2, 1, 1, 1, 0, 1, 2, 1, 3, 4,
+ 3, 3, 3, 3, 4, 4, 3, 0, 0, 6,
+ 3, 0, 2, 0, 1, 0, 1, 0, 1, 1,
+ 2, 1, 1, 3, 0, 3, 0, 3, 1, 3,
+ 0, 1, 1, 2, 1, 2, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 0, 6, 1, 1, 3, 4, 4, 2, 2,
- 2, 3, 3, 3, 1, 3, 1, 3, 3, 3,
- 3, 0, 1, 2, 4, 4, 1, 1, 1, 1,
+ 3, 3, 3, 3, 3, 3, 3, 0, 6, 1,
+ 1, 3, 4, 4, 2, 2, 2, 3, 3, 3,
+ 1, 3, 1, 3, 3, 3, 3, 1, 1, 1,
+ 1, 0, 1, 2, 4, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 3, 1, 3, 1, 1, 1, 1,
2, 1, 3, 0, 9, 0, 10, 0, 9, 0,
@@ -28194,152 +28203,153 @@ static const yytype_int8 yyr2[] =
5, 5, 0, 3, 1, 4, 0, 3, 0, 2,
0, 1, 0, 2, 2, 2, 2, 1, 1, 1,
4, 4, 0, 6, 4, 0, 5, 0, 6, 4,
- 3, 1, 7, 7, 0, 7, 2, 1, 1, 0,
+ 3, 1, 8, 8, 0, 9, 2, 1, 1, 0,
6, 0, 3, 2, 0, 5, 0, 0, 6, 1,
3, 1, 1, 3, 3, 3, 2, 2, 4, 4,
2, 7, 6, 5, 5, 4, 5, 4, 4, 2,
2, 7, 5, 6, 3, 6, 6, 4, 6, 1,
- 1, 1, 1, 1, 3, 3, 3, 5, 0, 1,
- 1, 2, 2, 3, 3, 3, 3, 0, 1, 0,
- 1, 0, 2, 0, 1, 2, 1, 1, 1, 0,
- 1, 1, 0, 2, 1, 0, 1, 1, 1, 0,
- 7, 0, 5, 5, 4, 3, 0, 1, 1, 3,
- 3, 2, 2, 0, 2, 1, 3, 0, 1, 1,
- 0, 2, 4, 1, 3, 0, 5, 0, 1, 1,
- 3, 0, 4, 0, 4, 0, 1, 1, 2, 1,
- 1, 1, 0, 2, 2, 0, 5, 1, 3, 2,
- 0, 3, 1, 4, 1, 0, 4, 1, 0, 4,
- 0, 1, 3, 0, 1, 3, 1, 1, 2, 6,
- 3, 0, 4, 0, 3, 0, 1, 1, 2, 1,
- 1, 1, 1, 1, 2, 0, 2, 0, 6, 0,
- 1, 1, 0, 5, 4, 3, 5, 1, 3, 4,
- 0, 6, 1, 1, 1, 3, 2, 3, 1, 1,
- 0, 6, 1, 1, 1, 3, 3, 4, 0, 6,
- 0, 2, 0, 4, 0, 2, 0, 3, 0, 4,
- 0, 3, 0, 4, 1, 1, 0, 3, 0, 0,
- 5, 6, 7, 1, 2, 1, 1, 0, 3, 0,
- 3, 3, 3, 1, 0, 4, 3, 1, 1, 1,
- 1, 1, 4, 0, 1, 2, 1, 1, 0, 1,
- 0, 1, 1, 2, 1, 2, 9, 0, 1, 0,
- 2, 3, 1, 4, 4, 2, 1, 1, 1, 1,
- 3, 5, 0, 1, 0, 2, 1, 2, 3, 1,
- 1, 3, 4, 0, 0, 0, 0, 2, 2, 1,
- 1, 0, 2, 3, 0, 2, 3, 0, 2, 3,
- 3, 3, 2, 1, 3, 4, 3, 4, 3, 4,
- 3, 4, 3, 3, 6, 1, 3, 4, 5, 7,
- 6, 8, 5, 6, 4, 3, 5, 4, 6, 3,
- 4, 1, 3, 3, 3, 3, 3, 3, 3, 5,
- 5, 5, 6, 6, 3, 3, 3, 3, 3, 3,
+ 1, 1, 1, 1, 3, 3, 3, 5, 0, 2,
+ 2, 0, 1, 1, 2, 2, 3, 3, 3, 3,
+ 0, 1, 0, 1, 0, 2, 0, 1, 2, 1,
+ 1, 1, 0, 1, 1, 0, 2, 1, 0, 1,
+ 1, 1, 0, 7, 0, 5, 5, 4, 3, 0,
+ 1, 1, 3, 3, 2, 2, 0, 2, 1, 3,
+ 0, 1, 1, 0, 2, 4, 4, 4, 1, 3,
+ 0, 5, 0, 1, 1, 3, 0, 4, 0, 4,
+ 0, 1, 1, 2, 1, 1, 1, 0, 2, 2,
+ 0, 5, 1, 3, 2, 0, 3, 1, 4, 1,
+ 0, 4, 1, 0, 4, 0, 1, 3, 0, 1,
+ 3, 1, 1, 2, 6, 3, 0, 4, 0, 3,
+ 0, 1, 1, 2, 1, 1, 1, 1, 1, 2,
+ 0, 2, 0, 6, 0, 1, 1, 0, 5, 4,
+ 3, 5, 1, 3, 4, 0, 6, 1, 1, 1,
+ 3, 2, 3, 1, 1, 0, 6, 1, 1, 1,
+ 3, 3, 4, 0, 6, 0, 2, 0, 4, 0,
+ 2, 0, 3, 0, 4, 0, 3, 0, 4, 1,
+ 1, 0, 3, 0, 0, 5, 6, 7, 1, 2,
+ 1, 1, 0, 3, 0, 3, 3, 3, 1, 0,
+ 4, 3, 1, 1, 1, 1, 1, 4, 0, 1,
+ 2, 1, 1, 0, 1, 0, 1, 1, 2, 1,
+ 2, 9, 0, 1, 0, 2, 3, 1, 4, 4,
+ 2, 1, 1, 1, 1, 3, 5, 0, 1, 0,
+ 2, 1, 2, 3, 1, 1, 3, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2, 1, 1,
+ 0, 2, 3, 0, 2, 3, 0, 2, 3, 3,
+ 3, 2, 1, 3, 4, 3, 4, 3, 4, 3,
+ 4, 3, 3, 6, 1, 3, 4, 5, 7, 6,
+ 8, 5, 6, 4, 3, 5, 4, 6, 3, 4,
+ 1, 3, 3, 3, 3, 3, 3, 3, 5, 5,
+ 5, 6, 6, 3, 3, 3, 3, 3, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 2, 1, 1,
+ 1, 1, 2, 1, 1, 1, 2, 1, 2, 2,
+ 2, 1, 4, 1, 3, 1, 1, 1, 1, 3,
+ 1, 1, 1, 4, 4, 4, 3, 3, 3, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 2, 1,
- 1, 1, 1, 2, 1, 1, 1, 2, 1, 2,
- 2, 2, 1, 4, 1, 3, 1, 1, 1, 1,
- 3, 1, 1, 1, 4, 4, 4, 3, 3, 3,
+ 1, 6, 4, 4, 7, 6, 3, 4, 6, 6,
+ 4, 4, 4, 4, 4, 4, 6, 8, 10, 1,
+ 1, 3, 1, 1, 3, 1, 2, 2, 2, 2,
+ 2, 1, 3, 4, 6, 4, 6, 2, 2, 4,
+ 4, 4, 10, 6, 8, 6, 4, 4, 6, 4,
+ 3, 4, 1, 4, 3, 4, 1, 1, 5, 3,
+ 5, 3, 6, 8, 2, 2, 8, 8, 6, 6,
+ 2, 6, 2, 6, 8, 4, 1, 3, 4, 8,
+ 8, 4, 2, 2, 2, 6, 6, 4, 8, 4,
+ 4, 8, 4, 6, 6, 4, 6, 8, 6, 5,
+ 8, 7, 10, 0, 5, 4, 4, 4, 6, 8,
+ 6, 6, 6, 6, 6, 2, 3, 0, 4, 0,
+ 3, 0, 1, 1, 3, 4, 4, 5, 4, 4,
+ 4, 5, 4, 0, 0, 7, 4, 5, 4, 5,
+ 4, 4, 4, 4, 4, 5, 0, 9, 0, 8,
+ 0, 7, 3, 3, 1, 1, 1, 3, 3, 3,
+ 3, 3, 4, 4, 4, 6, 4, 6, 4, 6,
+ 5, 0, 7, 4, 4, 4, 4, 1, 0, 3,
+ 3, 1, 3, 5, 0, 1, 0, 2, 0, 3,
+ 4, 2, 0, 1, 2, 1, 0, 3, 2, 3,
+ 3, 3, 2, 1, 1, 1, 1, 1, 2, 1,
+ 2, 2, 1, 2, 1, 2, 2, 3, 0, 1,
+ 1, 3, 1, 3, 1, 3, 4, 5, 1, 3,
+ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 4, 1, 3, 0, 3, 0, 5, 2, 4,
+ 4, 1, 1, 1, 1, 0, 1, 2, 1, 2,
+ 1, 1, 2, 3, 3, 0, 0, 10, 1, 4,
+ 1, 3, 3, 0, 6, 0, 8, 4, 0, 8,
+ 0, 10, 6, 0, 8, 0, 10, 6, 1, 2,
+ 1, 1, 2, 0, 1, 5, 1, 1, 1, 1,
+ 1, 1, 3, 1, 3, 3, 3, 3, 3, 3,
+ 3, 5, 3, 2, 0, 1, 0, 2, 3, 3,
+ 1, 1, 0, 7, 0, 7, 1, 2, 0, 0,
+ 2, 0, 2, 0, 1, 1, 1, 1, 3, 1,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 6, 4, 4, 7, 6, 3, 4, 6,
- 6, 4, 4, 4, 4, 4, 4, 6, 8, 10,
- 1, 1, 3, 1, 1, 3, 1, 2, 2, 2,
- 2, 2, 1, 3, 4, 6, 4, 6, 2, 2,
- 4, 4, 4, 10, 6, 8, 6, 4, 4, 6,
- 4, 3, 4, 1, 4, 3, 4, 1, 1, 5,
- 3, 5, 3, 6, 8, 2, 2, 8, 8, 6,
- 6, 2, 6, 2, 6, 8, 4, 1, 3, 4,
- 8, 8, 4, 2, 2, 2, 6, 6, 4, 8,
- 4, 4, 8, 4, 6, 6, 4, 6, 8, 6,
- 5, 8, 7, 10, 0, 5, 4, 4, 4, 6,
- 8, 6, 6, 6, 6, 6, 2, 3, 0, 4,
- 0, 3, 0, 1, 1, 3, 4, 4, 5, 4,
- 4, 4, 5, 4, 0, 0, 7, 4, 5, 4,
- 5, 4, 4, 4, 4, 4, 5, 0, 9, 0,
- 8, 0, 7, 3, 3, 1, 1, 1, 3, 3,
- 3, 3, 3, 4, 4, 4, 6, 4, 6, 4,
- 6, 5, 0, 7, 4, 4, 4, 4, 1, 0,
- 3, 3, 1, 3, 5, 0, 1, 0, 2, 0,
- 3, 4, 2, 0, 1, 2, 1, 0, 3, 2,
- 3, 3, 3, 2, 1, 1, 1, 1, 1, 2,
- 1, 2, 2, 1, 2, 1, 2, 2, 3, 0,
- 1, 1, 3, 1, 3, 1, 3, 4, 5, 1,
- 3, 1, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 4, 1, 3, 0, 3, 0, 5, 2,
- 4, 4, 1, 1, 1, 1, 0, 1, 2, 1,
- 2, 1, 1, 2, 3, 3, 0, 0, 10, 1,
- 4, 1, 3, 3, 0, 6, 0, 8, 4, 0,
- 8, 0, 10, 6, 0, 8, 0, 10, 6, 1,
- 2, 1, 1, 2, 0, 1, 5, 1, 1, 1,
- 1, 1, 1, 3, 1, 3, 3, 3, 3, 3,
- 3, 3, 5, 3, 2, 0, 1, 0, 2, 3,
- 3, 1, 1, 0, 7, 0, 7, 1, 2, 0,
- 0, 2, 0, 2, 0, 1, 1, 1, 1, 3,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
- 0, 1, 2, 0, 1, 0, 0, 3, 0, 0,
- 3, 0, 4, 4, 2, 0, 1, 1, 0, 2,
- 3, 1, 3, 0, 7, 0, 1, 0, 3, 0,
- 3, 0, 3, 1, 1, 1, 4, 2, 2, 2,
- 1, 2, 2, 0, 3, 2, 2, 3, 3, 3,
- 3, 1, 2, 0, 1, 0, 4, 4, 2, 0,
- 1, 1, 0, 1, 2, 5, 4, 1, 4, 7,
- 5, 8, 3, 1, 1, 1, 1, 1, 2, 1,
- 1, 3, 3, 1, 3, 1, 1, 1, 1, 1,
- 0, 2, 3, 4, 1, 2, 1, 0, 1, 1,
- 1, 0, 2, 2, 2, 1, 0, 1, 2, 2,
- 2, 1, 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 2, 1, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,
+ 1, 2, 0, 1, 0, 0, 3, 0, 0, 3,
+ 0, 4, 4, 2, 0, 1, 1, 0, 2, 3,
+ 1, 3, 0, 7, 0, 1, 0, 3, 0, 3,
+ 0, 3, 1, 1, 1, 4, 2, 2, 2, 1,
+ 2, 2, 0, 3, 2, 2, 3, 3, 3, 3,
+ 1, 2, 0, 1, 0, 4, 4, 2, 0, 1,
+ 1, 0, 1, 2, 5, 4, 1, 4, 7, 5,
+ 8, 3, 1, 1, 1, 1, 1, 2, 1, 1,
+ 3, 3, 1, 3, 1, 1, 1, 1, 1, 0,
+ 2, 3, 4, 1, 2, 1, 0, 1, 1, 1,
+ 0, 2, 2, 2, 1, 0, 1, 2, 2, 2,
+ 1, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+ 2, 1, 2, 2, 2, 2, 2, 2, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 6, 0, 1, 3, 1, 3,
- 0, 2, 3, 1, 1, 2, 1, 3, 2, 0,
- 0, 7, 2, 1, 0, 3, 0, 8, 0, 8,
- 4, 5, 5, 0, 6, 4, 4, 4, 0, 6,
- 1, 1, 3, 1, 2, 1, 3, 1, 0, 2,
- 0, 2, 0, 1, 0, 0, 12, 0, 0, 10,
- 0, 0, 0, 1, 1, 0, 1, 1, 1, 0,
- 1, 0, 2, 1, 2, 0, 3, 3, 0, 1,
- 3, 1, 1, 3, 1, 3, 1, 3, 1, 1,
- 0, 1, 1, 1, 1, 1, 0, 4, 0, 4,
- 0, 1, 0, 1, 3, 1, 5, 3, 1, 1,
- 1, 1, 0, 0, 0, 7, 5, 1, 0, 0,
- 0, 13, 3, 1, 3, 3, 3, 1, 3, 0,
- 1, 0, 3, 0, 3, 2, 3, 3, 2, 5,
- 0, 0, 7, 0, 0, 8, 0, 0, 3, 1,
- 3, 2, 4, 0, 2, 0, 2, 1, 1, 1,
- 0, 0, 7, 0, 1, 0, 1, 1, 3, 1,
- 1, 2, 2, 2, 1, 1, 1, 1, 0, 3,
- 0, 3, 2, 4, 4, 3, 4, 4, 1, 3,
- 3, 3, 3, 6, 2, 2, 0, 6, 0, 8,
- 5, 2, 1, 1, 1, 5, 5, 2, 2, 1,
- 4, 3, 2, 3, 2, 2, 1, 4, 4, 3,
- 3, 3, 2, 2, 3, 4, 3, 3, 3, 3,
- 4, 4, 3, 2, 3, 3, 3, 3, 3, 4,
- 4, 3, 3, 4, 4, 3, 4, 4, 3, 1,
- 1, 1, 1, 1, 0, 1, 0, 2, 0, 1,
- 1, 1, 0, 2, 0, 2, 0, 3, 3, 0,
- 4, 0, 4, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 2, 1, 1, 0, 3, 0, 1,
- 1, 5, 0, 4, 0, 4, 1, 0, 1, 4,
- 0, 3, 3, 1, 2, 2, 2, 2, 3, 4,
- 2, 1, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 2, 0, 1, 2, 2, 0, 3, 1, 0,
- 5, 0, 1, 3, 1, 0, 3, 0, 3, 3,
- 1, 0, 5, 0, 3, 2, 0, 1, 0, 2,
- 5, 0, 6, 0, 4, 0, 1, 1, 2, 2,
- 3, 0, 1, 1, 2, 0, 3, 0, 4, 2,
- 0, 0, 0, 0, 23, 1, 1, 0, 1, 0,
- 1, 1, 0, 1, 1, 0, 2, 2, 1, 3,
- 4, 3, 3, 0, 2, 2, 1, 3, 3, 0,
- 4, 0, 3, 1, 1, 0, 3, 2, 3, 1,
- 1, 2, 0, 2, 3, 1, 5, 1, 1, 2,
- 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 1, 1, 1, 1, 1, 2, 2, 2, 0,
- 4, 0, 1, 1, 3, 7, 0, 0, 4, 0,
- 3, 1, 1, 1, 3, 1, 1, 1, 3, 5,
- 3, 5, 1, 1, 3, 4, 5, 4, 1, 3,
- 4, 4, 5, 1, 5, 3, 2, 1, 3, 2,
- 2, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 6, 0, 1, 3, 1, 3, 0,
+ 2, 3, 1, 1, 2, 1, 3, 2, 0, 0,
+ 7, 2, 1, 0, 3, 0, 8, 0, 8, 4,
+ 5, 5, 0, 6, 4, 4, 4, 0, 6, 1,
+ 1, 3, 1, 2, 1, 3, 1, 0, 2, 0,
+ 2, 0, 1, 0, 0, 12, 0, 0, 10, 0,
+ 0, 0, 1, 1, 0, 1, 1, 1, 0, 1,
+ 0, 2, 1, 2, 0, 3, 3, 0, 1, 3,
+ 1, 1, 3, 1, 3, 1, 3, 1, 1, 0,
+ 1, 1, 1, 1, 1, 0, 4, 0, 4, 0,
+ 1, 0, 1, 3, 1, 5, 3, 1, 1, 1,
+ 1, 0, 0, 0, 7, 5, 1, 0, 0, 0,
+ 13, 3, 1, 3, 3, 3, 1, 3, 0, 1,
+ 0, 3, 0, 3, 2, 0, 5, 3, 2, 0,
+ 7, 0, 0, 7, 0, 0, 8, 0, 0, 3,
+ 0, 2, 0, 2, 1, 1, 1, 0, 0, 7,
+ 0, 1, 0, 1, 1, 3, 1, 1, 2, 2,
+ 2, 1, 1, 1, 1, 0, 3, 0, 3, 2,
+ 4, 4, 3, 4, 4, 1, 3, 3, 3, 3,
+ 6, 2, 2, 0, 6, 0, 8, 5, 2, 1,
+ 1, 1, 5, 5, 2, 2, 1, 4, 3, 2,
+ 3, 2, 2, 1, 4, 4, 3, 3, 3, 2,
+ 2, 3, 4, 3, 3, 3, 3, 4, 4, 3,
+ 2, 3, 3, 3, 3, 3, 4, 4, 3, 3,
+ 4, 4, 3, 4, 4, 3, 1, 1, 1, 1,
+ 1, 0, 1, 0, 2, 0, 1, 1, 1, 0,
+ 2, 0, 2, 0, 3, 3, 0, 4, 0, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
+ 2, 1, 1, 0, 3, 0, 1, 1, 5, 0,
+ 4, 0, 4, 1, 0, 1, 4, 0, 3, 3,
+ 1, 2, 2, 2, 2, 3, 4, 2, 1, 1,
+ 1, 1, 2, 1, 1, 1, 1, 1, 2, 0,
+ 1, 2, 2, 0, 3, 1, 0, 5, 0, 1,
+ 3, 1, 0, 3, 0, 3, 3, 1, 0, 5,
+ 0, 3, 2, 0, 1, 0, 2, 5, 0, 6,
+ 0, 4, 0, 1, 1, 2, 2, 3, 0, 1,
+ 1, 2, 0, 3, 0, 4, 2, 0, 0, 0,
+ 0, 23, 1, 1, 0, 1, 0, 1, 1, 0,
+ 1, 1, 0, 2, 2, 1, 3, 4, 3, 3,
+ 0, 2, 2, 1, 3, 3, 0, 4, 0, 3,
+ 1, 1, 0, 3, 2, 3, 1, 1, 2, 0,
+ 2, 3, 1, 5, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+ 1, 1, 1, 2, 2, 2, 0, 4, 0, 1,
+ 1, 3, 7, 0, 0, 4, 0, 3, 1, 1,
+ 1, 3, 1, 1, 1, 3, 5, 3, 5, 1,
+ 1, 3, 4, 5, 4, 1, 3, 4, 4, 5,
+ 1, 5, 3, 2, 1, 3, 2, 2, 4, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -28412,28 +28422,28 @@ static const yytype_int8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 3, 1, 3, 0, 3, 0, 3,
- 0, 5, 1, 3, 1, 3, 0, 3, 1, 3,
- 0, 3, 1, 1, 1, 1, 0, 1, 1, 1,
- 0, 2, 2, 2, 0, 4, 0, 6, 0, 6,
- 0, 4, 0, 6, 0, 6, 0, 4, 0, 6,
- 0, 6, 0, 5, 0, 7, 0, 9, 0, 9,
- 2, 3, 2, 4, 3, 5, 2, 0, 4, 0,
- 4, 0, 6, 1, 1, 3, 3, 1, 3, 2,
- 2, 2, 2, 2, 1, 1, 4, 4, 1, 1,
- 1, 1, 1, 0, 5, 0, 2, 1, 1, 1,
- 1, 3, 3, 1, 1, 2, 2, 2, 0, 3,
- 0, 3, 3, 2, 0, 6, 1, 2, 1, 1,
- 1, 1, 1, 1, 0, 5, 1, 1, 1, 1,
- 1, 3, 6, 6, 7, 5, 3, 4, 1, 3,
- 8, 8, 6, 4, 0, 3, 0, 3, 1, 3,
- 2, 1, 1, 1, 0, 1, 1, 2, 0, 1,
- 1, 1, 3, 3, 4, 1, 1, 1, 1, 1,
+ 0, 3, 1, 3, 0, 3, 0, 3, 0, 5,
+ 1, 3, 1, 3, 0, 3, 1, 3, 0, 3,
+ 1, 1, 1, 1, 0, 1, 1, 1, 0, 2,
+ 2, 2, 0, 4, 0, 6, 0, 6, 0, 4,
+ 0, 6, 0, 6, 0, 4, 0, 6, 0, 6,
+ 0, 7, 0, 7, 0, 9, 0, 9, 2, 3,
+ 2, 4, 3, 5, 2, 0, 4, 0, 4, 0,
+ 6, 1, 1, 3, 3, 1, 3, 2, 2, 2,
+ 2, 2, 1, 1, 4, 4, 3, 3, 3, 1,
+ 1, 1, 0, 5, 0, 2, 1, 1, 1, 1,
+ 3, 3, 1, 1, 2, 2, 2, 0, 3, 0,
+ 3, 3, 2, 0, 6, 1, 2, 1, 1, 1,
+ 1, 1, 1, 0, 5, 1, 1, 1, 1, 1,
+ 3, 6, 6, 7, 5, 3, 4, 1, 3, 8,
+ 8, 6, 4, 0, 3, 0, 3, 1, 3, 2,
+ 1, 1, 1, 0, 1, 1, 2, 0, 1, 1,
+ 1, 3, 3, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 1, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2, 3, 3,
- 2, 0, 1, 3, 1, 2, 2, 2, 1, 3,
+ 1, 1, 1, 2, 2, 1, 3, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 2, 2, 2,
+ 2, 2, 3, 2, 2, 2, 2, 3, 3, 2,
+ 3, 0, 1, 3, 1, 2, 2, 2, 1, 3,
3, 1, 1, 3, 1, 3, 1, 3, 1, 1,
1, 1, 4, 5, 4, 1, 3, 1, 2, 0,
2, 5, 0, 2, 2, 2, 2, 2, 2, 2,
@@ -28445,31 +28455,31 @@ static const yytype_int8 yyr2[] =
0, 3, 3, 3, 3, 0, 1, 3, 3, 0,
3, 1, 3, 0, 3, 0, 3, 4, 4, 1,
1, 0, 2, 0, 0, 0, 0, 0, 20, 0,
- 2, 4, 4, 3, 4, 3, 3, 0, 3, 1,
- 3, 5, 1, 1, 1, 0, 1, 1, 0, 2,
- 0, 0, 3, 0, 2, 6, 3, 4, 4, 1,
- 0, 1, 1, 1, 0, 3, 0, 5, 0, 7,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 1, 1, 2, 0, 1, 0, 2, 4,
+ 4, 3, 4, 3, 3, 0, 3, 1, 3, 5,
+ 1, 1, 1, 0, 1, 1, 0, 2, 0, 0,
+ 3, 0, 2, 6, 3, 4, 4, 1, 0, 1,
+ 1, 1, 0, 3, 0, 5, 0, 7, 1, 1,
+ 1, 1, 2, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 2, 1, 1, 0, 6, 4, 1,
- 1, 0, 1, 2, 2, 1, 1, 2, 0, 2,
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 4, 0, 6, 0, 7, 1,
- 2, 3, 1, 2, 1, 2, 0, 5, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 7, 2, 1, 1, 2, 1, 1,
- 0, 2, 1, 3, 1, 1, 2, 1, 2, 1,
- 2, 0, 0, 8, 0, 6, 4, 4, 1, 0,
- 5, 0, 5, 2, 1, 1, 1, 2, 3, 3,
- 5, 5, 2, 2, 3, 1, 6, 8, 4, 6,
- 0, 5, 0, 0, 8, 6, 4, 4, 4, 5,
- 0, 6, 0, 12, 0, 12, 10, 0, 12, 0,
- 0, 0, 15, 1, 1, 0, 3, 1, 2, 3,
- 2, 3, 1, 1, 1, 4, 2, 0, 6, 1,
- 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 2, 1, 1,
+ 0, 6, 4, 1, 1, 1, 4, 4, 1, 1,
+ 2, 0, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 4, 0, 6, 0,
+ 7, 1, 2, 3, 1, 2, 1, 2, 0, 5,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 6, 0, 0, 9, 1, 2, 0, 5, 0,
- 0, 7, 0, 4
+ 1, 0, 0, 0, 0, 7, 1, 1, 2, 1,
+ 1, 3, 1, 2, 1, 2, 0, 6, 0, 5,
+ 4, 4, 1, 0, 5, 0, 5, 1, 1, 1,
+ 2, 3, 3, 5, 5, 2, 2, 3, 1, 6,
+ 8, 4, 6, 0, 5, 0, 0, 8, 0, 6,
+ 0, 11, 0, 11, 10, 0, 12, 0, 0, 13,
+ 1, 1, 0, 3, 1, 2, 3, 2, 3, 1,
+ 1, 1, 4, 2, 0, 6, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 6, 0,
+ 0, 9, 1, 2, 0, 5, 0, 0, 7, 0,
+ 4
};
@@ -28675,7 +28685,7 @@ yydestruct (const char *yymsg,
switch (yykind)
{
case YYSYMBOL_expr_lex: /* expr_lex */
-#line 1551 "/home/buildbot/git/mkdist/sql/yy_oracle.yy"
+#line 1572 "/home/buildbot/git/mkdist/sql/yy_oracle.yy"
{
/*
In case of a syntax/oom error let's free the sp_expr_lex
@@ -28687,11 +28697,11 @@ yydestruct (const char *yymsg,
if (!((*yyvaluep).expr_lex)->sp_lex_in_use)
delete ((*yyvaluep).expr_lex);
}
-#line 28691 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 28701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case YYSYMBOL_cursor_actual_parameters: /* cursor_actual_parameters */
-#line 1610 "/home/buildbot/git/mkdist/sql/yy_oracle.yy"
+#line 1632 "/home/buildbot/git/mkdist/sql/yy_oracle.yy"
{
if (((*yyvaluep).sp_assignment_lex_list))
{
@@ -28704,11 +28714,11 @@ yydestruct (const char *yymsg,
}
}
}
-#line 28708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 28718 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case YYSYMBOL_opt_parenthesized_cursor_actual_parameters: /* opt_parenthesized_cursor_actual_parameters */
-#line 1610 "/home/buildbot/git/mkdist/sql/yy_oracle.yy"
+#line 1632 "/home/buildbot/git/mkdist/sql/yy_oracle.yy"
{
if (((*yyvaluep).sp_assignment_lex_list))
{
@@ -28721,7 +28731,7 @@ yydestruct (const char *yymsg,
}
}
}
-#line 28725 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 28735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
default:
@@ -28995,7 +29005,7 @@ yyreduce:
switch (yyn)
{
case 2: /* query: END_OF_INPUT */
-#line 1976 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2007 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!thd->bootstrap &&
(!(thd->lex->lex_options & OPTION_LEX_FOUND_COMMENT)))
@@ -29004,11 +29014,11 @@ yyreduce:
thd->lex->sql_command= SQLCOM_EMPTY_QUERY;
YYLIP->found_semicolon= NULL;
}
-#line 29008 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 3: /* $@1: %empty */
-#line 1985 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2016 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_input_stream *lip = YYLIP;
@@ -29031,186 +29041,186 @@ yyreduce:
lip->found_semicolon= NULL;
}
}
-#line 29035 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29045 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 5: /* query: directly_executable_statement END_OF_INPUT */
-#line 2010 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2041 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Single query, not terminated. */
YYLIP->found_semicolon= NULL;
}
-#line 29044 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29054 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 71: /* deallocate: deallocate_or_drop PREPARE_SYM ident */
-#line 2093 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2124 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_deallocate_prepare((yyvsp[0].ident_sys));
}
-#line 29052 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29062 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 74: /* $@2: %empty */
-#line 2105 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2136 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "PREPARE..FROM"; }
-#line 29058 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 75: /* prepare: PREPARE_SYM ident FROM $@2 expr */
-#line 2107 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2138 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->clause_that_disallows_subselect= NULL;
if (Lex->stmt_prepare((yyvsp[-3].ident_sys), (yyvsp[0].item)))
MYSQL_YYABORT;
}
-#line 29068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 76: /* execute: EXECUTE_SYM ident execute_using */
-#line 2116 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2147 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_execute((yyvsp[-1].ident_sys), (yyvsp[0].item_list)))
MYSQL_YYABORT;
}
-#line 29077 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29087 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 77: /* $@3: %empty */
-#line 2121 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2152 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "EXECUTE IMMEDIATE"; }
-#line 29083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 78: /* $@4: %empty */
-#line 2123 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2154 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= NULL; }
-#line 29089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 79: /* execute: EXECUTE_SYM IMMEDIATE_SYM $@3 expr $@4 execute_using */
-#line 2125 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2156 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_execute_immediate((yyvsp[-2].item), (yyvsp[0].item_list)))
MYSQL_YYABORT;
}
-#line 29098 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 80: /* execute_using: %empty */
-#line 2132 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2163 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= NULL; }
-#line 29104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 81: /* $@5: %empty */
-#line 2134 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2165 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "EXECUTE..USING"; }
-#line 29110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 82: /* execute_using: USING $@5 execute_params */
-#line 2136 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2167 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= (yyvsp[0].item_list);
Lex->clause_that_disallows_subselect= NULL;
}
-#line 29119 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 83: /* execute_params: expr_or_ignore_or_default */
-#line 2144 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2175 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_list)= List<Item>::make(thd->mem_root, (yyvsp[0].item)))))
MYSQL_YYABORT;
}
-#line 29128 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29138 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 84: /* execute_params: execute_params ',' expr_or_ignore_or_default */
-#line 2149 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2180 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.item_list)= (yyvsp[-2].item_list))->push_back((yyvsp[0].item), thd->mem_root))
MYSQL_YYABORT;
}
-#line 29137 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29147 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 85: /* $@6: %empty */
-#line 2160 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2191 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead))
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "HELP"));
}
-#line 29146 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 86: /* help: HELP_SYM $@6 ident_or_text */
-#line 2165 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2196 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_HELP;
lex->help_arg= (yyvsp[0].lex_str).str;
}
-#line 29156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29166 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 87: /* $@7: %empty */
-#line 2176 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2207 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_CHANGE_MASTER;
}
-#line 29164 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29174 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 88: /* change: CHANGE MASTER_SYM optional_connection_name TO_SYM $@7 master_defs optional_for_channel */
-#line 2181 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2212 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 29170 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29180 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 91: /* master_def: MASTER_HOST_SYM '=' TEXT_STRING_sys */
-#line 2191 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2222 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.host = (yyvsp[0].lex_str).str;
}
-#line 29178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29188 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 92: /* master_def: MASTER_USER_SYM '=' TEXT_STRING_sys */
-#line 2195 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2226 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.user = (yyvsp[0].lex_str).str;
}
-#line 29186 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29196 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 93: /* master_def: MASTER_PASSWORD_SYM '=' TEXT_STRING_sys */
-#line 2199 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2230 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.password = (yyvsp[0].lex_str).str;
}
-#line 29194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 94: /* master_def: MASTER_PORT_SYM '=' ulong_num */
-#line 2203 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2234 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.port = (yyvsp[0].ulong_num);
}
-#line 29202 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29212 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 95: /* master_def: MASTER_CONNECT_RETRY_SYM '=' ulong_num */
-#line 2207 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2238 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.connect_retry = (yyvsp[0].ulong_num);
}
-#line 29210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29220 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 96: /* master_def: MASTER_DELAY_SYM '=' ulong_num */
-#line 2211 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2242 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].ulong_num) > MASTER_DELAY_MAX)
{
@@ -29220,85 +29230,85 @@ yyreduce:
else
Lex->mi.sql_delay = (yyvsp[0].ulong_num);
}
-#line 29224 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29234 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 97: /* master_def: MASTER_SSL_SYM '=' ulong_num */
-#line 2221 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2252 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl= (yyvsp[0].ulong_num) ?
LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE;
}
-#line 29233 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29243 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 98: /* master_def: MASTER_SSL_CA_SYM '=' TEXT_STRING_sys */
-#line 2226 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2257 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_ca= (yyvsp[0].lex_str).str;
}
-#line 29241 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29251 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 99: /* master_def: MASTER_SSL_CAPATH_SYM '=' TEXT_STRING_sys */
-#line 2230 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2261 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_capath= (yyvsp[0].lex_str).str;
}
-#line 29249 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 100: /* master_def: MASTER_SSL_CERT_SYM '=' TEXT_STRING_sys */
-#line 2234 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2265 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_cert= (yyvsp[0].lex_str).str;
}
-#line 29257 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29267 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 101: /* master_def: MASTER_SSL_CIPHER_SYM '=' TEXT_STRING_sys */
-#line 2238 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2269 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_cipher= (yyvsp[0].lex_str).str;
}
-#line 29265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29275 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 102: /* master_def: MASTER_SSL_KEY_SYM '=' TEXT_STRING_sys */
-#line 2242 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2273 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_key= (yyvsp[0].lex_str).str;
}
-#line 29273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29283 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 103: /* master_def: MASTER_SSL_VERIFY_SERVER_CERT_SYM '=' ulong_num */
-#line 2246 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2277 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_verify_server_cert= (yyvsp[0].ulong_num) ?
LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE;
}
-#line 29282 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29292 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 104: /* master_def: MASTER_SSL_CRL_SYM '=' TEXT_STRING_sys */
-#line 2251 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2282 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_crl= (yyvsp[0].lex_str).str;
}
-#line 29290 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29300 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 105: /* master_def: MASTER_SSL_CRLPATH_SYM '=' TEXT_STRING_sys */
-#line 2255 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2286 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.ssl_crlpath= (yyvsp[0].lex_str).str;
}
-#line 29298 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 106: /* master_def: MASTER_HEARTBEAT_PERIOD_SYM '=' NUM_literal */
-#line 2260 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2291 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.heartbeat_period= (float) (yyvsp[0].item_num)->val_real();
if (unlikely(Lex->mi.heartbeat_period >
@@ -29326,67 +29336,67 @@ yyreduce:
}
Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 29330 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29340 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 107: /* master_def: IGNORE_SERVER_IDS_SYM '=' '(' ignore_server_id_list ')' */
-#line 2288 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2319 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.repl_ignore_server_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 29338 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29348 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 108: /* master_def: DO_DOMAIN_IDS_SYM '=' '(' do_domain_id_list ')' */
-#line 2292 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2323 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.repl_do_domain_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 29346 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29356 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 109: /* master_def: IGNORE_DOMAIN_IDS_SYM '=' '(' ignore_domain_id_list ')' */
-#line 2296 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2327 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.repl_ignore_domain_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
}
-#line 29354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29364 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 114: /* ignore_server_id: ulong_num */
-#line 2311 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2342 "/home/buildbot/git/sql/sql_yacc.yy"
{
insert_dynamic(&Lex->mi.repl_ignore_server_ids, (uchar*) &((yyvsp[0].ulong_num)));
}
-#line 29362 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29372 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 118: /* do_domain_id: ulong_num */
-#line 2324 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2355 "/home/buildbot/git/sql/sql_yacc.yy"
{
insert_dynamic(&Lex->mi.repl_do_domain_ids, (uchar*) &((yyvsp[0].ulong_num)));
}
-#line 29370 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 122: /* ignore_domain_id: ulong_num */
-#line 2337 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2368 "/home/buildbot/git/sql/sql_yacc.yy"
{
insert_dynamic(&Lex->mi.repl_ignore_domain_ids, (uchar*) &((yyvsp[0].ulong_num)));
}
-#line 29378 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29388 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 123: /* master_file_def: MASTER_LOG_FILE_SYM '=' TEXT_STRING_sys */
-#line 2344 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2375 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.log_file_name = (yyvsp[0].lex_str).str;
}
-#line 29386 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29396 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 124: /* master_file_def: MASTER_LOG_POS_SYM '=' ulonglong_num */
-#line 2348 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2379 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
If the user specified a value < BIN_LOG_HEADER_SIZE, adjust it
@@ -29401,76 +29411,76 @@ yyreduce:
*/
Lex->mi.pos= MY_MAX(BIN_LOG_HEADER_SIZE, (yyvsp[0].ulonglong_number));
}
-#line 29405 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29415 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 125: /* master_file_def: RELAY_LOG_FILE_SYM '=' TEXT_STRING_sys */
-#line 2363 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2394 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.relay_log_name = (yyvsp[0].lex_str).str;
}
-#line 29413 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29423 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 126: /* master_file_def: RELAY_LOG_POS_SYM '=' ulong_num */
-#line 2367 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2398 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.relay_log_pos = (yyvsp[0].ulong_num);
/* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */
Lex->mi.relay_log_pos= MY_MAX(BIN_LOG_HEADER_SIZE, Lex->mi.relay_log_pos);
}
-#line 29423 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29433 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 127: /* master_file_def: MASTER_USE_GTID_SYM '=' CURRENT_POS_SYM */
-#line 2373 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2404 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->mi.use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_UNCHANGED))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_CURRENT_POS;
}
-#line 29433 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29443 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 128: /* master_file_def: MASTER_USE_GTID_SYM '=' SLAVE_POS_SYM */
-#line 2379 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2410 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->mi.use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_UNCHANGED))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_SLAVE_POS;
}
-#line 29443 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29453 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 129: /* master_file_def: MASTER_USE_GTID_SYM '=' NO_SYM */
-#line 2385 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2416 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->mi.use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_UNCHANGED))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_NO;
}
-#line 29453 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 130: /* master_file_def: MASTER_DEMOTE_TO_SLAVE_SYM '=' bool */
-#line 2391 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2422 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.is_demotion_opt= (bool) (yyvsp[0].ulong_num);
}
-#line 29461 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 131: /* optional_connection_name: %empty */
-#line 2398 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2429 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->mi.connection_name= null_clex_str;
}
-#line 29470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 133: /* connection_name: TEXT_STRING_sys */
-#line 2407 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2438 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.connection_name= (yyvsp[0].lex_str);
#ifdef HAVE_REPLICATION
@@ -29478,19 +29488,19 @@ yyreduce:
my_yyabort_error((ER_WRONG_ARGUMENTS, MYF(0), "MASTER_CONNECTION_NAME"));
#endif
}
-#line 29482 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29492 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 134: /* optional_for_channel: %empty */
-#line 2418 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2449 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*do nothing */
}
-#line 29490 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29500 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 136: /* for_channel: FOR_SYM CHANNEL_SYM TEXT_STRING_sys */
-#line 2427 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2458 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->mi.connection_name.str != NULL)
{
@@ -29506,11 +29516,11 @@ yyreduce:
}
}
-#line 29510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29520 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 137: /* $@8: %empty */
-#line 2448 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2479 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
if (!(lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_create_table()))
@@ -29522,11 +29532,11 @@ yyreduce:
if (lex->set_command_with_check(SQLCOM_CREATE_TABLE, (yyvsp[-2].num), (yyvsp[-3].object_ddl_options) | (yyvsp[0].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 29526 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29536 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 138: /* $@9: %empty */
-#line 2460 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2491 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
if (!lex->first_select_lex()->
@@ -29543,21 +29553,21 @@ yyreduce:
lex->create_last_non_select_table= lex->last_table();
lex->inc_select_stack_outer_barrier();
}
-#line 29547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29557 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 139: /* create: create_or_replace opt_temporary TABLE_SYM opt_if_not_exists $@8 table_ident $@9 create_body */
-#line 2477 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2508 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
create_table_set_open_action_and_adjust_tables(lex);
Lex->pop_select(); //main select
}
-#line 29557 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29567 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 140: /* $@10: %empty */
-#line 2483 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2514 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
if (lex->main_select_push())
@@ -29587,11 +29597,11 @@ yyreduce:
new (thd->mem_root) sequence_definition())))
MYSQL_YYABORT;
}
-#line 29591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29601 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 141: /* create: create_or_replace opt_temporary SEQUENCE_SYM opt_if_not_exists table_ident $@10 opt_sequence opt_create_table_options */
-#line 2513 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2544 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
@@ -29616,131 +29626,131 @@ yyreduce:
create_table_set_open_action_and_adjust_tables(lex);
Lex->pop_select(); //main select
}
-#line 29620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 142: /* $@11: %empty */
-#line 2538 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2569 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 29629 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29639 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 143: /* $@12: %empty */
-#line 2545 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2576 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index(Key::MULTIPLE, &(yyvsp[-3].ident_sys), (yyvsp[-2].key_alg), (yyvsp[-7].object_ddl_options) | (yyvsp[-5].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 29640 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29650 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 144: /* create: create_or_replace INDEX_SYM opt_if_not_exists $@11 ident opt_key_algorithm_clause ON table_ident $@12 '(' key_list ')' opt_lock_wait_timeout normal_key_options opt_index_lock_algorithm */
-#line 2553 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2584 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29658 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 145: /* $@13: %empty */
-#line 2557 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2588 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 29657 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29667 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 146: /* $@14: %empty */
-#line 2564 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2595 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index(Key::UNIQUE, &(yyvsp[-3].ident_sys), (yyvsp[-2].key_alg), (yyvsp[-8].object_ddl_options) | (yyvsp[-5].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 29668 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29678 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 147: /* create: create_or_replace UNIQUE_SYM INDEX_SYM opt_if_not_exists $@13 ident opt_key_algorithm_clause ON table_ident $@14 '(' key_list opt_without_overlaps ')' opt_lock_wait_timeout normal_key_options opt_index_lock_algorithm */
-#line 2573 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2604 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29676 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29686 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 148: /* $@15: %empty */
-#line 2577 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2608 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 29685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29695 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 149: /* $@16: %empty */
-#line 2583 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2614 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index((yyvsp[-6].key_type), &(yyvsp[-2].ident_sys), HA_KEY_ALG_UNDEF, (yyvsp[-7].object_ddl_options) | (yyvsp[-3].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 29696 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29706 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 150: /* create: create_or_replace fulltext INDEX_SYM $@15 opt_if_not_exists ident ON table_ident $@16 '(' key_list ')' opt_lock_wait_timeout fulltext_key_options opt_index_lock_algorithm */
-#line 2591 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2622 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29704 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29714 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 151: /* $@17: %empty */
-#line 2595 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 29713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29723 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 152: /* $@18: %empty */
-#line 2601 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2632 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_create_index_prepare((yyvsp[0].table)))
MYSQL_YYABORT;
if (Lex->add_create_index((yyvsp[-6].key_type), &(yyvsp[-2].ident_sys), HA_KEY_ALG_UNDEF, (yyvsp[-7].object_ddl_options) | (yyvsp[-3].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 29724 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 153: /* create: create_or_replace spatial INDEX_SYM $@17 opt_if_not_exists ident ON table_ident $@18 '(' key_list ')' opt_lock_wait_timeout spatial_key_options opt_index_lock_algorithm */
-#line 2609 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2640 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29732 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29742 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 154: /* $@19: %empty */
-#line 2613 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2644 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.init();
}
-#line 29740 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 155: /* create: create_or_replace DATABASE opt_if_not_exists ident $@19 opt_create_database_options */
-#line 2617 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2648 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(lex->set_command_with_check(SQLCOM_CREATE_DB, 0,
@@ -29748,11 +29758,11 @@ yyreduce:
MYSQL_YYABORT;
lex->name= (yyvsp[-2].ident_sys);
}
-#line 29752 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29762 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 156: /* $@20: %empty */
-#line 2626 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2657 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -29761,19 +29771,19 @@ yyreduce:
DTYPE_ALGORITHM_UNDEFINED, (yyvsp[-3].view_suid), (yyvsp[0].table)))
MYSQL_YYABORT;
}
-#line 29765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 157: /* create: create_or_replace definer_opt opt_view_suid VIEW_SYM opt_if_not_exists table_ident $@20 view_list_opt AS view_select */
-#line 2635 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2666 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29773 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29783 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 158: /* $@21: %empty */
-#line 2640 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2671 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_create_view(thd, (yyvsp[-6].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-5].num), (yyvsp[-3].view_suid), (yyvsp[0].table))))
MYSQL_YYABORT;
@@ -29781,122 +29791,122 @@ yyreduce:
MYSQL_YYABORT;
Lex->inc_select_stack_outer_barrier();
}
-#line 29785 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 159: /* create: create_or_replace view_algorithm definer_opt opt_view_suid VIEW_SYM opt_if_not_exists table_ident $@21 view_list_opt AS view_select */
-#line 2648 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2679 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29793 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29803 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 160: /* $@22: %empty */
-#line 2652 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2683 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
Lex->create_info.set((yyvsp[-2].object_ddl_options));
}
-#line 29803 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29813 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 161: /* create: create_or_replace definer_opt TRIGGER_SYM $@22 trigger_tail */
-#line 2658 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2689 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29821 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 162: /* $@23: %empty */
-#line 2662 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2693 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
Lex->create_info.set((yyvsp[-2].object_ddl_options));
}
-#line 29821 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 163: /* create: create_or_replace definer_opt EVENT_SYM $@23 event_tail */
-#line 2668 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2699 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 29829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29839 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 164: /* create: create_or_replace USER_SYM opt_if_not_exists clear_privileges grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration */
-#line 2673 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2704 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->set_command_with_check(SQLCOM_CREATE_USER,
(yyvsp[-7].object_ddl_options) | (yyvsp[-5].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 29839 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29849 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 165: /* create: create_or_replace ROLE_SYM opt_if_not_exists clear_privileges role_list opt_with_admin */
-#line 2680 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2711 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->set_command_with_check(SQLCOM_CREATE_ROLE,
(yyvsp[-5].object_ddl_options) | (yyvsp[-3].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 29849 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29859 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 166: /* $@24: %empty */
-#line 2685 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2716 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->set_command(SQLCOM_CREATE_SERVER, (yyvsp[0].object_ddl_options)); }
-#line 29855 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29865 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 167: /* create: create_or_replace $@24 server_def */
-#line 2687 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2718 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 29861 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29871 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 169: /* opt_sequence: %empty */
-#line 2692 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2723 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 29867 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29877 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 173: /* sequence_def: MINVALUE_SYM opt_equal longlong_num */
-#line 2703 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2734 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.seq_create_info->min_value= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_min_value;
}
-#line 29876 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 174: /* sequence_def: NO_SYM MINVALUE_SYM */
-#line 2708 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2739 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_min_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MINVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_min_value;
}
-#line 29886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 175: /* sequence_def: NOMINVALUE_SYM */
-#line 2714 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2745 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_min_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MINVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_min_value;
}
-#line 29896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29906 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 176: /* sequence_def: MAXVALUE_SYM opt_equal longlong_num */
-#line 2720 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2751 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_max_value))
@@ -29904,31 +29914,31 @@ yyreduce:
Lex->create_info.seq_create_info->max_value= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_max_value;
}
-#line 29908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 177: /* sequence_def: NO_SYM MAXVALUE_SYM */
-#line 2728 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2759 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_max_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MAXVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_max_value;
}
-#line 29918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29928 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 178: /* sequence_def: NOMAXVALUE_SYM */
-#line 2734 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2765 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields & seq_field_used_max_value))
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MAXVALUE"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_max_value;
}
-#line 29928 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29938 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 179: /* sequence_def: START_SYM opt_with longlong_num */
-#line 2740 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2771 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_start))
@@ -29936,11 +29946,11 @@ yyreduce:
Lex->create_info.seq_create_info->start= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_start;
}
-#line 29940 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29950 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 180: /* sequence_def: INCREMENT_SYM opt_by longlong_num */
-#line 2748 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2779 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_increment))
@@ -29948,11 +29958,11 @@ yyreduce:
Lex->create_info.seq_create_info->increment= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_increment;
}
-#line 29952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 181: /* sequence_def: CACHE_SYM opt_equal longlong_num */
-#line 2756 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2787 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cache))
@@ -29960,11 +29970,11 @@ yyreduce:
Lex->create_info.seq_create_info->cache= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cache;
}
-#line 29964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29974 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 182: /* sequence_def: NOCACHE_SYM */
-#line 2764 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2795 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cache))
@@ -29972,11 +29982,11 @@ yyreduce:
Lex->create_info.seq_create_info->cache= 0;
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cache;
}
-#line 29976 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29986 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 183: /* sequence_def: CYCLE_SYM */
-#line 2772 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2803 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cycle))
@@ -29984,11 +29994,11 @@ yyreduce:
Lex->create_info.seq_create_info->cycle= 1;
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cycle;
}
-#line 29988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 29998 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 184: /* sequence_def: NOCYCLE_SYM */
-#line 2780 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2811 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.seq_create_info->used_fields &
seq_field_used_cycle))
@@ -29996,11 +30006,11 @@ yyreduce:
Lex->create_info.seq_create_info->cycle= 0;
Lex->create_info.seq_create_info->used_fields|= seq_field_used_cycle;
}
-#line 30000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30010 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 185: /* sequence_def: RESTART_SYM */
-#line 2788 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2819 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sql_command != SQLCOM_ALTER_SEQUENCE))
{
@@ -30012,11 +30022,11 @@ yyreduce:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "RESTART"));
Lex->create_info.seq_create_info->used_fields|= seq_field_used_restart;
}
-#line 30016 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30026 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 186: /* sequence_def: RESTART_SYM opt_with longlong_num */
-#line 2800 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2831 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sql_command != SQLCOM_ALTER_SEQUENCE))
{
@@ -30029,101 +30039,101 @@ yyreduce:
Lex->create_info.seq_create_info->restart= (yyvsp[0].longlong_number);
Lex->create_info.seq_create_info->used_fields|= seq_field_used_restart | seq_field_used_restart_value;
}
-#line 30033 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30043 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 187: /* force_lookahead: %empty */
-#line 2815 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2846 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30039 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 188: /* force_lookahead: FORCE_LOOKAHEAD */
-#line 2815 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2846 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30045 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 189: /* $@25: %empty */
-#line 2819 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2850 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_create_options_with_check((yyvsp[-1].object_ddl_options))))
MYSQL_YYABORT;
Lex->server_options.reset((yyvsp[0].lex_str));
}
-#line 30055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30065 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 190: /* server_def: SERVER_SYM opt_if_not_exists ident_or_text $@25 FOREIGN DATA_SYM WRAPPER_SYM ident_or_text OPTIONS_SYM '(' server_options_list ')' */
-#line 2826 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2857 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->server_options.scheme= (yyvsp[-4].lex_str); }
-#line 30061 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30071 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 193: /* server_option: USER_SYM TEXT_STRING_sys */
-#line 2836 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2867 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.username.str == 0);
Lex->server_options.username= (yyvsp[0].lex_str);
}
-#line 30070 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30080 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 194: /* server_option: HOST_SYM TEXT_STRING_sys */
-#line 2841 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2872 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.host.str == 0);
Lex->server_options.host= (yyvsp[0].lex_str);
}
-#line 30079 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 195: /* server_option: DATABASE TEXT_STRING_sys */
-#line 2846 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2877 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.db.str == 0);
Lex->server_options.db= (yyvsp[0].lex_str);
}
-#line 30088 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30098 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 196: /* server_option: OWNER_SYM TEXT_STRING_sys */
-#line 2851 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2882 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.owner.str == 0);
Lex->server_options.owner= (yyvsp[0].lex_str);
}
-#line 30097 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30107 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 197: /* server_option: PASSWORD_SYM TEXT_STRING_sys */
-#line 2856 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2887 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.password.str == 0);
Lex->server_options.password= (yyvsp[0].lex_str);
}
-#line 30106 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 198: /* server_option: SOCKET_SYM TEXT_STRING_sys */
-#line 2861 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2892 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS(Lex->server_options.socket.str == 0);
Lex->server_options.socket= (yyvsp[0].lex_str);
}
-#line 30115 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30125 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 199: /* server_option: PORT_SYM ulong_num */
-#line 2866 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2897 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->server_options.port= (yyvsp[0].ulong_num);
}
-#line 30123 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30133 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 200: /* $@26: %empty */
-#line 2873 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2904 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
@@ -30140,11 +30150,11 @@ yyreduce:
lex->sql_command= SQLCOM_CREATE_EVENT;
/* We need that for disallowing subqueries */
}
-#line 30144 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30154 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 201: /* event_tail: remember_name opt_if_not_exists sp_name $@26 ON SCHEDULE_SYM ev_schedule_time opt_ev_on_completion opt_ev_status opt_ev_comment DO_SYM ev_sql_stmt */
-#line 2894 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2925 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
sql_command is set here because some rules in ev_sql_stmt
@@ -30152,123 +30162,123 @@ yyreduce:
*/
Lex->sql_command= SQLCOM_CREATE_EVENT;
}
-#line 30156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30166 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 202: /* $@27: %empty */
-#line 2905 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2936 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_expression= (yyvsp[-1].item);
Lex->event_parse_data->interval= (yyvsp[0].interval);
}
-#line 30165 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30175 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 204: /* ev_schedule_time: AT_SYM expr */
-#line 2912 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2943 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_execute_at= (yyvsp[0].item);
}
-#line 30173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30183 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 205: /* opt_ev_status: %empty */
-#line 2918 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2949 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 30179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30189 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 206: /* opt_ev_status: ENABLE_SYM */
-#line 2920 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2951 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->status= Event_parse_data::ENABLED;
Lex->event_parse_data->status_changed= true;
(yyval.num)= 1;
}
-#line 30189 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30199 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 207: /* opt_ev_status: DISABLE_SYM ON SLAVE */
-#line 2926 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2957 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->status= Event_parse_data::SLAVESIDE_DISABLED;
Lex->event_parse_data->status_changed= true;
(yyval.num)= 1;
}
-#line 30199 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 208: /* opt_ev_status: DISABLE_SYM */
-#line 2932 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2963 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->status= Event_parse_data::DISABLED;
Lex->event_parse_data->status_changed= true;
(yyval.num)= 1;
}
-#line 30209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 209: /* ev_starts: %empty */
-#line 2941 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2972 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_now_local(thd, 0);
if (unlikely(item == NULL))
MYSQL_YYABORT;
Lex->event_parse_data->item_starts= item;
}
-#line 30220 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30230 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 210: /* ev_starts: STARTS_SYM expr */
-#line 2948 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2979 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_starts= (yyvsp[0].item);
}
-#line 30228 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30238 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 212: /* ev_ends: ENDS_SYM expr */
-#line 2956 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2987 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->item_ends= (yyvsp[0].item);
}
-#line 30236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30246 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 213: /* opt_ev_on_completion: %empty */
-#line 2962 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2993 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 30242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30252 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 215: /* ev_on_completion: ON COMPLETION_SYM opt_not PRESERVE_SYM */
-#line 2968 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 2999 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->event_parse_data->on_completion= (yyvsp[-1].num)
? Event_parse_data::ON_COMPLETION_DROP
: Event_parse_data::ON_COMPLETION_PRESERVE;
(yyval.num)= 1;
}
-#line 30253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 216: /* opt_ev_comment: %empty */
-#line 2977 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3008 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 30259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30269 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 217: /* opt_ev_comment: COMMENT_SYM TEXT_STRING_sys */
-#line 2979 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3010 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->comment= Lex->event_parse_data->comment= (yyvsp[0].lex_str);
(yyval.num)= 1;
}
-#line 30268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 218: /* $@28: %empty */
-#line 2986 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3017 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
@@ -30301,519 +30311,562 @@ yyreduce:
lex->sphead->set_body_start(thd, lip->get_cpp_ptr());
}
-#line 30305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 219: /* ev_sql_stmt: $@28 sp_proc_stmt force_lookahead */
-#line 3019 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3050 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* return back to the original memory root ASAP */
if (Lex->sp_body_finalize_event(thd))
MYSQL_YYABORT;
}
-#line 30315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 220: /* clear_privileges: %empty */
-#line 3028 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3059 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->users_list.empty();
lex->first_select_lex()->db= null_clex_str;
lex->account_options.reset();
}
-#line 30326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30336 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 221: /* opt_aggregate: %empty */
-#line 3037 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3068 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_aggregate_type)= NOT_AGGREGATE; }
-#line 30332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30342 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 222: /* opt_aggregate: AGGREGATE_SYM */
-#line 3038 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3069 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_aggregate_type)= GROUP_AGGREGATE; }
-#line 30338 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30348 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 223: /* sp_handler: FUNCTION_SYM */
-#line 3043 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3074 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_handler)= &sp_handler_function; }
-#line 30344 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
case 224: /* sp_handler: PROCEDURE_SYM */
-#line 3044 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 3075 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_handler)= &sp_handler_procedure; }
-#line 30350 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30360 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 227: /* sp_handler_package_spec: PACKAGE_ORACLE_SYM */
+#line 3081 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_spec; }
+#line 30366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 228: /* sp_handler_package_spec: PACKAGE_MARIADB_SYM */
+#line 3082 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_spec; }
+#line 30372 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 229: /* sp_handler_package_body: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM */
+#line 3086 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_body; }
+#line 30378 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 230: /* sp_handler_package_body: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM */
+#line 3087 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.sp_handler)= &sp_handler_package_body; }
+#line 30384 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 225: /* sp_handler: PACKAGE_ORACLE_SYM */
-#line 3045 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.sp_handler)= &sp_handler_package_spec; }
-#line 30356 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ case 231: /* drop_routine: DROP sp_handler opt_if_exists ident '.' ident */
+#line 3092 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (Lex->stmt_drop_routine((yyvsp[-4].sp_handler), (yyvsp[-3].object_ddl_options), (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys)))
+ MYSQL_YYABORT;
+ }
+#line 30393 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 226: /* sp_handler: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM */
-#line 3046 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.sp_handler)= &sp_handler_package_body; }
-#line 30362 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ case 232: /* drop_routine: DROP sp_handler opt_if_exists ident */
+#line 3097 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (Lex->stmt_drop_routine((yyvsp[-2].sp_handler), (yyvsp[-1].object_ddl_options), Lex_ident_sys(), (yyvsp[0].ident_sys)))
+ MYSQL_YYABORT;
+ }
+#line 30402 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 227: /* sp_name: ident '.' ident */
-#line 3052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 233: /* sp_name: ident '.' ident */
+#line 3106 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
+ if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 30371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 228: /* sp_name: ident */
-#line 3057 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 234: /* sp_name: ident */
+#line 3111 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, &(yyvsp[0].ident_sys)))))
+ if (unlikely(!((yyval.spname)= Lex->make_sp_name(thd, (yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 30380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 229: /* sp_a_chistics: %empty */
-#line 3064 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 235: /* sp_a_chistics: %empty */
+#line 3118 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30386 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30426 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 230: /* sp_a_chistics: sp_a_chistics sp_chistic */
-#line 3065 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 236: /* sp_a_chistics: sp_a_chistics sp_chistic */
+#line 3119 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30392 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 231: /* sp_c_chistics: %empty */
-#line 3069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 237: /* sp_c_chistics: %empty */
+#line 3123 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30398 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30438 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 232: /* sp_c_chistics: sp_c_chistics sp_c_chistic */
-#line 3070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 238: /* sp_c_chistics: sp_c_chistics sp_c_chistic */
+#line 3124 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30444 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 233: /* sp_chistic: COMMENT_SYM TEXT_STRING_sys */
-#line 3076 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 239: /* sp_chistic: COMMENT_SYM TEXT_STRING_sys */
+#line 3130 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.comment= (yyvsp[0].lex_str); }
-#line 30410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30450 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 234: /* sp_chistic: LANGUAGE_SYM SQL_SYM */
-#line 3078 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 240: /* sp_chistic: LANGUAGE_SYM SQL_SYM */
+#line 3132 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* Just parse it, we only have one language for now. */ }
-#line 30416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 235: /* sp_chistic: NO_SYM SQL_SYM */
-#line 3080 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 241: /* sp_chistic: NO_SYM SQL_SYM */
+#line 3134 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_NO_SQL; }
-#line 30422 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 236: /* sp_chistic: CONTAINS_SYM SQL_SYM */
-#line 3082 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 242: /* sp_chistic: CONTAINS_SYM SQL_SYM */
+#line 3136 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_CONTAINS_SQL; }
-#line 30428 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30468 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 237: /* sp_chistic: READS_SYM SQL_SYM DATA_SYM */
-#line 3084 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 243: /* sp_chistic: READS_SYM SQL_SYM DATA_SYM */
+#line 3138 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_READS_SQL_DATA; }
-#line 30434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30474 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 238: /* sp_chistic: MODIFIES_SYM SQL_SYM DATA_SYM */
-#line 3086 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 244: /* sp_chistic: MODIFIES_SYM SQL_SYM DATA_SYM */
+#line 3140 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.daccess= SP_MODIFIES_SQL_DATA; }
-#line 30440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 239: /* sp_chistic: sp_suid */
-#line 3088 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 245: /* sp_chistic: sp_suid */
+#line 3142 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.suid= (yyvsp[0].sp_suid); }
-#line 30446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30486 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 240: /* sp_c_chistic: sp_chistic */
-#line 3093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 246: /* sp_c_chistic: sp_chistic */
+#line 3147 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 30452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30492 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 241: /* sp_c_chistic: opt_not DETERMINISTIC_SYM */
-#line 3094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 247: /* sp_c_chistic: opt_not DETERMINISTIC_SYM */
+#line 3148 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sp_chistics.detistic= ! (yyvsp[-1].num); }
-#line 30458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30498 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 242: /* sp_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
-#line 3098 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 248: /* sp_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
+#line 3152 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_suid)= SP_IS_SUID; }
-#line 30464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30504 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 243: /* sp_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
-#line 3099 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 249: /* sp_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
+#line 3153 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_suid)= SP_IS_NOT_SUID; }
-#line 30470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 244: /* $@29: %empty */
-#line 3104 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 250: /* $@29: %empty */
+#line 3158 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->call_statement_start(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 30479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30519 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 245: /* call: CALL_SYM ident $@29 opt_sp_cparam_list */
-#line 3109 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 251: /* call: CALL_SYM ident $@29 opt_sp_cparam_list */
+#line 3163 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 30488 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30528 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 246: /* $@30: %empty */
-#line 3114 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 252: /* $@30: %empty */
+#line 3168 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->call_statement_start(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 30497 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30537 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 247: /* call: CALL_SYM ident '.' ident $@30 opt_sp_cparam_list */
-#line 3119 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 253: /* call: CALL_SYM ident '.' ident $@30 opt_sp_cparam_list */
+#line 3173 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 30506 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30546 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 248: /* $@31: %empty */
-#line 3124 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 254: /* $@31: %empty */
+#line 3178 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->call_statement_start(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 30515 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30555 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 249: /* call: CALL_SYM ident '.' ident '.' ident $@31 opt_sp_cparam_list */
-#line 3129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 255: /* call: CALL_SYM ident '.' ident '.' ident $@31 opt_sp_cparam_list */
+#line 3183 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 30524 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30564 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 254: /* sp_cparams: sp_cparams ',' expr */
-#line 3148 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 260: /* sp_cparams: sp_cparams ',' expr */
+#line 3202 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->value_list.push_back((yyvsp[0].item), thd->mem_root);
}
-#line 30532 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30572 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 255: /* sp_cparams: expr */
-#line 3152 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 261: /* sp_cparams: expr */
+#line 3206 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->value_list.push_back((yyvsp[0].item), thd->mem_root);
}
-#line 30540 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 256: /* sp_fdparam_list: %empty */
-#line 3160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 262: /* sp_fdparam_list: %empty */
+#line 3214 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= YYLIP->get_cpp_tok_start();
Lex->sphead->m_param_end= Lex->sphead->m_param_begin;
}
-#line 30549 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 257: /* $@32: %empty */
-#line 3165 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 263: /* $@32: %empty */
+#line 3219 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= YYLIP->get_cpp_tok_start();
}
-#line 30557 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 258: /* sp_fdparam_list: $@32 sp_fdparams */
-#line 3169 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 264: /* sp_fdparam_list: $@32 sp_fdparams */
+#line 3223 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
}
-#line 30565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30605 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 261: /* sp_param_name: ident */
-#line 3181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 267: /* sp_param_name: ident */
+#line 3235 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.spvar)= Lex->sp_param_init(&(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 30574 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 266: /* sp_parameter_type: IN_SYM */
-#line 3199 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 272: /* sp_parameter_type: IN_SYM */
+#line 3253 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_IN; }
-#line 30580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 267: /* sp_parameter_type: OUT_SYM */
-#line 3200 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 273: /* sp_parameter_type: OUT_SYM */
+#line 3254 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_OUT; }
-#line 30586 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30626 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 268: /* sp_parameter_type: INOUT_SYM */
-#line 3201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 274: /* sp_parameter_type: INOUT_SYM */
+#line 3255 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_INOUT; }
-#line 30592 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30632 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 269: /* $@33: %empty */
-#line 3206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 275: /* $@33: %empty */
+#line 3260 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= YYLIP->get_cpp_tok_start() + 1;
}
-#line 30600 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30640 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 270: /* sp_parenthesized_pdparam_list: '(' $@33 sp_pdparam_list ')' */
-#line 3211 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 276: /* sp_parenthesized_pdparam_list: '(' $@33 sp_pdparam_list ')' */
+#line 3265 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();
}
-#line 30608 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 272: /* sp_proc_stmts: %empty */
-#line 3221 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 278: /* sp_proc_stmts: %empty */
+#line 3275 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 274: /* sp_proc_stmts1: sp_proc_stmt ';' */
-#line 3226 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 280: /* sp_proc_stmts1: sp_proc_stmt ';' */
+#line 3280 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 276: /* optionally_qualified_column_ident: sp_decl_ident */
-#line 3233 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 282: /* optionally_qualified_column_ident: sp_decl_ident */
+#line 3287 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.qualified_column_ident)= new (thd->mem_root)
Qualified_column_ident(&(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 30630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30670 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 277: /* optionally_qualified_column_ident: sp_decl_ident '.' ident */
-#line 3239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 283: /* optionally_qualified_column_ident: sp_decl_ident '.' ident */
+#line 3293 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.qualified_column_ident)= new (thd->mem_root)
Qualified_column_ident(&(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 30640 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30680 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 278: /* optionally_qualified_column_ident: sp_decl_ident '.' ident '.' ident */
-#line 3245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 284: /* optionally_qualified_column_ident: sp_decl_ident '.' ident '.' ident */
+#line 3299 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.qualified_column_ident)= new (thd->mem_root)
Qualified_column_ident(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 30650 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30690 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 279: /* row_field_definition: row_field_name field_type */
-#line 3255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 285: /* row_field_definition: row_field_name field_type */
+#line 3309 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[0].Lex_field_type),
COLUMN_DEFINITION_ROUTINE_LOCAL);
}
-#line 30659 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30699 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 280: /* row_field_definition_list: row_field_definition */
-#line 3263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 286: /* row_field_definition_list: row_field_definition */
+#line 3317 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.spvar_definition_list)= Row_definition_list::make(thd->mem_root, (yyvsp[0].spvar_definition))))
MYSQL_YYABORT;
}
-#line 30668 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 281: /* row_field_definition_list: row_field_definition_list ',' row_field_definition */
-#line 3268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 287: /* row_field_definition_list: row_field_definition_list ',' row_field_definition */
+#line 3322 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.spvar_definition_list)= (yyvsp[-2].spvar_definition_list))->append_uniq(thd->mem_root, (yyvsp[0].spvar_definition)))
MYSQL_YYABORT;
}
-#line 30677 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30717 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 282: /* row_type_body: '(' row_field_definition_list ')' */
-#line 3275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 288: /* row_type_body: '(' row_field_definition_list ')' */
+#line 3329 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_definition_list)= (yyvsp[-1].spvar_definition_list); }
-#line 30683 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30723 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 283: /* sp_decl_idents_init_vars: sp_decl_idents */
-#line 3280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 289: /* sp_decl_idents_init_vars: sp_decl_idents */
+#line 3334 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_variable_declarations_init(thd, (yyvsp[0].num));
}
-#line 30691 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 284: /* $@34: %empty */
-#line 3288 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 290: /* $@34: %empty */
+#line 3342 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[0].Lex_field_type),
COLUMN_DEFINITION_ROUTINE_LOCAL);
}
-#line 30700 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30740 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 285: /* sp_decl_variable_list: sp_decl_idents_init_vars field_type $@34 sp_opt_default */
-#line 3293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 291: /* sp_decl_variable_list: sp_decl_idents_init_vars field_type $@34 sp_opt_default */
+#line 3347 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_variable_declarations_finalize(thd, (yyvsp[-3].num),
&Lex->last_field[0],
- (yyvsp[0].item))))
+ (yyvsp[0].expr_and_query_str).expr,
+ (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-3].num));
}
-#line 30712 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30753 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 286: /* sp_decl_variable_list: sp_decl_idents_init_vars ROW_SYM row_type_body sp_opt_default */
-#line 3303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 292: /* sp_decl_variable_list: sp_decl_idents_init_vars ROW_SYM row_type_body sp_opt_default */
+#line 3358 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_variable_declarations_row_finalize(thd, (yyvsp[-3].num), (yyvsp[-1].spvar_definition_list), (yyvsp[0].item))))
+ if (unlikely(Lex->sp_variable_declarations_row_finalize(thd, (yyvsp[-3].num), (yyvsp[-1].spvar_definition_list),
+ (yyvsp[0].expr_and_query_str).expr,
+ (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-3].num));
}
-#line 30722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 288: /* $@35: %empty */
-#line 3313 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 294: /* $@35: %empty */
+#line 3370 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_handler_declaration_init(thd, (yyvsp[-2].num))))
MYSQL_YYABORT;
}
-#line 30731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30774 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 289: /* sp_decl_handler: sp_handler_type HANDLER_SYM FOR_SYM $@35 sp_hcond_list sp_proc_stmt */
-#line 3318 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 295: /* sp_decl_handler: sp_handler_type HANDLER_SYM FOR_SYM $@35 sp_hcond_list sp_proc_stmt */
+#line 3375 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_handler_declaration_finalize(thd, (yyvsp[-5].num))))
MYSQL_YYABORT;
(yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).curs= 0;
(yyval.spblock).hndlrs= 1;
}
-#line 30742 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30785 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 292: /* sp_cursor_stmt_lex: %empty */
-#line 3333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 298: /* sp_cursor_stmt_lex: %empty */
+#line 3390 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(thd->lex->sphead);
if (unlikely(!((yyval.sp_cursor_stmt)= new (thd->mem_root)
sp_lex_cursor(thd, thd->lex))))
MYSQL_YYABORT;
}
-#line 30753 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30796 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 293: /* $@36: %empty */
-#line 3343 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 299: /* $@36: %empty */
+#line 3400 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(thd->free_list == NULL);
Lex->sphead->reset_lex(thd, (yyvsp[0].sp_cursor_stmt));
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 30764 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30807 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 294: /* sp_cursor_stmt: sp_cursor_stmt_lex $@36 select */
-#line 3350 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 300: /* sp_cursor_stmt: sp_cursor_stmt_lex $@36 remember_name select remember_end */
+#line 3407 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT(Lex == (yyvsp[-2].sp_cursor_stmt));
+ DBUG_ASSERT(Lex == (yyvsp[-4].sp_cursor_stmt));
Lex->pop_select(); //main select
- if (unlikely((yyvsp[-2].sp_cursor_stmt)->stmt_finalize(thd)) ||
- unlikely((yyvsp[-2].sp_cursor_stmt)->sphead->restore_lex(thd)))
+ if (unlikely((yyvsp[-4].sp_cursor_stmt)->stmt_finalize(thd)))
MYSQL_YYABORT;
- (yyval.sp_cursor_stmt)= (yyvsp[-2].sp_cursor_stmt);
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyvsp[-4].sp_cursor_stmt)->set_expr_str(expr_str);
+ }
+ if (unlikely((yyvsp[-4].sp_cursor_stmt)->sphead->restore_lex(thd)))
+ MYSQL_YYABORT;
+
+ (yyval.sp_cursor_stmt)= (yyvsp[-4].sp_cursor_stmt);
}
-#line 30777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30830 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 295: /* sp_handler_type: EXIT_MARIADB_SYM */
-#line 3361 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 301: /* sp_handler_type: EXIT_MARIADB_SYM */
+#line 3428 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::EXIT; }
-#line 30783 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30836 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 296: /* sp_handler_type: CONTINUE_MARIADB_SYM */
-#line 3362 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 302: /* sp_handler_type: CONTINUE_MARIADB_SYM */
+#line 3429 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::CONTINUE; }
-#line 30789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30842 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 297: /* sp_handler_type: EXIT_ORACLE_SYM */
-#line 3363 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 303: /* sp_handler_type: EXIT_ORACLE_SYM */
+#line 3430 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::EXIT; }
-#line 30795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30848 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 298: /* sp_handler_type: CONTINUE_ORACLE_SYM */
-#line 3364 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 304: /* sp_handler_type: CONTINUE_ORACLE_SYM */
+#line 3431 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= sp_handler::CONTINUE; }
-#line 30801 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30854 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 299: /* sp_hcond_list: sp_hcond_element */
-#line 3370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 305: /* sp_hcond_list: sp_hcond_element */
+#line 3437 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 30807 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30860 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 300: /* sp_hcond_list: sp_hcond_list ',' sp_hcond_element */
-#line 3372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 306: /* sp_hcond_list: sp_hcond_list ',' sp_hcond_element */
+#line 3439 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)+= 1; }
-#line 30813 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30866 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 301: /* sp_hcond_element: sp_hcond */
-#line 3377 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 307: /* sp_hcond_element: sp_hcond */
+#line 3444 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -30825,11 +30878,11 @@ yyreduce:
sp_instr_hpush_jump *i= (sp_instr_hpush_jump *)sp->last_instruction();
i->add_condition((yyvsp[0].spcondvalue));
}
-#line 30829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30882 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 302: /* sp_cond: ulong_num */
-#line 3392 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 308: /* sp_cond: ulong_num */
+#line 3459 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* mysql errno */
if (unlikely((yyvsp[0].ulong_num) == 0))
my_yyabort_error((ER_WRONG_VALUE, MYF(0), "CONDITION", "0"));
@@ -30837,11 +30890,11 @@ yyreduce:
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 30841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30894 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 304: /* sqlstate: SQLSTATE_SYM opt_value TEXT_STRING_literal */
-#line 3404 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 310: /* sqlstate: SQLSTATE_SYM opt_value TEXT_STRING_literal */
+#line 3471 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* SQLSTATE */
/*
@@ -30858,143 +30911,143 @@ yyreduce:
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 30862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 305: /* opt_value: %empty */
-#line 3423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 311: /* opt_value: %empty */
+#line 3490 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30868 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 306: /* opt_value: VALUE_SYM */
-#line 3424 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 312: /* opt_value: VALUE_SYM */
+#line 3491 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 30874 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30927 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 307: /* sp_hcond: sp_cond */
-#line 3429 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 313: /* sp_hcond: sp_cond */
+#line 3496 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= (yyvsp[0].spcondvalue);
}
-#line 30882 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 308: /* sp_hcond: ident */
-#line 3433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 314: /* sp_hcond: ident */
+#line 3500 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= Lex->spcont->find_declared_or_predefined_condition(thd, &(yyvsp[0].ident_sys));
if (unlikely((yyval.spcondvalue) == NULL))
my_yyabort_error((ER_SP_COND_MISMATCH, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 30892 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 309: /* sp_hcond: SQLWARNING_SYM */
-#line 3439 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 315: /* sp_hcond: SQLWARNING_SYM */
+#line 3506 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::WARNING);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 30902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30955 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 310: /* sp_hcond: not FOUND_SYM */
-#line 3445 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 316: /* sp_hcond: not FOUND_SYM */
+#line 3512 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::NOT_FOUND);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 30912 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30965 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 311: /* sp_hcond: SQLEXCEPTION_SYM */
-#line 3451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 317: /* sp_hcond: SQLEXCEPTION_SYM */
+#line 3518 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::EXCEPTION);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 30922 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30975 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 312: /* sp_hcond: OTHERS_ORACLE_SYM */
-#line 3457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 318: /* sp_hcond: OTHERS_ORACLE_SYM */
+#line 3524 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spcondvalue)= new (thd->mem_root) sp_condition_value(sp_condition_value::EXCEPTION);
if (unlikely((yyval.spcondvalue) == NULL))
MYSQL_YYABORT;
}
-#line 30932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 313: /* raise_stmt_oracle: RAISE_ORACLE_SYM opt_set_signal_information */
-#line 3467 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 319: /* raise_stmt_oracle: RAISE_ORACLE_SYM opt_set_signal_information */
+#line 3534 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_resignal_statement(thd, NULL)))
MYSQL_YYABORT;
}
-#line 30941 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 30994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 314: /* raise_stmt_oracle: RAISE_ORACLE_SYM signal_value opt_set_signal_information */
-#line 3472 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 320: /* raise_stmt_oracle: RAISE_ORACLE_SYM signal_value opt_set_signal_information */
+#line 3539 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_signal_statement(thd, (yyvsp[-1].spcondvalue))))
MYSQL_YYABORT;
}
-#line 30950 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 315: /* signal_stmt: SIGNAL_SYM signal_value opt_set_signal_information */
-#line 3480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 321: /* signal_stmt: SIGNAL_SYM signal_value opt_set_signal_information */
+#line 3547 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_signal_statement(thd, (yyvsp[-1].spcondvalue)))
MYSQL_YYABORT;
}
-#line 30959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 316: /* signal_value: ident */
-#line 3488 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 322: /* signal_value: ident */
+#line 3555 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.spcondvalue)= Lex->stmt_signal_value((yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 30968 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31021 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 317: /* signal_value: sqlstate */
-#line 3493 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 323: /* signal_value: sqlstate */
+#line 3560 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spcondvalue)= (yyvsp[0].spcondvalue); }
-#line 30974 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31027 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 318: /* opt_signal_value: %empty */
-#line 3498 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 324: /* opt_signal_value: %empty */
+#line 3565 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spcondvalue)= NULL; }
-#line 30980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31033 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 319: /* opt_signal_value: signal_value */
-#line 3500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 325: /* opt_signal_value: signal_value */
+#line 3567 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spcondvalue)= (yyvsp[0].spcondvalue); }
-#line 30986 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31039 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 320: /* opt_set_signal_information: %empty */
-#line 3505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 326: /* opt_set_signal_information: %empty */
+#line 3572 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->m_parser_state->m_yacc.m_set_signal_info.clear();
}
-#line 30994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31047 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 322: /* signal_information_item_list: signal_condition_information_item_name '=' signal_allowed_expr */
-#line 3513 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 328: /* signal_information_item_list: signal_condition_information_item_name '=' signal_allowed_expr */
+#line 3580 "/home/buildbot/git/sql/sql_yacc.yy"
{
Set_signal_information *info;
info= &thd->m_parser_state->m_yacc.m_set_signal_info;
@@ -31002,11 +31055,11 @@ yyreduce:
info->clear();
info->m_item[index]= (yyvsp[0].item);
}
-#line 31006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31059 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 323: /* signal_information_item_list: signal_information_item_list ',' signal_condition_information_item_name '=' signal_allowed_expr */
-#line 3522 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 329: /* signal_information_item_list: signal_information_item_list ',' signal_condition_information_item_name '=' signal_allowed_expr */
+#line 3589 "/home/buildbot/git/sql/sql_yacc.yy"
{
Set_signal_information *info;
info= &thd->m_parser_state->m_yacc.m_set_signal_info;
@@ -31016,17 +31069,17 @@ yyreduce:
Diag_condition_item_names[index].str));
info->m_item[index]= (yyvsp[0].item);
}
-#line 31020 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 324: /* signal_allowed_expr: literal */
-#line 3538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 330: /* signal_allowed_expr: literal */
+#line 3605 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 31026 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31079 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 325: /* signal_allowed_expr: variable */
-#line 3540 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 331: /* signal_allowed_expr: variable */
+#line 3607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].item)->type() == Item::FUNC_ITEM)
{
@@ -31044,104 +31097,104 @@ yyreduce:
}
(yyval.item)= (yyvsp[0].item);
}
-#line 31048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 326: /* signal_allowed_expr: simple_ident */
-#line 3558 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 332: /* signal_allowed_expr: simple_ident */
+#line 3625 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 31054 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31107 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 327: /* signal_condition_information_item_name: CLASS_ORIGIN_SYM */
-#line 3564 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 333: /* signal_condition_information_item_name: CLASS_ORIGIN_SYM */
+#line 3631 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CLASS_ORIGIN; }
-#line 31060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31113 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 328: /* signal_condition_information_item_name: SUBCLASS_ORIGIN_SYM */
-#line 3566 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 334: /* signal_condition_information_item_name: SUBCLASS_ORIGIN_SYM */
+#line 3633 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_SUBCLASS_ORIGIN; }
-#line 31066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31119 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 329: /* signal_condition_information_item_name: CONSTRAINT_CATALOG_SYM */
-#line 3568 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 335: /* signal_condition_information_item_name: CONSTRAINT_CATALOG_SYM */
+#line 3635 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_CATALOG; }
-#line 31072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31125 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 330: /* signal_condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
-#line 3570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 336: /* signal_condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
+#line 3637 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_SCHEMA; }
-#line 31078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31131 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 331: /* signal_condition_information_item_name: CONSTRAINT_NAME_SYM */
-#line 3572 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 337: /* signal_condition_information_item_name: CONSTRAINT_NAME_SYM */
+#line 3639 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_NAME; }
-#line 31084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31137 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 332: /* signal_condition_information_item_name: CATALOG_NAME_SYM */
-#line 3574 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 338: /* signal_condition_information_item_name: CATALOG_NAME_SYM */
+#line 3641 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CATALOG_NAME; }
-#line 31090 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31143 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 333: /* signal_condition_information_item_name: SCHEMA_NAME_SYM */
-#line 3576 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 339: /* signal_condition_information_item_name: SCHEMA_NAME_SYM */
+#line 3643 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_SCHEMA_NAME; }
-#line 31096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 334: /* signal_condition_information_item_name: TABLE_NAME_SYM */
-#line 3578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 340: /* signal_condition_information_item_name: TABLE_NAME_SYM */
+#line 3645 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_TABLE_NAME; }
-#line 31102 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31155 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 335: /* signal_condition_information_item_name: COLUMN_NAME_SYM */
-#line 3580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 341: /* signal_condition_information_item_name: COLUMN_NAME_SYM */
+#line 3647 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_COLUMN_NAME; }
-#line 31108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 336: /* signal_condition_information_item_name: CURSOR_NAME_SYM */
-#line 3582 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 342: /* signal_condition_information_item_name: CURSOR_NAME_SYM */
+#line 3649 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_CURSOR_NAME; }
-#line 31114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 337: /* signal_condition_information_item_name: MESSAGE_TEXT_SYM */
-#line 3584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 343: /* signal_condition_information_item_name: MESSAGE_TEXT_SYM */
+#line 3651 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_MESSAGE_TEXT; }
-#line 31120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 338: /* signal_condition_information_item_name: MYSQL_ERRNO_SYM */
-#line 3586 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 344: /* signal_condition_information_item_name: MYSQL_ERRNO_SYM */
+#line 3653 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_MYSQL_ERRNO; }
-#line 31126 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 339: /* signal_condition_information_item_name: ROW_NUMBER_SYM */
-#line 3588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 345: /* signal_condition_information_item_name: ROW_NUMBER_SYM */
+#line 3655 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_condition_item_name)= DIAG_ROW_NUMBER; }
-#line 31132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 340: /* resignal_stmt: RESIGNAL_SYM opt_signal_value opt_set_signal_information */
-#line 3593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 346: /* resignal_stmt: RESIGNAL_SYM opt_signal_value opt_set_signal_information */
+#line 3660 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_resignal_statement(thd, (yyvsp[-1].spcondvalue))))
MYSQL_YYABORT;
}
-#line 31141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 341: /* get_diagnostics: GET_SYM which_area DIAGNOSTICS_SYM diagnostics_information */
-#line 3601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 347: /* get_diagnostics: GET_SYM which_area DIAGNOSTICS_SYM diagnostics_information */
+#line 3668 "/home/buildbot/git/sql/sql_yacc.yy"
{
Diagnostics_information *info= (yyvsp[0].diag_info);
@@ -31153,83 +31206,83 @@ yyreduce:
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 31157 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 342: /* which_area: %empty */
-#line 3616 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 348: /* which_area: %empty */
+#line 3683 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_area)= Diagnostics_information::CURRENT_AREA; }
-#line 31163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31216 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 343: /* which_area: CURRENT_SYM */
-#line 3618 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 349: /* which_area: CURRENT_SYM */
+#line 3685 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.diag_area)= Diagnostics_information::CURRENT_AREA; }
-#line 31169 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31222 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 344: /* diagnostics_information: statement_information */
-#line 3623 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 350: /* diagnostics_information: statement_information */
+#line 3690 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.diag_info)= new (thd->mem_root) Statement_information((yyvsp[0].stmt_info_list));
if (unlikely((yyval.diag_info) == NULL))
MYSQL_YYABORT;
}
-#line 31179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31232 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 345: /* diagnostics_information: CONDITION_SYM condition_number condition_information */
-#line 3629 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 351: /* diagnostics_information: CONDITION_SYM condition_number condition_information */
+#line 3696 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.diag_info)= new (thd->mem_root) Condition_information((yyvsp[-1].item), (yyvsp[0].cond_info_list));
if (unlikely((yyval.diag_info) == NULL))
MYSQL_YYABORT;
}
-#line 31189 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 346: /* statement_information: statement_information_item */
-#line 3638 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 352: /* statement_information: statement_information_item */
+#line 3705 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.stmt_info_list)= new (thd->mem_root) List<Statement_information_item>;
if (unlikely((yyval.stmt_info_list) == NULL) ||
unlikely((yyval.stmt_info_list)->push_back((yyvsp[0].stmt_info_item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 31200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 347: /* statement_information: statement_information ',' statement_information_item */
-#line 3645 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 353: /* statement_information: statement_information ',' statement_information_item */
+#line 3712 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-2].stmt_info_list)->push_back((yyvsp[0].stmt_info_item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.stmt_info_list)= (yyvsp[-2].stmt_info_list);
}
-#line 31210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 348: /* statement_information_item: simple_target_specification '=' statement_information_item_name */
-#line 3654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 354: /* statement_information_item: simple_target_specification '=' statement_information_item_name */
+#line 3721 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.stmt_info_item)= new (thd->mem_root) Statement_information_item((yyvsp[0].stmt_info_item_name), (yyvsp[-2].item));
if (unlikely((yyval.stmt_info_item) == NULL))
MYSQL_YYABORT;
}
-#line 31220 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 349: /* simple_target_specification: ident_cli */
-#line 3663 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 355: /* simple_target_specification: ident_cli */
+#line 3730 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= thd->lex->create_item_for_sp_var(&(yyvsp[0].ident_cli), NULL))))
MYSQL_YYABORT;
}
-#line 31229 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31282 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 350: /* simple_target_specification: '@' ident_or_text */
-#line 3668 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 356: /* simple_target_specification: '@' ident_or_text */
+#line 3735 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -31240,159 +31293,159 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 31244 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31297 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 351: /* statement_information_item_name: NUMBER_MARIADB_SYM */
-#line 3682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 357: /* statement_information_item_name: NUMBER_MARIADB_SYM */
+#line 3749 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.stmt_info_item_name)= Statement_information_item::NUMBER; }
-#line 31250 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31303 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 352: /* statement_information_item_name: NUMBER_ORACLE_SYM */
-#line 3684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 358: /* statement_information_item_name: NUMBER_ORACLE_SYM */
+#line 3751 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.stmt_info_item_name)= Statement_information_item::NUMBER; }
-#line 31256 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31309 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 353: /* statement_information_item_name: ROW_COUNT_SYM */
-#line 3686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 359: /* statement_information_item_name: ROW_COUNT_SYM */
+#line 3753 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.stmt_info_item_name)= Statement_information_item::ROW_COUNT; }
-#line 31262 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 354: /* condition_number: signal_allowed_expr */
-#line 3695 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 360: /* condition_number: signal_allowed_expr */
+#line 3762 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 31268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31321 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 355: /* condition_information: condition_information_item */
-#line 3700 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 361: /* condition_information: condition_information_item */
+#line 3767 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.cond_info_list)= new (thd->mem_root) List<Condition_information_item>;
if (unlikely((yyval.cond_info_list) == NULL) ||
unlikely((yyval.cond_info_list)->push_back((yyvsp[0].cond_info_item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 31279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 356: /* condition_information: condition_information ',' condition_information_item */
-#line 3707 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 362: /* condition_information: condition_information ',' condition_information_item */
+#line 3774 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-2].cond_info_list)->push_back((yyvsp[0].cond_info_item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.cond_info_list)= (yyvsp[-2].cond_info_list);
}
-#line 31289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31342 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 357: /* condition_information_item: simple_target_specification '=' condition_information_item_name */
-#line 3716 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 363: /* condition_information_item: simple_target_specification '=' condition_information_item_name */
+#line 3783 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.cond_info_item)= new (thd->mem_root) Condition_information_item((yyvsp[0].cond_info_item_name), (yyvsp[-2].item));
if (unlikely((yyval.cond_info_item) == NULL))
MYSQL_YYABORT;
}
-#line 31299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31352 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 358: /* condition_information_item_name: CLASS_ORIGIN_SYM */
-#line 3725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 364: /* condition_information_item_name: CLASS_ORIGIN_SYM */
+#line 3792 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CLASS_ORIGIN; }
-#line 31305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 359: /* condition_information_item_name: SUBCLASS_ORIGIN_SYM */
-#line 3727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 365: /* condition_information_item_name: SUBCLASS_ORIGIN_SYM */
+#line 3794 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::SUBCLASS_ORIGIN; }
-#line 31311 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31364 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 360: /* condition_information_item_name: CONSTRAINT_CATALOG_SYM */
-#line 3729 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 366: /* condition_information_item_name: CONSTRAINT_CATALOG_SYM */
+#line 3796 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_CATALOG; }
-#line 31317 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31370 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 361: /* condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
-#line 3731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 367: /* condition_information_item_name: CONSTRAINT_SCHEMA_SYM */
+#line 3798 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_SCHEMA; }
-#line 31323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31376 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 362: /* condition_information_item_name: CONSTRAINT_NAME_SYM */
-#line 3733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 368: /* condition_information_item_name: CONSTRAINT_NAME_SYM */
+#line 3800 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_NAME; }
-#line 31329 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31382 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 363: /* condition_information_item_name: CATALOG_NAME_SYM */
-#line 3735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 369: /* condition_information_item_name: CATALOG_NAME_SYM */
+#line 3802 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CATALOG_NAME; }
-#line 31335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31388 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 364: /* condition_information_item_name: SCHEMA_NAME_SYM */
-#line 3737 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 370: /* condition_information_item_name: SCHEMA_NAME_SYM */
+#line 3804 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::SCHEMA_NAME; }
-#line 31341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31394 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 365: /* condition_information_item_name: TABLE_NAME_SYM */
-#line 3739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 371: /* condition_information_item_name: TABLE_NAME_SYM */
+#line 3806 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::TABLE_NAME; }
-#line 31347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 366: /* condition_information_item_name: COLUMN_NAME_SYM */
-#line 3741 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 372: /* condition_information_item_name: COLUMN_NAME_SYM */
+#line 3808 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::COLUMN_NAME; }
-#line 31353 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31406 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 367: /* condition_information_item_name: CURSOR_NAME_SYM */
-#line 3743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 373: /* condition_information_item_name: CURSOR_NAME_SYM */
+#line 3810 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::CURSOR_NAME; }
-#line 31359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31412 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 368: /* condition_information_item_name: MESSAGE_TEXT_SYM */
-#line 3745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 374: /* condition_information_item_name: MESSAGE_TEXT_SYM */
+#line 3812 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::MESSAGE_TEXT; }
-#line 31365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31418 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 369: /* condition_information_item_name: MYSQL_ERRNO_SYM */
-#line 3747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 375: /* condition_information_item_name: MYSQL_ERRNO_SYM */
+#line 3814 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::MYSQL_ERRNO; }
-#line 31371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 370: /* condition_information_item_name: RETURNED_SQLSTATE_SYM */
-#line 3749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 376: /* condition_information_item_name: RETURNED_SQLSTATE_SYM */
+#line 3816 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::RETURNED_SQLSTATE; }
-#line 31377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 371: /* condition_information_item_name: ROW_NUMBER_SYM */
-#line 3751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 377: /* condition_information_item_name: ROW_NUMBER_SYM */
+#line 3818 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.cond_info_item_name)= Condition_information_item::ROW_NUMBER; }
-#line 31383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31436 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 373: /* sp_decl_ident: keyword_sp_decl */
-#line 3757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 379: /* sp_decl_ident: keyword_sp_decl */
+#line 3824 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_ident_cli(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 31392 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31445 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 374: /* sp_decl_idents: sp_decl_ident */
-#line 3765 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 380: /* sp_decl_idents: sp_decl_ident */
+#line 3832 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* NOTE: field definition is filled in sp_decl section. */
@@ -31404,11 +31457,11 @@ yyreduce:
spc->add_variable(thd, &(yyvsp[0].ident_sys));
(yyval.num)= 1;
}
-#line 31408 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31461 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 375: /* sp_decl_idents: sp_decl_idents ',' ident */
-#line 3777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 381: /* sp_decl_idents: sp_decl_idents ',' ident */
+#line 3844 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* NOTE: field definition is filled in sp_decl section. */
@@ -31420,27 +31473,27 @@ yyreduce:
spc->add_variable(thd, &(yyvsp[0].ident_sys));
(yyval.num)= (yyvsp[-2].num) + 1;
}
-#line 31424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31477 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 376: /* $@37: %empty */
-#line 3792 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 382: /* $@37: %empty */
+#line 3859 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
Lex->sphead->new_cont_backpatch(NULL);
}
-#line 31434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31487 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 377: /* sp_proc_stmt_if: IF_SYM $@37 sp_if END IF_SYM */
-#line 3798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 383: /* sp_proc_stmt_if: IF_SYM $@37 sp_if END IF_SYM */
+#line 3865 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sphead->do_cont_backpatch(); }
-#line 31440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31493 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 378: /* $@38: %empty */
-#line 3802 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 384: /* $@38: %empty */
+#line 3869 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
@@ -31453,38 +31506,38 @@ yyreduce:
*/
lex->sphead->m_tmp_query= lip->get_tok_start();
}
-#line 31457 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 379: /* sp_proc_stmt_statement: $@38 sp_statement */
-#line 3815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 385: /* sp_proc_stmt_statement: $@38 sp_statement */
+#line 3882 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->sp_proc_stmt_statement_finalize(thd, yychar == YYEMPTY) ||
Lex->sphead->restore_lex(thd))
MYSQL_YYABORT;
}
-#line 31467 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31520 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 382: /* $@39: %empty */
-#line 3830 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 388: /* $@39: %empty */
+#line 3897 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_head *sp= (yyvsp[0].expr_lex)->sphead;
if (unlikely(sp->m_handler->add_instr_freturn(thd, sp, (yyvsp[0].expr_lex)->spcont,
(yyvsp[0].expr_lex)->get_item(), (yyvsp[0].expr_lex))))
MYSQL_YYABORT;
}
-#line 31478 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31531 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 383: /* sp_proc_stmt_return: RETURN_ALLMODES_SYM expr_lex $@39 */
-#line 3836 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 389: /* sp_proc_stmt_return: RETURN_ALLMODES_SYM expr_lex $@39 */
+#line 3903 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 31484 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31537 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 384: /* sp_proc_stmt_return: RETURN_ORACLE_SYM */
-#line 3838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 390: /* sp_proc_stmt_return: RETURN_ORACLE_SYM */
+#line 3905 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -31492,134 +31545,137 @@ yyreduce:
lex->spcont)))
MYSQL_YYABORT;
}
-#line 31496 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31549 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 385: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM */
-#line 3849 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 391: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM */
+#line 3916 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_exit_statement(thd, NULL)))
+ if (unlikely(Lex->sp_exit_statement(thd, nullptr, empty_clex_str)))
MYSQL_YYABORT;
}
-#line 31505 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31558 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 386: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident */
-#line 3854 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 392: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident */
+#line 3921 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_exit_statement(thd, &(yyvsp[0].ident_sys), NULL)))
+ if (unlikely(Lex->sp_exit_statement(thd, &(yyvsp[0].ident_sys), nullptr,
+ empty_clex_str)))
MYSQL_YYABORT;
}
-#line 31514 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31568 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 387: /* $@40: %empty */
-#line 3859 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 393: /* $@40: %empty */
+#line 3927 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, (yyvsp[0].expr_lex)->get_item())))
+ if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, (yyvsp[0].expr_lex)->get_item(),
+ (yyvsp[0].expr_lex)->get_expr_str())))
MYSQL_YYABORT;
}
-#line 31523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 388: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM WHEN_SYM expr_lex $@40 */
-#line 3863 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 394: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM WHEN_SYM expr_lex $@40 */
+#line 3932 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 31529 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31584 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 389: /* $@41: %empty */
-#line 3865 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 395: /* $@41: %empty */
+#line 3934 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, &(yyvsp[-2].ident_sys), (yyvsp[0].expr_lex)->get_item())))
+ if (unlikely((yyvsp[0].expr_lex)->sp_exit_statement(thd, &(yyvsp[-2].ident_sys), (yyvsp[0].expr_lex)->get_item(),
+ (yyvsp[0].expr_lex)->get_expr_str())))
MYSQL_YYABORT;
}
-#line 31538 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31594 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 390: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident WHEN_SYM expr_lex $@41 */
-#line 3869 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 396: /* sp_proc_stmt_exit_oracle: EXIT_ORACLE_SYM label_ident WHEN_SYM expr_lex $@41 */
+#line 3939 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 31544 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31600 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 391: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM */
-#line 3874 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 397: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM */
+#line 3944 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_continue_statement(thd)))
MYSQL_YYABORT;
}
-#line 31553 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 392: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident */
-#line 3879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 398: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident */
+#line 3949 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_continue_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31562 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31618 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 393: /* $@42: %empty */
-#line 3884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 399: /* $@42: %empty */
+#line 3954 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->sp_continue_when_statement(thd)))
MYSQL_YYABORT;
}
-#line 31571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31627 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 394: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM WHEN_SYM expr_lex $@42 */
-#line 3888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 400: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM WHEN_SYM expr_lex $@42 */
+#line 3958 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 31577 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 395: /* $@43: %empty */
-#line 3890 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 401: /* $@43: %empty */
+#line 3960 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->sp_continue_when_statement(thd, &(yyvsp[-2].ident_sys))))
MYSQL_YYABORT;
}
-#line 31586 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 396: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident WHEN_SYM expr_lex $@43 */
-#line 3894 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 402: /* sp_proc_stmt_continue_oracle: CONTINUE_ORACLE_SYM label_ident WHEN_SYM expr_lex $@43 */
+#line 3964 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* See the comment 'COMMENT_FOR_DESCTRUCTOR' near %destructor */ }
-#line 31592 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 397: /* sp_proc_stmt_leave: LEAVE_SYM label_ident */
-#line 3900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 403: /* sp_proc_stmt_leave: LEAVE_SYM label_ident */
+#line 3970 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_leave_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31601 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31657 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 398: /* sp_proc_stmt_iterate: ITERATE_SYM label_ident */
-#line 3908 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 404: /* sp_proc_stmt_iterate: ITERATE_SYM label_ident */
+#line 3978 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_iterate_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31610 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31666 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 399: /* sp_proc_stmt_goto_oracle: GOTO_ORACLE_SYM label_ident */
-#line 3916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 405: /* sp_proc_stmt_goto_oracle: GOTO_ORACLE_SYM label_ident */
+#line 3986 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_goto_statement(thd, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 31619 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 400: /* @44: %empty */
-#line 3924 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 406: /* @44: %empty */
+#line 3994 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->sphead);
if (unlikely(!((yyval.expr_lex)= new (thd->mem_root)
@@ -31629,168 +31685,198 @@ yyreduce:
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 31633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31689 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 401: /* expr_lex: @44 expr */
-#line 3934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 407: /* expr_lex: @44 remember_start_opt expr remember_end */
+#line 4004 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.expr_lex)= (yyvsp[-1].expr_lex);
- (yyval.expr_lex)->set_item((yyvsp[0].item));
+ (yyval.expr_lex)= (yyvsp[-3].expr_lex);
+ (yyval.expr_lex)->set_item((yyvsp[-1].item));
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyval.expr_lex)->set_expr_str(expr_str);
+ }
+
Lex->pop_select(); //min select
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
if ((yyval.expr_lex)->sphead->restore_lex(thd))
MYSQL_YYABORT;
}
-#line 31647 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 402: /* assignment_source_lex: %empty */
-#line 3947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 408: /* assignment_source_lex: %empty */
+#line 4027 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->sphead);
if (unlikely(!((yyval.assignment_lex)= new (thd->mem_root)
sp_assignment_lex(thd, thd->lex))))
MYSQL_YYABORT;
}
-#line 31658 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31724 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 403: /* $@45: %empty */
-#line 3957 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 409: /* $@45: %empty */
+#line 4037 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(thd->free_list == NULL);
Lex->sphead->reset_lex(thd, (yyvsp[0].assignment_lex));
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 31669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 404: /* assignment_source_expr: assignment_source_lex $@45 expr */
-#line 3964 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 410: /* assignment_source_expr: assignment_source_lex $@45 remember_cpp_ptr expr remember_end */
+#line 4044 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT((yyvsp[-2].assignment_lex) == thd->lex);
- (yyval.assignment_lex)= (yyvsp[-2].assignment_lex);
- (yyval.assignment_lex)->set_item_and_free_list((yyvsp[0].item), thd->free_list);
+ DBUG_ASSERT((yyvsp[-4].assignment_lex) == thd->lex);
+ (yyval.assignment_lex)= (yyvsp[-4].assignment_lex);
+ (yyval.assignment_lex)->set_item_and_free_list((yyvsp[-1].item), thd->free_list);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyval.assignment_lex)->set_expr_str(expr_str);
+ }
+
thd->free_list= NULL;
Lex->pop_select(); //min select
if ((yyval.assignment_lex)->sphead->restore_lex(thd))
MYSQL_YYABORT;
}
-#line 31683 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 405: /* $@46: %empty */
-#line 3977 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 411: /* $@46: %empty */
+#line 4067 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->reset_lex(thd, (yyvsp[0].assignment_lex));
if (Lex->main_select_push(true))
MYSQL_YYABORT;
Lex->current_select->parsing_place= FOR_LOOP_BOUND;
}
-#line 31694 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31770 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 406: /* for_loop_bound_expr: assignment_source_lex $@46 expr */
-#line 3984 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 412: /* for_loop_bound_expr: assignment_source_lex $@46 remember_cpp_ptr expr remember_end */
+#line 4074 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT((yyvsp[-2].assignment_lex) == thd->lex);
- (yyval.assignment_lex)= (yyvsp[-2].assignment_lex);
- (yyval.assignment_lex)->set_item_and_free_list((yyvsp[0].item), NULL);
+ DBUG_ASSERT((yyvsp[-4].assignment_lex) == thd->lex);
+ (yyval.assignment_lex)= (yyvsp[-4].assignment_lex);
+ (yyval.assignment_lex)->set_item_and_free_list((yyvsp[-1].item), nullptr);
+
+ if (Lex->is_metadata_used())
+ {
+ LEX_CSTRING expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ (yyval.assignment_lex)->set_expr_str(expr_str);
+ }
+
Lex->pop_select(); //main select
if (unlikely((yyval.assignment_lex)->sphead->restore_lex(thd)))
MYSQL_YYABORT;
Lex->current_select->parsing_place= NO_MATTER;
}
-#line 31708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31794 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 407: /* cursor_actual_parameters: assignment_source_expr */
-#line 3997 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 413: /* cursor_actual_parameters: assignment_source_expr */
+#line 4097 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.sp_assignment_lex_list)= new (thd->mem_root) List<sp_assignment_lex>)))
MYSQL_YYABORT;
(yyval.sp_assignment_lex_list)->push_back((yyvsp[0].assignment_lex), thd->mem_root);
}
-#line 31718 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31804 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 408: /* cursor_actual_parameters: cursor_actual_parameters ',' assignment_source_expr */
-#line 4003 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 414: /* cursor_actual_parameters: cursor_actual_parameters ',' assignment_source_expr */
+#line 4103 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.sp_assignment_lex_list)= (yyvsp[-2].sp_assignment_lex_list);
(yyval.sp_assignment_lex_list)->push_back((yyvsp[0].assignment_lex), thd->mem_root);
}
-#line 31727 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31813 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 409: /* opt_parenthesized_cursor_actual_parameters: %empty */
-#line 4010 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 415: /* opt_parenthesized_cursor_actual_parameters: %empty */
+#line 4110 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_assignment_lex_list)= NULL; }
-#line 31733 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 410: /* opt_parenthesized_cursor_actual_parameters: '(' cursor_actual_parameters ')' */
-#line 4011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 416: /* opt_parenthesized_cursor_actual_parameters: '(' cursor_actual_parameters ')' */
+#line 4111 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_assignment_lex_list)= (yyvsp[-1].sp_assignment_lex_list); }
-#line 31739 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31825 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 414: /* sp_proc_stmt_open: OPEN_SYM ident opt_parenthesized_cursor_actual_parameters */
-#line 4022 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 420: /* sp_proc_stmt_open: OPEN_SYM ident opt_parenthesized_cursor_actual_parameters */
+#line 4122 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_open_cursor(thd, &(yyvsp[-1].ident_sys), (yyvsp[0].sp_assignment_lex_list))))
MYSQL_YYABORT;
}
-#line 31748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 415: /* sp_proc_stmt_fetch_head: FETCH_SYM ident INTO */
-#line 4030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 421: /* sp_proc_stmt_fetch_head: FETCH_SYM ident INTO */
+#line 4130 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_cfetch(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
}
-#line 31757 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31843 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 416: /* sp_proc_stmt_fetch_head: FETCH_SYM FROM ident INTO */
-#line 4035 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 422: /* sp_proc_stmt_fetch_head: FETCH_SYM FROM ident INTO */
+#line 4135 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_cfetch(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
}
-#line 31766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 417: /* sp_proc_stmt_fetch_head: FETCH_SYM NEXT_SYM FROM ident INTO */
-#line 4040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 423: /* sp_proc_stmt_fetch_head: FETCH_SYM NEXT_SYM FROM ident INTO */
+#line 4140 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_cfetch(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
}
-#line 31775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31861 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 418: /* sp_proc_stmt_fetch: sp_proc_stmt_fetch_head sp_fetch_list */
-#line 4047 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 424: /* sp_proc_stmt_fetch: sp_proc_stmt_fetch_head sp_fetch_list */
+#line 4147 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 31781 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31867 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 419: /* sp_proc_stmt_fetch: FETCH_SYM GROUP_SYM NEXT_SYM ROW_SYM */
-#line 4049 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 425: /* sp_proc_stmt_fetch: FETCH_SYM GROUP_SYM NEXT_SYM ROW_SYM */
+#line 4149 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_add_agg_cfetch()))
MYSQL_YYABORT;
}
-#line 31790 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31876 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 420: /* sp_proc_stmt_close: CLOSE_SYM ident */
-#line 4057 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 426: /* sp_proc_stmt_close: CLOSE_SYM ident */
+#line 4157 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -31805,11 +31891,11 @@ yyreduce:
unlikely(sp->add_instr(i)))
MYSQL_YYABORT;
}
-#line 31809 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31895 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 421: /* sp_fetch_list: ident */
-#line 4075 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 427: /* sp_fetch_list: ident */
+#line 4175 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -31825,11 +31911,11 @@ yyreduce:
sp_instr_cfetch *i= (sp_instr_cfetch *)sp->last_instruction();
i->add_to_varlist(spv);
}
-#line 31829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 422: /* sp_fetch_list: sp_fetch_list ',' ident */
-#line 4091 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 428: /* sp_fetch_list: sp_fetch_list ',' ident */
+#line 4191 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -31845,39 +31931,39 @@ yyreduce:
sp_instr_cfetch *i= (sp_instr_cfetch *)sp->last_instruction();
i->add_to_varlist(spv);
}
-#line 31849 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 423: /* $@47: %empty */
-#line 4110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 429: /* $@47: %empty */
+#line 4210 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-1].expr_lex)->sp_if_expr(thd)))
MYSQL_YYABORT;
}
-#line 31858 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 424: /* $@48: %empty */
-#line 4115 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 430: /* $@48: %empty */
+#line 4215 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-3].expr_lex)->sp_if_after_statements(thd)))
MYSQL_YYABORT;
}
-#line 31867 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31953 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 425: /* sp_if: expr_lex THEN_SYM $@47 sp_if_then_statements $@48 sp_elseifs */
-#line 4120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 431: /* sp_if: expr_lex THEN_SYM $@47 sp_if_then_statements $@48 sp_elseifs */
+#line 4220 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sphead->backpatch(lex->spcont->pop_label());
}
-#line 31877 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 31963 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 430: /* $@49: %empty */
-#line 4136 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 436: /* $@49: %empty */
+#line 4236 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
@@ -31927,11 +32013,11 @@ yyreduce:
*/
Lex->spcont->push_label(thd, &empty_clex_str, Lex->sphead->instructions());
}
-#line 31931 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32017 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 431: /* case_stmt_specification: CASE_SYM $@49 case_stmt_body else_clause_opt END CASE_SYM */
-#line 4189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 437: /* case_stmt_specification: CASE_SYM $@49 case_stmt_body else_clause_opt END CASE_SYM */
+#line 4289 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
BACKPATCH: Resolving forward jump from
@@ -31945,69 +32031,69 @@ yyreduce:
Lex->sphead->do_cont_backpatch();
}
-#line 31949 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32035 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 432: /* $@50: %empty */
-#line 4206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 438: /* $@50: %empty */
+#line 4306 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->case_stmt_action_expr()))
MYSQL_YYABORT;
}
-#line 31958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32044 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 433: /* case_stmt_body: expr_lex $@50 simple_when_clause_list */
-#line 4211 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 439: /* case_stmt_body: expr_lex $@50 simple_when_clause_list */
+#line 4311 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 31964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 434: /* case_stmt_body: searched_when_clause_list */
-#line 4213 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 440: /* case_stmt_body: searched_when_clause_list */
+#line 4313 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 31970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32056 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 439: /* $@51: %empty */
-#line 4228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 445: /* $@51: %empty */
+#line 4328 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Simple case: <caseval> = <whenval> */
if (unlikely((yyvsp[0].expr_lex)->case_stmt_action_when(true)))
MYSQL_YYABORT;
}
-#line 31980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 440: /* simple_when_clause: WHEN_SYM expr_lex $@51 THEN_SYM sp_case_then_statements */
-#line 4235 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 446: /* simple_when_clause: WHEN_SYM expr_lex $@51 THEN_SYM sp_case_then_statements */
+#line 4335 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->case_stmt_action_then()))
MYSQL_YYABORT;
}
-#line 31989 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 441: /* $@52: %empty */
-#line 4243 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 447: /* $@52: %empty */
+#line 4343 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].expr_lex)->case_stmt_action_when(false)))
MYSQL_YYABORT;
}
-#line 31998 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 442: /* searched_when_clause: WHEN_SYM expr_lex $@52 THEN_SYM sp_case_then_statements */
-#line 4249 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 448: /* searched_when_clause: WHEN_SYM expr_lex $@52 THEN_SYM sp_case_then_statements */
+#line 4349 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->case_stmt_action_then()))
MYSQL_YYABORT;
}
-#line 32007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 443: /* else_clause_opt: %empty */
-#line 4257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 449: /* else_clause_opt: %empty */
+#line 4357 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_head *sp= lex->sphead;
@@ -32018,73 +32104,73 @@ yyreduce:
unlikely(sp->add_instr(i)))
MYSQL_YYABORT;
}
-#line 32022 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 445: /* sp_opt_label: %empty */
-#line 4271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 451: /* sp_opt_label: %empty */
+#line 4371 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 32028 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 446: /* sp_opt_label: label_ident */
-#line 4272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 452: /* sp_opt_label: label_ident */
+#line 4372 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 32034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 447: /* opt_sp_for_loop_direction: %empty */
-#line 4277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 453: /* opt_sp_for_loop_direction: %empty */
+#line 4377 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 32040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32126 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 448: /* opt_sp_for_loop_direction: REVERSE_SYM */
-#line 4278 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 454: /* opt_sp_for_loop_direction: REVERSE_SYM */
+#line 4378 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= -1; }
-#line 32046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 449: /* sp_for_loop_index_and_bounds: ident_for_loop_index sp_for_loop_bounds */
-#line 4283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 455: /* sp_for_loop_index_and_bounds: ident_for_loop_index sp_for_loop_bounds */
+#line 4383 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_declarations(thd, &(yyval.for_loop), &(yyvsp[-1].ident_sys), (yyvsp[0].for_loop_bounds))))
MYSQL_YYABORT;
}
-#line 32055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 450: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr DOT_DOT_SYM for_loop_bound_expr */
-#line 4292 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 456: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr DOT_DOT_SYM for_loop_bound_expr */
+#line 4392 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.for_loop_bounds)= Lex_for_loop_bounds_intrange((yyvsp[-3].num), (yyvsp[-2].assignment_lex), (yyvsp[0].assignment_lex));
}
-#line 32063 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 451: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr */
-#line 4296 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 457: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction for_loop_bound_expr */
+#line 4396 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.for_loop_bounds).m_direction= (yyvsp[-1].num);
(yyval.for_loop_bounds).m_index= (yyvsp[0].assignment_lex);
(yyval.for_loop_bounds).m_target_bound= NULL;
(yyval.for_loop_bounds).m_implicit_cursor= false;
}
-#line 32074 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32160 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 452: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction '(' sp_cursor_stmt ')' */
-#line 4303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 458: /* sp_for_loop_bounds: IN_SYM opt_sp_for_loop_direction '(' sp_cursor_stmt ')' */
+#line 4403 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_implicit_cursor_statement(thd, &(yyval.for_loop_bounds),
(yyvsp[-1].sp_cursor_stmt))))
MYSQL_YYABORT;
}
-#line 32084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32170 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 453: /* loop_body: sp_proc_stmts1 END LOOP_SYM */
-#line 4312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 459: /* loop_body: sp_proc_stmts1 END LOOP_SYM */
+#line 4412 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
uint ip= lex->sphead->instructions();
@@ -32095,168 +32181,168 @@ yyreduce:
unlikely(lex->sphead->add_instr(i)))
MYSQL_YYABORT;
}
-#line 32099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 454: /* repeat_body: sp_proc_stmts1 UNTIL_SYM expr_lex END REPEAT_SYM */
-#line 4326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 460: /* repeat_body: sp_proc_stmts1 UNTIL_SYM expr_lex END REPEAT_SYM */
+#line 4426 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-2].expr_lex)->sp_repeat_loop_finalize(thd))
MYSQL_YYABORT;
}
-#line 32108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 455: /* pop_sp_loop_label: sp_opt_label */
-#line 4334 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 461: /* pop_sp_loop_label: sp_opt_label */
+#line 4434 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_pop_loop_label(thd, &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 32117 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 456: /* $@53: %empty */
-#line 4342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 462: /* $@53: %empty */
+#line 4442 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-1].lex_str))))
MYSQL_YYABORT;
}
-#line 32126 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32212 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 457: /* sp_labeled_control: sp_control_label LOOP_SYM $@53 loop_body pop_sp_loop_label */
-#line 4347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 463: /* sp_labeled_control: sp_control_label LOOP_SYM $@53 loop_body pop_sp_loop_label */
+#line 4447 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32218 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 458: /* $@54: %empty */
-#line 4349 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 464: /* $@54: %empty */
+#line 4449 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-1].lex_str))))
MYSQL_YYABORT;
}
-#line 32141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 459: /* sp_labeled_control: sp_control_label WHILE_SYM $@54 while_body pop_sp_loop_label */
-#line 4354 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 465: /* sp_labeled_control: sp_control_label WHILE_SYM $@54 while_body pop_sp_loop_label */
+#line 4454 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32147 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32233 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 460: /* $@55: %empty */
-#line 4356 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 466: /* $@55: %empty */
+#line 4456 "/home/buildbot/git/sql/sql_yacc.yy"
{
// See "The FOR LOOP statement" comments in sql_lex.cc
Lex->sp_block_init(thd); // The outer DECLARE..BEGIN..END block
}
-#line 32156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 461: /* $@56: %empty */
-#line 4361 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 467: /* $@56: %empty */
+#line 4461 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-3].lex_str)))) // The inner WHILE block
MYSQL_YYABORT;
if (unlikely(Lex->sp_for_loop_condition_test(thd, (yyvsp[0].for_loop))))
MYSQL_YYABORT;
}
-#line 32167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 462: /* $@57: %empty */
-#line 4368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 468: /* $@57: %empty */
+#line 4468 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_finalize(thd, (yyvsp[-2].for_loop))))
MYSQL_YYABORT;
}
-#line 32176 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32262 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 463: /* sp_labeled_control: sp_control_label FOR_SYM $@55 sp_for_loop_index_and_bounds $@56 for_loop_statements $@57 pop_sp_loop_label */
-#line 4373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 469: /* sp_labeled_control: sp_control_label FOR_SYM $@55 sp_for_loop_index_and_bounds $@56 for_loop_statements $@57 pop_sp_loop_label */
+#line 4473 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_outer_block_finalize(thd, (yyvsp[-4].for_loop))))
MYSQL_YYABORT;
}
-#line 32185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32271 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 464: /* $@58: %empty */
-#line 4378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 470: /* $@58: %empty */
+#line 4478 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_label(thd, &(yyvsp[-1].lex_str))))
MYSQL_YYABORT;
}
-#line 32194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32280 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 465: /* sp_labeled_control: sp_control_label REPEAT_SYM $@58 repeat_body pop_sp_loop_label */
-#line 4383 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 471: /* sp_labeled_control: sp_control_label REPEAT_SYM $@58 repeat_body pop_sp_loop_label */
+#line 4483 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 32200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32286 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 466: /* $@59: %empty */
-#line 4388 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 472: /* $@59: %empty */
+#line 4488 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd)))
MYSQL_YYABORT;
}
-#line 32209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32295 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 467: /* sp_unlabeled_control: LOOP_SYM $@59 loop_body */
-#line 4393 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 473: /* sp_unlabeled_control: LOOP_SYM $@59 loop_body */
+#line 4493 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_pop_loop_empty_label(thd);
}
-#line 32217 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32303 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 468: /* $@60: %empty */
-#line 4397 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 474: /* $@60: %empty */
+#line 4497 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd)))
MYSQL_YYABORT;
}
-#line 32226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 469: /* sp_unlabeled_control: WHILE_SYM $@60 while_body */
-#line 4402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 475: /* sp_unlabeled_control: WHILE_SYM $@60 while_body */
+#line 4502 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_pop_loop_empty_label(thd);
}
-#line 32234 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 470: /* $@61: %empty */
-#line 4406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 476: /* $@61: %empty */
+#line 4506 "/home/buildbot/git/sql/sql_yacc.yy"
{
// See "The FOR LOOP statement" comments in sql_lex.cc
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
Lex->sp_block_init(thd); // The outer DECLARE..BEGIN..END block
}
-#line 32245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 471: /* $@62: %empty */
-#line 4413 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 477: /* $@62: %empty */
+#line 4513 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd))) // The inner WHILE block
MYSQL_YYABORT;
if (unlikely(Lex->sp_for_loop_condition_test(thd, (yyvsp[0].for_loop))))
MYSQL_YYABORT;
}
-#line 32256 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32342 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 472: /* sp_unlabeled_control: FOR_SYM $@61 sp_for_loop_index_and_bounds $@62 for_loop_statements */
-#line 4420 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 478: /* sp_unlabeled_control: FOR_SYM $@61 sp_for_loop_index_and_bounds $@62 for_loop_statements */
+#line 4520 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_for_loop_finalize(thd, (yyvsp[-2].for_loop))))
MYSQL_YYABORT;
@@ -32264,76 +32350,76 @@ yyreduce:
if (unlikely(Lex->sp_for_loop_outer_block_finalize(thd, (yyvsp[-2].for_loop))))
MYSQL_YYABORT;
}
-#line 32268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 473: /* $@63: %empty */
-#line 4428 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 479: /* $@63: %empty */
+#line 4528 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_loop_empty_label(thd)))
MYSQL_YYABORT;
}
-#line 32277 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32363 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 474: /* sp_unlabeled_control: REPEAT_SYM $@63 repeat_body */
-#line 4433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 480: /* sp_unlabeled_control: REPEAT_SYM $@63 repeat_body */
+#line 4533 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_pop_loop_empty_label(thd);
}
-#line 32285 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 475: /* trg_action_time: BEFORE_SYM */
-#line 4440 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 481: /* trg_action_time: BEFORE_SYM */
+#line 4540 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.action_time= TRG_ACTION_BEFORE; }
-#line 32291 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 476: /* trg_action_time: AFTER_SYM */
-#line 4442 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 482: /* trg_action_time: AFTER_SYM */
+#line 4542 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.action_time= TRG_ACTION_AFTER; }
-#line 32297 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 477: /* trg_event: INSERT */
-#line 4447 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 483: /* trg_event: INSERT */
+#line 4547 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.event= TRG_EVENT_INSERT; }
-#line 32303 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 478: /* trg_event: UPDATE_SYM */
-#line 4449 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 484: /* trg_event: UPDATE_SYM */
+#line 4549 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.event= TRG_EVENT_UPDATE; }
-#line 32309 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 479: /* trg_event: DELETE_SYM */
-#line 4451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 485: /* trg_event: DELETE_SYM */
+#line 4551 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->trg_chistics.event= TRG_EVENT_DELETE; }
-#line 32315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32401 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 480: /* $@64: %empty */
-#line 4456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 486: /* $@64: %empty */
+#line 4556 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->create_info.option_list= NULL; }
-#line 32321 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32407 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 481: /* create_body: create_field_list_parens $@64 opt_create_table_options opt_create_partitioning opt_create_select */
-#line 4457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 487: /* create_body: create_field_list_parens $@64 opt_create_table_options opt_create_partitioning opt_create_select */
+#line 4557 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32327 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32413 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 482: /* create_body: opt_create_table_options opt_create_partitioning opt_create_select */
-#line 4458 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 488: /* create_body: opt_create_table_options opt_create_partitioning opt_create_select */
+#line 4558 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32333 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32419 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 483: /* create_body: create_like */
-#line 4460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 489: /* create_body: create_like */
+#line 4560 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.add(DDL_options_st::OPT_LIKE);
@@ -32344,48 +32430,48 @@ yyreduce:
/* CREATE TABLE ... LIKE is not allowed for views. */
src_table->required_type= TABLE_TYPE_NORMAL;
}
-#line 32348 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 484: /* create_like: LIKE table_ident */
-#line 4473 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 490: /* create_like: LIKE table_ident */
+#line 4573 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table)= (yyvsp[0].table); }
-#line 32354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 485: /* create_like: LEFT_PAREN_LIKE LIKE table_ident ')' */
-#line 4474 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 491: /* create_like: LEFT_PAREN_LIKE LIKE table_ident ')' */
+#line 4574 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table)= (yyvsp[-1].table); }
-#line 32360 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 486: /* opt_create_select: %empty */
-#line 4478 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 492: /* opt_create_select: %empty */
+#line 4578 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 487: /* opt_create_select: opt_duplicate opt_as create_select_query_expression opt_versioning_option */
-#line 4481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 493: /* opt_create_select: opt_duplicate opt_as create_select_query_expression opt_versioning_option */
+#line 4581 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.add(DDL_options_st::OPT_CREATE_SELECT);
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 32376 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 488: /* create_select_query_expression: query_expression */
-#line 4490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 494: /* create_select_query_expression: query_expression */
+#line 4590 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->parsed_insert_select((yyvsp[0].select_lex_unit)->first_select()))
MYSQL_YYABORT;
}
-#line 32385 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 489: /* create_select_query_expression: LEFT_PAREN_WITH with_clause query_expression_no_with_clause ')' */
-#line 4495 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 495: /* create_select_query_expression: LEFT_PAREN_WITH with_clause query_expression_no_with_clause ')' */
+#line 4595 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *first_select= (yyvsp[-1].select_lex_unit)->first_select();
(yyvsp[-1].select_lex_unit)->set_with_clause((yyvsp[-2].with_clause));
@@ -32393,11 +32479,11 @@ yyreduce:
if (Lex->parsed_insert_select(first_select))
MYSQL_YYABORT;
}
-#line 32397 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 490: /* opt_create_partitioning: opt_partitioning */
-#line 4506 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 496: /* opt_create_partitioning: opt_partitioning */
+#line 4606 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Remove all tables used in PARTITION clause from the global table
@@ -32407,17 +32493,17 @@ yyreduce:
last_non_sel_table->next_global= 0;
Lex->query_tables_last= &last_non_sel_table->next_global;
}
-#line 32411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32497 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 491: /* opt_partitioning: %empty */
-#line 4542 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 497: /* opt_partitioning: %empty */
+#line 4642 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32417 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 493: /* $@65: %empty */
-#line 4548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 499: /* $@65: %empty */
+#line 4648 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
@@ -32428,11 +32514,11 @@ yyreduce:
lex->alter_info.partition_flags|= ALTER_PARTITION_INFO;
}
}
-#line 32432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 495: /* have_partitioning: %empty */
-#line 4563 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 501: /* have_partitioning: %empty */
+#line 4663 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
LEX_CSTRING partition_name={STRING_WITH_LEN("partition")};
@@ -32444,11 +32530,11 @@ yyreduce:
"--with-plugin-partition"));
#endif
}
-#line 32448 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 496: /* $@66: %empty */
-#line 4578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 502: /* $@66: %empty */
+#line 4678 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Lex->part_info))
{
@@ -32462,110 +32548,110 @@ yyreduce:
partition info string into part_info data structure.
*/
}
-#line 32466 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32552 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 497: /* partition_entry: PARTITION_SYM $@66 partition */
-#line 4592 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 503: /* partition_entry: PARTITION_SYM $@66 partition */
+#line 4692 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 32474 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32560 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 498: /* $@67: %empty */
-#line 4599 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 504: /* $@67: %empty */
+#line 4699 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->safe_to_cache_query= 1; }
-#line 32480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32566 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 500: /* part_type_def: opt_linear KEY_SYM opt_key_algo '(' part_field_list ')' */
-#line 4605 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 506: /* part_type_def: opt_linear KEY_SYM opt_key_algo '(' part_field_list ')' */
+#line 4705 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->list_of_part_fields= TRUE;
part_info->column_list= FALSE;
part_info->part_type= HASH_PARTITION;
}
-#line 32491 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32577 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 501: /* $@68: %empty */
-#line 4612 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 507: /* $@68: %empty */
+#line 4712 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= HASH_PARTITION; }
-#line 32497 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 502: /* part_type_def: opt_linear HASH_SYM $@68 part_func */
-#line 4613 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 508: /* part_type_def: opt_linear HASH_SYM $@68 part_func */
+#line 4713 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 503: /* part_type_def: RANGE_SYM part_func */
-#line 4615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 509: /* part_type_def: RANGE_SYM part_func */
+#line 4715 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= RANGE_PARTITION; }
-#line 32509 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32595 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 504: /* part_type_def: RANGE_SYM part_column_list */
-#line 4617 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 510: /* part_type_def: RANGE_SYM part_column_list */
+#line 4717 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= RANGE_PARTITION; }
-#line 32515 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32601 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 505: /* $@69: %empty */
-#line 4619 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 511: /* $@69: %empty */
+#line 4719 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_PART_FUNC;
}
-#line 32523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 506: /* part_type_def: LIST_SYM $@69 part_func */
-#line 4623 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 512: /* part_type_def: LIST_SYM $@69 part_func */
+#line 4723 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->part_info->part_type= LIST_PARTITION;
Select->parsing_place= NO_MATTER;
}
-#line 32532 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32618 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 507: /* part_type_def: LIST_SYM part_column_list */
-#line 4628 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 513: /* part_type_def: LIST_SYM part_column_list */
+#line 4728 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->part_type= LIST_PARTITION; }
-#line 32538 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 508: /* $@70: %empty */
-#line 4630 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 514: /* $@70: %empty */
+#line 4730 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->part_info->vers_init_info(thd)))
MYSQL_YYABORT;
}
-#line 32547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 510: /* opt_linear: %empty */
-#line 4638 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 516: /* opt_linear: %empty */
+#line 4738 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32553 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32639 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 511: /* opt_linear: LINEAR_SYM */
-#line 4640 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 517: /* opt_linear: LINEAR_SYM */
+#line 4740 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->linear_hash_ind= TRUE;}
-#line 32559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32645 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 512: /* opt_key_algo: %empty */
-#line 4645 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 518: /* opt_key_algo: %empty */
+#line 4745 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->key_algorithm= partition_info::KEY_ALGORITHM_NONE;}
-#line 32565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32651 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 513: /* opt_key_algo: ALGORITHM_SYM '=' real_ulong_num */
-#line 4647 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 519: /* opt_key_algo: ALGORITHM_SYM '=' real_ulong_num */
+#line 4747 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch ((yyvsp[0].ulong_num)) {
case 1:
@@ -32579,35 +32665,35 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 32583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 514: /* part_field_list: %empty */
-#line 4663 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 520: /* part_field_list: %empty */
+#line 4763 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 515: /* part_field_list: part_field_item_list */
-#line 4664 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 521: /* part_field_list: part_field_item_list */
+#line 4764 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32595 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32681 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 516: /* part_field_item_list: part_field_item */
-#line 4668 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 522: /* part_field_item_list: part_field_item */
+#line 4768 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32601 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32687 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 517: /* part_field_item_list: part_field_item_list ',' part_field_item */
-#line 4669 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 523: /* part_field_item_list: part_field_item_list ',' part_field_item */
+#line 4769 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32607 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 518: /* part_field_item: ident */
-#line 4674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 524: /* part_field_item: ident */
+#line 4774 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->num_columns++;
@@ -32618,21 +32704,21 @@ yyreduce:
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of partition fields"));
}
-#line 32622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 519: /* part_column_list: COLUMNS '(' part_field_list ')' */
-#line 4688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 525: /* part_column_list: COLUMNS '(' part_field_list ')' */
+#line 4788 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->column_list= TRUE;
part_info->list_of_part_fields= TRUE;
}
-#line 32632 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32718 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 520: /* part_func: '(' part_func_expr ')' */
-#line 4698 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 526: /* part_func: '(' part_func_expr ')' */
+#line 4798 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->set_part_expr(thd, (yyvsp[-1].item), FALSE)))
@@ -32640,26 +32726,26 @@ yyreduce:
part_info->num_columns= 1;
part_info->column_list= FALSE;
}
-#line 32644 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32730 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 521: /* sub_part_func: '(' part_func_expr ')' */
-#line 4709 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 527: /* sub_part_func: '(' part_func_expr ')' */
+#line 4809 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->part_info->set_part_expr(thd, (yyvsp[-1].item), TRUE)))
MYSQL_YYABORT;
}
-#line 32653 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32739 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 522: /* opt_num_parts: %empty */
-#line 4717 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 528: /* opt_num_parts: %empty */
+#line 4817 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32659 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 523: /* opt_num_parts: PARTITIONS_SYM real_ulong_num */
-#line 4719 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 529: /* opt_num_parts: PARTITIONS_SYM real_ulong_num */
+#line 4819 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint num_parts= (yyvsp[0].ulong_num);
partition_info *part_info= Lex->part_info;
@@ -32669,57 +32755,57 @@ yyreduce:
part_info->num_parts= num_parts;
part_info->use_default_num_partitions= FALSE;
}
-#line 32673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 524: /* opt_sub_part: %empty */
-#line 4731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 530: /* opt_sub_part: %empty */
+#line 4831 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32679 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 525: /* $@71: %empty */
-#line 4733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 531: /* $@71: %empty */
+#line 4833 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->subpart_type= HASH_PARTITION; }
-#line 32685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32771 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 526: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear HASH_SYM sub_part_func $@71 opt_num_subparts */
-#line 4734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 532: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear HASH_SYM sub_part_func $@71 opt_num_subparts */
+#line 4834 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32691 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 527: /* $@72: %empty */
-#line 4737 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 533: /* $@72: %empty */
+#line 4837 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->subpart_type= HASH_PARTITION;
part_info->list_of_subpart_fields= TRUE;
}
-#line 32701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32787 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 528: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear KEY_SYM opt_key_algo '(' sub_part_field_list ')' $@72 opt_num_subparts */
-#line 4742 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 534: /* opt_sub_part: SUBPARTITION_SYM BY opt_linear KEY_SYM opt_key_algo '(' sub_part_field_list ')' $@72 opt_num_subparts */
+#line 4842 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32707 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32793 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 529: /* sub_part_field_list: sub_part_field_item */
-#line 4746 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 535: /* sub_part_field_list: sub_part_field_item */
+#line 4846 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 530: /* sub_part_field_list: sub_part_field_list ',' sub_part_field_item */
-#line 4747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 536: /* sub_part_field_list: sub_part_field_list ',' sub_part_field_item */
+#line 4847 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32805 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 531: /* sub_part_field_item: ident */
-#line 4752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 537: /* sub_part_field_item: ident */
+#line 4852 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->subpart_field_list.push_back((yyvsp[0].ident_sys).str,
@@ -32730,11 +32816,11 @@ yyreduce:
my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0),
"list of subpartition fields"));
}
-#line 32734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32820 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 532: /* part_func_expr: bit_expr */
-#line 4766 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 538: /* part_func_expr: bit_expr */
+#line 4866 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Lex->safe_to_cache_query))
{
@@ -32743,17 +32829,17 @@ yyreduce:
}
(yyval.item)=(yyvsp[0].item);
}
-#line 32747 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32833 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 533: /* opt_num_subparts: %empty */
-#line 4777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 539: /* opt_num_subparts: %empty */
+#line 4877 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32753 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32839 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 534: /* opt_num_subparts: SUBPARTITIONS_SYM real_ulong_num */
-#line 4779 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 540: /* opt_num_subparts: SUBPARTITIONS_SYM real_ulong_num */
+#line 4879 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint num_parts= (yyvsp[0].ulong_num);
LEX *lex= Lex;
@@ -32762,11 +32848,11 @@ yyreduce:
lex->part_info->num_subparts= num_parts;
lex->part_info->use_default_num_subpartitions= FALSE;
}
-#line 32766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 535: /* part_defs: %empty */
-#line 4791 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 541: /* part_defs: %empty */
+#line 4891 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->part_type == RANGE_PARTITION))
@@ -32776,11 +32862,11 @@ yyreduce:
my_yyabort_error((ER_PARTITIONS_MUST_BE_DEFINED_ERROR, MYF(0),
"LIST"));
}
-#line 32780 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32866 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 536: /* part_defs: '(' part_def_list ')' */
-#line 4801 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 542: /* part_defs: '(' part_def_list ')' */
+#line 4901 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
uint count_curr_parts= part_info->partitions.elements;
@@ -32799,23 +32885,23 @@ yyreduce:
}
part_info->count_curr_subparts= 0;
}
-#line 32803 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32889 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 537: /* part_def_list: part_definition */
-#line 4822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 543: /* part_def_list: part_definition */
+#line 4922 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32809 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32895 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 538: /* part_def_list: part_def_list ',' part_definition */
-#line 4823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 544: /* part_def_list: part_def_list ',' part_definition */
+#line 4923 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32815 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32901 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 541: /* $@73: %empty */
-#line 4833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 547: /* $@73: %empty */
+#line 4933 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
partition_element *p_elem= new (thd->mem_root) partition_element();
@@ -32831,17 +32917,17 @@ yyreduce:
part_info->use_default_partitions= FALSE;
part_info->use_default_num_partitions= FALSE;
}
-#line 32835 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 542: /* part_definition: opt_partition $@73 part_name opt_part_values opt_part_options opt_sub_partition */
-#line 4852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 548: /* part_definition: opt_partition $@73 part_name opt_part_values opt_part_options opt_sub_partition */
+#line 4952 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32927 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 543: /* part_name: ident */
-#line 4857 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 549: /* part_name: ident */
+#line 4957 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
partition_element *p_elem= part_info->curr_part_elem;
@@ -32849,11 +32935,11 @@ yyreduce:
MYSQL_YYABORT;
p_elem->partition_name= (yyvsp[0].ident_sys).str;
}
-#line 32853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32939 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 544: /* opt_part_values: %empty */
-#line 4868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 550: /* opt_part_values: %empty */
+#line 4968 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -32869,11 +32955,11 @@ yyreduce:
else
part_info->part_type= HASH_PARTITION;
}
-#line 32873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 545: /* $@74: %empty */
-#line 4884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 551: /* $@74: %empty */
+#line 4984 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -32886,17 +32972,17 @@ yyreduce:
else
part_info->part_type= RANGE_PARTITION;
}
-#line 32890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32976 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 546: /* opt_part_values: VALUES_LESS_SYM THAN_SYM $@74 part_func_max */
-#line 4896 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 552: /* opt_part_values: VALUES_LESS_SYM THAN_SYM $@74 part_func_max */
+#line 4996 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32982 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 547: /* $@75: %empty */
-#line 4898 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 553: /* $@75: %empty */
+#line 4998 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -32909,39 +32995,39 @@ yyreduce:
else
part_info->part_type= LIST_PARTITION;
}
-#line 32913 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 32999 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 548: /* opt_part_values: VALUES_IN_SYM $@75 part_values_in */
-#line 4910 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 554: /* opt_part_values: VALUES_IN_SYM $@75 part_values_in */
+#line 5010 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32919 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33005 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 549: /* opt_part_values: CURRENT_SYM */
-#line 4912 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 555: /* opt_part_values: CURRENT_SYM */
+#line 5012 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (Lex->part_values_current(thd))
MYSQL_YYABORT;
#endif
}
-#line 32930 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33016 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 550: /* opt_part_values: HISTORY_SYM */
-#line 4919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 556: /* opt_part_values: HISTORY_SYM */
+#line 5019 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (Lex->part_values_history(thd))
MYSQL_YYABORT;
#endif
}
-#line 32941 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33027 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 551: /* opt_part_values: DEFAULT */
-#line 4926 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 557: /* opt_part_values: DEFAULT */
+#line 5026 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -32958,11 +33044,11 @@ yyreduce:
if (unlikely(part_info->add_max_value(thd)))
MYSQL_YYABORT;
}
-#line 32962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 552: /* part_func_max: MAXVALUE_SYM */
-#line 4946 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 558: /* part_func_max: MAXVALUE_SYM */
+#line 5046 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
@@ -32980,17 +33066,17 @@ yyreduce:
if (unlikely(part_info->add_max_value(thd)))
MYSQL_YYABORT;
}
-#line 32984 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33070 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 553: /* part_func_max: part_value_item */
-#line 4963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 559: /* part_func_max: part_value_item */
+#line 5063 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 32990 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33076 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 554: /* part_values_in: part_value_item */
-#line 4968 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 560: /* part_values_in: part_value_item */
+#line 5068 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33017,11 +33103,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33021 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33107 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 555: /* part_values_in: '(' part_value_list ')' */
-#line 4995 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 561: /* part_values_in: '(' part_value_list ')' */
+#line 5095 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->num_columns < 2U))
@@ -33030,23 +33116,23 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 556: /* part_value_list: part_value_item */
-#line 5006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 562: /* part_value_list: part_value_item */
+#line 5106 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33126 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 557: /* part_value_list: part_value_list ',' part_value_item */
-#line 5007 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 563: /* part_value_list: part_value_list ',' part_value_item */
+#line 5107 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 558: /* $@76: %empty */
-#line 5012 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 564: /* $@76: %empty */
+#line 5112 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->print_debug("( part_value_item", NULL);
@@ -33056,17 +33142,17 @@ yyreduce:
part_info->init_column_part(thd)))
MYSQL_YYABORT;
}
-#line 33060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33146 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 559: /* $@77: %empty */
-#line 5021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 565: /* $@77: %empty */
+#line 5121 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33152 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 560: /* part_value_item: '(' $@76 part_value_item_list $@77 ')' */
-#line 5023 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 566: /* part_value_item: '(' $@76 part_value_item_list $@77 ')' */
+#line 5123 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->print_debug(") part_value_item", NULL);
@@ -33087,23 +33173,23 @@ yyreduce:
}
part_info->curr_list_object= 0;
}
-#line 33091 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33177 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 561: /* part_value_item_list: part_value_expr_item */
-#line 5046 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 567: /* part_value_item_list: part_value_expr_item */
+#line 5146 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33097 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33183 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 562: /* part_value_item_list: part_value_item_list ',' part_value_expr_item */
-#line 5047 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 568: /* part_value_item_list: part_value_item_list ',' part_value_expr_item */
+#line 5147 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33103 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33189 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 563: /* part_value_expr_item: MAXVALUE_SYM */
-#line 5052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 569: /* part_value_expr_item: MAXVALUE_SYM */
+#line 5152 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->part_type == LIST_PARTITION))
@@ -33114,11 +33200,11 @@ yyreduce:
if (unlikely(part_info->add_max_value(thd)))
MYSQL_YYABORT;
}
-#line 33118 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 564: /* part_value_expr_item: bit_expr */
-#line 5063 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 570: /* part_value_expr_item: bit_expr */
+#line 5163 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
@@ -33132,11 +33218,11 @@ yyreduce:
if (unlikely(part_info->add_column_list_value(thd, part_expr)))
MYSQL_YYABORT;
}
-#line 33136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33222 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 565: /* opt_sub_partition: %empty */
-#line 5081 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 571: /* opt_sub_partition: %empty */
+#line 5181 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (unlikely(part_info->num_subparts != 0 &&
@@ -33150,11 +33236,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 33154 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33240 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 566: /* opt_sub_partition: '(' sub_part_list ')' */
-#line 5095 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 572: /* opt_sub_partition: '(' sub_part_list ')' */
+#line 5195 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
if (part_info->num_subparts != 0)
@@ -33177,23 +33263,23 @@ yyreduce:
}
part_info->count_curr_subparts= 0;
}
-#line 33181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33267 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 567: /* sub_part_list: sub_part_definition */
-#line 5120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 573: /* sub_part_list: sub_part_definition */
+#line 5220 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33187 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 568: /* sub_part_list: sub_part_list ',' sub_part_definition */
-#line 5121 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 574: /* sub_part_list: sub_part_list ',' sub_part_definition */
+#line 5221 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 569: /* $@78: %empty */
-#line 5126 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 575: /* $@78: %empty */
+#line 5226 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
partition_element *curr_part= part_info->current_partition;
@@ -33226,164 +33312,164 @@ yyreduce:
part_info->use_default_num_subpartitions= FALSE;
part_info->count_curr_subparts++;
}
-#line 33230 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33316 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 570: /* sub_part_definition: SUBPARTITION_SYM $@78 sub_name opt_subpart_options */
-#line 5158 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 576: /* sub_part_definition: SUBPARTITION_SYM $@78 sub_name opt_subpart_options */
+#line 5258 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33322 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 571: /* sub_name: ident_or_text */
-#line 5163 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 577: /* sub_name: ident_or_text */
+#line 5263 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(check_ident_length(&(yyvsp[0].lex_str))))
MYSQL_YYABORT;
Lex->part_info->curr_part_elem->partition_name= (yyvsp[0].lex_str).str;
}
-#line 33246 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 572: /* opt_part_options: %empty */
-#line 5171 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 578: /* opt_part_options: %empty */
+#line 5271 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33252 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33338 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 573: /* opt_part_options: part_option_list */
-#line 5172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 579: /* opt_part_options: part_option_list */
+#line 5272 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33258 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33344 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 574: /* part_option_list: part_option_list part_option */
-#line 5176 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 580: /* part_option_list: part_option_list part_option */
+#line 5276 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33264 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33350 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 575: /* part_option_list: part_option */
-#line 5177 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 581: /* part_option_list: part_option */
+#line 5277 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33270 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33356 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 576: /* part_option: server_part_option */
-#line 5181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 582: /* part_option: server_part_option */
+#line 5281 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33276 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33362 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 577: /* part_option: engine_defined_option */
-#line 5183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 583: /* part_option: engine_defined_option */
+#line 5283 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->part_info->curr_part_elem->option_list,
&Lex->option_list_last);
}
-#line 33285 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 578: /* opt_subpart_options: %empty */
-#line 5190 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 584: /* opt_subpart_options: %empty */
+#line 5290 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33291 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 579: /* opt_subpart_options: subpart_option_list */
-#line 5191 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 585: /* opt_subpart_options: subpart_option_list */
+#line 5291 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33297 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 580: /* subpart_option_list: subpart_option_list server_part_option */
-#line 5195 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 586: /* subpart_option_list: subpart_option_list server_part_option */
+#line 5295 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33303 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 581: /* subpart_option_list: server_part_option */
-#line 5196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 587: /* subpart_option_list: server_part_option */
+#line 5296 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33309 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 582: /* server_part_option: TABLESPACE opt_equal ident_or_text */
-#line 5201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 588: /* server_part_option: TABLESPACE opt_equal ident_or_text */
+#line 5301 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* Compatibility with MySQL */ }
-#line 33315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33401 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 583: /* server_part_option: opt_storage ENGINE_SYM opt_equal storage_engines */
-#line 5203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 589: /* server_part_option: opt_storage ENGINE_SYM opt_equal storage_engines */
+#line 5303 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->curr_part_elem->engine_type= (yyvsp[0].db_type);
part_info->default_engine_type= (yyvsp[0].db_type);
}
-#line 33325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 584: /* server_part_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
-#line 5209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 590: /* server_part_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
+#line 5309 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info->curr_part_elem->connect_string.str= (yyvsp[0].lex_str).str;
lex->part_info->curr_part_elem->connect_string.length= (yyvsp[0].lex_str).length;
}
-#line 33335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33421 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 585: /* server_part_option: NODEGROUP_SYM opt_equal real_ulong_num */
-#line 5215 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 591: /* server_part_option: NODEGROUP_SYM opt_equal real_ulong_num */
+#line 5315 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->nodegroup_id= (uint16) (yyvsp[0].ulong_num); }
-#line 33341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33427 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 586: /* server_part_option: MAX_ROWS opt_equal real_ulonglong_num */
-#line 5217 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 592: /* server_part_option: MAX_ROWS opt_equal real_ulonglong_num */
+#line 5317 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->part_max_rows= (ha_rows) (yyvsp[0].ulonglong_number); }
-#line 33347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33433 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 587: /* server_part_option: MIN_ROWS opt_equal real_ulonglong_num */
-#line 5219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 593: /* server_part_option: MIN_ROWS opt_equal real_ulonglong_num */
+#line 5319 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->part_min_rows= (ha_rows) (yyvsp[0].ulonglong_number); }
-#line 33353 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33439 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 588: /* server_part_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5221 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 594: /* server_part_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5321 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->data_file_name= (yyvsp[0].lex_str).str; }
-#line 33359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33445 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 589: /* server_part_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5223 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 595: /* server_part_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5323 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->index_file_name= (yyvsp[0].lex_str).str; }
-#line 33365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33451 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 590: /* server_part_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
-#line 5225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 596: /* server_part_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
+#line 5325 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->part_info->curr_part_elem->part_comment= (yyvsp[0].lex_str).str; }
-#line 33371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33457 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 591: /* opt_versioning_rotation: %empty */
-#line 5229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 597: /* opt_versioning_rotation: %empty */
+#line 5329 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 592: /* $@79: %empty */
-#line 5230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 598: /* $@79: %empty */
+#line 5330 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "INTERVAL"; }
-#line 33383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33469 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 593: /* opt_versioning_rotation: $@79 INTERVAL_SYM expr interval opt_versioning_interval_start opt_vers_auto_part */
-#line 5232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 599: /* opt_versioning_rotation: $@79 INTERVAL_SYM expr interval opt_versioning_interval_start opt_vers_auto_part */
+#line 5332 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
const char *table_name= Lex->create_last_non_select_table->table_name.str;
@@ -33391,159 +33477,159 @@ yyreduce:
table_name)))
MYSQL_YYABORT;
}
-#line 33395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33481 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 594: /* opt_versioning_rotation: LIMIT ulonglong_num opt_vers_auto_part */
-#line 5240 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 600: /* opt_versioning_rotation: LIMIT ulonglong_num opt_vers_auto_part */
+#line 5340 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
const char *table_name= Lex->create_last_non_select_table->table_name.str;
if (unlikely(part_info->vers_set_limit((yyvsp[-1].ulonglong_number), (yyvsp[0].num), table_name)))
MYSQL_YYABORT;
}
-#line 33406 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33492 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 595: /* opt_versioning_interval_start: %empty */
-#line 5251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 601: /* opt_versioning_interval_start: %empty */
+#line 5351 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= NULL;
}
-#line 33414 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33500 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 596: /* opt_versioning_interval_start: STARTS_SYM literal */
-#line 5255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 602: /* opt_versioning_interval_start: STARTS_SYM literal */
+#line 5355 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 33422 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33508 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 597: /* opt_vers_auto_part: %empty */
-#line 5262 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 603: /* opt_vers_auto_part: %empty */
+#line 5362 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= 0;
}
-#line 33430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 598: /* opt_vers_auto_part: AUTO_SYM */
-#line 5266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 604: /* opt_vers_auto_part: AUTO_SYM */
+#line 5366 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= 1;
}
-#line 33438 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33524 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 599: /* opt_as: %empty */
-#line 5275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 605: /* opt_as: %empty */
+#line 5375 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33444 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 600: /* opt_as: AS */
-#line 5276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 606: /* opt_as: AS */
+#line 5376 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33450 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33536 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 601: /* opt_create_database_options: %empty */
-#line 5280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 607: /* opt_create_database_options: %empty */
+#line 5380 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33542 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 602: /* opt_create_database_options: create_database_options */
-#line 5281 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 608: /* opt_create_database_options: create_database_options */
+#line 5381 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33548 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 603: /* create_database_options: create_database_option */
-#line 5285 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 609: /* create_database_options: create_database_option */
+#line 5385 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33468 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33554 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 604: /* create_database_options: create_database_options create_database_option */
-#line 5286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 610: /* create_database_options: create_database_options create_database_option */
+#line 5386 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33474 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33560 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 605: /* create_database_option: default_collation */
-#line 5290 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 611: /* create_database_option: default_collation */
+#line 5390 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33566 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 606: /* create_database_option: default_charset */
-#line 5291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 612: /* create_database_option: default_charset */
+#line 5391 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 33486 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33572 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 607: /* create_database_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
-#line 5293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 613: /* create_database_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
+#line 5393 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.schema_comment= thd->make_clex_string((yyvsp[0].lex_str));
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
}
-#line 33495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33581 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 608: /* opt_if_not_exists_table_element: %empty */
-#line 5301 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 614: /* opt_if_not_exists_table_element: %empty */
+#line 5401 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= FALSE;
}
-#line 33503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 609: /* opt_if_not_exists_table_element: IF_SYM not EXISTS */
-#line 5305 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 615: /* opt_if_not_exists_table_element: IF_SYM not EXISTS */
+#line 5405 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= TRUE;
}
-#line 33511 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 610: /* opt_if_not_exists: %empty */
-#line 5312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 616: /* opt_if_not_exists: %empty */
+#line 5412 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).init();
}
-#line 33519 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33605 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 611: /* opt_if_not_exists: IF_SYM not EXISTS */
-#line 5316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 617: /* opt_if_not_exists: IF_SYM not EXISTS */
+#line 5416 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_IF_NOT_EXISTS);
}
-#line 33527 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33613 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 612: /* create_or_replace: CREATE */
-#line 5323 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 618: /* create_or_replace: CREATE */
+#line 5423 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).init();
}
-#line 33535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33621 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 613: /* create_or_replace: CREATE OR_SYM REPLACE */
-#line 5327 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 619: /* create_or_replace: CREATE OR_SYM REPLACE */
+#line 5427 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_OR_REPLACE);
}
-#line 33543 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33629 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 621: /* create_table_option: ENGINE_SYM opt_equal ident_or_text */
-#line 5350 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 627: /* create_table_option: ENGINE_SYM opt_equal ident_or_text */
+#line 5450 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!lex->m_sql_cmd)
@@ -33558,65 +33644,65 @@ yyreduce:
*opt= Storage_engine_name((yyvsp[0].lex_str));
lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;
}
-#line 33562 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 622: /* create_table_option: MAX_ROWS opt_equal ulonglong_num */
-#line 5365 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 628: /* create_table_option: MAX_ROWS opt_equal ulonglong_num */
+#line 5465 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.max_rows= (yyvsp[0].ulonglong_number);
Lex->create_info.used_fields|= HA_CREATE_USED_MAX_ROWS;
}
-#line 33571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33657 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 623: /* create_table_option: MIN_ROWS opt_equal ulonglong_num */
-#line 5370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 629: /* create_table_option: MIN_ROWS opt_equal ulonglong_num */
+#line 5470 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.min_rows= (yyvsp[0].ulonglong_number);
Lex->create_info.used_fields|= HA_CREATE_USED_MIN_ROWS;
}
-#line 33580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33666 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 624: /* create_table_option: AVG_ROW_LENGTH opt_equal ulong_num */
-#line 5375 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 630: /* create_table_option: AVG_ROW_LENGTH opt_equal ulong_num */
+#line 5475 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.avg_row_length=(yyvsp[0].ulong_num);
Lex->create_info.used_fields|= HA_CREATE_USED_AVG_ROW_LENGTH;
}
-#line 33589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 625: /* create_table_option: PASSWORD_SYM opt_equal TEXT_STRING_sys */
-#line 5380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 631: /* create_table_option: PASSWORD_SYM opt_equal TEXT_STRING_sys */
+#line 5480 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.password=(yyvsp[0].lex_str).str;
Lex->create_info.used_fields|= HA_CREATE_USED_PASSWORD;
}
-#line 33598 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 626: /* create_table_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
-#line 5385 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 632: /* create_table_option: COMMENT_SYM opt_equal TEXT_STRING_sys */
+#line 5485 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.comment=(yyvsp[0].lex_str);
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
}
-#line 33607 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 627: /* create_table_option: AUTO_INC opt_equal ulonglong_num */
-#line 5390 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 633: /* create_table_option: AUTO_INC opt_equal ulonglong_num */
+#line 5490 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.auto_increment_value=(yyvsp[0].ulonglong_number);
Lex->create_info.used_fields|= HA_CREATE_USED_AUTO;
}
-#line 33616 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 628: /* create_table_option: PACK_KEYS_SYM opt_equal ulong_num */
-#line 5395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 634: /* create_table_option: PACK_KEYS_SYM opt_equal ulong_num */
+#line 5495 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch((yyvsp[0].ulong_num)) {
case 0:
@@ -33631,21 +33717,21 @@ yyreduce:
}
Lex->create_info.used_fields|= HA_CREATE_USED_PACK_KEYS;
}
-#line 33635 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33721 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 629: /* create_table_option: PACK_KEYS_SYM opt_equal DEFAULT */
-#line 5410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 635: /* create_table_option: PACK_KEYS_SYM opt_equal DEFAULT */
+#line 5510 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options&=
~(HA_OPTION_PACK_KEYS | HA_OPTION_NO_PACK_KEYS);
Lex->create_info.used_fields|= HA_CREATE_USED_PACK_KEYS;
}
-#line 33645 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 630: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal ulong_num */
-#line 5416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 636: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal ulong_num */
+#line 5516 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch((yyvsp[0].ulong_num)) {
case 0:
@@ -33660,20 +33746,20 @@ yyreduce:
}
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_AUTO_RECALC;
}
-#line 33664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 631: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal DEFAULT */
-#line 5431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 637: /* create_table_option: STATS_AUTO_RECALC_SYM opt_equal DEFAULT */
+#line 5531 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.stats_auto_recalc= HA_STATS_AUTO_RECALC_DEFAULT;
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_AUTO_RECALC;
}
-#line 33673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 632: /* create_table_option: STATS_PERSISTENT_SYM opt_equal ulong_num */
-#line 5436 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 638: /* create_table_option: STATS_PERSISTENT_SYM opt_equal ulong_num */
+#line 5536 "/home/buildbot/git/sql/sql_yacc.yy"
{
switch((yyvsp[0].ulong_num)) {
case 0:
@@ -33688,21 +33774,21 @@ yyreduce:
}
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_PERSISTENT;
}
-#line 33692 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 633: /* create_table_option: STATS_PERSISTENT_SYM opt_equal DEFAULT */
-#line 5451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 639: /* create_table_option: STATS_PERSISTENT_SYM opt_equal DEFAULT */
+#line 5551 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options&=
~(HA_OPTION_STATS_PERSISTENT | HA_OPTION_NO_STATS_PERSISTENT);
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_PERSISTENT;
}
-#line 33702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33788 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 634: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal ulong_num */
-#line 5457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 640: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal ulong_num */
+#line 5557 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* From user point of view STATS_SAMPLE_PAGES can be specified as
STATS_SAMPLE_PAGES=N (where 0<N<=65535, it does not make sense to
@@ -33720,73 +33806,73 @@ yyreduce:
Lex->create_info.stats_sample_pages=(yyvsp[0].ulong_num);
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_SAMPLE_PAGES;
}
-#line 33724 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33810 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 635: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal DEFAULT */
-#line 5475 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 641: /* create_table_option: STATS_SAMPLE_PAGES_SYM opt_equal DEFAULT */
+#line 5575 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.stats_sample_pages=0;
Lex->create_info.used_fields|= HA_CREATE_USED_STATS_SAMPLE_PAGES;
}
-#line 33733 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 636: /* create_table_option: CHECKSUM_SYM opt_equal ulong_num */
-#line 5480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 642: /* create_table_option: CHECKSUM_SYM opt_equal ulong_num */
+#line 5580 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM;
Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM;
}
-#line 33742 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 637: /* create_table_option: TABLE_CHECKSUM_SYM opt_equal ulong_num */
-#line 5485 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 643: /* create_table_option: TABLE_CHECKSUM_SYM opt_equal ulong_num */
+#line 5585 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM;
Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM;
}
-#line 33751 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33837 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 638: /* create_table_option: PAGE_CHECKSUM_SYM opt_equal choice */
-#line 5490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 644: /* create_table_option: PAGE_CHECKSUM_SYM opt_equal choice */
+#line 5590 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_PAGE_CHECKSUM;
Lex->create_info.page_checksum= (yyvsp[0].choice);
}
-#line 33760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 639: /* create_table_option: DELAY_KEY_WRITE_SYM opt_equal ulong_num */
-#line 5495 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 645: /* create_table_option: DELAY_KEY_WRITE_SYM opt_equal ulong_num */
+#line 5595 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_DELAY_KEY_WRITE : HA_OPTION_NO_DELAY_KEY_WRITE;
Lex->create_info.used_fields|= HA_CREATE_USED_DELAY_KEY_WRITE;
}
-#line 33769 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33855 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 640: /* create_table_option: ROW_FORMAT_SYM opt_equal row_types */
-#line 5500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 646: /* create_table_option: ROW_FORMAT_SYM opt_equal row_types */
+#line 5600 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.row_type= (yyvsp[0].row_type);
Lex->create_info.used_fields|= HA_CREATE_USED_ROW_FORMAT;
}
-#line 33778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33864 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 641: /* $@80: %empty */
-#line 5505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 647: /* $@80: %empty */
+#line 5605 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->first_select_lex()->table_list.save_and_clear(&Lex->save_list);
}
-#line 33786 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 642: /* create_table_option: UNION_SYM opt_equal $@80 '(' opt_table_list ')' */
-#line 5509 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 648: /* create_table_option: UNION_SYM opt_equal $@80 '(' opt_table_list ')' */
+#line 5609 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Move the union list to the merge_list and exclude its tables
@@ -33808,141 +33894,150 @@ yyreduce:
lex->create_info.used_fields|= HA_CREATE_USED_UNION;
}
-#line 33812 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33898 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 645: /* create_table_option: INSERT_METHOD opt_equal merge_insert_types */
-#line 5533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 651: /* create_table_option: INSERT_METHOD opt_equal merge_insert_types */
+#line 5633 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.merge_insert_method= (yyvsp[0].ulong_num);
Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;
}
-#line 33821 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33907 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 646: /* create_table_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 652: /* create_table_option: DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5638 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.data_file_name= (yyvsp[0].lex_str).str;
Lex->create_info.used_fields|= HA_CREATE_USED_DATADIR;
}
-#line 33830 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33916 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 647: /* create_table_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
-#line 5543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 653: /* create_table_option: INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys */
+#line 5643 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.index_file_name= (yyvsp[0].lex_str).str;
Lex->create_info.used_fields|= HA_CREATE_USED_INDEXDIR;
}
-#line 33839 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33925 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 648: /* create_table_option: TABLESPACE ident */
-#line 5548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 654: /* create_table_option: TABLESPACE ident */
+#line 5648 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* Compatiblity with MySQL */ }
-#line 33845 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33931 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 649: /* create_table_option: STORAGE_SYM DISK_SYM */
-#line 5550 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 655: /* create_table_option: STORAGE_SYM DISK_SYM */
+#line 5650 "/home/buildbot/git/sql/sql_yacc.yy"
{Lex->create_info.storage_media= HA_SM_DISK;}
-#line 33851 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33937 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 650: /* create_table_option: STORAGE_SYM MEMORY_SYM */
-#line 5552 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 656: /* create_table_option: STORAGE_SYM MEMORY_SYM */
+#line 5652 "/home/buildbot/git/sql/sql_yacc.yy"
{Lex->create_info.storage_media= HA_SM_MEMORY;}
-#line 33857 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33943 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 651: /* create_table_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
-#line 5554 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 657: /* create_table_option: CONNECTION_SYM opt_equal TEXT_STRING_sys */
+#line 5654 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.connect_string.str= (yyvsp[0].lex_str).str;
Lex->create_info.connect_string.length= (yyvsp[0].lex_str).length;
Lex->create_info.used_fields|= HA_CREATE_USED_CONNECTION;
}
-#line 33867 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33953 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 652: /* create_table_option: KEY_BLOCK_SIZE opt_equal ulong_num */
-#line 5560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 658: /* create_table_option: KEY_BLOCK_SIZE opt_equal ulong_num */
+#line 5660 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_KEY_BLOCK_SIZE;
Lex->create_info.key_block_size= (yyvsp[0].ulong_num);
}
-#line 33876 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 653: /* create_table_option: TRANSACTIONAL_SYM opt_equal choice */
-#line 5565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 659: /* create_table_option: TRANSACTIONAL_SYM opt_equal choice */
+#line 5665 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_TRANSACTIONAL;
Lex->create_info.transactional= (yyvsp[0].choice);
}
-#line 33885 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33971 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 654: /* create_table_option: engine_defined_option */
-#line 5570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 660: /* create_table_option: engine_defined_option */
+#line 5670 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->create_info.option_list, &Lex->option_list_last);
}
-#line 33893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33979 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 655: /* create_table_option: SEQUENCE_SYM opt_equal choice */
-#line 5574 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 661: /* create_table_option: SEQUENCE_SYM opt_equal choice */
+#line 5674 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.used_fields|= HA_CREATE_USED_SEQUENCE;
Lex->create_info.sequence= ((yyvsp[0].choice) == HA_CHOICE_YES);
}
-#line 33902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 657: /* engine_defined_option: IDENT_sys equal TEXT_STRING_sys */
-#line 5583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 663: /* engine_defined_option: ident_options equal TEXT_STRING_sys */
+#line 5683 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].lex_str).length > ENGINE_OPTION_MAX_LENGTH))
my_yyabort_error((ER_VALUE_TOO_LONG, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys), (yyvsp[0].lex_str), true);
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 33913 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 33999 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 658: /* engine_defined_option: IDENT_sys equal ident */
-#line 5590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 664: /* engine_defined_option: ident_options equal ident */
+#line 5690 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].ident_sys).length > ENGINE_OPTION_MAX_LENGTH))
my_yyabort_error((ER_VALUE_TOO_LONG, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys), (yyvsp[0].ident_sys), false);
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 33924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34010 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 659: /* engine_defined_option: IDENT_sys equal real_ulonglong_num */
-#line 5597 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 665: /* engine_defined_option: ident_options equal real_ulonglong_num */
+#line 5697 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys), (yyvsp[0].ulonglong_number), thd->mem_root);
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 33933 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 660: /* engine_defined_option: IDENT_sys equal DEFAULT */
-#line 5602 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 666: /* engine_defined_option: ident_options equal DEFAULT */
+#line 5702 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.engine_option_value_ptr)= new (thd->mem_root) engine_option_value((yyvsp[-2].ident_sys));
MYSQL_YYABORT_UNLESS((yyval.engine_option_value_ptr));
}
-#line 33942 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34028 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 663: /* versioning_option: WITH_SYSTEM_SYM VERSIONING_SYM */
-#line 5615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 668: /* ident_options: keyword_options */
+#line 5711 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
+ MYSQL_YYABORT;
+ }
+#line 34037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 673: /* versioning_option: WITH_SYSTEM_SYM VERSIONING_SYM */
+#line 5732 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_info.options & HA_LEX_CREATE_TMP_TABLE))
{
@@ -33958,41 +34053,43 @@ yyreduce:
Lex->create_info.options|= HA_VERSIONED_TABLE;
}
}
-#line 33962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 664: /* default_charset: opt_default charset opt_equal charset_name_or_default */
-#line 5634 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 674: /* default_charset: opt_default charset opt_equal charset_name_or_default */
+#line 5751 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->create_info.add_table_option_default_charset((yyvsp[0].charset))))
+ if (unlikely(Lex->create_info.add_table_option_default_charset(
+ thd, thd->variables.character_set_collations, (yyvsp[0].charset))))
MYSQL_YYABORT;
}
-#line 33971 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34067 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 665: /* default_collation: opt_default COLLATE_SYM opt_equal collation_name_or_default */
-#line 5642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 675: /* default_collation: opt_default COLLATE_SYM opt_equal collation_name_or_default */
+#line 5760 "/home/buildbot/git/sql/sql_yacc.yy"
{
Table_specification_st *cinfo= &Lex->create_info;
- if (unlikely(cinfo->add_table_option_default_collation((yyvsp[0].Lex_extended_collation))))
+ if (unlikely(cinfo->add_table_option_default_collation(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_extended_collation))))
MYSQL_YYABORT;
}
-#line 33981 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 666: /* storage_engines: ident_or_text */
-#line 5651 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 676: /* storage_engines: ident_or_text */
+#line 5770 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Storage_engine_name((yyvsp[0].lex_str)).
resolve_storage_engine_with_error(thd, &(yyval.db_type),
thd->lex->create_info.tmp_table()))
MYSQL_YYABORT;
}
-#line 33992 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 667: /* known_storage_engines: ident_or_text */
-#line 5661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 677: /* known_storage_engines: ident_or_text */
+#line 5780 "/home/buildbot/git/sql/sql_yacc.yy"
{
plugin_ref plugin;
if (likely((plugin= ha_resolve_by_name(thd, &(yyvsp[0].lex_str), false))))
@@ -34000,236 +34097,236 @@ yyreduce:
else
my_yyabort_error((ER_UNKNOWN_STORAGE_ENGINE, MYF(0), (yyvsp[0].lex_str).str));
}
-#line 34004 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 668: /* row_types: DEFAULT */
-#line 5671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 678: /* row_types: DEFAULT */
+#line 5790 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_DEFAULT; }
-#line 34010 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34107 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 669: /* row_types: FIXED_SYM */
-#line 5672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 679: /* row_types: FIXED_SYM */
+#line 5791 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_FIXED; }
-#line 34016 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34113 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 670: /* row_types: DYNAMIC_SYM */
-#line 5673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 680: /* row_types: DYNAMIC_SYM */
+#line 5792 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_DYNAMIC; }
-#line 34022 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34119 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 671: /* row_types: COMPRESSED_SYM */
-#line 5674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 681: /* row_types: COMPRESSED_SYM */
+#line 5793 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_COMPRESSED; }
-#line 34028 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34125 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 672: /* row_types: REDUNDANT_SYM */
-#line 5675 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 682: /* row_types: REDUNDANT_SYM */
+#line 5794 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_REDUNDANT; }
-#line 34034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34131 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 673: /* row_types: COMPACT_SYM */
-#line 5676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 683: /* row_types: COMPACT_SYM */
+#line 5795 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_COMPACT; }
-#line 34040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34137 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 674: /* row_types: PAGE_SYM */
-#line 5677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 684: /* row_types: PAGE_SYM */
+#line 5796 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.row_type)= ROW_TYPE_PAGE; }
-#line 34046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34143 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 675: /* merge_insert_types: NO_SYM */
-#line 5681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 685: /* merge_insert_types: NO_SYM */
+#line 5800 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= MERGE_INSERT_DISABLED; }
-#line 34052 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 676: /* merge_insert_types: FIRST_SYM */
-#line 5682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 686: /* merge_insert_types: FIRST_SYM */
+#line 5801 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= MERGE_INSERT_TO_FIRST; }
-#line 34058 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34155 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 677: /* merge_insert_types: LAST_SYM */
-#line 5683 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 687: /* merge_insert_types: LAST_SYM */
+#line 5802 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= MERGE_INSERT_TO_LAST; }
-#line 34064 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 678: /* udf_type: STRING_SYM */
-#line 5687 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 688: /* udf_type: STRING_SYM */
+#line 5806 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) STRING_RESULT; }
-#line 34070 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 679: /* udf_type: REAL */
-#line 5688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 689: /* udf_type: REAL */
+#line 5807 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) REAL_RESULT; }
-#line 34076 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 680: /* udf_type: DECIMAL_SYM */
-#line 5689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 690: /* udf_type: DECIMAL_SYM */
+#line 5808 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) DECIMAL_RESULT; }
-#line 34082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 681: /* udf_type: INT_SYM */
-#line 5690 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 691: /* udf_type: INT_SYM */
+#line 5809 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num) = (int) INT_RESULT; }
-#line 34088 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 682: /* create_field_list: field_list */
-#line 5696 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 692: /* create_field_list: field_list */
+#line 5815 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_last_non_select_table= Lex->last_table();
}
-#line 34096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 683: /* create_field_list_parens: LEFT_PAREN_ALT field_list ')' */
-#line 5703 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 693: /* create_field_list_parens: LEFT_PAREN_ALT field_list ')' */
+#line 5822 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_last_non_select_table= Lex->last_table();
}
-#line 34104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34201 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 686: /* field_list_item: column_def */
-#line 5714 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 696: /* field_list_item: column_def */
+#line 5833 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34207 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 690: /* field_list_item: PERIOD_SYM period_for_application_time */
-#line 5718 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 700: /* field_list_item: PERIOD_SYM period_for_application_time */
+#line 5837 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34213 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 691: /* column_def: field_spec */
-#line 5723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 701: /* column_def: field_spec */
+#line 5842 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.create_field)= (yyvsp[0].create_field); }
-#line 34122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 692: /* column_def: field_spec opt_constraint references */
-#line 5725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 702: /* column_def: field_spec opt_constraint references */
+#line 5844 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_column_foreign_key(&((yyvsp[-2].create_field)->field_name), &(yyvsp[-1].lex_str),
(yyvsp[0].table), DDL_options())))
MYSQL_YYABORT;
(yyval.create_field)= (yyvsp[-2].create_field);
}
-#line 34133 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34230 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 693: /* $@81: %empty */
-#line 5735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 703: /* $@81: %empty */
+#line 5854 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key(Key::MULTIPLE, &(yyvsp[-1].lex_str), (yyvsp[0].key_alg), (yyvsp[-2].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34143 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34240 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 694: /* key_def: key_or_index opt_if_not_exists opt_ident opt_USING_key_algorithm $@81 '(' key_list ')' normal_key_options */
-#line 5740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 704: /* key_def: key_or_index opt_if_not_exists opt_ident opt_USING_key_algorithm $@81 '(' key_list ')' normal_key_options */
+#line 5859 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34246 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 695: /* $@82: %empty */
-#line 5742 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 705: /* $@82: %empty */
+#line 5861 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key(Key::MULTIPLE, &(yyvsp[-2].ident_sys), (yyvsp[0].key_alg), (yyvsp[-3].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34256 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 696: /* key_def: key_or_index opt_if_not_exists ident TYPE_SYM btree_or_rtree $@82 '(' key_list ')' normal_key_options */
-#line 5747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 706: /* key_def: key_or_index opt_if_not_exists ident TYPE_SYM btree_or_rtree $@82 '(' key_list ')' normal_key_options */
+#line 5866 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34165 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34262 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 697: /* $@83: %empty */
-#line 5749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 707: /* $@83: %empty */
+#line 5868 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-3].key_type), &(yyvsp[0].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-1].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34175 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34272 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 698: /* key_def: fulltext opt_key_or_index opt_if_not_exists opt_ident $@83 '(' key_list ')' fulltext_key_options */
-#line 5754 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 708: /* key_def: fulltext opt_key_or_index opt_if_not_exists opt_ident $@83 '(' key_list ')' fulltext_key_options */
+#line 5873 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 699: /* $@84: %empty */
-#line 5756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 709: /* $@84: %empty */
+#line 5875 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-3].key_type), &(yyvsp[0].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-1].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34288 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 700: /* key_def: spatial opt_key_or_index opt_if_not_exists opt_ident $@84 '(' key_list ')' spatial_key_options */
-#line 5761 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 710: /* key_def: spatial opt_key_or_index opt_if_not_exists opt_ident $@84 '(' key_list ')' spatial_key_options */
+#line 5880 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34197 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34294 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 701: /* $@85: %empty */
-#line 5765 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 711: /* $@85: %empty */
+#line 5884 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-3].key_type), (yyvsp[-1].lex_str).str ? &(yyvsp[-1].lex_str) : &(yyvsp[-4].lex_str), (yyvsp[0].key_alg), (yyvsp[-2].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34207 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34304 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 702: /* key_def: opt_constraint constraint_key_type opt_if_not_exists opt_ident opt_USING_key_algorithm $@85 '(' key_list opt_without_overlaps ')' normal_key_options */
-#line 5770 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 712: /* key_def: opt_constraint constraint_key_type opt_if_not_exists opt_ident opt_USING_key_algorithm $@85 '(' key_list opt_without_overlaps ')' normal_key_options */
+#line 5889 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34213 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34310 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 703: /* $@86: %empty */
-#line 5773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 713: /* $@86: %empty */
+#line 5892 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_list= NULL;
if (unlikely(Lex->add_key((yyvsp[-4].key_type), (yyvsp[-2].ident_sys).str ? &(yyvsp[-2].ident_sys) : &(yyvsp[-5].lex_str), (yyvsp[0].key_alg), (yyvsp[-3].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34223 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 704: /* key_def: opt_constraint constraint_key_type opt_if_not_exists ident TYPE_SYM btree_or_rtree $@86 '(' key_list opt_without_overlaps ')' normal_key_options */
-#line 5778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 714: /* key_def: opt_constraint constraint_key_type opt_if_not_exists ident TYPE_SYM btree_or_rtree $@86 '(' key_list opt_without_overlaps ')' normal_key_options */
+#line 5897 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 34229 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 705: /* $@87: %empty */
-#line 5780 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 715: /* $@87: %empty */
+#line 5899 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->check_add_key((yyvsp[-1].object_ddl_options))) ||
unlikely(!(Lex->last_key= (new (thd->mem_root)
@@ -34239,100 +34336,100 @@ yyreduce:
MYSQL_YYABORT;
Lex->option_list= NULL;
}
-#line 34243 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34340 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 706: /* key_def: opt_constraint FOREIGN KEY_SYM opt_if_not_exists opt_ident $@87 '(' key_list ')' references */
-#line 5790 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 716: /* key_def: opt_constraint FOREIGN KEY_SYM opt_if_not_exists opt_ident $@87 '(' key_list ')' references */
+#line 5909 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_table_foreign_key((yyvsp[-5].lex_str).str ? &(yyvsp[-5].lex_str) : &(yyvsp[-9].lex_str),
(yyvsp[-9].lex_str).str ? &(yyvsp[-9].lex_str) : &(yyvsp[-5].lex_str), (yyvsp[0].table), (yyvsp[-6].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 34253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34350 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 707: /* constraint_def: opt_constraint check_constraint */
-#line 5799 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 717: /* constraint_def: opt_constraint check_constraint */
+#line 5918 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->add_constraint((yyvsp[-1].lex_str), (yyvsp[0].virtual_column), FALSE);
}
-#line 34261 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 708: /* period_for_system_time: PERIOD_SYM FOR_SYSTEM_TIME_SYM '(' ident ',' ident ')' */
-#line 5807 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 718: /* period_for_system_time: PERIOD_SYM FOR_SYSTEM_TIME_SYM '(' ident ',' ident ')' */
+#line 5926 "/home/buildbot/git/sql/sql_yacc.yy"
{
Vers_parse_info &info= Lex->vers_get_info();
info.set_period((yyvsp[-3].ident_sys), (yyvsp[-1].ident_sys));
}
-#line 34270 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34367 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 709: /* period_for_application_time: FOR_SYM ident '(' ident ',' ident ')' */
-#line 5815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 719: /* period_for_application_time: FOR_SYM ident '(' ident ',' ident ')' */
+#line 5934 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->add_period((yyvsp[-5].ident_sys), (yyvsp[-3].ident_sys), (yyvsp[-1].ident_sys)))
MYSQL_YYABORT;
}
-#line 34279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34376 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 710: /* opt_check_constraint: %empty */
-#line 5822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 720: /* opt_check_constraint: %empty */
+#line 5941 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.virtual_column)= (Virtual_column_info*) 0; }
-#line 34285 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34382 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 711: /* opt_check_constraint: check_constraint */
-#line 5823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 721: /* opt_check_constraint: check_constraint */
+#line 5942 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.virtual_column)= (yyvsp[0].virtual_column);}
-#line 34291 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34388 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 712: /* check_constraint: CHECK_SYM '(' expr ')' */
-#line 5828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 722: /* check_constraint: CHECK_SYM '(' expr ')' */
+#line 5947 "/home/buildbot/git/sql/sql_yacc.yy"
{
Virtual_column_info *v= add_virtual_expression(thd, (yyvsp[-1].item));
if (unlikely(!v))
MYSQL_YYABORT;
(yyval.virtual_column)= v;
}
-#line 34302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34399 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 713: /* opt_constraint_no_id: %empty */
-#line 5837 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 723: /* opt_constraint_no_id: %empty */
+#line 5956 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34405 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 714: /* opt_constraint_no_id: CONSTRAINT */
-#line 5838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 724: /* opt_constraint_no_id: CONSTRAINT */
+#line 5957 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34314 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 715: /* opt_constraint: %empty */
-#line 5842 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 725: /* opt_constraint: %empty */
+#line 5961 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 34320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34417 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 716: /* opt_constraint: constraint */
-#line 5843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 726: /* opt_constraint: constraint */
+#line 5962 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].lex_str); }
-#line 34326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34423 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 717: /* constraint: CONSTRAINT opt_ident */
-#line 5847 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 727: /* constraint: CONSTRAINT opt_ident */
+#line 5966 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str); }
-#line 34332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34429 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 718: /* @88: %empty */
-#line 5852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 728: /* @88: %empty */
+#line 5971 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Create_field *f= new (thd->mem_root) Create_field();
@@ -34348,11 +34445,11 @@ yyreduce:
(yyval.create_field)= f;
lex->parsing_options.lookup_keywords_after_qualifier= true;
}
-#line 34352 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34449 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 719: /* field_spec: field_ident @88 field_type_or_serial opt_check_constraint */
-#line 5868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 729: /* field_spec: field_ident @88 field_type_or_serial opt_check_constraint */
+#line 5987 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->parsing_options.lookup_keywords_after_qualifier= false;
@@ -34371,231 +34468,235 @@ yyreduce:
else if ((yyval.create_field)->flags & UNIQUE_KEY_FLAG)
lex->add_key_to_list(&(yyvsp[-3].lex_str), Key::UNIQUE, lex->check_exists);
}
-#line 34375 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34472 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 720: /* $@89: %empty */
-#line 5890 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 730: /* $@89: %empty */
+#line 6009 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[0].Lex_field_type),
COLUMN_DEFINITION_TABLE_FIELD);
}
-#line 34384 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34481 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 721: /* field_type_or_serial: qualified_field_type $@89 field_def */
-#line 5895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 731: /* field_type_or_serial: qualified_field_type $@89 field_def */
+#line 6014 "/home/buildbot/git/sql/sql_yacc.yy"
{
auto tmp= (yyvsp[-2].Lex_field_type).charset_collation_attrs();
- if (tmp.merge_column_charset_clause_and_collate_clause((yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
+ if (tmp.merge_column_charset_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
MYSQL_YYABORT;
- Lex->last_field->set_charset_collation_attrs(tmp);
+ Lex->last_field->set_charset_collation_attrs(
+ thd, thd->variables.character_set_collations,
+ tmp);
}
-#line 34395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 722: /* $@90: %empty */
-#line 5902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 732: /* $@90: %empty */
+#line 6024 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_handler(&type_handler_ulonglong);
Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG
| UNSIGNED_FLAG | UNIQUE_KEY_FLAG;
Lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 34406 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34506 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 724: /* opt_serial_attribute: %empty */
-#line 5912 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 734: /* opt_serial_attribute: %empty */
+#line 6034 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34412 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34512 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 725: /* opt_serial_attribute: opt_serial_attribute_list */
-#line 5913 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 735: /* opt_serial_attribute: opt_serial_attribute_list */
+#line 6035 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34418 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 726: /* opt_serial_attribute_list: opt_serial_attribute_list serial_attribute */
-#line 5917 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 736: /* opt_serial_attribute_list: opt_serial_attribute_list serial_attribute */
+#line 6039 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34524 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 728: /* opt_asrow_attribute: %empty */
-#line 5922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 738: /* opt_asrow_attribute: %empty */
+#line 6044 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 729: /* opt_asrow_attribute: opt_asrow_attribute_list */
-#line 5923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 739: /* opt_asrow_attribute: opt_asrow_attribute_list */
+#line 6045 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34436 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34536 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 730: /* opt_asrow_attribute_list: opt_asrow_attribute_list asrow_attribute */
-#line 5927 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 740: /* opt_asrow_attribute_list: opt_asrow_attribute_list asrow_attribute */
+#line 6049 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34442 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34542 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 732: /* field_def: %empty */
-#line 5932 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 742: /* field_def: %empty */
+#line 6054 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 34448 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34548 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 734: /* field_def: attribute_list compressed_deprecated_column_attribute */
-#line 5934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 744: /* field_def: attribute_list compressed_deprecated_column_attribute */
+#line 6056 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs); }
-#line 34454 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34554 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 735: /* field_def: attribute_list compressed_deprecated_column_attribute attribute_list */
-#line 5936 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 745: /* field_def: attribute_list compressed_deprecated_column_attribute attribute_list */
+#line 6058 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-2].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause((yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
+ if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-2].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
MYSQL_YYABORT;
}
-#line 34463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34564 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 736: /* $@91: %empty */
-#line 5941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 746: /* $@91: %empty */
+#line 6064 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->vcol_info= (yyvsp[0].virtual_column);
}
-#line 34471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34572 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 737: /* field_def: opt_generated_always AS virtual_column_func $@91 vcol_opt_specifier vcol_opt_attribute */
-#line 5945 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 747: /* field_def: opt_generated_always AS virtual_column_func $@91 vcol_opt_specifier vcol_opt_attribute */
+#line 6068 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 34479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 738: /* field_def: opt_generated_always AS ROW_SYM START_SYM opt_asrow_attribute */
-#line 5949 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 748: /* field_def: opt_generated_always AS ROW_SYM START_SYM opt_asrow_attribute */
+#line 6072 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->last_field_generated_always_as_row_start())
MYSQL_YYABORT;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 34489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34590 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 739: /* field_def: opt_generated_always AS ROW_SYM END opt_asrow_attribute */
-#line 5955 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 749: /* field_def: opt_generated_always AS ROW_SYM END opt_asrow_attribute */
+#line 6078 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->last_field_generated_always_as_row_end())
MYSQL_YYABORT;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 34499 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34600 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 740: /* opt_generated_always: %empty */
-#line 5963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 750: /* opt_generated_always: %empty */
+#line 6086 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34505 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 741: /* opt_generated_always: GENERATED_SYM ALWAYS_SYM */
-#line 5964 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 751: /* opt_generated_always: GENERATED_SYM ALWAYS_SYM */
+#line 6087 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34511 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34612 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 742: /* vcol_opt_specifier: %empty */
-#line 5969 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 752: /* vcol_opt_specifier: %empty */
+#line 6092 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
}
-#line 34519 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 743: /* vcol_opt_specifier: VIRTUAL_SYM */
-#line 5973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 753: /* vcol_opt_specifier: VIRTUAL_SYM */
+#line 6096 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_VIRTUAL);
}
-#line 34527 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34628 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 744: /* vcol_opt_specifier: PERSISTENT_SYM */
-#line 5977 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 754: /* vcol_opt_specifier: PERSISTENT_SYM */
+#line 6100 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_STORED);
}
-#line 34535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 745: /* vcol_opt_specifier: STORED_SYM */
-#line 5981 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 755: /* vcol_opt_specifier: STORED_SYM */
+#line 6104 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE);
+ Lex->last_field->vcol_info->set_vcol_type(VCOL_GENERATED_STORED);
}
-#line 34543 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34644 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 746: /* vcol_opt_attribute: %empty */
-#line 5987 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 756: /* vcol_opt_attribute: %empty */
+#line 6110 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34549 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34650 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 747: /* vcol_opt_attribute: vcol_opt_attribute_list */
-#line 5988 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 757: /* vcol_opt_attribute: vcol_opt_attribute_list */
+#line 6111 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34555 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34656 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 748: /* vcol_opt_attribute_list: vcol_opt_attribute_list vcol_attribute */
-#line 5992 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 758: /* vcol_opt_attribute_list: vcol_opt_attribute_list vcol_attribute */
+#line 6115 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 34561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34662 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 750: /* vcol_attribute: UNIQUE_SYM */
-#line 5998 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 760: /* vcol_attribute: UNIQUE_SYM */
+#line 6121 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= UNIQUE_KEY_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 34571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34672 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 751: /* vcol_attribute: UNIQUE_SYM KEY_SYM */
-#line 6004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 761: /* vcol_attribute: UNIQUE_SYM KEY_SYM */
+#line 6127 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= UNIQUE_KEY_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 34581 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34682 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 752: /* vcol_attribute: COMMENT_SYM TEXT_STRING_sys */
-#line 6009 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 762: /* vcol_attribute: COMMENT_SYM TEXT_STRING_sys */
+#line 6132 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->comment= (yyvsp[0].lex_str); }
-#line 34587 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34688 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 753: /* vcol_attribute: INVISIBLE_SYM */
-#line 6011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 763: /* vcol_attribute: INVISIBLE_SYM */
+#line 6134 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->invisible= INVISIBLE_USER;
}
-#line 34595 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34696 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 754: /* $@92: %empty */
-#line 6018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 764: /* $@92: %empty */
+#line 6141 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
"PARSE_VCOL_EXPR" can only be used by the SQL server
@@ -34606,11 +34707,11 @@ yyreduce:
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 34610 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34711 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 755: /* parse_vcol_expr: PARSE_VCOL_EXPR_SYM $@92 expr */
-#line 6029 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 765: /* parse_vcol_expr: PARSE_VCOL_EXPR_SYM $@92 expr */
+#line 6152 "/home/buildbot/git/sql/sql_yacc.yy"
{
Virtual_column_info *v= add_virtual_expression(thd, (yyvsp[0].item));
if (unlikely(!v))
@@ -34618,22 +34719,22 @@ yyreduce:
Lex->last_field->vcol_info= v;
Lex->pop_select(); //main select
}
-#line 34622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34723 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 757: /* parenthesized_expr: expr ',' expr_list */
-#line 6041 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 767: /* parenthesized_expr: expr ',' expr_list */
+#line 6164 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].item_list)->push_front((yyvsp[-2].item), thd->mem_root);
(yyval.item)= new (thd->mem_root) Item_row(thd, *(yyvsp[0].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 34633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 758: /* virtual_column_func: '(' parenthesized_expr ')' */
-#line 6051 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 768: /* virtual_column_func: '(' parenthesized_expr ')' */
+#line 6174 "/home/buildbot/git/sql/sql_yacc.yy"
{
Virtual_column_info *v=
add_virtual_expression(thd, (yyvsp[-1].item));
@@ -34641,11 +34742,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.virtual_column)= v;
}
-#line 34645 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34746 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 759: /* virtual_column_func: subquery */
-#line 6059 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 769: /* virtual_column_func: subquery */
+#line 6182 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item;
if (!(item= new (thd->mem_root) Item_singlerow_subselect(thd, (yyvsp[0].select_lex))))
@@ -34655,86 +34756,86 @@ yyreduce:
MYSQL_YYABORT;
(yyval.virtual_column)= v;
}
-#line 34659 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 763: /* column_default_expr: expr_or_literal */
-#line 6075 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 773: /* column_default_expr: expr_or_literal */
+#line 6198 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.virtual_column)= add_virtual_expression(thd, (yyvsp[0].item)))))
MYSQL_YYABORT;
}
-#line 34668 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34769 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 764: /* field_type: field_type_all */
-#line 6082 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 774: /* field_type: field_type_all */
+#line 6205 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->map_data_type(Lex_ident_sys(), &((yyval.Lex_field_type)= (yyvsp[0].Lex_field_type)));
}
-#line 34676 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 765: /* qualified_field_type: field_type_all */
-#line 6089 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 775: /* qualified_field_type: field_type_all */
+#line 6212 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->map_data_type(Lex_ident_sys(), &((yyval.Lex_field_type)= (yyvsp[0].Lex_field_type)));
}
-#line 34684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34785 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 766: /* qualified_field_type: sp_decl_ident '.' field_type_all */
-#line 6093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 776: /* qualified_field_type: sp_decl_ident '.' field_type_all */
+#line 6216 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->map_data_type((yyvsp[-2].ident_sys), &((yyval.Lex_field_type)= (yyvsp[0].Lex_field_type))))
MYSQL_YYABORT;
}
-#line 34693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34794 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 767: /* udt_name: IDENT_sys */
-#line 6100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 777: /* udt_name: IDENT_sys */
+#line 6223 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 34699 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34800 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 768: /* udt_name: reserved_keyword_udt */
-#line 6101 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 778: /* udt_name: reserved_keyword_udt */
+#line 6224 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].kwd); }
-#line 34705 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34806 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 769: /* udt_name: non_reserved_keyword_udt */
-#line 6102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 779: /* udt_name: non_reserved_keyword_udt */
+#line 6225 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].kwd); }
-#line 34711 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34812 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 775: /* field_type_all: udt_name float_options srid_option */
-#line 6112 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 785: /* field_type_all: udt_name float_options srid_option */
+#line 6235 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->set_field_type_udt(&(yyval.Lex_field_type), (yyvsp[-2].lex_str), (yyvsp[-1].Lex_length_and_dec)))
MYSQL_YYABORT;
}
-#line 34720 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34821 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 776: /* field_type_numeric: int_type opt_field_length last_field_options */
-#line 6120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 786: /* field_type_numeric: int_type opt_field_length last_field_options */
+#line 6243 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set_handler_length_flags((yyvsp[-2].type_handler), (yyvsp[-1].Lex_length_and_dec), (uint32) (yyvsp[0].ulong_num));
}
-#line 34728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 777: /* field_type_numeric: real_type opt_precision last_field_options */
-#line 6123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 787: /* field_type_numeric: real_type opt_precision last_field_options */
+#line 6246 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set((yyvsp[-2].type_handler), (yyvsp[-1].Lex_length_and_dec)); }
-#line 34734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34835 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 778: /* field_type_numeric: FLOAT_SYM float_options last_field_options */
-#line 6125 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 788: /* field_type_numeric: FLOAT_SYM float_options last_field_options */
+#line 6248 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_float, (yyvsp[-1].Lex_length_and_dec));
if ((yyvsp[-1].Lex_length_and_dec).has_explicit_length() && !(yyvsp[-1].Lex_length_and_dec).has_explicit_dec())
@@ -34748,154 +34849,154 @@ yyreduce:
(yyval.Lex_field_type).set(&type_handler_float);
}
}
-#line 34752 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 779: /* field_type_numeric: BIT_SYM opt_field_length */
-#line 6139 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 789: /* field_type_numeric: BIT_SYM opt_field_length */
+#line 6262 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_bit, (yyvsp[0].Lex_length_and_dec));
}
-#line 34760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34861 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 780: /* field_type_numeric: BOOL_SYM */
-#line 6143 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 790: /* field_type_numeric: BOOL_SYM */
+#line 6266 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set_handler_length(&type_handler_stiny, 1);
}
-#line 34768 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34869 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 781: /* field_type_numeric: BOOLEAN_SYM */
-#line 6147 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 791: /* field_type_numeric: BOOLEAN_SYM */
+#line 6270 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set_handler_length(&type_handler_stiny, 1);
}
-#line 34776 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34877 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 782: /* field_type_numeric: DECIMAL_SYM float_options last_field_options */
-#line 6151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 792: /* field_type_numeric: DECIMAL_SYM float_options last_field_options */
+#line 6274 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));}
-#line 34782 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34883 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 783: /* field_type_numeric: NUMBER_ORACLE_SYM float_options last_field_options */
-#line 6153 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 793: /* field_type_numeric: NUMBER_ORACLE_SYM float_options last_field_options */
+#line 6276 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-1].Lex_length_and_dec).has_explicit_length())
(yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));
else
(yyval.Lex_field_type).set(&type_handler_double);
}
-#line 34793 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34894 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 784: /* field_type_numeric: NUMERIC_SYM float_options last_field_options */
-#line 6160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 794: /* field_type_numeric: NUMERIC_SYM float_options last_field_options */
+#line 6283 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));}
-#line 34799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34900 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 785: /* field_type_numeric: FIXED_SYM float_options last_field_options */
-#line 6162 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 795: /* field_type_numeric: FIXED_SYM float_options last_field_options */
+#line 6285 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdecimal, (yyvsp[-1].Lex_length_and_dec));}
-#line 34805 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34906 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 786: /* opt_binary_and_compression: %empty */
-#line 6167 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 796: /* opt_binary_and_compression: %empty */
+#line 6290 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 34811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34912 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 787: /* opt_binary_and_compression: binary */
-#line 6168 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 797: /* opt_binary_and_compression: binary */
+#line 6291 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[0].Lex_exact_charset_extended_collation_attrs); }
-#line 34817 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 788: /* opt_binary_and_compression: binary compressed_deprecated_data_type_attribute */
-#line 6169 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 798: /* opt_binary_and_compression: binary compressed_deprecated_data_type_attribute */
+#line 6292 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs); }
-#line 34823 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 789: /* opt_binary_and_compression: compressed opt_binary */
-#line 6170 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 799: /* opt_binary_and_compression: compressed opt_binary */
+#line 6293 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[0].Lex_exact_charset_extended_collation_attrs); }
-#line 34829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34930 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 790: /* field_type_string: char opt_field_length opt_binary */
-#line 6175 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 800: /* field_type_string: char opt_field_length opt_binary */
+#line 6298 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_string, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs));
}
-#line 34837 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34938 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 791: /* field_type_string: nchar opt_field_length opt_bin_mod */
-#line 6179 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 801: /* field_type_string: nchar opt_field_length opt_bin_mod */
+#line 6302 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_string, (yyvsp[-1].Lex_length_and_dec),
Lex_exact_charset_extended_collation_attrs::national((yyvsp[0].num)));
}
-#line 34846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34947 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 792: /* field_type_string: BINARY opt_field_length */
-#line 6184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 802: /* field_type_string: BINARY opt_field_length */
+#line 6307 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_string, (yyvsp[0].Lex_length_and_dec), &my_charset_bin);
}
-#line 34854 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34955 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 793: /* field_type_string: varchar opt_field_length opt_binary_and_compression */
-#line 6188 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 803: /* field_type_string: varchar opt_field_length opt_binary_and_compression */
+#line 6311 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs));
}
-#line 34862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34963 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 794: /* field_type_string: VARCHAR2_ORACLE_SYM opt_field_length opt_binary_and_compression */
-#line 6192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 804: /* field_type_string: VARCHAR2_ORACLE_SYM opt_field_length opt_binary_and_compression */
+#line 6315 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs));
}
-#line 34870 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34971 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 795: /* field_type_string: nvarchar opt_field_length opt_compressed opt_bin_mod */
-#line 6196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 805: /* field_type_string: nvarchar opt_field_length opt_compressed opt_bin_mod */
+#line 6319 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-2].Lex_length_and_dec),
Lex_exact_charset_extended_collation_attrs::national((yyvsp[0].num)));
}
-#line 34879 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 796: /* field_type_string: VARBINARY opt_field_length opt_compressed */
-#line 6201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 806: /* field_type_string: VARBINARY opt_field_length opt_compressed */
+#line 6324 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 34887 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 797: /* field_type_string: RAW_ORACLE_SYM opt_field_length opt_compressed */
-#line 6205 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 807: /* field_type_string: RAW_ORACLE_SYM opt_field_length opt_compressed */
+#line 6328 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_varchar, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 34895 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 34996 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 798: /* field_type_temporal: YEAR_SYM opt_field_length last_field_options */
-#line 6212 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 808: /* field_type_temporal: YEAR_SYM opt_field_length last_field_options */
+#line 6335 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-1].Lex_length_and_dec).has_explicit_length())
{
@@ -34903,441 +35004,439 @@ yyreduce:
{
char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1];
my_snprintf(buff, sizeof(buff), "YEAR(%u)", (uint) (yyvsp[-1].Lex_length_and_dec).length());
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- buff, "YEAR(4)");
+ warn_deprecated<1007>(thd, buff, "YEAR(4)");
}
}
(yyval.Lex_field_type).set(&type_handler_year, (yyvsp[-1].Lex_length_and_dec));
}
-#line 34915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 799: /* field_type_temporal: DATE_SYM */
-#line 6227 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 809: /* field_type_temporal: DATE_SYM */
+#line 6347 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_newdate); }
-#line 34921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 800: /* field_type_temporal: TIME_SYM opt_field_length */
-#line 6229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 810: /* field_type_temporal: TIME_SYM opt_field_length */
+#line 6349 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(opt_mysql56_temporal_format ?
static_cast<const Type_handler*>(&type_handler_time2) :
static_cast<const Type_handler*>(&type_handler_time),
(yyvsp[0].Lex_length_and_dec));
}
-#line 34932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 801: /* field_type_temporal: TIMESTAMP opt_field_length */
-#line 6236 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 811: /* field_type_temporal: TIMESTAMP opt_field_length */
+#line 6356 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(opt_mysql56_temporal_format ?
static_cast<const Type_handler*>(&type_handler_timestamp2):
static_cast<const Type_handler*>(&type_handler_timestamp),
(yyvsp[0].Lex_length_and_dec));
}
-#line 34943 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35041 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 802: /* field_type_temporal: DATETIME opt_field_length */
-#line 6243 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 812: /* field_type_temporal: DATETIME opt_field_length */
+#line 6363 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(thd->type_handler_for_datetime(), (yyvsp[0].Lex_length_and_dec));
}
-#line 34951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 803: /* field_type_lob: TINYBLOB opt_compressed */
-#line 6251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 813: /* field_type_lob: TINYBLOB opt_compressed */
+#line 6371 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_tiny_blob, &my_charset_bin);
}
-#line 34959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 804: /* field_type_lob: BLOB_MARIADB_SYM opt_field_length opt_compressed */
-#line 6255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 814: /* field_type_lob: BLOB_MARIADB_SYM opt_field_length opt_compressed */
+#line 6375 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_blob, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 34967 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35065 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 805: /* field_type_lob: BLOB_ORACLE_SYM field_length opt_compressed */
-#line 6259 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 815: /* field_type_lob: BLOB_ORACLE_SYM field_length opt_compressed */
+#line 6379 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_blob, (yyvsp[-1].Lex_length_and_dec), &my_charset_bin);
}
-#line 34975 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 806: /* field_type_lob: BLOB_ORACLE_SYM opt_compressed */
-#line 6263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 816: /* field_type_lob: BLOB_ORACLE_SYM opt_compressed */
+#line 6383 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_long_blob, &my_charset_bin);
}
-#line 34983 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35081 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 807: /* field_type_lob: MEDIUMBLOB opt_compressed */
-#line 6267 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 817: /* field_type_lob: MEDIUMBLOB opt_compressed */
+#line 6387 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_medium_blob, &my_charset_bin);
}
-#line 34991 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 808: /* field_type_lob: LONGBLOB opt_compressed */
-#line 6271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 818: /* field_type_lob: LONGBLOB opt_compressed */
+#line 6391 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_long_blob, &my_charset_bin);
}
-#line 34999 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35097 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 809: /* field_type_lob: LONG_SYM VARBINARY opt_compressed */
-#line 6275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 819: /* field_type_lob: LONG_SYM VARBINARY opt_compressed */
+#line 6395 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_medium_blob, &my_charset_bin);
}
-#line 35007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 810: /* field_type_lob: LONG_SYM varchar opt_binary_and_compression */
-#line 6279 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 820: /* field_type_lob: LONG_SYM varchar opt_binary_and_compression */
+#line 6399 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_medium_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35111 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 811: /* field_type_lob: TINYTEXT opt_binary_and_compression */
-#line 6281 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 821: /* field_type_lob: TINYTEXT opt_binary_and_compression */
+#line 6401 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_tiny_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35117 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 812: /* field_type_lob: TEXT_SYM opt_field_length opt_binary_and_compression */
-#line 6283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 822: /* field_type_lob: TEXT_SYM opt_field_length opt_binary_and_compression */
+#line 6403 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35025 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35123 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 813: /* field_type_lob: MEDIUMTEXT opt_binary_and_compression */
-#line 6285 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 823: /* field_type_lob: MEDIUMTEXT opt_binary_and_compression */
+#line 6405 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_medium_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35031 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 814: /* field_type_lob: LONGTEXT opt_binary_and_compression */
-#line 6287 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 824: /* field_type_lob: LONGTEXT opt_binary_and_compression */
+#line 6407 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_long_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35135 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 815: /* field_type_lob: CLOB_ORACLE_SYM opt_binary_and_compression */
-#line 6289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 825: /* field_type_lob: CLOB_ORACLE_SYM opt_binary_and_compression */
+#line 6409 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_long_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35043 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 816: /* field_type_lob: LONG_SYM opt_binary_and_compression */
-#line 6291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 826: /* field_type_lob: LONG_SYM opt_binary_and_compression */
+#line 6411 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_medium_blob, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35147 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 817: /* field_type_lob: JSON_SYM opt_compressed */
-#line 6293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 827: /* field_type_lob: JSON_SYM opt_compressed */
+#line 6413 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_field_type).set(&type_handler_long_blob_json, &my_charset_utf8mb4_bin);
}
-#line 35057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35155 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 818: /* field_type_misc: ENUM '(' string_list ')' opt_binary */
-#line 6300 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 828: /* field_type_misc: ENUM '(' string_list ')' opt_binary */
+#line 6420 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_enum, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35063 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 819: /* field_type_misc: SET '(' string_list ')' opt_binary */
-#line 6302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 829: /* field_type_misc: SET '(' string_list ')' opt_binary */
+#line 6422 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_field_type).set(&type_handler_set, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)); }
-#line 35069 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 820: /* char: CHAR_SYM */
-#line 6306 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 830: /* char: CHAR_SYM */
+#line 6426 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 821: /* nchar: NCHAR_SYM */
-#line 6310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 831: /* nchar: NCHAR_SYM */
+#line 6430 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35081 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 822: /* nchar: NATIONAL_SYM CHAR_SYM */
-#line 6311 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 832: /* nchar: NATIONAL_SYM CHAR_SYM */
+#line 6431 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35087 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 823: /* varchar: char VARYING */
-#line 6315 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 833: /* varchar: char VARYING */
+#line 6435 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 824: /* varchar: VARCHAR */
-#line 6316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 834: /* varchar: VARCHAR */
+#line 6436 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35197 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 825: /* nvarchar: NATIONAL_SYM VARCHAR */
-#line 6320 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 835: /* nvarchar: NATIONAL_SYM VARCHAR */
+#line 6440 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 826: /* nvarchar: NVARCHAR_SYM */
-#line 6321 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 836: /* nvarchar: NVARCHAR_SYM */
+#line 6441 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35111 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 827: /* nvarchar: NCHAR_SYM VARCHAR */
-#line 6322 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 837: /* nvarchar: NCHAR_SYM VARCHAR */
+#line 6442 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35117 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 828: /* nvarchar: NATIONAL_SYM CHAR_SYM VARYING */
-#line 6323 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 838: /* nvarchar: NATIONAL_SYM CHAR_SYM VARYING */
+#line 6443 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35123 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35221 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 829: /* nvarchar: NCHAR_SYM VARYING */
-#line 6324 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 839: /* nvarchar: NCHAR_SYM VARYING */
+#line 6444 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 830: /* int_type: INT_SYM */
-#line 6328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 840: /* int_type: INT_SYM */
+#line 6448 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_slong; }
-#line 35135 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35233 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 831: /* int_type: TINYINT */
-#line 6329 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 841: /* int_type: TINYINT */
+#line 6449 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_stiny; }
-#line 35141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35239 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 832: /* int_type: SMALLINT */
-#line 6330 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 842: /* int_type: SMALLINT */
+#line 6450 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_sshort; }
-#line 35147 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 833: /* int_type: MEDIUMINT */
-#line 6331 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 843: /* int_type: MEDIUMINT */
+#line 6451 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_sint24; }
-#line 35153 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35251 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 834: /* int_type: BIGINT */
-#line 6332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 844: /* int_type: BIGINT */
+#line 6452 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_slonglong; }
-#line 35159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35257 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 835: /* real_type: REAL */
-#line 6337 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 845: /* real_type: REAL */
+#line 6457 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.type_handler)= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ?
static_cast<const Type_handler *>(&type_handler_float) :
static_cast<const Type_handler *>(&type_handler_double);
}
-#line 35169 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35267 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 836: /* real_type: DOUBLE_SYM */
-#line 6342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 846: /* real_type: DOUBLE_SYM */
+#line 6462 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_double; }
-#line 35175 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 837: /* real_type: DOUBLE_SYM PRECISION */
-#line 6343 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 847: /* real_type: DOUBLE_SYM PRECISION */
+#line 6463 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.type_handler)= &type_handler_double; }
-#line 35181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 838: /* srid_option: %empty */
-#line 6348 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 848: /* srid_option: %empty */
+#line 6468 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->srid= 0; }
-#line 35187 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35285 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 839: /* srid_option: REF_SYSTEM_ID_SYM '=' NUM */
-#line 6351 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 849: /* srid_option: REF_SYSTEM_ID_SYM '=' NUM */
+#line 6471 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->srid=atoi((yyvsp[0].lex_str).str);
}
-#line 35195 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35293 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 840: /* float_options: %empty */
-#line 6357 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 850: /* float_options: %empty */
+#line 6477 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); }
-#line 35201 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 843: /* precision: '(' NUM ',' NUM ')' */
-#line 6363 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 853: /* precision: '(' NUM ',' NUM ')' */
+#line 6483 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).set((yyvsp[-3].lex_str).str, (yyvsp[-1].lex_str).str); }
-#line 35207 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 844: /* field_options: %empty */
-#line 6367 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 854: /* field_options: %empty */
+#line 6487 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35213 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35311 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 845: /* field_options: SIGNED_SYM */
-#line 6368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 855: /* field_options: SIGNED_SYM */
+#line 6488 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35317 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 846: /* field_options: UNSIGNED */
-#line 6369 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 856: /* field_options: UNSIGNED */
+#line 6489 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG; }
-#line 35225 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 847: /* field_options: ZEROFILL */
-#line 6370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 857: /* field_options: ZEROFILL */
+#line 6490 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG | ZEROFILL_FLAG; }
-#line 35231 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35329 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 848: /* field_options: UNSIGNED ZEROFILL */
-#line 6371 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 858: /* field_options: UNSIGNED ZEROFILL */
+#line 6491 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG | ZEROFILL_FLAG; }
-#line 35237 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 849: /* field_options: ZEROFILL UNSIGNED */
-#line 6372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 859: /* field_options: ZEROFILL UNSIGNED */
+#line 6492 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= UNSIGNED_FLAG | ZEROFILL_FLAG; }
-#line 35243 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 850: /* last_field_options: field_options */
-#line 6376 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 860: /* last_field_options: field_options */
+#line 6496 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->flags|= ((yyval.ulong_num)= (yyvsp[0].ulong_num)); }
-#line 35249 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 851: /* field_length_str: '(' LONG_NUM ')' */
-#line 6380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 861: /* field_length_str: '(' LONG_NUM ')' */
+#line 6500 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 35255 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35353 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 852: /* field_length_str: '(' ULONGLONG_NUM ')' */
-#line 6381 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 862: /* field_length_str: '(' ULONGLONG_NUM ')' */
+#line 6501 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 35261 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 853: /* field_length_str: '(' DECIMAL_NUM ')' */
-#line 6382 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 863: /* field_length_str: '(' DECIMAL_NUM ')' */
+#line 6502 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 35267 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 854: /* field_length_str: '(' NUM ')' */
-#line 6383 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 864: /* field_length_str: '(' NUM ')' */
+#line 6503 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[-1].lex_str).str; }
-#line 35273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 855: /* field_length: field_length_str */
-#line 6386 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 865: /* field_length: field_length_str */
+#line 6506 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).set((yyvsp[0].const_simple_string), NULL); }
-#line 35279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 856: /* field_scale: field_length_str */
-#line 6390 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 866: /* field_scale: field_length_str */
+#line 6510 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).set(NULL, (yyvsp[0].const_simple_string)); }
-#line 35285 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 857: /* opt_field_length: %empty */
-#line 6395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 867: /* opt_field_length: %empty */
+#line 6515 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); /* use default length */ }
-#line 35291 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 859: /* opt_field_scale: %empty */
-#line 6400 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 869: /* opt_field_scale: %empty */
+#line 6520 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); }
-#line 35297 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 861: /* opt_precision: %empty */
-#line 6405 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 871: /* opt_precision: %empty */
+#line 6525 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec).reset(); }
-#line 35303 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35401 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 862: /* opt_precision: precision */
-#line 6406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 872: /* opt_precision: precision */
+#line 6526 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_length_and_dec)= (yyvsp[0].Lex_length_and_dec); }
-#line 35309 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35407 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 863: /* attribute_list: attribute_list attribute */
-#line 6412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 873: /* attribute_list: attribute_list attribute */
+#line 6532 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause((yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
- MYSQL_YYABORT;
+ if (((yyval.Lex_exact_charset_extended_collation_attrs)= (yyvsp[-1].Lex_exact_charset_extended_collation_attrs)).merge_column_collate_clause_and_collate_clause(
+ thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs)))
+ MYSQL_YYABORT;
}
-#line 35318 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35417 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 865: /* attribute: NULL_SYM */
-#line 6421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 875: /* attribute: NULL_SYM */
+#line 6542 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->flags&= ~NOT_NULL_FLAG;
Lex->last_field->explicitly_nullable= true;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35328 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35427 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 866: /* attribute: DEFAULT column_default_expr */
-#line 6427 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 876: /* attribute: DEFAULT column_default_expr */
+#line 6548 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->default_value= (yyvsp[0].virtual_column);
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35436 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 867: /* attribute: ON UPDATE_SYM NOW_SYM opt_default_time_precision */
-#line 6432 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 877: /* attribute: ON UPDATE_SYM NOW_SYM opt_default_time_precision */
+#line 6553 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_now_local(thd, (yyvsp[0].num));
if (unlikely(item == NULL))
@@ -35345,132 +35444,132 @@ yyreduce:
Lex->last_field->on_update= item;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35448 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 868: /* attribute: AUTO_INC */
-#line 6439 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 878: /* attribute: AUTO_INC */
+#line 6560 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG; (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 35355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35454 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 869: /* attribute: SERIAL_SYM DEFAULT VALUE_SYM */
-#line 6441 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 879: /* attribute: SERIAL_SYM DEFAULT VALUE_SYM */
+#line 6562 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG | UNIQUE_KEY_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
(yyval.Lex_exact_charset_extended_collation_attrs).init();
}
-#line 35366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35465 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 870: /* attribute: COLLATE_SYM collation_name */
-#line 6448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 880: /* attribute: COLLATE_SYM collation_name */
+#line 6569 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs)= Lex_exact_charset_extended_collation_attrs((yyvsp[0].Lex_extended_collation));
}
-#line 35374 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35473 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 871: /* attribute: serial_attribute */
-#line 6451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 881: /* attribute: serial_attribute */
+#line 6572 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 35380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 872: /* opt_compression_method: %empty */
-#line 6455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 882: /* opt_compression_method: %empty */
+#line 6576 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= NULL; }
-#line 35386 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35485 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 873: /* opt_compression_method: equal ident */
-#line 6456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 883: /* opt_compression_method: equal ident */
+#line 6577 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.const_simple_string)= (yyvsp[0].ident_sys).str; }
-#line 35392 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35491 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 874: /* opt_compressed: %empty */
-#line 6460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 884: /* opt_compressed: %empty */
+#line 6581 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35398 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35497 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 875: /* opt_compressed: compressed */
-#line 6461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 885: /* opt_compressed: compressed */
+#line 6582 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 35404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 876: /* opt_enable: %empty */
-#line 6465 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 886: /* opt_enable: %empty */
+#line 6586 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35509 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 877: /* opt_enable: ENABLE_SYM */
-#line 6466 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 887: /* opt_enable: ENABLE_SYM */
+#line 6587 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 35416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35515 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 878: /* compressed: COMPRESSED_SYM opt_compression_method */
-#line 6471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 888: /* compressed: COMPRESSED_SYM opt_compression_method */
+#line 6592 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->last_field->set_compressed((yyvsp[0].const_simple_string))))
MYSQL_YYABORT;
}
-#line 35425 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35524 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 879: /* compressed_deprecated_data_type_attribute: COMPRESSED_SYM opt_compression_method */
-#line 6479 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 889: /* compressed_deprecated_data_type_attribute: COMPRESSED_SYM opt_compression_method */
+#line 6600 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->last_field->set_compressed_deprecated(thd, (yyvsp[0].const_simple_string))))
MYSQL_YYABORT;
}
-#line 35434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35533 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 880: /* compressed_deprecated_column_attribute: COMPRESSED_SYM opt_compression_method */
-#line 6487 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 890: /* compressed_deprecated_column_attribute: COMPRESSED_SYM opt_compression_method */
+#line 6608 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->last_field->
set_compressed_deprecated_column_attribute(thd, (yyvsp[-1].kwd).pos(), (yyvsp[0].const_simple_string))))
MYSQL_YYABORT;
}
-#line 35444 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35543 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 881: /* asrow_attribute: not NULL_SYM opt_enable */
-#line 6496 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 891: /* asrow_attribute: not NULL_SYM opt_enable */
+#line 6617 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->flags|= NOT_NULL_FLAG;
}
-#line 35452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35551 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 882: /* asrow_attribute: opt_primary KEY_SYM */
-#line 6500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 892: /* asrow_attribute: opt_primary KEY_SYM */
+#line 6621 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->last_field->flags|= PRI_KEY_FLAG | NOT_NULL_FLAG;
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 35462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 885: /* serial_attribute: engine_defined_option */
-#line 6511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 895: /* serial_attribute: engine_defined_option */
+#line 6632 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->last_field->option_list, &Lex->option_list_last);
}
-#line 35470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35569 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 886: /* serial_attribute: with_or_without_system VERSIONING_SYM */
-#line 6515 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 896: /* serial_attribute: with_or_without_system VERSIONING_SYM */
+#line 6636 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->versioning= (yyvsp[-1].vers_column_versioning);
Lex->create_info.options|= HA_VERSIONED_TABLE;
@@ -35480,84 +35579,84 @@ yyreduce:
Lex->create_last_non_select_table->table_name.str));
}
}
-#line 35484 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 887: /* with_or_without_system: WITH_SYSTEM_SYM */
-#line 6528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 897: /* with_or_without_system: WITH_SYSTEM_SYM */
+#line 6649 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_COLUMN_UNVERSIONED;
Lex->create_info.vers_info.versioned_fields= true;
(yyval.vers_column_versioning)= Column_definition::WITH_VERSIONING;
}
-#line 35494 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35593 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 888: /* with_or_without_system: WITHOUT SYSTEM */
-#line 6534 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 898: /* with_or_without_system: WITHOUT SYSTEM */
+#line 6655 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_COLUMN_UNVERSIONED;
Lex->create_info.vers_info.unversioned_fields= true;
(yyval.vers_column_versioning)= Column_definition::WITHOUT_VERSIONING;
}
-#line 35504 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 889: /* charset: CHAR_SYM SET */
-#line 6543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 899: /* charset: CHAR_SYM SET */
+#line 6664 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.kwd)= (yyvsp[-1].kwd); }
-#line 35510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 890: /* charset: CHARSET */
-#line 6544 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 900: /* charset: CHARSET */
+#line 6665 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.kwd)= (yyvsp[0].kwd); }
-#line 35516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35615 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 891: /* charset_name: ident_or_text */
-#line 6549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 901: /* charset_name: ident_or_text */
+#line 6670 "/home/buildbot/git/sql/sql_yacc.yy"
{
myf utf8_flag= thd->get_utf8_flag();
if (unlikely(!((yyval.charset)=get_charset_by_csname((yyvsp[0].lex_str).str, MY_CS_PRIMARY,
MYF(utf8_flag)))))
my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), (yyvsp[0].lex_str).str));
}
-#line 35527 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35626 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 892: /* charset_name: BINARY */
-#line 6555 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 902: /* charset_name: BINARY */
+#line 6676 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= &my_charset_bin; }
-#line 35533 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35632 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 893: /* charset_name_or_default: charset_name */
-#line 6559 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 903: /* charset_name_or_default: charset_name */
+#line 6680 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=(yyvsp[0].charset); }
-#line 35539 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35638 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 894: /* charset_name_or_default: DEFAULT */
-#line 6560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 904: /* charset_name_or_default: DEFAULT */
+#line 6681 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=NULL; }
-#line 35545 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35644 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 895: /* opt_load_data_charset: %empty */
-#line 6564 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 905: /* opt_load_data_charset: %empty */
+#line 6685 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= NULL; }
-#line 35551 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35650 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 896: /* opt_load_data_charset: charset charset_name_or_default */
-#line 6565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 906: /* opt_load_data_charset: charset charset_name_or_default */
+#line 6686 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= (yyvsp[0].charset); }
-#line 35557 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35656 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 897: /* old_or_new_charset_name: ident_or_text */
-#line 6570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 907: /* old_or_new_charset_name: ident_or_text */
+#line 6691 "/home/buildbot/git/sql/sql_yacc.yy"
{
myf utf8_flag= thd->get_utf8_flag();
if (unlikely(!((yyval.charset)=get_charset_by_csname((yyvsp[0].lex_str).str,
@@ -35566,175 +35665,181 @@ yyreduce:
!((yyval.charset)=get_old_charset_by_name((yyvsp[0].lex_str).str))))
my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), (yyvsp[0].lex_str).str));
}
-#line 35570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 898: /* old_or_new_charset_name: BINARY */
-#line 6578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 908: /* old_or_new_charset_name: BINARY */
+#line 6699 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= &my_charset_bin; }
-#line 35576 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 899: /* old_or_new_charset_name_or_default: old_or_new_charset_name */
-#line 6582 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 909: /* old_or_new_charset_name_or_default: old_or_new_charset_name */
+#line 6703 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=(yyvsp[0].charset); }
-#line 35582 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35681 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 900: /* old_or_new_charset_name_or_default: DEFAULT */
-#line 6583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 910: /* old_or_new_charset_name_or_default: DEFAULT */
+#line 6704 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)=NULL; }
-#line 35588 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35687 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 901: /* collation_name: ident_or_text */
-#line 6588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 911: /* collation_name: ident_or_text */
+#line 6709 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyval.Lex_extended_collation).set_by_name((yyvsp[0].lex_str).str, thd->get_utf8_flag()))
MYSQL_YYABORT;
}
-#line 35597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35696 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 902: /* collation_name_or_default: collation_name */
-#line 6595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 912: /* collation_name_or_default: collation_name */
+#line 6716 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_extended_collation)=(yyvsp[0].Lex_extended_collation); }
-#line 35603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 903: /* collation_name_or_default: DEFAULT */
-#line 6596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 913: /* collation_name_or_default: DEFAULT */
+#line 6717 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_extended_collation).set_collate_default(); }
-#line 35609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 904: /* opt_default: %empty */
-#line 6600 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 914: /* opt_default: %empty */
+#line 6721 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35615 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35714 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 905: /* opt_default: DEFAULT */
-#line 6601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 915: /* opt_default: DEFAULT */
+#line 6722 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 35621 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35720 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 906: /* charset_or_alias: charset charset_name */
-#line 6605 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 916: /* charset_or_alias: charset charset_name */
+#line 6726 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= (yyvsp[0].charset); }
-#line 35627 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 907: /* charset_or_alias: ASCII_SYM */
-#line 6606 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 917: /* charset_or_alias: ASCII_SYM */
+#line 6727 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.charset)= &my_charset_latin1; }
-#line 35633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35732 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 908: /* charset_or_alias: UNICODE_SYM */
-#line 6608 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 918: /* charset_or_alias: UNICODE_SYM */
+#line 6729 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.charset)= get_charset_by_csname("ucs2", MY_CS_PRIMARY,MYF(0)))))
my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), "ucs2"));
}
-#line 35642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35741 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 909: /* opt_binary: %empty */
-#line 6615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 919: /* opt_binary: %empty */
+#line 6736 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).init(); }
-#line 35648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35747 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 911: /* binary: BYTE_SYM */
-#line 6621 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 921: /* binary: BYTE_SYM */
+#line 6742 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).set_charset(Lex_exact_charset(&my_charset_bin));
}
-#line 35656 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35755 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 912: /* binary: charset_or_alias */
-#line 6625 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 922: /* binary: charset_or_alias */
+#line 6746 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).set_charset(Lex_exact_charset((yyvsp[0].charset)));
}
-#line 35664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35763 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 913: /* binary: charset_or_alias BINARY */
-#line 6629 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 923: /* binary: charset_or_alias BINARY */
+#line 6750 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_binary(Lex_exact_charset((yyvsp[-1].charset))))
MYSQL_YYABORT;
}
-#line 35673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35772 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 914: /* binary: BINARY */
-#line 6633 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 924: /* binary: BINARY */
+#line 6754 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_exact_charset_extended_collation_attrs).set_contextually_typed_binary_style(); }
-#line 35679 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 915: /* binary: BINARY charset_or_alias */
-#line 6635 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 925: /* binary: BINARY charset_or_alias */
+#line 6756 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_binary(Lex_exact_charset((yyvsp[0].charset))))
MYSQL_YYABORT;
}
-#line 35688 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35787 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 916: /* binary: charset_or_alias COLLATE_SYM DEFAULT */
-#line 6640 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 926: /* binary: charset_or_alias COLLATE_SYM DEFAULT */
+#line 6761 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_default(Lex_exact_charset((yyvsp[-2].charset)));
+ (yyval.Lex_exact_charset_extended_collation_attrs).set_charset_collate_default(
+ thd,
+ thd->variables.character_set_collations,
+ Lex_exact_charset((yyvsp[-2].charset)));
}
-#line 35696 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35798 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 917: /* binary: charset_or_alias COLLATE_SYM collation_name */
-#line 6644 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 927: /* binary: charset_or_alias COLLATE_SYM collation_name */
+#line 6768 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyvsp[0].Lex_extended_collation).merge_exact_charset(Lex_exact_charset((yyvsp[-2].charset))))
+ if ((yyvsp[0].Lex_extended_collation).merge_exact_charset(
+ thd,
+ thd->variables.character_set_collations,
+ Lex_exact_charset((yyvsp[-2].charset))))
MYSQL_YYABORT;
(yyval.Lex_exact_charset_extended_collation_attrs)= Lex_exact_charset_extended_collation_attrs((yyvsp[0].Lex_extended_collation));
}
-#line 35706 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 918: /* binary: COLLATE_SYM collation_name */
-#line 6650 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 928: /* binary: COLLATE_SYM collation_name */
+#line 6777 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs)= Lex_exact_charset_extended_collation_attrs((yyvsp[0].Lex_extended_collation));
}
-#line 35714 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 919: /* binary: COLLATE_SYM DEFAULT */
-#line 6654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 929: /* binary: COLLATE_SYM DEFAULT */
+#line 6781 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_exact_charset_extended_collation_attrs).set_collate_default();
}
-#line 35722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35827 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 920: /* opt_bin_mod: %empty */
-#line 6660 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 930: /* opt_bin_mod: %empty */
+#line 6787 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 35728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35833 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 921: /* opt_bin_mod: BINARY */
-#line 6661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 931: /* opt_bin_mod: BINARY */
+#line 6788 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= true; }
-#line 35734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35839 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 922: /* $@93: %empty */
-#line 6666 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 932: /* $@93: %empty */
+#line 6793 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[0].ulong_num) == 0))
{
@@ -35742,148 +35847,148 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 35746 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35851 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 923: /* ws_nweights: '(' real_ulong_num $@93 ')' */
-#line 6674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 933: /* ws_nweights: '(' real_ulong_num $@93 ')' */
+#line 6801 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[-2].ulong_num); }
-#line 35752 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35857 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 924: /* ws_level_flag_desc: ASC */
-#line 6678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 934: /* ws_level_flag_desc: ASC */
+#line 6805 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35758 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35863 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 925: /* ws_level_flag_desc: DESC */
-#line 6679 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 935: /* ws_level_flag_desc: DESC */
+#line 6806 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 1 << MY_STRXFRM_DESC_SHIFT; }
-#line 35764 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35869 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 926: /* ws_level_flag_reverse: REVERSE_SYM */
-#line 6683 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 936: /* ws_level_flag_reverse: REVERSE_SYM */
+#line 6810 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 1 << MY_STRXFRM_REVERSE_SHIFT; }
-#line 35770 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35875 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 927: /* ws_level_flags: %empty */
-#line 6686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 937: /* ws_level_flags: %empty */
+#line 6813 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35776 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35881 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 928: /* ws_level_flags: ws_level_flag_desc */
-#line 6687 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 938: /* ws_level_flags: ws_level_flag_desc */
+#line 6814 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 35782 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35887 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 929: /* ws_level_flags: ws_level_flag_desc ws_level_flag_reverse */
-#line 6688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 939: /* ws_level_flags: ws_level_flag_desc ws_level_flag_reverse */
+#line 6815 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[-1].ulong_num) | (yyvsp[0].ulong_num); }
-#line 35788 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 930: /* ws_level_flags: ws_level_flag_reverse */
-#line 6689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 940: /* ws_level_flags: ws_level_flag_reverse */
+#line 6816 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num) ; }
-#line 35794 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35899 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 931: /* ws_level_number: real_ulong_num */
-#line 6694 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 941: /* ws_level_number: real_ulong_num */
+#line 6821 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ulong_num)= (yyvsp[0].ulong_num) < 1 ? 1 : ((yyvsp[0].ulong_num) > MY_STRXFRM_NLEVELS ? MY_STRXFRM_NLEVELS : (yyvsp[0].ulong_num));
(yyval.ulong_num)--;
}
-#line 35803 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 932: /* ws_level_list_item: ws_level_number ws_level_flags */
-#line 6702 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 942: /* ws_level_list_item: ws_level_number ws_level_flags */
+#line 6829 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ulong_num)= (1 | (yyvsp[0].ulong_num)) << (yyvsp[-1].ulong_num);
}
-#line 35811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35916 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 933: /* ws_level_list: ws_level_list_item */
-#line 6708 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 943: /* ws_level_list: ws_level_list_item */
+#line 6835 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 35817 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35922 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 934: /* ws_level_list: ws_level_list ',' ws_level_list_item */
-#line 6709 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 944: /* ws_level_list: ws_level_list ',' ws_level_list_item */
+#line 6836 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)|= (yyvsp[0].ulong_num); }
-#line 35823 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35928 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 935: /* ws_level_range: ws_level_number '-' ws_level_number */
-#line 6714 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 945: /* ws_level_range: ws_level_number '-' ws_level_number */
+#line 6841 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint start= (yyvsp[-2].ulong_num);
uint end= (yyvsp[0].ulong_num);
for ((yyval.ulong_num)= 0; start <= end; start++)
(yyval.ulong_num)|= (1 << start);
}
-#line 35834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35939 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 936: /* ws_level_list_or_range: ws_level_list */
-#line 6723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 946: /* ws_level_list_or_range: ws_level_list */
+#line 6850 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 35840 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 937: /* ws_level_list_or_range: ws_level_range */
-#line 6724 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 947: /* ws_level_list_or_range: ws_level_range */
+#line 6851 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 35846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 938: /* opt_ws_levels: %empty */
-#line 6728 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 948: /* opt_ws_levels: %empty */
+#line 6855 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 35852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35957 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 939: /* opt_ws_levels: LEVEL_SYM ws_level_list_or_range */
-#line 6729 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 949: /* opt_ws_levels: LEVEL_SYM ws_level_list_or_range */
+#line 6856 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num); }
-#line 35858 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35963 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 942: /* references: REFERENCES table_ident opt_ref_list opt_match_clause opt_on_update_delete */
-#line 6743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 952: /* references: REFERENCES table_ident opt_ref_list opt_match_clause opt_on_update_delete */
+#line 6870 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)=(yyvsp[-3].table);
}
-#line 35866 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35971 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 943: /* opt_ref_list: %empty */
-#line 6750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 953: /* opt_ref_list: %empty */
+#line 6877 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ref_list.empty(); }
-#line 35872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35977 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 945: /* ref_list: ref_list ',' ident */
-#line 6756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 955: /* ref_list: ref_list ',' ident */
+#line 6883 "/home/buildbot/git/sql/sql_yacc.yy"
{
Key_part_spec *key= new (thd->mem_root) Key_part_spec(&(yyvsp[0].ident_sys), 0);
if (unlikely(key == NULL))
MYSQL_YYABORT;
Lex->ref_list.push_back(key, thd->mem_root);
}
-#line 35883 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 35988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 946: /* ref_list: ident */
-#line 6763 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 956: /* ref_list: ident */
+#line 6890 "/home/buildbot/git/sql/sql_yacc.yy"
{
Key_part_spec *key= new (thd->mem_root) Key_part_spec(&(yyvsp[0].ident_sys), 0);
if (unlikely(key == NULL))
@@ -35892,169 +35997,169 @@ yyreduce:
lex->ref_list.empty();
lex->ref_list.push_back(key, thd->mem_root);
}
-#line 35896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36001 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 947: /* opt_match_clause: %empty */
-#line 6775 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 957: /* opt_match_clause: %empty */
+#line 6902 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_UNDEF; }
-#line 35902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 948: /* opt_match_clause: MATCH FULL */
-#line 6777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 958: /* opt_match_clause: MATCH FULL */
+#line 6904 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_FULL; }
-#line 35908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 949: /* opt_match_clause: MATCH PARTIAL */
-#line 6779 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 959: /* opt_match_clause: MATCH PARTIAL */
+#line 6906 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_PARTIAL; }
-#line 35914 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 950: /* opt_match_clause: MATCH SIMPLE_SYM */
-#line 6781 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 960: /* opt_match_clause: MATCH SIMPLE_SYM */
+#line 6908 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->fk_match_option= Foreign_key::FK_MATCH_SIMPLE; }
-#line 35920 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36025 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 951: /* opt_on_update_delete: %empty */
-#line 6786 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 961: /* opt_on_update_delete: %empty */
+#line 6913 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= FK_OPTION_UNDEF;
lex->fk_delete_opt= FK_OPTION_UNDEF;
}
-#line 35930 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36035 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 952: /* opt_on_update_delete: ON UPDATE_SYM delete_option */
-#line 6792 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 962: /* opt_on_update_delete: ON UPDATE_SYM delete_option */
+#line 6919 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= (yyvsp[0].m_fk_option);
lex->fk_delete_opt= FK_OPTION_UNDEF;
}
-#line 35940 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36045 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 953: /* opt_on_update_delete: ON DELETE_SYM delete_option */
-#line 6798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 963: /* opt_on_update_delete: ON DELETE_SYM delete_option */
+#line 6925 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= FK_OPTION_UNDEF;
lex->fk_delete_opt= (yyvsp[0].m_fk_option);
}
-#line 35950 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 954: /* opt_on_update_delete: ON UPDATE_SYM delete_option ON DELETE_SYM delete_option */
-#line 6805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 964: /* opt_on_update_delete: ON UPDATE_SYM delete_option ON DELETE_SYM delete_option */
+#line 6932 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= (yyvsp[-3].m_fk_option);
lex->fk_delete_opt= (yyvsp[0].m_fk_option);
}
-#line 35960 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36065 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 955: /* opt_on_update_delete: ON DELETE_SYM delete_option ON UPDATE_SYM delete_option */
-#line 6812 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 965: /* opt_on_update_delete: ON DELETE_SYM delete_option ON UPDATE_SYM delete_option */
+#line 6939 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->fk_update_opt= (yyvsp[0].m_fk_option);
lex->fk_delete_opt= (yyvsp[-3].m_fk_option);
}
-#line 35970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 956: /* delete_option: RESTRICT */
-#line 6820 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 966: /* delete_option: RESTRICT */
+#line 6947 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_RESTRICT; }
-#line 35976 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36081 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 957: /* delete_option: CASCADE */
-#line 6821 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 967: /* delete_option: CASCADE */
+#line 6948 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_CASCADE; }
-#line 35982 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36087 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 958: /* delete_option: SET NULL_SYM */
-#line 6822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 968: /* delete_option: SET NULL_SYM */
+#line 6949 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_SET_NULL; }
-#line 35988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 959: /* delete_option: NO_SYM ACTION */
-#line 6823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 969: /* delete_option: NO_SYM ACTION */
+#line 6950 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_NO_ACTION; }
-#line 35994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 960: /* delete_option: SET DEFAULT */
-#line 6824 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 970: /* delete_option: SET DEFAULT */
+#line 6951 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_fk_option)= FK_OPTION_SET_DEFAULT; }
-#line 36000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 961: /* constraint_key_type: PRIMARY_SYM KEY_SYM */
-#line 6828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 971: /* constraint_key_type: PRIMARY_SYM KEY_SYM */
+#line 6955 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_type)= Key::PRIMARY; }
-#line 36006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36111 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 962: /* constraint_key_type: UNIQUE_SYM opt_key_or_index */
-#line 6829 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 972: /* constraint_key_type: UNIQUE_SYM opt_key_or_index */
+#line 6956 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_type)= Key::UNIQUE; }
-#line 36012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36117 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 963: /* key_or_index: KEY_SYM */
-#line 6833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 973: /* key_or_index: KEY_SYM */
+#line 6960 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36123 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 964: /* key_or_index: INDEX_SYM */
-#line 6834 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 974: /* key_or_index: INDEX_SYM */
+#line 6961 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 965: /* opt_key_or_index: %empty */
-#line 6838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 975: /* opt_key_or_index: %empty */
+#line 6965 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36135 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 967: /* keys_or_index: KEYS */
-#line 6843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 977: /* keys_or_index: KEYS */
+#line 6970 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 968: /* keys_or_index: INDEX_SYM */
-#line 6844 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 978: /* keys_or_index: INDEX_SYM */
+#line 6971 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36147 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 969: /* keys_or_index: INDEXES */
-#line 6845 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 979: /* keys_or_index: INDEXES */
+#line 6972 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36153 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 970: /* fulltext: FULLTEXT_SYM */
-#line 6849 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 980: /* fulltext: FULLTEXT_SYM */
+#line 6976 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_type)= Key::FULLTEXT;}
-#line 36054 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 971: /* spatial: SPATIAL_SYM */
-#line 6854 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 981: /* spatial: SPATIAL_SYM */
+#line 6981 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef HAVE_SPATIAL
(yyval.key_type)= Key::SPATIAL;
@@ -36063,212 +36168,212 @@ yyreduce:
sym_group_geom.needed_define));
#endif
}
-#line 36067 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36172 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 972: /* normal_key_options: %empty */
-#line 6865 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 982: /* normal_key_options: %empty */
+#line 6992 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 973: /* normal_key_options: normal_key_opts */
-#line 6866 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 983: /* normal_key_options: normal_key_opts */
+#line 6993 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->option_list= Lex->option_list; }
-#line 36079 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36184 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 974: /* fulltext_key_options: %empty */
-#line 6870 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 984: /* fulltext_key_options: %empty */
+#line 6997 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36085 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36190 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 975: /* fulltext_key_options: fulltext_key_opts */
-#line 6871 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 985: /* fulltext_key_options: fulltext_key_opts */
+#line 6998 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->option_list= Lex->option_list; }
-#line 36091 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36196 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 976: /* spatial_key_options: %empty */
-#line 6875 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 986: /* spatial_key_options: %empty */
+#line 7002 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36097 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36202 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 977: /* spatial_key_options: spatial_key_opts */
-#line 6876 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 987: /* spatial_key_options: spatial_key_opts */
+#line 7003 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->option_list= Lex->option_list; }
-#line 36103 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36208 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 984: /* opt_USING_key_algorithm: %empty */
-#line 6895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 994: /* opt_USING_key_algorithm: %empty */
+#line 7022 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_UNDEF; }
-#line 36109 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36214 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 985: /* opt_USING_key_algorithm: USING btree_or_rtree */
-#line 6896 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 995: /* opt_USING_key_algorithm: USING btree_or_rtree */
+#line 7023 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= (yyvsp[0].key_alg); }
-#line 36115 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36220 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 986: /* opt_key_algorithm_clause: %empty */
-#line 6901 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 996: /* opt_key_algorithm_clause: %empty */
+#line 7028 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_UNDEF; }
-#line 36121 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 987: /* opt_key_algorithm_clause: USING btree_or_rtree */
-#line 6902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 997: /* opt_key_algorithm_clause: USING btree_or_rtree */
+#line 7029 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= (yyvsp[0].key_alg); }
-#line 36127 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36232 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 988: /* opt_key_algorithm_clause: TYPE_SYM btree_or_rtree */
-#line 6903 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 998: /* opt_key_algorithm_clause: TYPE_SYM btree_or_rtree */
+#line 7030 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= (yyvsp[0].key_alg); }
-#line 36133 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36238 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 989: /* key_using_alg: USING btree_or_rtree */
-#line 6908 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 999: /* key_using_alg: USING btree_or_rtree */
+#line 7035 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->key_create_info.algorithm= (yyvsp[0].key_alg); }
-#line 36139 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36244 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 990: /* key_using_alg: TYPE_SYM btree_or_rtree */
-#line 6910 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1000: /* key_using_alg: TYPE_SYM btree_or_rtree */
+#line 7037 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->key_create_info.algorithm= (yyvsp[0].key_alg); }
-#line 36145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36250 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 991: /* all_key_opt: KEY_BLOCK_SIZE opt_equal ulong_num */
-#line 6915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1001: /* all_key_opt: KEY_BLOCK_SIZE opt_equal ulong_num */
+#line 7042 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_key->key_create_info.block_size= (yyvsp[0].ulong_num);
Lex->last_key->key_create_info.flags|= HA_USES_BLOCK_SIZE;
}
-#line 36154 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 992: /* all_key_opt: COMMENT_SYM TEXT_STRING_sys */
-#line 6920 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1002: /* all_key_opt: COMMENT_SYM TEXT_STRING_sys */
+#line 7047 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_key->key_create_info.comment= (yyvsp[0].lex_str); }
-#line 36160 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 993: /* all_key_opt: VISIBLE_SYM */
-#line 6922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1003: /* all_key_opt: VISIBLE_SYM */
+#line 7049 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* This is mainly for MySQL 8.0 compatibility */
}
-#line 36168 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 994: /* all_key_opt: ignorability */
-#line 6926 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1004: /* all_key_opt: ignorability */
+#line 7053 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_key->key_create_info.is_ignored= (yyvsp[0].num);
}
-#line 36176 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 995: /* all_key_opt: engine_defined_option */
-#line 6930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1005: /* all_key_opt: engine_defined_option */
+#line 7057 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].engine_option_value_ptr)->link(&Lex->option_list, &Lex->option_list_last);
}
-#line 36184 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1000: /* fulltext_key_opt: WITH PARSER_SYM IDENT_sys */
-#line 6947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1010: /* fulltext_key_opt: WITH PARSER_SYM IDENT_sys */
+#line 7074 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (likely(plugin_is_ready(&(yyvsp[0].ident_sys), MYSQL_FTPARSER_PLUGIN)))
Lex->last_key->key_create_info.parser_name= (yyvsp[0].ident_sys);
else
my_yyabort_error((ER_FUNCTION_NOT_DEFINED, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 36195 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36300 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1001: /* btree_or_rtree: BTREE_SYM */
-#line 6956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1011: /* btree_or_rtree: BTREE_SYM */
+#line 7083 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_BTREE; }
-#line 36201 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36306 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1002: /* btree_or_rtree: RTREE_SYM */
-#line 6957 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1012: /* btree_or_rtree: RTREE_SYM */
+#line 7084 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_RTREE; }
-#line 36207 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1003: /* btree_or_rtree: HASH_SYM */
-#line 6958 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1013: /* btree_or_rtree: HASH_SYM */
+#line 7085 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.key_alg)= HA_KEY_ALG_HASH; }
-#line 36213 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36318 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1004: /* ignorability: IGNORED_SYM */
-#line 6962 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1014: /* ignorability: IGNORED_SYM */
+#line 7089 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= true; }
-#line 36219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36324 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1005: /* ignorability: NOT_SYM IGNORED_SYM */
-#line 6963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1015: /* ignorability: NOT_SYM IGNORED_SYM */
+#line 7090 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 36225 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36330 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1006: /* key_list: key_list ',' key_part order_dir */
-#line 6968 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1016: /* key_list: key_list ',' key_part order_dir */
+#line 7095 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].key_part)->asc= (yyvsp[0].num);
Lex->last_key->columns.push_back((yyvsp[-1].key_part), thd->mem_root);
}
-#line 36234 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36339 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1007: /* key_list: key_part order_dir */
-#line 6973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1017: /* key_list: key_part order_dir */
+#line 7100 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].key_part)->asc= (yyvsp[0].num);
Lex->last_key->columns.push_back((yyvsp[-1].key_part), thd->mem_root);
}
-#line 36243 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36348 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1008: /* opt_without_overlaps: %empty */
-#line 6980 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1018: /* opt_without_overlaps: %empty */
+#line 7107 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36249 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1009: /* opt_without_overlaps: ',' ident WITHOUT OVERLAPS_SYM */
-#line 6982 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1019: /* opt_without_overlaps: ',' ident WITHOUT OVERLAPS_SYM */
+#line 7109 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_key->without_overlaps= true;
Lex->last_key->period= (yyvsp[-2].ident_sys);
}
-#line 36258 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36363 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1010: /* key_part: ident */
-#line 6990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1020: /* key_part: ident */
+#line 7117 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.key_part)= new (thd->mem_root) Key_part_spec(&(yyvsp[0].ident_sys), 0);
if (unlikely((yyval.key_part) == NULL))
MYSQL_YYABORT;
}
-#line 36268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36373 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1011: /* key_part: ident '(' NUM ')' */
-#line 6996 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1021: /* key_part: ident '(' NUM ')' */
+#line 7123 "/home/buildbot/git/sql/sql_yacc.yy"
{
int key_part_len= atoi((yyvsp[-1].lex_str).str);
if (unlikely(!key_part_len))
@@ -36277,35 +36382,35 @@ yyreduce:
if (unlikely((yyval.key_part) == NULL))
MYSQL_YYABORT;
}
-#line 36281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36386 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1012: /* opt_ident: %empty */
-#line 7007 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1022: /* opt_ident: %empty */
+#line 7134 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 36287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36392 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1013: /* opt_ident: field_ident */
-#line 7008 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1023: /* opt_ident: field_ident */
+#line 7135 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].lex_str); }
-#line 36293 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36398 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1014: /* string_list: text_string */
-#line 7013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1024: /* string_list: text_string */
+#line 7140 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->interval_list.push_back((yyvsp[0].string), thd->mem_root); }
-#line 36299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1015: /* string_list: string_list ',' text_string */
-#line 7015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1025: /* string_list: string_list ',' text_string */
+#line 7142 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->last_field->interval_list.push_back((yyvsp[0].string), thd->mem_root); }
-#line 36305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1016: /* $@94: %empty */
-#line 7024 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1026: /* $@94: %empty */
+#line 7151 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->name= null_clex_str;
Lex->table_type= TABLE_TYPE_UNKNOWN;
@@ -36321,11 +36426,11 @@ yyreduce:
MYSQL_YYABORT;
DBUG_ASSERT(!Lex->m_sql_cmd);
}
-#line 36325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1017: /* $@95: %empty */
-#line 7040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1027: /* $@95: %empty */
+#line 7167 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.set((yyvsp[-2].object_ddl_options));
if (!Lex->first_select_lex()->
@@ -36337,11 +36442,11 @@ yyreduce:
Lex->create_last_non_select_table= Lex->last_table();
Lex->mark_first_table_as_inserting();
}
-#line 36341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1018: /* alter: ALTER $@94 alter_options TABLE_SYM opt_if_exists table_ident opt_lock_wait_timeout $@95 alter_commands */
-#line 7052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1028: /* alter: ALTER $@94 alter_options TABLE_SYM opt_if_exists table_ident opt_lock_wait_timeout $@95 alter_commands */
+#line 7179 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (likely(!Lex->m_sql_cmd))
{
@@ -36352,21 +36457,21 @@ yyreduce:
}
Lex->pop_select(); //main select
}
-#line 36356 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36461 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1019: /* $@96: %empty */
-#line 7063 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1029: /* $@96: %empty */
+#line 7190 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.init();
if (Lex->main_select_push(true))
MYSQL_YYABORT;
}
-#line 36366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1020: /* alter: ALTER DATABASE ident_or_empty $@96 create_database_options */
-#line 7069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1030: /* alter: ALTER DATABASE ident_or_empty $@96 create_database_options */
+#line 7196 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_ALTER_DB;
@@ -36376,21 +36481,21 @@ yyreduce:
MYSQL_YYABORT;
Lex->pop_select(); //main select
}
-#line 36380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36485 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1021: /* $@97: %empty */
-#line 7079 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1031: /* $@97: %empty */
+#line 7206 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.init();
Lex->create_info.schema_comment= thd->make_clex_string((yyvsp[0].lex_str));
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
}
-#line 36390 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1022: /* alter: ALTER DATABASE COMMENT_SYM opt_equal TEXT_STRING_sys $@97 opt_create_database_options */
-#line 7085 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1032: /* alter: ALTER DATABASE COMMENT_SYM opt_equal TEXT_STRING_sys $@97 opt_create_database_options */
+#line 7212 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_ALTER_DB;
@@ -36399,11 +36504,11 @@ yyreduce:
unlikely(lex->copy_db_to(&lex->name)))
MYSQL_YYABORT;
}
-#line 36403 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36508 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1023: /* alter: ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM */
-#line 7094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1033: /* alter: ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM */
+#line 7221 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->sphead))
@@ -36411,75 +36516,75 @@ yyreduce:
lex->sql_command= SQLCOM_ALTER_DB_UPGRADE;
lex->name= (yyvsp[-4].ident_sys);
}
-#line 36415 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36520 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1024: /* $@98: %empty */
-#line 7102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1034: /* $@98: %empty */
+#line 7229 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_alter_procedure_start((yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 36424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36529 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1025: /* alter: ALTER PROCEDURE_SYM sp_name $@98 sp_a_chistics stmt_end */
-#line 7107 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1035: /* alter: ALTER PROCEDURE_SYM sp_name $@98 sp_a_chistics stmt_end */
+#line 7234 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1026: /* $@99: %empty */
-#line 7109 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1036: /* $@99: %empty */
+#line 7236 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_alter_function_start((yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 36439 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36544 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1027: /* alter: ALTER FUNCTION_SYM sp_name $@99 sp_a_chistics stmt_end */
-#line 7114 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1037: /* alter: ALTER FUNCTION_SYM sp_name $@99 sp_a_chistics stmt_end */
+#line 7241 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36445 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36550 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1028: /* $@100: %empty */
-#line 7116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1038: /* $@100: %empty */
+#line 7243 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
if (Lex->add_alter_view(thd, (yyvsp[-4].num), (yyvsp[-2].view_suid), (yyvsp[0].table)))
MYSQL_YYABORT;
}
-#line 36456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1029: /* alter: ALTER view_algorithm definer_opt opt_view_suid VIEW_SYM table_ident $@100 view_list_opt AS view_select stmt_end */
-#line 7122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1039: /* alter: ALTER view_algorithm definer_opt opt_view_suid VIEW_SYM table_ident $@100 view_list_opt AS view_select stmt_end */
+#line 7249 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36567 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1030: /* $@101: %empty */
-#line 7129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1040: /* $@101: %empty */
+#line 7256 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
if (Lex->add_alter_view(thd, VIEW_ALGORITHM_INHERIT, (yyvsp[-2].view_suid), (yyvsp[0].table)))
MYSQL_YYABORT;
}
-#line 36473 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1031: /* alter: ALTER definer_opt opt_view_suid VIEW_SYM table_ident $@101 view_list_opt AS view_select stmt_end */
-#line 7135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1041: /* alter: ALTER definer_opt opt_view_suid VIEW_SYM table_ident $@101 view_list_opt AS view_select stmt_end */
+#line 7262 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36584 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1032: /* $@102: %empty */
-#line 7137 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1042: /* $@102: %empty */
+#line 7264 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -36498,11 +36603,11 @@ yyreduce:
Lex->sql_command= SQLCOM_ALTER_EVENT;
Lex->stmt_definition_begin= (yyvsp[-2].simple_string);
}
-#line 36502 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36607 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1033: /* alter: ALTER definer_opt remember_name EVENT_SYM sp_name $@102 ev_alter_on_schedule_completion opt_ev_rename_to opt_ev_status opt_ev_comment opt_ev_sql_stmt */
-#line 7160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1043: /* alter: ALTER definer_opt remember_name EVENT_SYM sp_name $@102 ev_alter_on_schedule_completion opt_ev_rename_to opt_ev_status opt_ev_comment opt_ev_sql_stmt */
+#line 7287 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyvsp[-4].num) || (yyvsp[-3].num) || (yyvsp[-2].num) || (yyvsp[-1].num) || (yyvsp[0].num))))
{
@@ -36518,36 +36623,36 @@ yyreduce:
Lex->pop_select(); //main select
}
-#line 36522 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36627 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1034: /* $@103: %empty */
-#line 7176 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1044: /* $@103: %empty */
+#line 7303 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_ALTER_SERVER;
lex->server_options.reset((yyvsp[0].lex_str));
}
-#line 36532 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36637 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1035: /* alter: ALTER SERVER_SYM ident_or_text $@103 OPTIONS_SYM '(' server_options_list ')' */
-#line 7180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1045: /* alter: ALTER SERVER_SYM ident_or_text $@103 OPTIONS_SYM '(' server_options_list ')' */
+#line 7307 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 36538 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36643 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1036: /* alter: ALTER USER_SYM opt_if_exists clear_privileges grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration */
-#line 7184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1046: /* alter: ALTER USER_SYM opt_if_exists clear_privileges grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration */
+#line 7311 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_info.set((yyvsp[-5].object_ddl_options));
Lex->sql_command= SQLCOM_ALTER_USER;
}
-#line 36547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36652 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1037: /* $@104: %empty */
-#line 7189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1047: /* $@104: %empty */
+#line 7316 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_ALTER_SEQUENCE;
@@ -36555,11 +36660,11 @@ yyreduce:
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 36559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1038: /* $@105: %empty */
-#line 7197 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1048: /* $@105: %empty */
+#line 7324 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!(lex->create_info.seq_create_info= new (thd->mem_root)
@@ -36569,108 +36674,108 @@ yyreduce:
TL_WRITE, MDL_EXCLUSIVE))
MYSQL_YYABORT;
}
-#line 36573 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36678 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1039: /* $@106: %empty */
-#line 7207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1049: /* $@106: %empty */
+#line 7334 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Create a generic ALTER SEQUENCE statment. */
Lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_sequence((yyvsp[-4].object_ddl_options));
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36584 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36689 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1040: /* alter: ALTER SEQUENCE_SYM opt_if_exists $@104 table_ident $@105 sequence_defs $@106 stmt_end */
-#line 7212 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1050: /* alter: ALTER SEQUENCE_SYM opt_if_exists $@104 table_ident $@105 sequence_defs $@106 stmt_end */
+#line 7339 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36590 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36695 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1041: /* account_locking_option: LOCK_SYM */
-#line 7217 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1051: /* account_locking_option: LOCK_SYM */
+#line 7344 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.account_locked= ACCOUNTLOCK_LOCKED;
}
-#line 36598 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36703 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1042: /* account_locking_option: UNLOCK_SYM */
-#line 7221 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1052: /* account_locking_option: UNLOCK_SYM */
+#line 7348 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.account_locked= ACCOUNTLOCK_UNLOCKED;
}
-#line 36606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36711 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1043: /* opt_password_expire_option: %empty */
-#line 7228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1053: /* opt_password_expire_option: %empty */
+#line 7355 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_NOW;
}
-#line 36614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1044: /* opt_password_expire_option: NEVER_SYM */
-#line 7232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1054: /* opt_password_expire_option: NEVER_SYM */
+#line 7359 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_NEVER;
}
-#line 36622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36727 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1045: /* opt_password_expire_option: DEFAULT */
-#line 7236 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1055: /* opt_password_expire_option: DEFAULT */
+#line 7363 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_DEFAULT;
}
-#line 36630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1046: /* opt_password_expire_option: INTERVAL_SYM NUM DAY_SYM */
-#line 7240 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1056: /* opt_password_expire_option: INTERVAL_SYM NUM DAY_SYM */
+#line 7367 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.password_expire= PASSWORD_EXPIRE_INTERVAL;
if (!(Lex->account_options.num_expiration_days= atoi((yyvsp[-1].lex_str).str)))
my_yyabort_error((ER_WRONG_VALUE, MYF(0), "DAY", (yyvsp[-1].lex_str).str));
}
-#line 36640 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1052: /* ev_alter_on_schedule_completion: %empty */
-#line 7256 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1062: /* ev_alter_on_schedule_completion: %empty */
+#line 7383 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0;}
-#line 36646 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36751 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1053: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time */
-#line 7257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1063: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time */
+#line 7384 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 36652 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36757 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1054: /* ev_alter_on_schedule_completion: ev_on_completion */
-#line 7258 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1064: /* ev_alter_on_schedule_completion: ev_on_completion */
+#line 7385 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 36658 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36763 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1055: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time ev_on_completion */
-#line 7259 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1065: /* ev_alter_on_schedule_completion: ON SCHEDULE_SYM ev_schedule_time ev_on_completion */
+#line 7386 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 36664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36769 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1056: /* opt_ev_rename_to: %empty */
-#line 7263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1066: /* opt_ev_rename_to: %empty */
+#line 7390 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0;}
-#line 36670 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1057: /* opt_ev_rename_to: RENAME TO_SYM sp_name */
-#line 7265 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1067: /* opt_ev_rename_to: RENAME TO_SYM sp_name */
+#line 7392 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Use lex's spname to hold the new name.
@@ -36679,29 +36784,29 @@ yyreduce:
Lex->spname= (yyvsp[0].spname);
(yyval.num)= 1;
}
-#line 36683 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36788 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1058: /* opt_ev_sql_stmt: %empty */
-#line 7276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1068: /* opt_ev_sql_stmt: %empty */
+#line 7403 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0;}
-#line 36689 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36794 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1059: /* opt_ev_sql_stmt: DO_SYM ev_sql_stmt */
-#line 7277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1069: /* opt_ev_sql_stmt: DO_SYM ev_sql_stmt */
+#line 7404 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 36695 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36800 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1060: /* ident_or_empty: %empty */
-#line 7282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1070: /* ident_or_empty: %empty */
+#line 7409 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_sys)= Lex_ident_sys(); }
-#line 36701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36806 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1063: /* alter_commands: DISCARD TABLESPACE */
-#line 7289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1073: /* alter_commands: DISCARD TABLESPACE */
+#line 7416 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_discard_import_tablespace(
@@ -36709,43 +36814,44 @@ yyreduce:
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36818 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1064: /* alter_commands: IMPORT TABLESPACE */
-#line 7297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1074: /* alter_commands: IMPORT TABLESPACE */
+#line 7424 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_discard_import_tablespace(
Sql_cmd_discard_import_tablespace::IMPORT_TABLESPACE);
+ Lex->create_info.add(DDL_options_st::OPT_IMPORT_TABLESPACE);
if (unlikely(Lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36725 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1070: /* alter_commands: DROP PARTITION_SYM opt_if_exists alt_part_name_list */
-#line 7319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1080: /* alter_commands: DROP PARTITION_SYM opt_if_exists alt_part_name_list */
+#line 7447 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_DROP;
DBUG_ASSERT(!Lex->if_exists());
Lex->create_info.add((yyvsp[-1].object_ddl_options));
}
-#line 36735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1071: /* alter_commands: REBUILD_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
-#line 7326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1081: /* alter_commands: REBUILD_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
+#line 7454 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->alter_info.partition_flags|= ALTER_PARTITION_REBUILD;
lex->no_write_to_binlog= (yyvsp[-1].num);
}
-#line 36745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36851 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1072: /* $@107: %empty */
-#line 7333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1082: /* $@107: %empty */
+#line 7461 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->no_write_to_binlog= (yyvsp[-1].num);
@@ -36756,11 +36862,11 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36866 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1074: /* alter_commands: ANALYZE_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
-#line 7346 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1084: /* alter_commands: ANALYZE_SYM PARTITION_SYM opt_no_write_to_binlog all_or_alt_part_name_list */
+#line 7474 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->no_write_to_binlog= (yyvsp[-1].num);
@@ -36771,11 +36877,11 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36881 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1075: /* $@108: %empty */
-#line 7357 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1085: /* $@108: %empty */
+#line 7485 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->check_opt.init();
@@ -36785,11 +36891,11 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36895 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1077: /* $@109: %empty */
-#line 7369 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1087: /* $@109: %empty */
+#line 7497 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->no_write_to_binlog= (yyvsp[-1].num);
@@ -36800,22 +36906,22 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36804 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36910 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1079: /* alter_commands: COALESCE PARTITION_SYM opt_no_write_to_binlog real_ulong_num */
-#line 7381 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1089: /* alter_commands: COALESCE PARTITION_SYM opt_no_write_to_binlog real_ulong_num */
+#line 7509 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->alter_info.partition_flags|= ALTER_PARTITION_COALESCE;
lex->no_write_to_binlog= (yyvsp[-1].num);
lex->alter_info.num_parts= (yyvsp[0].ulong_num);
}
-#line 36815 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1080: /* alter_commands: TRUNCATE_SYM PARTITION_SYM all_or_alt_part_name_list */
-#line 7388 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1090: /* alter_commands: TRUNCATE_SYM PARTITION_SYM all_or_alt_part_name_list */
+#line 7516 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->check_opt.init();
@@ -36825,34 +36931,34 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1082: /* alter_commands: EXCHANGE_SYM PARTITION_SYM alt_part_name_item WITH TABLE_SYM table_ident have_partitioning */
-#line 7400 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1092: /* alter_commands: EXCHANGE_SYM PARTITION_SYM alt_part_name_item WITH TABLE_SYM table_ident opt_without_validation have_partitioning */
+#line 7528 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->stmt_alter_table_exchange_partition((yyvsp[-1].table)))
+ if (Lex->stmt_alter_table_exchange_partition((yyvsp[-2].table)))
MYSQL_YYABORT;
}
-#line 36838 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1083: /* alter_commands: CONVERT_SYM PARTITION_SYM alt_part_name_item TO_SYM TABLE_SYM table_ident have_partitioning */
-#line 7406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1093: /* alter_commands: CONVERT_SYM PARTITION_SYM alt_part_name_item TO_SYM TABLE_SYM table_ident opt_without_validation have_partitioning */
+#line 7534 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
- if (Lex->stmt_alter_table((yyvsp[-1].table)))
+ if (Lex->stmt_alter_table((yyvsp[-2].table)))
MYSQL_YYABORT;
lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_table();
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
lex->alter_info.partition_flags|= ALTER_PARTITION_CONVERT_OUT;
}
-#line 36852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1084: /* $@110: %empty */
-#line 7416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1094: /* $@110: %empty */
+#line 7544 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!lex->first_select_lex()->add_table_to_list(thd, (yyvsp[0].table), nullptr, 0,
@@ -36882,38 +36988,38 @@ yyreduce:
lex->alter_info.partition_flags|= ALTER_PARTITION_ADD |
ALTER_PARTITION_CONVERT_IN;
}
-#line 36886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 36992 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1085: /* alter_commands: CONVERT_SYM TABLE_SYM table_ident $@110 TO_SYM PARTITION_SYM part_definition */
-#line 7446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1095: /* alter_commands: CONVERT_SYM TABLE_SYM table_ident $@110 TO_SYM PARTITION_SYM part_definition opt_without_validation have_partitioning */
+#line 7574 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->m_sql_cmd= new (thd->mem_root) Sql_cmd_alter_table();
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 36897 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1086: /* remove_partitioning: REMOVE_SYM PARTITIONING_SYM */
-#line 7456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1096: /* remove_partitioning: REMOVE_SYM PARTITIONING_SYM */
+#line 7584 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_REMOVE;
}
-#line 36905 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37011 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1087: /* all_or_alt_part_name_list: ALL */
-#line 7463 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1097: /* all_or_alt_part_name_list: ALL */
+#line 7591 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_ALL;
}
-#line 36913 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1089: /* $@111: %empty */
-#line 7472 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1099: /* $@111: %empty */
+#line 7600 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
@@ -36925,34 +37031,34 @@ yyreduce:
lex->create_info.set((yyvsp[-1].object_ddl_options));
lex->no_write_to_binlog= (yyvsp[0].num);
}
-#line 36929 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37035 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1090: /* add_partition_rule: ADD PARTITION_SYM opt_if_not_exists opt_no_write_to_binlog $@111 add_part_extra */
-#line 7484 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1100: /* add_partition_rule: ADD PARTITION_SYM opt_if_not_exists opt_no_write_to_binlog $@111 add_part_extra */
+#line 7612 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37041 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1092: /* add_part_extra: '(' part_def_list ')' */
-#line 7490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1102: /* add_part_extra: '(' part_def_list ')' */
+#line 7618 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info->num_parts= lex->part_info->partitions.elements;
}
-#line 36944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1093: /* add_part_extra: PARTITIONS_SYM real_ulong_num */
-#line 7495 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1103: /* add_part_extra: PARTITIONS_SYM real_ulong_num */
+#line 7623 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->part_info->num_parts= (yyvsp[0].ulong_num);
}
-#line 36952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37058 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1094: /* $@112: %empty */
-#line 7502 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1104: /* $@112: %empty */
+#line 7630 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->part_info= new (thd->mem_root) partition_info();
@@ -36961,146 +37067,146 @@ yyreduce:
lex->no_write_to_binlog= (yyvsp[0].num);
}
-#line 36965 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37071 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1096: /* reorg_parts_rule: %empty */
-#line 7515 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1106: /* reorg_parts_rule: %empty */
+#line 7643 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_TABLE_REORG;
}
-#line 36973 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37079 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1097: /* $@113: %empty */
-#line 7519 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1107: /* $@113: %empty */
+#line 7647 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_REORGANIZE;
}
-#line 36981 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37087 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1098: /* reorg_parts_rule: alt_part_name_list $@113 INTO '(' part_def_list ')' */
-#line 7523 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1108: /* reorg_parts_rule: alt_part_name_list $@113 INTO '(' part_def_list ')' */
+#line 7651 "/home/buildbot/git/sql/sql_yacc.yy"
{
partition_info *part_info= Lex->part_info;
part_info->num_parts= part_info->partitions.elements;
}
-#line 36990 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1099: /* alt_part_name_list: alt_part_name_item */
-#line 7530 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1109: /* alt_part_name_list: alt_part_name_item */
+#line 7658 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 36996 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37102 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1100: /* alt_part_name_list: alt_part_name_list ',' alt_part_name_item */
-#line 7531 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1110: /* alt_part_name_list: alt_part_name_list ',' alt_part_name_item */
+#line 7659 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37002 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1101: /* alt_part_name_item: ident */
-#line 7536 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1111: /* alt_part_name_item: ident */
+#line 7664 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->alter_info.partition_names.push_back((yyvsp[0].ident_sys).str,
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 37012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37118 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1105: /* alter_list_item: add_column column_def opt_place */
-#line 7558 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1115: /* alter_list_item: add_column column_def opt_place */
+#line 7686 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->create_last_non_select_table= lex->last_table();
lex->alter_info.flags|= ALTER_PARSER_ADD_COLUMN;
(yyvsp[-1].create_field)->after= (yyvsp[0].lex_str);
}
-#line 37023 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1106: /* alter_list_item: ADD key_def */
-#line 7565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1116: /* alter_list_item: ADD key_def */
+#line 7693 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->create_last_non_select_table= Lex->last_table();
Lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 37032 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37138 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1107: /* alter_list_item: ADD period_for_system_time */
-#line 7570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1117: /* alter_list_item: ADD period_for_system_time */
+#line 7698 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_PERIOD;
}
-#line 37040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37146 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1108: /* alter_list_item: ADD PERIOD_SYM opt_if_not_exists_table_element period_for_application_time */
-#line 7575 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1118: /* alter_list_item: ADD PERIOD_SYM opt_if_not_exists_table_element period_for_application_time */
+#line 7703 "/home/buildbot/git/sql/sql_yacc.yy"
{
Table_period_info &period= Lex->create_info.period_info;
period.create_if_not_exists= Lex->check_exists;
Lex->alter_info.flags|= ALTER_ADD_CHECK_CONSTRAINT;
}
-#line 37050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1109: /* alter_list_item: add_column '(' create_field_list ')' */
-#line 7581 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1119: /* alter_list_item: add_column '(' create_field_list ')' */
+#line 7709 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.flags|= ALTER_PARSER_ADD_COLUMN;
if (!lex->alter_info.key_list.is_empty())
lex->alter_info.flags|= ALTER_ADD_INDEX;
}
-#line 37061 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1110: /* alter_list_item: ADD constraint_def */
-#line 7588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1120: /* alter_list_item: ADD constraint_def */
+#line 7716 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_CHECK_CONSTRAINT;
}
-#line 37069 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37175 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1111: /* alter_list_item: ADD CONSTRAINT IF_SYM not EXISTS field_ident check_constraint */
-#line 7592 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1121: /* alter_list_item: ADD CONSTRAINT IF_SYM not EXISTS field_ident check_constraint */
+#line 7720 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_CHECK_CONSTRAINT;
Lex->add_constraint((yyvsp[-1].lex_str), (yyvsp[0].virtual_column), TRUE);
}
-#line 37078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37184 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1112: /* alter_list_item: CHANGE opt_column opt_if_exists_table_element field_ident field_spec opt_place */
-#line 7598 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1122: /* alter_list_item: CHANGE opt_column opt_if_exists_table_element field_ident field_spec opt_place */
+#line 7726 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_CHANGE_COLUMN | ALTER_RENAME_COLUMN;
Lex->create_last_non_select_table= Lex->last_table();
(yyvsp[-1].create_field)->change= (yyvsp[-2].lex_str);
(yyvsp[-1].create_field)->after= (yyvsp[0].lex_str);
}
-#line 37089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37195 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1113: /* alter_list_item: MODIFY_SYM opt_column opt_if_exists_table_element field_spec opt_place */
-#line 7606 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1123: /* alter_list_item: MODIFY_SYM opt_column opt_if_exists_table_element field_spec opt_place */
+#line 7734 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_CHANGE_COLUMN;
Lex->create_last_non_select_table= Lex->last_table();
(yyvsp[-1].create_field)->change= (yyvsp[-1].create_field)->field_name;
(yyvsp[-1].create_field)->after= (yyvsp[0].lex_str);
}
-#line 37100 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1114: /* alter_list_item: DROP opt_column opt_if_exists_table_element field_ident opt_restrict */
-#line 7613 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1124: /* alter_list_item: DROP opt_column opt_if_exists_table_element field_ident opt_restrict */
+#line 7741 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37110,11 +37216,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_PARSER_DROP_COLUMN;
}
-#line 37114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37220 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1115: /* alter_list_item: DROP CONSTRAINT opt_if_exists_table_element field_ident */
-#line 7623 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1125: /* alter_list_item: DROP CONSTRAINT opt_if_exists_table_element field_ident */
+#line 7751 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37125,11 +37231,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_CHECK_CONSTRAINT;
}
-#line 37129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1116: /* alter_list_item: DROP FOREIGN KEY_SYM opt_if_exists_table_element field_ident */
-#line 7634 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1126: /* alter_list_item: DROP FOREIGN KEY_SYM opt_if_exists_table_element field_ident */
+#line 7762 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37139,11 +37245,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_FOREIGN_KEY;
}
-#line 37143 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37249 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1117: /* alter_list_item: DROP opt_constraint_no_id PRIMARY_SYM KEY_SYM */
-#line 7644 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1127: /* alter_list_item: DROP opt_constraint_no_id PRIMARY_SYM KEY_SYM */
+#line 7772 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37154,11 +37260,11 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_INDEX;
}
-#line 37158 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37264 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1118: /* alter_list_item: DROP key_or_index opt_if_exists_table_element field_ident */
-#line 7655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1128: /* alter_list_item: DROP key_or_index opt_if_exists_table_element field_ident */
+#line 7783 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -37168,42 +37274,42 @@ yyreduce:
lex->alter_info.drop_list.push_back(ad, thd->mem_root);
lex->alter_info.flags|= ALTER_DROP_INDEX;
}
-#line 37172 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1119: /* alter_list_item: DISABLE_SYM KEYS */
-#line 7665 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1129: /* alter_list_item: DISABLE_SYM KEYS */
+#line 7793 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.keys_onoff= Alter_info::DISABLE;
lex->alter_info.flags|= ALTER_KEYS_ONOFF;
}
-#line 37182 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37288 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1120: /* alter_list_item: ENABLE_SYM KEYS */
-#line 7671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1130: /* alter_list_item: ENABLE_SYM KEYS */
+#line 7799 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.keys_onoff= Alter_info::ENABLE;
lex->alter_info.flags|= ALTER_KEYS_ONOFF;
}
-#line 37192 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37298 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1121: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident SET DEFAULT column_default_expr */
-#line 7677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1131: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident SET DEFAULT column_default_expr */
+#line 7805 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (check_expression((yyvsp[0].virtual_column), &(yyvsp[-3].lex_str), VCOL_DEFAULT))
MYSQL_YYABORT;
if (unlikely(Lex->add_alter_list((yyvsp[-3].lex_str), (yyvsp[0].virtual_column), (yyvsp[-4].num))))
MYSQL_YYABORT;
}
-#line 37203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37309 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1122: /* alter_list_item: ALTER key_or_index opt_if_exists_table_element ident ignorability */
-#line 7684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1132: /* alter_list_item: ALTER key_or_index opt_if_exists_table_element ident ignorability */
+#line 7812 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
Alter_index_ignorability *ac= new (thd->mem_root)
@@ -37213,39 +37319,39 @@ yyreduce:
lex->alter_info.alter_index_ignorability_list.push_back(ac);
lex->alter_info.flags|= ALTER_INDEX_IGNORABILITY;
}
-#line 37217 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1123: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident DROP DEFAULT */
-#line 7694 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1133: /* alter_list_item: ALTER opt_column opt_if_exists_table_element field_ident DROP DEFAULT */
+#line 7822 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_alter_list((yyvsp[-2].lex_str), (Virtual_column_info*) 0, (yyvsp[-3].num))))
MYSQL_YYABORT;
}
-#line 37226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1124: /* alter_list_item: RENAME opt_to table_ident */
-#line 7699 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1134: /* alter_list_item: RENAME opt_to table_ident */
+#line 7827 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_alter_table((yyvsp[0].table)))
MYSQL_YYABORT;
Lex->alter_info.flags|= ALTER_RENAME;
}
-#line 37236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37342 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1125: /* alter_list_item: RENAME COLUMN_SYM opt_if_exists_table_element ident TO_SYM ident */
-#line 7705 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1135: /* alter_list_item: RENAME COLUMN_SYM opt_if_exists_table_element ident TO_SYM ident */
+#line 7833 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_alter_list((yyvsp[-2].ident_sys), (yyvsp[0].ident_sys), (yyvsp[-3].num))))
MYSQL_YYABORT;
}
-#line 37245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37351 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1126: /* alter_list_item: RENAME key_or_index opt_if_exists_table_element field_ident TO_SYM field_ident */
-#line 7710 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1136: /* alter_list_item: RENAME key_or_index opt_if_exists_table_element field_ident TO_SYM field_ident */
+#line 7838 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_rename_key *ak= new (thd->mem_root)
@@ -37255,81 +37361,83 @@ yyreduce:
lex->alter_info.alter_rename_key_list.push_back(ak);
lex->alter_info.flags|= ALTER_RENAME_INDEX;
}
-#line 37259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1127: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default */
-#line 7720 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1137: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default */
+#line 7848 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->add_alter_list_item_convert_to_charset((yyvsp[0].charset)))
+ if (Lex->add_alter_list_item_convert_to_charset(
+ thd, thd->variables.character_set_collations, (yyvsp[0].charset)))
MYSQL_YYABORT;
}
-#line 37268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37375 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1128: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default COLLATE_SYM collation_name_or_default */
-#line 7726 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1138: /* alter_list_item: CONVERT_SYM TO_SYM charset charset_name_or_default COLLATE_SYM collation_name_or_default */
+#line 7855 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (Lex->add_alter_list_item_convert_to_charset((yyvsp[-2].charset), (yyvsp[0].Lex_extended_collation)))
+ if (Lex->add_alter_list_item_convert_to_charset(
+ thd, thd->variables.character_set_collations, (yyvsp[-2].charset), (yyvsp[0].Lex_extended_collation)))
MYSQL_YYABORT;
}
-#line 37277 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37385 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1129: /* alter_list_item: create_table_options_space_separated */
-#line 7731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1139: /* alter_list_item: create_table_options_space_separated */
+#line 7861 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.flags|= ALTER_OPTIONS;
}
-#line 37286 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37394 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1130: /* alter_list_item: FORCE_SYM */
-#line 7736 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1140: /* alter_list_item: FORCE_SYM */
+#line 7866 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_RECREATE;
}
-#line 37294 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37402 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1131: /* alter_list_item: alter_order_clause */
-#line 7740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1141: /* alter_list_item: alter_order_clause */
+#line 7870 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->alter_info.flags|= ALTER_ORDER;
}
-#line 37303 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1134: /* alter_list_item: ADD SYSTEM VERSIONING_SYM */
-#line 7747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1144: /* alter_list_item: ADD SYSTEM VERSIONING_SYM */
+#line 7877 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_ADD_SYSTEM_VERSIONING;
Lex->create_info.options|= HA_VERSIONED_TABLE;
}
-#line 37312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1135: /* alter_list_item: DROP SYSTEM VERSIONING_SYM */
-#line 7752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1145: /* alter_list_item: DROP SYSTEM VERSIONING_SYM */
+#line 7882 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_DROP_SYSTEM_VERSIONING;
Lex->create_info.options&= ~HA_VERSIONED_TABLE;
}
-#line 37321 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37429 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1136: /* alter_list_item: DROP PERIOD_SYM FOR_SYSTEM_TIME_SYM */
-#line 7757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1146: /* alter_list_item: DROP PERIOD_SYM FOR_SYSTEM_TIME_SYM */
+#line 7887 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.flags|= ALTER_DROP_PERIOD;
}
-#line 37329 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37437 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1137: /* alter_list_item: DROP PERIOD_SYM opt_if_exists_table_element FOR_SYM ident */
-#line 7761 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1147: /* alter_list_item: DROP PERIOD_SYM opt_if_exists_table_element FOR_SYM ident */
+#line 7891 "/home/buildbot/git/sql/sql_yacc.yy"
{
Alter_drop *ad= new Alter_drop(Alter_drop::PERIOD, (yyvsp[0].ident_sys).str, (yyvsp[-2].num));
if (unlikely(ad == NULL))
@@ -37337,215 +37445,231 @@ yyreduce:
Lex->alter_info.drop_list.push_back(ad, thd->mem_root);
Lex->alter_info.flags|= ALTER_DROP_CHECK_CONSTRAINT;
}
-#line 37341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37449 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1149: /* opt_without_validation: WITH VALIDATION_SYM */
+#line 7903 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->without_validation= 0;
+ }
+#line 37457 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1150: /* opt_without_validation: WITHOUT VALIDATION_SYM */
+#line 7907 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->without_validation= 1;
+ }
+#line 37465 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1143: /* alter_algorithm_option: ALGORITHM_SYM opt_equal DEFAULT */
-#line 7780 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1156: /* alter_algorithm_option: ALGORITHM_SYM opt_equal DEFAULT */
+#line 7922 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.set_requested_algorithm(
Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT);
}
-#line 37350 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37474 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1144: /* alter_algorithm_option: ALGORITHM_SYM opt_equal ident */
-#line 7785 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1157: /* alter_algorithm_option: ALGORITHM_SYM opt_equal ident */
+#line 7927 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->alter_info.set_requested_algorithm(&(yyvsp[0].ident_sys))))
my_yyabort_error((ER_UNKNOWN_ALTER_ALGORITHM, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 37359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1145: /* alter_lock_option: LOCK_SYM opt_equal DEFAULT */
-#line 7793 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1158: /* alter_lock_option: LOCK_SYM opt_equal DEFAULT */
+#line 7935 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.requested_lock=
Alter_info::ALTER_TABLE_LOCK_DEFAULT;
}
-#line 37368 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37492 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1146: /* alter_lock_option: LOCK_SYM opt_equal ident */
-#line 7798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1159: /* alter_lock_option: LOCK_SYM opt_equal ident */
+#line 7940 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->alter_info.set_requested_lock(&(yyvsp[0].ident_sys))))
my_yyabort_error((ER_UNKNOWN_ALTER_LOCK, MYF(0), (yyvsp[0].ident_sys).str));
}
-#line 37377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37501 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1147: /* opt_column: %empty */
-#line 7805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1160: /* opt_column: %empty */
+#line 7947 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37507 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1148: /* opt_column: COLUMN_SYM */
-#line 7806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1161: /* opt_column: COLUMN_SYM */
+#line 7948 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37513 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1149: /* opt_ignore: %empty */
-#line 7810 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1162: /* opt_ignore: %empty */
+#line 7952 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 0;}
-#line 37395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37519 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1150: /* opt_ignore: IGNORE_SYM */
-#line 7811 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1163: /* opt_ignore: IGNORE_SYM */
+#line 7953 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1;}
-#line 37401 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37525 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1151: /* $@114: %empty */
-#line 7815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1164: /* $@114: %empty */
+#line 7957 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 0;}
-#line 37407 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37531 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1157: /* alter_option: IGNORE_SYM */
-#line 7829 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1170: /* alter_option: IGNORE_SYM */
+#line 7971 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1;}
-#line 37413 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37537 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1158: /* alter_option: ONLINE_SYM */
-#line 7831 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1171: /* alter_option: ONLINE_SYM */
+#line 7973 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.requested_lock=
Alter_info::ALTER_TABLE_LOCK_NONE;
}
-#line 37422 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37546 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1159: /* opt_restrict: %empty */
-#line 7838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1172: /* opt_restrict: %empty */
+#line 7980 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->drop_mode= DROP_DEFAULT; }
-#line 37428 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37552 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1160: /* opt_restrict: RESTRICT */
-#line 7839 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1173: /* opt_restrict: RESTRICT */
+#line 7981 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->drop_mode= DROP_RESTRICT; }
-#line 37434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37558 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1161: /* opt_restrict: CASCADE */
-#line 7840 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1174: /* opt_restrict: CASCADE */
+#line 7982 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->drop_mode= DROP_CASCADE; }
-#line 37440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37564 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1162: /* opt_place: %empty */
-#line 7844 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1175: /* opt_place: %empty */
+#line 7986 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 37446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1163: /* opt_place: AFTER_SYM ident */
-#line 7846 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1176: /* opt_place: AFTER_SYM ident */
+#line 7988 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str)= (yyvsp[0].ident_sys);
Lex->alter_info.flags |= ALTER_COLUMN_ORDER;
}
-#line 37455 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37579 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1164: /* opt_place: FIRST_SYM */
-#line 7851 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1177: /* opt_place: FIRST_SYM */
+#line 7993 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str).str= first_keyword;
(yyval.lex_str).length= 5; /* Length of "first" */
Lex->alter_info.flags |= ALTER_COLUMN_ORDER;
}
-#line 37465 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1165: /* opt_to: %empty */
-#line 7859 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1178: /* opt_to: %empty */
+#line 8001 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37595 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1166: /* opt_to: TO_SYM */
-#line 7860 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1179: /* opt_to: TO_SYM */
+#line 8002 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37477 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37601 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1167: /* opt_to: '=' */
-#line 7861 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1180: /* opt_to: '=' */
+#line 8003 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37607 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1168: /* opt_to: AS */
-#line 7862 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1181: /* opt_to: AS */
+#line 8004 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37613 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1169: /* $@115: %empty */
-#line 7867 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1182: /* $@115: %empty */
+#line 8009 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_START;
lex->type = 0;
/* If you change this code don't forget to update SLAVE START too */
}
-#line 37500 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1170: /* slave: START_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel $@115 slave_until */
-#line 7874 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1183: /* slave: START_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel $@115 slave_until */
+#line 8016 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37506 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1171: /* $@116: %empty */
-#line 7876 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1184: /* $@116: %empty */
+#line 8018 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_ALL_START;
lex->type = 0;
/* If you change this code don't forget to update STOP SLAVE too */
}
-#line 37517 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37641 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1172: /* slave: START_SYM ALL SLAVES slave_thread_opts $@116 */
-#line 7882 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1185: /* slave: START_SYM ALL SLAVES slave_thread_opts $@116 */
+#line 8024 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37647 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1173: /* slave: STOP_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel */
-#line 7884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1186: /* slave: STOP_SYM SLAVE optional_connection_name slave_thread_opts optional_for_channel */
+#line 8026 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_STOP;
lex->type = 0;
/* If you change this code don't forget to update SLAVE STOP too */
}
-#line 37534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37658 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1174: /* slave: STOP_SYM ALL SLAVES slave_thread_opts */
-#line 7891 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1187: /* slave: STOP_SYM ALL SLAVES slave_thread_opts */
+#line 8033 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_SLAVE_ALL_STOP;
lex->type = 0;
/* If you change this code don't forget to update SLAVE STOP too */
}
-#line 37545 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1175: /* start: START_SYM TRANSACTION_SYM opt_start_transaction_option_list */
-#line 7901 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1188: /* start: START_SYM TRANSACTION_SYM opt_start_transaction_option_list */
+#line 8043 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_BEGIN;
@@ -37558,103 +37682,103 @@ yyreduce:
}
lex->start_transaction_opt= (yyvsp[0].num);
}
-#line 37562 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37686 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1176: /* opt_start_transaction_option_list: %empty */
-#line 7917 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1189: /* opt_start_transaction_option_list: %empty */
+#line 8059 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= 0;
}
-#line 37570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37694 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1177: /* opt_start_transaction_option_list: start_transaction_option_list */
-#line 7921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1190: /* opt_start_transaction_option_list: start_transaction_option_list */
+#line 8063 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (yyvsp[0].num);
}
-#line 37578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1178: /* start_transaction_option_list: start_transaction_option */
-#line 7928 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1191: /* start_transaction_option_list: start_transaction_option */
+#line 8070 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (yyvsp[0].num);
}
-#line 37586 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37710 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1179: /* start_transaction_option_list: start_transaction_option_list ',' start_transaction_option */
-#line 7932 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1192: /* start_transaction_option_list: start_transaction_option_list ',' start_transaction_option */
+#line 8074 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (yyvsp[-2].num) | (yyvsp[0].num);
}
-#line 37594 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37718 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1180: /* start_transaction_option: WITH CONSISTENT_SYM SNAPSHOT_SYM */
-#line 7939 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1193: /* start_transaction_option: WITH CONSISTENT_SYM SNAPSHOT_SYM */
+#line 8081 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= MYSQL_START_TRANS_OPT_WITH_CONS_SNAPSHOT;
}
-#line 37602 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1181: /* start_transaction_option: READ_SYM ONLY_SYM */
-#line 7943 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1194: /* start_transaction_option: READ_SYM ONLY_SYM */
+#line 8085 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= MYSQL_START_TRANS_OPT_READ_ONLY;
}
-#line 37610 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1182: /* start_transaction_option: READ_SYM WRITE_SYM */
-#line 7947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1195: /* start_transaction_option: READ_SYM WRITE_SYM */
+#line 8089 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= MYSQL_START_TRANS_OPT_READ_WRITE;
}
-#line 37618 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37742 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1183: /* $@117: %empty */
-#line 7953 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1196: /* $@117: %empty */
+#line 8095 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->slave_thd_opt= 0; }
-#line 37624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1184: /* slave_thread_opts: $@117 slave_thread_opt_list */
-#line 7955 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1197: /* slave_thread_opts: $@117 slave_thread_opt_list */
+#line 8097 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37754 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1187: /* slave_thread_opt: %empty */
-#line 7964 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1200: /* slave_thread_opt: %empty */
+#line 8106 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1188: /* slave_thread_opt: SQL_THREAD */
-#line 7965 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1201: /* slave_thread_opt: SQL_THREAD */
+#line 8107 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->slave_thd_opt|=SLAVE_SQL; }
-#line 37642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1189: /* slave_thread_opt: RELAY_THREAD */
-#line 7966 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1202: /* slave_thread_opt: RELAY_THREAD */
+#line 8108 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->slave_thd_opt|=SLAVE_IO; }
-#line 37648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37772 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1190: /* slave_until: %empty */
-#line 7970 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1203: /* slave_until: %empty */
+#line 8112 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1191: /* slave_until: UNTIL_SYM slave_until_opts */
-#line 7972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1204: /* slave_until: UNTIL_SYM slave_until_opts */
+#line 8114 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(((lex->mi.log_file_name || lex->mi.pos) &&
@@ -37663,60 +37787,79 @@ yyreduce:
(lex->mi.relay_log_name && lex->mi.relay_log_pos))))
my_yyabort_error((ER_BAD_SLAVE_UNTIL_COND, MYF(0)));
}
-#line 37667 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37791 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1192: /* slave_until: UNTIL_SYM MASTER_GTID_POS_SYM '=' TEXT_STRING_sys */
-#line 7981 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1205: /* slave_until: UNTIL_SYM MASTER_GTID_POS_SYM '=' TEXT_STRING_sys */
+#line 8123 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mi.gtid_pos_str = (yyvsp[0].lex_str);
+ Lex->mi.is_until_before_gtids= false;
}
-#line 37675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37800 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1195: /* $@118: %empty */
-#line 7993 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1206: /* slave_until: UNTIL_SYM SQL_AFTER_GTIDS_SYM '=' TEXT_STRING_sys */
+#line 8128 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->mi.gtid_pos_str = (yyvsp[0].lex_str);
+ Lex->mi.is_until_before_gtids= false;
+ }
+#line 37809 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1207: /* slave_until: UNTIL_SYM SQL_BEFORE_GTIDS_SYM '=' TEXT_STRING_sys */
+#line 8133 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ Lex->mi.gtid_pos_str = (yyvsp[0].lex_str);
+ Lex->mi.is_until_before_gtids= true;
+ }
+#line 37818 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1210: /* $@118: %empty */
+#line 8146 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_CHECKSUM;
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 37686 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1196: /* checksum: CHECKSUM_SYM table_or_tables $@118 table_list opt_checksum_type */
-#line 8000 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1211: /* checksum: CHECKSUM_SYM table_or_tables $@118 table_list opt_checksum_type */
+#line 8153 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37692 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37835 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1197: /* opt_checksum_type: %empty */
-#line 8004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1212: /* opt_checksum_type: %empty */
+#line 8157 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags= 0; }
-#line 37698 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1198: /* opt_checksum_type: QUICK */
-#line 8005 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1213: /* opt_checksum_type: QUICK */
+#line 8158 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags= T_QUICK; }
-#line 37704 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37847 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1199: /* opt_checksum_type: EXTENDED_SYM */
-#line 8006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1214: /* opt_checksum_type: EXTENDED_SYM */
+#line 8159 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags= T_EXTEND; }
-#line 37710 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1201: /* $@119: %empty */
-#line 8012 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1216: /* $@119: %empty */
+#line 8165 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->table_type= TABLE_TYPE_VIEW; }
-#line 37716 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37859 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1203: /* $@120: %empty */
-#line 8018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1218: /* $@120: %empty */
+#line 8171 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_REPAIR;
@@ -37726,11 +37869,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 37730 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1204: /* repair: REPAIR opt_no_write_to_binlog $@120 repair_table_or_view */
-#line 8028 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1219: /* repair: REPAIR opt_no_write_to_binlog $@120 repair_table_or_view */
+#line 8181 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -37738,71 +37881,71 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37742 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37885 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1205: /* opt_mi_repair_type: %empty */
-#line 8038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1220: /* opt_mi_repair_type: %empty */
+#line 8191 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags = T_MEDIUM; }
-#line 37748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37891 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1206: /* opt_mi_repair_type: mi_repair_types */
-#line 8039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1221: /* opt_mi_repair_type: mi_repair_types */
+#line 8192 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37754 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37897 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1207: /* mi_repair_types: mi_repair_type */
-#line 8043 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1222: /* mi_repair_types: mi_repair_type */
+#line 8196 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37903 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1208: /* mi_repair_types: mi_repair_type mi_repair_types */
-#line 8044 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1223: /* mi_repair_types: mi_repair_type mi_repair_types */
+#line 8197 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37909 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1209: /* mi_repair_type: QUICK */
-#line 8048 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1224: /* mi_repair_type: QUICK */
+#line 8201 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_QUICK; }
-#line 37772 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1210: /* mi_repair_type: EXTENDED_SYM */
-#line 8049 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1225: /* mi_repair_type: EXTENDED_SYM */
+#line 8202 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_EXTEND; }
-#line 37778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1211: /* mi_repair_type: USE_FRM */
-#line 8050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1226: /* mi_repair_type: USE_FRM */
+#line 8203 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_USEFRM; }
-#line 37784 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37927 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1212: /* opt_view_repair_type: %empty */
-#line 8054 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1227: /* opt_view_repair_type: %empty */
+#line 8207 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 37790 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37933 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1213: /* opt_view_repair_type: FOR_SYM UPGRADE_SYM */
-#line 8055 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1228: /* opt_view_repair_type: FOR_SYM UPGRADE_SYM */
+#line 8208 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; }
-#line 37796 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37939 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1214: /* opt_view_repair_type: FROM MYSQL_SYM */
-#line 8056 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1229: /* opt_view_repair_type: FROM MYSQL_SYM */
+#line 8209 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FROM_MYSQL; }
-#line 37802 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1215: /* $@121: %empty */
-#line 8061 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1230: /* $@121: %empty */
+#line 8214 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_ANALYZE;
@@ -37812,11 +37955,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 37816 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1216: /* analyze: ANALYZE_SYM opt_no_write_to_binlog table_or_tables $@121 analyze_table_list */
-#line 8071 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1231: /* analyze: ANALYZE_SYM opt_no_write_to_binlog table_or_tables $@121 analyze_table_list */
+#line 8224 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -37824,161 +37967,161 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 37828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37971 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1220: /* opt_persistent_stat_clause: %empty */
-#line 8091 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1235: /* opt_persistent_stat_clause: %empty */
+#line 8244 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37977 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1221: /* opt_persistent_stat_clause: PERSISTENT_SYM FOR_SYM persistent_stat_spec */
-#line 8093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1236: /* opt_persistent_stat_clause: PERSISTENT_SYM FOR_SYM persistent_stat_spec */
+#line 8246 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->lex->with_persistent_for_clause= TRUE;
}
-#line 37842 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1222: /* persistent_stat_spec: ALL */
-#line 8100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1237: /* persistent_stat_spec: ALL */
+#line 8253 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37848 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37991 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1223: /* persistent_stat_spec: COLUMNS persistent_column_stat_spec INDEXES persistent_index_stat_spec */
-#line 8102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1238: /* persistent_stat_spec: COLUMNS persistent_column_stat_spec INDEXES persistent_index_stat_spec */
+#line 8255 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37854 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 37997 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1224: /* persistent_column_stat_spec: ALL */
-#line 8106 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1239: /* persistent_column_stat_spec: ALL */
+#line 8259 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37860 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1225: /* $@122: %empty */
-#line 8108 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1240: /* $@122: %empty */
+#line 8261 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
lex->column_list= new (thd->mem_root) List<LEX_STRING>;
if (unlikely(lex->column_list == NULL))
MYSQL_YYABORT;
}
-#line 37871 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38014 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1226: /* persistent_column_stat_spec: '(' $@122 table_column_list ')' */
-#line 8116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1241: /* persistent_column_stat_spec: '(' $@122 table_column_list ')' */
+#line 8269 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 37877 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38020 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1227: /* persistent_index_stat_spec: ALL */
-#line 8120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1242: /* persistent_index_stat_spec: ALL */
+#line 8273 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37883 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38026 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1228: /* $@123: %empty */
-#line 8122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1243: /* $@123: %empty */
+#line 8275 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
lex->index_list= new (thd->mem_root) List<LEX_STRING>;
if (unlikely(lex->index_list == NULL))
MYSQL_YYABORT;
}
-#line 37894 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1229: /* persistent_index_stat_spec: '(' $@123 table_index_list ')' */
-#line 8130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1244: /* persistent_index_stat_spec: '(' $@123 table_index_list ')' */
+#line 8283 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 37900 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38043 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1230: /* table_column_list: %empty */
-#line 8135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1245: /* table_column_list: %empty */
+#line 8288 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37906 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1231: /* table_column_list: ident */
-#line 8137 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1246: /* table_column_list: ident */
+#line 8290 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->column_list->push_back((LEX_STRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_STRING)), thd->mem_root);
}
-#line 37915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38058 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1232: /* table_column_list: table_column_list ',' ident */
-#line 8142 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1247: /* table_column_list: table_column_list ',' ident */
+#line 8295 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->column_list->push_back((LEX_STRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_STRING)), thd->mem_root);
}
-#line 37924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38067 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1233: /* table_index_list: %empty */
-#line 8150 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1248: /* table_index_list: %empty */
+#line 8303 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 37930 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1236: /* table_index_name: ident */
-#line 8157 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1251: /* table_index_name: ident */
+#line 8310 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->index_list->push_back((LEX_STRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_STRING)),
thd->mem_root);
}
-#line 37940 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1237: /* table_index_name: PRIMARY_SYM */
-#line 8164 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1252: /* table_index_name: PRIMARY_SYM */
+#line 8317 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_STRING str= {(char*) "PRIMARY", 7};
Lex->index_list->push_back((LEX_STRING*)
thd->memdup(&str, sizeof(LEX_STRING)),
thd->mem_root);
}
-#line 37951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38094 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1238: /* binlog_base64_event: BINLOG_SYM TEXT_STRING_sys */
-#line 8174 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1253: /* binlog_base64_event: BINLOG_SYM TEXT_STRING_sys */
+#line 8327 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT;
Lex->comment= (yyvsp[0].lex_str);
Lex->ident.str= NULL;
Lex->ident.length= 0;
}
-#line 37962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1239: /* binlog_base64_event: BINLOG_SYM '@' ident_or_text ',' '@' ident_or_text */
-#line 8182 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1254: /* binlog_base64_event: BINLOG_SYM '@' ident_or_text ',' '@' ident_or_text */
+#line 8335 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT;
Lex->comment= (yyvsp[-3].lex_str);
Lex->ident= (yyvsp[0].lex_str);
}
-#line 37972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38115 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1241: /* $@124: %empty */
-#line 8192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1256: /* $@124: %empty */
+#line 8345 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->table_type= TABLE_TYPE_VIEW; }
-#line 37978 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38121 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1243: /* $@125: %empty */
-#line 8197 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1258: /* $@125: %empty */
+#line 8350 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
@@ -37988,11 +38131,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 37992 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38135 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1244: /* check: CHECK_SYM $@125 check_view_or_table */
-#line 8207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1259: /* check: CHECK_SYM $@125 check_view_or_table */
+#line 8360 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
if (unlikely(lex->sphead))
@@ -38002,83 +38145,83 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 38006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1245: /* opt_mi_check_type: %empty */
-#line 8219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1260: /* opt_mi_check_type: %empty */
+#line 8372 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags = T_MEDIUM; }
-#line 38012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38155 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1246: /* opt_mi_check_type: mi_check_types */
-#line 8220 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1261: /* opt_mi_check_type: mi_check_types */
+#line 8373 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1247: /* mi_check_types: mi_check_type */
-#line 8224 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1262: /* mi_check_types: mi_check_type */
+#line 8377 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1248: /* mi_check_types: mi_check_type mi_check_types */
-#line 8225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1263: /* mi_check_types: mi_check_type mi_check_types */
+#line 8378 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 38030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1249: /* mi_check_type: QUICK */
-#line 8229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1264: /* mi_check_type: QUICK */
+#line 8382 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_QUICK; }
-#line 38036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1250: /* mi_check_type: FAST_SYM */
-#line 8230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1265: /* mi_check_type: FAST_SYM */
+#line 8383 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_FAST; }
-#line 38042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1251: /* mi_check_type: MEDIUM_SYM */
-#line 8231 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1266: /* mi_check_type: MEDIUM_SYM */
+#line 8384 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_MEDIUM; }
-#line 38048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1252: /* mi_check_type: EXTENDED_SYM */
-#line 8232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1267: /* mi_check_type: EXTENDED_SYM */
+#line 8385 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_EXTEND; }
-#line 38054 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38197 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1253: /* mi_check_type: CHANGED */
-#line 8233 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1268: /* mi_check_type: CHANGED */
+#line 8386 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; }
-#line 38060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1254: /* mi_check_type: FOR_SYM UPGRADE_SYM */
-#line 8234 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1269: /* mi_check_type: FOR_SYM UPGRADE_SYM */
+#line 8387 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; }
-#line 38066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1255: /* opt_view_check_type: %empty */
-#line 8238 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1270: /* opt_view_check_type: %empty */
+#line 8391 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 38072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1256: /* opt_view_check_type: FOR_SYM UPGRADE_SYM */
-#line 8239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1271: /* opt_view_check_type: FOR_SYM UPGRADE_SYM */
+#line 8392 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; }
-#line 38078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38221 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1257: /* $@126: %empty */
-#line 8244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1272: /* $@126: %empty */
+#line 8397 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_OPTIMIZE;
@@ -38088,11 +38231,11 @@ yyreduce:
/* Will be overridden during execution. */
YYPS->m_lock_type= TL_UNLOCK;
}
-#line 38092 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1258: /* optimize: OPTIMIZE opt_no_write_to_binlog table_or_tables $@126 table_list opt_lock_wait_timeout */
-#line 8254 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1273: /* optimize: OPTIMIZE opt_no_write_to_binlog table_or_tables $@126 table_list opt_lock_wait_timeout */
+#line 8407 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -38100,76 +38243,76 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 38104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1259: /* opt_no_write_to_binlog: %empty */
-#line 8264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1274: /* opt_no_write_to_binlog: %empty */
+#line 8417 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 38110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1260: /* opt_no_write_to_binlog: NO_WRITE_TO_BINLOG */
-#line 8265 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1275: /* opt_no_write_to_binlog: NO_WRITE_TO_BINLOG */
+#line 8418 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 38116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1261: /* opt_no_write_to_binlog: LOCAL_SYM */
-#line 8266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1276: /* opt_no_write_to_binlog: LOCAL_SYM */
+#line 8419 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 38122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1262: /* $@127: %empty */
-#line 8271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1277: /* $@127: %empty */
+#line 8424 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_RENAME_TABLE;
Lex->create_info.set((yyvsp[0].object_ddl_options));
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 38133 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38276 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1263: /* rename: RENAME table_or_tables opt_if_exists $@127 table_to_table_list */
-#line 8278 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1278: /* rename: RENAME table_or_tables opt_if_exists $@127 table_to_table_list */
+#line 8431 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 38141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38284 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1264: /* rename: RENAME USER_SYM clear_privileges rename_list */
-#line 8282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1279: /* rename: RENAME USER_SYM clear_privileges rename_list */
+#line 8435 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_RENAME_USER;
}
-#line 38149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38292 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1265: /* rename_list: user TO_SYM user */
-#line 8289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1280: /* rename_list: user TO_SYM user */
+#line 8442 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[-2].lex_user), thd->mem_root) ||
Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 38159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1266: /* rename_list: rename_list ',' user TO_SYM user */
-#line 8295 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1281: /* rename_list: rename_list ',' user TO_SYM user */
+#line 8448 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[-2].lex_user), thd->mem_root) ||
Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 38169 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1269: /* table_to_table: table_ident opt_lock_wait_timeout TO_SYM table_ident */
-#line 8309 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1284: /* table_to_table: table_ident opt_lock_wait_timeout TO_SYM table_ident */
+#line 8462 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
SELECT_LEX *sl= lex->current_select;
@@ -38181,29 +38324,29 @@ yyreduce:
TL_IGNORE, MDL_EXCLUSIVE)))
MYSQL_YYABORT;
}
-#line 38185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38328 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1270: /* $@128: %empty */
-#line 8324 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1285: /* $@128: %empty */
+#line 8477 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.reset();
}
-#line 38193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38336 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1271: /* keycache: CACHE_SYM INDEX_SYM $@128 keycache_list_or_parts IN_SYM key_cache_name */
-#line 8328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1286: /* keycache: CACHE_SYM INDEX_SYM $@128 keycache_list_or_parts IN_SYM key_cache_name */
+#line 8481 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ASSIGN_TO_KEYCACHE;
lex->ident= (yyvsp[0].lex_str);
}
-#line 38203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38346 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1276: /* assign_to_keycache: table_ident cache_keys_spec */
-#line 8347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1291: /* assign_to_keycache: table_ident cache_keys_spec */
+#line 8500 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL, 0, TL_READ,
MDL_SHARED_READ,
@@ -38211,11 +38354,11 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 38215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1277: /* assign_to_keycache_parts: table_ident adm_partition cache_keys_spec */
-#line 8358 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1292: /* assign_to_keycache_parts: table_ident adm_partition cache_keys_spec */
+#line 8511 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-2].table), NULL, 0, TL_READ,
MDL_SHARED_READ,
@@ -38223,23 +38366,23 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 38227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38370 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1278: /* key_cache_name: ident */
-#line 8368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1293: /* key_cache_name: ident */
+#line 8521 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 38233 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38376 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1279: /* key_cache_name: DEFAULT */
-#line 8369 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.lex_str) = default_key_cache_base; }
-#line 38239 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ case 1294: /* key_cache_name: DEFAULT */
+#line 8522 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.lex_str) = default_base; }
+#line 38382 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1280: /* $@129: %empty */
-#line 8374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1295: /* $@129: %empty */
+#line 8527 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_PRELOAD_KEYS;
@@ -38247,19 +38390,19 @@ yyreduce:
if (lex->main_select_push())
MYSQL_YYABORT;
}
-#line 38251 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38394 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1281: /* preload: LOAD INDEX_SYM INTO CACHE_SYM $@129 preload_list_or_parts */
-#line 8382 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1296: /* preload: LOAD INDEX_SYM INTO CACHE_SYM $@129 preload_list_or_parts */
+#line 8535 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 38259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38402 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1286: /* preload_keys: table_ident cache_keys_spec opt_ignore_leaves */
-#line 8399 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1301: /* preload_keys: table_ident cache_keys_spec opt_ignore_leaves */
+#line 8552 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-2].table), NULL, (yyvsp[0].num), TL_READ,
MDL_SHARED_READ,
@@ -38267,11 +38410,11 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 38271 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38414 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1287: /* preload_keys_parts: table_ident adm_partition cache_keys_spec opt_ignore_leaves */
-#line 8410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1302: /* preload_keys_parts: table_ident adm_partition cache_keys_spec opt_ignore_leaves */
+#line 8563 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-3].table), NULL, (yyvsp[0].num), TL_READ,
MDL_SHARED_READ,
@@ -38279,80 +38422,80 @@ yyreduce:
pop_index_hints())))
MYSQL_YYABORT;
}
-#line 38283 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38426 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1288: /* $@130: %empty */
-#line 8421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1303: /* $@130: %empty */
+#line 8574 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->alter_info.partition_flags|= ALTER_PARTITION_ADMIN;
}
-#line 38291 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1290: /* $@131: %empty */
-#line 8428 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1305: /* $@131: %empty */
+#line 8581 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->first_select_lex()->alloc_index_hints(thd);
Select->set_index_hint_type(INDEX_HINT_USE,
INDEX_HINT_MASK_ALL);
}
-#line 38301 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38444 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1292: /* cache_key_list_or_empty: %empty */
-#line 8437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1307: /* cache_key_list_or_empty: %empty */
+#line 8590 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 38307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38450 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1294: /* opt_ignore_leaves: %empty */
-#line 8443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1309: /* opt_ignore_leaves: %empty */
+#line 8596 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 38313 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1295: /* opt_ignore_leaves: IGNORE_SYM LEAVES */
-#line 8444 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1310: /* opt_ignore_leaves: IGNORE_SYM LEAVES */
+#line 8597 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_OPTION_IGNORE_LEAVES; }
-#line 38319 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1296: /* $@132: %empty */
-#line 8454 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1311: /* $@132: %empty */
+#line 8607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex_unit)->fake_select_lex ?
(yyvsp[0].select_lex_unit)->fake_select_lex :
(yyvsp[0].select_lex_unit)->first_select()))
MYSQL_YYABORT;
}
-#line 38330 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38473 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1297: /* select: query_expression_no_with_clause $@132 opt_procedure_or_into */
-#line 8461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1312: /* select: query_expression_no_with_clause $@132 opt_procedure_or_into */
+#line 8614 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select();
(yyvsp[-2].select_lex_unit)->set_with_clause(NULL);
if (Lex->select_finalize((yyvsp[-2].select_lex_unit), (yyvsp[0].select_lock)))
MYSQL_YYABORT;
}
-#line 38341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38484 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1298: /* $@133: %empty */
-#line 8468 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1313: /* $@133: %empty */
+#line 8621 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex_unit)->fake_select_lex ?
(yyvsp[0].select_lex_unit)->fake_select_lex :
(yyvsp[0].select_lex_unit)->first_select()))
MYSQL_YYABORT;
}
-#line 38352 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1299: /* select: with_clause query_expression_no_with_clause $@133 opt_procedure_or_into */
-#line 8475 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1314: /* select: with_clause query_expression_no_with_clause $@133 opt_procedure_or_into */
+#line 8628 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select();
(yyvsp[-2].select_lex_unit)->set_with_clause((yyvsp[-3].with_clause));
@@ -38360,20 +38503,20 @@ yyreduce:
if (Lex->select_finalize((yyvsp[-2].select_lex_unit), (yyvsp[0].select_lock)))
MYSQL_YYABORT;
}
-#line 38364 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38507 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1300: /* $@134: %empty */
-#line 8486 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1315: /* $@134: %empty */
+#line 8639 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex)))
MYSQL_YYABORT;
}
-#line 38373 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1301: /* select_into: select_into_query_specification $@134 opt_order_limit_lock */
-#line 8491 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1316: /* select_into: select_into_query_specification $@134 opt_order_limit_lock */
+#line 8644 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX_UNIT *unit;
if (!(unit = Lex->create_unit((yyvsp[-2].select_lex))))
@@ -38383,20 +38526,20 @@ yyreduce:
if (Lex->select_finalize(unit))
MYSQL_YYABORT;
}
-#line 38387 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1302: /* $@135: %empty */
-#line 8502 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1317: /* $@135: %empty */
+#line 8655 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->push_select((yyvsp[0].select_lex)))
MYSQL_YYABORT;
}
-#line 38396 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38539 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1303: /* select_into: with_clause select_into_query_specification $@135 opt_order_limit_lock */
-#line 8507 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1318: /* select_into: with_clause select_into_query_specification $@135 opt_order_limit_lock */
+#line 8660 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX_UNIT *unit;
if (!(unit = Lex->create_unit((yyvsp[-2].select_lex))))
@@ -38408,41 +38551,41 @@ yyreduce:
if (Lex->select_finalize(unit))
MYSQL_YYABORT;
}
-#line 38412 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38555 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1304: /* simple_table: query_specification */
-#line 8521 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1319: /* simple_table: query_specification */
+#line 8674 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex); }
-#line 38418 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1305: /* simple_table: table_value_constructor */
-#line 8522 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1320: /* simple_table: table_value_constructor */
+#line 8675 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex); }
-#line 38424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38567 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1306: /* $@136: %empty */
-#line 8527 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1321: /* $@136: %empty */
+#line 8680 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->parsed_TVC_start())
MYSQL_YYABORT;
}
-#line 38433 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38576 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1307: /* table_value_constructor: VALUES $@136 values_list */
-#line 8532 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1322: /* table_value_constructor: VALUES $@136 values_list */
+#line 8685 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex)= Lex->parsed_TVC_end()))
MYSQL_YYABORT;
}
-#line 38442 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38585 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1308: /* $@137: %empty */
-#line 8540 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1323: /* $@137: %empty */
+#line 8693 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel;
LEX *lex= Lex;
@@ -38451,74 +38594,74 @@ yyreduce:
sel->init_select();
sel->braces= FALSE;
}
-#line 38455 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38598 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1309: /* $@138: %empty */
-#line 8549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1324: /* $@138: %empty */
+#line 8702 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= SELECT_LIST;
}
-#line 38463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1310: /* query_specification_start: SELECT_SYM $@137 select_options $@138 select_item_list */
-#line 8553 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1325: /* query_specification_start: SELECT_SYM $@137 select_options $@138 select_item_list */
+#line 8706 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
}
-#line 38471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1311: /* query_specification: query_specification_start opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
-#line 8565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1326: /* query_specification: query_specification_start opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
+#line 8718 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lex)= Lex->pop_select();
}
-#line 38479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1312: /* select_into_query_specification: query_specification_start into opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
-#line 8578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1327: /* select_into_query_specification: query_specification_start into opt_from_clause opt_where_clause opt_group_clause opt_having_clause opt_window_clause */
+#line 8731 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lex)= Lex->pop_select();
}
-#line 38487 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1313: /* query_expression: query_expression_no_with_clause */
-#line 8636 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1328: /* query_expression: query_expression_no_with_clause */
+#line 8789 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].select_lex_unit)->set_with_clause(NULL);
(yyval.select_lex_unit)= (yyvsp[0].select_lex_unit);
}
-#line 38496 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38639 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1314: /* query_expression: with_clause query_expression_no_with_clause */
-#line 8642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1329: /* query_expression: with_clause query_expression_no_with_clause */
+#line 8795 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].select_lex_unit)->set_with_clause((yyvsp[-1].with_clause));
(yyvsp[-1].with_clause)->attach_to((yyvsp[0].select_lex_unit)->first_select());
(yyval.select_lex_unit)= (yyvsp[0].select_lex_unit);
}
-#line 38506 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38649 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1315: /* query_expression_no_with_clause: query_expression_body_ext */
-#line 8655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1330: /* query_expression_no_with_clause: query_expression_body_ext */
+#line 8808 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex_unit)= (yyvsp[0].select_lex_unit); }
-#line 38512 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38655 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1316: /* query_expression_no_with_clause: query_expression_body_ext_parens */
-#line 8656 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1331: /* query_expression_no_with_clause: query_expression_body_ext_parens */
+#line 8809 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex_unit)= (yyvsp[0].select_lex_unit); }
-#line 38518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38661 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1317: /* $@139: %empty */
-#line 8671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1332: /* $@139: %empty */
+#line 8824 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].select_lex_unit)->first_select()->next_select())
{
@@ -38526,89 +38669,89 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 38530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1318: /* query_expression_body_ext: query_expression_body $@139 opt_query_expression_tail */
-#line 8679 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1333: /* query_expression_body_ext: query_expression_body $@139 opt_query_expression_tail */
+#line 8832 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].order_limit_lock))
(yyval.select_lex_unit)= (yyvsp[-2].select_lex_unit);
else
(yyval.select_lex_unit)= Lex->add_tail_to_query_expression_body((yyvsp[-2].select_lex_unit), (yyvsp[0].order_limit_lock));
}
-#line 38541 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1319: /* $@140: %empty */
-#line 8686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1334: /* $@140: %empty */
+#line 8839 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->push_select(!(yyvsp[0].select_lex_unit)->first_select()->next_select() ?
(yyvsp[0].select_lex_unit)->first_select() : (yyvsp[0].select_lex_unit)->fake_select_lex);
}
-#line 38550 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1320: /* query_expression_body_ext: query_expression_body_ext_parens $@140 query_expression_tail */
-#line 8691 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1335: /* query_expression_body_ext: query_expression_body_ext_parens $@140 query_expression_tail */
+#line 8844 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex_unit)= Lex->add_tail_to_query_expression_body_ext_parens((yyvsp[-2].select_lex_unit), (yyvsp[0].order_limit_lock))))
MYSQL_YYABORT;
}
-#line 38559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1321: /* query_expression_body_ext_parens: '(' query_expression_body_ext_parens ')' */
-#line 8699 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1336: /* query_expression_body_ext_parens: '(' query_expression_body_ext_parens ')' */
+#line 8852 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex_unit)= (yyvsp[-1].select_lex_unit); }
-#line 38565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1322: /* query_expression_body_ext_parens: '(' query_expression_body_ext ')' */
-#line 8701 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1337: /* query_expression_body_ext_parens: '(' query_expression_body_ext ')' */
+#line 8854 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= (yyvsp[-1].select_lex_unit)->first_select()->next_select() ?
(yyvsp[-1].select_lex_unit)->fake_select_lex : (yyvsp[-1].select_lex_unit)->first_select();
sel->braces= true;
(yyval.select_lex_unit)= (yyvsp[-1].select_lex_unit);
}
-#line 38576 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1323: /* query_expression_body: query_simple */
-#line 8716 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1338: /* query_expression_body: query_simple */
+#line 8869 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->push_select((yyvsp[0].select_lex));
if (!((yyval.select_lex_unit)= Lex->create_unit((yyvsp[0].select_lex))))
MYSQL_YYABORT;
}
-#line 38586 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38729 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1324: /* $@141: %empty */
-#line 8723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1339: /* $@141: %empty */
+#line 8876 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[-1].select_lex_unit)->first_select()->next_select())
{
Lex->pop_select();
}
}
-#line 38597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38740 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1325: /* query_expression_body: query_expression_body unit_type_decl $@141 query_primary */
-#line 8730 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1340: /* query_expression_body: query_expression_body unit_type_decl $@141 query_primary */
+#line 8883 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex_unit)= Lex->add_primary_to_query_expression_body((yyvsp[-3].select_lex_unit), (yyvsp[0].select_lex),
(yyvsp[-2].unit_operation).unit_type,
(yyvsp[-2].unit_operation).distinct)))
MYSQL_YYABORT;
}
-#line 38608 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38751 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1326: /* query_expression_body: query_expression_body_ext_parens unit_type_decl query_primary */
-#line 8739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1341: /* query_expression_body: query_expression_body_ext_parens unit_type_decl query_primary */
+#line 8892 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex_unit)= Lex->add_primary_to_query_expression_body_ext_parens(
(yyvsp[-2].select_lex_unit), (yyvsp[0].select_lex),
@@ -38616,38 +38759,38 @@ yyreduce:
(yyvsp[-1].unit_operation).distinct)))
MYSQL_YYABORT;
}
-#line 38620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38763 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1327: /* query_primary: query_simple */
-#line 8755 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1342: /* query_primary: query_simple */
+#line 8908 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex); }
-#line 38626 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38769 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1328: /* query_primary: query_expression_body_ext_parens */
-#line 8757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1343: /* query_primary: query_expression_body_ext_parens */
+#line 8910 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex_unit)->first_select(); }
-#line 38632 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1329: /* query_simple: simple_table */
-#line 8766 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1344: /* query_simple: simple_table */
+#line 8919 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_lex)= (yyvsp[0].select_lex);}
-#line 38638 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38781 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1330: /* subselect: query_expression */
-#line 8771 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1345: /* subselect: query_expression */
+#line 8924 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.select_lex)= Lex->parsed_subselect((yyvsp[0].select_lex_unit))))
MYSQL_YYABORT;
}
-#line 38647 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38790 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1331: /* subquery: query_expression_body_ext_parens */
-#line 8812 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1346: /* subquery: query_expression_body_ext_parens */
+#line 8965 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].select_lex_unit)->fake_select_lex)
(yyvsp[0].select_lex_unit)->first_select()->braces= false;
@@ -38656,66 +38799,66 @@ yyreduce:
if (!((yyval.select_lex)= Lex->parsed_subselect((yyvsp[0].select_lex_unit))))
MYSQL_YYABORT;
}
-#line 38660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38803 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1332: /* subquery: '(' with_clause query_expression_no_with_clause ')' */
-#line 8821 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1347: /* subquery: '(' with_clause query_expression_no_with_clause ')' */
+#line 8974 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].select_lex_unit)->set_with_clause((yyvsp[-2].with_clause));
(yyvsp[-2].with_clause)->attach_to((yyvsp[-1].select_lex_unit)->first_select());
if (!((yyval.select_lex)= Lex->parsed_subselect((yyvsp[-1].select_lex_unit))))
MYSQL_YYABORT;
}
-#line 38671 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38814 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1336: /* table_reference_list: join_table_list */
-#line 8840 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1351: /* table_reference_list: join_table_list */
+#line 8993 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->context.table_list=
Select->context.first_name_resolution_table=
Select->table_list.first;
}
-#line 38681 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38824 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1339: /* select_options: select_option_list */
-#line 8855 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1354: /* select_options: select_option_list */
+#line 9008 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((Select->options & SELECT_DISTINCT) &&
(Select->options & SELECT_ALL)))
my_yyabort_error((ER_WRONG_USAGE, MYF(0), "ALL", "DISTINCT"));
}
-#line 38691 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1340: /* opt_history_unit: %empty */
-#line 8864 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1355: /* opt_history_unit: %empty */
+#line 9017 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_range_unit)= VERS_TIMESTAMP;
}
-#line 38699 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38842 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1341: /* opt_history_unit: TRANSACTION_SYM */
-#line 8868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1356: /* opt_history_unit: TRANSACTION_SYM */
+#line 9021 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_range_unit)= VERS_TRX_ID;
}
-#line 38707 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38850 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1342: /* opt_history_unit: TIMESTAMP */
-#line 8872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1357: /* opt_history_unit: TIMESTAMP */
+#line 9025 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_range_unit)= VERS_TIMESTAMP;
}
-#line 38715 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38858 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1343: /* history_point: TIMESTAMP TEXT_STRING */
-#line 8879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1358: /* history_point: TIMESTAMP TEXT_STRING */
+#line 9032 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item;
if (!(item= type_handler_datetime.create_literal_item(thd,
@@ -38724,27 +38867,27 @@ yyreduce:
MYSQL_YYABORT;
(yyval.vers_history_point)= Vers_history_point(VERS_TIMESTAMP, item);
}
-#line 38728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38871 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1344: /* history_point: function_call_keyword_timestamp */
-#line 8888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1359: /* history_point: function_call_keyword_timestamp */
+#line 9041 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_history_point)= Vers_history_point(VERS_TIMESTAMP, (yyvsp[0].item));
}
-#line 38736 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38879 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1345: /* history_point: opt_history_unit bit_expr */
-#line 8892 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1360: /* history_point: opt_history_unit bit_expr */
+#line 9045 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.vers_history_point)= Vers_history_point((yyvsp[-1].vers_range_unit), (yyvsp[0].item));
}
-#line 38744 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38887 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1346: /* for_portion_of_time_clause: FOR_SYM PORTION_SYM OF_SYM remember_tok_start ident FROM bit_expr TO_SYM bit_expr */
-#line 8900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1361: /* for_portion_of_time_clause: FOR_SYM PORTION_SYM OF_SYM remember_tok_start ident FROM bit_expr TO_SYM bit_expr */
+#line 9053 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(0 == strcasecmp((yyvsp[-4].ident_sys).str, "SYSTEM_TIME")))
{
@@ -38756,75 +38899,75 @@ yyreduce:
Vers_history_point(VERS_TIMESTAMP, (yyvsp[0].item)),
(yyvsp[-4].ident_sys));
}
-#line 38760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38903 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1347: /* opt_for_portion_of_time_clause: %empty */
-#line 8915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1362: /* opt_for_portion_of_time_clause: %empty */
+#line 9068 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= false;
}
-#line 38768 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38911 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1348: /* opt_for_portion_of_time_clause: for_portion_of_time_clause */
-#line 8919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1363: /* opt_for_portion_of_time_clause: for_portion_of_time_clause */
+#line 9072 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= true;
}
-#line 38776 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38919 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1349: /* opt_for_system_time_clause: %empty */
-#line 8926 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1364: /* opt_for_system_time_clause: %empty */
+#line 9079 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= false;
}
-#line 38784 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38927 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1350: /* opt_for_system_time_clause: FOR_SYSTEM_TIME_SYM system_time_expr */
-#line 8930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1365: /* opt_for_system_time_clause: FOR_SYSTEM_TIME_SYM system_time_expr */
+#line 9083 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= true;
}
-#line 38792 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1351: /* system_time_expr: AS OF_SYM history_point */
-#line 8937 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1366: /* system_time_expr: AS OF_SYM history_point */
+#line 9090 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_AS_OF, (yyvsp[0].vers_history_point));
}
-#line 38800 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38943 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1352: /* system_time_expr: ALL */
-#line 8941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1367: /* system_time_expr: ALL */
+#line 9094 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_ALL);
}
-#line 38808 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1353: /* system_time_expr: FROM history_point TO_SYM history_point */
-#line 8945 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1368: /* system_time_expr: FROM history_point TO_SYM history_point */
+#line 9098 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_FROM_TO, (yyvsp[-2].vers_history_point), (yyvsp[0].vers_history_point));
}
-#line 38816 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1354: /* system_time_expr: BETWEEN_SYM history_point AND_SYM history_point */
-#line 8949 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1369: /* system_time_expr: BETWEEN_SYM history_point AND_SYM history_point */
+#line 9102 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_BETWEEN, (yyvsp[-2].vers_history_point), (yyvsp[0].vers_history_point));
}
-#line 38824 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38967 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1358: /* select_option: SQL_NO_CACHE_SYM */
-#line 8962 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1373: /* select_option: SQL_NO_CACHE_SYM */
+#line 9115 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Allow this flag once per query.
@@ -38833,11 +38976,11 @@ yyreduce:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SQL_NO_CACHE"));
Select->options|= OPTION_NO_QUERY_CACHE;
}
-#line 38837 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1359: /* select_option: SQL_CACHE_SYM */
-#line 8971 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1374: /* select_option: SQL_CACHE_SYM */
+#line 9124 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Allow this flag once per query.
@@ -38846,85 +38989,85 @@ yyreduce:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SQL_CACHE"));
Select->options|= OPTION_TO_QUERY_CACHE;
}
-#line 38850 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 38993 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1360: /* select_lock_type: FOR_SYM UPDATE_SYM opt_lock_wait_timeout_new */
-#line 8984 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1375: /* select_lock_type: FOR_SYM UPDATE_SYM opt_lock_wait_timeout_new */
+#line 9137 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
(yyval.select_lock).defined_lock= TRUE;
(yyval.select_lock).update_lock= TRUE;
}
-#line 38860 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1361: /* select_lock_type: LOCK_SYM IN_SYM SHARE_SYM MODE_SYM opt_lock_wait_timeout_new */
-#line 8990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1376: /* select_lock_type: LOCK_SYM IN_SYM SHARE_SYM MODE_SYM opt_lock_wait_timeout_new */
+#line 9143 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
(yyval.select_lock).defined_lock= TRUE;
(yyval.select_lock).update_lock= FALSE;
}
-#line 38870 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1362: /* opt_select_lock_type: %empty */
-#line 9000 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1377: /* opt_select_lock_type: %empty */
+#line 9153 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
}
-#line 38878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39021 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1363: /* opt_select_lock_type: select_lock_type */
-#line 9004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1378: /* opt_select_lock_type: select_lock_type */
+#line 9157 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
}
-#line 38886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39029 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1364: /* opt_lock_wait_timeout_new: %empty */
-#line 9011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1379: /* opt_lock_wait_timeout_new: %empty */
+#line 9164 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
}
-#line 38894 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1365: /* opt_lock_wait_timeout_new: WAIT_SYM ulong_num */
-#line 9015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1380: /* opt_lock_wait_timeout_new: WAIT_SYM ulong_num */
+#line 9168 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
(yyval.select_lock).defined_timeout= TRUE;
(yyval.select_lock).timeout= (yyvsp[0].ulong_num);
}
-#line 38904 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39047 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1366: /* opt_lock_wait_timeout_new: NOWAIT_SYM */
-#line 9021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1381: /* opt_lock_wait_timeout_new: NOWAIT_SYM */
+#line 9174 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
(yyval.select_lock).defined_timeout= TRUE;
(yyval.select_lock).timeout= 0;
}
-#line 38914 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1367: /* opt_lock_wait_timeout_new: SKIP_SYM LOCKED_SYM */
-#line 9027 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1382: /* opt_lock_wait_timeout_new: SKIP_SYM LOCKED_SYM */
+#line 9180 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
(yyval.select_lock).skip_locked= 1;
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SKIP_LOCKED);
}
-#line 38924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39067 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1370: /* select_item_list: '*' */
-#line 9038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1385: /* select_item_list: '*' */
+#line 9191 "/home/buildbot/git/sql/sql_yacc.yy"
{
bool is_parsing_returning=
thd->lex->current_select->parsing_place ==
@@ -38941,20 +39084,20 @@ yyreduce:
MYSQL_YYABORT;
correct_select->with_wild++;
}
-#line 38945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39088 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1371: /* select_item: remember_name select_sublist_qualified_asterisk remember_end */
-#line 9058 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1386: /* select_item: remember_name select_sublist_qualified_asterisk remember_end */
+#line 9211 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_item_to_list(thd, (yyvsp[-1].item))))
MYSQL_YYABORT;
}
-#line 38954 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39097 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1372: /* select_item: remember_name expr remember_end select_alias */
-#line 9063 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1387: /* select_item: remember_name expr remember_end select_alias */
+#line 9216 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT((yyvsp[-3].simple_string) < (yyvsp[-1].simple_string));
@@ -38973,113 +39116,151 @@ yyreduce:
(yyvsp[-2].item)->set_name(thd, (yyvsp[-3].simple_string), (uint) ((yyvsp[-1].simple_string) - (yyvsp[-3].simple_string)), thd->charset());
}
}
-#line 38977 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1373: /* remember_tok_start: %empty */
-#line 9084 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1388: /* remember_tok_start: %empty */
+#line 9237 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.simple_string)= (char*) YYLIP->get_tok_start();
}
-#line 38985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39128 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1374: /* remember_name: %empty */
-#line 9090 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1389: /* remember_name: %empty */
+#line 9243 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.simple_string)= (char*) YYLIP->get_cpp_tok_start();
}
-#line 38993 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1375: /* remember_end: %empty */
-#line 9096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1390: /* remember_end: %empty */
+#line 9249 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.simple_string)= (char*) YYLIP->get_cpp_tok_end_rtrim();
}
-#line 39001 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39144 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1376: /* select_alias: %empty */
-#line 9102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1391: /* remember_cpp_ptr: %empty */
+#line 9255 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr();
+ }
+#line 39152 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1392: /* remember_start_opt: %empty */
+#line 9261 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (yychar == YYEMPTY)
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr();
+ else
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_start();
+ }
+#line 39163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1393: /* remember_end_opt: %empty */
+#line 9270 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ if (yychar == YYEMPTY)
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr_rtrim();
+ else
+ (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_end_rtrim();
+ }
+#line 39174 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1394: /* remember_lex: %empty */
+#line 9279 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ (yyval.lex)= thd->lex;
+ }
+#line 39182 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 1395: /* select_alias: %empty */
+#line 9285 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=null_clex_str;}
-#line 39007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39188 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1377: /* select_alias: AS ident */
-#line 9103 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1396: /* select_alias: AS ident */
+#line 9286 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys); }
-#line 39013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1378: /* select_alias: AS TEXT_STRING_sys */
-#line 9104 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1397: /* select_alias: AS TEXT_STRING_sys */
+#line 9287 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str); }
-#line 39019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1379: /* select_alias: ident */
-#line 9105 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1398: /* select_alias: ident */
+#line 9288 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys); }
-#line 39025 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1380: /* select_alias: TEXT_STRING_sys */
-#line 9106 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1399: /* select_alias: TEXT_STRING_sys */
+#line 9289 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str); }
-#line 39031 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39212 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1381: /* opt_default_time_precision: %empty */
-#line 9110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1400: /* opt_default_time_precision: %empty */
+#line 9293 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= NOT_FIXED_DEC; }
-#line 39037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39218 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1382: /* opt_default_time_precision: '(' ')' */
-#line 9111 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1401: /* opt_default_time_precision: '(' ')' */
+#line 9294 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= NOT_FIXED_DEC; }
-#line 39043 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39224 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1383: /* opt_default_time_precision: '(' real_ulong_num ')' */
-#line 9112 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1402: /* opt_default_time_precision: '(' real_ulong_num ')' */
+#line 9295 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].ulong_num); }
-#line 39049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39230 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1384: /* opt_time_precision: %empty */
-#line 9116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1403: /* opt_time_precision: %empty */
+#line 9299 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 39055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1385: /* opt_time_precision: '(' ')' */
-#line 9117 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1404: /* opt_time_precision: '(' ')' */
+#line 9300 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 39061 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1386: /* opt_time_precision: '(' real_ulong_num ')' */
-#line 9118 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1405: /* opt_time_precision: '(' real_ulong_num ')' */
+#line 9301 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].ulong_num); }
-#line 39067 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39248 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1387: /* optional_braces: %empty */
-#line 9122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1406: /* optional_braces: %empty */
+#line 9305 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 39073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39254 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1388: /* optional_braces: '(' ')' */
-#line 9123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1407: /* optional_braces: '(' ')' */
+#line 9306 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 39079 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39260 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1389: /* expr: expr or expr */
-#line 9129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1408: /* expr: expr or expr */
+#line 9312 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Design notes:
@@ -39130,22 +39311,22 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39134 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1390: /* expr: expr XOR expr */
-#line 9180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1409: /* expr: expr XOR expr */
+#line 9363 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* XOR is a proprietary extension */
(yyval.item)= new (thd->mem_root) Item_func_xor(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1391: /* expr: expr and expr */
-#line 9187 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1410: /* expr: expr and expr */
+#line 9370 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* See comments in rule expr: expr or expr */
Item_cond_and *item1;
@@ -39188,141 +39369,141 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39192 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39373 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1392: /* expr: NOT_SYM expr */
-#line 9230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1411: /* expr: NOT_SYM expr */
+#line 9413 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= negate_expression(thd, (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39202 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1394: /* boolean_test: boolean_test IS TRUE_SYM */
-#line 9240 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1413: /* boolean_test: boolean_test IS TRUE_SYM */
+#line 9423 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_istrue(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39212 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39393 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1395: /* boolean_test: boolean_test IS not TRUE_SYM */
-#line 9246 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1414: /* boolean_test: boolean_test IS not TRUE_SYM */
+#line 9429 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnottrue(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39222 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39403 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1396: /* boolean_test: boolean_test IS FALSE_SYM */
-#line 9252 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1415: /* boolean_test: boolean_test IS FALSE_SYM */
+#line 9435 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isfalse(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39232 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39413 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1397: /* boolean_test: boolean_test IS not FALSE_SYM */
-#line 9258 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1416: /* boolean_test: boolean_test IS not FALSE_SYM */
+#line 9441 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnotfalse(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39423 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1398: /* boolean_test: boolean_test IS UNKNOWN_SYM */
-#line 9264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1417: /* boolean_test: boolean_test IS UNKNOWN_SYM */
+#line 9447 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnull(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39252 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39433 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1399: /* boolean_test: boolean_test IS not UNKNOWN_SYM */
-#line 9270 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1418: /* boolean_test: boolean_test IS not UNKNOWN_SYM */
+#line 9453 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnotnull(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39262 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39443 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1400: /* boolean_test: boolean_test IS NULL_SYM */
-#line 9276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1419: /* boolean_test: boolean_test IS NULL_SYM */
+#line 9459 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnull(thd, (yyvsp[-2].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39272 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39453 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1401: /* boolean_test: boolean_test IS not NULL_SYM */
-#line 9282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1420: /* boolean_test: boolean_test IS not NULL_SYM */
+#line 9465 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_isnotnull(thd, (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39282 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1402: /* boolean_test: boolean_test EQUAL_SYM predicate */
-#line 9288 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1421: /* boolean_test: boolean_test EQUAL_SYM predicate */
+#line 9471 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_equal(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39292 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39473 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1403: /* boolean_test: boolean_test comp_op predicate */
-#line 9294 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1422: /* boolean_test: boolean_test comp_op predicate */
+#line 9477 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (*(yyvsp[-1].boolfunc2creator))(0)->create(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1404: /* boolean_test: boolean_test comp_op all_or_any '(' subselect ')' */
-#line 9300 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1423: /* boolean_test: boolean_test comp_op all_or_any '(' subselect ')' */
+#line 9483 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= all_any_subquery_creator(thd, (yyvsp[-5].item), (yyvsp[-4].boolfunc2creator), (yyvsp[-3].num), (yyvsp[-1].select_lex));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39493 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1406: /* predicate: predicate IN_SYM subquery */
-#line 9310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1425: /* predicate: predicate IN_SYM subquery */
+#line 9493 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_in_subselect(thd, (yyvsp[-2].item), (yyvsp[0].select_lex));
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 39322 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1407: /* predicate: predicate not IN_SYM subquery */
-#line 9316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1426: /* predicate: predicate not IN_SYM subquery */
+#line 9499 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_in_subselect(thd, (yyvsp[-3].item), (yyvsp[0].select_lex));
if (unlikely(!item))
@@ -39331,21 +39512,21 @@ yyreduce:
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 39335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1408: /* predicate: predicate IN_SYM '(' expr ')' */
-#line 9325 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1427: /* predicate: predicate IN_SYM '(' expr ')' */
+#line 9508 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= handle_sql2003_note184_exception(thd, (yyvsp[-4].item), true, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39345 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39526 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1409: /* predicate: predicate IN_SYM '(' expr ',' expr_list ')' */
-#line 9331 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1428: /* predicate: predicate IN_SYM '(' expr ',' expr_list ')' */
+#line 9514 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyvsp[-1].item_list)->push_front((yyvsp[-6].item), thd->mem_root);
@@ -39353,21 +39534,21 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39357 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39538 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1410: /* predicate: predicate not IN_SYM '(' expr ')' */
-#line 9339 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1429: /* predicate: predicate not IN_SYM '(' expr ')' */
+#line 9522 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= handle_sql2003_note184_exception(thd, (yyvsp[-5].item), false, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39367 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39548 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1411: /* predicate: predicate not IN_SYM '(' expr ',' expr_list ')' */
-#line 9345 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1430: /* predicate: predicate not IN_SYM '(' expr ',' expr_list ')' */
+#line 9528 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyvsp[-1].item_list)->push_front((yyvsp[-7].item), thd->mem_root);
@@ -39376,21 +39557,21 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 39380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1412: /* predicate: predicate BETWEEN_SYM predicate AND_SYM predicate */
-#line 9354 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1431: /* predicate: predicate BETWEEN_SYM predicate AND_SYM predicate */
+#line 9537 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_between(thd, (yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39390 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1413: /* predicate: predicate not BETWEEN_SYM predicate AND_SYM predicate */
-#line 9360 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1432: /* predicate: predicate not BETWEEN_SYM predicate AND_SYM predicate */
+#line 9543 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_func_between *item;
item= new (thd->mem_root) Item_func_between(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[0].item));
@@ -39398,11 +39579,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 39402 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1414: /* predicate: predicate SOUNDS_SYM LIKE predicate */
-#line 9368 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1433: /* predicate: predicate SOUNDS_SYM LIKE predicate */
+#line 9551 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item1= new (thd->mem_root) Item_func_soundex(thd, (yyvsp[-3].item));
Item *item4= new (thd->mem_root) Item_func_soundex(thd, (yyvsp[0].item));
@@ -39412,43 +39593,43 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1415: /* predicate: predicate LIKE predicate */
-#line 9378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1434: /* predicate: predicate LIKE predicate */
+#line 9561 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_like(thd, (yyvsp[-2].item), (yyvsp[0].item), escape(thd), false);
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 39426 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39607 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1416: /* predicate: predicate LIKE predicate ESCAPE_SYM predicate */
-#line 9384 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1435: /* predicate: predicate LIKE predicate ESCAPE_SYM predicate */
+#line 9567 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->escape_used= true;
(yyval.item)= new (thd->mem_root) Item_func_like(thd, (yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item), true);
if (unlikely(!(yyval.item)))
MYSQL_YYABORT;
}
-#line 39437 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39618 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1417: /* predicate: predicate not LIKE predicate */
-#line 9391 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1436: /* predicate: predicate not LIKE predicate */
+#line 9574 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_like(thd, (yyvsp[-3].item), (yyvsp[0].item), escape(thd), false);
if (unlikely(!item))
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 39448 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39629 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1418: /* predicate: predicate not LIKE predicate ESCAPE_SYM predicate */
-#line 9398 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1437: /* predicate: predicate not LIKE predicate ESCAPE_SYM predicate */
+#line 9581 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->escape_used= true;
Item *item= new (thd->mem_root) Item_func_like(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[0].item), true);
@@ -39456,21 +39637,21 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= item->neg_transformer(thd);
}
-#line 39460 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39641 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1419: /* predicate: predicate REGEXP predicate */
-#line 9406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1438: /* predicate: predicate REGEXP predicate */
+#line 9589 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_regex(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39651 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1420: /* predicate: predicate not REGEXP predicate */
-#line 9412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1439: /* predicate: predicate not REGEXP predicate */
+#line 9595 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_func_regex(thd, (yyvsp[-3].item), (yyvsp[0].item));
if (unlikely(item == NULL))
@@ -39479,325 +39660,327 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1422: /* bit_expr: bit_expr '|' bit_expr */
-#line 9425 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1441: /* bit_expr: bit_expr '|' bit_expr */
+#line 9608 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_or(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39493 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39674 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1423: /* bit_expr: bit_expr '&' bit_expr */
-#line 9431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1442: /* bit_expr: bit_expr '&' bit_expr */
+#line 9614 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_and(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1424: /* bit_expr: bit_expr SHIFT_LEFT bit_expr */
-#line 9437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1443: /* bit_expr: bit_expr SHIFT_LEFT bit_expr */
+#line 9620 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_shift_left(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39513 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39694 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1425: /* bit_expr: bit_expr SHIFT_RIGHT bit_expr */
-#line 9443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1444: /* bit_expr: bit_expr SHIFT_RIGHT bit_expr */
+#line 9626 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_shift_right(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39704 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1426: /* bit_expr: bit_expr ORACLE_CONCAT_SYM bit_expr */
-#line 9449 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1445: /* bit_expr: bit_expr ORACLE_CONCAT_SYM bit_expr */
+#line 9632 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_concat_operator_oracle(thd,
(yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39715 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1427: /* bit_expr: bit_expr '+' bit_expr */
-#line 9456 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1446: /* bit_expr: bit_expr '+' bit_expr */
+#line 9639 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_plus(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39544 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39725 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1428: /* bit_expr: bit_expr '-' bit_expr */
-#line 9462 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1447: /* bit_expr: bit_expr '-' bit_expr */
+#line 9645 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_minus(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39554 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1429: /* bit_expr: bit_expr '+' INTERVAL_SYM expr interval */
-#line 9468 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1448: /* bit_expr: bit_expr '+' INTERVAL_SYM expr interval */
+#line 9651 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39564 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1430: /* bit_expr: bit_expr '-' INTERVAL_SYM expr interval */
-#line 9474 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1449: /* bit_expr: bit_expr '-' INTERVAL_SYM expr interval */
+#line 9657 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39574 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39755 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1431: /* bit_expr: INTERVAL_SYM expr interval '+' expr */
-#line 9481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1450: /* bit_expr: INTERVAL_SYM expr interval '+' expr */
+#line 9664 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39584 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1432: /* bit_expr: '+' INTERVAL_SYM expr interval '+' expr */
-#line 9487 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1451: /* bit_expr: '+' INTERVAL_SYM expr interval '+' expr */
+#line 9670 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39594 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1433: /* bit_expr: '-' INTERVAL_SYM expr interval '+' expr */
-#line 9493 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1452: /* bit_expr: '-' INTERVAL_SYM expr interval '+' expr */
+#line 9676 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39604 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39785 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1434: /* bit_expr: bit_expr '*' bit_expr */
-#line 9499 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1453: /* bit_expr: bit_expr '*' bit_expr */
+#line 9682 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mul(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1435: /* bit_expr: bit_expr '/' bit_expr */
-#line 9505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1454: /* bit_expr: bit_expr '/' bit_expr */
+#line 9688 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_div(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39805 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1436: /* bit_expr: bit_expr '%' bit_expr */
-#line 9511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1455: /* bit_expr: bit_expr '%' bit_expr */
+#line 9694 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39634 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39815 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1437: /* bit_expr: bit_expr DIV_SYM bit_expr */
-#line 9517 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1456: /* bit_expr: bit_expr DIV_SYM bit_expr */
+#line 9700 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_int_div(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39644 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39825 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1438: /* bit_expr: bit_expr MOD_SYM bit_expr */
-#line 9523 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1457: /* bit_expr: bit_expr MOD_SYM bit_expr */
+#line 9706 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39835 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1439: /* bit_expr: bit_expr '^' bit_expr */
-#line 9529 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1458: /* bit_expr: bit_expr '^' bit_expr */
+#line 9712 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_xor(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39845 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1449: /* comp_op: '=' */
-#line 9558 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1468: /* comp_op: '=' */
+#line 9741 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_eq_creator; }
-#line 39670 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39851 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1450: /* comp_op: GE */
-#line 9559 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1469: /* comp_op: GE */
+#line 9742 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_ge_creator; }
-#line 39676 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39857 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1451: /* comp_op: '>' */
-#line 9560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1470: /* comp_op: '>' */
+#line 9743 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_gt_creator; }
-#line 39682 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39863 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1452: /* comp_op: LE */
-#line 9561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1471: /* comp_op: LE */
+#line 9744 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_le_creator; }
-#line 39688 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39869 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1453: /* comp_op: '<' */
-#line 9562 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1472: /* comp_op: '<' */
+#line 9745 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_lt_creator; }
-#line 39694 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39875 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1454: /* comp_op: NE */
-#line 9563 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1473: /* comp_op: NE */
+#line 9746 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.boolfunc2creator) = &comp_ne_creator; }
-#line 39700 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39881 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1455: /* all_or_any: ALL */
-#line 9567 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1474: /* all_or_any: ALL */
+#line 9750 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 39706 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39887 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1456: /* all_or_any: ANY_SYM */
-#line 9568 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1475: /* all_or_any: ANY_SYM */
+#line 9751 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 39712 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1457: /* opt_dyncol_type: %empty */
-#line 9573 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1476: /* opt_dyncol_type: %empty */
+#line 9756 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_dyncol_type).set(DYN_COL_NULL); /* automatic type */
}
-#line 39720 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39901 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1458: /* opt_dyncol_type: AS dyncol_type */
-#line 9576 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1477: /* opt_dyncol_type: AS dyncol_type */
+#line 9759 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type)= (yyvsp[0].Lex_dyncol_type); }
-#line 39726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39907 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1462: /* numeric_dyncol_type: INT_SYM */
-#line 9586 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1481: /* numeric_dyncol_type: INT_SYM */
+#line 9769 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_INT); }
-#line 39732 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39913 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1463: /* numeric_dyncol_type: UNSIGNED INT_SYM */
-#line 9587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1482: /* numeric_dyncol_type: UNSIGNED INT_SYM */
+#line 9770 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_UINT); }
-#line 39738 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39919 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1464: /* numeric_dyncol_type: DOUBLE_SYM */
-#line 9588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1483: /* numeric_dyncol_type: DOUBLE_SYM */
+#line 9771 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DOUBLE); }
-#line 39744 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39925 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1465: /* numeric_dyncol_type: REAL */
-#line 9589 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1484: /* numeric_dyncol_type: REAL */
+#line 9772 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DOUBLE); }
-#line 39750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39931 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1466: /* numeric_dyncol_type: FLOAT_SYM */
-#line 9590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1485: /* numeric_dyncol_type: FLOAT_SYM */
+#line 9773 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DOUBLE); }
-#line 39756 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39937 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1467: /* numeric_dyncol_type: DECIMAL_SYM float_options */
-#line 9591 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1486: /* numeric_dyncol_type: DECIMAL_SYM float_options */
+#line 9774 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DECIMAL, (yyvsp[0].Lex_length_and_dec)); }
-#line 39762 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39943 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1468: /* temporal_dyncol_type: DATE_SYM */
-#line 9595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1487: /* temporal_dyncol_type: DATE_SYM */
+#line 9778 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DATE); }
-#line 39768 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39949 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1469: /* temporal_dyncol_type: TIME_SYM opt_field_scale */
-#line 9596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1488: /* temporal_dyncol_type: TIME_SYM opt_field_scale */
+#line 9779 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_TIME, (yyvsp[0].Lex_length_and_dec)); }
-#line 39774 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39955 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1470: /* temporal_dyncol_type: DATETIME opt_field_scale */
-#line 9597 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1489: /* temporal_dyncol_type: DATETIME opt_field_scale */
+#line 9780 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_dyncol_type).set(DYN_COL_DATETIME, (yyvsp[0].Lex_length_and_dec)); }
-#line 39780 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39961 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1471: /* string_dyncol_type: char opt_binary */
-#line 9602 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1490: /* string_dyncol_type: char opt_binary */
+#line 9785 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_dyncol_type).set(DYN_COL_STRING, (yyvsp[0].Lex_exact_charset_extended_collation_attrs), thd->variables.collation_connection))
+ if ((yyval.Lex_dyncol_type).set(DYN_COL_STRING, thd,
+ thd->variables.character_set_collations,
+ (yyvsp[0].Lex_exact_charset_extended_collation_attrs), thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 39789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1472: /* string_dyncol_type: nchar */
-#line 9607 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1491: /* string_dyncol_type: nchar */
+#line 9792 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_dyncol_type).set(DYN_COL_STRING, national_charset_info);
}
-#line 39797 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 39980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1473: /* dyncall_create_element: expr ',' expr opt_dyncol_type */
-#line 9614 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1492: /* dyncall_create_element: expr ',' expr opt_dyncol_type */
+#line 9799 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.dyncol_def)= (DYNCALL_CREATE_DEF *)
alloc_root(thd->mem_root, sizeof(DYNCALL_CREATE_DEF));
@@ -39816,118 +39999,118 @@ yyreduce:
else
(yyval.dyncol_def)->len= 0;
}
-#line 39820 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1474: /* dyncall_create_list: dyncall_create_element */
-#line 9636 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1493: /* dyncall_create_list: dyncall_create_element */
+#line 9821 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.dyncol_def_list)= new (thd->mem_root) List<DYNCALL_CREATE_DEF>;
if (unlikely((yyval.dyncol_def_list) == NULL))
MYSQL_YYABORT;
(yyval.dyncol_def_list)->push_back((yyvsp[0].dyncol_def), thd->mem_root);
}
-#line 39831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40014 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1475: /* dyncall_create_list: dyncall_create_list ',' dyncall_create_element */
-#line 9643 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1494: /* dyncall_create_list: dyncall_create_list ',' dyncall_create_element */
+#line 9828 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].dyncol_def_list)->push_back((yyvsp[0].dyncol_def), thd->mem_root);
(yyval.dyncol_def_list)= (yyvsp[-2].dyncol_def_list);
}
-#line 39840 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40023 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1476: /* plsql_cursor_attr: ISOPEN_SYM */
-#line 9651 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1495: /* plsql_cursor_attr: ISOPEN_SYM */
+#line 9836 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_ISOPEN; }
-#line 39846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40029 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1477: /* plsql_cursor_attr: FOUND_SYM */
-#line 9652 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1496: /* plsql_cursor_attr: FOUND_SYM */
+#line 9837 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_FOUND; }
-#line 39852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40035 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1478: /* plsql_cursor_attr: NOTFOUND_SYM */
-#line 9653 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1497: /* plsql_cursor_attr: NOTFOUND_SYM */
+#line 9838 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_NOTFOUND; }
-#line 39858 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40041 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1479: /* plsql_cursor_attr: ROWCOUNT_SYM */
-#line 9654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1498: /* plsql_cursor_attr: ROWCOUNT_SYM */
+#line 9839 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.plsql_cursor_attr)= PLSQL_CURSOR_ATTR_ROWCOUNT; }
-#line 39864 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40047 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1480: /* explicit_cursor_attr: ident PERCENT_ORACLE_SYM plsql_cursor_attr */
-#line 9659 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1499: /* explicit_cursor_attr: ident PERCENT_ORACLE_SYM plsql_cursor_attr */
+#line 9844 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_plsql_cursor_attr(thd, &(yyvsp[-2].ident_sys), (yyvsp[0].plsql_cursor_attr)))))
MYSQL_YYABORT;
}
-#line 39873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40056 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1483: /* trim_operands_regular: expr */
-#line 9672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1502: /* trim_operands_regular: expr */
+#line 9857 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[0].item)); }
-#line 39879 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40062 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1484: /* trim_operands_special: LEADING expr FROM expr */
-#line 9676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1503: /* trim_operands_special: LEADING expr FROM expr */
+#line 9861 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_LEADING, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 39885 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1485: /* trim_operands_special: TRAILING expr FROM expr */
-#line 9677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1504: /* trim_operands_special: TRAILING expr FROM expr */
+#line 9862 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_TRAILING, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 39891 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40074 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1486: /* trim_operands_special: BOTH expr FROM expr */
-#line 9678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1505: /* trim_operands_special: BOTH expr FROM expr */
+#line 9863 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 39897 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40080 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1487: /* trim_operands_special: LEADING FROM expr */
-#line 9679 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1506: /* trim_operands_special: LEADING FROM expr */
+#line 9864 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_LEADING, (yyvsp[0].item)); }
-#line 39903 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40086 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1488: /* trim_operands_special: TRAILING FROM expr */
-#line 9680 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1507: /* trim_operands_special: TRAILING FROM expr */
+#line 9865 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_TRAILING, (yyvsp[0].item)); }
-#line 39909 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40092 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1489: /* trim_operands_special: BOTH FROM expr */
-#line 9681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1508: /* trim_operands_special: BOTH FROM expr */
+#line 9866 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[0].item)); }
-#line 39915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40098 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1490: /* trim_operands_special: expr FROM expr */
-#line 9682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1509: /* trim_operands_special: expr FROM expr */
+#line 9867 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trim).set(TRIM_BOTH, (yyvsp[-2].item), (yyvsp[0].item)); }
-#line 39921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1497: /* column_default_non_parenthesized_expr: param_marker */
-#line 9720 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1516: /* column_default_non_parenthesized_expr: param_marker */
+#line 9905 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item_param); }
-#line 39927 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1499: /* column_default_non_parenthesized_expr: sum_expr */
-#line 9723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1518: /* column_default_non_parenthesized_expr: sum_expr */
+#line 9908 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!Lex->select_stack_top || Lex->json_table)
{
@@ -39935,11 +40118,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39939 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1500: /* column_default_non_parenthesized_expr: window_func_expr */
-#line 9731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1519: /* column_default_non_parenthesized_expr: window_func_expr */
+#line 9916 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!Lex->select_stack_top)
{
@@ -39947,41 +40130,41 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 39951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40134 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1502: /* column_default_non_parenthesized_expr: ROW_SYM '(' expr ',' expr_list ')' */
-#line 9740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1521: /* column_default_non_parenthesized_expr: ROW_SYM '(' expr ',' expr_list ')' */
+#line 9925 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyval.item)= new (thd->mem_root) Item_row(thd, *(yyvsp[-1].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1503: /* column_default_non_parenthesized_expr: EXISTS '(' subselect ')' */
-#line 9747 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1522: /* column_default_non_parenthesized_expr: EXISTS '(' subselect ')' */
+#line 9932 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_exists_subselect(thd, (yyvsp[-1].select_lex));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 39972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40155 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1504: /* column_default_non_parenthesized_expr: '{' ident expr '}' */
-#line 9753 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1523: /* column_default_non_parenthesized_expr: '{' ident expr '}' */
+#line 9938 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].item)->make_odbc_literal(thd, &(yyvsp[-2].ident_sys)))))
MYSQL_YYABORT;
}
-#line 39981 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40164 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1505: /* column_default_non_parenthesized_expr: MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' */
-#line 9758 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1524: /* column_default_non_parenthesized_expr: MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' */
+#line 9943 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-5].item_list)->push_front((yyvsp[-2].item), thd->mem_root);
Item_func_match *i1= new (thd->mem_root) Item_func_match(thd, *(yyvsp[-5].item_list),
@@ -39991,58 +40174,60 @@ yyreduce:
Select->add_ftfunc_to_list(thd, i1);
(yyval.item)= i1;
}
-#line 39995 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1506: /* column_default_non_parenthesized_expr: CAST_SYM '(' expr AS cast_type ')' */
-#line 9768 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1525: /* column_default_non_parenthesized_expr: CAST_SYM '(' expr AS cast_type ')' */
+#line 9953 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].Lex_cast_type).create_typecast_item_or_error(thd, (yyvsp[-3].item)))))
MYSQL_YYABORT;
}
-#line 40004 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40187 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1507: /* column_default_non_parenthesized_expr: CASE_SYM when_list_opt_else END */
-#line 9773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1526: /* column_default_non_parenthesized_expr: CASE_SYM when_list_opt_else END */
+#line 9958 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= new(thd->mem_root) Item_func_case_searched(thd, *(yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 40013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40196 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1508: /* column_default_non_parenthesized_expr: CASE_SYM expr when_list_opt_else END */
-#line 9778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1527: /* column_default_non_parenthesized_expr: CASE_SYM expr when_list_opt_else END */
+#line 9963 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-2].item), thd->mem_root);
if (unlikely(!((yyval.item)= new (thd->mem_root) Item_func_case_simple(thd, *(yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 40023 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1509: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr ',' cast_type ')' */
-#line 9784 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1528: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr ',' cast_type ')' */
+#line 9969 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].Lex_cast_type).create_typecast_item_or_error(thd, (yyvsp[-3].item)))))
MYSQL_YYABORT;
}
-#line 40032 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1510: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr USING charset_name ')' */
-#line 9789 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1529: /* column_default_non_parenthesized_expr: CONVERT_SYM '(' expr USING charset_name ')' */
+#line 9974 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
(yyval.item)= new (thd->mem_root) Item_func_conv_charset(thd, (yyvsp[-3].item), (yyvsp[-1].charset));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1511: /* column_default_non_parenthesized_expr: DEFAULT '(' simple_ident ')' */
-#line 9795 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1530: /* column_default_non_parenthesized_expr: DEFAULT '(' simple_ident ')' */
+#line 9982 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_splocal *il= (yyvsp[-1].item)->get_item_splocal();
if (unlikely(il))
@@ -40053,209 +40238,211 @@ yyreduce:
MYSQL_YYABORT;
Lex->default_used= TRUE;
}
-#line 40057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1512: /* column_default_non_parenthesized_expr: VALUE_SYM '(' simple_ident_nospvar ')' */
-#line 9806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1531: /* column_default_non_parenthesized_expr: VALUE_SYM '(' simple_ident_nospvar ')' */
+#line 9993 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_insert_value(thd, Lex->current_context(),
(yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1513: /* column_default_non_parenthesized_expr: NEXT_SYM VALUE_SYM FOR_SYM table_ident */
-#line 9813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1532: /* column_default_non_parenthesized_expr: NEXT_SYM VALUE_SYM FOR_SYM table_ident */
+#line 10000 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_nextval(thd, (yyvsp[0].table)))))
MYSQL_YYABORT;
}
-#line 40077 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40262 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1514: /* column_default_non_parenthesized_expr: NEXTVAL_SYM '(' table_ident ')' */
-#line 9818 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1533: /* column_default_non_parenthesized_expr: NEXTVAL_SYM '(' table_ident ')' */
+#line 10005 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_nextval(thd, (yyvsp[-1].table)))))
MYSQL_YYABORT;
}
-#line 40086 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40271 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1515: /* column_default_non_parenthesized_expr: PREVIOUS_SYM VALUE_SYM FOR_SYM table_ident */
-#line 9823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1534: /* column_default_non_parenthesized_expr: PREVIOUS_SYM VALUE_SYM FOR_SYM table_ident */
+#line 10010 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_lastval(thd, (yyvsp[0].table)))))
MYSQL_YYABORT;
}
-#line 40095 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40280 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1516: /* column_default_non_parenthesized_expr: LASTVAL_SYM '(' table_ident ')' */
-#line 9828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1535: /* column_default_non_parenthesized_expr: LASTVAL_SYM '(' table_ident ')' */
+#line 10015 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_lastval(thd, (yyvsp[-1].table)))))
MYSQL_YYABORT;
}
-#line 40104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1517: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ')' */
-#line 9833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1536: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ')' */
+#line 10020 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_setval(thd, (yyvsp[-3].table), (yyvsp[-1].longlong_number), 0, 1))))
MYSQL_YYABORT;
}
-#line 40113 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40298 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1518: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ')' */
-#line 9838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1537: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ')' */
+#line 10025 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_setval(thd, (yyvsp[-5].table), (yyvsp[-3].longlong_number), 0, (yyvsp[-1].ulong_num)))))
MYSQL_YYABORT;
}
-#line 40122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1519: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ',' ulonglong_num ')' */
-#line 9843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1538: /* column_default_non_parenthesized_expr: SETVAL_SYM '(' table_ident ',' longlong_num ',' bool ',' ulonglong_num ')' */
+#line 10030 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_func_setval(thd, (yyvsp[-7].table), (yyvsp[-5].longlong_number), (yyvsp[-1].ulonglong_number), (yyvsp[-3].ulong_num)))))
MYSQL_YYABORT;
}
-#line 40131 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40316 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1522: /* primary_expr: '(' parenthesized_expr ')' */
-#line 9852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1541: /* primary_expr: '(' parenthesized_expr ')' */
+#line 10039 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[-1].item); }
-#line 40137 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40322 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1523: /* primary_expr: subquery */
-#line 9854 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1542: /* primary_expr: subquery */
+#line 10041 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->create_item_query_expression(thd, (yyvsp[0].select_lex)->master_unit())))
MYSQL_YYABORT;
}
-#line 40146 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1525: /* string_factor_expr: string_factor_expr COLLATE_SYM collation_name */
-#line 9863 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1544: /* string_factor_expr: string_factor_expr COLLATE_SYM collation_name */
+#line 10050 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= new (thd->mem_root)
Item_func_set_collation(thd, (yyvsp[-2].item), (yyvsp[0].Lex_extended_collation)))))
MYSQL_YYABORT;
}
-#line 40156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1527: /* simple_expr: BINARY simple_expr */
-#line 9873 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1546: /* simple_expr: BINARY simple_expr */
+#line 10060 "/home/buildbot/git/sql/sql_yacc.yy"
{
Type_cast_attributes at(&my_charset_bin);
if (unlikely(!((yyval.item)= type_handler_long_blob.create_typecast_item(thd, (yyvsp[0].item), at))))
MYSQL_YYABORT;
}
-#line 40166 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40351 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1528: /* simple_expr: '+' simple_expr */
-#line 9879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1547: /* simple_expr: '+' simple_expr */
+#line 10066 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 40174 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1529: /* simple_expr: '-' simple_expr */
-#line 9883 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1548: /* simple_expr: '-' simple_expr */
+#line 10070 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item)->neg(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40184 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40369 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1530: /* simple_expr: '~' simple_expr */
-#line 9889 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1549: /* simple_expr: '~' simple_expr */
+#line 10076 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_bit_neg(thd, (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40379 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1531: /* simple_expr: not2 simple_expr */
-#line 9895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1550: /* simple_expr: not2 simple_expr */
+#line 10082 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= negate_expression(thd, (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1533: /* mysql_concatenation_expr: mysql_concatenation_expr MYSQL_CONCAT_SYM simple_expr */
-#line 9905 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1552: /* mysql_concatenation_expr: mysql_concatenation_expr MYSQL_CONCAT_SYM simple_expr */
+#line 10092 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_concat(thd, (yyvsp[-2].item), (yyvsp[0].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40214 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40399 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1534: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ')' */
-#line 9914 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1553: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ')' */
+#line 10101 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_datetime_typecast(thd, (yyvsp[-1].item),
AUTO_SEC_PART_DIGITS);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40225 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1535: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ',' expr ')' */
-#line 9921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1554: /* function_call_keyword_timestamp: TIMESTAMP '(' expr ',' expr ')' */
+#line 10108 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_timestamp(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1536: /* function_call_keyword: CHAR_SYM '(' expr_list ')' */
-#line 9935 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1555: /* function_call_keyword: CHAR_SYM '(' expr_list ')' */
+#line 10122 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_char(thd, *(yyvsp[-1].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1537: /* function_call_keyword: CHAR_SYM '(' expr_list USING charset_name ')' */
-#line 9941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1556: /* function_call_keyword: CHAR_SYM '(' expr_list USING charset_name ')' */
+#line 10128 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
(yyval.item)= new (thd->mem_root) Item_func_char(thd, *(yyvsp[-3].item_list), (yyvsp[-1].charset));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40255 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40442 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1538: /* function_call_keyword: CURRENT_USER optional_braces */
-#line 9947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1557: /* function_call_keyword: CURRENT_USER optional_braces */
+#line 10136 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_current_user(thd,
Lex->current_context());
@@ -40264,11 +40451,11 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query= 0;
}
-#line 40268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40455 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1539: /* function_call_keyword: CURRENT_ROLE optional_braces */
-#line 9956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1558: /* function_call_keyword: CURRENT_ROLE optional_braces */
+#line 10145 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_current_role(thd,
Lex->current_context());
@@ -40277,51 +40464,52 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query= 0;
}
-#line 40281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40468 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1540: /* function_call_keyword: DATE_SYM '(' expr ')' */
-#line 9965 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1559: /* function_call_keyword: DATE_SYM '(' expr ')' */
+#line 10154 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_typecast(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
-#line 40291 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1541: /* function_call_keyword: DAY_SYM '(' expr ')' */
-#line 9971 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1560: /* function_call_keyword: DAY_SYM '(' expr ')' */
+#line 10161 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_dayofmonth(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40301 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1542: /* function_call_keyword: HOUR_SYM '(' expr ')' */
-#line 9977 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1561: /* function_call_keyword: HOUR_SYM '(' expr ')' */
+#line 10167 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_hour(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40311 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40499 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1543: /* function_call_keyword: INSERT '(' expr ',' expr ',' expr ',' expr ')' */
-#line 9983 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1562: /* function_call_keyword: INSERT '(' expr ',' expr ',' expr ',' expr ')' */
+#line 10173 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_insert(thd, (yyvsp[-7].item), (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40321 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40509 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1544: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ')' */
-#line 9989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1563: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ')' */
+#line 10179 "/home/buildbot/git/sql/sql_yacc.yy"
{
List<Item> *list= new (thd->mem_root) List<Item>;
if (unlikely(list == NULL))
@@ -40336,11 +40524,11 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40340 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40528 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1545: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' */
-#line 10004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1564: /* function_call_keyword: INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' */
+#line 10194 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root);
(yyvsp[-1].item_list)->push_front((yyvsp[-5].item), thd->mem_root);
@@ -40351,61 +40539,62 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40543 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1546: /* function_call_keyword: LEFT '(' expr ',' expr ')' */
-#line 10015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1565: /* function_call_keyword: LEFT '(' expr ',' expr ')' */
+#line 10205 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_left(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40553 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1547: /* function_call_keyword: MINUTE_SYM '(' expr ')' */
-#line 10021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1566: /* function_call_keyword: MINUTE_SYM '(' expr ')' */
+#line 10211 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_minute(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40375 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40563 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1548: /* function_call_keyword: MONTH_SYM '(' expr ')' */
-#line 10027 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1567: /* function_call_keyword: MONTH_SYM '(' expr ')' */
+#line 10217 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_month(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
-#line 40385 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40574 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1549: /* function_call_keyword: RIGHT '(' expr ',' expr ')' */
-#line 10033 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1568: /* function_call_keyword: RIGHT '(' expr ',' expr ')' */
+#line 10224 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_right(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40584 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1550: /* function_call_keyword: SECOND_SYM '(' expr ')' */
-#line 10039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1569: /* function_call_keyword: SECOND_SYM '(' expr ')' */
+#line 10230 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_second(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40405 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40594 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1551: /* function_call_keyword: SQL_SYM PERCENT_ORACLE_SYM ROWCOUNT_SYM */
-#line 10045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1570: /* function_call_keyword: SQL_SYM PERCENT_ORACLE_SYM ROWCOUNT_SYM */
+#line 10236 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_oracle_sql_rowcount(thd);
if (unlikely((yyval.item) == NULL))
@@ -40413,40 +40602,40 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query= 0;
}
-#line 40417 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1552: /* function_call_keyword: TIME_SYM '(' expr ')' */
-#line 10053 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1571: /* function_call_keyword: TIME_SYM '(' expr ')' */
+#line 10244 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_time_typecast(thd, (yyvsp[-1].item),
AUTO_SEC_PART_DIGITS);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40428 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40617 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1553: /* function_call_keyword: function_call_keyword_timestamp */
-#line 10060 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1572: /* function_call_keyword: function_call_keyword_timestamp */
+#line 10251 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 40436 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40625 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1554: /* function_call_keyword: TRIM '(' trim_operands ')' */
-#line 10064 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1573: /* function_call_keyword: TRIM '(' trim_operands ')' */
+#line 10255 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Schema::find_implied(thd)->
make_item_func_trim(thd, (yyvsp[-1].trim)))))
MYSQL_YYABORT;
}
-#line 40446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40635 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1555: /* function_call_keyword: USER_SYM '(' ')' */
-#line 10070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1574: /* function_call_keyword: USER_SYM '(' ')' */
+#line 10261 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_user(thd);
if (unlikely((yyval.item) == NULL))
@@ -40454,358 +40643,359 @@ yyreduce:
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
Lex->safe_to_cache_query=0;
}
-#line 40458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40647 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1556: /* function_call_keyword: YEAR_SYM '(' expr ')' */
-#line 10078 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1575: /* function_call_keyword: YEAR_SYM '(' expr ')' */
+#line 10269 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_year(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
+ Lex->set_date_funcs_used_flag();
}
-#line 40468 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40658 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1559: /* substring_operands_regular: expr ',' expr ',' expr */
-#line 10092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1578: /* substring_operands_regular: expr ',' expr ',' expr */
+#line 10284 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item));
}
-#line 40476 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40666 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1560: /* substring_operands_regular: expr ',' expr */
-#line 10096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1579: /* substring_operands_regular: expr ',' expr */
+#line 10288 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-2].item), (yyvsp[0].item));
}
-#line 40484 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40674 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1561: /* substring_operands_special: expr FROM expr FOR_SYM expr */
-#line 10103 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1580: /* substring_operands_special: expr FROM expr FOR_SYM expr */
+#line 10295 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item));
}
-#line 40492 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40682 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1562: /* substring_operands_special: expr FROM expr */
-#line 10107 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1581: /* substring_operands_special: expr FROM expr */
+#line 10299 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.substring_spec)= Lex_substring_spec_st::init((yyvsp[-2].item), (yyvsp[0].item));
}
-#line 40500 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40690 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1563: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' expr ')' */
-#line 10127 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1582: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' expr ')' */
+#line 10319 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-3].item), (yyvsp[-1].item),
INTERVAL_DAY, 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40511 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1564: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10134 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1583: /* function_call_nonkeyword: ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10326 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40521 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40711 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1565: /* function_call_nonkeyword: CURDATE optional_braces */
-#line 10140 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1584: /* function_call_nonkeyword: CURDATE optional_braces */
+#line 10332 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curdate_local(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 40532 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1566: /* function_call_nonkeyword: CURTIME opt_time_precision */
-#line 10147 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1585: /* function_call_nonkeyword: CURTIME opt_time_precision */
+#line 10339 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curtime_local(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 40543 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40733 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1567: /* function_call_nonkeyword: DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10154 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1586: /* function_call_nonkeyword: DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10346 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40553 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40743 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1568: /* function_call_nonkeyword: DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1587: /* function_call_nonkeyword: DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10352 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40563 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40753 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1569: /* function_call_nonkeyword: EXTRACT_SYM '(' interval FROM expr ')' */
-#line 10166 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1588: /* function_call_nonkeyword: EXTRACT_SYM '(' interval FROM expr ')' */
+#line 10358 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)=new (thd->mem_root) Item_extract(thd, (yyvsp[-3].interval), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40573 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40763 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1570: /* function_call_nonkeyword: GET_FORMAT '(' date_time_type ',' expr ')' */
-#line 10172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1589: /* function_call_nonkeyword: GET_FORMAT '(' date_time_type ',' expr ')' */
+#line 10364 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_get_format(thd, (yyvsp[-3].date_time_type), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40773 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1571: /* function_call_nonkeyword: NOW_SYM opt_time_precision */
-#line 10178 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1590: /* function_call_nonkeyword: NOW_SYM opt_time_precision */
+#line 10370 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_now_local(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 40594 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40784 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1572: /* function_call_nonkeyword: POSITION_SYM '(' bit_expr IN_SYM expr ')' */
-#line 10185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1591: /* function_call_nonkeyword: POSITION_SYM '(' bit_expr IN_SYM expr ')' */
+#line 10377 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_locate(thd, (yyvsp[-1].item), (yyvsp[-3].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40604 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40794 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1573: /* function_call_nonkeyword: ROWNUM_SYM optional_braces */
-#line 10196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1592: /* function_call_nonkeyword: ROWNUM_SYM optional_braces */
+#line 10388 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_rownum(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40804 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1574: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' expr ')' */
-#line 10202 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1593: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' expr ')' */
+#line 10394 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-3].item), (yyvsp[-1].item),
INTERVAL_DAY, 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40625 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40815 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1575: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
-#line 10209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1594: /* function_call_nonkeyword: SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' */
+#line 10401 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40635 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40825 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1576: /* function_call_nonkeyword: SUBSTRING '(' substring_operands ')' */
-#line 10215 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1595: /* function_call_nonkeyword: SUBSTRING '(' substring_operands ')' */
+#line 10407 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Schema::find_implied(thd)->
make_item_func_substr(thd, (yyvsp[-1].substring_spec)))))
MYSQL_YYABORT;
}
-#line 40645 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40835 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1577: /* function_call_nonkeyword: SYSDATE */
-#line 10222 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1596: /* function_call_nonkeyword: SYSDATE */
+#line 10414 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_sysdate(thd, 0))))
MYSQL_YYABORT;
}
-#line 40654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40844 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1578: /* function_call_nonkeyword: SYSDATE '(' ')' */
-#line 10228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1597: /* function_call_nonkeyword: SYSDATE '(' ')' */
+#line 10420 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_sysdate(thd, 0))))
MYSQL_YYABORT;
}
-#line 40663 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1579: /* function_call_nonkeyword: SYSDATE '(' real_ulong_num ')' */
-#line 10233 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1598: /* function_call_nonkeyword: SYSDATE '(' real_ulong_num ')' */
+#line 10425 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_sysdate(thd, (uint) (yyvsp[-1].ulong_num)))))
MYSQL_YYABORT;
}
-#line 40672 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1580: /* function_call_nonkeyword: TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' */
-#line 10238 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1599: /* function_call_nonkeyword: TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' */
+#line 10430 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-1].item), (yyvsp[-3].item), (yyvsp[-5].interval_time_st), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40682 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1581: /* function_call_nonkeyword: TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' */
-#line 10244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1600: /* function_call_nonkeyword: TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' */
+#line 10436 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_timestamp_diff(thd, (yyvsp[-3].item), (yyvsp[-1].item), (yyvsp[-5].interval_time_st));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40692 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40882 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1582: /* function_call_nonkeyword: TRIM_ORACLE '(' trim_operands ')' */
-#line 10250 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1601: /* function_call_nonkeyword: TRIM_ORACLE '(' trim_operands ')' */
+#line 10442 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= (yyvsp[-1].trim).make_item_func_trim_oracle(thd))))
MYSQL_YYABORT;
}
-#line 40701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40891 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1583: /* function_call_nonkeyword: UTC_DATE_SYM optional_braces */
-#line 10255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1602: /* function_call_nonkeyword: UTC_DATE_SYM optional_braces */
+#line 10447 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curdate_utc(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 40712 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1584: /* function_call_nonkeyword: UTC_TIME_SYM opt_time_precision */
-#line 10262 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1603: /* function_call_nonkeyword: UTC_TIME_SYM opt_time_precision */
+#line 10454 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_curtime_utc(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 40723 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40913 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1585: /* function_call_nonkeyword: UTC_TIMESTAMP_SYM opt_time_precision */
-#line 10269 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1604: /* function_call_nonkeyword: UTC_TIMESTAMP_SYM opt_time_precision */
+#line 10461 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_now_utc(thd, (yyvsp[0].num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
Lex->safe_to_cache_query=0;
}
-#line 40734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1586: /* function_call_nonkeyword: COLUMN_ADD_SYM '(' expr ',' dyncall_create_list ')' */
-#line 10277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1605: /* function_call_nonkeyword: COLUMN_ADD_SYM '(' expr ',' dyncall_create_list ')' */
+#line 10469 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_add(thd, (yyvsp[-3].item), *(yyvsp[-1].dyncol_def_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40744 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40934 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1587: /* function_call_nonkeyword: COLUMN_DELETE_SYM '(' expr ',' expr_list ')' */
-#line 10284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1606: /* function_call_nonkeyword: COLUMN_DELETE_SYM '(' expr ',' expr_list ')' */
+#line 10476 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_delete(thd, (yyvsp[-3].item), *(yyvsp[-1].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40754 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1588: /* function_call_nonkeyword: COLUMN_CREATE_SYM '(' dyncall_create_list ')' */
-#line 10291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1607: /* function_call_nonkeyword: COLUMN_CREATE_SYM '(' dyncall_create_list ')' */
+#line 10483 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_create(thd, *(yyvsp[-1].dyncol_def_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40764 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40954 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1589: /* function_call_nonkeyword: COLUMN_GET_SYM '(' expr ',' expr AS cast_type ')' */
-#line 10298 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1608: /* function_call_nonkeyword: COLUMN_GET_SYM '(' expr ',' expr AS cast_type ')' */
+#line 10490 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= create_func_dyncol_get(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].Lex_cast_type).type_handler(),
(yyvsp[-1].Lex_cast_type), (yyvsp[-1].Lex_cast_type).charset());
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40965 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1590: /* function_call_conflict: ASCII_SYM '(' expr ')' */
-#line 10313 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1609: /* function_call_conflict: ASCII_SYM '(' expr ')' */
+#line 10505 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_ascii(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40785 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40975 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1591: /* function_call_conflict: CHARSET '(' expr ')' */
-#line 10319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1610: /* function_call_conflict: CHARSET '(' expr ')' */
+#line 10511 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_charset(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1592: /* function_call_conflict: IF_SYM '(' expr ',' expr ',' expr ')' */
-#line 10325 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1611: /* function_call_conflict: IF_SYM '(' expr ',' expr ',' expr ')' */
+#line 10517 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_if(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40805 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 40995 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1593: /* function_call_conflict: LAST_VALUE '(' expr ')' */
-#line 10334 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1612: /* function_call_conflict: LAST_VALUE '(' expr ')' */
+#line 10526 "/home/buildbot/git/sql/sql_yacc.yy"
{
List<Item> *list= new (thd->mem_root) List<Item>;
if (unlikely(list == NULL))
@@ -40816,32 +41006,32 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40820 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41010 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1594: /* function_call_conflict: LAST_VALUE '(' expr_list ',' expr ')' */
-#line 10345 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1613: /* function_call_conflict: LAST_VALUE '(' expr_list ',' expr ')' */
+#line 10537 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-3].item_list)->push_back((yyvsp[-1].item), thd->mem_root);
(yyval.item)= new (thd->mem_root) Item_func_last_value(thd, *(yyvsp[-3].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41021 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1595: /* function_call_conflict: MOD_SYM '(' expr ',' expr ')' */
-#line 10352 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1614: /* function_call_conflict: MOD_SYM '(' expr ',' expr ')' */
+#line 10544 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41031 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1596: /* function_call_conflict: PASSWORD_SYM '(' expr ')' */
-#line 10358 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1615: /* function_call_conflict: PASSWORD_SYM '(' expr ')' */
+#line 10550 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item* i1;
i1= new (thd->mem_root) Item_func_password(thd, (yyvsp[-1].item));
@@ -40849,51 +41039,51 @@ yyreduce:
MYSQL_YYABORT;
(yyval.item)= i1;
}
-#line 40853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41043 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1597: /* function_call_conflict: REPEAT_SYM '(' expr ',' expr ')' */
-#line 10366 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1616: /* function_call_conflict: REPEAT_SYM '(' expr ',' expr ')' */
+#line 10558 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_repeat(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40863 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41053 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1598: /* function_call_conflict: REPLACE '(' expr ',' expr ',' expr ')' */
-#line 10372 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1617: /* function_call_conflict: REPLACE '(' expr ',' expr ',' expr ')' */
+#line 10564 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Schema::find_implied(thd)->
make_item_func_replace(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)))))
MYSQL_YYABORT;
}
-#line 40873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41063 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1599: /* function_call_conflict: TRUNCATE_SYM '(' expr ',' expr ')' */
-#line 10378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1618: /* function_call_conflict: TRUNCATE_SYM '(' expr ',' expr ')' */
+#line 10570 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_round(thd, (yyvsp[-3].item), (yyvsp[-1].item), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40883 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1600: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr opt_ws_levels ')' */
-#line 10384 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1619: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr opt_ws_levels ')' */
+#line 10576 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-2].item), 0, 0, (yyvsp[-1].ulong_num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1601: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS CHAR_SYM ws_nweights opt_ws_levels ')' */
-#line 10390 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1620: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS CHAR_SYM ws_nweights opt_ws_levels ')' */
+#line 10582 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root)
Item_func_weight_string(thd, (yyvsp[-5].item), 0, (yyvsp[-2].ulong_num),
@@ -40901,11 +41091,11 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40905 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41095 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1602: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS BINARY ws_nweights ')' */
-#line 10398 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1621: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr AS BINARY ws_nweights ')' */
+#line 10590 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_char_typecast(thd, (yyvsp[-4].item), (yyvsp[-1].ulong_num),
&my_charset_bin);
@@ -40917,22 +41107,22 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41111 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1603: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr ',' ulong_num ',' ulong_num ',' ulong_num ')' */
-#line 10410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1622: /* function_call_conflict: WEIGHT_STRING_SYM '(' expr ',' ulong_num ',' ulong_num ',' ulong_num ')' */
+#line 10602 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-7].item), (yyvsp[-5].ulong_num), (yyvsp[-3].ulong_num),
(yyvsp[-1].ulong_num));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 40932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1604: /* @142: %empty */
-#line 10429 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1623: /* @142: %empty */
+#line 10621 "/home/buildbot/git/sql/sql_yacc.yy"
{
#ifdef HAVE_DLOPEN
udf_func *udf= 0;
@@ -40951,11 +41141,11 @@ yyreduce:
(yyval.udf)= udf;
#endif
}
-#line 40955 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1605: /* function_call_generic: ident_func '(' @142 opt_udf_expr_list ')' */
-#line 10448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1624: /* function_call_generic: ident_func '(' @142 opt_udf_expr_list ')' */
+#line 10640 "/home/buildbot/git/sql/sql_yacc.yy"
{
const Type_handler *h;
Create_func *builder;
@@ -41012,172 +41202,172 @@ yyreduce:
if (unlikely(! ((yyval.item)= item)))
MYSQL_YYABORT;
}
-#line 41016 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1606: /* function_call_generic: CONTAINS_SYM '(' opt_expr_list ')' */
-#line 10505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1625: /* function_call_generic: CONTAINS_SYM '(' opt_expr_list ')' */
+#line 10697 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->make_item_func_call_native_or_parse_error(thd,
(yyvsp[-3].kwd), (yyvsp[-1].item_list))))
MYSQL_YYABORT;
}
-#line 41026 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41216 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1607: /* function_call_generic: OVERLAPS_SYM '(' opt_expr_list ')' */
-#line 10511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1626: /* function_call_generic: OVERLAPS_SYM '(' opt_expr_list ')' */
+#line 10703 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->make_item_func_call_native_or_parse_error(thd,
(yyvsp[-3].kwd), (yyvsp[-1].item_list))))
MYSQL_YYABORT;
}
-#line 41036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1608: /* function_call_generic: WITHIN '(' opt_expr_list ')' */
-#line 10517 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1627: /* function_call_generic: WITHIN '(' opt_expr_list ')' */
+#line 10709 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.item)= Lex->make_item_func_call_native_or_parse_error(thd,
(yyvsp[-3].kwd), (yyvsp[-1].item_list))))
MYSQL_YYABORT;
}
-#line 41046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1609: /* function_call_generic: ident_cli '.' ident_cli '(' opt_expr_list ')' */
-#line 10523 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1628: /* function_call_generic: ident_cli '.' ident_cli '(' opt_expr_list ')' */
+#line 10715 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_call_generic(thd, &(yyvsp[-5].ident_cli), &(yyvsp[-3].ident_cli), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1610: /* function_call_generic: ident_cli '.' ident_cli '.' ident_cli '(' opt_expr_list ')' */
-#line 10528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1629: /* function_call_generic: ident_cli '.' ident_cli '.' ident_cli '(' opt_expr_list ')' */
+#line 10720 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_call_generic(thd, &(yyvsp[-7].ident_cli), &(yyvsp[-5].ident_cli), &(yyvsp[-3].ident_cli), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41064 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41254 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1611: /* function_call_generic: ident_cli '.' REPLACE '(' opt_expr_list ')' */
-#line 10533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1630: /* function_call_generic: ident_cli '.' REPLACE '(' opt_expr_list ')' */
+#line 10725 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_replace(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1612: /* function_call_generic: ident_cli '.' SUBSTRING '(' opt_expr_list ')' */
-#line 10538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1631: /* function_call_generic: ident_cli '.' SUBSTRING '(' opt_expr_list ')' */
+#line 10730 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_substr(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41272 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1613: /* function_call_generic: ident_cli '.' SUBSTRING '(' substring_operands_special ')' */
-#line 10543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1632: /* function_call_generic: ident_cli '.' SUBSTRING '(' substring_operands_special ')' */
+#line 10735 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_substr(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].substring_spec)))))
MYSQL_YYABORT;
}
-#line 41091 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1614: /* function_call_generic: ident_cli '.' TRIM '(' opt_expr_list ')' */
-#line 10548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1633: /* function_call_generic: ident_cli '.' TRIM '(' opt_expr_list ')' */
+#line 10740 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_trim(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].item_list)))))
MYSQL_YYABORT;
}
-#line 41100 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41290 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1615: /* function_call_generic: ident_cli '.' TRIM '(' trim_operands_special ')' */
-#line 10553 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1634: /* function_call_generic: ident_cli '.' TRIM '(' trim_operands_special ')' */
+#line 10745 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_func_trim(thd, (yyvsp[-5].ident_cli), (yyvsp[-3].kwd), (yyvsp[-1].trim)))))
MYSQL_YYABORT;
}
-#line 41109 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1616: /* fulltext_options: opt_natural_language_mode opt_query_expansion */
-#line 10573 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1635: /* fulltext_options: opt_natural_language_mode opt_query_expansion */
+#line 10765 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].num) | (yyvsp[0].num); }
-#line 41115 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1617: /* fulltext_options: IN_SYM BOOLEAN_SYM MODE_SYM */
-#line 10575 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1636: /* fulltext_options: IN_SYM BOOLEAN_SYM MODE_SYM */
+#line 10767 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_BOOL; }
-#line 41121 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41311 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1618: /* opt_natural_language_mode: %empty */
-#line 10579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1637: /* opt_natural_language_mode: %empty */
+#line 10771 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_NL; }
-#line 41127 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41317 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1619: /* opt_natural_language_mode: IN_SYM NATURAL LANGUAGE_SYM MODE_SYM */
-#line 10580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1638: /* opt_natural_language_mode: IN_SYM NATURAL LANGUAGE_SYM MODE_SYM */
+#line 10772 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_NL; }
-#line 41133 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1620: /* opt_query_expansion: %empty */
-#line 10584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1639: /* opt_query_expansion: %empty */
+#line 10776 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 41139 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41329 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1621: /* opt_query_expansion: WITH QUERY_SYM EXPANSION_SYM */
-#line 10585 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1640: /* opt_query_expansion: WITH QUERY_SYM EXPANSION_SYM */
+#line 10777 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= FT_EXPAND; }
-#line 41145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1622: /* opt_udf_expr_list: %empty */
-#line 10589 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1641: /* opt_udf_expr_list: %empty */
+#line 10781 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= NULL; }
-#line 41151 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1623: /* opt_udf_expr_list: udf_expr_list */
-#line 10590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1642: /* opt_udf_expr_list: udf_expr_list */
+#line 10782 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[0].item_list); }
-#line 41157 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1624: /* udf_expr_list: udf_expr */
-#line 10595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1643: /* udf_expr_list: udf_expr */
+#line 10787 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= new (thd->mem_root) List<Item>;
if (unlikely((yyval.item_list) == NULL))
MYSQL_YYABORT;
(yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root);
}
-#line 41168 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1625: /* udf_expr_list: udf_expr_list ',' udf_expr */
-#line 10602 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1644: /* udf_expr_list: udf_expr_list ',' udf_expr */
+#line 10794 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root);
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 41177 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41367 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1626: /* udf_expr: remember_name expr remember_end select_alias */
-#line 10610 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1645: /* udf_expr: remember_name expr remember_end select_alias */
+#line 10802 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Use Item::name as a storage for the attribute value of user
@@ -41201,61 +41391,61 @@ yyreduce:
(yyvsp[-2].item)->set_name(thd, (yyvsp[-3].simple_string), (uint) ((yyvsp[-1].simple_string) - (yyvsp[-3].simple_string)), thd->charset());
(yyval.item)= (yyvsp[-2].item);
}
-#line 41205 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1627: /* sum_expr: AVG_SYM '(' in_sum_expr ')' */
-#line 10637 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1646: /* sum_expr: AVG_SYM '(' in_sum_expr ')' */
+#line 10829 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_avg(thd, (yyvsp[-1].item), FALSE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41405 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1628: /* sum_expr: AVG_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10643 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1647: /* sum_expr: AVG_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10835 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_avg(thd, (yyvsp[-1].item), TRUE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41225 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41415 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1629: /* sum_expr: BIT_AND '(' in_sum_expr ')' */
-#line 10649 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1648: /* sum_expr: BIT_AND '(' in_sum_expr ')' */
+#line 10841 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_and(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41425 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1630: /* sum_expr: BIT_OR '(' in_sum_expr ')' */
-#line 10655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1649: /* sum_expr: BIT_OR '(' in_sum_expr ')' */
+#line 10847 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_or(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41435 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1631: /* sum_expr: BIT_XOR '(' in_sum_expr ')' */
-#line 10661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1650: /* sum_expr: BIT_XOR '(' in_sum_expr ')' */
+#line 10853 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_xor(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41255 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41445 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1632: /* sum_expr: COUNT_SYM '(' opt_all '*' ')' */
-#line 10667 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1651: /* sum_expr: COUNT_SYM '(' opt_all '*' ')' */
+#line 10859 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *item= new (thd->mem_root) Item_int(thd, (int32) 0L, 1);
if (unlikely(item == NULL))
@@ -41264,149 +41454,149 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1633: /* sum_expr: COUNT_SYM '(' in_sum_expr ')' */
-#line 10676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1652: /* sum_expr: COUNT_SYM '(' in_sum_expr ')' */
+#line 10868 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_count(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41468 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1634: /* $@143: %empty */
-#line 10682 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1653: /* $@143: %empty */
+#line 10874 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 41284 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41474 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1635: /* $@144: %empty */
-#line 10684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1654: /* $@144: %empty */
+#line 10876 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr--; }
-#line 41290 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1636: /* sum_expr: COUNT_SYM '(' DISTINCT $@143 expr_list $@144 ')' */
-#line 10686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1655: /* sum_expr: COUNT_SYM '(' DISTINCT $@143 expr_list $@144 ')' */
+#line 10878 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_count(thd, *(yyvsp[-2].item_list));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41300 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41490 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1637: /* sum_expr: MIN_SYM '(' in_sum_expr ')' */
-#line 10692 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1656: /* sum_expr: MIN_SYM '(' in_sum_expr ')' */
+#line 10884 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_min(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41310 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41500 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1638: /* sum_expr: MIN_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10703 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1657: /* sum_expr: MIN_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10895 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_min(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1639: /* sum_expr: MAX_SYM '(' in_sum_expr ')' */
-#line 10709 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1658: /* sum_expr: MAX_SYM '(' in_sum_expr ')' */
+#line 10901 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_max(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41330 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41520 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1640: /* sum_expr: MAX_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10715 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1659: /* sum_expr: MAX_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10907 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_max(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41340 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1641: /* sum_expr: STD_SYM '(' in_sum_expr ')' */
-#line 10721 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1660: /* sum_expr: STD_SYM '(' in_sum_expr ')' */
+#line 10913 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_std(thd, (yyvsp[-1].item), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41350 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41540 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1642: /* sum_expr: VARIANCE_SYM '(' in_sum_expr ')' */
-#line 10727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1661: /* sum_expr: VARIANCE_SYM '(' in_sum_expr ')' */
+#line 10919 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_variance(thd, (yyvsp[-1].item), 0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41360 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41550 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1643: /* sum_expr: STDDEV_SAMP_SYM '(' in_sum_expr ')' */
-#line 10733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1662: /* sum_expr: STDDEV_SAMP_SYM '(' in_sum_expr ')' */
+#line 10925 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_std(thd, (yyvsp[-1].item), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41370 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41560 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1644: /* sum_expr: VAR_SAMP_SYM '(' in_sum_expr ')' */
-#line 10739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1663: /* sum_expr: VAR_SAMP_SYM '(' in_sum_expr ')' */
+#line 10931 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_variance(thd, (yyvsp[-1].item), 1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1645: /* sum_expr: SUM_SYM '(' in_sum_expr ')' */
-#line 10745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1664: /* sum_expr: SUM_SYM '(' in_sum_expr ')' */
+#line 10937 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_sum(thd, (yyvsp[-1].item), FALSE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41390 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1646: /* sum_expr: SUM_SYM '(' DISTINCT in_sum_expr ')' */
-#line 10751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1665: /* sum_expr: SUM_SYM '(' DISTINCT in_sum_expr ')' */
+#line 10943 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_sum(thd, (yyvsp[-1].item), TRUE);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41590 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1647: /* $@145: %empty */
-#line 10757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1666: /* $@145: %empty */
+#line 10949 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 41406 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41596 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1648: /* sum_expr: GROUP_CONCAT_SYM '(' opt_distinct $@145 expr_list opt_gorder_clause opt_gconcat_separator opt_glimit_clause ')' */
-#line 10761 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1667: /* sum_expr: GROUP_CONCAT_SYM '(' opt_distinct $@145 expr_list opt_gorder_clause opt_gconcat_separator opt_glimit_clause ')' */
+#line 10953 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->in_sum_expr--;
@@ -41422,17 +41612,17 @@ yyreduce:
(yyvsp[-4].item_list)->empty();
sel->gorder_list.empty();
}
-#line 41426 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41616 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1649: /* $@146: %empty */
-#line 10777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1668: /* $@146: %empty */
+#line 10969 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 41432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1650: /* sum_expr: JSON_ARRAYAGG_SYM '(' opt_distinct $@146 expr_list opt_gorder_clause opt_glimit_clause ')' */
-#line 10780 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1669: /* sum_expr: JSON_ARRAYAGG_SYM '(' opt_distinct $@146 expr_list opt_gorder_clause opt_glimit_clause ')' */
+#line 10972 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
List<Item> *args= (yyvsp[-3].item_list);
@@ -41459,17 +41649,17 @@ yyreduce:
(yyvsp[-3].item_list)->empty();
sel->gorder_list.empty();
}
-#line 41463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41653 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1651: /* $@147: %empty */
-#line 10807 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1670: /* $@147: %empty */
+#line 10999 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->in_sum_expr++; }
-#line 41469 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41659 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1652: /* sum_expr: JSON_OBJECTAGG_SYM '(' $@147 expr ',' expr ')' */
-#line 10809 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1671: /* sum_expr: JSON_OBJECTAGG_SYM '(' $@147 expr ',' expr ')' */
+#line 11001 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->in_sum_expr--;
@@ -41478,11 +41668,11 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41482 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41672 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1653: /* window_func_expr: window_func OVER_SYM window_name */
-#line 10821 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1672: /* window_func_expr: window_func OVER_SYM window_name */
+#line 11013 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_window_func(thd, (Item_sum *) (yyvsp[-2].item), (yyvsp[0].lex_str_ptr));
if (unlikely((yyval.item) == NULL))
@@ -41490,11 +41680,11 @@ yyreduce:
if (unlikely(Select->add_window_func((Item_window_func *) (yyval.item))))
MYSQL_YYABORT;
}
-#line 41494 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1654: /* window_func_expr: window_func OVER_SYM window_spec */
-#line 10830 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1673: /* window_func_expr: window_func OVER_SYM window_spec */
+#line 11022 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(Select->add_window_spec(thd, lex->win_ref,
@@ -41509,11 +41699,11 @@ yyreduce:
if (unlikely(Select->add_window_func((Item_window_func *) (yyval.item))))
MYSQL_YYABORT;
}
-#line 41513 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41703 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1657: /* window_func: function_call_generic */
-#line 10852 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1676: /* window_func: function_call_generic */
+#line 11044 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item* item = (Item*)(yyvsp[0].item);
/* Only UDF aggregate here possible */
@@ -41525,101 +41715,101 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 41529 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1658: /* simple_window_func: ROW_NUMBER_SYM '(' ')' */
-#line 10867 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1677: /* simple_window_func: ROW_NUMBER_SYM '(' ')' */
+#line 11059 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_row_number(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41539 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41729 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1659: /* simple_window_func: RANK_SYM '(' ')' */
-#line 10874 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1678: /* simple_window_func: RANK_SYM '(' ')' */
+#line 11066 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_rank(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41549 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41739 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1660: /* simple_window_func: DENSE_RANK_SYM '(' ')' */
-#line 10881 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1679: /* simple_window_func: DENSE_RANK_SYM '(' ')' */
+#line 11073 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_dense_rank(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41749 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1661: /* simple_window_func: PERCENT_RANK_SYM '(' ')' */
-#line 10888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1680: /* simple_window_func: PERCENT_RANK_SYM '(' ')' */
+#line 11080 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_percent_rank(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41569 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1662: /* simple_window_func: CUME_DIST_SYM '(' ')' */
-#line 10895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1681: /* simple_window_func: CUME_DIST_SYM '(' ')' */
+#line 11087 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_cume_dist(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41579 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41769 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1663: /* simple_window_func: NTILE_SYM '(' expr ')' */
-#line 10902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1682: /* simple_window_func: NTILE_SYM '(' expr ')' */
+#line 11094 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_ntile(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41779 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1664: /* simple_window_func: FIRST_VALUE_SYM '(' expr ')' */
-#line 10909 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1683: /* simple_window_func: FIRST_VALUE_SYM '(' expr ')' */
+#line 11101 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_first_value(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41599 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1665: /* simple_window_func: LAST_VALUE '(' expr ')' */
-#line 10916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1684: /* simple_window_func: LAST_VALUE '(' expr ')' */
+#line 11108 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_last_value(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1666: /* simple_window_func: NTH_VALUE_SYM '(' expr ',' expr ')' */
-#line 10923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1685: /* simple_window_func: NTH_VALUE_SYM '(' expr ',' expr ')' */
+#line 11115 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_nth_value(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41619 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41809 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1667: /* simple_window_func: LEAD_SYM '(' expr ')' */
-#line 10930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1686: /* simple_window_func: LEAD_SYM '(' expr ')' */
+#line 11122 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* No second argument defaults to 1. */
Item* item_offset= new (thd->mem_root) Item_uint(thd, 1);
@@ -41629,21 +41819,21 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41823 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1668: /* simple_window_func: LEAD_SYM '(' expr ',' expr ')' */
-#line 10941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1687: /* simple_window_func: LEAD_SYM '(' expr ',' expr ')' */
+#line 11133 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_lead(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41643 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41833 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1669: /* simple_window_func: LAG_SYM '(' expr ')' */
-#line 10948 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1688: /* simple_window_func: LAG_SYM '(' expr ')' */
+#line 11140 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* No second argument defaults to 1. */
Item* item_offset= new (thd->mem_root) Item_uint(thd, 1);
@@ -41653,21 +41843,21 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41657 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41847 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1670: /* simple_window_func: LAG_SYM '(' expr ',' expr ')' */
-#line 10959 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1689: /* simple_window_func: LAG_SYM '(' expr ',' expr ')' */
+#line 11151 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_lag(thd, (yyvsp[-3].item), (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41667 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41857 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1671: /* inverse_distribution_function: percentile_function OVER_SYM '(' opt_window_partition_clause ')' */
-#line 10971 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1690: /* inverse_distribution_function: percentile_function OVER_SYM '(' opt_window_partition_clause ')' */
+#line 11163 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(Select->add_window_spec(thd, lex->win_ref,
@@ -41682,25 +41872,25 @@ yyreduce:
if (unlikely(Select->add_window_func((Item_window_func *) (yyval.item))))
MYSQL_YYABORT;
}
-#line 41686 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41876 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1672: /* $@148: %empty */
-#line 10989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1691: /* $@148: %empty */
+#line 11181 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->prepare_add_window_spec(thd); }
-#line 41692 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41882 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1673: /* percentile_function: inverse_distribution_function_def WITHIN GROUP_SYM '(' $@148 order_by_single_element_list ')' */
-#line 10991 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1692: /* percentile_function: inverse_distribution_function_def WITHIN GROUP_SYM '(' $@148 order_by_single_element_list ')' */
+#line 11183 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[-6].item);
}
-#line 41700 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1674: /* percentile_function: MEDIAN_SYM '(' expr ')' */
-#line 10995 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1693: /* percentile_function: MEDIAN_SYM '(' expr ')' */
+#line 11187 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *args= new (thd->mem_root) Item_decimal(thd, "0.5", 3,
thd->charset());
@@ -41714,67 +41904,67 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41718 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1675: /* inverse_distribution_function_def: PERCENTILE_CONT_SYM '(' expr ')' */
-#line 11012 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1694: /* inverse_distribution_function_def: PERCENTILE_CONT_SYM '(' expr ')' */
+#line 11204 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_percentile_cont(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1676: /* inverse_distribution_function_def: PERCENTILE_DISC_SYM '(' expr ')' */
-#line 11018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1695: /* inverse_distribution_function_def: PERCENTILE_DISC_SYM '(' expr ')' */
+#line 11210 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_sum_percentile_disc(thd, (yyvsp[-1].item));
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 41738 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41928 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1677: /* order_by_single_element_list: ORDER_SYM BY order_ident order_dir */
-#line 11027 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1696: /* order_by_single_element_list: ORDER_SYM BY order_ident order_dir */
+#line 11219 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_order_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 41747 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41937 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1678: /* window_name: ident */
-#line 11036 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1697: /* window_name: ident */
+#line 11228 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str_ptr)= (LEX_CSTRING *) thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING));
if (unlikely((yyval.lex_str_ptr) == NULL))
MYSQL_YYABORT;
}
-#line 41757 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41947 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1679: /* $@149: %empty */
-#line 11045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1698: /* $@149: %empty */
+#line 11237 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(! Lex->parsing_options.allows_variable))
my_yyabort_error((ER_VIEW_SELECT_VARIABLE, MYF(0)));
}
-#line 41766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41956 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1680: /* variable: '@' $@149 variable_aux */
-#line 11050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1699: /* variable: '@' $@149 variable_aux */
+#line 11242 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= (yyvsp[0].item);
}
-#line 41774 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1681: /* variable_aux: ident_or_text SET_VAR expr */
-#line 11057 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1700: /* variable_aux: ident_or_text SET_VAR expr */
+#line 11249 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_func_set_user_var *item;
if (!(yyvsp[-2].lex_str).length)
@@ -41789,11 +41979,11 @@ yyreduce:
lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
lex->set_var_list.push_back(item, thd->mem_root);
}
-#line 41793 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 41983 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1682: /* variable_aux: ident_or_text */
-#line 11072 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1701: /* variable_aux: ident_or_text */
+#line 11264 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -41806,103 +41996,103 @@ yyreduce:
LEX *lex= Lex;
lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
}
-#line 41810 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1683: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name */
-#line 11085 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1702: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name */
+#line 11277 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_sysvar(thd, (yyvsp[-1].var_type), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 41819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42009 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1684: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name '.' ident */
-#line 11090 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1703: /* variable_aux: '@' opt_var_ident_type ident_sysvar_name '.' ident */
+#line 11282 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_sysvar(thd, (yyvsp[-3].var_type), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 41828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1685: /* opt_distinct: %empty */
-#line 11097 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1704: /* opt_distinct: %empty */
+#line 11289 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 41834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1686: /* opt_distinct: DISTINCT */
-#line 11098 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1705: /* opt_distinct: DISTINCT */
+#line 11290 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 41840 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1687: /* opt_gconcat_separator: %empty */
-#line 11103 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1706: /* opt_gconcat_separator: %empty */
+#line 11295 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.string)= new (thd->mem_root) String(",", 1, &my_charset_latin1);
if (unlikely((yyval.string) == NULL))
MYSQL_YYABORT;
}
-#line 41850 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1688: /* opt_gconcat_separator: SEPARATOR_SYM text_string */
-#line 11108 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1707: /* opt_gconcat_separator: SEPARATOR_SYM text_string */
+#line 11300 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.string) = (yyvsp[0].string); }
-#line 41856 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1691: /* gorder_list: gorder_list ',' order_ident order_dir */
-#line 11118 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1710: /* gorder_list: gorder_list ',' order_ident order_dir */
+#line 11310 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_gorder_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 41865 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1692: /* gorder_list: order_ident order_dir */
-#line 11123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1711: /* gorder_list: order_ident order_dir */
+#line 11315 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_gorder_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 41874 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42064 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1693: /* opt_glimit_clause: %empty */
-#line 11130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1712: /* opt_glimit_clause: %empty */
+#line 11322 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 41880 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42070 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1694: /* opt_glimit_clause: glimit_clause */
-#line 11131 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1713: /* opt_glimit_clause: glimit_clause */
+#line 11323 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 41886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42076 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1695: /* glimit_clause: LIMIT glimit_options */
-#line 11137 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1714: /* glimit_clause: LIMIT glimit_options */
+#line 11329 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 41894 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1696: /* glimit_options: limit_options */
-#line 11144 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1715: /* glimit_options: limit_options */
+#line 11336 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->limit_params= (yyvsp[0].select_limit);
}
-#line 41902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42092 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1697: /* $@150: %empty */
-#line 11153 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1716: /* $@150: %empty */
+#line 11345 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->current_select->inc_in_sum_expr()))
@@ -41911,221 +42101,224 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 41915 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1698: /* in_sum_expr: opt_all $@150 expr */
-#line 11162 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1717: /* in_sum_expr: opt_all $@150 expr */
+#line 11354 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->in_sum_expr--;
(yyval.item)= (yyvsp[0].item);
}
-#line 41924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1699: /* cast_type: BINARY opt_field_length */
-#line 11170 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1718: /* cast_type: BINARY opt_field_length */
+#line 11362 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[0].Lex_length_and_dec), &my_charset_bin); }
-#line 41930 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1700: /* cast_type: CHAR_SYM opt_field_length opt_binary */
-#line 11172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1719: /* cast_type: CHAR_SYM opt_field_length opt_binary */
+#line 11364 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
+ if ((yyval.Lex_cast_type).set(&type_handler_long_blob,
+ (yyvsp[-1].Lex_length_and_dec), thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 41940 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42131 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1701: /* cast_type: VARCHAR field_length opt_binary */
-#line 11178 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1720: /* cast_type: VARCHAR field_length opt_binary */
+#line 11371 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
+ if ((yyval.Lex_cast_type).set(&type_handler_long_blob,
+ (yyvsp[-1].Lex_length_and_dec), thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 41950 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42142 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1702: /* cast_type: VARCHAR2_ORACLE_SYM field_length opt_binary */
-#line 11184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1721: /* cast_type: VARCHAR2_ORACLE_SYM field_length opt_binary */
+#line 11378 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if ((yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[-1].Lex_length_and_dec), (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
+ if ((yyval.Lex_cast_type).set(&type_handler_long_blob,
+ (yyvsp[-1].Lex_length_and_dec), thd, thd->variables.character_set_collations, (yyvsp[0].Lex_exact_charset_extended_collation_attrs),
thd->variables.collation_connection))
MYSQL_YYABORT;
}
-#line 41960 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42153 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1703: /* cast_type: NCHAR_SYM opt_field_length */
-#line 11190 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1722: /* cast_type: NCHAR_SYM opt_field_length */
+#line 11385 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_cast_type).set(&type_handler_long_blob, (yyvsp[0].Lex_length_and_dec), national_charset_info);
}
-#line 41968 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1704: /* cast_type: cast_type_numeric */
-#line 11193 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1723: /* cast_type: cast_type_numeric */
+#line 11388 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type)= (yyvsp[0].Lex_cast_type); }
-#line 41974 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42167 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1705: /* cast_type: cast_type_temporal */
-#line 11194 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1724: /* cast_type: cast_type_temporal */
+#line 11389 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type)= (yyvsp[0].Lex_cast_type); }
-#line 41980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1706: /* cast_type: udt_name */
-#line 11196 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1725: /* cast_type: udt_name */
+#line 11391 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->set_cast_type_udt(&(yyval.Lex_cast_type), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 41989 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42182 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1707: /* cast_type_numeric: INT_SYM */
-#line 11203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1726: /* cast_type_numeric: INT_SYM */
+#line 11398 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_slonglong); }
-#line 41995 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42188 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1708: /* cast_type_numeric: SIGNED_SYM */
-#line 11204 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1727: /* cast_type_numeric: SIGNED_SYM */
+#line 11399 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_slonglong); }
-#line 42001 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1709: /* cast_type_numeric: SIGNED_SYM INT_SYM */
-#line 11205 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1728: /* cast_type_numeric: SIGNED_SYM INT_SYM */
+#line 11400 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_slonglong); }
-#line 42007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1710: /* cast_type_numeric: UNSIGNED */
-#line 11206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1729: /* cast_type_numeric: UNSIGNED */
+#line 11401 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_ulonglong); }
-#line 42013 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1711: /* cast_type_numeric: UNSIGNED INT_SYM */
-#line 11207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1730: /* cast_type_numeric: UNSIGNED INT_SYM */
+#line 11402 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_ulonglong); }
-#line 42019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42212 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1712: /* cast_type_numeric: DECIMAL_SYM float_options */
-#line 11208 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1731: /* cast_type_numeric: DECIMAL_SYM float_options */
+#line 11403 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_newdecimal, (yyvsp[0].Lex_length_and_dec)); }
-#line 42025 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42218 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1713: /* cast_type_numeric: FLOAT_SYM */
-#line 11209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1732: /* cast_type_numeric: FLOAT_SYM */
+#line 11404 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_float); }
-#line 42031 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42224 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1714: /* cast_type_numeric: DOUBLE_SYM opt_precision */
-#line 11210 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1733: /* cast_type_numeric: DOUBLE_SYM opt_precision */
+#line 11405 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_double, (yyvsp[0].Lex_length_and_dec)); }
-#line 42037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42230 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1715: /* cast_type_temporal: DATE_SYM */
-#line 11214 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1734: /* cast_type_temporal: DATE_SYM */
+#line 11409 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_newdate); }
-#line 42043 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1716: /* cast_type_temporal: TIME_SYM opt_field_scale */
-#line 11215 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1735: /* cast_type_temporal: TIME_SYM opt_field_scale */
+#line 11410 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_time2, (yyvsp[0].Lex_length_and_dec)); }
-#line 42049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1717: /* cast_type_temporal: DATETIME opt_field_scale */
-#line 11216 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1736: /* cast_type_temporal: DATETIME opt_field_scale */
+#line 11411 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.Lex_cast_type).set(&type_handler_datetime2, (yyvsp[0].Lex_length_and_dec)); }
-#line 42055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42248 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1718: /* cast_type_temporal: INTERVAL_SYM DAY_SECOND_SYM field_scale */
-#line 11218 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1737: /* cast_type_temporal: INTERVAL_SYM DAY_SECOND_SYM field_scale */
+#line 11413 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.Lex_cast_type).set(&type_handler_interval_DDhhmmssff, (yyvsp[0].Lex_length_and_dec));
}
-#line 42063 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42256 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1719: /* opt_expr_list: %empty */
-#line 11224 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1738: /* opt_expr_list: %empty */
+#line 11419 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= NULL; }
-#line 42069 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42262 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1720: /* opt_expr_list: expr_list */
-#line 11225 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1739: /* opt_expr_list: expr_list */
+#line 11420 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[0].item_list);}
-#line 42075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42268 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1721: /* expr_list: expr */
-#line 11230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1740: /* expr_list: expr */
+#line 11425 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_list)= List<Item>::make(thd->mem_root, (yyvsp[0].item)))))
MYSQL_YYABORT;
}
-#line 42084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42277 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1722: /* expr_list: expr_list ',' expr */
-#line 11235 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1741: /* expr_list: expr_list ',' expr */
+#line 11430 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root);
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 42093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42286 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1723: /* ident_list_arg: ident_list */
-#line 11242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1742: /* ident_list_arg: ident_list */
+#line 11437 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[0].item_list); }
-#line 42099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42292 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1724: /* ident_list_arg: '(' ident_list ')' */
-#line 11243 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1743: /* ident_list_arg: '(' ident_list ')' */
+#line 11438 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item_list)= (yyvsp[-1].item_list); }
-#line 42105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42298 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1725: /* ident_list: simple_ident */
-#line 11248 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1744: /* ident_list: simple_ident */
+#line 11443 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= new (thd->mem_root) List<Item>;
if (unlikely((yyval.item_list) == NULL) ||
unlikely((yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 42116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42309 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1726: /* ident_list: ident_list ',' simple_ident */
-#line 11255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1745: /* ident_list: ident_list ',' simple_ident */
+#line 11450 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root);
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 42125 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42318 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1727: /* when_list: WHEN_SYM expr THEN_SYM expr */
-#line 11263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1746: /* when_list: WHEN_SYM expr THEN_SYM expr */
+#line 11458 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_list)= new (thd->mem_root) List<Item>;
if (unlikely((yyval.item_list) == NULL))
@@ -42134,38 +42327,38 @@ yyreduce:
(yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 42138 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1728: /* when_list: when_list WHEN_SYM expr THEN_SYM expr */
-#line 11272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1747: /* when_list: when_list WHEN_SYM expr THEN_SYM expr */
+#line 11467 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-4].item_list)->push_back((yyvsp[-2].item), thd->mem_root) ||
(yyvsp[-4].item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.item_list)= (yyvsp[-4].item_list);
}
-#line 42149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42342 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1730: /* when_list_opt_else: when_list ELSE expr */
-#line 11283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1749: /* when_list_opt_else: when_list ELSE expr */
+#line 11478 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
(yyval.item_list)= (yyvsp[-2].item_list);
}
-#line 42159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42352 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1731: /* table_ref: table_factor */
-#line 11293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1750: /* table_ref: table_factor */
+#line 11488 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42165 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1732: /* table_ref: join_table */
-#line 11295 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1751: /* table_ref: join_table */
+#line 11490 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!((yyval.table_list)= lex->current_select->nest_last_join(thd))))
@@ -42174,86 +42367,86 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 42178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1733: /* json_text_literal: TEXT_STRING */
-#line 11307 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1752: /* json_text_literal: TEXT_STRING */
+#line 11502 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42186 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42379 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1734: /* json_text_literal: NCHAR_STRING */
-#line 11311 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1753: /* json_text_literal: NCHAR_STRING */
+#line 11506 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= national_charset_info;
}
-#line 42194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42387 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1735: /* json_text_literal: UNDERSCORE_CHARSET TEXT_STRING */
-#line 11315 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1754: /* json_text_literal: UNDERSCORE_CHARSET TEXT_STRING */
+#line 11510 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= (yyvsp[-1].charset);
(yyval.lex_string_with_metadata)= (yyvsp[0].lex_string_with_metadata);
}
-#line 42203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42396 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1737: /* json_text_literal_or_num: NUM */
-#line 11324 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1756: /* json_text_literal_or_num: NUM */
+#line 11519 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42211 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1738: /* json_text_literal_or_num: LONG_NUM */
-#line 11328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1757: /* json_text_literal_or_num: LONG_NUM */
+#line 11523 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42412 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1739: /* json_text_literal_or_num: DECIMAL_NUM */
-#line 11332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1758: /* json_text_literal_or_num: DECIMAL_NUM */
+#line 11527 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1740: /* json_text_literal_or_num: FLOAT_NUM */
-#line 11336 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1759: /* json_text_literal_or_num: FLOAT_NUM */
+#line 11531 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_text_literal_cs= NULL;
}
-#line 42235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42428 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1741: /* join_table_list: derived_table_list */
-#line 11342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1760: /* join_table_list: derived_table_list */
+#line 11537 "/home/buildbot/git/sql/sql_yacc.yy"
{ MYSQL_YYABORT_UNLESS((yyval.table_list)=(yyvsp[0].table_list)); }
-#line 42241 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1742: /* json_table_columns_clause: COLUMNS '(' json_table_columns_list ')' */
-#line 11347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1761: /* json_table_columns_clause: COLUMNS '(' json_table_columns_list ')' */
+#line 11542 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1744: /* json_table_columns_list: json_table_columns_list ',' json_table_column */
-#line 11353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1763: /* json_table_columns_list: json_table_columns_list ',' json_table_column */
+#line 11548 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1745: /* $@151: %empty */
-#line 11358 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1764: /* $@151: %empty */
+#line 11553 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Create_field *f= new (thd->mem_root) Create_field();
@@ -42272,11 +42465,11 @@ yyreduce:
lex->init_last_field(f, &(yyvsp[0].ident_sys));
}
-#line 42276 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42469 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1746: /* json_table_column: ident $@151 json_table_column_type */
-#line 11377 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1765: /* json_table_column: ident $@151 json_table_column_type */
+#line 11572 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(lex->json_table->
@@ -42285,11 +42478,11 @@ yyreduce:
lex->json_table->m_columns.push_back(
lex->json_table->m_cur_json_table_column, thd->mem_root);
}
-#line 42289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42482 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1747: /* $@152: %empty */
-#line 11386 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1766: /* $@152: %empty */
+#line 11581 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Json_table_nested_path *np= new (thd->mem_root)
@@ -42297,20 +42490,20 @@ yyreduce:
np->set_path(thd, (yyvsp[0].lex_string_with_metadata));
lex->json_table->start_nested_path(np);
}
-#line 42301 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42494 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1748: /* json_table_column: NESTED_SYM PATH_SYM json_text_literal $@152 json_table_columns_clause */
-#line 11394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1767: /* json_table_column: NESTED_SYM PATH_SYM json_text_literal $@152 json_table_columns_clause */
+#line 11589 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->json_table->end_nested_path();
}
-#line 42310 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1749: /* json_table_column_type: FOR_SYM ORDINALITY_SYM */
-#line 11402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1768: /* json_table_column_type: FOR_SYM ORDINALITY_SYM */
+#line 11597 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_field_type_st type;
type.set(&type_handler_slong);
@@ -42319,11 +42512,11 @@ yyreduce:
Lex->json_table->m_cur_json_table_column->
set(Json_table_column::FOR_ORDINALITY);
}
-#line 42323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1750: /* json_table_column_type: json_table_field_type PATH_SYM json_text_literal json_opt_on_empty_or_error */
-#line 11412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1769: /* json_table_column_type: json_table_field_type PATH_SYM json_text_literal json_opt_on_empty_or_error */
+#line 11607 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[-3].Lex_field_type),
COLUMN_DEFINITION_TABLE_FIELD);
@@ -42334,11 +42527,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 42338 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42531 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1751: /* json_table_column_type: json_table_field_type EXISTS PATH_SYM json_text_literal */
-#line 11423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1770: /* json_table_column_type: json_table_field_type EXISTS PATH_SYM json_text_literal */
+#line 11618 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->last_field->set_attributes(thd, (yyvsp[-3].Lex_field_type),
COLUMN_DEFINITION_TABLE_FIELD);
@@ -42347,70 +42540,70 @@ yyreduce:
(yyvsp[-3].Lex_field_type).charset_collation_attrs()))
MYSQL_YYABORT;
}
-#line 42351 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42544 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1756: /* json_opt_on_empty_or_error: %empty */
-#line 11442 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1775: /* json_opt_on_empty_or_error: %empty */
+#line 11637 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42357 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42550 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1761: /* json_on_response: ERROR_SYM */
-#line 11451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1780: /* json_on_response: ERROR_SYM */
+#line 11646 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.json_on_response).m_response= Json_table_column::RESPONSE_ERROR;
}
-#line 42365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42558 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1762: /* json_on_response: NULL_SYM */
-#line 11455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1781: /* json_on_response: NULL_SYM */
+#line 11650 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.json_on_response).m_response= Json_table_column::RESPONSE_NULL;
}
-#line 42373 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42566 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1763: /* json_on_response: DEFAULT json_text_literal_or_num */
-#line 11459 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1782: /* json_on_response: DEFAULT json_text_literal_or_num */
+#line 11654 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.json_on_response).m_response= Json_table_column::RESPONSE_DEFAULT;
(yyval.json_on_response).m_default= (yyvsp[0].lex_string_with_metadata);
Lex->json_table->m_cur_json_table_column->m_defaults_cs=
thd->variables.collation_connection;
}
-#line 42384 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42577 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1764: /* json_on_error_response: json_on_response ON ERROR_SYM */
-#line 11469 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1783: /* json_on_error_response: json_on_response ON ERROR_SYM */
+#line 11664 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_cur_json_table_column->m_on_error= (yyvsp[-2].json_on_response);
}
-#line 42392 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42585 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1765: /* json_on_empty_response: json_on_response ON EMPTY_SYM */
-#line 11476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1784: /* json_on_empty_response: json_on_response ON EMPTY_SYM */
+#line 11671 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->json_table->m_cur_json_table_column->m_on_empty= (yyvsp[-2].json_on_response);
}
-#line 42400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42593 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1766: /* $@153: %empty */
-#line 11483 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1785: /* $@153: %empty */
+#line 11678 "/home/buildbot/git/sql/sql_yacc.yy"
{
push_table_function_arg_context(Lex, thd->mem_root);
//TODO: introduce IN_TABLE_FUNC_ARGUMENT?
Select->parsing_place= IN_ON;
}
-#line 42410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1767: /* $@154: %empty */
-#line 11489 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1786: /* $@154: %empty */
+#line 11684 "/home/buildbot/git/sql/sql_yacc.yy"
{
Table_function_json_table *jt=
new (thd->mem_root) Table_function_json_table((yyvsp[-1].item));
@@ -42423,11 +42616,11 @@ yyreduce:
Select->parsing_place= NO_MATTER;
jt->set_name_resolution_context(Lex->pop_context());
}
-#line 42427 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1768: /* table_function: JSON_TABLE_SYM '(' $@153 expr ',' $@154 json_text_literal json_table_columns_clause ')' opt_table_alias_clause */
-#line 11502 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1787: /* table_function: JSON_TABLE_SYM '(' $@153 expr ',' $@154 json_text_literal json_table_columns_clause ')' opt_table_alias_clause */
+#line 11697 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
if (unlikely((yyvsp[0].lex_str_ptr) == NULL))
@@ -42451,51 +42644,51 @@ yyreduce:
Lex->json_table= 0;
status_var_increment(thd->status_var.feature_json);
}
-#line 42455 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1769: /* esc_table_ref: table_ref */
-#line 11535 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1788: /* esc_table_ref: table_ref */
+#line 11730 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)=(yyvsp[0].table_list); }
-#line 42461 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1770: /* esc_table_ref: '{' ident table_ref '}' */
-#line 11536 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1789: /* esc_table_ref: '{' ident table_ref '}' */
+#line 11731 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)=(yyvsp[-1].table_list); }
-#line 42467 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1771: /* derived_table_list: esc_table_ref */
-#line 11543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1790: /* derived_table_list: esc_table_ref */
+#line 11738 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table_list)=(yyvsp[0].table_list);
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 42476 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1772: /* derived_table_list: derived_table_list ',' esc_table_ref */
-#line 11548 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1791: /* derived_table_list: derived_table_list ',' esc_table_ref */
+#line 11743 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-2].table_list) && ((yyval.table_list)=(yyvsp[0].table_list)));
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 42485 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42678 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1773: /* join_table: table_ref normal_join table_ref */
-#line 11562 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1792: /* join_table: table_ref normal_join table_ref */
+#line 11757 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-2].table_list) && ((yyval.table_list)=(yyvsp[0].table_list)));
if (unlikely(Select->add_cross_joined_table((yyvsp[-2].table_list), (yyvsp[0].table_list), (yyvsp[-1].num))))
MYSQL_YYABORT;
}
-#line 42495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42688 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1774: /* $@155: %empty */
-#line 11569 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1793: /* $@155: %empty */
+#line 11764 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-3].table_list));
@@ -42505,42 +42698,42 @@ yyreduce:
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-#line 42509 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1775: /* join_table: table_ref normal_join table_ref ON $@155 expr */
-#line 11579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1794: /* join_table: table_ref normal_join table_ref ON $@155 expr */
+#line 11774 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-3].table_list)->straight=(yyvsp[-4].num);
add_join_on(thd, (yyvsp[-3].table_list), (yyvsp[0].item));
(yyvsp[-3].table_list)->on_context= Lex->pop_context();
Select->parsing_place= NO_MATTER;
}
-#line 42520 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1776: /* $@156: %empty */
-#line 11587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1795: /* $@156: %empty */
+#line 11782 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-3].table_list));
Select->add_joined_table((yyvsp[-1].table_list));
}
-#line 42530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42723 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1777: /* join_table: table_ref normal_join table_ref USING $@156 '(' using_list ')' */
-#line 11593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1796: /* join_table: table_ref normal_join table_ref USING $@156 '(' using_list ')' */
+#line 11788 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-5].table_list)->straight=(yyvsp[-6].num);
add_join_natural((yyvsp[-7].table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select);
(yyval.table_list)=(yyvsp[-5].table_list);
}
-#line 42540 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42733 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1778: /* join_table: table_ref NATURAL inner_join table_factor */
-#line 11599 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1797: /* join_table: table_ref NATURAL inner_join table_factor */
+#line 11794 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && ((yyval.table_list)=(yyvsp[0].table_list)));
Select->add_joined_table((yyvsp[-3].table_list));
@@ -42548,11 +42741,11 @@ yyreduce:
(yyvsp[0].table_list)->straight=(yyvsp[-1].num);
add_join_natural((yyvsp[-3].table_list),(yyvsp[0].table_list),NULL,Select);
}
-#line 42552 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1779: /* $@157: %empty */
-#line 11610 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1798: /* $@157: %empty */
+#line 11805 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -42562,11 +42755,11 @@ yyreduce:
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-#line 42566 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1780: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_ref ON $@157 expr */
-#line 11620 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1799: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_ref ON $@157 expr */
+#line 11815 "/home/buildbot/git/sql/sql_yacc.yy"
{
add_join_on(thd, (yyvsp[-3].table_list), (yyvsp[0].item));
(yyvsp[-3].table_list)->on_context= Lex->pop_context();
@@ -42574,31 +42767,31 @@ yyreduce:
(yyval.table_list)=(yyvsp[-3].table_list);
Select->parsing_place= NO_MATTER;
}
-#line 42578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42771 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1781: /* $@158: %empty */
-#line 11628 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1800: /* $@158: %empty */
+#line 11823 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-4].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-4].table_list));
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 42588 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42781 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1782: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_factor $@158 USING '(' using_list ')' */
-#line 11634 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1801: /* join_table: table_ref LEFT opt_outer JOIN_SYM table_factor $@158 USING '(' using_list ')' */
+#line 11829 "/home/buildbot/git/sql/sql_yacc.yy"
{
add_join_natural((yyvsp[-9].table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select);
(yyvsp[-5].table_list)->outer_join|=JOIN_TYPE_LEFT;
(yyval.table_list)=(yyvsp[-5].table_list);
}
-#line 42598 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42791 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1783: /* join_table: table_ref NATURAL LEFT opt_outer JOIN_SYM table_factor */
-#line 11640 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1802: /* join_table: table_ref NATURAL LEFT opt_outer JOIN_SYM table_factor */
+#line 11835 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -42607,11 +42800,11 @@ yyreduce:
(yyvsp[0].table_list)->outer_join|=JOIN_TYPE_LEFT;
(yyval.table_list)=(yyvsp[0].table_list);
}
-#line 42611 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42804 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1784: /* $@159: %empty */
-#line 11652 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1803: /* $@159: %empty */
+#line 11847 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[-1].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -42621,11 +42814,11 @@ yyreduce:
MYSQL_YYABORT;
Select->parsing_place= IN_ON;
}
-#line 42625 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42818 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1785: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_ref ON $@159 expr */
-#line 11662 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1804: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_ref ON $@159 expr */
+#line 11857 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!((yyval.table_list)= lex->current_select->convert_right_join())))
@@ -42634,32 +42827,32 @@ yyreduce:
(yyvsp[-7].table_list)->on_context= Lex->pop_context();
Select->parsing_place= NO_MATTER;
}
-#line 42638 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1786: /* $@160: %empty */
-#line 11671 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1805: /* $@160: %empty */
+#line 11866 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-4].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-4].table_list));
Select->add_joined_table((yyvsp[0].table_list));
}
-#line 42648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1787: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_factor $@160 USING '(' using_list ')' */
-#line 11677 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1806: /* join_table: table_ref RIGHT opt_outer JOIN_SYM table_factor $@160 USING '(' using_list ')' */
+#line 11872 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!((yyval.table_list)= lex->current_select->convert_right_join())))
MYSQL_YYABORT;
add_join_natural((yyval.table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select);
}
-#line 42659 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1788: /* join_table: table_ref NATURAL RIGHT opt_outer JOIN_SYM table_factor */
-#line 11684 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1807: /* join_table: table_ref NATURAL RIGHT opt_outer JOIN_SYM table_factor */
+#line 11879 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[0].table_list));
Select->add_joined_table((yyvsp[-5].table_list));
@@ -42669,129 +42862,129 @@ yyreduce:
if (unlikely(!((yyval.table_list)= lex->current_select->convert_right_join())))
MYSQL_YYABORT;
}
-#line 42673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42866 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1789: /* inner_join: JOIN_SYM */
-#line 11697 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1808: /* inner_join: JOIN_SYM */
+#line 11892 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 42679 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1790: /* inner_join: INNER_SYM JOIN_SYM */
-#line 11698 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1809: /* inner_join: INNER_SYM JOIN_SYM */
+#line 11893 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 42685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1791: /* inner_join: STRAIGHT_JOIN */
-#line 11699 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1810: /* inner_join: STRAIGHT_JOIN */
+#line 11894 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 1; }
-#line 42691 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42884 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1792: /* normal_join: inner_join */
-#line 11703 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1811: /* normal_join: inner_join */
+#line 11898 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = (yyvsp[0].num); }
-#line 42697 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1793: /* normal_join: CROSS JOIN_SYM */
-#line 11704 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1812: /* normal_join: CROSS JOIN_SYM */
+#line 11899 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num) = 0; }
-#line 42703 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1794: /* opt_use_partition: %empty */
-#line 11712 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1813: /* opt_use_partition: %empty */
+#line 11907 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.string_list)= 0;}
-#line 42709 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1796: /* use_partition: PARTITION_SYM '(' using_list ')' have_partitioning */
-#line 11718 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1815: /* use_partition: PARTITION_SYM '(' using_list ')' have_partitioning */
+#line 11913 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.string_list)= (yyvsp[-2].string_list);
Select->parsing_place= Select->save_parsing_place;
Select->save_parsing_place= NO_MATTER;
}
-#line 42719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42912 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1797: /* table_factor: table_primary_ident_opt_parens */
-#line 11726 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1816: /* table_factor: table_primary_ident_opt_parens */
+#line 11921 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42725 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1798: /* table_factor: table_primary_derived_opt_parens */
-#line 11727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1817: /* table_factor: table_primary_derived_opt_parens */
+#line 11922 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1799: /* table_factor: join_table_parens */
-#line 11729 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1818: /* table_factor: join_table_parens */
+#line 11924 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].table_list)->nested_join->nest_type= 0;
(yyval.table_list)= (yyvsp[0].table_list);
}
-#line 42740 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42933 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1800: /* table_factor: table_reference_list_parens */
-#line 11733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1819: /* table_factor: table_reference_list_parens */
+#line 11928 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42746 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42939 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1801: /* table_factor: table_function */
-#line 11734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1820: /* table_factor: table_function */
+#line 11929 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42752 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1802: /* table_primary_ident_opt_parens: table_primary_ident */
-#line 11738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1821: /* table_primary_ident_opt_parens: table_primary_ident */
+#line 11933 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42758 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1803: /* table_primary_ident_opt_parens: '(' table_primary_ident_opt_parens ')' */
-#line 11739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1822: /* table_primary_ident_opt_parens: '(' table_primary_ident_opt_parens ')' */
+#line 11934 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 42764 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42957 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1804: /* table_primary_derived_opt_parens: table_primary_derived */
-#line 11743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1823: /* table_primary_derived_opt_parens: table_primary_derived */
+#line 11938 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 42770 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42963 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1805: /* table_primary_derived_opt_parens: '(' table_primary_derived_opt_parens ')' */
-#line 11744 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1824: /* table_primary_derived_opt_parens: '(' table_primary_derived_opt_parens ')' */
+#line 11939 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 42776 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42969 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1806: /* table_reference_list_parens: '(' table_reference_list_parens ')' */
-#line 11748 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1825: /* table_reference_list_parens: '(' table_reference_list_parens ')' */
+#line 11943 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 42782 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42975 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1807: /* table_reference_list_parens: '(' nested_table_reference_list ')' */
-#line 11750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1826: /* table_reference_list_parens: '(' nested_table_reference_list ')' */
+#line 11945 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Select->end_nested_join(thd)))
MYSQL_YYABORT;
}
-#line 42791 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42984 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1808: /* nested_table_reference_list: table_ref ',' table_ref */
-#line 11758 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1827: /* nested_table_reference_list: table_ref ',' table_ref */
+#line 11953 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Select->init_nested_join(thd))
MYSQL_YYABORT;
@@ -42799,26 +42992,26 @@ yyreduce:
Select->add_joined_table((yyvsp[0].table_list));
(yyval.table_list)= (yyvsp[-2].table_list)->embedding;
}
-#line 42803 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 42996 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1809: /* nested_table_reference_list: nested_table_reference_list ',' table_ref */
-#line 11766 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1828: /* nested_table_reference_list: nested_table_reference_list ',' table_ref */
+#line 11961 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->add_joined_table((yyvsp[0].table_list));
(yyval.table_list)= (yyvsp[-2].table_list);
}
-#line 42812 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43005 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1810: /* join_table_parens: '(' join_table_parens ')' */
-#line 11773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1829: /* join_table_parens: '(' join_table_parens ')' */
+#line 11968 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[-1].table_list); }
-#line 42818 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43011 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1811: /* join_table_parens: '(' join_table ')' */
-#line 11775 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1830: /* join_table_parens: '(' join_table ')' */
+#line 11970 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (!((yyval.table_list)= lex->current_select->nest_last_join(thd)))
@@ -42827,11 +43020,11 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 42831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1812: /* table_primary_ident: table_ident opt_use_partition opt_for_system_time_clause opt_table_alias_clause opt_key_definition */
-#line 11789 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1831: /* table_primary_ident: table_ident opt_use_partition opt_for_system_time_clause opt_table_alias_clause opt_key_definition */
+#line 11984 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Select->add_table_to_list(thd, (yyvsp[-4].table), (yyvsp[-1].lex_str_ptr),
0,
@@ -42843,134 +43036,134 @@ yyreduce:
if ((yyvsp[-2].num))
(yyval.table_list)->vers_conditions= Lex->vers_conditions;
}
-#line 42847 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1813: /* table_primary_derived: subquery opt_for_system_time_clause table_alias_clause */
-#line 11805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1832: /* table_primary_derived: subquery opt_for_system_time_clause table_alias_clause */
+#line 12000 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Lex->parsed_derived_table((yyvsp[-2].select_lex)->master_unit(), (yyvsp[-1].num), (yyvsp[0].lex_str_ptr))))
MYSQL_YYABORT;
}
-#line 42856 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43049 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1814: /* table_primary_derived: subquery opt_for_system_time_clause */
-#line 11812 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1833: /* table_primary_derived: subquery opt_for_system_time_clause */
+#line 12007 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING alias;
if ((yyvsp[-1].select_lex)->make_unique_derived_name(thd, &alias) ||
!((yyval.table_list)= Lex->parsed_derived_table((yyvsp[-1].select_lex)->master_unit(), (yyvsp[0].num), &alias)))
MYSQL_YYABORT;
}
-#line 42867 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1815: /* opt_outer: %empty */
-#line 11822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1834: /* opt_outer: %empty */
+#line 12017 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1816: /* opt_outer: OUTER */
-#line 11823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1835: /* opt_outer: OUTER */
+#line 12018 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42879 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1817: /* index_hint_clause: %empty */
-#line 11828 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1836: /* index_hint_clause: %empty */
+#line 12023 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (thd->variables.old_behavior & OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN) ?
INDEX_HINT_MASK_JOIN : INDEX_HINT_MASK_ALL;
}
-#line 42888 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43081 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1818: /* index_hint_clause: FOR_SYM JOIN_SYM */
-#line 11832 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1837: /* index_hint_clause: FOR_SYM JOIN_SYM */
+#line 12027 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= INDEX_HINT_MASK_JOIN; }
-#line 42894 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43087 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1819: /* index_hint_clause: FOR_SYM ORDER_SYM BY */
-#line 11833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1838: /* index_hint_clause: FOR_SYM ORDER_SYM BY */
+#line 12028 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= INDEX_HINT_MASK_ORDER; }
-#line 42900 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1820: /* index_hint_clause: FOR_SYM GROUP_SYM BY */
-#line 11834 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1839: /* index_hint_clause: FOR_SYM GROUP_SYM BY */
+#line 12029 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= INDEX_HINT_MASK_GROUP; }
-#line 42906 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1821: /* index_hint_type: FORCE_SYM */
-#line 11838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1840: /* index_hint_type: FORCE_SYM */
+#line 12033 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.index_hint)= INDEX_HINT_FORCE; }
-#line 42912 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1822: /* index_hint_type: IGNORE_SYM */
-#line 11839 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1841: /* index_hint_type: IGNORE_SYM */
+#line 12034 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.index_hint)= INDEX_HINT_IGNORE; }
-#line 42918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43111 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1823: /* $@161: %empty */
-#line 11844 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1842: /* $@161: %empty */
+#line 12039 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_index_hint_type((yyvsp[-2].index_hint), (yyvsp[0].num));
}
-#line 42926 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43119 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1825: /* $@162: %empty */
-#line 11849 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1844: /* $@162: %empty */
+#line 12044 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_index_hint_type(INDEX_HINT_USE, (yyvsp[0].num));
}
-#line 42934 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43127 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1830: /* $@163: %empty */
-#line 11862 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1849: /* $@163: %empty */
+#line 12057 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->alloc_index_hints(thd); }
-#line 42940 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43133 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1832: /* $@164: %empty */
-#line 11866 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1851: /* $@164: %empty */
+#line 12061 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->clear_index_hints(); }
-#line 42946 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43139 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1834: /* opt_key_usage_list: %empty */
-#line 11871 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1853: /* opt_key_usage_list: %empty */
+#line 12066 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->add_index_hint(thd, NULL, 0); }
-#line 42952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1835: /* opt_key_usage_list: key_usage_list */
-#line 11872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1854: /* opt_key_usage_list: key_usage_list */
+#line 12067 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 42958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43151 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1836: /* key_usage_element: ident */
-#line 11877 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1855: /* key_usage_element: ident */
+#line 12072 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->add_index_hint(thd, (yyvsp[0].ident_sys).str, (yyvsp[0].ident_sys).length); }
-#line 42964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43157 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1837: /* key_usage_element: PRIMARY_SYM */
-#line 11879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1856: /* key_usage_element: PRIMARY_SYM */
+#line 12074 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->add_index_hint(thd, "PRIMARY", 7); }
-#line 42970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1840: /* using_list: ident */
-#line 11889 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1859: /* using_list: ident */
+#line 12084 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.string_list)= new (thd->mem_root) List<String>)))
MYSQL_YYABORT;
@@ -42981,11 +43174,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string_list)->push_back(s, thd->mem_root);
}
-#line 42985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1841: /* using_list: using_list ',' ident */
-#line 11900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1860: /* using_list: using_list ',' ident */
+#line 12095 "/home/buildbot/git/sql/sql_yacc.yy"
{
String *s= new (thd->mem_root) String((const char*) (yyvsp[0].ident_sys).str,
(yyvsp[0].ident_sys).length,
@@ -42996,197 +43189,197 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string_list)= (yyvsp[-2].string_list);
}
-#line 43000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1842: /* interval: interval_time_stamp */
-#line 11913 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1861: /* interval: interval_time_stamp */
+#line 12108 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43199 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1843: /* interval: DAY_HOUR_SYM */
-#line 11914 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1862: /* interval: DAY_HOUR_SYM */
+#line 12109 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_HOUR; }
-#line 43012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43205 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1844: /* interval: DAY_MICROSECOND_SYM */
-#line 11915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1863: /* interval: DAY_MICROSECOND_SYM */
+#line 12110 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_MICROSECOND; }
-#line 43018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43211 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1845: /* interval: DAY_MINUTE_SYM */
-#line 11916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1864: /* interval: DAY_MINUTE_SYM */
+#line 12111 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_MINUTE; }
-#line 43024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43217 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1846: /* interval: DAY_SECOND_SYM */
-#line 11917 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1865: /* interval: DAY_SECOND_SYM */
+#line 12112 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_DAY_SECOND; }
-#line 43030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43223 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1847: /* interval: HOUR_MICROSECOND_SYM */
-#line 11918 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1866: /* interval: HOUR_MICROSECOND_SYM */
+#line 12113 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_HOUR_MICROSECOND; }
-#line 43036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43229 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1848: /* interval: HOUR_MINUTE_SYM */
-#line 11919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1867: /* interval: HOUR_MINUTE_SYM */
+#line 12114 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_HOUR_MINUTE; }
-#line 43042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1849: /* interval: HOUR_SECOND_SYM */
-#line 11920 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1868: /* interval: HOUR_SECOND_SYM */
+#line 12115 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_HOUR_SECOND; }
-#line 43048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43241 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1850: /* interval: MINUTE_MICROSECOND_SYM */
-#line 11921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1869: /* interval: MINUTE_MICROSECOND_SYM */
+#line 12116 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_MINUTE_MICROSECOND; }
-#line 43054 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1851: /* interval: MINUTE_SECOND_SYM */
-#line 11922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1870: /* interval: MINUTE_SECOND_SYM */
+#line 12117 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_MINUTE_SECOND; }
-#line 43060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1852: /* interval: SECOND_MICROSECOND_SYM */
-#line 11923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1871: /* interval: SECOND_MICROSECOND_SYM */
+#line 12118 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_SECOND_MICROSECOND; }
-#line 43066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43259 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1853: /* interval: YEAR_MONTH_SYM */
-#line 11924 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1872: /* interval: YEAR_MONTH_SYM */
+#line 12119 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval)=INTERVAL_YEAR_MONTH; }
-#line 43072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1854: /* interval_time_stamp: DAY_SYM */
-#line 11928 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1873: /* interval_time_stamp: DAY_SYM */
+#line 12123 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_DAY; }
-#line 43078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43271 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1855: /* interval_time_stamp: WEEK_SYM */
-#line 11929 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1874: /* interval_time_stamp: WEEK_SYM */
+#line 12124 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_WEEK; }
-#line 43084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43277 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1856: /* interval_time_stamp: HOUR_SYM */
-#line 11930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1875: /* interval_time_stamp: HOUR_SYM */
+#line 12125 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_HOUR; }
-#line 43090 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43283 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1857: /* interval_time_stamp: MINUTE_SYM */
-#line 11931 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1876: /* interval_time_stamp: MINUTE_SYM */
+#line 12126 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_MINUTE; }
-#line 43096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1858: /* interval_time_stamp: MONTH_SYM */
-#line 11932 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1877: /* interval_time_stamp: MONTH_SYM */
+#line 12127 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_MONTH; }
-#line 43102 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43295 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1859: /* interval_time_stamp: QUARTER_SYM */
-#line 11933 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1878: /* interval_time_stamp: QUARTER_SYM */
+#line 12128 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_QUARTER; }
-#line 43108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43301 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1860: /* interval_time_stamp: SECOND_SYM */
-#line 11934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1879: /* interval_time_stamp: SECOND_SYM */
+#line 12129 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_SECOND; }
-#line 43114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1861: /* interval_time_stamp: MICROSECOND_SYM */
-#line 11935 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1880: /* interval_time_stamp: MICROSECOND_SYM */
+#line 12130 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_MICROSECOND; }
-#line 43120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43313 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1862: /* interval_time_stamp: YEAR_SYM */
-#line 11936 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1881: /* interval_time_stamp: YEAR_SYM */
+#line 12131 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.interval_time_st)=INTERVAL_YEAR; }
-#line 43126 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43319 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1863: /* date_time_type: DATE_SYM */
-#line 11940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1882: /* date_time_type: DATE_SYM */
+#line 12135 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_DATE;}
-#line 43132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1864: /* date_time_type: TIME_SYM */
-#line 11941 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1883: /* date_time_type: TIME_SYM */
+#line 12136 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_TIME;}
-#line 43138 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1865: /* date_time_type: DATETIME */
-#line 11942 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1884: /* date_time_type: DATETIME */
+#line 12137 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_DATETIME;}
-#line 43144 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1866: /* date_time_type: TIMESTAMP */
-#line 11943 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1885: /* date_time_type: TIMESTAMP */
+#line 12138 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.date_time_type)=MYSQL_TIMESTAMP_DATETIME;}
-#line 43150 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1870: /* opt_table_alias_clause: %empty */
-#line 11953 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1889: /* opt_table_alias_clause: %empty */
+#line 12148 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str_ptr)=0; }
-#line 43156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1871: /* opt_table_alias_clause: table_alias_clause */
-#line 11954 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1890: /* opt_table_alias_clause: table_alias_clause */
+#line 12149 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str_ptr)= (yyvsp[0].lex_str_ptr); }
-#line 43162 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1872: /* table_alias_clause: table_alias ident_table_alias */
-#line 11959 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1891: /* table_alias_clause: table_alias ident_table_alias */
+#line 12154 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_str_ptr)= (LEX_CSTRING*) thd->memdup(&(yyvsp[0].ident_sys),sizeof(LEX_STRING));
if (unlikely((yyval.lex_str_ptr) == NULL))
MYSQL_YYABORT;
}
-#line 43172 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1875: /* opt_where_clause: %empty */
-#line 11972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1894: /* opt_where_clause: %empty */
+#line 12167 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->where= 0; }
-#line 43178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1876: /* $@165: %empty */
-#line 11974 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1895: /* $@165: %empty */
+#line 12169 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_WHERE;
}
-#line 43186 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43379 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1877: /* opt_where_clause: WHERE $@165 expr */
-#line 11978 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1896: /* opt_where_clause: WHERE $@165 expr */
+#line 12173 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *select= Select;
select->where= normalize_cond(thd, (yyvsp[0].item));
@@ -43194,19 +43387,19 @@ yyreduce:
if ((yyvsp[0].item))
(yyvsp[0].item)->top_level_item();
}
-#line 43198 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43391 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1879: /* $@166: %empty */
-#line 11990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1898: /* $@166: %empty */
+#line 12185 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_HAVING;
}
-#line 43206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43399 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1880: /* opt_having_clause: HAVING $@166 expr */
-#line 11994 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1899: /* opt_having_clause: HAVING $@166 expr */
+#line 12189 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->having= normalize_cond(thd, (yyvsp[0].item));
@@ -43214,35 +43407,35 @@ yyreduce:
if ((yyvsp[0].item))
(yyvsp[0].item)->top_level_item();
}
-#line 43218 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1883: /* group_list: group_list ',' order_ident order_dir */
-#line 12014 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1902: /* group_list: group_list ',' order_ident order_dir */
+#line 12209 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_group_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 43227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1884: /* group_list: order_ident order_dir */
-#line 12019 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1903: /* group_list: order_ident order_dir */
+#line 12214 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_group_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))))
MYSQL_YYABORT;
}
-#line 43236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43429 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1885: /* olap_opt: %empty */
-#line 12026 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1904: /* olap_opt: %empty */
+#line 12221 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43435 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1886: /* olap_opt: WITH_CUBE_SYM */
-#line 12028 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1905: /* olap_opt: WITH_CUBE_SYM */
+#line 12223 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
'WITH CUBE' is reserved in the MySQL syntax, but not implemented,
@@ -43259,11 +43452,11 @@ yyreduce:
my_yyabort_error((ER_NOT_SUPPORTED_YET, MYF(0), "CUBE"));
}
-#line 43263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1887: /* olap_opt: WITH_ROLLUP_SYM */
-#line 12045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1906: /* olap_opt: WITH_ROLLUP_SYM */
+#line 12240 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
'WITH ROLLUP' is needed for backward compatibility,
@@ -43278,23 +43471,23 @@ yyreduce:
"global union parameters"));
lex->current_select->olap= ROLLUP_TYPE;
}
-#line 43282 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43475 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1888: /* opt_window_clause: %empty */
-#line 12067 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1907: /* opt_window_clause: %empty */
+#line 12262 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43288 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43481 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1889: /* opt_window_clause: WINDOW_SYM window_def_list */
-#line 12070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1908: /* opt_window_clause: WINDOW_SYM window_def_list */
+#line 12265 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43294 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43487 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1892: /* window_def: window_name AS window_spec */
-#line 12080 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1911: /* window_def: window_name AS window_spec */
+#line 12275 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(Select->add_window_def(thd, (yyvsp[-2].lex_str_ptr), lex->win_ref,
@@ -43303,63 +43496,63 @@ yyreduce:
lex->win_frame)))
MYSQL_YYABORT;
}
-#line 43307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43500 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1893: /* $@167: %empty */
-#line 12092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1912: /* $@167: %empty */
+#line 12287 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->prepare_add_window_spec(thd); }
-#line 43313 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43506 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1894: /* window_spec: '(' $@167 opt_window_ref opt_window_partition_clause opt_window_order_clause opt_window_frame_clause ')' */
-#line 12096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1913: /* window_spec: '(' $@167 opt_window_ref opt_window_partition_clause opt_window_order_clause opt_window_frame_clause ')' */
+#line 12291 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 43319 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43512 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1895: /* opt_window_ref: %empty */
-#line 12100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1914: /* opt_window_ref: %empty */
+#line 12295 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1896: /* opt_window_ref: ident */
-#line 12102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1915: /* opt_window_ref: ident */
+#line 12297 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->lex->win_ref= (LEX_CSTRING *) thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING));
if (unlikely(thd->lex->win_ref == NULL))
MYSQL_YYABORT;
}
-#line 43335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43528 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1897: /* opt_window_partition_clause: %empty */
-#line 12110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1916: /* opt_window_partition_clause: %empty */
+#line 12305 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 43341 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1899: /* opt_window_order_clause: %empty */
-#line 12115 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1918: /* opt_window_order_clause: %empty */
+#line 12310 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 43347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43540 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1900: /* opt_window_order_clause: ORDER_SYM BY order_list */
-#line 12116 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1919: /* opt_window_order_clause: ORDER_SYM BY order_list */
+#line 12311 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->order_list= *((yyvsp[0].select_order)); }
-#line 43353 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43546 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1901: /* opt_window_frame_clause: %empty */
-#line 12120 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1920: /* opt_window_frame_clause: %empty */
+#line 12315 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 43359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43552 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1902: /* opt_window_frame_clause: window_frame_units window_frame_extent opt_window_frame_exclusion */
-#line 12122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1921: /* opt_window_frame_clause: window_frame_units window_frame_extent opt_window_frame_exclusion */
+#line 12317 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->win_frame=
@@ -43370,23 +43563,23 @@ yyreduce:
if (unlikely(lex->win_frame == NULL))
MYSQL_YYABORT;
}
-#line 43374 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43567 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1903: /* window_frame_units: ROWS_SYM */
-#line 12135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1922: /* window_frame_units: ROWS_SYM */
+#line 12330 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_units)= Window_frame::UNITS_ROWS; }
-#line 43380 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43573 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1904: /* window_frame_units: RANGE_SYM */
-#line 12136 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1923: /* window_frame_units: RANGE_SYM */
+#line 12331 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_units)= Window_frame::UNITS_RANGE; }
-#line 43386 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43579 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1905: /* window_frame_extent: window_frame_start */
-#line 12141 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1924: /* window_frame_extent: window_frame_start */
+#line 12336 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->frame_top_bound= (yyvsp[0].window_frame_bound);
@@ -43396,235 +43589,235 @@ yyreduce:
if (unlikely(lex->frame_bottom_bound == NULL))
MYSQL_YYABORT;
}
-#line 43400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43593 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1906: /* window_frame_extent: BETWEEN_SYM window_frame_bound AND_SYM window_frame_bound */
-#line 12151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1925: /* window_frame_extent: BETWEEN_SYM window_frame_bound AND_SYM window_frame_bound */
+#line 12346 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->frame_top_bound= (yyvsp[-2].window_frame_bound);
lex->frame_bottom_bound= (yyvsp[0].window_frame_bound);
}
-#line 43410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1907: /* window_frame_start: UNBOUNDED_SYM PRECEDING_SYM */
-#line 12160 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1926: /* window_frame_start: UNBOUNDED_SYM PRECEDING_SYM */
+#line 12355 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::PRECEDING, NULL);
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 43421 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1908: /* window_frame_start: CURRENT_SYM ROW_SYM */
-#line 12167 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1927: /* window_frame_start: CURRENT_SYM ROW_SYM */
+#line 12362 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::CURRENT, NULL);
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 43432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43625 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1909: /* window_frame_start: literal PRECEDING_SYM */
-#line 12174 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1928: /* window_frame_start: literal PRECEDING_SYM */
+#line 12369 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::PRECEDING, (yyvsp[-1].item));
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 43443 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1910: /* window_frame_bound: window_frame_start */
-#line 12183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1929: /* window_frame_bound: window_frame_start */
+#line 12378 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.window_frame_bound)= (yyvsp[0].window_frame_bound); }
-#line 43449 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1911: /* window_frame_bound: UNBOUNDED_SYM FOLLOWING_SYM */
-#line 12185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1930: /* window_frame_bound: UNBOUNDED_SYM FOLLOWING_SYM */
+#line 12380 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::FOLLOWING, NULL);
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 43460 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43653 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1912: /* window_frame_bound: literal FOLLOWING_SYM */
-#line 12192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1931: /* window_frame_bound: literal FOLLOWING_SYM */
+#line 12387 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.window_frame_bound)= new (thd->mem_root)
Window_frame_bound(Window_frame_bound::FOLLOWING, (yyvsp[-1].item));
if (unlikely((yyval.window_frame_bound) == NULL))
MYSQL_YYABORT;
}
-#line 43471 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1913: /* opt_window_frame_exclusion: %empty */
-#line 12201 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1932: /* opt_window_frame_exclusion: %empty */
+#line 12396 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_NONE; }
-#line 43477 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43670 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1914: /* opt_window_frame_exclusion: EXCLUDE_SYM CURRENT_SYM ROW_SYM */
-#line 12203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1933: /* opt_window_frame_exclusion: EXCLUDE_SYM CURRENT_SYM ROW_SYM */
+#line 12398 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_CURRENT_ROW; }
-#line 43483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43676 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1915: /* opt_window_frame_exclusion: EXCLUDE_SYM GROUP_SYM */
-#line 12205 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1934: /* opt_window_frame_exclusion: EXCLUDE_SYM GROUP_SYM */
+#line 12400 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_GROUP; }
-#line 43489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43682 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1916: /* opt_window_frame_exclusion: EXCLUDE_SYM TIES_SYM */
-#line 12207 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1935: /* opt_window_frame_exclusion: EXCLUDE_SYM TIES_SYM */
+#line 12402 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_TIES; }
-#line 43495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43688 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1917: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_MARIADB_SYM */
-#line 12209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1936: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_MARIADB_SYM */
+#line 12404 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_NONE; }
-#line 43501 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43694 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1918: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_ORACLE_SYM */
-#line 12211 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1937: /* opt_window_frame_exclusion: EXCLUDE_SYM NO_SYM OTHERS_ORACLE_SYM */
+#line 12406 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.frame_exclusion)= Window_frame::EXCL_NONE; }
-#line 43507 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43700 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1922: /* alter_order_item: simple_ident_nospvar order_dir */
-#line 12229 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1941: /* alter_order_item: simple_ident_nospvar order_dir */
+#line 12424 "/home/buildbot/git/sql/sql_yacc.yy"
{
bool ascending= ((yyvsp[0].num) == 1) ? true : false;
if (unlikely(add_order_to_list(thd, (yyvsp[-1].item), ascending)))
MYSQL_YYABORT;
}
-#line 43517 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43710 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1923: /* opt_order_clause: %empty */
-#line 12242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1942: /* opt_order_clause: %empty */
+#line 12437 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_order)= NULL; }
-#line 43523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43716 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1924: /* opt_order_clause: order_clause */
-#line 12244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1943: /* opt_order_clause: order_clause */
+#line 12439 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_order)= (yyvsp[0].select_order); }
-#line 43529 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1925: /* $@168: %empty */
-#line 12249 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1944: /* $@168: %empty */
+#line 12444 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->where= "ORDER clause";
}
-#line 43537 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43730 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1926: /* order_clause: ORDER_SYM BY $@168 order_list */
-#line 12253 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1945: /* order_clause: ORDER_SYM BY $@168 order_list */
+#line 12448 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_order)= (yyvsp[0].select_order);
}
-#line 43545 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43738 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1927: /* order_list: order_list ',' order_ident order_dir */
-#line 12260 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1946: /* order_list: order_list ',' order_ident order_dir */
+#line 12455 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_order)= (yyvsp[-3].select_order);
if (add_to_list(thd, *(yyval.select_order), (yyvsp[-1].item),(bool) (yyvsp[0].num)))
MYSQL_YYABORT;
}
-#line 43555 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1928: /* order_list: order_ident order_dir */
-#line 12266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1947: /* order_list: order_ident order_dir */
+#line 12461 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_order)= new (thd->mem_root) SQL_I_List<ORDER>();
if (add_to_list(thd, *(yyval.select_order), (yyvsp[-1].item), (bool) (yyvsp[0].num)))
MYSQL_YYABORT;
}
-#line 43565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43758 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1929: /* order_dir: %empty */
-#line 12274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1948: /* order_dir: %empty */
+#line 12469 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 43571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43764 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1930: /* order_dir: ASC */
-#line 12275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1949: /* order_dir: ASC */
+#line 12470 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 43577 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43770 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1931: /* order_dir: DESC */
-#line 12276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1950: /* order_dir: DESC */
+#line 12471 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 43583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43776 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1932: /* opt_limit_clause: %empty */
-#line 12282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1951: /* opt_limit_clause: %empty */
+#line 12477 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_limit).clear(); }
-#line 43589 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43782 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1933: /* opt_limit_clause: limit_clause */
-#line 12284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1952: /* opt_limit_clause: limit_clause */
+#line 12479 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.select_limit)= (yyvsp[0].select_limit); }
-#line 43595 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43788 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1934: /* limit_clause: LIMIT limit_options */
-#line 12289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1953: /* limit_clause: LIMIT limit_options */
+#line 12484 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit)= (yyvsp[0].select_limit);
if (!(yyval.select_limit).select_limit->basic_const_item() ||
(yyval.select_limit).select_limit->val_int() > 0)
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 43606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1935: /* limit_clause: LIMIT limit_options ROWS_SYM EXAMINED_SYM limit_rows_option */
-#line 12297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1954: /* limit_clause: LIMIT limit_options ROWS_SYM EXAMINED_SYM limit_rows_option */
+#line 12492 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit)= (yyvsp[-3].select_limit);
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 43615 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43808 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1936: /* limit_clause: LIMIT ROWS_SYM EXAMINED_SYM limit_rows_option */
-#line 12302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1955: /* limit_clause: LIMIT ROWS_SYM EXAMINED_SYM limit_rows_option */
+#line 12497 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).clear();
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 43624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43817 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1937: /* limit_clause: fetch_first_clause */
-#line 12307 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1956: /* limit_clause: fetch_first_clause */
+#line 12502 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit)= (yyvsp[0].select_limit);
if (!(yyval.select_limit).select_limit ||
@@ -43632,11 +43825,11 @@ yyreduce:
(yyval.select_limit).select_limit->val_int() > 0)
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
}
-#line 43636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1938: /* fetch_first_clause: FETCH_SYM first_or_next row_or_rows only_or_with_ties */
-#line 12318 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1957: /* fetch_first_clause: FETCH_SYM first_or_next row_or_rows only_or_with_ties */
+#line 12513 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *one= new (thd->mem_root) Item_int(thd, (int32) 1);
if (unlikely(one == NULL))
@@ -43646,11 +43839,11 @@ yyreduce:
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 43650 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43843 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1939: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next row_or_rows only_or_with_ties */
-#line 12329 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1958: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next row_or_rows only_or_with_ties */
+#line 12524 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *one= new (thd->mem_root) Item_int(thd, (int32) 1);
if (unlikely(one == NULL))
@@ -43660,211 +43853,211 @@ yyreduce:
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 43664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43857 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1940: /* fetch_first_clause: FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
-#line 12339 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1959: /* fetch_first_clause: FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
+#line 12534 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[-2].item);
(yyval.select_limit).offset_limit= 0;
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 43675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43868 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1941: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
-#line 12347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1960: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows FETCH_SYM first_or_next limit_option row_or_rows only_or_with_ties */
+#line 12542 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[-2].item);
(yyval.select_limit).offset_limit= (yyvsp[-6].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= (yyvsp[0].num);
}
-#line 43686 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43879 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1942: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows */
-#line 12354 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1961: /* fetch_first_clause: OFFSET_SYM limit_option row_or_rows */
+#line 12549 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= 0;
(yyval.select_limit).offset_limit= (yyvsp[-1].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 43697 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1947: /* only_or_with_ties: ONLY_SYM */
-#line 12373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1966: /* only_or_with_ties: ONLY_SYM */
+#line 12568 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 43703 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1948: /* only_or_with_ties: WITH TIES_SYM */
-#line 12374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1967: /* only_or_with_ties: WITH TIES_SYM */
+#line 12569 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 43709 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1949: /* opt_global_limit_clause: opt_limit_clause */
-#line 12380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1968: /* opt_global_limit_clause: opt_limit_clause */
+#line 12575 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->limit_params= (yyvsp[0].select_limit);
}
-#line 43717 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43910 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1950: /* limit_options: limit_option */
-#line 12387 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1969: /* limit_options: limit_option */
+#line 12582 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[0].item);
(yyval.select_limit).offset_limit= NULL;
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 43728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1951: /* limit_options: limit_option ',' limit_option */
-#line 12394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1970: /* limit_options: limit_option ',' limit_option */
+#line 12589 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[0].item);
(yyval.select_limit).offset_limit= (yyvsp[-2].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 43739 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1952: /* limit_options: limit_option OFFSET_SYM limit_option */
-#line 12401 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1971: /* limit_options: limit_option OFFSET_SYM limit_option */
+#line 12596 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_limit).select_limit= (yyvsp[-2].item);
(yyval.select_limit).offset_limit= (yyvsp[0].item);
(yyval.select_limit).explicit_limit= true;
(yyval.select_limit).with_ties= false;
}
-#line 43750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43943 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1953: /* limit_option: ident_cli */
-#line 12411 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1972: /* limit_option: ident_cli */
+#line 12606 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_limit(thd, &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 43759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1954: /* limit_option: ident_cli '.' ident_cli */
-#line 12416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1973: /* limit_option: ident_cli '.' ident_cli */
+#line 12611 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_limit(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 43768 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43961 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1955: /* limit_option: param_marker */
-#line 12421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1974: /* limit_option: param_marker */
+#line 12616 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].item_param)->limit_clause_param= TRUE;
}
-#line 43776 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43969 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1956: /* limit_option: ULONGLONG_NUM */
-#line 12425 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1975: /* limit_option: ULONGLONG_NUM */
+#line 12620 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 43786 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43979 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1957: /* limit_option: LONG_NUM */
-#line 12431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1976: /* limit_option: LONG_NUM */
+#line 12626 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 43796 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43989 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1958: /* limit_option: NUM */
-#line 12437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1977: /* limit_option: NUM */
+#line 12632 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 43806 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 43999 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1959: /* limit_rows_option: limit_option */
-#line 12446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1978: /* limit_rows_option: limit_option */
+#line 12641 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->limit_rows_examined= (yyvsp[0].item);
}
-#line 43814 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1960: /* delete_limit_clause: %empty */
-#line 12453 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1979: /* delete_limit_clause: %empty */
+#line 12648 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->current_select->limit_params.select_limit= 0;
}
-#line 43823 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44016 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1961: /* delete_limit_clause: LIMIT limit_option */
-#line 12458 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1980: /* delete_limit_clause: LIMIT limit_option */
+#line 12653 "/home/buildbot/git/sql/sql_yacc.yy"
{
SELECT_LEX *sel= Select;
sel->limit_params.select_limit= (yyvsp[0].item);
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT);
sel->limit_params.explicit_limit= 1;
}
-#line 43834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44027 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1962: /* delete_limit_clause: LIMIT ROWS_SYM EXAMINED_SYM */
-#line 12464 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1981: /* delete_limit_clause: LIMIT ROWS_SYM EXAMINED_SYM */
+#line 12659 "/home/buildbot/git/sql/sql_yacc.yy"
{ thd->parse_error(); MYSQL_YYABORT; }
-#line 43840 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44033 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1963: /* delete_limit_clause: LIMIT limit_option ROWS_SYM EXAMINED_SYM */
-#line 12465 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1982: /* delete_limit_clause: LIMIT limit_option ROWS_SYM EXAMINED_SYM */
+#line 12660 "/home/buildbot/git/sql/sql_yacc.yy"
{ thd->parse_error(); MYSQL_YYABORT; }
-#line 43846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44039 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1964: /* order_limit_lock: order_or_limit */
-#line 12470 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1983: /* order_limit_lock: order_or_limit */
+#line 12665 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= (yyvsp[0].order_limit_lock);
(yyval.order_limit_lock)->lock.empty();
}
-#line 43855 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1965: /* order_limit_lock: order_or_limit select_lock_type */
-#line 12475 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1984: /* order_limit_lock: order_or_limit select_lock_type */
+#line 12670 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= (yyvsp[-1].order_limit_lock);
(yyval.order_limit_lock)->lock= (yyvsp[0].select_lock);
}
-#line 43864 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1966: /* order_limit_lock: select_lock_type */
-#line 12480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1985: /* order_limit_lock: select_lock_type */
+#line 12675 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= new(thd->mem_root) Lex_order_limit_lock;
if (!(yyval.order_limit_lock))
@@ -43873,56 +44066,51 @@ yyreduce:
(yyval.order_limit_lock)->limit.clear();
(yyval.order_limit_lock)->lock= (yyvsp[0].select_lock);
}
-#line 43877 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44070 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1967: /* opt_order_limit_lock: %empty */
-#line 12492 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1986: /* opt_order_limit_lock: %empty */
+#line 12687 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select();
(yyval.order_limit_lock)= NULL;
}
-#line 43886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44079 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1968: /* opt_order_limit_lock: order_limit_lock */
-#line 12496 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1987: /* opt_order_limit_lock: order_limit_lock */
+#line 12691 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.order_limit_lock)= (yyvsp[0].order_limit_lock); }
-#line 43892 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44085 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1971: /* opt_procedure_or_into: %empty */
-#line 12509 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1990: /* opt_procedure_or_into: %empty */
+#line 12704 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock).empty();
}
-#line 43900 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44093 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1972: /* opt_procedure_or_into: procedure_clause opt_select_lock_type */
-#line 12513 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1991: /* opt_procedure_or_into: procedure_clause opt_select_lock_type */
+#line 12708 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.select_lock)= (yyvsp[0].select_lock);
}
-#line 43908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1973: /* opt_procedure_or_into: into opt_select_lock_type */
-#line 12517 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1992: /* opt_procedure_or_into: into opt_select_lock_type */
+#line 12712 "/home/buildbot/git/sql/sql_yacc.yy"
{
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_WARN_DEPRECATED_SYNTAX,
- ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
- "<select expression> INTO <destination>;",
- "'SELECT <select list> INTO <destination>"
- " FROM...'");
(yyval.select_lock)= (yyvsp[0].select_lock);
+ status_var_increment(thd->status_var.feature_into_outfile);
}
-#line 43922 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1974: /* order_or_limit: order_clause opt_limit_clause */
-#line 12531 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1993: /* order_or_limit: order_clause opt_limit_clause */
+#line 12721 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= new(thd->mem_root) Lex_order_limit_lock;
if (!(yyval.order_limit_lock))
@@ -43930,11 +44118,11 @@ yyreduce:
(yyval.order_limit_lock)->order_list= (yyvsp[-1].select_order);
(yyval.order_limit_lock)->limit= (yyvsp[0].select_limit);
}
-#line 43934 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1975: /* order_or_limit: limit_clause */
-#line 12539 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1994: /* order_or_limit: limit_clause */
+#line 12729 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.order_limit_lock)= new(thd->mem_root) Lex_order_limit_lock;
if (!(yyval.order_limit_lock))
@@ -43942,209 +44130,209 @@ yyreduce:
(yyval.order_limit_lock)->order_list= NULL;
(yyval.order_limit_lock)->limit= (yyvsp[0].select_limit);
}
-#line 43946 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44134 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1978: /* int_num: opt_plus NUM */
-#line 12555 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1997: /* int_num: opt_plus NUM */
+#line 12745 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.num)= (int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44140 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1979: /* int_num: '-' NUM */
-#line 12556 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1998: /* int_num: '-' NUM */
+#line 12746 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.num)= -(int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44146 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1980: /* ulong_num: opt_plus NUM */
-#line 12560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 1999: /* ulong_num: opt_plus NUM */
+#line 12750 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44152 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1981: /* ulong_num: HEX_NUM */
-#line 12561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2000: /* ulong_num: HEX_NUM */
+#line 12751 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= strtoul((yyvsp[0].lex_str).str, (char**) 0, 16); }
-#line 43970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44158 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1982: /* ulong_num: opt_plus LONG_NUM */
-#line 12562 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2001: /* ulong_num: opt_plus LONG_NUM */
+#line 12752 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43976 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44164 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1983: /* ulong_num: opt_plus ULONGLONG_NUM */
-#line 12563 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2002: /* ulong_num: opt_plus ULONGLONG_NUM */
+#line 12753 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43982 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44170 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1984: /* ulong_num: opt_plus DECIMAL_NUM */
-#line 12564 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2003: /* ulong_num: opt_plus DECIMAL_NUM */
+#line 12754 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44176 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1985: /* ulong_num: opt_plus FLOAT_NUM */
-#line 12565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2004: /* ulong_num: opt_plus FLOAT_NUM */
+#line 12755 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 43994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44182 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1986: /* real_ulong_num: NUM */
-#line 12569 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2005: /* real_ulong_num: NUM */
+#line 12759 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44188 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1987: /* real_ulong_num: HEX_NUM */
-#line 12570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2006: /* real_ulong_num: HEX_NUM */
+#line 12760 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (ulong) strtol((yyvsp[0].lex_str).str, (char**) 0, 16); }
-#line 44006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44194 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1988: /* real_ulong_num: LONG_NUM */
-#line 12571 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2007: /* real_ulong_num: LONG_NUM */
+#line 12761 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1989: /* real_ulong_num: ULONGLONG_NUM */
-#line 12572 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2008: /* real_ulong_num: ULONGLONG_NUM */
+#line 12762 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1990: /* real_ulong_num: dec_num_error */
-#line 12573 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2009: /* real_ulong_num: dec_num_error */
+#line 12763 "/home/buildbot/git/sql/sql_yacc.yy"
{ MYSQL_YYABORT; }
-#line 44024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44212 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1991: /* longlong_num: opt_plus NUM */
-#line 12577 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2010: /* longlong_num: opt_plus NUM */
+#line 12767 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= (longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44218 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1992: /* longlong_num: LONG_NUM */
-#line 12578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2011: /* longlong_num: LONG_NUM */
+#line 12768 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= (longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44224 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1993: /* longlong_num: '-' NUM */
-#line 12579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2012: /* longlong_num: '-' NUM */
+#line 12769 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= -(longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44230 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1994: /* longlong_num: '-' LONG_NUM */
-#line 12580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2013: /* longlong_num: '-' LONG_NUM */
+#line 12770 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.longlong_number)= -(longlong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1995: /* ulonglong_num: opt_plus NUM */
-#line 12584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2014: /* ulonglong_num: opt_plus NUM */
+#line 12774 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44054 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44242 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1996: /* ulonglong_num: opt_plus ULONGLONG_NUM */
-#line 12585 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2015: /* ulonglong_num: opt_plus ULONGLONG_NUM */
+#line 12775 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44248 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1997: /* ulonglong_num: opt_plus LONG_NUM */
-#line 12586 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2016: /* ulonglong_num: opt_plus LONG_NUM */
+#line 12776 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44254 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1998: /* ulonglong_num: opt_plus DECIMAL_NUM */
-#line 12587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2017: /* ulonglong_num: opt_plus DECIMAL_NUM */
+#line 12777 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44260 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 1999: /* ulonglong_num: opt_plus FLOAT_NUM */
-#line 12588 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2018: /* ulonglong_num: opt_plus FLOAT_NUM */
+#line 12778 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44266 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2000: /* real_ulonglong_num: NUM */
-#line 12592 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2019: /* real_ulonglong_num: NUM */
+#line 12782 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44272 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2001: /* real_ulonglong_num: ULONGLONG_NUM */
-#line 12593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2020: /* real_ulonglong_num: ULONGLONG_NUM */
+#line 12783 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44090 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2002: /* real_ulonglong_num: HEX_NUM */
-#line 12594 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2021: /* real_ulonglong_num: HEX_NUM */
+#line 12784 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulonglong_number)= strtoull((yyvsp[0].lex_str).str, (char**) 0, 16); }
-#line 44096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44284 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2003: /* real_ulonglong_num: LONG_NUM */
-#line 12595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2022: /* real_ulonglong_num: LONG_NUM */
+#line 12785 "/home/buildbot/git/sql/sql_yacc.yy"
{ int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); }
-#line 44102 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44290 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2004: /* real_ulonglong_num: dec_num_error */
-#line 12596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2023: /* real_ulonglong_num: dec_num_error */
+#line 12786 "/home/buildbot/git/sql/sql_yacc.yy"
{ MYSQL_YYABORT; }
-#line 44108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44296 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2005: /* dec_num_error: dec_num */
-#line 12601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2024: /* dec_num_error: dec_num */
+#line 12791 "/home/buildbot/git/sql/sql_yacc.yy"
{ thd->parse_error(ER_ONLY_INTEGERS_ALLOWED); }
-#line 44114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2008: /* choice: ulong_num */
-#line 12610 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2027: /* choice: ulong_num */
+#line 12800 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.choice)= (yyvsp[0].ulong_num) != 0 ? HA_CHOICE_YES : HA_CHOICE_NO; }
-#line 44120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2009: /* choice: DEFAULT */
-#line 12611 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2028: /* choice: DEFAULT */
+#line 12801 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.choice)= HA_CHOICE_UNDEF; }
-#line 44126 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44314 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2010: /* bool: ulong_num */
-#line 12615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2029: /* bool: ulong_num */
+#line 12805 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= (yyvsp[0].ulong_num) != 0; }
-#line 44132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2011: /* bool: TRUE_SYM */
-#line 12616 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2030: /* bool: TRUE_SYM */
+#line 12806 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 1; }
-#line 44138 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2012: /* bool: FALSE_SYM */
-#line 12617 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2031: /* bool: FALSE_SYM */
+#line 12807 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ulong_num)= 0; }
-#line 44144 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2013: /* $@169: %empty */
-#line 12622 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2032: /* $@169: %empty */
+#line 12812 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
@@ -44168,43 +44356,43 @@ yyreduce:
Lex->clause_that_disallows_subselect= "PROCEDURE";
Select->options|= OPTION_PROCEDURE_CLAUSE;
}
-#line 44172 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44360 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2014: /* procedure_clause: PROCEDURE_SYM ident $@169 '(' procedure_list ')' */
-#line 12646 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2033: /* procedure_clause: PROCEDURE_SYM ident $@169 '(' procedure_list ')' */
+#line 12836 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* Subqueries are allowed from now.*/
Lex->clause_that_disallows_subselect= NULL;
}
-#line 44181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44369 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2015: /* procedure_list: %empty */
-#line 12653 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2034: /* procedure_list: %empty */
+#line 12843 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44187 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44375 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2016: /* procedure_list: procedure_list2 */
-#line 12654 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2035: /* procedure_list: procedure_list2 */
+#line 12844 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44381 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2019: /* procedure_item: remember_name expr remember_end */
-#line 12664 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2038: /* procedure_item: remember_name expr remember_end */
+#line 12854 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(add_proc_to_list(thd, (yyvsp[-1].item))))
MYSQL_YYABORT;
if (!(yyvsp[-1].item)->name.str || (yyvsp[-1].item)->name.str == item_empty_name)
(yyvsp[-1].item)->set_name(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 44204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44392 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2020: /* $@170: %empty */
-#line 12673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2039: /* $@170: %empty */
+#line 12863 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (!lex->describe &&
@@ -44212,23 +44400,23 @@ yyreduce:
select_dumpvar(thd)))))
MYSQL_YYABORT;
}
-#line 44216 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2021: /* select_var_list_init: $@170 select_var_list */
-#line 12681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2040: /* select_var_list_init: $@170 select_var_list */
+#line 12871 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44222 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2023: /* select_var_list: select_var_ident */
-#line 12686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2042: /* select_var_list: select_var_ident */
+#line 12876 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44228 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2024: /* select_var_ident: select_outvar */
-#line 12690 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2043: /* select_var_ident: select_outvar */
+#line 12880 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->result)
{
@@ -44245,11 +44433,11 @@ yyreduce:
DBUG_ASSERT(Lex->describe);
}
}
-#line 44249 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44437 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2025: /* select_outvar: '@' ident_or_text */
-#line 12710 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2044: /* select_outvar: '@' ident_or_text */
+#line 12900 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -44259,35 +44447,35 @@ yyreduce:
(yyval.myvar) = Lex->result ? new (thd->mem_root) my_var_user(&(yyvsp[0].lex_str)) : NULL;
}
-#line 44263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44451 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2026: /* select_outvar: ident_or_text */
-#line 12720 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2045: /* select_outvar: ident_or_text */
+#line 12910 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.myvar)= Lex->create_outvar(thd, &(yyvsp[0].lex_str))) && Lex->result))
MYSQL_YYABORT;
}
-#line 44272 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44460 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2027: /* select_outvar: ident '.' ident */
-#line 12725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2046: /* select_outvar: ident '.' ident */
+#line 12915 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.myvar)= Lex->create_outvar(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))) && Lex->result))
MYSQL_YYABORT;
}
-#line 44281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44469 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2028: /* into: INTO into_destination */
-#line 12733 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2047: /* into: INTO into_destination */
+#line 12923 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44475 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2029: /* $@171: %empty */
-#line 12738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2048: /* $@171: %empty */
+#line 12928 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
@@ -44297,18 +44485,19 @@ yyreduce:
new (thd->mem_root)
select_export(thd, lex->exchange))))
MYSQL_YYABORT;
+ status_var_increment(thd->status_var.feature_into_outfile);
}
-#line 44302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44491 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2030: /* $@172: %empty */
-#line 12749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2049: /* $@172: %empty */
+#line 12940 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->exchange->cs= (yyvsp[0].charset); }
-#line 44308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44497 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2032: /* into_destination: DUMPFILE TEXT_STRING_filesystem */
-#line 12752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2051: /* into_destination: DUMPFILE TEXT_STRING_filesystem */
+#line 12943 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (!lex->describe)
@@ -44323,19 +44512,20 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 44327 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2033: /* into_destination: select_var_list_init */
-#line 12767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2052: /* into_destination: select_var_list_init */
+#line 12958 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
+ status_var_increment(thd->status_var.feature_into_variable);
}
-#line 44335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44525 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2034: /* $@173: %empty */
-#line 12778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2053: /* $@173: %empty */
+#line 12970 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_DO;
@@ -44343,48 +44533,48 @@ yyreduce:
MYSQL_YYABORT;
lex->init_select();
}
-#line 44347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44537 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2035: /* do: DO_SYM $@173 expr_list */
-#line 12786 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2054: /* do: DO_SYM $@173 expr_list */
+#line 12978 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->insert_list= (yyvsp[0].item_list);
Lex->pop_select(); //main select
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 44358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44548 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2036: /* $@174: %empty */
-#line 12800 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2055: /* $@174: %empty */
+#line 12992 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_command(SQLCOM_DROP_TABLE, (yyvsp[-2].num), (yyvsp[0].object_ddl_options));
YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 44369 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2037: /* drop: DROP opt_temporary table_or_tables opt_if_exists $@174 table_list opt_lock_wait_timeout opt_restrict */
-#line 12807 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2056: /* drop: DROP opt_temporary table_or_tables opt_if_exists $@174 table_list opt_lock_wait_timeout opt_restrict */
+#line 12999 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44375 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2038: /* $@175: %empty */
-#line 12809 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2057: /* $@175: %empty */
+#line 13001 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 44384 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44574 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2039: /* drop: DROP INDEX_SYM $@175 opt_if_exists_table_element ident ON table_ident opt_lock_wait_timeout */
-#line 12814 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2058: /* drop: DROP INDEX_SYM $@175 opt_if_exists_table_element ident ON table_ident opt_lock_wait_timeout */
+#line 13006 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Alter_drop *ad= (new (thd->mem_root)
@@ -44402,82 +44592,82 @@ yyreduce:
MYSQL_YYABORT;
Lex->pop_select(); //main select
}
-#line 44406 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44596 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2040: /* drop: DROP DATABASE opt_if_exists ident */
-#line 12832 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2059: /* drop: DROP DATABASE opt_if_exists ident */
+#line 13024 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_command(SQLCOM_DROP_DB, (yyvsp[-1].object_ddl_options));
lex->name= (yyvsp[0].ident_sys);
}
-#line 44416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2041: /* drop: DROP USER_SYM opt_if_exists clear_privileges user_list */
-#line 12838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2060: /* drop: DROP USER_SYM opt_if_exists clear_privileges user_list */
+#line 13030 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_DROP_USER, (yyvsp[-2].object_ddl_options));
}
-#line 44424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2042: /* drop: DROP ROLE_SYM opt_if_exists clear_privileges role_list */
-#line 12842 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2061: /* drop: DROP ROLE_SYM opt_if_exists clear_privileges role_list */
+#line 13034 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_DROP_ROLE, (yyvsp[-2].object_ddl_options));
}
-#line 44432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2043: /* $@176: %empty */
-#line 12846 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2062: /* $@176: %empty */
+#line 13038 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->set_command(SQLCOM_DROP_VIEW, (yyvsp[0].object_ddl_options));
YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 44443 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2044: /* drop: DROP VIEW_SYM opt_if_exists $@176 table_list opt_restrict */
-#line 12853 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2063: /* drop: DROP VIEW_SYM opt_if_exists $@176 table_list opt_restrict */
+#line 13045 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44449 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44639 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2045: /* drop: DROP EVENT_SYM opt_if_exists sp_name */
-#line 12855 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2064: /* drop: DROP EVENT_SYM opt_if_exists sp_name */
+#line 13047 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->spname= (yyvsp[0].spname);
Lex->set_command(SQLCOM_DROP_EVENT, (yyvsp[-1].object_ddl_options));
}
-#line 44458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2046: /* drop: DROP TRIGGER_SYM opt_if_exists sp_name */
-#line 12860 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2065: /* drop: DROP TRIGGER_SYM opt_if_exists sp_name */
+#line 13052 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->set_command(SQLCOM_DROP_TRIGGER, (yyvsp[-1].object_ddl_options));
lex->spname= (yyvsp[0].spname);
}
-#line 44468 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44658 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2047: /* drop: DROP SERVER_SYM opt_if_exists ident_or_text */
-#line 12866 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2066: /* drop: DROP SERVER_SYM opt_if_exists ident_or_text */
+#line 13058 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_DROP_SERVER, (yyvsp[-1].object_ddl_options));
Lex->server_options.reset((yyvsp[0].lex_str));
}
-#line 44477 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44667 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2048: /* $@177: %empty */
-#line 12872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2067: /* $@177: %empty */
+#line 13064 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->set_command(SQLCOM_DROP_SEQUENCE, (yyvsp[-2].num), (yyvsp[0].object_ddl_options));
@@ -44485,17 +44675,17 @@ yyreduce:
YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 44489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44679 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2049: /* drop: DROP opt_temporary SEQUENCE_SYM opt_if_exists $@177 table_list */
-#line 12880 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2068: /* drop: DROP opt_temporary SEQUENCE_SYM opt_if_exists $@177 table_list */
+#line 13072 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2053: /* table_name: table_ident */
-#line 12891 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2072: /* table_name: table_ident */
+#line 13083 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!thd->lex->current_select_or_default()->
add_table_to_list(thd, (yyvsp[0].table), NULL,
@@ -44504,11 +44694,11 @@ yyreduce:
YYPS->m_mdl_type))
MYSQL_YYABORT;
}
-#line 44508 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44698 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2054: /* table_name_with_opt_use_partition: table_ident opt_use_partition */
-#line 12903 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2073: /* table_name_with_opt_use_partition: table_ident opt_use_partition */
+#line 13095 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL,
TL_OPTION_UPDATING,
@@ -44518,11 +44708,11 @@ yyreduce:
(yyvsp[0].string_list))))
MYSQL_YYABORT;
}
-#line 44522 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44712 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2057: /* table_alias_ref: table_ident_opt_wild */
-#line 12921 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2076: /* table_alias_ref: table_ident_opt_wild */
+#line 13113 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->
add_table_to_list(thd, (yyvsp[0].table), NULL,
@@ -44532,113 +44722,113 @@ yyreduce:
YYPS->m_mdl_type)))
MYSQL_YYABORT;
}
-#line 44536 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2058: /* opt_if_exists_table_element: %empty */
-#line 12934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2077: /* opt_if_exists_table_element: %empty */
+#line 13126 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= FALSE;
(yyval.num)= 0;
}
-#line 44545 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2059: /* opt_if_exists_table_element: IF_SYM EXISTS */
-#line 12939 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2078: /* opt_if_exists_table_element: IF_SYM EXISTS */
+#line 13131 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->check_exists= TRUE;
(yyval.num)= 1;
}
-#line 44554 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44744 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2060: /* opt_if_exists: %empty */
-#line 12947 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2079: /* opt_if_exists: %empty */
+#line 13139 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_NONE);
}
-#line 44562 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44752 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2061: /* opt_if_exists: IF_SYM EXISTS */
-#line 12951 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2080: /* opt_if_exists: IF_SYM EXISTS */
+#line 13143 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.object_ddl_options).set(DDL_options_st::OPT_IF_EXISTS);
}
-#line 44570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2062: /* opt_temporary: %empty */
-#line 12957 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2081: /* opt_temporary: %empty */
+#line 13149 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 44576 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2063: /* opt_temporary: TEMPORARY */
-#line 12958 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2082: /* opt_temporary: TEMPORARY */
+#line 13150 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= HA_LEX_CREATE_TMP_TABLE; }
-#line 44582 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44772 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2064: /* $@178: %empty */
-#line 12966 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2083: /* $@178: %empty */
+#line 13158 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_INSERT;
Lex->duplicates= DUP_ERROR;
thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
thd->get_stmt_da()->reset_current_row_for_warning(1);
}
-#line 44593 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44783 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2065: /* $@179: %empty */
-#line 12973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2084: /* $@179: %empty */
+#line 13165 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_lock_for_tables((yyvsp[-3].lock_type), true, false);
}
-#line 44601 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44791 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2066: /* insert: INSERT $@178 insert_start insert_lock_option opt_ignore opt_into insert_table $@179 insert_field_spec opt_insert_update opt_returning stmt_end */
-#line 12978 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2085: /* insert: INSERT $@178 insert_start insert_lock_option opt_ignore opt_into insert_table $@179 insert_field_spec opt_insert_update opt_returning stmt_end */
+#line 13170 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mark_first_table_as_inserting();
thd->get_stmt_da()->reset_current_row_for_warning(0);
}
-#line 44610 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44800 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2067: /* $@180: %empty */
-#line 12986 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2086: /* $@180: %empty */
+#line 13178 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_REPLACE;
Lex->duplicates= DUP_REPLACE;
thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
thd->get_stmt_da()->reset_current_row_for_warning(1);
}
-#line 44621 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2068: /* $@181: %empty */
-#line 12993 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2087: /* $@181: %empty */
+#line 13185 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->set_lock_for_tables((yyvsp[-2].lock_type), true, false);
}
-#line 44629 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2069: /* replace: REPLACE $@180 insert_start replace_lock_option opt_into insert_table $@181 insert_field_spec opt_returning stmt_end */
-#line 12998 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2088: /* replace: REPLACE $@180 insert_start replace_lock_option opt_into insert_table $@181 insert_field_spec opt_returning stmt_end */
+#line 13190 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mark_first_table_as_inserting();
thd->get_stmt_da()->reset_current_row_for_warning(0);
}
-#line 44638 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2070: /* insert_start: %empty */
-#line 13004 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2089: /* insert_start: %empty */
+#line 13196 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -44646,21 +44836,21 @@ yyreduce:
Lex->inc_select_stack_outer_barrier();
Lex->current_select->parsing_place= BEFORE_OPT_LIST;
}
-#line 44650 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44840 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2071: /* stmt_end: %empty */
-#line 13013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2090: /* stmt_end: %empty */
+#line 13205 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 44660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44850 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2072: /* insert_lock_option: %empty */
-#line 13022 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2091: /* insert_lock_option: %empty */
+#line 13214 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
If it is SP we do not allow insert optimisation when result of
@@ -44669,70 +44859,70 @@ yyreduce:
*/
(yyval.lock_type)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT);
}
-#line 44673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44863 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2074: /* insert_lock_option: HIGH_PRIORITY */
-#line 13031 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2093: /* insert_lock_option: HIGH_PRIORITY */
+#line 13223 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE; }
-#line 44679 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44869 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2075: /* replace_lock_option: %empty */
-#line 13035 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2094: /* replace_lock_option: %empty */
+#line 13227 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_DEFAULT; }
-#line 44685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44875 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2077: /* insert_replace_option: LOW_PRIORITY */
-#line 13040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2096: /* insert_replace_option: LOW_PRIORITY */
+#line 13232 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; }
-#line 44691 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44881 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2078: /* insert_replace_option: DELAYED_SYM */
-#line 13042 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2097: /* insert_replace_option: DELAYED_SYM */
+#line 13234 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->keyword_delayed_begin_offset= (uint)((yyvsp[0].kwd).pos() - thd->query());
Lex->keyword_delayed_end_offset= (uint)((yyvsp[0].kwd).end() - thd->query());
(yyval.lock_type)= TL_WRITE_DELAYED;
}
-#line 44701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44891 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2081: /* $@182: %empty */
-#line 13052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2100: /* $@182: %empty */
+#line 13244 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->save_parsing_place= Select->parsing_place;
}
-#line 44709 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44899 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2082: /* insert_table: $@182 table_name_with_opt_use_partition */
-#line 13056 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2101: /* insert_table: $@182 table_name_with_opt_use_partition */
+#line 13248 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
//lex->field_list.empty();
lex->many_values.empty();
lex->insert_list=0;
}
-#line 44720 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44910 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2083: /* insert_field_spec: insert_values */
-#line 13065 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2102: /* insert_field_spec: insert_values */
+#line 13257 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44916 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2084: /* insert_field_spec: insert_field_list insert_values */
-#line 13066 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2103: /* insert_field_spec: insert_field_list insert_values */
+#line 13258 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44732 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44922 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2085: /* $@183: %empty */
-#line 13068 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2104: /* $@183: %empty */
+#line 13260 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(!(lex->insert_list= new (thd->mem_root) List_item)) ||
@@ -44741,105 +44931,105 @@ yyreduce:
MYSQL_YYABORT;
lex->current_select->parsing_place= NO_MATTER;
}
-#line 44745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2087: /* insert_field_list: LEFT_PAREN_ALT opt_fields ')' */
-#line 13081 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2106: /* insert_field_list: LEFT_PAREN_ALT opt_fields ')' */
+#line 13273 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->current_select->parsing_place= AFTER_LIST;
}
-#line 44753 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44943 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2090: /* fields: fields ',' insert_ident */
-#line 13093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2109: /* fields: fields ',' insert_ident */
+#line 13285 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 44759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44949 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2091: /* fields: insert_ident */
-#line 13094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2110: /* fields: insert_ident */
+#line 13286 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 44765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44955 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2092: /* insert_values: create_select_query_expression */
-#line 13100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2111: /* insert_values: create_select_query_expression */
+#line 13292 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44771 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44961 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2097: /* ident_eq_value: simple_ident_nospvar equal expr_or_ignore_or_default */
-#line 13115 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2116: /* ident_eq_value: simple_ident_nospvar equal expr_or_ignore_or_default */
+#line 13307 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(lex->field_list.push_back((yyvsp[-2].item), thd->mem_root)) ||
unlikely(lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 44782 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2098: /* equal: '=' */
-#line 13124 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2117: /* equal: '=' */
+#line 13316 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44788 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44978 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2099: /* equal: SET_VAR */
-#line 13125 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2118: /* equal: SET_VAR */
+#line 13317 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44794 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44984 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2100: /* opt_equal: %empty */
-#line 13129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2119: /* opt_equal: %empty */
+#line 13321 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44800 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44990 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2101: /* opt_equal: equal */
-#line 13130 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2120: /* opt_equal: equal */
+#line 13322 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44806 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 44996 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2102: /* opt_with: opt_equal */
-#line 13134 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2121: /* opt_with: opt_equal */
+#line 13326 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44812 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45002 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2103: /* opt_with: WITH */
-#line 13135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2122: /* opt_with: WITH */
+#line 13327 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44818 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45008 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2104: /* opt_by: opt_equal */
-#line 13139 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2123: /* opt_by: opt_equal */
+#line 13331 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44824 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45014 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2105: /* opt_by: BY */
-#line 13140 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2124: /* opt_by: BY */
+#line 13332 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44830 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45020 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2106: /* $@184: %empty */
-#line 13145 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2125: /* $@184: %empty */
+#line 13337 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!(Lex->insert_list= new (thd->mem_root) List_item)))
MYSQL_YYABORT;
}
-#line 44839 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45029 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2107: /* no_braces: '(' $@184 opt_values ')' */
-#line 13150 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2126: /* no_braces: '(' $@184 opt_values ')' */
+#line 13342 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
thd->get_stmt_da()->inc_current_row_for_warning();
@@ -44847,20 +45037,20 @@ yyreduce:
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 44851 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45041 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2108: /* $@185: %empty */
-#line 13161 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2127: /* $@185: %empty */
+#line 13353 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!(Lex->insert_list= new (thd->mem_root) List_item)))
MYSQL_YYABORT;
}
-#line 44860 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2109: /* no_braces_with_names: '(' $@185 opt_values_with_names ')' */
-#line 13166 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2128: /* no_braces_with_names: '(' $@185 opt_values_with_names ')' */
+#line 13358 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
thd->get_stmt_da()->inc_current_row_for_warning();
@@ -44868,41 +45058,41 @@ yyreduce:
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 44872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45062 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2110: /* opt_values: %empty */
-#line 13176 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2129: /* opt_values: %empty */
+#line 13368 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2112: /* opt_values_with_names: %empty */
-#line 13181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2131: /* opt_values_with_names: %empty */
+#line 13373 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 44884 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45074 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2114: /* values: values ',' expr_or_ignore_or_default */
-#line 13187 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2133: /* values: values ',' expr_or_ignore_or_default */
+#line 13379 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 44893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2115: /* values: expr_or_ignore_or_default */
-#line 13192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2134: /* values: expr_or_ignore_or_default */
+#line 13384 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 44902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45092 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2116: /* values_with_names: values_with_names ',' remember_name expr_or_ignore_or_default remember_end */
-#line 13200 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2135: /* values_with_names: values_with_names ',' remember_name expr_or_ignore_or_default remember_end */
+#line 13392 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[-1].item), thd->mem_root)))
MYSQL_YYABORT;
@@ -44910,11 +45100,11 @@ yyreduce:
if (!(yyvsp[-1].item)->name.str || (yyvsp[-1].item)->name.str == item_empty_name)
(yyvsp[-1].item)->set_name(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 44914 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2117: /* values_with_names: remember_name expr_or_ignore_or_default remember_end */
-#line 13208 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2136: /* values_with_names: remember_name expr_or_ignore_or_default remember_end */
+#line 13400 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->insert_list->push_back((yyvsp[-1].item), thd->mem_root)))
MYSQL_YYABORT;
@@ -44922,65 +45112,65 @@ yyreduce:
if (!(yyvsp[-1].item)->name.str || (yyvsp[-1].item)->name.str == item_empty_name)
(yyvsp[-1].item)->set_name(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 44926 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2118: /* expr_or_ignore: expr */
-#line 13218 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2137: /* expr_or_ignore: expr */
+#line 13410 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item);}
-#line 44932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2119: /* expr_or_ignore: IGNORE_SYM */
-#line 13220 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2138: /* expr_or_ignore: IGNORE_SYM */
+#line 13412 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_ignore_specification(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 44942 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2120: /* expr_or_ignore_or_default: expr_or_ignore */
-#line 13228 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2139: /* expr_or_ignore_or_default: expr_or_ignore */
+#line 13420 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item);}
-#line 44948 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45138 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2121: /* expr_or_ignore_or_default: DEFAULT */
-#line 13230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2140: /* expr_or_ignore_or_default: DEFAULT */
+#line 13422 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_default_specification(thd);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 44958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45148 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2123: /* $@186: %empty */
-#line 13239 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2142: /* $@186: %empty */
+#line 13431 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->duplicates= DUP_UPDATE; }
-#line 44964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45154 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2124: /* $@187: %empty */
-#line 13241 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2143: /* $@187: %empty */
+#line 13433 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= IN_UPDATE_ON_DUP_KEY;
}
-#line 44972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45162 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2125: /* opt_insert_update: ON DUPLICATE_SYM $@186 KEY_SYM UPDATE_SYM $@187 insert_update_list */
-#line 13245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2144: /* opt_insert_update: ON DUPLICATE_SYM $@186 KEY_SYM UPDATE_SYM $@187 insert_update_list */
+#line 13437 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
}
-#line 44980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45170 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2126: /* update_table_list: table_ident opt_use_partition for_portion_of_time_clause opt_table_alias_clause opt_key_definition */
-#line 13253 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2145: /* update_table_list: table_ident opt_use_partition for_portion_of_time_clause opt_table_alias_clause opt_key_definition */
+#line 13445 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.table_list)= Select->add_table_to_list(thd, (yyvsp[-4].table), (yyvsp[-1].lex_str_ptr),
0,
@@ -44991,17 +45181,17 @@ yyreduce:
MYSQL_YYABORT;
(yyval.table_list)->period_conditions= Lex->period_conditions;
}
-#line 44995 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2127: /* update_table_list: join_table_list */
-#line 13263 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2146: /* update_table_list: join_table_list */
+#line 13455 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.table_list)= (yyvsp[0].table_list); }
-#line 45001 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2128: /* $@188: %empty */
-#line 13270 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2147: /* $@188: %empty */
+#line 13462 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (Lex->main_select_push())
@@ -45010,15 +45200,20 @@ yyreduce:
lex->sql_command= SQLCOM_UPDATE;
lex->duplicates= DUP_ERROR;
}
-#line 45014 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2129: /* $@189: %empty */
-#line 13280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2148: /* $@189: %empty */
+#line 13472 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ bool is_multiupdate= false;
+ LEX *lex= Lex;
SELECT_LEX *slex= Lex->first_select_lex();
if (slex->table_list.elements > 1)
+ {
Lex->sql_command= SQLCOM_UPDATE_MULTI;
+ is_multiupdate= true;
+ }
else if (slex->get_table_list()->derived)
{
/* it is single table update and it is update of derived table */
@@ -45026,229 +45221,276 @@ yyreduce:
slex->get_table_list()->alias.str, "UPDATE");
MYSQL_YYABORT;
}
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_update(is_multiupdate)))
+ MYSQL_YYABORT;
/*
In case of multi-update setting write lock for all tables may
- be too pessimistic. We will decrease lock level if possible in
- mysql_multi_update().
+ be too pessimistic. We will decrease lock level if possible
+ later while processing the statement.
*/
slex->set_lock_for_tables((yyvsp[-4].lock_type), slex->table_list.elements == 1, false);
}
-#line 45037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2130: /* $@190: %empty */
-#line 13299 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2149: /* $@190: %empty */
+#line 13499 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[-1].select_order))
Select->order_list= *((yyvsp[-1].select_order));
}
-#line 45046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45244 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2131: /* update: UPDATE_SYM $@188 opt_low_priority opt_ignore update_table_list SET update_list $@189 opt_where_clause opt_order_clause delete_limit_clause $@190 stmt_end */
-#line 13302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2150: /* update: UPDATE_SYM $@188 opt_low_priority opt_ignore update_table_list SET update_list $@189 opt_where_clause opt_order_clause delete_limit_clause $@190 stmt_end */
+#line 13502 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45052 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45250 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2134: /* update_elem: simple_ident_nospvar equal DEFAULT */
-#line 13312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2153: /* update_elem: simple_ident_nospvar equal DEFAULT */
+#line 13512 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *def= new (thd->mem_root) Item_default_value(thd,
Lex->current_context(), (yyvsp[-2].item), 1);
if (!def || add_item_to_list(thd, (yyvsp[-2].item)) || add_value_to_list(thd, def))
MYSQL_YYABORT;
}
-#line 45063 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45261 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2135: /* update_elem: simple_ident_nospvar equal expr_or_ignore */
-#line 13319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2154: /* update_elem: simple_ident_nospvar equal expr_or_ignore */
+#line 13519 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (add_item_to_list(thd, (yyvsp[-2].item)) || add_value_to_list(thd, (yyvsp[0].item)))
MYSQL_YYABORT;
}
-#line 45072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45270 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2138: /* insert_update_elem: simple_ident_nospvar equal expr_or_ignore_or_default */
-#line 13332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2157: /* insert_update_elem: simple_ident_nospvar equal expr_or_ignore_or_default */
+#line 13532 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->update_list.push_back((yyvsp[-2].item), thd->mem_root)) ||
unlikely(lex->value_list.push_back((yyvsp[0].item), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 45083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2139: /* opt_low_priority: %empty */
-#line 13341 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2158: /* opt_low_priority: %empty */
+#line 13541 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_DEFAULT; }
-#line 45089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2140: /* opt_low_priority: LOW_PRIORITY */
-#line 13342 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2159: /* opt_low_priority: LOW_PRIORITY */
+#line 13542 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; }
-#line 45095 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45293 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2141: /* $@191: %empty */
-#line 13349 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2160: /* $@191: %empty */
+#line 13549 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
- lex->sql_command= SQLCOM_DELETE;
YYPS->m_lock_type= TL_WRITE_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_WRITE;
if (Lex->main_select_push())
MYSQL_YYABORT;
- lex->init_select();
+ mysql_init_delete(lex);
lex->ignore= 0;
lex->first_select_lex()->order_list.empty();
}
-#line 45111 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2142: /* delete: DELETE_SYM $@191 delete_part2 */
-#line 13361 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2161: /* delete: DELETE_SYM $@191 delete_part2 */
+#line 13560 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 45120 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45317 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2143: /* opt_delete_system_time: %empty */
-#line 13369 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2162: /* opt_delete_system_time: %empty */
+#line 13568 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_HISTORY);
}
-#line 45128 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2144: /* opt_delete_system_time: BEFORE_SYM SYSTEM_TIME_SYM history_point */
-#line 13373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2163: /* opt_delete_system_time: BEFORE_SYM SYSTEM_TIME_SYM history_point */
+#line 13572 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->vers_conditions.init(SYSTEM_TIME_BEFORE, (yyvsp[0].vers_history_point));
}
-#line 45136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45333 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2145: /* delete_part2: opt_delete_options single_multi */
-#line 13379 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2164: /* delete_part2: opt_delete_options single_multi */
+#line 13578 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45142 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45339 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2146: /* delete_part2: HISTORY_SYM delete_single_table opt_delete_system_time */
-#line 13381 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2165: /* $@192: %empty */
+#line 13580 "/home/buildbot/git/sql/sql_yacc.yy"
{
- Lex->last_table()->vers_conditions= Lex->vers_conditions;
- Lex->pop_select(); //main select
- if (Lex->check_main_unit_semantics())
+ LEX *lex= Lex;
+ lex->last_table()->vers_conditions= lex->vers_conditions;
+ lex->sql_command= SQLCOM_DELETE;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(false)))
+ MYSQL_YYABORT;
+ if (lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 45153 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 2166: /* delete_part2: HISTORY_SYM delete_single_table opt_delete_system_time $@192 stmt_end */
+#line 13591 "/home/buildbot/git/sql/sql_yacc.yy"
+ {}
+#line 45360 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2147: /* delete_single_table: FROM table_ident opt_use_partition */
-#line 13391 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2167: /* delete_single_table: FROM table_ident opt_use_partition */
+#line 13596 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->
add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING,
YYPS->m_lock_type,
YYPS->m_mdl_type,
NULL,
+ 0)))
+ MYSQL_YYABORT;
+ Select->table_list.save_and_clear(&Lex->auxiliary_table_list);
+ /* Save the number of auxiliary tables */
+ Lex->table_count_update= 1;
+
+ Lex->query_tables= 0;
+ Lex->query_tables_last= &Lex->query_tables;
+ if (unlikely(!Select->
+ add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING,
+ YYPS->m_lock_type,
+ YYPS->m_mdl_type,
+ NULL,
(yyvsp[0].string_list))))
MYSQL_YYABORT;
+ Lex->auxiliary_table_list.first->correspondent_table=
+ Lex->query_tables;
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
-#line 45169 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45391 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2148: /* delete_single_table_for_period: delete_single_table opt_for_portion_of_time_clause */
-#line 13406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2168: /* delete_single_table_for_period: delete_single_table opt_for_portion_of_time_clause */
+#line 13626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].num))
Lex->last_table()->period_conditions= Lex->period_conditions;
}
-#line 45178 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2149: /* single_multi: delete_single_table_for_period opt_where_clause opt_order_clause delete_limit_clause opt_returning */
-#line 13418 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2169: /* $@193: %empty */
+#line 13638 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ LEX *lex= Lex;
if ((yyvsp[-2].select_order))
Select->order_list= *((yyvsp[-2].select_order));
- Lex->pop_select(); //main select
+ lex->sql_command= SQLCOM_DELETE;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(false)))
+ MYSQL_YYABORT;
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 45190 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 2170: /* single_multi: delete_single_table_for_period opt_where_clause opt_order_clause delete_limit_clause opt_returning $@193 stmt_end */
+#line 13649 "/home/buildbot/git/sql/sql_yacc.yy"
+ {}
+#line 45422 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2150: /* $@192: %empty */
-#line 13426 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2171: /* $@194: %empty */
+#line 13651 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE_MULTI;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(true)))
+ MYSQL_YYABORT;
mysql_init_multi_delete(Lex);
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
-#line 45200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45437 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2151: /* $@193: %empty */
-#line 13432 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2172: /* $@195: %empty */
+#line 13662 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(multi_delete_set_locks_and_link_aux_tables(Lex)))
MYSQL_YYABORT;
}
-#line 45209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2152: /* single_multi: table_wild_list $@192 FROM join_table_list opt_where_clause $@193 stmt_end */
-#line 13435 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2173: /* single_multi: table_alias_ref_list $@194 FROM join_table_list opt_where_clause $@195 stmt_end */
+#line 13665 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2153: /* $@194: %empty */
-#line 13437 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2174: /* $@196: %empty */
+#line 13667 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE_MULTI;
+ if (!(lex->m_sql_cmd=
+ new (thd->mem_root) Sql_cmd_delete(true)))
+ MYSQL_YYABORT;
mysql_init_multi_delete(Lex);
YYPS->m_lock_type= TL_READ_DEFAULT;
YYPS->m_mdl_type= MDL_SHARED_READ;
}
-#line 45225 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45467 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2154: /* $@195: %empty */
-#line 13443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2175: /* $@197: %empty */
+#line 13678 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(multi_delete_set_locks_and_link_aux_tables(Lex)))
MYSQL_YYABORT;
}
-#line 45234 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45476 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2155: /* single_multi: FROM table_alias_ref_list $@194 USING join_table_list opt_where_clause $@195 stmt_end */
-#line 13446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2176: /* single_multi: FROM table_alias_ref_list $@196 USING join_table_list opt_where_clause $@197 stmt_end */
+#line 13681 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45240 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45482 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2156: /* opt_returning: %empty */
-#line 13451 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2177: /* opt_returning: %empty */
+#line 13686 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(!Lex->has_returning());
}
-#line 45248 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45490 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2157: /* $@196: %empty */
-#line 13455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2178: /* $@198: %empty */
+#line 13690 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(!Lex->has_returning());
/*
@@ -45274,100 +45516,62 @@ yyreduce:
thd->lex->current_select->parsing_place= IN_RETURNING;
thd->lex->push_context(&thd->lex->returning()->context);
}
-#line 45278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45520 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2158: /* opt_returning: RETURNING_SYM $@196 select_item_list */
-#line 13481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2179: /* opt_returning: RETURNING_SYM $@198 select_item_list */
+#line 13716 "/home/buildbot/git/sql/sql_yacc.yy"
{
thd->lex->pop_context();
thd->lex->current_select->parsing_place= NO_MATTER;
}
-#line 45287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 2161: /* table_wild_one: ident opt_wild */
-#line 13494 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- Table_ident *ti= new (thd->mem_root) Table_ident(&(yyvsp[-1].ident_sys));
- if (unlikely(ti == NULL))
- MYSQL_YYABORT;
- if (unlikely(!Select->
- add_table_to_list(thd,
- ti,
- NULL,
- (TL_OPTION_UPDATING |
- TL_OPTION_ALIAS),
- YYPS->m_lock_type,
- YYPS->m_mdl_type)))
- MYSQL_YYABORT;
- }
-#line 45306 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 2162: /* table_wild_one: ident '.' ident opt_wild */
-#line 13509 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- Table_ident *ti= new (thd->mem_root) Table_ident(thd, &(yyvsp[-3].ident_sys), &(yyvsp[-1].ident_sys), 0);
- if (unlikely(ti == NULL))
- MYSQL_YYABORT;
- if (unlikely(!Select->
- add_table_to_list(thd,
- ti,
- NULL,
- (TL_OPTION_UPDATING |
- TL_OPTION_ALIAS),
- YYPS->m_lock_type,
- YYPS->m_mdl_type)))
- MYSQL_YYABORT;
- }
-#line 45325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45529 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2163: /* opt_wild: %empty */
-#line 13526 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2180: /* opt_wild: %empty */
+#line 13723 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2164: /* opt_wild: '.' '*' */
-#line 13527 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2181: /* opt_wild: '.' '*' */
+#line 13724 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45541 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2165: /* opt_delete_options: %empty */
-#line 13531 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2182: /* opt_delete_options: %empty */
+#line 13728 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2166: /* opt_delete_options: opt_delete_option opt_delete_options */
-#line 13532 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2183: /* opt_delete_options: opt_delete_option opt_delete_options */
+#line 13729 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 45349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45553 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2167: /* opt_delete_option: QUICK */
-#line 13536 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2184: /* opt_delete_option: QUICK */
+#line 13733 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= OPTION_QUICK; }
-#line 45355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2168: /* opt_delete_option: LOW_PRIORITY */
-#line 13537 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2185: /* opt_delete_option: LOW_PRIORITY */
+#line 13734 "/home/buildbot/git/sql/sql_yacc.yy"
{ YYPS->m_lock_type= TL_WRITE_LOW_PRIORITY; }
-#line 45361 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2169: /* opt_delete_option: IGNORE_SYM */
-#line 13538 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2186: /* opt_delete_option: IGNORE_SYM */
+#line 13735 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1; }
-#line 45367 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2170: /* $@197: %empty */
-#line 13543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2187: /* $@199: %empty */
+#line 13740 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= Lex;
lex->sql_command= SQLCOM_TRUNCATE;
@@ -45378,11 +45582,11 @@ yyreduce:
YYPS->m_lock_type= TL_WRITE;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
-#line 45382 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45586 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2171: /* $@198: %empty */
-#line 13554 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2188: /* $@200: %empty */
+#line 13751 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX* lex= thd->lex;
DBUG_ASSERT(!lex->m_sql_cmd);
@@ -45390,105 +45594,105 @@ yyreduce:
if (unlikely(lex->m_sql_cmd == NULL))
MYSQL_YYABORT;
}
-#line 45394 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45598 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2172: /* truncate: TRUNCATE_SYM $@197 opt_table_sym table_name opt_lock_wait_timeout $@198 opt_truncate_table_storage_clause */
-#line 13561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2189: /* truncate: TRUNCATE_SYM $@199 opt_table_sym table_name opt_lock_wait_timeout $@200 opt_truncate_table_storage_clause */
+#line 13758 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 45400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45604 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2179: /* profile_def: CPU_SYM */
-#line 13579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2196: /* profile_def: CPU_SYM */
+#line 13776 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_CPU;
}
-#line 45408 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45612 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2180: /* profile_def: MEMORY_SYM */
-#line 13583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2197: /* profile_def: MEMORY_SYM */
+#line 13780 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_MEMORY;
}
-#line 45416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45620 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2181: /* profile_def: BLOCK_SYM IO_SYM */
-#line 13587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2198: /* profile_def: BLOCK_SYM IO_SYM */
+#line 13784 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_BLOCK_IO;
}
-#line 45424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45628 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2182: /* profile_def: CONTEXT_SYM SWITCHES_SYM */
-#line 13591 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2199: /* profile_def: CONTEXT_SYM SWITCHES_SYM */
+#line 13788 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_CONTEXT;
}
-#line 45432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2183: /* profile_def: PAGE_SYM FAULTS_SYM */
-#line 13595 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2200: /* profile_def: PAGE_SYM FAULTS_SYM */
+#line 13792 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_PAGE_FAULTS;
}
-#line 45440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45644 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2184: /* profile_def: IPC_SYM */
-#line 13599 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2201: /* profile_def: IPC_SYM */
+#line 13796 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_IPC;
}
-#line 45448 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45652 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2185: /* profile_def: SWAPS_SYM */
-#line 13603 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2202: /* profile_def: SWAPS_SYM */
+#line 13800 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_SWAPS;
}
-#line 45456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2186: /* profile_def: SOURCE_SYM */
-#line 13607 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2203: /* profile_def: SOURCE_SYM */
+#line 13804 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_SOURCE;
}
-#line 45464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45668 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2187: /* profile_def: ALL */
-#line 13611 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2204: /* profile_def: ALL */
+#line 13808 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_options|= PROFILE_ALL;
}
-#line 45472 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45676 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2188: /* opt_profile_args: %empty */
-#line 13618 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2205: /* opt_profile_args: %empty */
+#line 13815 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_query_id= 0;
}
-#line 45480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2189: /* opt_profile_args: FOR_SYM QUERY_SYM NUM */
-#line 13622 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2206: /* opt_profile_args: FOR_SYM QUERY_SYM NUM */
+#line 13819 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->profile_query_id= atoi((yyvsp[0].lex_str).str);
}
-#line 45488 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45692 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2190: /* $@199: %empty */
-#line 13631 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2207: /* $@201: %empty */
+#line 13828 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->wild=0;
@@ -45499,31 +45703,31 @@ yyreduce:
lex->current_select->parsing_place= SELECT_LIST;
lex->create_info.init();
}
-#line 45503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45707 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2191: /* show: SHOW $@199 show_param */
-#line 13642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2208: /* show: SHOW $@201 show_param */
+#line 13839 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
Lex->pop_select(); //main select
}
-#line 45512 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45716 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2192: /* show_param: DATABASES wild_and_where */
-#line 13650 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2209: /* show_param: DATABASES wild_and_where */
+#line 13847 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_DATABASES;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_SCHEMATA)))
MYSQL_YYABORT;
}
-#line 45523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45727 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2193: /* show_param: opt_full TABLES opt_db wild_and_where */
-#line 13657 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2210: /* show_param: opt_full TABLES opt_db wild_and_where */
+#line 13854 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLES;
@@ -45531,11 +45735,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))
MYSQL_YYABORT;
}
-#line 45535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45739 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2194: /* show_param: opt_full TRIGGERS_SYM opt_db wild_and_where */
-#line 13665 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2211: /* show_param: opt_full TRIGGERS_SYM opt_db wild_and_where */
+#line 13862 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TRIGGERS;
@@ -45543,11 +45747,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS))
MYSQL_YYABORT;
}
-#line 45547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45751 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2195: /* show_param: EVENTS_SYM opt_db wild_and_where */
-#line 13673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2212: /* show_param: EVENTS_SYM opt_db wild_and_where */
+#line 13870 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_EVENTS;
@@ -45555,11 +45759,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_EVENTS))
MYSQL_YYABORT;
}
-#line 45559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45763 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2196: /* show_param: TABLE_SYM STATUS_SYM opt_db wild_and_where */
-#line 13681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2213: /* show_param: TABLE_SYM STATUS_SYM opt_db wild_and_where */
+#line 13878 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;
@@ -45567,11 +45771,11 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_TABLES))
MYSQL_YYABORT;
}
-#line 45571 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2197: /* show_param: OPEN_SYM TABLES opt_db wild_and_where */
-#line 13689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2214: /* show_param: OPEN_SYM TABLES opt_db wild_and_where */
+#line 13886 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
@@ -45579,55 +45783,55 @@ yyreduce:
if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES))
MYSQL_YYABORT;
}
-#line 45583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45787 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2198: /* show_param: PLUGINS_SYM */
-#line 13697 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2215: /* show_param: PLUGINS_SYM */
+#line 13894 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_PLUGINS;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PLUGINS)))
MYSQL_YYABORT;
}
-#line 45594 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45798 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2199: /* show_param: PLUGINS_SYM SONAME_SYM TEXT_STRING_sys */
-#line 13704 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2216: /* show_param: PLUGINS_SYM SONAME_SYM TEXT_STRING_sys */
+#line 13901 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->ident= (yyvsp[0].lex_str);
Lex->sql_command= SQLCOM_SHOW_PLUGINS;
if (unlikely(prepare_schema_table(thd, Lex, 0, SCH_ALL_PLUGINS)))
MYSQL_YYABORT;
}
-#line 45605 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45809 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2200: /* show_param: PLUGINS_SYM SONAME_SYM wild_and_where */
-#line 13711 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2217: /* show_param: PLUGINS_SYM SONAME_SYM wild_and_where */
+#line 13908 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PLUGINS;
if (unlikely(prepare_schema_table(thd, Lex, 0, SCH_ALL_PLUGINS)))
MYSQL_YYABORT;
}
-#line 45615 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2201: /* show_param: ENGINE_SYM known_storage_engines show_engine_param */
-#line 13717 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2218: /* show_param: ENGINE_SYM known_storage_engines show_engine_param */
+#line 13914 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->create_info.db_type= (yyvsp[-1].db_type); }
-#line 45621 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45825 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2202: /* show_param: ENGINE_SYM ALL show_engine_param */
-#line 13719 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2219: /* show_param: ENGINE_SYM ALL show_engine_param */
+#line 13916 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->create_info.db_type= NULL; }
-#line 45627 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2203: /* show_param: opt_full COLUMNS from_or_in table_ident opt_db wild_and_where */
-#line 13721 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2220: /* show_param: opt_full COLUMNS from_or_in table_ident opt_db wild_and_where */
+#line 13918 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_FIELDS;
@@ -45636,51 +45840,51 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, (yyvsp[-2].table), SCH_COLUMNS)))
MYSQL_YYABORT;
}
-#line 45640 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45844 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2204: /* show_param: master_or_binary LOGS_SYM */
-#line 13730 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2221: /* show_param: master_or_binary LOGS_SYM */
+#line 13927 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_BINLOGS;
}
-#line 45648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2205: /* show_param: SLAVE HOSTS_SYM */
-#line 13734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2222: /* show_param: SLAVE HOSTS_SYM */
+#line 13931 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_SLAVE_HOSTS;
}
-#line 45656 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45860 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2206: /* $@200: %empty */
-#line 13738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2223: /* $@202: %empty */
+#line 13935 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_BINLOG_EVENTS;
}
-#line 45665 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45869 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2208: /* $@201: %empty */
-#line 13744 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2225: /* $@203: %empty */
+#line 13941 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_RELAYLOG_EVENTS;
}
-#line 45674 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2209: /* show_param: RELAYLOG_SYM optional_connection_name EVENTS_SYM binlog_in binlog_from $@201 opt_global_limit_clause optional_for_channel */
-#line 13749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2226: /* show_param: RELAYLOG_SYM optional_connection_name EVENTS_SYM binlog_in binlog_from $@203 opt_global_limit_clause optional_for_channel */
+#line 13946 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 45680 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45884 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2210: /* show_param: keys_or_index from_or_in table_ident opt_db opt_where_clause */
-#line 13751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2227: /* show_param: keys_or_index from_or_in table_ident opt_db opt_where_clause */
+#line 13948 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_KEYS;
@@ -45689,96 +45893,96 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, (yyvsp[-2].table), SCH_STATISTICS)))
MYSQL_YYABORT;
}
-#line 45693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45897 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2211: /* show_param: opt_storage ENGINES_SYM */
-#line 13760 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2228: /* show_param: opt_storage ENGINES_SYM */
+#line 13957 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_ENGINES)))
MYSQL_YYABORT;
}
-#line 45704 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2212: /* show_param: AUTHORS_SYM */
-#line 13767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2229: /* show_param: AUTHORS_SYM */
+#line 13964 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_AUTHORS;
}
-#line 45713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45917 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2213: /* show_param: CONTRIBUTORS_SYM */
-#line 13772 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2230: /* show_param: CONTRIBUTORS_SYM */
+#line 13969 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_CONTRIBUTORS;
}
-#line 45722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45926 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2214: /* show_param: PRIVILEGES */
-#line 13777 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2231: /* show_param: PRIVILEGES */
+#line 13974 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_PRIVILEGES;
}
-#line 45731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2215: /* show_param: COUNT_SYM '(' '*' ')' WARNINGS */
-#line 13782 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2232: /* show_param: COUNT_SYM '(' '*' ')' WARNINGS */
+#line 13979 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING var= {STRING_WITH_LEN("warning_count")};
(void) create_select_for_variable(thd, &var);
}
-#line 45740 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2216: /* show_param: COUNT_SYM '(' '*' ')' ERRORS */
-#line 13787 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2233: /* show_param: COUNT_SYM '(' '*' ')' ERRORS */
+#line 13984 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING var= {STRING_WITH_LEN("error_count")};
(void) create_select_for_variable(thd, &var);
}
-#line 45749 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45953 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2217: /* show_param: WARNINGS opt_global_limit_clause */
-#line 13792 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2234: /* show_param: WARNINGS opt_global_limit_clause */
+#line 13989 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command = SQLCOM_SHOW_WARNS;}
-#line 45755 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2218: /* show_param: ERRORS opt_global_limit_clause */
-#line 13794 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2235: /* show_param: ERRORS opt_global_limit_clause */
+#line 13991 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command = SQLCOM_SHOW_ERRORS;}
-#line 45761 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45965 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2219: /* show_param: PROFILES_SYM */
-#line 13796 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2236: /* show_param: PROFILES_SYM */
+#line 13993 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command = SQLCOM_SHOW_PROFILES; }
-#line 45767 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45971 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2220: /* show_param: PROFILE_SYM opt_profile_defs opt_profile_args opt_global_limit_clause */
-#line 13798 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2237: /* show_param: PROFILE_SYM opt_profile_defs opt_profile_args opt_global_limit_clause */
+#line 13995 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_PROFILE;
if (unlikely(prepare_schema_table(thd, lex, NULL, SCH_PROFILES)))
MYSQL_YYABORT;
}
-#line 45778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45982 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2221: /* show_param: opt_var_type STATUS_SYM wild_and_where */
-#line 13805 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2238: /* show_param: opt_var_type STATUS_SYM wild_and_where */
+#line 14002 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS;
@@ -45786,17 +45990,17 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_SESSION_STATUS)))
MYSQL_YYABORT;
}
-#line 45790 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 45994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2222: /* show_param: opt_full PROCESSLIST_SYM */
-#line 13813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2239: /* show_param: opt_full PROCESSLIST_SYM */
+#line 14010 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}
-#line 45796 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2223: /* show_param: opt_var_type VARIABLES wild_and_where */
-#line 13815 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2240: /* show_param: opt_var_type VARIABLES wild_and_where */
+#line 14012 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_VARIABLES;
@@ -45804,33 +46008,33 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_SESSION_VARIABLES)))
MYSQL_YYABORT;
}
-#line 45808 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2224: /* show_param: charset wild_and_where */
-#line 13823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2241: /* show_param: charset wild_and_where */
+#line 14020 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_CHARSETS;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_CHARSETS)))
MYSQL_YYABORT;
}
-#line 45819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46023 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2225: /* show_param: COLLATION_SYM wild_and_where */
-#line 13830 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2242: /* show_param: COLLATION_SYM wild_and_where */
+#line 14027 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_COLLATIONS;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_COLLATIONS)))
MYSQL_YYABORT;
}
-#line 45830 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2226: /* show_param: GRANTS */
-#line 13837 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2243: /* show_param: GRANTS */
+#line 14034 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_GRANTS;
if (unlikely(!(Lex->grant_user=
@@ -45838,30 +46042,30 @@ yyreduce:
MYSQL_YYABORT;
Lex->grant_user->user= current_user_and_current_role;
}
-#line 45842 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2227: /* show_param: GRANTS FOR_SYM user_or_role clear_privileges */
-#line 13845 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2244: /* show_param: GRANTS FOR_SYM user_or_role clear_privileges */
+#line 14042 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SHOW_GRANTS;
lex->grant_user=(yyvsp[-1].lex_user);
}
-#line 45852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46056 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2228: /* show_param: CREATE DATABASE opt_if_not_exists ident */
-#line 13851 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2245: /* show_param: CREATE DATABASE opt_if_not_exists ident */
+#line 14048 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->set_command(SQLCOM_SHOW_CREATE_DB, (yyvsp[-1].object_ddl_options));
Lex->name= (yyvsp[0].ident_sys);
}
-#line 45861 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46065 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2229: /* show_param: CREATE TABLE_SYM table_ident */
-#line 13856 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2246: /* show_param: CREATE TABLE_SYM table_ident */
+#line 14053 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -45869,11 +46073,11 @@ yyreduce:
MYSQL_YYABORT;
lex->create_info.storage_media= HA_SM_DEFAULT;
}
-#line 45873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46077 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2230: /* show_param: CREATE VIEW_SYM table_ident */
-#line 13864 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2247: /* show_param: CREATE VIEW_SYM table_ident */
+#line 14061 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -45881,11 +46085,11 @@ yyreduce:
MYSQL_YYABORT;
lex->table_type= TABLE_TYPE_VIEW;
}
-#line 45885 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2231: /* show_param: CREATE SEQUENCE_SYM table_ident */
-#line 13872 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2248: /* show_param: CREATE SEQUENCE_SYM table_ident */
+#line 14069 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE;
@@ -45893,121 +46097,121 @@ yyreduce:
MYSQL_YYABORT;
lex->table_type= TABLE_TYPE_SEQUENCE;
}
-#line 45897 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2232: /* show_param: BINLOG_SYM STATUS_SYM */
-#line 13880 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2249: /* show_param: BINLOG_SYM STATUS_SYM */
+#line 14077 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_BINLOG_STAT;
}
-#line 45905 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46109 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2233: /* show_param: MASTER_SYM STATUS_SYM */
-#line 13884 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2250: /* show_param: MASTER_SYM STATUS_SYM */
+#line 14081 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_SHOW_BINLOG_STAT;
}
-#line 45913 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46117 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2234: /* show_param: ALL SLAVES STATUS_SYM */
-#line 13888 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2251: /* show_param: ALL SLAVES STATUS_SYM */
+#line 14085 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_show_slave_status(true)))
MYSQL_YYABORT;
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
}
-#line 45924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46128 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2235: /* show_param: SLAVE optional_connection_name STATUS_SYM optional_for_channel */
-#line 13895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2252: /* show_param: SLAVE optional_connection_name STATUS_SYM optional_for_channel */
+#line 14092 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(Lex->m_sql_cmd= new (thd->mem_root)
Sql_cmd_show_slave_status()))
MYSQL_YYABORT;
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
}
-#line 45935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46139 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2236: /* show_param: CREATE PROCEDURE_SYM sp_name */
-#line 13902 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2253: /* show_param: CREATE PROCEDURE_SYM sp_name */
+#line 14099 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PROC;
lex->spname= (yyvsp[0].spname);
}
-#line 45946 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46150 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2237: /* show_param: CREATE FUNCTION_SYM sp_name */
-#line 13909 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2254: /* show_param: CREATE FUNCTION_SYM sp_name */
+#line 14106 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_FUNC;
lex->spname= (yyvsp[0].spname);
}
-#line 45957 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2238: /* show_param: CREATE PACKAGE_MARIADB_SYM sp_name */
-#line 13916 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2255: /* show_param: CREATE PACKAGE_MARIADB_SYM sp_name */
+#line 14113 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE;
lex->spname= (yyvsp[0].spname);
}
-#line 45967 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46171 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2239: /* show_param: CREATE PACKAGE_ORACLE_SYM sp_name */
-#line 13922 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2256: /* show_param: CREATE PACKAGE_ORACLE_SYM sp_name */
+#line 14119 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE;
lex->spname= (yyvsp[0].spname);
}
-#line 45977 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2240: /* show_param: CREATE PACKAGE_MARIADB_SYM BODY_MARIADB_SYM sp_name */
-#line 13928 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2257: /* show_param: CREATE PACKAGE_MARIADB_SYM BODY_MARIADB_SYM sp_name */
+#line 14125 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE_BODY;
lex->spname= (yyvsp[0].spname);
}
-#line 45987 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2241: /* show_param: CREATE PACKAGE_ORACLE_SYM BODY_ORACLE_SYM sp_name */
-#line 13934 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2258: /* show_param: CREATE PACKAGE_ORACLE_SYM BODY_ORACLE_SYM sp_name */
+#line 14131 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command = SQLCOM_SHOW_CREATE_PACKAGE_BODY;
lex->spname= (yyvsp[0].spname);
}
-#line 45997 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46201 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2242: /* show_param: CREATE TRIGGER_SYM sp_name */
-#line 13940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2259: /* show_param: CREATE TRIGGER_SYM sp_name */
+#line 14137 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_CREATE_TRIGGER;
lex->spname= (yyvsp[0].spname);
}
-#line 46007 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46211 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2243: /* show_param: CREATE USER_SYM */
-#line 13946 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2260: /* show_param: CREATE USER_SYM */
+#line 14143 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_CREATE_USER;
if (unlikely(!(Lex->grant_user=
@@ -46015,131 +46219,131 @@ yyreduce:
MYSQL_YYABORT;
Lex->grant_user->user= current_user;
}
-#line 46019 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46223 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2244: /* show_param: CREATE USER_SYM user */
-#line 13954 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2261: /* show_param: CREATE USER_SYM user */
+#line 14151 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_CREATE_USER;
Lex->grant_user= (yyvsp[0].lex_user);
}
-#line 46028 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46232 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2245: /* show_param: PROCEDURE_SYM STATUS_SYM wild_and_where */
-#line 13959 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2262: /* show_param: PROCEDURE_SYM STATUS_SYM wild_and_where */
+#line 14156 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PROC;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46039 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46243 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2246: /* show_param: FUNCTION_SYM STATUS_SYM wild_and_where */
-#line 13966 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2263: /* show_param: FUNCTION_SYM STATUS_SYM wild_and_where */
+#line 14163 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_FUNC;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46254 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2247: /* show_param: PACKAGE_MARIADB_SYM STATUS_SYM wild_and_where */
-#line 13973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2264: /* show_param: PACKAGE_MARIADB_SYM STATUS_SYM wild_and_where */
+#line 14170 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46061 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2248: /* show_param: PACKAGE_ORACLE_SYM STATUS_SYM wild_and_where */
-#line 13980 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2265: /* show_param: PACKAGE_ORACLE_SYM STATUS_SYM wild_and_where */
+#line 14177 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46072 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46276 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2249: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM STATUS_SYM wild_and_where */
-#line 13987 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2266: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM STATUS_SYM wild_and_where */
+#line 14184 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE_BODY;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2250: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM STATUS_SYM wild_and_where */
-#line 13994 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2267: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM STATUS_SYM wild_and_where */
+#line 14191 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_STATUS_PACKAGE_BODY;
if (unlikely(prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)))
MYSQL_YYABORT;
}
-#line 46094 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46298 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2251: /* show_param: PROCEDURE_SYM CODE_SYM sp_name */
-#line 14001 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2268: /* show_param: PROCEDURE_SYM CODE_SYM sp_name */
+#line 14198 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PROC_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46103 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2252: /* show_param: FUNCTION_SYM CODE_SYM sp_name */
-#line 14006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2269: /* show_param: FUNCTION_SYM CODE_SYM sp_name */
+#line 14203 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_FUNC_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46112 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46316 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2253: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM CODE_SYM sp_name */
-#line 14011 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2270: /* show_param: PACKAGE_MARIADB_SYM BODY_MARIADB_SYM CODE_SYM sp_name */
+#line 14208 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PACKAGE_BODY_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46121 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2254: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM CODE_SYM sp_name */
-#line 14016 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2271: /* show_param: PACKAGE_ORACLE_SYM BODY_ORACLE_SYM CODE_SYM sp_name */
+#line 14213 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_PACKAGE_BODY_CODE;
Lex->spname= (yyvsp[0].spname);
}
-#line 46130 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46334 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2255: /* show_param: CREATE EVENT_SYM sp_name */
-#line 14021 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2272: /* show_param: CREATE EVENT_SYM sp_name */
+#line 14218 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->spname= (yyvsp[0].spname);
Lex->sql_command = SQLCOM_SHOW_CREATE_EVENT;
}
-#line 46139 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2256: /* show_param: describe_command opt_format_json FOR_SYM expr */
-#line 14030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2273: /* show_param: describe_command opt_format_json FOR_SYM expr */
+#line 14227 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_EXPLAIN;
if (unlikely(prepare_schema_table(thd, Lex, 0,
@@ -46147,11 +46351,11 @@ yyreduce:
MYSQL_YYABORT;
add_value_to_list(thd, (yyvsp[0].item));
}
-#line 46151 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2257: /* show_param: ANALYZE_SYM opt_format_json FOR_SYM expr */
-#line 14038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2274: /* show_param: ANALYZE_SYM opt_format_json FOR_SYM expr */
+#line 14235 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_SHOW_ANALYZE;
if (unlikely(prepare_schema_table(thd, Lex, 0,
@@ -46159,11 +46363,11 @@ yyreduce:
MYSQL_YYABORT;
add_value_to_list(thd, (yyvsp[0].item));
}
-#line 46163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46367 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2258: /* show_param: IDENT_sys remember_tok_start wild_and_where */
-#line 14046 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2275: /* show_param: IDENT_sys remember_tok_start wild_and_where */
+#line 14243 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
bool in_plugin;
@@ -46182,83 +46386,83 @@ yyreduce:
if (unlikely(make_schema_select(thd, Lex->current_select, table)))
MYSQL_YYABORT;
}
-#line 46186 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46390 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2259: /* show_engine_param: STATUS_SYM */
-#line 14068 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2276: /* show_engine_param: STATUS_SYM */
+#line 14265 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_ENGINE_STATUS; }
-#line 46192 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46396 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2260: /* show_engine_param: MUTEX_SYM */
-#line 14070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2277: /* show_engine_param: MUTEX_SYM */
+#line 14267 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_ENGINE_MUTEX; }
-#line 46198 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46402 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2261: /* show_engine_param: LOGS_SYM */
-#line 14072 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2278: /* show_engine_param: LOGS_SYM */
+#line 14269 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHOW_ENGINE_LOGS; }
-#line 46204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46408 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2266: /* opt_db: %empty */
-#line 14086 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2283: /* opt_db: %empty */
+#line 14283 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 46210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46414 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2267: /* opt_db: from_or_in ident */
-#line 14087 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2284: /* opt_db: from_or_in ident */
+#line 14284 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 46216 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2268: /* opt_full: %empty */
-#line 14091 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2285: /* opt_full: %empty */
+#line 14288 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->verbose=0; }
-#line 46222 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46426 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2269: /* opt_full: FULL */
-#line 14092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2286: /* opt_full: FULL */
+#line 14289 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->verbose=1; }
-#line 46228 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2272: /* binlog_in: %empty */
-#line 14101 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2289: /* binlog_in: %empty */
+#line 14298 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.log_file_name = 0; }
-#line 46234 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46438 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2273: /* binlog_in: IN_SYM TEXT_STRING_sys */
-#line 14102 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2290: /* binlog_in: IN_SYM TEXT_STRING_sys */
+#line 14299 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.log_file_name = (yyvsp[0].lex_str).str; }
-#line 46240 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46444 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2274: /* binlog_from: %empty */
-#line 14106 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2291: /* binlog_from: %empty */
+#line 14303 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.pos = 4; /* skip magic number */ }
-#line 46246 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46450 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2275: /* binlog_from: FROM ulonglong_num */
-#line 14107 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2292: /* binlog_from: FROM ulonglong_num */
+#line 14304 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->mi.pos = (yyvsp[0].ulonglong_number); }
-#line 46252 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2276: /* wild_and_where: %empty */
-#line 14111 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2293: /* wild_and_where: %empty */
+#line 14308 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.simple_string)= 0; }
-#line 46258 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2277: /* wild_and_where: LIKE remember_tok_start TEXT_STRING_sys */
-#line 14113 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2294: /* wild_and_where: LIKE remember_tok_start TEXT_STRING_sys */
+#line 14310 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->wild= new (thd->mem_root) String((const char*) (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length,
@@ -46267,22 +46471,22 @@ yyreduce:
MYSQL_YYABORT;
(yyval.simple_string)= (yyvsp[-1].simple_string);
}
-#line 46271 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46475 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2278: /* wild_and_where: WHERE remember_tok_start expr */
-#line 14122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2295: /* wild_and_where: WHERE remember_tok_start expr */
+#line 14319 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->where= normalize_cond(thd, (yyvsp[0].item));
if ((yyvsp[0].item))
(yyvsp[0].item)->top_level_item();
(yyval.simple_string)= (yyvsp[-1].simple_string);
}
-#line 46282 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46486 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2279: /* $@202: %empty */
-#line 14133 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2296: /* $@204: %empty */
+#line 14330 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (lex->main_select_push())
@@ -46295,73 +46499,73 @@ yyreduce:
if (unlikely(prepare_schema_table(thd, lex, (yyvsp[0].table), SCH_COLUMNS)))
MYSQL_YYABORT;
}
-#line 46299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2280: /* describe: describe_command table_ident $@202 opt_describe_column */
-#line 14146 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2297: /* describe: describe_command table_ident $@204 opt_describe_column */
+#line 14343 "/home/buildbot/git/sql/sql_yacc.yy"
{
Select->parsing_place= NO_MATTER;
Lex->pop_select(); //main select
}
-#line 46308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46512 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2281: /* $@203: %empty */
-#line 14151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2298: /* $@205: %empty */
+#line 14348 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_NORMAL; }
-#line 46314 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2282: /* describe: describe_command opt_extended_describe $@203 explainable_command */
-#line 14153 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2299: /* describe: describe_command opt_extended_describe $@205 explainable_command */
+#line 14350 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->first_select_lex()->options|= SELECT_DESCRIBE;
}
-#line 46323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46527 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2291: /* analyze_stmt_command: ANALYZE_SYM opt_format_json explainable_command */
-#line 14175 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2308: /* analyze_stmt_command: ANALYZE_SYM opt_format_json explainable_command */
+#line 14372 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->analyze_stmt= true;
}
-#line 46331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2292: /* opt_extended_describe: EXTENDED_SYM */
-#line 14181 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2309: /* opt_extended_describe: EXTENDED_SYM */
+#line 14378 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_EXTENDED; }
-#line 46337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46541 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2293: /* opt_extended_describe: EXTENDED_SYM ALL */
-#line 14183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2310: /* opt_extended_describe: EXTENDED_SYM ALL */
+#line 14380 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_EXTENDED | DESCRIBE_EXTENDED2; }
-#line 46343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2294: /* opt_extended_describe: PARTITIONS_SYM */
-#line 14184 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2311: /* opt_extended_describe: PARTITIONS_SYM */
+#line 14381 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->describe|= DESCRIBE_PARTITIONS; }
-#line 46349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46553 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2295: /* opt_extended_describe: opt_format_json */
-#line 14185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2312: /* opt_extended_describe: opt_format_json */
+#line 14382 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2296: /* opt_format_json: %empty */
-#line 14189 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2313: /* opt_format_json: %empty */
+#line 14386 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46361 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46565 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2297: /* opt_format_json: FORMAT_SYM '=' ident_or_text */
-#line 14191 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2314: /* opt_format_json: FORMAT_SYM '=' ident_or_text */
+#line 14388 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (lex_string_eq(&(yyvsp[0].lex_str), STRING_WITH_LEN("JSON")))
Lex->explain_json= true;
@@ -46371,23 +46575,23 @@ yyreduce:
my_yyabort_error((ER_UNKNOWN_EXPLAIN_FORMAT, MYF(0),
"EXPLAIN/ANALYZE", (yyvsp[0].lex_str).str));
}
-#line 46375 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46579 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2298: /* opt_describe_column: %empty */
-#line 14203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2315: /* opt_describe_column: %empty */
+#line 14400 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46381 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46585 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2299: /* opt_describe_column: text_string */
-#line 14204 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2316: /* opt_describe_column: text_string */
+#line 14401 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->wild= (yyvsp[0].string); }
-#line 46387 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2300: /* opt_describe_column: ident */
-#line 14206 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2317: /* opt_describe_column: ident */
+#line 14403 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->wild= new (thd->mem_root) String((const char*) (yyvsp[0].ident_sys).str,
(yyvsp[0].ident_sys).length,
@@ -46395,11 +46599,11 @@ yyreduce:
if (unlikely(Lex->wild == NULL))
MYSQL_YYABORT;
}
-#line 46399 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2301: /* explain_for_connection: describe_command opt_format_json FOR_SYM CONNECTION_SYM expr */
-#line 14222 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2318: /* explain_for_connection: describe_command opt_format_json FOR_SYM CONNECTION_SYM expr */
+#line 14419 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->wild=0;
@@ -46417,28 +46621,28 @@ yyreduce:
MYSQL_YYABORT;
add_value_to_list(thd, (yyvsp[0].item));
}
-#line 46421 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46625 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2302: /* $@204: %empty */
-#line 14245 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2319: /* $@206: %empty */
+#line 14442 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_FLUSH;
lex->type= 0;
lex->no_write_to_binlog= (yyvsp[0].num);
}
-#line 46432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2303: /* flush: FLUSH_SYM opt_no_write_to_binlog $@204 flush_options */
-#line 14251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2320: /* flush: FLUSH_SYM opt_no_write_to_binlog $@206 flush_options */
+#line 14448 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46438 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2304: /* $@205: %empty */
-#line 14256 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2321: /* $@207: %empty */
+#line 14453 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_TABLES;
/*
@@ -46448,29 +46652,29 @@ yyreduce:
YYPS->m_lock_type= TL_READ_NO_INSERT;
YYPS->m_mdl_type= MDL_SHARED_HIGH_PRIO;
}
-#line 46452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46656 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2305: /* flush_options: table_or_tables $@205 opt_table_list opt_flush_lock */
-#line 14266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2322: /* flush_options: table_or_tables $@207 opt_table_list opt_flush_lock */
+#line 14463 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46662 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2306: /* flush_options: flush_options_list */
-#line 14268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2323: /* flush_options: flush_options_list */
+#line 14465 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46668 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2307: /* opt_flush_lock: %empty */
-#line 14272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2324: /* opt_flush_lock: %empty */
+#line 14469 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46674 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2308: /* opt_flush_lock: flush_lock */
-#line 14274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2325: /* opt_flush_lock: flush_lock */
+#line 14471 "/home/buildbot/git/sql/sql_yacc.yy"
{
TABLE_LIST *tables= Lex->query_tables;
for (; tables; tables= tables->next_global)
@@ -46480,17 +46684,17 @@ yyreduce:
tables->open_type= OT_BASE_ONLY;
}
}
-#line 46484 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46688 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2309: /* flush_lock: WITH READ_SYM LOCK_SYM optional_flush_tables_arguments */
-#line 14287 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2326: /* flush_lock: WITH READ_SYM LOCK_SYM optional_flush_tables_arguments */
+#line 14484 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_READ_LOCK | (yyvsp[0].num); }
-#line 46490 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46694 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2310: /* $@206: %empty */
-#line 14289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2327: /* $@208: %empty */
+#line 14486 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->query_tables == NULL))
{
@@ -46500,53 +46704,53 @@ yyreduce:
}
Lex->type|= REFRESH_FOR_EXPORT;
}
-#line 46504 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2311: /* flush_lock: FOR_SYM $@206 EXPORT_SYM */
-#line 14297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2328: /* flush_lock: FOR_SYM $@208 EXPORT_SYM */
+#line 14494 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46714 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2313: /* flush_options_list: flush_option */
-#line 14303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2330: /* flush_options_list: flush_option */
+#line 14500 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46720 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2314: /* flush_option: ERROR_SYM LOGS_SYM */
-#line 14308 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2331: /* flush_option: ERROR_SYM LOGS_SYM */
+#line 14505 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_ERROR_LOG; }
-#line 46522 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2315: /* flush_option: ENGINE_SYM LOGS_SYM */
-#line 14310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2332: /* flush_option: ENGINE_SYM LOGS_SYM */
+#line 14507 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_ENGINE_LOG; }
-#line 46528 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46732 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2316: /* flush_option: GENERAL LOGS_SYM */
-#line 14312 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2333: /* flush_option: GENERAL LOGS_SYM */
+#line 14509 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_GENERAL_LOG; }
-#line 46534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46738 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2317: /* flush_option: SLOW LOGS_SYM */
-#line 14314 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2334: /* flush_option: SLOW LOGS_SYM */
+#line 14511 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_SLOW_LOG; }
-#line 46540 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46744 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2318: /* flush_option: BINARY LOGS_SYM opt_delete_gtid_domain */
-#line 14316 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2335: /* flush_option: BINARY LOGS_SYM opt_delete_gtid_domain */
+#line 14513 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_BINARY_LOG; }
-#line 46546 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2319: /* flush_option: RELAY LOGS_SYM optional_connection_name optional_for_channel */
-#line 14318 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2336: /* flush_option: RELAY LOGS_SYM optional_connection_name optional_for_channel */
+#line 14515 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->type & REFRESH_RELAY_LOG))
@@ -46554,44 +46758,44 @@ yyreduce:
lex->type|= REFRESH_RELAY_LOG;
lex->relay_log_connection_name= lex->mi.connection_name;
}
-#line 46558 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46762 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2320: /* flush_option: QUERY_SYM CACHE_SYM */
-#line 14326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2337: /* flush_option: QUERY_SYM CACHE_SYM */
+#line 14523 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_QUERY_CACHE_FREE; }
-#line 46564 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46768 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2321: /* flush_option: HOSTS_SYM */
-#line 14328 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2338: /* flush_option: HOSTS_SYM */
+#line 14525 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_HOSTS; }
-#line 46570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46774 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2322: /* flush_option: PRIVILEGES */
-#line 14330 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2339: /* flush_option: PRIVILEGES */
+#line 14527 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_GRANT; }
-#line 46576 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46780 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2323: /* flush_option: LOGS_SYM */
-#line 14332 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2340: /* flush_option: LOGS_SYM */
+#line 14529 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_LOG;
Lex->relay_log_connection_name= empty_clex_str;
}
-#line 46585 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2324: /* flush_option: STATUS_SYM */
-#line 14337 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2341: /* flush_option: STATUS_SYM */
+#line 14534 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_STATUS; }
-#line 46591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2325: /* flush_option: SLAVE optional_connection_name */
-#line 14339 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2342: /* flush_option: SLAVE optional_connection_name */
+#line 14536 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->type & REFRESH_SLAVE))
@@ -46599,41 +46803,41 @@ yyreduce:
lex->type|= REFRESH_SLAVE;
lex->reset_slave_info.all= false;
}
-#line 46603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46807 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2326: /* flush_option: MASTER_SYM */
-#line 14347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2343: /* flush_option: MASTER_SYM */
+#line 14544 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_MASTER; }
-#line 46609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46813 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2327: /* flush_option: DES_KEY_FILE */
-#line 14349 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2344: /* flush_option: DES_KEY_FILE */
+#line 14546 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_DES_KEY_FILE; }
-#line 46615 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2328: /* flush_option: RESOURCES */
-#line 14351 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2345: /* flush_option: RESOURCES */
+#line 14548 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_USER_RESOURCES; }
-#line 46621 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46825 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2329: /* flush_option: SSL_SYM */
-#line 14353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2346: /* flush_option: SSL_SYM */
+#line 14550 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_SSL;}
-#line 46627 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46831 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2330: /* flush_option: THREADS_SYM */
-#line 14355 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2347: /* flush_option: THREADS_SYM */
+#line 14552 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_THREADS;}
-#line 46633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46837 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2331: /* flush_option: IDENT_sys remember_tok_start */
-#line 14357 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2348: /* flush_option: IDENT_sys remember_tok_start */
+#line 14554 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_GENERIC;
ST_SCHEMA_TABLE *table= find_schema_table(thd, &(yyvsp[-1].ident_sys));
@@ -46647,29 +46851,29 @@ yyreduce:
thd->mem_root)))
MYSQL_YYABORT;
}
-#line 46651 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46855 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2332: /* opt_table_list: %empty */
-#line 14373 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2349: /* opt_table_list: %empty */
+#line 14570 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46657 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46861 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2333: /* opt_table_list: table_list */
-#line 14374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2350: /* opt_table_list: table_list */
+#line 14571 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46663 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46867 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2334: /* backup: BACKUP_SYM backup_statements */
-#line 14378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2351: /* backup: BACKUP_SYM backup_statements */
+#line 14575 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2335: /* backup_statements: STAGE_SYM ident */
-#line 14383 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2352: /* backup_statements: STAGE_SYM ident */
+#line 14580 "/home/buildbot/git/sql/sql_yacc.yy"
{
int type;
if (unlikely(Lex->sphead))
@@ -46681,22 +46885,22 @@ yyreduce:
Lex->backup_stage= (backup_stages) (type-1);
break;
}
-#line 46685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46889 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2336: /* $@207: %empty */
-#line 14395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2353: /* $@209: %empty */
+#line 14592 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead))
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "BACKUP LOCK"));
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 46696 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46900 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2337: /* backup_statements: LOCK_SYM $@207 table_ident */
-#line 14402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2354: /* backup_statements: LOCK_SYM $@209 table_ident */
+#line 14599 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[0].table), NULL, 0,
TL_READ, MDL_SHARED_HIGH_PRIO)))
@@ -46704,34 +46908,34 @@ yyreduce:
Lex->sql_command= SQLCOM_BACKUP_LOCK;
Lex->pop_select(); //main select
}
-#line 46708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46912 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2338: /* backup_statements: UNLOCK_SYM */
-#line 14410 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2355: /* backup_statements: UNLOCK_SYM */
+#line 14607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead))
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "BACKUP UNLOCK"));
/* Table list is empty for unlock */
Lex->sql_command= SQLCOM_BACKUP_LOCK;
}
-#line 46719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46923 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2339: /* opt_delete_gtid_domain: %empty */
-#line 14419 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2356: /* opt_delete_gtid_domain: %empty */
+#line 14616 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46725 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46929 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2340: /* opt_delete_gtid_domain: DELETE_DOMAIN_ID_SYM '=' '(' delete_domain_id_list ')' */
-#line 14421 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2357: /* opt_delete_gtid_domain: DELETE_DOMAIN_ID_SYM '=' '(' delete_domain_id_list ')' */
+#line 14618 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2344: /* delete_domain_id: ulonglong_num */
-#line 14431 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2361: /* delete_domain_id: ulonglong_num */
+#line 14628 "/home/buildbot/git/sql/sql_yacc.yy"
{
uint32 value= (uint32) (yyvsp[0].ulonglong_number);
if ((yyvsp[0].ulonglong_number) > UINT_MAX32)
@@ -46744,115 +46948,115 @@ yyreduce:
}
insert_dynamic(&Lex->delete_gtid_domain, (uchar*) &value);
}
-#line 46748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2345: /* optional_flush_tables_arguments: %empty */
-#line 14446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2362: /* optional_flush_tables_arguments: %empty */
+#line 14643 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num)= 0;}
-#line 46754 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2346: /* optional_flush_tables_arguments: AND_SYM DISABLE_SYM CHECKPOINT_SYM */
-#line 14447 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2363: /* optional_flush_tables_arguments: AND_SYM DISABLE_SYM CHECKPOINT_SYM */
+#line 14644 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.num)= REFRESH_CHECKPOINT; }
-#line 46760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2347: /* $@208: %empty */
-#line 14452 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2364: /* $@210: %empty */
+#line 14649 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_RESET; lex->type=0;
}
-#line 46769 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46973 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2348: /* reset: RESET_SYM $@208 reset_options */
-#line 14457 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2365: /* reset: RESET_SYM $@210 reset_options */
+#line 14654 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46979 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2351: /* $@209: %empty */
-#line 14466 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2368: /* $@211: %empty */
+#line 14663 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_SLAVE; }
-#line 46781 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2352: /* reset_option: SLAVE $@209 optional_connection_name slave_reset_options optional_for_channel */
-#line 14469 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2369: /* reset_option: SLAVE $@211 optional_connection_name slave_reset_options optional_for_channel */
+#line 14666 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 46787 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 46991 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2353: /* $@210: %empty */
-#line 14471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2370: /* $@212: %empty */
+#line 14668 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->type|= REFRESH_MASTER;
Lex->next_binlog_file_number= 0;
}
-#line 46796 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2355: /* reset_option: QUERY_SYM CACHE_SYM */
-#line 14476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2372: /* reset_option: QUERY_SYM CACHE_SYM */
+#line 14673 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->type|= REFRESH_QUERY_CACHE;}
-#line 46802 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2356: /* slave_reset_options: %empty */
-#line 14480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2373: /* slave_reset_options: %empty */
+#line 14677 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->reset_slave_info.all= false; }
-#line 46808 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2357: /* slave_reset_options: ALL */
-#line 14481 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2374: /* slave_reset_options: ALL */
+#line 14678 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->reset_slave_info.all= true; }
-#line 46814 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2358: /* master_reset_options: %empty */
-#line 14485 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2375: /* master_reset_options: %empty */
+#line 14682 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46820 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2359: /* master_reset_options: TO_SYM ulong_num */
-#line 14487 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2376: /* master_reset_options: TO_SYM ulong_num */
+#line 14684 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->next_binlog_file_number = (yyvsp[0].ulong_num);
}
-#line 46828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47032 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2360: /* purge: PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys */
-#line 14494 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2377: /* purge: PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys */
+#line 14691 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_purge_to((yyvsp[0].lex_str));
}
-#line 46836 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2361: /* $@211: %empty */
-#line 14498 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2378: /* $@213: %empty */
+#line 14695 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->clause_that_disallows_subselect= "PURGE..BEFORE"; }
-#line 46842 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2362: /* purge: PURGE master_or_binary LOGS_SYM BEFORE_SYM $@211 expr */
-#line 14500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2379: /* purge: PURGE master_or_binary LOGS_SYM BEFORE_SYM $@213 expr */
+#line 14697 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->clause_that_disallows_subselect= NULL;
if (Lex->stmt_purge_before((yyvsp[0].item)))
MYSQL_YYABORT;
}
-#line 46852 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47056 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2363: /* $@212: %empty */
-#line 14512 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2380: /* $@214: %empty */
+#line 14709 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->value_list.empty();
@@ -46860,124 +47064,124 @@ yyreduce:
lex->sql_command= SQLCOM_KILL;
lex->kill_type= KILL_TYPE_ID;
}
-#line 46864 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2364: /* kill: KILL_SYM $@212 kill_type kill_option */
-#line 14520 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2381: /* kill: KILL_SYM $@214 kill_type kill_option */
+#line 14717 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->kill_signal= (killed_state) ((yyvsp[-1].num) | (yyvsp[0].num));
}
-#line 46872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47076 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2365: /* kill_type: %empty */
-#line 14526 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2382: /* kill_type: %empty */
+#line 14723 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_HARD_BIT; }
-#line 46878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2366: /* kill_type: HARD_SYM */
-#line 14527 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2383: /* kill_type: HARD_SYM */
+#line 14724 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_HARD_BIT; }
-#line 46884 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47088 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2367: /* kill_type: SOFT_SYM */
-#line 14528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2384: /* kill_type: SOFT_SYM */
+#line 14725 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 46890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47094 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2368: /* kill_option: opt_connection kill_expr */
-#line 14532 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2385: /* kill_option: opt_connection kill_expr */
+#line 14729 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_CONNECTION; }
-#line 46896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47100 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2369: /* kill_option: QUERY_SYM kill_expr */
-#line 14533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2386: /* kill_option: QUERY_SYM kill_expr */
+#line 14730 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (int) KILL_QUERY; }
-#line 46902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47106 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2370: /* kill_option: QUERY_SYM ID_SYM expr */
-#line 14535 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2387: /* kill_option: QUERY_SYM ID_SYM expr */
+#line 14732 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (int) KILL_QUERY;
Lex->kill_type= KILL_TYPE_QUERY;
Lex->value_list.push_front((yyvsp[0].item), thd->mem_root);
}
-#line 46912 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2371: /* opt_connection: %empty */
-#line 14543 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2388: /* opt_connection: %empty */
+#line 14740 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 46918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47122 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2372: /* opt_connection: CONNECTION_SYM */
-#line 14544 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2389: /* opt_connection: CONNECTION_SYM */
+#line 14741 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 46924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47128 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2373: /* kill_expr: expr */
-#line 14549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2390: /* kill_expr: expr */
+#line 14746 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->value_list.push_front((yyval.item), thd->mem_root);
}
-#line 46932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2374: /* kill_expr: USER_SYM user */
-#line 14553 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2391: /* kill_expr: USER_SYM user */
+#line 14750 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root);
Lex->kill_type= KILL_TYPE_USER;
}
-#line 46941 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2375: /* $@213: %empty */
-#line 14560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2392: /* $@215: %empty */
+#line 14757 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->sql_command= SQLCOM_SHUTDOWN; }
-#line 46947 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47151 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2376: /* shutdown: SHUTDOWN $@213 shutdown_option */
-#line 14561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2393: /* shutdown: SHUTDOWN $@215 shutdown_option */
+#line 14758 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 46953 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47157 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2377: /* shutdown_option: %empty */
-#line 14565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2394: /* shutdown_option: %empty */
+#line 14762 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->is_shutdown_wait_for_slaves= false; }
-#line 46959 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2378: /* shutdown_option: WAIT_SYM FOR_SYM ALL SLAVES */
-#line 14567 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2395: /* shutdown_option: WAIT_SYM FOR_SYM ALL SLAVES */
+#line 14764 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->is_shutdown_wait_for_slaves= true;
}
-#line 46967 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47171 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2379: /* use: USE_SYM ident */
-#line 14576 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2396: /* use: USE_SYM ident */
+#line 14773 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_CHANGE_DB;
lex->first_select_lex()->db= (yyvsp[0].ident_sys);
}
-#line 46977 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2380: /* $@214: %empty */
-#line 14587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2397: /* $@216: %empty */
+#line 14784 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
@@ -46991,11 +47195,11 @@ yyreduce:
MYSQL_YYABORT;
lex->init_select();
}
-#line 46995 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47199 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2381: /* $@215: %empty */
-#line 14601 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2398: /* $@217: %empty */
+#line 14798 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_LOAD;
@@ -47006,11 +47210,11 @@ yyreduce:
sql_exchange((yyvsp[0].lex_str).str, 0, (yyvsp[-5].filetype)))))
MYSQL_YYABORT;
}
-#line 47010 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47214 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2382: /* $@216: %empty */
-#line 14612 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2399: /* $@218: %empty */
+#line 14809 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (unlikely(!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL,
@@ -47023,55 +47227,55 @@ yyreduce:
lex->value_list.empty();
lex->many_values.empty();
}
-#line 47027 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47231 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2383: /* $@217: %empty */
-#line 14625 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2400: /* $@219: %empty */
+#line 14822 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->exchange->cs= (yyvsp[0].charset); }
-#line 47033 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47237 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2384: /* load: LOAD data_or_xml $@214 load_data_lock opt_local INFILE TEXT_STRING_filesystem $@215 opt_duplicate INTO TABLE_SYM table_ident opt_use_partition $@216 opt_load_data_charset $@217 opt_xml_rows_identified_by opt_field_term opt_line_term opt_ignore_lines opt_field_or_var_spec opt_load_data_set_spec stmt_end */
-#line 14630 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2401: /* load: LOAD data_or_xml $@216 load_data_lock opt_local INFILE TEXT_STRING_filesystem $@217 opt_duplicate INTO TABLE_SYM table_ident opt_use_partition $@218 opt_load_data_charset $@219 opt_xml_rows_identified_by opt_field_term opt_line_term opt_ignore_lines opt_field_or_var_spec opt_load_data_set_spec stmt_end */
+#line 14827 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->mark_first_table_as_inserting();
}
-#line 47041 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2385: /* data_or_xml: DATA_SYM */
-#line 14636 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2402: /* data_or_xml: DATA_SYM */
+#line 14833 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.filetype)= FILETYPE_CSV; }
-#line 47047 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47251 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2386: /* data_or_xml: XML_SYM */
-#line 14637 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2403: /* data_or_xml: XML_SYM */
+#line 14834 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.filetype)= FILETYPE_XML; }
-#line 47053 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47257 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2387: /* opt_local: %empty */
-#line 14641 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2404: /* opt_local: %empty */
+#line 14838 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=0;}
-#line 47059 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2388: /* opt_local: LOCAL_SYM */
-#line 14642 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2405: /* opt_local: LOCAL_SYM */
+#line 14839 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=1;}
-#line 47065 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47269 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2389: /* load_data_lock: %empty */
-#line 14646 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2406: /* load_data_lock: %empty */
+#line 14843 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_DEFAULT; }
-#line 47071 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47275 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2390: /* load_data_lock: CONCURRENT */
-#line 14648 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2407: /* load_data_lock: CONCURRENT */
+#line 14845 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
Ignore this option in SP to avoid problem with query cache and
@@ -47079,160 +47283,160 @@ yyreduce:
*/
(yyval.lock_type)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT);
}
-#line 47083 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2391: /* load_data_lock: LOW_PRIORITY */
-#line 14655 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2408: /* load_data_lock: LOW_PRIORITY */
+#line 14852 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; }
-#line 47089 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47293 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2392: /* opt_duplicate: %empty */
-#line 14659 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2409: /* opt_duplicate: %empty */
+#line 14856 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->duplicates=DUP_ERROR; }
-#line 47095 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2393: /* opt_duplicate: REPLACE */
-#line 14660 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2410: /* opt_duplicate: REPLACE */
+#line 14857 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->duplicates=DUP_REPLACE; }
-#line 47101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2394: /* opt_duplicate: IGNORE_SYM */
-#line 14661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2411: /* opt_duplicate: IGNORE_SYM */
+#line 14858 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ignore= 1; }
-#line 47107 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47311 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2399: /* field_term: TERMINATED BY text_string */
-#line 14676 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2416: /* field_term: TERMINATED BY text_string */
+#line 14873 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->field_term= (yyvsp[0].string);
}
-#line 47116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2400: /* field_term: OPTIONALLY ENCLOSED BY text_string */
-#line 14681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2417: /* field_term: OPTIONALLY ENCLOSED BY text_string */
+#line 14878 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
DBUG_ASSERT(lex->exchange != 0);
lex->exchange->enclosed= (yyvsp[0].string);
lex->exchange->opt_enclosed= 1;
}
-#line 47127 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2401: /* field_term: ENCLOSED BY text_string */
-#line 14688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2418: /* field_term: ENCLOSED BY text_string */
+#line 14885 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->enclosed= (yyvsp[0].string);
}
-#line 47136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47340 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2402: /* field_term: ESCAPED BY text_string */
-#line 14693 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2419: /* field_term: ESCAPED BY text_string */
+#line 14890 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->escaped= (yyvsp[0].string);
}
-#line 47145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2407: /* line_term: TERMINATED BY text_string */
-#line 14711 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2424: /* line_term: TERMINATED BY text_string */
+#line 14908 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->line_term= (yyvsp[0].string);
}
-#line 47154 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2408: /* line_term: STARTING BY text_string */
-#line 14716 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2425: /* line_term: STARTING BY text_string */
+#line 14913 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->line_start= (yyvsp[0].string);
}
-#line 47163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47367 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2409: /* opt_xml_rows_identified_by: %empty */
-#line 14723 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2426: /* opt_xml_rows_identified_by: %empty */
+#line 14920 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47169 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47373 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2410: /* opt_xml_rows_identified_by: ROWS_SYM IDENTIFIED_SYM BY text_string */
-#line 14725 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2427: /* opt_xml_rows_identified_by: ROWS_SYM IDENTIFIED_SYM BY text_string */
+#line 14922 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->exchange->line_term = (yyvsp[0].string); }
-#line 47175 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47379 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2412: /* opt_ignore_lines: IGNORE_SYM NUM lines_or_rows */
-#line 14731 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2429: /* opt_ignore_lines: IGNORE_SYM NUM lines_or_rows */
+#line 14928 "/home/buildbot/git/sql/sql_yacc.yy"
{
DBUG_ASSERT(Lex->exchange != 0);
Lex->exchange->skip_lines= atol((yyvsp[-1].lex_str).str);
}
-#line 47184 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47388 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2413: /* lines_or_rows: LINES */
-#line 14738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2430: /* lines_or_rows: LINES */
+#line 14935 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47190 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47394 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2414: /* lines_or_rows: ROWS_SYM */
-#line 14739 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2431: /* lines_or_rows: ROWS_SYM */
+#line 14936 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 47196 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2415: /* opt_field_or_var_spec: %empty */
-#line 14743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2432: /* opt_field_or_var_spec: %empty */
+#line 14940 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47202 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47406 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2416: /* opt_field_or_var_spec: '(' fields_or_vars ')' */
-#line 14744 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2433: /* opt_field_or_var_spec: '(' fields_or_vars ')' */
+#line 14941 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47208 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47412 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2417: /* opt_field_or_var_spec: '(' ')' */
-#line 14745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2434: /* opt_field_or_var_spec: '(' ')' */
+#line 14942 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47214 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47418 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2418: /* fields_or_vars: fields_or_vars ',' field_or_var */
-#line 14750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2435: /* fields_or_vars: fields_or_vars ',' field_or_var */
+#line 14947 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 47220 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2419: /* fields_or_vars: field_or_var */
-#line 14752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2436: /* fields_or_vars: field_or_var */
+#line 14949 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); }
-#line 47226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47430 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2420: /* field_or_var: simple_ident_nospvar */
-#line 14756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2437: /* field_or_var: simple_ident_nospvar */
+#line 14953 "/home/buildbot/git/sql/sql_yacc.yy"
{(yyval.item)= (yyvsp[0].item);}
-#line 47232 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47436 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2421: /* field_or_var: '@' ident_or_text */
-#line 14758 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2438: /* field_or_var: '@' ident_or_text */
+#line 14955 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[0].lex_str).length)
{
@@ -47244,23 +47448,23 @@ yyreduce:
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47248 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2422: /* opt_load_data_set_spec: %empty */
-#line 14772 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2439: /* opt_load_data_set_spec: %empty */
+#line 14969 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47254 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2423: /* opt_load_data_set_spec: SET load_data_set_list */
-#line 14773 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2440: /* opt_load_data_set_spec: SET load_data_set_list */
+#line 14970 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 47260 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2426: /* load_data_set_elem: simple_ident_nospvar equal remember_name expr_or_ignore_or_default remember_end */
-#line 14783 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2443: /* load_data_set_elem: simple_ident_nospvar equal remember_name expr_or_ignore_or_default remember_end */
+#line 14980 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->update_list.push_back((yyvsp[-4].item), thd->mem_root)) ||
@@ -47268,47 +47472,49 @@ yyreduce:
MYSQL_YYABORT;
(yyvsp[-1].item)->set_name_no_truncate(thd, (yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset());
}
-#line 47272 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47476 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2427: /* text_literal: TEXT_STRING */
-#line 14796 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2444: /* text_literal: TEXT_STRING */
+#line 14993 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_basic_constant)= thd->make_string_literal((yyvsp[0].lex_string_with_metadata)))))
MYSQL_YYABORT;
}
-#line 47281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47485 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2428: /* text_literal: NCHAR_STRING */
-#line 14801 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2445: /* text_literal: NCHAR_STRING */
+#line 14998 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_basic_constant)= thd->make_string_literal_nchar((yyvsp[0].lex_string_with_metadata)))))
MYSQL_YYABORT;
}
-#line 47290 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47494 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2429: /* text_literal: UNDERSCORE_CHARSET TEXT_STRING */
-#line 14806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2446: /* text_literal: UNDERSCORE_CHARSET TEXT_STRING */
+#line 15003 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
if (unlikely(!((yyval.item_basic_constant)= thd->make_string_literal_charset((yyvsp[0].lex_string_with_metadata), (yyvsp[-1].charset)))))
MYSQL_YYABORT;
}
-#line 47299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47505 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2430: /* text_literal: text_literal TEXT_STRING_literal */
-#line 14811 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2447: /* text_literal: text_literal TEXT_STRING_literal */
+#line 15010 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_basic_constant)= (yyvsp[-1].item_basic_constant)->make_string_literal_concat(thd, &(yyvsp[0].lex_str)))))
MYSQL_YYABORT;
}
-#line 47308 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47514 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2431: /* text_string: TEXT_STRING_literal */
-#line 14819 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2448: /* text_string: TEXT_STRING_literal */
+#line 15018 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.string)= new (thd->mem_root) String((const char*) (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length,
@@ -47316,17 +47522,17 @@ yyreduce:
if (unlikely((yyval.string) == NULL))
MYSQL_YYABORT;
}
-#line 47320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47526 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2432: /* text_string: hex_or_bin_String */
-#line 14826 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2449: /* text_string: hex_or_bin_String */
+#line 15025 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.string)= (yyvsp[0].string); }
-#line 47326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47532 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2433: /* hex_or_bin_String: HEX_NUM */
-#line 14832 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2450: /* hex_or_bin_String: HEX_NUM */
+#line 15031 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *tmp= new (thd->mem_root) Item_hex_hybrid(thd, (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length);
@@ -47334,11 +47540,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string)= tmp->val_str((String*) 0);
}
-#line 47338 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47544 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2434: /* hex_or_bin_String: HEX_STRING */
-#line 14840 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2451: /* hex_or_bin_String: HEX_STRING */
+#line 15039 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *tmp= new (thd->mem_root) Item_hex_string(thd, (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length);
@@ -47346,11 +47552,11 @@ yyreduce:
MYSQL_YYABORT;
(yyval.string)= tmp->val_str((String*) 0);
}
-#line 47350 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47556 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2435: /* hex_or_bin_String: BIN_NUM */
-#line 14848 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2452: /* hex_or_bin_String: BIN_NUM */
+#line 15047 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item *tmp= new (thd->mem_root) Item_bin_string(thd, (yyvsp[0].lex_str).str,
(yyvsp[0].lex_str).length);
@@ -47362,76 +47568,76 @@ yyreduce:
*/
(yyval.string)= tmp->val_str((String*) 0);
}
-#line 47366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47572 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2436: /* param_marker: PARAM_MARKER */
-#line 14863 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2453: /* param_marker: PARAM_MARKER */
+#line 15062 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_param)= Lex->add_placeholder(thd, &param_clex_str,
YYLIP->get_tok_start(),
YYLIP->get_tok_start() + 1))))
MYSQL_YYABORT;
}
-#line 47377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47583 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2437: /* param_marker: COLON_ORACLE_SYM ident_cli */
-#line 14870 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2454: /* param_marker: COLON_ORACLE_SYM ident_cli */
+#line 15069 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_param)= Lex->add_placeholder(thd, &null_clex_str,
(yyvsp[-1].kwd).pos(), (yyvsp[0].ident_cli).end()))))
MYSQL_YYABORT;
}
-#line 47387 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47593 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2438: /* param_marker: COLON_ORACLE_SYM NUM */
-#line 14876 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2455: /* param_marker: COLON_ORACLE_SYM NUM */
+#line 15075 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item_param)= Lex->add_placeholder(thd, &null_clex_str,
(yyvsp[-1].kwd).pos(),
YYLIP->get_ptr()))))
MYSQL_YYABORT;
}
-#line 47398 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47604 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2439: /* signed_literal: '+' NUM_literal */
-#line 14885 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2456: /* signed_literal: '+' NUM_literal */
+#line 15084 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item) = (yyvsp[0].item_num); }
-#line 47404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47610 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2440: /* signed_literal: '-' NUM_literal */
-#line 14887 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2457: /* signed_literal: '-' NUM_literal */
+#line 15086 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[0].item_num)->max_length++;
(yyval.item)= (yyvsp[0].item_num)->neg(thd);
}
-#line 47413 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47619 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2441: /* literal: text_literal */
-#line 14894 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2458: /* literal: text_literal */
+#line 15093 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item) = (yyvsp[0].item_basic_constant); }
-#line 47419 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47625 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2442: /* literal: NUM_literal */
-#line 14895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2459: /* literal: NUM_literal */
+#line 15094 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item) = (yyvsp[0].item_num); }
-#line 47425 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47631 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2443: /* literal: temporal_literal */
-#line 14896 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2460: /* literal: temporal_literal */
+#line 15095 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)= (yyvsp[0].item); }
-#line 47431 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47637 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2444: /* literal: NULL_SYM */
-#line 14898 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2461: /* literal: NULL_SYM */
+#line 15097 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
For the digest computation, in this context only,
@@ -47445,65 +47651,67 @@ yyreduce:
MYSQL_YYABORT;
YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT;
}
-#line 47449 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47655 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2445: /* literal: FALSE_SYM */
-#line 14912 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2462: /* literal: FALSE_SYM */
+#line 15111 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_bool(thd, (char*) "FALSE",0);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47459 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47665 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2446: /* literal: TRUE_SYM */
-#line 14918 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2463: /* literal: TRUE_SYM */
+#line 15117 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_bool(thd, (char*) "TRUE",1);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47469 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2447: /* literal: HEX_NUM */
-#line 14924 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2464: /* literal: HEX_NUM */
+#line 15123 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_hex_hybrid(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47685 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2448: /* literal: HEX_STRING */
-#line 14930 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2465: /* literal: HEX_STRING */
+#line 15129 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_hex_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47695 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2449: /* literal: BIN_NUM */
-#line 14936 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2466: /* literal: BIN_NUM */
+#line 15135 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item)= new (thd->mem_root) Item_bin_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item) == NULL))
MYSQL_YYABORT;
}
-#line 47499 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47705 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2450: /* literal: UNDERSCORE_CHARSET hex_or_bin_String */
-#line 14942 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2467: /* literal: UNDERSCORE_CHARSET hex_or_bin_String */
+#line 15141 "/home/buildbot/git/sql/sql_yacc.yy"
{
Item_string_with_introducer *item_str;
LEX_CSTRING tmp;
(yyvsp[0].string)->get_value(&tmp);
+ (yyvsp[-1].charset)= thd->variables.character_set_collations.
+ get_collation_for_charset(thd, (yyvsp[-1].charset));
/*
Pass NULL as name. Name will be set in the "select_item" rule and
will include the introducer and the original hex/bin notation.
@@ -47517,11 +47725,11 @@ yyreduce:
(yyval.item)= item_str;
}
-#line 47521 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47729 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2451: /* NUM_literal: NUM */
-#line 14963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2468: /* NUM_literal: NUM */
+#line 15164 "/home/buildbot/git/sql/sql_yacc.yy"
{
int error;
(yyval.item_num)= new (thd->mem_root)
@@ -47531,11 +47739,11 @@ yyreduce:
if (unlikely((yyval.item_num) == NULL))
MYSQL_YYABORT;
}
-#line 47535 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47743 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2452: /* NUM_literal: LONG_NUM */
-#line 14973 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2469: /* NUM_literal: LONG_NUM */
+#line 15174 "/home/buildbot/git/sql/sql_yacc.yy"
{
int error;
(yyval.item_num)= new (thd->mem_root)
@@ -47545,75 +47753,75 @@ yyreduce:
if (unlikely((yyval.item_num) == NULL))
MYSQL_YYABORT;
}
-#line 47549 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47757 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2453: /* NUM_literal: ULONGLONG_NUM */
-#line 14983 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2470: /* NUM_literal: ULONGLONG_NUM */
+#line 15184 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_num)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item_num) == NULL))
MYSQL_YYABORT;
}
-#line 47559 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47767 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2454: /* NUM_literal: DECIMAL_NUM */
-#line 14989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2471: /* NUM_literal: DECIMAL_NUM */
+#line 15190 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_num)= new (thd->mem_root) Item_decimal(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length,
thd->charset());
if (unlikely((yyval.item_num) == NULL) || unlikely(thd->is_error()))
MYSQL_YYABORT;
}
-#line 47570 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2455: /* NUM_literal: FLOAT_NUM */
-#line 14996 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2472: /* NUM_literal: FLOAT_NUM */
+#line 15197 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.item_num)= new (thd->mem_root) Item_float(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length);
if (unlikely((yyval.item_num) == NULL) || unlikely(thd->is_error()))
MYSQL_YYABORT;
}
-#line 47580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47788 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2456: /* temporal_literal: DATE_SYM TEXT_STRING */
-#line 15006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2473: /* temporal_literal: DATE_SYM TEXT_STRING */
+#line 15207 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= type_handler_newdate.create_literal_item(thd,
(yyvsp[0].lex_string_with_metadata).str, (yyvsp[0].lex_string_with_metadata).length,
YYCSCL, true))))
MYSQL_YYABORT;
}
-#line 47591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2457: /* temporal_literal: TIME_SYM TEXT_STRING */
-#line 15013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2474: /* temporal_literal: TIME_SYM TEXT_STRING */
+#line 15214 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= type_handler_time2.create_literal_item(thd,
(yyvsp[0].lex_string_with_metadata).str, (yyvsp[0].lex_string_with_metadata).length,
YYCSCL, true))))
MYSQL_YYABORT;
}
-#line 47602 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47810 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2458: /* temporal_literal: TIMESTAMP TEXT_STRING */
-#line 15020 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2475: /* temporal_literal: TIMESTAMP TEXT_STRING */
+#line 15221 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= type_handler_datetime.create_literal_item(thd,
(yyvsp[0].lex_string_with_metadata).str, (yyvsp[0].lex_string_with_metadata).length,
YYCSCL, true))))
MYSQL_YYABORT;
}
-#line 47613 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47821 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2459: /* $@218: %empty */
-#line 15030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2476: /* $@220: %empty */
+#line 15231 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
With_clause *with_clause=
@@ -47629,32 +47837,32 @@ yyreduce:
lex->current_select->parsing_place == BEFORE_OPT_LIST)
lex->current_select->parsing_place= NO_MATTER;
}
-#line 47633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2460: /* with_clause: WITH opt_recursive $@218 with_list */
-#line 15046 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2477: /* with_clause: WITH opt_recursive $@220 with_list */
+#line 15247 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.with_clause)= Lex->curr_with_clause;
Lex->curr_with_clause= Lex->curr_with_clause->pop();
}
-#line 47642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47850 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2461: /* opt_recursive: %empty */
-#line 15054 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2478: /* opt_recursive: %empty */
+#line 15255 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 47648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47856 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2462: /* opt_recursive: RECURSIVE_SYM */
-#line 15055 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2479: /* opt_recursive: RECURSIVE_SYM */
+#line 15256 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 47654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2465: /* with_list_element: with_element_head opt_with_column_list AS '(' query_expression ')' opt_cycle */
-#line 15069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2482: /* with_list_element: with_element_head opt_with_column_list AS '(' query_expression ')' opt_cycle */
+#line 15270 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
const char *query_start= lex->sphead ? lex->sphead->m_tmp_query
@@ -47672,78 +47880,78 @@ yyreduce:
}
elem->set_tables_end_pos(lex->query_tables_last);
}
-#line 47676 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47884 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2466: /* opt_cycle: %empty */
-#line 15090 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2483: /* opt_cycle: %empty */
+#line 15291 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_sys_list)= NULL; }
-#line 47682 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2467: /* $@219: %empty */
-#line 15093 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2484: /* $@221: %empty */
+#line 15294 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!Lex->curr_with_clause->with_recursive)
{
thd->parse_error(ER_SYNTAX_ERROR, (yyvsp[0].kwd).pos());
}
}
-#line 47693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47901 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2468: /* opt_cycle: CYCLE_SYM $@219 comma_separated_ident_list RESTRICT */
-#line 15100 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2485: /* opt_cycle: CYCLE_SYM $@221 comma_separated_ident_list RESTRICT */
+#line 15301 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ident_sys_list)= (yyvsp[-1].ident_sys_list);
}
-#line 47701 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47909 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2469: /* opt_with_column_list: %empty */
-#line 15108 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2486: /* opt_with_column_list: %empty */
+#line 15309 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.ident_sys_list)= new (thd->mem_root) List<Lex_ident_sys>) == NULL)
MYSQL_YYABORT;
}
-#line 47710 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2470: /* opt_with_column_list: '(' with_column_list ')' */
-#line 15113 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2487: /* opt_with_column_list: '(' with_column_list ')' */
+#line 15314 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_sys_list)= (yyvsp[-1].ident_sys_list); }
-#line 47716 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47924 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2472: /* ident_sys_alloc: ident_cli */
-#line 15122 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2489: /* ident_sys_alloc: ident_cli */
+#line 15323 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ident_sys_ptr)= new (thd->mem_root) Lex_ident_sys(thd, &(yyvsp[0].ident_cli));
}
-#line 47724 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2473: /* comma_separated_ident_list: ident_sys_alloc */
-#line 15129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2490: /* comma_separated_ident_list: ident_sys_alloc */
+#line 15330 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.ident_sys_list)= new (thd->mem_root) List<Lex_ident_sys>;
if (unlikely((yyval.ident_sys_list) == NULL || (yyval.ident_sys_list)->push_back((yyvsp[0].ident_sys_ptr))))
MYSQL_YYABORT;
}
-#line 47734 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47942 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2474: /* comma_separated_ident_list: comma_separated_ident_list ',' ident_sys_alloc */
-#line 15135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2491: /* comma_separated_ident_list: comma_separated_ident_list ',' ident_sys_alloc */
+#line 15336 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.ident_sys_list)= (yyvsp[-2].ident_sys_list))->push_back((yyvsp[0].ident_sys_ptr)))
MYSQL_YYABORT;
}
-#line 47743 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2475: /* with_element_head: ident */
-#line 15144 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2492: /* with_element_head: ident */
+#line 15345 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING *name=
(LEX_CSTRING *) thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING));
@@ -47752,163 +47960,163 @@ yyreduce:
MYSQL_YYABORT;
(yyval.with_element_head)->tables_pos.set_start_pos(Lex->query_tables_last);
}
-#line 47756 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2476: /* insert_ident: simple_ident_nospvar */
-#line 15161 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2493: /* insert_ident: simple_ident_nospvar */
+#line 15362 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)=(yyvsp[0].item); }
-#line 47762 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2477: /* insert_ident: table_wild */
-#line 15162 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2494: /* insert_ident: table_wild */
+#line 15363 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)=(yyvsp[0].item); }
-#line 47768 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47976 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2478: /* table_wild: ident '.' '*' */
-#line 15167 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2495: /* table_wild: ident '.' '*' */
+#line 15368 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-2].ident_sys)))))
MYSQL_YYABORT;
}
-#line 47777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47985 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2479: /* table_wild: ident '.' ident '.' '*' */
-#line 15172 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2496: /* table_wild: ident '.' ident '.' '*' */
+#line 15373 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys)))))
MYSQL_YYABORT;
}
-#line 47786 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 47994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2480: /* select_sublist_qualified_asterisk: ident_cli '.' '*' */
-#line 15180 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2497: /* select_sublist_qualified_asterisk: ident_cli '.' '*' */
+#line 15381 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-2].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2481: /* select_sublist_qualified_asterisk: ident_cli '.' ident_cli '.' '*' */
-#line 15185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2498: /* select_sublist_qualified_asterisk: ident_cli '.' ident_cli '.' '*' */
+#line 15386 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_qualified_asterisk(thd, &(yyvsp[-4].ident_cli), &(yyvsp[-2].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47804 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2482: /* order_ident: expr */
-#line 15192 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2499: /* order_ident: expr */
+#line 15393 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.item)=(yyvsp[0].item); }
-#line 47810 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2483: /* simple_ident: ident_cli */
-#line 15198 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2500: /* simple_ident: ident_cli */
+#line 15399 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47819 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48027 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2484: /* simple_ident: ident_cli '.' ident_cli */
-#line 15203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2501: /* simple_ident: ident_cli '.' ident_cli */
+#line 15404 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2485: /* simple_ident: '.' ident_cli '.' ident_cli */
-#line 15208 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2502: /* simple_ident: '.' ident_cli '.' ident_cli */
+#line 15409 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_cli empty((yyvsp[-2].ident_cli).pos(), 0);
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &empty, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47838 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2486: /* simple_ident: ident_cli '.' ident_cli '.' ident_cli */
-#line 15214 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2503: /* simple_ident: ident_cli '.' ident_cli '.' ident_cli */
+#line 15415 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[-4].ident_cli), &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47847 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48055 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2487: /* simple_ident: COLON_ORACLE_SYM ident_cli '.' ident_cli */
-#line 15219 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2504: /* simple_ident: COLON_ORACLE_SYM ident_cli '.' ident_cli */
+#line 15420 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_colon_ident_ident(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47856 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48064 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2488: /* simple_ident_nospvar: ident */
-#line 15227 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2505: /* simple_ident_nospvar: ident */
+#line 15428 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident_nosp(thd, &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 47865 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2489: /* simple_ident_nospvar: ident '.' ident */
-#line 15232 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2506: /* simple_ident_nospvar: ident '.' ident */
+#line 15433 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident_nospvar(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 47874 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2490: /* simple_ident_nospvar: COLON_ORACLE_SYM ident_cli '.' ident_cli */
-#line 15237 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2507: /* simple_ident_nospvar: COLON_ORACLE_SYM ident_cli '.' ident_cli */
+#line 15438 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->make_item_colon_ident_ident(thd, &(yyvsp[-2].ident_cli), &(yyvsp[0].ident_cli)))))
MYSQL_YYABORT;
}
-#line 47883 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48091 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2491: /* simple_ident_nospvar: '.' ident '.' ident */
-#line 15242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2508: /* simple_ident_nospvar: '.' ident '.' ident */
+#line 15443 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys none;
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &none, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 47893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2492: /* simple_ident_nospvar: ident '.' ident '.' ident */
-#line 15248 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2509: /* simple_ident_nospvar: ident '.' ident '.' ident */
+#line 15449 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.item)= Lex->create_item_ident(thd, &(yyvsp[-4].ident_sys), &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys)))))
MYSQL_YYABORT;
}
-#line 47902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2493: /* field_ident: ident */
-#line 15255 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2510: /* field_ident: ident */
+#line 15456 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys);}
-#line 47908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2494: /* field_ident: ident '.' ident '.' ident */
-#line 15257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2511: /* field_ident: ident '.' ident '.' ident */
+#line 15458 "/home/buildbot/git/sql/sql_yacc.yy"
{
TABLE_LIST *table= Select->table_list.first;
if (unlikely(my_strcasecmp(table_alias_charset, (yyvsp[-4].ident_sys).str,
@@ -47919,11 +48127,11 @@ yyreduce:
my_yyabort_error((ER_WRONG_TABLE_NAME, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.lex_str)=(yyvsp[0].ident_sys);
}
-#line 47923 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48131 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2495: /* field_ident: ident '.' ident */
-#line 15268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2512: /* field_ident: ident '.' ident */
+#line 15469 "/home/buildbot/git/sql/sql_yacc.yy"
{
TABLE_LIST *table= Select->table_list.first;
if (unlikely(my_strcasecmp(table_alias_charset, (yyvsp[-2].ident_sys).str,
@@ -47931,217 +48139,217 @@ yyreduce:
my_yyabort_error((ER_WRONG_TABLE_NAME, MYF(0), (yyvsp[-2].ident_sys).str));
(yyval.lex_str)=(yyvsp[0].ident_sys);
}
-#line 47935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48143 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2496: /* field_ident: '.' ident */
-#line 15275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2513: /* field_ident: '.' ident */
+#line 15476 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys);}
-#line 47941 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2497: /* table_ident: ident */
-#line 15280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2514: /* table_ident: ident */
+#line 15481 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(&(yyvsp[0].ident_sys));
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 47951 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2498: /* table_ident: ident '.' ident */
-#line 15286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2515: /* table_ident: ident '.' ident */
+#line 15487 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(thd, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys), 0);
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 47961 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48169 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2499: /* table_ident: '.' ident */
-#line 15292 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2516: /* table_ident: '.' ident */
+#line 15493 "/home/buildbot/git/sql/sql_yacc.yy"
{
/* For Delphi */
(yyval.table)= new (thd->mem_root) Table_ident(&(yyvsp[0].ident_sys));
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 47972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48180 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2500: /* table_ident_opt_wild: ident opt_wild */
-#line 15302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2517: /* table_ident_opt_wild: ident opt_wild */
+#line 15503 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(&(yyvsp[-1].ident_sys));
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 47982 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48190 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2501: /* table_ident_opt_wild: ident '.' ident opt_wild */
-#line 15308 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2518: /* table_ident_opt_wild: ident '.' ident opt_wild */
+#line 15509 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.table)= new (thd->mem_root) Table_ident(thd, &(yyvsp[-3].ident_sys), &(yyvsp[-1].ident_sys), 0);
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 47992 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2502: /* table_ident_nodb: ident */
-#line 15317 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2519: /* table_ident_nodb: ident */
+#line 15518 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING db= any_db;
(yyval.table)= new (thd->mem_root) Table_ident(thd, &db, &(yyvsp[0].ident_sys), 0);
if (unlikely((yyval.table) == NULL))
MYSQL_YYABORT;
}
-#line 48003 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48211 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2507: /* ident_cli: keyword_ident */
-#line 15333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2524: /* ident_cli: keyword_ident */
+#line 15534 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48009 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48217 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2508: /* IDENT_sys: IDENT_cli */
-#line 15338 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2525: /* IDENT_sys: IDENT_cli */
+#line 15539 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(thd->to_ident_sys_alloc(&(yyval.ident_sys), &(yyvsp[0].ident_cli))))
MYSQL_YYABORT;
}
-#line 48018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2511: /* ident_cli_func: keyword_func_sp_var_and_label */
-#line 15347 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2528: /* ident_cli_func: keyword_func_sp_var_and_label */
+#line 15548 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48232 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2512: /* ident_cli_func: keyword_func_sp_var_not_label */
-#line 15348 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2529: /* ident_cli_func: keyword_func_sp_var_not_label */
+#line 15549 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48238 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2513: /* ident_func: ident_cli_func */
-#line 15353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2530: /* ident_func: ident_cli_func */
+#line 15554 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(thd->to_ident_sys_alloc(&(yyval.ident_sys), &(yyvsp[0].ident_cli))))
MYSQL_YYABORT;
}
-#line 48039 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2514: /* TEXT_STRING_sys: TEXT_STRING */
-#line 15362 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2531: /* TEXT_STRING_sys: TEXT_STRING */
+#line 15563 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (thd->make_text_string_sys(&(yyval.lex_str), &(yyvsp[0].lex_string_with_metadata)))
MYSQL_YYABORT;
}
-#line 48048 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48256 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2515: /* TEXT_STRING_literal: TEXT_STRING */
-#line 15370 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2532: /* TEXT_STRING_literal: TEXT_STRING */
+#line 15571 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (thd->make_text_string_connection(&(yyval.lex_str), &(yyvsp[0].lex_string_with_metadata)))
MYSQL_YYABORT;
}
-#line 48057 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2516: /* TEXT_STRING_filesystem: TEXT_STRING */
-#line 15378 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2533: /* TEXT_STRING_filesystem: TEXT_STRING */
+#line 15579 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (thd->make_text_string_filesystem(&(yyval.lex_str), &(yyvsp[0].lex_string_with_metadata)))
MYSQL_YYABORT;
}
-#line 48066 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48274 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2518: /* ident_table_alias: keyword_table_alias */
-#line 15387 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2535: /* ident_table_alias: keyword_table_alias */
+#line 15588 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48283 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2519: /* ident_cli_set_usual_case: IDENT_cli */
-#line 15394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2536: /* ident_cli_set_usual_case: IDENT_cli */
+#line 15595 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].ident_cli); }
-#line 48081 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2520: /* ident_cli_set_usual_case: keyword_set_usual_case */
-#line 15395 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2537: /* ident_cli_set_usual_case: keyword_set_usual_case */
+#line 15596 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 48087 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48295 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2522: /* ident_sysvar_name: keyword_sysvar_name */
-#line 15401 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2539: /* ident_sysvar_name: keyword_sysvar_name */
+#line 15602 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48304 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2523: /* ident_sysvar_name: TEXT_STRING_sys */
-#line 15406 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2540: /* ident_sysvar_name: TEXT_STRING_sys */
+#line 15607 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_sys(thd, &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 48105 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48313 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2525: /* ident: keyword_ident */
-#line 15416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2542: /* ident: keyword_ident */
+#line 15617 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48322 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2527: /* label_ident: keyword_label */
-#line 15425 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2544: /* label_ident: keyword_label */
+#line 15626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 48123 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2528: /* ident_or_text: ident */
-#line 15432 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2545: /* ident_or_text: ident */
+#line 15633 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].ident_sys);}
-#line 48129 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2529: /* ident_or_text: TEXT_STRING_sys */
-#line 15433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2546: /* ident_or_text: TEXT_STRING_sys */
+#line 15634 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str);}
-#line 48135 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2530: /* ident_or_text: LEX_HOSTNAME */
-#line 15434 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2547: /* ident_or_text: LEX_HOSTNAME */
+#line 15635 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)=(yyvsp[0].lex_str);}
-#line 48141 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2531: /* user_maybe_role: ident_or_text */
-#line 15439 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2548: /* user_maybe_role: ident_or_text */
+#line 15640 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
@@ -48152,11 +48360,11 @@ yyreduce:
system_charset_info, 0)))
MYSQL_YYABORT;
}
-#line 48156 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48364 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2532: /* user_maybe_role: ident_or_text '@' ident_or_text */
-#line 15450 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2549: /* user_maybe_role: ident_or_text '@' ident_or_text */
+#line 15651 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
@@ -48185,77 +48393,77 @@ yyreduce:
(yyval.lex_user)->host= host_not_specified;
}
}
-#line 48189 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48397 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2533: /* user_maybe_role: CURRENT_USER optional_braces */
-#line 15479 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2550: /* user_maybe_role: CURRENT_USER optional_braces */
+#line 15680 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*)thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
(yyval.lex_user)->user= current_user;
(yyval.lex_user)->auth= new (thd->mem_root) USER_AUTH();
}
-#line 48200 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48408 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 2536: /* user: user_maybe_role */
-#line 15490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 2553: /* user: user_maybe_role */
+#line 15691 "/home/buildbot/git/sql/sql_yacc.yy"
{
if ((yyvsp[0].lex_user)->user.str != current_user.str && (yyvsp[0].lex_user)->host.str == 0)
(yyvsp[0].lex_user)->host= host_not_specified;
(yyval.lex_user)= (yyvsp[0].lex_user);
}
-#line 48210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48418 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3262: /* $@220: %empty */
-#line 16359 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3280: /* $@222: %empty */
+#line 16561 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_stmt_init();
}
-#line 48219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48427 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3263: /* set: SET $@220 set_param */
-#line 16364 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3281: /* set: SET $@222 set_param */
+#line 16566 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 48228 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48436 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3266: /* $@221: %empty */
-#line 16374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3284: /* $@223: %empty */
+#line 16576 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_type= OPT_DEFAULT;
if (sp_create_assignment_lex(thd, (yyvsp[0].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48238 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3267: /* set_param: TRANSACTION_SYM $@221 transaction_characteristics */
-#line 16380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3285: /* set_param: TRANSACTION_SYM $@223 transaction_characteristics */
+#line 16582 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48455 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3268: /* $@222: %empty */
-#line 16385 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3286: /* $@224: %empty */
+#line 16587 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_type= (yyvsp[0].var_type);
}
-#line 48255 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48463 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3270: /* $@223: %empty */
-#line 16391 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3288: /* $@225: %empty */
+#line 16593 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->table_or_sp_used()))
@@ -48265,289 +48473,296 @@ yyreduce:
if (Lex->check_main_unit_semantics())
MYSQL_YYABORT;
}
-#line 48269 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48477 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3276: /* $@224: %empty */
-#line 16418 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3294: /* $@226: %empty */
+#line 16620 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[0].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48486 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3277: /* start_option_value_list_following_option_type: TRANSACTION_SYM $@224 transaction_characteristics */
-#line 16423 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3295: /* start_option_value_list_following_option_type: TRANSACTION_SYM $@226 transaction_characteristics */
+#line 16625 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48495 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3280: /* $@225: %empty */
-#line 16438 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3298: /* $@227: %empty */
+#line 16640 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->option_type= (yyvsp[0].var_type);
}
-#line 48295 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48503 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3283: /* option_type: GLOBAL_SYM */
-#line 16446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3301: /* option_type: GLOBAL_SYM */
+#line 16648 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_GLOBAL; }
-#line 48301 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48509 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3284: /* option_type: LOCAL_SYM */
-#line 16447 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3302: /* option_type: LOCAL_SYM */
+#line 16649 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48515 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3285: /* option_type: SESSION_SYM */
-#line 16448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3303: /* option_type: SESSION_SYM */
+#line 16650 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48313 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48521 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3286: /* opt_var_type: %empty */
-#line 16452 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3304: /* opt_var_type: %empty */
+#line 16654 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48319 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48527 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3287: /* opt_var_type: GLOBAL_SYM */
-#line 16453 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3305: /* opt_var_type: GLOBAL_SYM */
+#line 16655 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_GLOBAL; }
-#line 48325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48533 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3288: /* opt_var_type: LOCAL_SYM */
-#line 16454 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3306: /* opt_var_type: LOCAL_SYM */
+#line 16656 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48539 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3289: /* opt_var_type: SESSION_SYM */
-#line 16455 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3307: /* opt_var_type: SESSION_SYM */
+#line 16657 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48545 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3290: /* opt_var_ident_type: %empty */
-#line 16459 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3308: /* opt_var_ident_type: %empty */
+#line 16661 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_DEFAULT; }
-#line 48343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48551 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3291: /* opt_var_ident_type: GLOBAL_SYM '.' */
-#line 16460 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3309: /* opt_var_ident_type: GLOBAL_SYM '.' */
+#line 16662 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_GLOBAL; }
-#line 48349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48557 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3292: /* opt_var_ident_type: LOCAL_SYM '.' */
-#line 16461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3310: /* opt_var_ident_type: LOCAL_SYM '.' */
+#line 16663 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48355 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48563 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3293: /* opt_var_ident_type: SESSION_SYM '.' */
-#line 16462 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3311: /* opt_var_ident_type: SESSION_SYM '.' */
+#line 16664 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.var_type)=OPT_SESSION; }
-#line 48361 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48569 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3294: /* $@226: %empty */
-#line 16471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3312: /* $@228: %empty */
+#line 16673 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push(false))
MYSQL_YYABORT;
}
-#line 48370 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3295: /* set_stmt_option: ident_cli equal $@226 set_expr_or_default */
-#line 16476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3313: /* set_stmt_option: ident_cli equal $@228 set_expr_or_default */
+#line 16678 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(Lex->option_type, &tmp, (yyvsp[0].item))))
+ unlikely(Lex->set_system_variable(Lex->option_type, &tmp,
+ (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
-#line 48382 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3296: /* $@227: %empty */
-#line 16484 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3314: /* $@229: %empty */
+#line 16687 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push(false))
MYSQL_YYABORT;
}
-#line 48391 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48600 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3297: /* set_stmt_option: ident_cli '.' ident equal $@227 set_expr_or_default */
-#line 16489 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3315: /* set_stmt_option: ident_cli '.' ident equal $@229 set_expr_or_default */
+#line 16692 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
if (unlikely(!tmp.str) ||
unlikely(Lex->set_system_variable(thd, Lex->option_type,
- &tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))))
+ &tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
-#line 48404 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48613 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3298: /* $@228: %empty */
-#line 16498 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3316: /* $@230: %empty */
+#line 16701 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push(false))
MYSQL_YYABORT;
}
-#line 48413 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48622 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3299: /* set_stmt_option: DEFAULT '.' ident equal $@228 set_expr_or_default */
-#line 16503 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3317: /* set_stmt_option: DEFAULT '.' ident equal $@230 set_expr_or_default */
+#line 16706 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->set_default_system_variable(Lex->option_type,
- &(yyvsp[-3].ident_sys), (yyvsp[0].item))))
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
Lex->pop_select(); //min select
}
-#line 48424 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3300: /* $@229: %empty */
-#line 16515 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3318: /* $@231: %empty */
+#line 16718 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 48433 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3301: /* option_value_following_option_type: ident_cli equal $@229 set_expr_or_default */
-#line 16520 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3319: /* option_value_following_option_type: ident_cli equal $@231 set_expr_or_default */
+#line 16723 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(Lex->option_type, &tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_system_variable(Lex->option_type, &tmp,
+ (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48445 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48655 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3302: /* $@230: %empty */
-#line 16528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3320: /* $@232: %empty */
+#line 16732 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 48454 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3303: /* option_value_following_option_type: ident_cli '.' ident equal $@230 set_expr_or_default */
-#line 16533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3321: /* option_value_following_option_type: ident_cli '.' ident equal $@232 set_expr_or_default */
+#line 16737 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_system_variable(thd, Lex->option_type, &tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ unlikely(Lex->set_system_variable(thd, Lex->option_type, &tmp,
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48466 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48677 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3304: /* $@231: %empty */
-#line 16541 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3322: /* $@233: %empty */
+#line 16746 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48475 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48686 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3305: /* option_value_following_option_type: DEFAULT '.' ident equal $@231 set_expr_or_default */
-#line 16546 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3323: /* option_value_following_option_type: DEFAULT '.' ident equal $@233 set_expr_or_default */
+#line 16751 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_default_system_variable(Lex->option_type, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_default_system_variable(Lex->option_type,
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48485 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48697 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3306: /* $@232: %empty */
-#line 16556 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3324: /* $@234: %empty */
+#line 16762 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 48494 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48706 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3307: /* option_value_no_option_type: ident_cli_set_usual_case equal $@232 set_expr_or_default */
-#line 16561 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3325: /* option_value_no_option_type: ident_cli_set_usual_case equal $@234 set_expr_or_default */
+#line 16767 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48506 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48719 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3308: /* $@233: %empty */
-#line 16569 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3326: /* $@235: %empty */
+#line 16776 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 48515 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3309: /* option_value_no_option_type: ident_cli_set_usual_case '.' ident equal $@233 set_expr_or_default */
-#line 16574 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3327: /* option_value_no_option_type: ident_cli_set_usual_case '.' ident equal $@235 set_expr_or_default */
+#line 16781 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48527 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48741 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3310: /* $@234: %empty */
-#line 16582 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3328: /* $@236: %empty */
+#line 16790 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-3].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48536 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3311: /* option_value_no_option_type: DEFAULT '.' ident equal $@234 set_expr_or_default */
-#line 16587 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3329: /* option_value_no_option_type: DEFAULT '.' ident equal $@236 set_expr_or_default */
+#line 16795 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_default_system_variable(Lex->option_type, &(yyvsp[-3].ident_sys), (yyvsp[0].item))))
+ if (unlikely(Lex->set_default_system_variable(Lex->option_type,
+ &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)))
MYSQL_YYABORT;
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48547 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48762 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3312: /* $@235: %empty */
-#line 16594 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3330: /* $@237: %empty */
+#line 16803 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!(yyvsp[-1].lex_str).length)
{
@@ -48558,78 +48773,87 @@ yyreduce:
if (sp_create_assignment_lex(thd, (yyvsp[-2].lex_str).str))
MYSQL_YYABORT;
}
-#line 48562 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3313: /* option_value_no_option_type: '@' ident_or_text equal $@235 expr */
-#line 16605 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3331: /* option_value_no_option_type: '@' ident_or_text equal $@237 remember_cpp_ptr expr remember_end */
+#line 16814 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_user_variable(thd, &(yyvsp[-3].lex_str), (yyvsp[0].item))) ||
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+ if (unlikely(Lex->set_user_variable(thd, &(yyvsp[-5].lex_str), (yyvsp[-1].item))) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48572 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3314: /* $@236: %empty */
-#line 16611 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3332: /* $@238: %empty */
+#line 16828 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-4].lex_str).str))
MYSQL_YYABORT;
}
-#line 48581 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48804 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3315: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name equal $@236 set_expr_or_default */
-#line 16616 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3333: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name equal $@238 set_expr_or_default */
+#line 16833 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_system_variable((yyvsp[-4].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_system_variable((yyvsp[-4].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48814 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3316: /* $@237: %empty */
-#line 16622 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3334: /* $@239: %empty */
+#line 16839 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-6].lex_str).str))
MYSQL_YYABORT;
}
-#line 48600 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48823 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3317: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name '.' ident equal $@237 set_expr_or_default */
-#line 16627 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3335: /* option_value_no_option_type: '@' '@' opt_var_ident_type ident_sysvar_name '.' ident equal $@239 set_expr_or_default */
+#line 16844 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_system_variable(thd, (yyvsp[-6].var_type), &(yyvsp[-5].ident_sys), &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_system_variable(thd, (yyvsp[-6].var_type), &(yyvsp[-5].ident_sys), &(yyvsp[-3].ident_sys),
+ (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48610 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48834 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3318: /* $@238: %empty */
-#line 16633 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3336: /* $@240: %empty */
+#line 16851 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-6].lex_str).str))
MYSQL_YYABORT;
}
-#line 48619 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48843 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3319: /* option_value_no_option_type: '@' '@' opt_var_ident_type DEFAULT '.' ident equal $@238 set_expr_or_default */
-#line 16638 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3337: /* option_value_no_option_type: '@' '@' opt_var_ident_type DEFAULT '.' ident equal $@240 set_expr_or_default */
+#line 16856 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->set_default_system_variable((yyvsp[-6].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_default_system_variable((yyvsp[-6].var_type), &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48629 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3320: /* option_value_no_option_type: charset old_or_new_charset_name_or_default */
-#line 16644 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3338: /* option_value_no_option_type: charset old_or_new_charset_name_or_default */
+#line 16862 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
@@ -48647,11 +48871,11 @@ yyreduce:
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48651 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48875 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3321: /* option_value_no_option_type: NAMES_SYM equal expr */
-#line 16662 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3339: /* option_value_no_option_type: NAMES_SYM equal expr */
+#line 16880 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
sp_pcontext *spc= lex->spcont;
@@ -48662,34 +48886,39 @@ yyreduce:
thd->parse_error();
MYSQL_YYABORT;
}
-#line 48666 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48890 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3322: /* option_value_no_option_type: NAMES_SYM charset_name_or_default */
-#line 16673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3340: /* option_value_no_option_type: NAMES_SYM charset_name_or_default */
+#line 16891 "/home/buildbot/git/sql/sql_yacc.yy"
{
CHARSET_INFO *def= global_system_variables.character_set_client;
Lex_exact_charset_opt_extended_collate tmp((yyvsp[0].charset) ? (yyvsp[0].charset) : def, false);
- if (Lex->set_names((yyvsp[-1].kwd).pos(), tmp, yychar == YYEMPTY))
+ Lex_extended_collation_st cl;
+ cl.set_collate_default();
+ if (tmp.merge_collation(thd, thd->variables.
+ character_set_collations, cl) ||
+ Lex->set_names((yyvsp[-1].kwd).pos(), tmp, yychar == YYEMPTY))
MYSQL_YYABORT;
}
-#line 48677 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48905 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3323: /* option_value_no_option_type: NAMES_SYM charset_name_or_default COLLATE_SYM collation_name_or_default */
-#line 16681 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3341: /* option_value_no_option_type: NAMES_SYM charset_name_or_default COLLATE_SYM collation_name_or_default */
+#line 16903 "/home/buildbot/git/sql/sql_yacc.yy"
{
CHARSET_INFO *def= global_system_variables.character_set_client;
Lex_exact_charset_opt_extended_collate tmp((yyvsp[-2].charset) ? (yyvsp[-2].charset) : def, false);
- if (tmp.merge_collation((yyvsp[0].Lex_extended_collation)) ||
+ if (tmp.merge_collation(thd, thd->variables.
+ character_set_collations, (yyvsp[0].Lex_extended_collation)) ||
Lex->set_names((yyvsp[-3].kwd).pos(), tmp, yychar == YYEMPTY))
MYSQL_YYABORT;
}
-#line 48689 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48918 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3324: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role */
-#line 16689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3342: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role */
+#line 16912 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-2].kwd).pos()))
MYSQL_YYABORT;
@@ -48711,11 +48940,11 @@ yyreduce:
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48715 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3325: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role FOR_SYM user */
-#line 16711 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3343: /* option_value_no_option_type: DEFAULT ROLE_SYM grant_role FOR_SYM user */
+#line 16934 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-4].kwd).pos()))
MYSQL_YYABORT;
@@ -48731,11 +48960,11 @@ yyreduce:
if (unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3326: /* option_value_no_option_type: ROLE_SYM role_name */
-#line 16727 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3344: /* option_value_no_option_type: ROLE_SYM role_name */
+#line 16950 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
@@ -48746,70 +48975,71 @@ yyreduce:
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48750 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48979 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3327: /* $@239: %empty */
-#line 16738 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3345: /* $@241: %empty */
+#line 16961 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 48988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3328: /* option_value_no_option_type: ROLE_SYM equal $@239 set_expr_or_default */
-#line 16743 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3346: /* option_value_no_option_type: ROLE_SYM equal $@241 set_expr_or_default */
+#line 16966 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].kwd));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48771 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49001 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3329: /* $@240: %empty */
-#line 16751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3347: /* $@242: %empty */
+#line 16975 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48780 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49010 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3330: /* option_value_no_option_type: PASSWORD_SYM equal $@240 text_or_password */
-#line 16756 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3348: /* option_value_no_option_type: PASSWORD_SYM equal $@242 text_or_password */
+#line 16980 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_create_set_password_instr(thd, (yyvsp[0].user_auth),
yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48790 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49020 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3331: /* $@241: %empty */
-#line 16762 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3349: /* $@243: %empty */
+#line 16986 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (sp_create_assignment_lex(thd, (yyvsp[-1].kwd).pos()))
MYSQL_YYABORT;
}
-#line 48799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49029 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3332: /* option_value_no_option_type: PASSWORD_SYM FOR_SYM $@241 user equal text_or_password */
-#line 16767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3350: /* option_value_no_option_type: PASSWORD_SYM FOR_SYM $@243 user equal text_or_password */
+#line 16991 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_create_set_password_instr(thd, (yyvsp[-2].lex_user), (yyvsp[0].user_auth),
yychar == YYEMPTY)))
MYSQL_YYABORT;
}
-#line 48809 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49039 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3337: /* transaction_access_mode: transaction_access_mode_types */
-#line 16783 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3355: /* transaction_access_mode: transaction_access_mode_types */
+#line 17007 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Item *item= new (thd->mem_root) Item_int(thd, (int32) (yyvsp[0].num));
@@ -48817,7 +49047,7 @@ yyreduce:
MYSQL_YYABORT;
set_var *var= (new (thd->mem_root)
set_var(thd, lex->option_type,
- find_sys_var(thd, "tx_read_only"),
+ find_sys_var(thd, "transaction_read_only"),
&null_clex_str,
item));
if (unlikely(var == NULL))
@@ -48825,11 +49055,11 @@ yyreduce:
if (unlikely(lex->var_list.push_back(var, thd->mem_root)))
MYSQL_YYABORT;
}
-#line 48829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49059 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3338: /* isolation_level: ISOLATION LEVEL_SYM isolation_types */
-#line 16802 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3356: /* isolation_level: ISOLATION LEVEL_SYM isolation_types */
+#line 17026 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
Item *item= new (thd->mem_root) Item_int(thd, (int32) (yyvsp[0].tx_isolation));
@@ -48837,72 +49067,72 @@ yyreduce:
MYSQL_YYABORT;
set_var *var= (new (thd->mem_root)
set_var(thd, lex->option_type,
- find_sys_var(thd, "tx_isolation"),
+ find_sys_var(thd, "transaction_isolation"),
&null_clex_str,
item));
if (unlikely(var == NULL) ||
unlikely(lex->var_list.push_back(var, thd->mem_root)))
MYSQL_YYABORT;
}
-#line 48848 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49078 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3339: /* transaction_access_mode_types: READ_SYM ONLY_SYM */
-#line 16819 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3357: /* transaction_access_mode_types: READ_SYM ONLY_SYM */
+#line 17043 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= true; }
-#line 48854 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3340: /* transaction_access_mode_types: READ_SYM WRITE_SYM */
-#line 16820 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3358: /* transaction_access_mode_types: READ_SYM WRITE_SYM */
+#line 17044 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 48860 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49090 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3341: /* isolation_types: READ_SYM UNCOMMITTED_SYM */
-#line 16824 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3359: /* isolation_types: READ_SYM UNCOMMITTED_SYM */
+#line 17048 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_READ_UNCOMMITTED; }
-#line 48866 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3342: /* isolation_types: READ_SYM COMMITTED_SYM */
-#line 16825 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3360: /* isolation_types: READ_SYM COMMITTED_SYM */
+#line 17049 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_READ_COMMITTED; }
-#line 48872 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49102 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3343: /* isolation_types: REPEATABLE_SYM READ_SYM */
-#line 16826 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3361: /* isolation_types: REPEATABLE_SYM READ_SYM */
+#line 17050 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_REPEATABLE_READ; }
-#line 48878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49108 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3344: /* isolation_types: SERIALIZABLE_SYM */
-#line 16827 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3362: /* isolation_types: SERIALIZABLE_SYM */
+#line 17051 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.tx_isolation)= ISO_SERIALIZABLE; }
-#line 48884 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49114 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3345: /* text_or_password: TEXT_STRING */
-#line 16833 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3363: /* text_or_password: TEXT_STRING */
+#line 17057 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= new (thd->mem_root) USER_AUTH();
(yyval.user_auth)->auth_str= (yyvsp[0].lex_string_with_metadata);
}
-#line 48893 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49123 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3346: /* text_or_password: PASSWORD_SYM '(' TEXT_STRING ')' */
-#line 16838 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3364: /* text_or_password: PASSWORD_SYM '(' TEXT_STRING ')' */
+#line 17062 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= new (thd->mem_root) USER_AUTH();
(yyval.user_auth)->pwtext= (yyvsp[-1].lex_string_with_metadata);
}
-#line 48902 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49132 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3347: /* text_or_password: OLD_PASSWORD_SYM '(' TEXT_STRING ')' */
-#line 16843 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3365: /* text_or_password: OLD_PASSWORD_SYM '(' TEXT_STRING ')' */
+#line 17067 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= new (thd->mem_root) USER_AUTH();
(yyval.user_auth)->pwtext= (yyvsp[-1].lex_string_with_metadata);
@@ -48910,53 +49140,64 @@ yyreduce:
(yyvsp[-1].lex_string_with_metadata).str, (yyvsp[-1].lex_string_with_metadata).length, Item_func_password::OLD);
(yyval.user_auth)->auth_str.length= SCRAMBLED_PASSWORD_CHAR_LENGTH_323;
}
-#line 48914 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49144 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3348: /* set_expr_or_default: expr */
-#line 16853 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item)=(yyvsp[0].item); }
-#line 48920 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
+ case 3366: /* set_expr_or_default: remember_cpp_ptr expr remember_end */
+#line 17078 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ LEX_CSTRING expr_str= empty_clex_str;
- case 3349: /* set_expr_or_default: DEFAULT */
-#line 16854 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item)=0; }
-#line 48926 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
- case 3350: /* set_expr_or_default: ON */
-#line 16856 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "ON", 2);
- if (unlikely((yyval.item) == NULL))
- MYSQL_YYABORT;
+ (yyval.expr_and_query_str)= { (yyvsp[-1].item), expr_str };
}
-#line 48936 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49161 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3351: /* set_expr_or_default: ALL */
-#line 16862 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3367: /* set_expr_or_default: remember_cpp_ptr set_expr_misc remember_end */
+#line 17091 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "ALL", 3);
- if (unlikely((yyval.item) == NULL))
+ if (unlikely((yyvsp[-1].item) == nullptr))
MYSQL_YYABORT;
+ (yyval.expr_and_query_str)= {(yyvsp[-1].item), empty_clex_str};
}
-#line 48946 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49171 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3352: /* set_expr_or_default: BINARY */
-#line 16868 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3368: /* set_expr_or_default: remember_cpp_ptr DEFAULT remember_end */
+#line 17097 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "binary", 6);
- if (unlikely((yyval.item) == NULL))
- MYSQL_YYABORT;
+ (yyval.expr_and_query_str)= { nullptr, empty_clex_str };
}
-#line 48956 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3353: /* $@242: %empty */
-#line 16879 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3369: /* set_expr_misc: ON */
+#line 17103 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.item)= new (thd->mem_root) Item_string_sys(thd, "ON", 2); }
+#line 49185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3370: /* set_expr_misc: ALL */
+#line 17104 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.item)= new (thd->mem_root) Item_string_sys(thd, "ALL", 3); }
+#line 49191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3371: /* set_expr_misc: BINARY */
+#line 17105 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.item)= new (thd->mem_root) Item_string_sys(thd, "binary", 6); }
+#line 49197 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3372: /* $@244: %empty */
+#line 17112 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
@@ -48964,55 +49205,55 @@ yyreduce:
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "LOCK"));
lex->sql_command= SQLCOM_LOCK_TABLES;
}
-#line 48968 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3354: /* lock: LOCK_SYM table_or_tables $@242 table_lock_list opt_lock_wait_timeout */
-#line 16887 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3373: /* lock: LOCK_SYM table_or_tables $@244 table_lock_list opt_lock_wait_timeout */
+#line 17120 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 48974 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3355: /* opt_lock_wait_timeout: %empty */
-#line 16892 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3374: /* opt_lock_wait_timeout: %empty */
+#line 17125 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 48980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49221 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3356: /* opt_lock_wait_timeout: WAIT_SYM ulong_num */
-#line 16894 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3375: /* opt_lock_wait_timeout: WAIT_SYM ulong_num */
+#line 17127 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("lock_wait_timeout"), (yyvsp[0].ulong_num))) ||
unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("innodb_lock_wait_timeout"), (yyvsp[0].ulong_num))))
MYSQL_YYABORT;
}
-#line 48990 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49231 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3357: /* opt_lock_wait_timeout: NOWAIT_SYM */
-#line 16900 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3376: /* opt_lock_wait_timeout: NOWAIT_SYM */
+#line 17133 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("lock_wait_timeout"), 0)) ||
unlikely(set_statement_var_if_exists(thd, STRING_WITH_LEN("innodb_lock_wait_timeout"), 0)))
MYSQL_YYABORT;
}
-#line 49000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49241 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3358: /* table_or_tables: TABLE_SYM */
-#line 16908 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3377: /* table_or_tables: TABLE_SYM */
+#line 17141 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 49006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49247 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3359: /* table_or_tables: TABLES */
-#line 16909 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3378: /* table_or_tables: TABLES */
+#line 17142 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 49012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49253 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3362: /* table_lock: table_ident opt_table_alias_clause lock_option */
-#line 16919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3381: /* table_lock: table_ident opt_table_alias_clause lock_option */
+#line 17152 "/home/buildbot/git/sql/sql_yacc.yy"
{
thr_lock_type lock_type= (thr_lock_type) (yyvsp[0].num);
bool lock_for_write= (lock_type >= TL_FIRST_WRITE);
@@ -49028,43 +49269,43 @@ yyreduce:
lock_type, mdl_type)))
MYSQL_YYABORT;
}
-#line 49032 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3363: /* lock_option: READ_SYM */
-#line 16937 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3382: /* lock_option: READ_SYM */
+#line 17170 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_READ_NO_INSERT; }
-#line 49038 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3364: /* lock_option: WRITE_SYM */
-#line 16938 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3383: /* lock_option: WRITE_SYM */
+#line 17171 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_WRITE_DEFAULT; }
-#line 49044 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49285 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3365: /* lock_option: WRITE_SYM CONCURRENT */
-#line 16940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3384: /* lock_option: WRITE_SYM CONCURRENT */
+#line 17173 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.num)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT);
}
-#line 49052 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49293 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3366: /* lock_option: LOW_PRIORITY WRITE_SYM */
-#line 16944 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3385: /* lock_option: LOW_PRIORITY WRITE_SYM */
+#line 17177 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_WRITE_LOW_PRIORITY; }
-#line 49058 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49299 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3367: /* lock_option: READ_SYM LOCAL_SYM */
-#line 16945 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3386: /* lock_option: READ_SYM LOCAL_SYM */
+#line 17178 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= TL_READ; }
-#line 49064 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49305 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3368: /* $@243: %empty */
-#line 16950 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3387: /* $@245: %empty */
+#line 17183 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
@@ -49072,34 +49313,34 @@ yyreduce:
my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "UNLOCK"));
lex->sql_command= SQLCOM_UNLOCK_TABLES;
}
-#line 49076 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49317 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3369: /* unlock: UNLOCK_SYM $@243 table_or_tables */
-#line 16958 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3388: /* unlock: UNLOCK_SYM $@245 table_or_tables */
+#line 17191 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49323 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3370: /* $@244: %empty */
-#line 16967 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3389: /* $@246: %empty */
+#line 17200 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->main_select_push())
MYSQL_YYABORT;
}
-#line 49091 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3371: /* handler: HANDLER_SYM $@244 handler_tail */
-#line 16972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3390: /* handler: HANDLER_SYM $@246 handler_tail */
+#line 17205 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->pop_select(); //main select
}
-#line 49099 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49340 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3372: /* handler_tail: table_ident OPEN_SYM opt_table_alias_clause */
-#line 16979 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3391: /* handler_tail: table_ident OPEN_SYM opt_table_alias_clause */
+#line 17212 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->sphead))
@@ -49108,11 +49349,11 @@ yyreduce:
if (!lex->current_select->add_table_to_list(thd, (yyvsp[-2].table), (yyvsp[0].lex_str_ptr), 0))
MYSQL_YYABORT;
}
-#line 49112 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49353 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3373: /* handler_tail: table_ident_nodb CLOSE_SYM */
-#line 16988 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3392: /* handler_tail: table_ident_nodb CLOSE_SYM */
+#line 17221 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(lex->sphead))
@@ -49121,11 +49362,11 @@ yyreduce:
if (!lex->current_select->add_table_to_list(thd, (yyvsp[-1].table), 0, 0))
MYSQL_YYABORT;
}
-#line 49125 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3374: /* $@245: %empty */
-#line 16997 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3393: /* $@247: %empty */
+#line 17230 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
SELECT_LEX *select= Select;
@@ -49143,11 +49384,11 @@ yyreduce:
if (!lex->current_select->add_table_to_list(thd, (yyvsp[-1].table), 0, 0))
MYSQL_YYABORT;
}
-#line 49147 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49388 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3375: /* handler_tail: table_ident_nodb READ_SYM $@245 handler_read_or_scan opt_where_clause opt_global_limit_clause */
-#line 17015 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3394: /* handler_tail: table_ident_nodb READ_SYM $@247 handler_read_or_scan opt_where_clause opt_global_limit_clause */
+#line 17248 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
SELECT_LEX *select= Select;
@@ -49169,59 +49410,59 @@ yyreduce:
MYSQL_YYABORT;
}
}
-#line 49173 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49414 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3376: /* handler_read_or_scan: handler_scan_function */
-#line 17039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3395: /* handler_read_or_scan: handler_scan_function */
+#line 17272 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ident= null_clex_str; }
-#line 49179 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49420 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3377: /* handler_read_or_scan: ident handler_rkey_function */
-#line 17040 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3396: /* handler_read_or_scan: ident handler_rkey_function */
+#line 17273 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ident= (yyvsp[-1].ident_sys); }
-#line 49185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49426 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3378: /* handler_scan_function: FIRST_SYM */
-#line 17044 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3397: /* handler_scan_function: FIRST_SYM */
+#line 17277 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RFIRST; }
-#line 49191 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3379: /* handler_scan_function: NEXT_SYM */
-#line 17045 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3398: /* handler_scan_function: NEXT_SYM */
+#line 17278 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RNEXT; }
-#line 49197 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49438 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3380: /* handler_rkey_function: FIRST_SYM */
-#line 17049 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3399: /* handler_rkey_function: FIRST_SYM */
+#line 17282 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RFIRST; }
-#line 49203 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49444 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3381: /* handler_rkey_function: NEXT_SYM */
-#line 17050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3400: /* handler_rkey_function: NEXT_SYM */
+#line 17283 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RNEXT; }
-#line 49209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49450 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3382: /* handler_rkey_function: PREV_SYM */
-#line 17051 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3401: /* handler_rkey_function: PREV_SYM */
+#line 17284 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RPREV; }
-#line 49215 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49456 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3383: /* handler_rkey_function: LAST_SYM */
-#line 17052 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3402: /* handler_rkey_function: LAST_SYM */
+#line 17285 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->ha_read_mode = RLAST; }
-#line 49221 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49462 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3384: /* $@246: %empty */
-#line 17054 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3403: /* $@248: %empty */
+#line 17287 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->ha_read_mode = RKEY;
@@ -49229,143 +49470,143 @@ yyreduce:
if (unlikely(!(lex->insert_list= new (thd->mem_root) List_item)))
MYSQL_YYABORT;
}
-#line 49233 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49474 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3385: /* handler_rkey_function: handler_rkey_mode $@246 '(' values ')' */
-#line 17062 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3404: /* handler_rkey_function: handler_rkey_mode $@248 '(' values ')' */
+#line 17295 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49239 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49480 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3386: /* handler_rkey_mode: '=' */
-#line 17066 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3405: /* handler_rkey_mode: '=' */
+#line 17299 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_KEY_EXACT; }
-#line 49245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49486 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3387: /* handler_rkey_mode: GE */
-#line 17067 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3406: /* handler_rkey_mode: GE */
+#line 17300 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_KEY_OR_NEXT; }
-#line 49251 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49492 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3388: /* handler_rkey_mode: LE */
-#line 17068 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3407: /* handler_rkey_mode: LE */
+#line 17301 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_KEY_OR_PREV; }
-#line 49257 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49498 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3389: /* handler_rkey_mode: '>' */
-#line 17069 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3408: /* handler_rkey_mode: '>' */
+#line 17302 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_AFTER_KEY; }
-#line 49263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49504 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3390: /* handler_rkey_mode: '<' */
-#line 17070 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3409: /* handler_rkey_mode: '<' */
+#line 17303 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ha_rkey_mode)=HA_READ_BEFORE_KEY; }
-#line 49269 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49510 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3391: /* revoke: REVOKE clear_privileges revoke_command */
-#line 17077 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3410: /* revoke: REVOKE clear_privileges revoke_command */
+#line 17310 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49275 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49516 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3392: /* revoke_command: grant_privileges ON opt_table grant_ident FROM user_and_role_list */
-#line 17082 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3411: /* revoke_command: grant_privileges ON opt_table grant_ident FROM user_and_role_list */
+#line 17315 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_revoke_table(thd, (yyvsp[-5].lex_grant), *(yyvsp[-2].lex_grant_ident)))
MYSQL_YYABORT;
}
-#line 49284 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49525 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3393: /* revoke_command: grant_privileges ON sp_handler grant_ident FROM user_and_role_list */
-#line 17087 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3412: /* revoke_command: grant_privileges ON sp_handler grant_ident FROM user_and_role_list */
+#line 17320 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_revoke_sp(thd, (yyvsp[-5].lex_grant), *(yyvsp[-2].lex_grant_ident), *(yyvsp[-3].sp_handler)))
MYSQL_YYABORT;
}
-#line 49293 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3394: /* revoke_command: ALL opt_privileges ',' GRANT OPTION FROM user_and_role_list */
-#line 17092 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3413: /* revoke_command: ALL opt_privileges ',' GRANT OPTION FROM user_and_role_list */
+#line 17325 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_REVOKE_ALL;
}
-#line 49301 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49542 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3395: /* revoke_command: PROXY_SYM ON user FROM user_list */
-#line 17096 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3414: /* revoke_command: PROXY_SYM ON user FROM user_list */
+#line 17329 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_revoke_proxy(thd, (yyvsp[-2].lex_user)))
MYSQL_YYABORT;
}
-#line 49310 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49551 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3396: /* revoke_command: admin_option_for_role FROM user_and_role_list */
-#line 17101 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3415: /* revoke_command: admin_option_for_role FROM user_and_role_list */
+#line 17334 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_REVOKE_ROLE;
if (unlikely(Lex->users_list.push_front((yyvsp[-2].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49320 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3397: /* admin_option_for_role: ADMIN_SYM OPTION FOR_SYM grant_role */
-#line 17110 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3416: /* admin_option_for_role: ADMIN_SYM OPTION FOR_SYM grant_role */
+#line 17343 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= true; (yyval.lex_user)= (yyvsp[0].lex_user); }
-#line 49326 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49567 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3398: /* admin_option_for_role: grant_role */
-#line 17112 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3417: /* admin_option_for_role: grant_role */
+#line 17345 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= false; (yyval.lex_user)= (yyvsp[0].lex_user); }
-#line 49332 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49573 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3399: /* grant: GRANT clear_privileges grant_command */
-#line 17117 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3418: /* grant: GRANT clear_privileges grant_command */
+#line 17350 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49338 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49579 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3400: /* grant_command: grant_privileges ON opt_table grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
-#line 17123 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3419: /* grant_command: grant_privileges ON opt_table grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
+#line 17356 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_grant_table(thd, (yyvsp[-7].lex_grant), *(yyvsp[-4].lex_grant_ident), (yyvsp[0].privilege)))
MYSQL_YYABORT;
}
-#line 49347 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49588 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3401: /* grant_command: grant_privileges ON sp_handler grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
-#line 17129 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3420: /* grant_command: grant_privileges ON sp_handler grant_ident TO_SYM grant_list opt_require_clause opt_grant_options */
+#line 17362 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_grant_sp(thd, (yyvsp[-7].lex_grant), *(yyvsp[-4].lex_grant_ident), *(yyvsp[-5].sp_handler), (yyvsp[0].privilege)))
MYSQL_YYABORT;
}
-#line 49356 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3402: /* grant_command: PROXY_SYM ON user TO_SYM grant_list opt_grant_option */
-#line 17134 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3421: /* grant_command: PROXY_SYM ON user TO_SYM grant_list opt_grant_option */
+#line 17367 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_grant_proxy(thd, (yyvsp[-3].lex_user), (yyvsp[0].privilege)))
MYSQL_YYABORT;
}
-#line 49365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3403: /* grant_command: grant_role TO_SYM grant_list opt_with_admin_option */
-#line 17139 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3422: /* grant_command: grant_role TO_SYM grant_list opt_with_admin_option */
+#line 17372 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->sql_command= SQLCOM_GRANT_ROLE;
@@ -49373,63 +49614,63 @@ yyreduce:
if (unlikely(Lex->users_list.push_front((yyvsp[-3].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49618 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3404: /* opt_with_admin: %empty */
-#line 17150 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3423: /* opt_with_admin: %empty */
+#line 17383 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->definer = 0; }
-#line 49383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3405: /* opt_with_admin: WITH ADMIN_SYM user_or_role */
-#line 17151 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3424: /* opt_with_admin: WITH ADMIN_SYM user_or_role */
+#line 17384 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->definer = (yyvsp[0].lex_user); }
-#line 49389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3406: /* opt_with_admin_option: %empty */
-#line 17155 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3425: /* opt_with_admin_option: %empty */
+#line 17388 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= false; }
-#line 49395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3407: /* opt_with_admin_option: WITH ADMIN_SYM OPTION */
-#line 17156 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3426: /* opt_with_admin_option: WITH ADMIN_SYM OPTION */
+#line 17389 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->with_admin_option= true; }
-#line 49401 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3408: /* role_list: grant_role */
-#line 17161 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3427: /* role_list: grant_role */
+#line 17394 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49410 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49651 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3409: /* role_list: role_list ',' grant_role */
-#line 17166 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3428: /* role_list: role_list ',' grant_role */
+#line 17399 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49419 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3410: /* current_role: CURRENT_ROLE optional_braces */
-#line 17174 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3429: /* current_role: CURRENT_ROLE optional_braces */
+#line 17407 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))))
MYSQL_YYABORT;
(yyval.lex_user)->user= current_role;
}
-#line 49429 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49670 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3411: /* role_name: ident_or_text */
-#line 17183 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3430: /* role_name: ident_or_text */
+#line 17416 "/home/buildbot/git/sql/sql_yacc.yy"
{
CHARSET_INFO *cs= system_charset_info;
/* trim end spaces (as they'll be lost in mysql.user anyway) */
@@ -49448,387 +49689,393 @@ yyreduce:
MYSQL_YYABORT;
(yyval.lex_user)->host= empty_clex_str;
}
-#line 49452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3417: /* grant_privileges: ALL opt_privileges */
-#line 17213 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3436: /* grant_privileges: ALL opt_privileges */
+#line 17446 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant)= new (thd->mem_root) Lex_grant_privilege(GLOBAL_ACLS, true)))
MYSQL_YYABORT;
}
-#line 49461 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3420: /* object_privilege_list: object_privilege */
-#line 17226 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3439: /* object_privilege_list: object_privilege */
+#line 17459 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant)= new (thd->mem_root) Lex_grant_privilege((yyvsp[0].privilege))))
MYSQL_YYABORT;
}
-#line 49470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49711 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3421: /* object_privilege_list: column_list_privilege */
-#line 17231 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3440: /* object_privilege_list: column_list_privilege */
+#line 17464 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant)= new (thd->mem_root) Lex_grant_privilege()) ||
(yyval.lex_grant)->add_column_list_privilege(thd, (yyvsp[0].column_list_privilege).m_columns[0],
(yyvsp[0].column_list_privilege).m_privilege))
MYSQL_YYABORT;
}
-#line 49481 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3422: /* object_privilege_list: object_privilege_list ',' object_privilege */
-#line 17238 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3441: /* object_privilege_list: object_privilege_list ',' object_privilege */
+#line 17471 "/home/buildbot/git/sql/sql_yacc.yy"
{
((yyval.lex_grant)= (yyvsp[-2].lex_grant))->add_object_privilege((yyvsp[0].privilege));
}
-#line 49489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49730 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3423: /* object_privilege_list: object_privilege_list ',' column_list_privilege */
-#line 17242 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3442: /* object_privilege_list: object_privilege_list ',' column_list_privilege */
+#line 17475 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (((yyval.lex_grant)= (yyvsp[-2].lex_grant))->add_column_list_privilege(thd, (yyvsp[0].column_list_privilege).m_columns[0],
(yyvsp[0].column_list_privilege).m_privilege))
MYSQL_YYABORT;
}
-#line 49499 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49740 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3424: /* column_list_privilege: column_privilege '(' comma_separated_ident_list ')' */
-#line 17251 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3443: /* column_list_privilege: column_privilege '(' comma_separated_ident_list ')' */
+#line 17484 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.column_list_privilege)= Lex_column_list_privilege((yyvsp[-1].ident_sys_list), (yyvsp[-3].privilege));
}
-#line 49507 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3425: /* column_privilege: SELECT_SYM */
-#line 17257 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3444: /* column_privilege: SELECT_SYM */
+#line 17490 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SELECT_ACL; }
-#line 49513 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49754 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3426: /* column_privilege: INSERT */
-#line 17258 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3445: /* column_privilege: INSERT */
+#line 17491 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= INSERT_ACL; }
-#line 49519 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3427: /* column_privilege: UPDATE_SYM */
-#line 17259 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3446: /* column_privilege: UPDATE_SYM */
+#line 17492 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= UPDATE_ACL; }
-#line 49525 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3428: /* column_privilege: REFERENCES */
-#line 17260 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3447: /* column_privilege: REFERENCES */
+#line 17493 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REFERENCES_ACL; }
-#line 49531 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49772 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3429: /* object_privilege: SELECT_SYM */
-#line 17264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3448: /* object_privilege: SELECT_SYM */
+#line 17497 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SELECT_ACL; }
-#line 49537 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49778 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3430: /* object_privilege: INSERT */
-#line 17265 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3449: /* object_privilege: INSERT */
+#line 17498 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= INSERT_ACL; }
-#line 49543 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49784 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3431: /* object_privilege: UPDATE_SYM */
-#line 17266 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3450: /* object_privilege: UPDATE_SYM */
+#line 17499 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= UPDATE_ACL; }
-#line 49549 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49790 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3432: /* object_privilege: REFERENCES */
-#line 17267 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3451: /* object_privilege: REFERENCES */
+#line 17500 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REFERENCES_ACL; }
-#line 49555 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49796 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3433: /* object_privilege: DELETE_SYM */
-#line 17268 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3452: /* object_privilege: DELETE_SYM */
+#line 17501 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= DELETE_ACL;}
-#line 49561 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49802 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3434: /* object_privilege: USAGE */
-#line 17269 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3453: /* object_privilege: USAGE */
+#line 17502 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 49567 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49808 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3435: /* object_privilege: INDEX_SYM */
-#line 17270 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3454: /* object_privilege: INDEX_SYM */
+#line 17503 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= INDEX_ACL;}
-#line 49573 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49814 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3436: /* object_privilege: ALTER */
-#line 17271 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3455: /* object_privilege: ALTER */
+#line 17504 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= ALTER_ACL;}
-#line 49579 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49820 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3437: /* object_privilege: CREATE */
-#line 17272 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3456: /* object_privilege: CREATE */
+#line 17505 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_ACL;}
-#line 49585 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49826 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3438: /* object_privilege: DROP */
-#line 17273 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3457: /* object_privilege: DROP */
+#line 17506 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= DROP_ACL;}
-#line 49591 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49832 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3439: /* object_privilege: EXECUTE_SYM */
-#line 17274 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3458: /* object_privilege: EXECUTE_SYM */
+#line 17507 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= EXECUTE_ACL;}
-#line 49597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49838 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3440: /* object_privilege: RELOAD */
-#line 17275 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3459: /* object_privilege: RELOAD */
+#line 17508 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= RELOAD_ACL;}
-#line 49603 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49844 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3441: /* object_privilege: SHUTDOWN */
-#line 17276 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3460: /* object_privilege: SHUTDOWN */
+#line 17509 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SHUTDOWN_ACL;}
-#line 49609 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49850 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3442: /* object_privilege: PROCESS */
-#line 17277 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3461: /* object_privilege: PROCESS */
+#line 17510 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= PROCESS_ACL;}
-#line 49615 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49856 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3443: /* object_privilege: FILE_SYM */
-#line 17278 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3462: /* object_privilege: FILE_SYM */
+#line 17511 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= FILE_ACL;}
-#line 49621 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3444: /* object_privilege: GRANT OPTION */
-#line 17279 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3463: /* object_privilege: GRANT OPTION */
+#line 17512 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= GRANT_ACL;}
-#line 49627 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49868 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3445: /* object_privilege: SHOW DATABASES */
-#line 17280 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3464: /* object_privilege: SHOW DATABASES */
+#line 17513 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SHOW_DB_ACL;}
-#line 49633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49874 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3446: /* object_privilege: SUPER_SYM */
-#line 17281 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3465: /* object_privilege: SUPER_SYM */
+#line 17514 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SUPER_ACL;}
-#line 49639 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49880 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3447: /* object_privilege: CREATE TEMPORARY TABLES */
-#line 17282 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3466: /* object_privilege: CREATE TEMPORARY TABLES */
+#line 17515 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_TMP_ACL;}
-#line 49645 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3448: /* object_privilege: LOCK_SYM TABLES */
-#line 17283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3467: /* object_privilege: LOCK_SYM TABLES */
+#line 17516 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= LOCK_TABLES_ACL; }
-#line 49651 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49892 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3449: /* object_privilege: REPLICATION SLAVE */
-#line 17284 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3468: /* object_privilege: REPLICATION SLAVE */
+#line 17517 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REPL_SLAVE_ACL; }
-#line 49657 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49898 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3450: /* object_privilege: REPLICATION CLIENT_SYM */
-#line 17285 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3469: /* object_privilege: REPLICATION CLIENT_SYM */
+#line 17518 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_MONITOR_ACL; /*Compatibility*/ }
-#line 49663 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49904 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3451: /* object_privilege: CREATE VIEW_SYM */
-#line 17286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3470: /* object_privilege: CREATE VIEW_SYM */
+#line 17519 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_VIEW_ACL; }
-#line 49669 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49910 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3452: /* object_privilege: SHOW VIEW_SYM */
-#line 17287 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3471: /* object_privilege: SHOW VIEW_SYM */
+#line 17520 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SHOW_VIEW_ACL; }
-#line 49675 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49916 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3453: /* object_privilege: CREATE ROUTINE_SYM */
-#line 17288 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3472: /* object_privilege: CREATE ROUTINE_SYM */
+#line 17521 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_PROC_ACL; }
-#line 49681 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49922 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3454: /* object_privilege: ALTER ROUTINE_SYM */
-#line 17289 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3473: /* object_privilege: ALTER ROUTINE_SYM */
+#line 17522 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= ALTER_PROC_ACL; }
-#line 49687 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49928 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3455: /* object_privilege: CREATE USER_SYM */
-#line 17290 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3474: /* object_privilege: CREATE USER_SYM */
+#line 17523 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_USER_ACL; }
-#line 49693 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49934 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3456: /* object_privilege: EVENT_SYM */
-#line 17291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3475: /* object_privilege: EVENT_SYM */
+#line 17524 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= EVENT_ACL;}
-#line 49699 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49940 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3457: /* object_privilege: TRIGGER_SYM */
-#line 17292 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3476: /* object_privilege: TRIGGER_SYM */
+#line 17525 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= TRIGGER_ACL; }
-#line 49705 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49946 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3458: /* object_privilege: CREATE TABLESPACE */
-#line 17293 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3477: /* object_privilege: CREATE TABLESPACE */
+#line 17526 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CREATE_TABLESPACE_ACL; }
-#line 49711 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49952 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3459: /* object_privilege: DELETE_SYM HISTORY_SYM */
-#line 17294 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3478: /* object_privilege: DELETE_SYM HISTORY_SYM */
+#line 17527 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= DELETE_HISTORY_ACL; }
-#line 49717 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49958 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3460: /* object_privilege: SET USER_SYM */
-#line 17295 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3479: /* object_privilege: SET USER_SYM */
+#line 17528 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SET_USER_ACL; }
-#line 49723 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49964 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3461: /* object_privilege: FEDERATED_SYM ADMIN_SYM */
-#line 17296 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3480: /* object_privilege: FEDERATED_SYM ADMIN_SYM */
+#line 17529 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= FEDERATED_ADMIN_ACL; }
-#line 49729 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3462: /* object_privilege: CONNECTION_SYM ADMIN_SYM */
-#line 17297 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3481: /* object_privilege: CONNECTION_SYM ADMIN_SYM */
+#line 17530 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= CONNECTION_ADMIN_ACL; }
-#line 49735 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49976 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3463: /* object_privilege: READ_SYM ONLY_SYM ADMIN_SYM */
-#line 17298 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3482: /* object_privilege: READ_SYM ONLY_SYM ADMIN_SYM */
+#line 17531 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= READ_ONLY_ADMIN_ACL; }
-#line 49741 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49982 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3464: /* object_privilege: READ_ONLY_SYM ADMIN_SYM */
-#line 17299 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3483: /* object_privilege: READ_ONLY_SYM ADMIN_SYM */
+#line 17532 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= READ_ONLY_ADMIN_ACL; }
-#line 49747 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49988 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3465: /* object_privilege: BINLOG_SYM MONITOR_SYM */
-#line 17300 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3484: /* object_privilege: BINLOG_SYM MONITOR_SYM */
+#line 17533 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_MONITOR_ACL; }
-#line 49753 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 49994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3466: /* object_privilege: BINLOG_SYM ADMIN_SYM */
-#line 17301 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3485: /* object_privilege: BINLOG_SYM ADMIN_SYM */
+#line 17534 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_ADMIN_ACL; }
-#line 49759 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50000 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3467: /* object_privilege: BINLOG_SYM REPLAY_SYM */
-#line 17302 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3486: /* object_privilege: BINLOG_SYM REPLAY_SYM */
+#line 17535 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= BINLOG_REPLAY_ACL; }
-#line 49765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3468: /* object_privilege: REPLICATION MASTER_SYM ADMIN_SYM */
-#line 17303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3487: /* object_privilege: REPLICATION MASTER_SYM ADMIN_SYM */
+#line 17536 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REPL_MASTER_ADMIN_ACL; }
-#line 49771 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50012 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3469: /* object_privilege: REPLICATION SLAVE ADMIN_SYM */
-#line 17304 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3488: /* object_privilege: REPLICATION SLAVE ADMIN_SYM */
+#line 17537 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= REPL_SLAVE_ADMIN_ACL; }
-#line 49777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3470: /* object_privilege: SLAVE MONITOR_SYM */
-#line 17305 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3489: /* object_privilege: SLAVE MONITOR_SYM */
+#line 17538 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= SLAVE_MONITOR_ACL; }
-#line 49783 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50024 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3471: /* opt_and: %empty */
-#line 17309 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3490: /* object_privilege: SHOW CREATE ROUTINE_SYM */
+#line 17539 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.privilege)= SHOW_CREATE_ROUTINE_ACL; }
+#line 50030 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3491: /* opt_and: %empty */
+#line 17543 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50036 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3472: /* opt_and: AND_SYM */
-#line 17310 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3492: /* opt_and: AND_SYM */
+#line 17544 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 49795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3475: /* require_list_element: SUBJECT_SYM TEXT_STRING */
-#line 17320 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3495: /* require_list_element: SUBJECT_SYM TEXT_STRING */
+#line 17554 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (lex->account_options.x509_subject.str)
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SUBJECT"));
lex->account_options.x509_subject= (yyvsp[0].lex_string_with_metadata);
}
-#line 49806 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50053 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3476: /* require_list_element: ISSUER_SYM TEXT_STRING */
-#line 17327 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3496: /* require_list_element: ISSUER_SYM TEXT_STRING */
+#line 17561 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (lex->account_options.x509_issuer.str)
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "ISSUER"));
lex->account_options.x509_issuer= (yyvsp[0].lex_string_with_metadata);
}
-#line 49817 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50064 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3477: /* require_list_element: CIPHER_SYM TEXT_STRING */
-#line 17334 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3497: /* require_list_element: CIPHER_SYM TEXT_STRING */
+#line 17568 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
if (lex->account_options.ssl_cipher.str)
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "CIPHER"));
lex->account_options.ssl_cipher= (yyvsp[0].lex_string_with_metadata);
}
-#line 49828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3478: /* grant_ident: '*' */
-#line 17344 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3498: /* grant_ident: '*' */
+#line 17578 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING db;
if (unlikely(Lex->copy_db_to(&db)))
@@ -49837,411 +50084,411 @@ yyreduce:
Lex_grant_object_name::STAR)))
MYSQL_YYABORT;
}
-#line 49841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50088 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3479: /* grant_ident: ident '.' '*' */
-#line 17353 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3499: /* grant_ident: ident '.' '*' */
+#line 17587 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant_ident)= new (thd->mem_root) Lex_grant_object_name((yyvsp[-2].ident_sys),
Lex_grant_object_name::IDENT_STAR)))
MYSQL_YYABORT;
}
-#line 49851 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50098 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3480: /* grant_ident: '*' '.' '*' */
-#line 17359 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3500: /* grant_ident: '*' '.' '*' */
+#line 17593 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant_ident)= new (thd->mem_root) Lex_grant_object_name(
null_clex_str,
Lex_grant_object_name::STAR_STAR)))
MYSQL_YYABORT;
}
-#line 49862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50109 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3481: /* grant_ident: table_ident */
-#line 17366 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3501: /* grant_ident: table_ident */
+#line 17600 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.lex_grant_ident)= new (thd->mem_root) Lex_grant_object_name((yyvsp[0].table))))
MYSQL_YYABORT;
}
-#line 49871 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50118 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3482: /* user_list: user */
-#line 17374 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3502: /* user_list: user */
+#line 17608 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49880 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50127 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3483: /* user_list: user_list ',' user */
-#line 17379 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3503: /* user_list: user_list ',' user */
+#line 17613 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49889 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3484: /* grant_list: grant_user */
-#line 17387 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3504: /* grant_list: grant_user */
+#line 17621 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49898 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50145 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3485: /* grant_list: grant_list ',' grant_user */
-#line 17392 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3505: /* grant_list: grant_list ',' grant_user */
+#line 17626 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49907 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50154 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3486: /* user_and_role_list: user_or_role */
-#line 17400 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3506: /* user_and_role_list: user_or_role */
+#line 17634 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49916 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50163 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3487: /* user_and_role_list: user_and_role_list ',' user_or_role */
-#line 17405 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3507: /* user_and_role_list: user_and_role_list ',' user_or_role */
+#line 17639 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)))
MYSQL_YYABORT;
}
-#line 49925 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50172 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3492: /* grant_user: user IDENTIFIED_SYM BY TEXT_STRING */
-#line 17416 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3512: /* grant_user: user IDENTIFIED_SYM BY TEXT_STRING */
+#line 17650 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[-3].lex_user);
(yyvsp[-3].lex_user)->auth= new (thd->mem_root) USER_AUTH();
(yyvsp[-3].lex_user)->auth->pwtext= (yyvsp[0].lex_string_with_metadata);
}
-#line 49935 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50182 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3493: /* grant_user: user IDENTIFIED_SYM BY PASSWORD_SYM TEXT_STRING */
-#line 17422 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3513: /* grant_user: user IDENTIFIED_SYM BY PASSWORD_SYM TEXT_STRING */
+#line 17656 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[-4].lex_user);
(yyvsp[-4].lex_user)->auth= new (thd->mem_root) USER_AUTH();
(yyvsp[-4].lex_user)->auth->auth_str= (yyvsp[0].lex_string_with_metadata);
}
-#line 49945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50192 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3494: /* grant_user: user IDENTIFIED_SYM via_or_with auth_expression */
-#line 17428 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3514: /* grant_user: user IDENTIFIED_SYM via_or_with auth_expression */
+#line 17662 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[-3].lex_user);
(yyvsp[-3].lex_user)->auth= (yyvsp[0].user_auth);
}
-#line 49954 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50201 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3495: /* grant_user: user_or_role */
-#line 17433 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3515: /* grant_user: user_or_role */
+#line 17667 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.lex_user)= (yyvsp[0].lex_user);
}
-#line 49962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50209 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3496: /* auth_expression: auth_token OR_SYM auth_expression */
-#line 17440 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3516: /* auth_expression: auth_token OR_SYM auth_expression */
+#line 17674 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= (yyvsp[-2].user_auth);
DBUG_ASSERT((yyval.user_auth)->next == NULL);
(yyval.user_auth)->next= (yyvsp[0].user_auth);
}
-#line 49972 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3497: /* auth_expression: auth_token */
-#line 17446 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3517: /* auth_expression: auth_token */
+#line 17680 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= (yyvsp[0].user_auth);
}
-#line 49980 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50227 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3498: /* auth_token: ident_or_text opt_auth_str */
-#line 17453 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3518: /* auth_token: ident_or_text opt_auth_str */
+#line 17687 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.user_auth)= (yyvsp[0].user_auth);
(yyval.user_auth)->plugin= (yyvsp[-1].lex_str);
}
-#line 49989 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3499: /* opt_auth_str: %empty */
-#line 17461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3519: /* opt_auth_str: %empty */
+#line 17695 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.user_auth)=(USER_AUTH*) thd->calloc(sizeof(USER_AUTH))))
MYSQL_YYABORT;
}
-#line 49998 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3500: /* opt_auth_str: using_or_as TEXT_STRING_sys */
-#line 17466 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3520: /* opt_auth_str: using_or_as TEXT_STRING_sys */
+#line 17700 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.user_auth)=(USER_AUTH*) thd->calloc(sizeof(USER_AUTH))))
MYSQL_YYABORT;
(yyval.user_auth)->auth_str= (yyvsp[0].lex_str);
}
-#line 50008 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50255 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3501: /* opt_auth_str: using_or_as PASSWORD_SYM '(' TEXT_STRING ')' */
-#line 17472 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3521: /* opt_auth_str: using_or_as PASSWORD_SYM '(' TEXT_STRING ')' */
+#line 17706 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.user_auth)=(USER_AUTH*) thd->calloc(sizeof(USER_AUTH))))
MYSQL_YYABORT;
(yyval.user_auth)->pwtext= (yyvsp[-1].lex_string_with_metadata);
}
-#line 50018 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50265 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3503: /* opt_require_clause: REQUIRE_SYM require_list */
-#line 17482 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3523: /* opt_require_clause: REQUIRE_SYM require_list */
+#line 17716 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_SPECIFIED;
}
-#line 50026 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3504: /* opt_require_clause: REQUIRE_SYM SSL_SYM */
-#line 17486 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3524: /* opt_require_clause: REQUIRE_SYM SSL_SYM */
+#line 17720 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_ANY;
}
-#line 50034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3505: /* opt_require_clause: REQUIRE_SYM X509_SYM */
-#line 17490 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3525: /* opt_require_clause: REQUIRE_SYM X509_SYM */
+#line 17724 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_X509;
}
-#line 50042 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50289 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3506: /* opt_require_clause: REQUIRE_SYM NONE_SYM */
-#line 17494 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3526: /* opt_require_clause: REQUIRE_SYM NONE_SYM */
+#line 17728 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.ssl_type= SSL_TYPE_NONE;
}
-#line 50050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50297 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3507: /* resource_option: MAX_QUERIES_PER_HOUR ulong_num */
-#line 17501 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3527: /* resource_option: MAX_QUERIES_PER_HOUR ulong_num */
+#line 17735 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.questions=(yyvsp[0].ulong_num);
Lex->account_options.specified_limits|= USER_RESOURCES::QUERIES_PER_HOUR;
}
-#line 50059 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50306 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3508: /* resource_option: MAX_UPDATES_PER_HOUR ulong_num */
-#line 17506 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3528: /* resource_option: MAX_UPDATES_PER_HOUR ulong_num */
+#line 17740 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.updates=(yyvsp[0].ulong_num);
Lex->account_options.specified_limits|= USER_RESOURCES::UPDATES_PER_HOUR;
}
-#line 50068 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50315 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3509: /* resource_option: MAX_CONNECTIONS_PER_HOUR ulong_num */
-#line 17511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3529: /* resource_option: MAX_CONNECTIONS_PER_HOUR ulong_num */
+#line 17745 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.conn_per_hour= (yyvsp[0].ulong_num);
Lex->account_options.specified_limits|= USER_RESOURCES::CONNECTIONS_PER_HOUR;
}
-#line 50077 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50324 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3510: /* resource_option: MAX_USER_CONNECTIONS_SYM int_num */
-#line 17516 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3530: /* resource_option: MAX_USER_CONNECTIONS_SYM int_num */
+#line 17750 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.user_conn= (yyvsp[0].num);
Lex->account_options.specified_limits|= USER_RESOURCES::USER_CONNECTIONS;
}
-#line 50086 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50333 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3511: /* resource_option: MAX_STATEMENT_TIME_SYM NUM_literal */
-#line 17521 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3531: /* resource_option: MAX_STATEMENT_TIME_SYM NUM_literal */
+#line 17755 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->account_options.max_statement_time= (yyvsp[0].item_num)->val_real();
Lex->account_options.specified_limits|= USER_RESOURCES::MAX_STATEMENT_TIME;
}
-#line 50095 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50342 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3512: /* resource_option_list: resource_option_list resource_option */
-#line 17528 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3532: /* resource_option_list: resource_option_list resource_option */
+#line 17762 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50101 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50348 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3513: /* resource_option_list: resource_option */
-#line 17529 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3533: /* resource_option_list: resource_option */
+#line 17763 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50107 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50354 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3514: /* opt_resource_options: %empty */
-#line 17533 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3534: /* opt_resource_options: %empty */
+#line 17767 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50113 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50360 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3516: /* opt_grant_options: %empty */
-#line 17539 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3536: /* opt_grant_options: %empty */
+#line 17773 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50119 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50366 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3517: /* opt_grant_options: WITH grant_option_list */
-#line 17540 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3537: /* opt_grant_options: WITH grant_option_list */
+#line 17774 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= (yyvsp[0].privilege); }
-#line 50125 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50372 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3518: /* opt_grant_option: %empty */
-#line 17544 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3538: /* opt_grant_option: %empty */
+#line 17778 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50131 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50378 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3519: /* opt_grant_option: WITH GRANT OPTION */
-#line 17545 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3539: /* opt_grant_option: WITH GRANT OPTION */
+#line 17779 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= GRANT_ACL; }
-#line 50137 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50384 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3520: /* grant_option_list: grant_option_list grant_option */
-#line 17549 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3540: /* grant_option_list: grant_option_list grant_option */
+#line 17783 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= (yyvsp[-1].privilege) | (yyvsp[0].privilege); }
-#line 50143 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50390 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3522: /* grant_option: GRANT OPTION */
-#line 17554 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3542: /* grant_option: GRANT OPTION */
+#line 17788 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= GRANT_ACL;}
-#line 50149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50396 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3523: /* grant_option: resource_option */
-#line 17555 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3543: /* grant_option: resource_option */
+#line 17789 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.privilege)= NO_ACL; }
-#line 50155 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50402 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3524: /* $@247: %empty */
-#line 17560 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3544: /* $@249: %empty */
+#line 17794 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command = SQLCOM_BEGIN;
lex->start_transaction_opt= 0;
}
-#line 50165 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50412 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3525: /* begin_stmt_mariadb: BEGIN_MARIADB_SYM $@247 opt_work */
-#line 17565 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3545: /* begin_stmt_mariadb: BEGIN_MARIADB_SYM $@249 opt_work */
+#line 17799 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50171 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50418 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3526: /* compound_statement: sp_proc_stmt_compound_ok */
-#line 17570 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3546: /* compound_statement: sp_proc_stmt_compound_ok */
+#line 17804 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command= SQLCOM_COMPOUND;
if (Lex->sp_body_finalize_procedure(thd))
MYSQL_YYABORT;
}
-#line 50181 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50428 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3527: /* opt_not: %empty */
-#line 17578 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3547: /* opt_not: %empty */
+#line 17812 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 50187 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50434 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3528: /* opt_not: not */
-#line 17579 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3548: /* opt_not: not */
+#line 17813 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 50193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3529: /* opt_work: %empty */
-#line 17583 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3549: /* opt_work: %empty */
+#line 17817 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50199 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50446 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3530: /* opt_work: WORK_SYM */
-#line 17584 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3550: /* opt_work: WORK_SYM */
+#line 17818 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50205 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3531: /* opt_chain: %empty */
-#line 17589 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3551: /* opt_chain: %empty */
+#line 17823 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_UNKNOWN; }
-#line 50211 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50458 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3532: /* opt_chain: AND_SYM NO_SYM CHAIN_SYM */
-#line 17590 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3552: /* opt_chain: AND_SYM NO_SYM CHAIN_SYM */
+#line 17824 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_NO; }
-#line 50217 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3533: /* opt_chain: AND_SYM CHAIN_SYM */
-#line 17591 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3553: /* opt_chain: AND_SYM CHAIN_SYM */
+#line 17825 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_YES; }
-#line 50223 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3534: /* opt_release: %empty */
-#line 17596 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3554: /* opt_release: %empty */
+#line 17830 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_UNKNOWN; }
-#line 50229 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50476 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3535: /* opt_release: RELEASE_SYM */
-#line 17597 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3555: /* opt_release: RELEASE_SYM */
+#line 17831 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_YES; }
-#line 50235 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50482 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3536: /* opt_release: NO_SYM RELEASE_SYM */
-#line 17598 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3556: /* opt_release: NO_SYM RELEASE_SYM */
+#line 17832 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.m_yes_no_unk)= TVL_NO; }
-#line 50241 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50488 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3537: /* commit: COMMIT_SYM opt_work opt_chain opt_release */
-#line 17603 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3557: /* commit: COMMIT_SYM opt_work opt_chain opt_release */
+#line 17837 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_COMMIT;
@@ -50250,11 +50497,11 @@ yyreduce:
lex->tx_chain= (yyvsp[-1].m_yes_no_unk);
lex->tx_release= (yyvsp[0].m_yes_no_unk);
}
-#line 50254 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50501 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3538: /* rollback: ROLLBACK_SYM opt_work opt_chain opt_release */
-#line 17615 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3558: /* rollback: ROLLBACK_SYM opt_work opt_chain opt_release */
+#line 17849 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ROLLBACK;
@@ -50263,145 +50510,145 @@ yyreduce:
lex->tx_chain= (yyvsp[-1].m_yes_no_unk);
lex->tx_release= (yyvsp[0].m_yes_no_unk);
}
-#line 50267 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50514 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3539: /* rollback: ROLLBACK_SYM opt_work TO_SYM SAVEPOINT_SYM ident */
-#line 17624 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3559: /* rollback: ROLLBACK_SYM opt_work TO_SYM SAVEPOINT_SYM ident */
+#line 17858 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ROLLBACK_TO_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 50277 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50524 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3540: /* rollback: ROLLBACK_SYM opt_work TO_SYM ident */
-#line 17630 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3560: /* rollback: ROLLBACK_SYM opt_work TO_SYM ident */
+#line 17864 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_ROLLBACK_TO_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 50287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50534 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3541: /* savepoint: SAVEPOINT_SYM ident */
-#line 17639 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3561: /* savepoint: SAVEPOINT_SYM ident */
+#line 17873 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 50297 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50544 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3542: /* release: RELEASE_SYM SAVEPOINT_SYM ident */
-#line 17648 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3562: /* release: RELEASE_SYM SAVEPOINT_SYM ident */
+#line 17882 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_RELEASE_SAVEPOINT;
lex->ident= (yyvsp[0].ident_sys);
}
-#line 50307 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50554 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3543: /* unit_type_decl: UNION_SYM union_option */
-#line 17661 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3563: /* unit_type_decl: UNION_SYM union_option */
+#line 17895 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.unit_operation).unit_type= UNION_TYPE; (yyval.unit_operation).distinct= (yyvsp[0].num); }
-#line 50313 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50560 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3544: /* unit_type_decl: INTERSECT_SYM union_option */
-#line 17663 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3564: /* unit_type_decl: INTERSECT_SYM union_option */
+#line 17897 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.unit_operation).unit_type= INTERSECT_TYPE; (yyval.unit_operation).distinct= (yyvsp[0].num); }
-#line 50319 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50566 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3545: /* unit_type_decl: EXCEPT_SYM union_option */
-#line 17665 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3565: /* unit_type_decl: EXCEPT_SYM union_option */
+#line 17899 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.unit_operation).unit_type= EXCEPT_TYPE; (yyval.unit_operation).distinct= (yyvsp[0].num); }
-#line 50325 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50572 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3546: /* union_option: %empty */
-#line 17672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3566: /* union_option: %empty */
+#line 17906 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=1; }
-#line 50331 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3547: /* union_option: DISTINCT */
-#line 17673 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3567: /* union_option: DISTINCT */
+#line 17907 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=1; }
-#line 50337 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50584 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3548: /* union_option: ALL */
-#line 17674 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3568: /* union_option: ALL */
+#line 17908 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)=0; }
-#line 50343 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50590 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3549: /* query_expression_option: STRAIGHT_JOIN */
-#line 17678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3569: /* query_expression_option: STRAIGHT_JOIN */
+#line 17912 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_STRAIGHT_JOIN; }
-#line 50349 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50596 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3550: /* query_expression_option: HIGH_PRIORITY */
-#line 17680 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3570: /* query_expression_option: HIGH_PRIORITY */
+#line 17914 "/home/buildbot/git/sql/sql_yacc.yy"
{
YYPS->m_lock_type= TL_READ_HIGH_PRIORITY;
YYPS->m_mdl_type= MDL_SHARED_READ;
Select->options|= SELECT_HIGH_PRIORITY;
}
-#line 50359 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3551: /* query_expression_option: DISTINCT */
-#line 17685 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3571: /* query_expression_option: DISTINCT */
+#line 17919 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_DISTINCT; }
-#line 50365 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50612 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3552: /* query_expression_option: UNIQUE_SYM */
-#line 17686 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3572: /* query_expression_option: UNIQUE_SYM */
+#line 17920 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_DISTINCT; }
-#line 50371 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50618 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3553: /* query_expression_option: SQL_SMALL_RESULT */
-#line 17687 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3573: /* query_expression_option: SQL_SMALL_RESULT */
+#line 17921 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_SMALL_RESULT; }
-#line 50377 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50624 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3554: /* query_expression_option: SQL_BIG_RESULT */
-#line 17688 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3574: /* query_expression_option: SQL_BIG_RESULT */
+#line 17922 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_BIG_RESULT; }
-#line 50383 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50630 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3555: /* query_expression_option: SQL_BUFFER_RESULT */
-#line 17689 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3575: /* query_expression_option: SQL_BUFFER_RESULT */
+#line 17923 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= OPTION_BUFFER_RESULT; }
-#line 50389 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50636 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3556: /* query_expression_option: SQL_CALC_FOUND_ROWS */
-#line 17690 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3576: /* query_expression_option: SQL_CALC_FOUND_ROWS */
+#line 17924 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= OPTION_FOUND_ROWS; }
-#line 50395 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3557: /* query_expression_option: ALL */
-#line 17691 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3577: /* query_expression_option: ALL */
+#line 17925 "/home/buildbot/git/sql/sql_yacc.yy"
{ Select->options|= SELECT_ALL; }
-#line 50401 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3560: /* no_definer: %empty */
-#line 17707 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3580: /* no_definer: %empty */
+#line 17941 "/home/buildbot/git/sql/sql_yacc.yy"
{
/*
We have to distinguish missing DEFINER-clause from case when
@@ -50412,201 +50659,201 @@ yyreduce:
*/
thd->lex->definer= 0;
}
-#line 50416 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50663 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3561: /* definer: DEFINER_SYM '=' user_or_role */
-#line 17721 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3581: /* definer: DEFINER_SYM '=' user_or_role */
+#line 17955 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->definer= (yyvsp[0].lex_user);
Lex->account_options.reset();
}
-#line 50425 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50672 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3562: /* view_algorithm: ALGORITHM_SYM '=' UNDEFINED_SYM */
-#line 17734 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3582: /* view_algorithm: ALGORITHM_SYM '=' UNDEFINED_SYM */
+#line 17968 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= DTYPE_ALGORITHM_UNDEFINED; }
-#line 50431 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50678 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3563: /* view_algorithm: ALGORITHM_SYM '=' MERGE_SYM */
-#line 17735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3583: /* view_algorithm: ALGORITHM_SYM '=' MERGE_SYM */
+#line 17969 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_ALGORITHM_MERGE; }
-#line 50437 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50684 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3564: /* view_algorithm: ALGORITHM_SYM '=' TEMPTABLE_SYM */
-#line 17736 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3584: /* view_algorithm: ALGORITHM_SYM '=' TEMPTABLE_SYM */
+#line 17970 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_ALGORITHM_TMPTABLE; }
-#line 50443 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50690 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3565: /* opt_view_suid: %empty */
-#line 17740 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3585: /* opt_view_suid: %empty */
+#line 17974 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= VIEW_SUID_DEFAULT; }
-#line 50449 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50696 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3566: /* opt_view_suid: view_suid */
-#line 17741 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3586: /* opt_view_suid: view_suid */
+#line 17975 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= (yyvsp[0].view_suid); }
-#line 50455 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50702 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3567: /* view_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
-#line 17745 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3587: /* view_suid: SQL_SYM SECURITY_SYM DEFINER_SYM */
+#line 17979 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= VIEW_SUID_DEFINER; }
-#line 50461 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50708 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3568: /* view_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
-#line 17746 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3588: /* view_suid: SQL_SYM SECURITY_SYM INVOKER_SYM */
+#line 17980 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.view_suid)= VIEW_SUID_INVOKER; }
-#line 50467 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50714 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3569: /* view_list_opt: %empty */
-#line 17751 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3589: /* view_list_opt: %empty */
+#line 17985 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50473 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50720 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3570: /* view_list_opt: '(' view_list ')' */
-#line 17752 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3590: /* view_list_opt: '(' view_list ')' */
+#line 17986 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 50479 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50726 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3571: /* view_list: ident */
-#line 17757 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3591: /* view_list: ident */
+#line 17991 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->view_list.push_back((LEX_CSTRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING)),
thd->mem_root);
}
-#line 50489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50736 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3572: /* view_list: view_list ',' ident */
-#line 17763 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3592: /* view_list: view_list ',' ident */
+#line 17997 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->view_list.push_back((LEX_CSTRING*)
thd->memdup(&(yyvsp[0].ident_sys), sizeof(LEX_CSTRING)),
thd->mem_root);
}
-#line 50499 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50746 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3573: /* $@248: %empty */
-#line 17771 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3593: /* $@250: %empty */
+#line 18005 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->parsing_options.allows_variable= FALSE;
lex->create_view->select.str= (char *) YYLIP->get_cpp_ptr();
}
-#line 50509 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50756 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3574: /* view_select: $@248 query_expression view_check_option */
-#line 17778 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3594: /* view_select: $@250 query_expression view_check_option */
+#line 18012 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->parsed_create_view((yyvsp[-1].select_lex_unit), (yyvsp[0].num)))
MYSQL_YYABORT;
}
-#line 50518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50765 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3575: /* view_check_option: %empty */
-#line 17785 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3595: /* view_check_option: %empty */
+#line 18019 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_NONE; }
-#line 50524 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50771 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3576: /* view_check_option: WITH CHECK_SYM OPTION */
-#line 17786 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3596: /* view_check_option: WITH CHECK_SYM OPTION */
+#line 18020 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_CASCADED; }
-#line 50530 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50777 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3577: /* view_check_option: WITH CASCADED CHECK_SYM OPTION */
-#line 17787 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3597: /* view_check_option: WITH CASCADED CHECK_SYM OPTION */
+#line 18021 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_CASCADED; }
-#line 50536 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50783 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3578: /* view_check_option: WITH LOCAL_SYM CHECK_SYM OPTION */
-#line 17788 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3598: /* view_check_option: WITH LOCAL_SYM CHECK_SYM OPTION */
+#line 18022 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= VIEW_CHECK_LOCAL; }
-#line 50542 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50789 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3579: /* trigger_action_order: FOLLOWS_SYM */
-#line 17799 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3599: /* trigger_action_order: FOLLOWS_SYM */
+#line 18033 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trigger_action_order_type)= TRG_ORDER_FOLLOWS; }
-#line 50548 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3580: /* trigger_action_order: PRECEDES_SYM */
-#line 17801 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3600: /* trigger_action_order: PRECEDES_SYM */
+#line 18035 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.trigger_action_order_type)= TRG_ORDER_PRECEDES; }
-#line 50554 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50801 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3581: /* trigger_follows_precedes_clause: %empty */
-#line 17806 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3601: /* trigger_follows_precedes_clause: %empty */
+#line 18040 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.trg_execution_order).ordering_clause= TRG_ORDER_NONE;
(yyval.trg_execution_order).anchor_trigger_name.str= NULL;
(yyval.trg_execution_order).anchor_trigger_name.length= 0;
}
-#line 50564 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3582: /* trigger_follows_precedes_clause: trigger_action_order ident_or_text */
-#line 17813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3602: /* trigger_follows_precedes_clause: trigger_action_order ident_or_text */
+#line 18047 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.trg_execution_order).ordering_clause= (yyvsp[-1].trigger_action_order_type);
(yyval.trg_execution_order).anchor_trigger_name= (yyvsp[0].lex_str);
}
-#line 50573 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50820 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3583: /* $@249: %empty */
-#line 17822 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3603: /* $@251: %empty */
+#line 18056 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->add_create_options_with_check((yyvsp[0].object_ddl_options))))
MYSQL_YYABORT;
}
-#line 50582 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3584: /* $@250: %empty */
-#line 17831 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3604: /* $@252: %empty */
+#line 18065 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $9 */
Lex->raw_trg_on_table_name_begin= YYLIP->get_tok_start();
}
-#line 50590 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50837 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3585: /* $@251: %empty */
-#line 17837 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3605: /* $@253: %empty */
+#line 18071 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $13 */
Lex->raw_trg_on_table_name_end= YYLIP->get_tok_start();
}
-#line 50598 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50845 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3586: /* $@252: %empty */
-#line 17842 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3606: /* $@254: %empty */
+#line 18076 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->trg_chistics.ordering_clause_begin= YYLIP->get_cpp_ptr();
}
-#line 50606 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3587: /* $@253: %empty */
-#line 17846 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3607: /* $@255: %empty */
+#line 18080 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $18 */
LEX *lex= thd->lex;
Lex_input_stream *lip= YYLIP;
@@ -50627,11 +50874,11 @@ yyreduce:
lex->sphead->set_body_start(thd, lip->get_cpp_tok_start());
}
-#line 50631 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3588: /* trigger_tail: remember_name opt_if_not_exists $@249 sp_name trg_action_time trg_event ON remember_name $@250 table_ident FOR_SYM remember_name $@251 EACH_SYM ROW_SYM $@252 trigger_follows_precedes_clause $@253 sp_proc_stmt force_lookahead */
-#line 17867 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3608: /* trigger_tail: remember_name opt_if_not_exists $@251 sp_name trg_action_time trg_event ON remember_name $@252 table_ident FOR_SYM remember_name $@253 EACH_SYM ROW_SYM $@254 trigger_follows_precedes_clause $@255 sp_proc_stmt force_lookahead */
+#line 18101 "/home/buildbot/git/sql/sql_yacc.yy"
{ /* $21 */
LEX *lex= Lex;
@@ -50650,85 +50897,127 @@ yyreduce:
MDL_SHARED_NO_WRITE))
MYSQL_YYABORT;
}
-#line 50654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50901 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3589: /* $@254: %empty */
-#line 17895 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3609: /* $@256: %empty */
+#line 18129 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
lex->init_last_field(&lex->sphead->m_return_field_def,
&empty_clex_str);
}
-#line 50664 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50911 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3590: /* sf_return_type: $@254 field_type */
-#line 17901 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3610: /* sf_return_type: $@256 field_type */
+#line 18135 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sf_return_fill_definition((yyvsp[0].Lex_field_type))))
MYSQL_YYABORT;
}
-#line 50673 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50920 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3611: /* create_package_chistic: COMMENT_SYM TEXT_STRING_sys */
+#line 18143 "/home/buildbot/git/sql/sql_yacc.yy"
+ { Lex->sp_chistics.comment= (yyvsp[0].lex_str); }
+#line 50926 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3612: /* create_package_chistic: sp_suid */
+#line 18145 "/home/buildbot/git/sql/sql_yacc.yy"
+ { Lex->sp_chistics.suid= (yyvsp[0].sp_suid); }
+#line 50932 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3613: /* create_package_chistics: create_package_chistic */
+#line 18149 "/home/buildbot/git/sql/sql_yacc.yy"
+ {}
+#line 50938 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3614: /* create_package_chistics: create_package_chistics create_package_chistic */
+#line 18150 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 50944 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3591: /* xa: XA_SYM begin_or_start xid opt_join_or_resume */
-#line 17911 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3615: /* opt_create_package_chistics: %empty */
+#line 18154 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 50950 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3616: /* opt_create_package_chistics: create_package_chistics */
+#line 18155 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 50956 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3617: /* $@257: %empty */
+#line 18159 "/home/buildbot/git/sql/sql_yacc.yy"
+ { Lex->sp_chistics.init(); }
+#line 50962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3619: /* xa: XA_SYM begin_or_start xid opt_join_or_resume */
+#line 18167 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_START;
}
-#line 50681 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50970 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3592: /* xa: XA_SYM END xid opt_suspend */
-#line 17915 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3620: /* xa: XA_SYM END xid opt_suspend */
+#line 18171 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_END;
}
-#line 50689 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50978 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3593: /* xa: XA_SYM PREPARE_SYM xid */
-#line 17919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3621: /* xa: XA_SYM PREPARE_SYM xid */
+#line 18175 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_PREPARE;
}
-#line 50697 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50986 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3594: /* xa: XA_SYM COMMIT_SYM xid opt_one_phase */
-#line 17923 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3622: /* xa: XA_SYM COMMIT_SYM xid opt_one_phase */
+#line 18179 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_COMMIT;
}
-#line 50705 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 50994 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3595: /* xa: XA_SYM ROLLBACK_SYM xid */
-#line 17927 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3623: /* xa: XA_SYM ROLLBACK_SYM xid */
+#line 18183 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_ROLLBACK;
}
-#line 50713 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51002 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3596: /* xa: XA_SYM RECOVER_SYM opt_format_xid */
-#line 17931 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3624: /* xa: XA_SYM RECOVER_SYM opt_format_xid */
+#line 18187 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sql_command = SQLCOM_XA_RECOVER;
Lex->verbose= (yyvsp[0].num);
}
-#line 50722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51011 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3597: /* opt_format_xid: %empty */
-#line 17938 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3625: /* opt_format_xid: %empty */
+#line 18194 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= false; }
-#line 50728 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51017 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3598: /* opt_format_xid: FORMAT_SYM '=' ident_or_text */
-#line 17940 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3626: /* opt_format_xid: FORMAT_SYM '=' ident_or_text */
+#line 18196 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (lex_string_eq(&(yyvsp[0].lex_str), STRING_WITH_LEN("SQL")))
(yyval.num)= true;
@@ -50741,33 +51030,33 @@ yyreduce:
(yyval.num)= false;
}
}
-#line 50745 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3599: /* xid: text_string */
-#line 17956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3627: /* xid: text_string */
+#line 18212 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[0].string)->length() <= MAXGTRIDSIZE);
if (unlikely(!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))))
MYSQL_YYABORT;
Lex->xid->set(1L, (yyvsp[0].string)->ptr(), (yyvsp[0].string)->length(), 0, 0);
}
-#line 50756 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51045 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3600: /* xid: text_string ',' text_string */
-#line 17963 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3628: /* xid: text_string ',' text_string */
+#line 18219 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-2].string)->length() <= MAXGTRIDSIZE && (yyvsp[0].string)->length() <= MAXBQUALSIZE);
if (unlikely(!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))))
MYSQL_YYABORT;
Lex->xid->set(1L, (yyvsp[-2].string)->ptr(), (yyvsp[-2].string)->length(), (yyvsp[0].string)->ptr(), (yyvsp[0].string)->length());
}
-#line 50767 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51056 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3601: /* xid: text_string ',' text_string ',' ulong_num */
-#line 17970 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3629: /* xid: text_string ',' text_string ',' ulong_num */
+#line 18226 "/home/buildbot/git/sql/sql_yacc.yy"
{
MYSQL_YYABORT_UNLESS((yyvsp[-4].string)->length() <= MAXGTRIDSIZE &&
(yyvsp[-2].string)->length() <= MAXBQUALSIZE &&
@@ -50777,126 +51066,126 @@ yyreduce:
MYSQL_YYABORT;
Lex->xid->set((yyvsp[0].ulong_num), (yyvsp[-4].string)->ptr(), (yyvsp[-4].string)->length(), (yyvsp[-2].string)->ptr(), (yyvsp[-2].string)->length());
}
-#line 50781 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51070 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3602: /* begin_or_start: BEGIN_MARIADB_SYM */
-#line 17982 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3630: /* begin_or_start: BEGIN_MARIADB_SYM */
+#line 18238 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50787 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51076 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3603: /* begin_or_start: BEGIN_ORACLE_SYM */
-#line 17983 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3631: /* begin_or_start: BEGIN_ORACLE_SYM */
+#line 18239 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50793 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3604: /* begin_or_start: START_SYM */
-#line 17984 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3632: /* begin_or_start: START_SYM */
+#line 18240 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50799 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51088 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3605: /* opt_join_or_resume: %empty */
-#line 17988 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3633: /* opt_join_or_resume: %empty */
+#line 18244 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_NONE; }
-#line 50805 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51094 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3606: /* opt_join_or_resume: JOIN_SYM */
-#line 17989 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3634: /* opt_join_or_resume: JOIN_SYM */
+#line 18245 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_JOIN; }
-#line 50811 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51100 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3607: /* opt_join_or_resume: RESUME_SYM */
-#line 17990 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3635: /* opt_join_or_resume: RESUME_SYM */
+#line 18246 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_RESUME; }
-#line 50817 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51106 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3608: /* opt_one_phase: %empty */
-#line 17994 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3636: /* opt_one_phase: %empty */
+#line 18250 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_NONE; }
-#line 50823 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51112 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3609: /* opt_one_phase: ONE_SYM PHASE_SYM */
-#line 17995 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3637: /* opt_one_phase: ONE_SYM PHASE_SYM */
+#line 18251 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_ONE_PHASE; }
-#line 50829 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51118 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3610: /* opt_suspend: %empty */
-#line 18000 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3638: /* opt_suspend: %empty */
+#line 18256 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_NONE; }
-#line 50835 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51124 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3611: /* $@255: %empty */
-#line 18002 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3639: /* $@258: %empty */
+#line 18258 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_SUSPEND; }
-#line 50841 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51130 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3613: /* opt_migrate: %empty */
-#line 18007 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3641: /* opt_migrate: %empty */
+#line 18263 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 50847 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51136 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3614: /* opt_migrate: FOR_SYM MIGRATE_SYM */
-#line 18008 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3642: /* opt_migrate: FOR_SYM MIGRATE_SYM */
+#line 18264 "/home/buildbot/git/sql/sql_yacc.yy"
{ Lex->xa_opt=XA_FOR_MIGRATE; }
-#line 50853 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51142 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3615: /* install: INSTALL_SYM PLUGIN_SYM opt_if_not_exists ident SONAME_SYM TEXT_STRING_sys */
-#line 18013 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3643: /* install: INSTALL_SYM PLUGIN_SYM opt_if_not_exists ident SONAME_SYM TEXT_STRING_sys */
+#line 18269 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_install_plugin((yyvsp[-3].object_ddl_options), (yyvsp[-2].ident_sys), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 50862 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51151 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3616: /* install: INSTALL_SYM SONAME_SYM TEXT_STRING_sys */
-#line 18018 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3644: /* install: INSTALL_SYM SONAME_SYM TEXT_STRING_sys */
+#line 18274 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_install_plugin((yyvsp[0].lex_str));
}
-#line 50870 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51159 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3617: /* uninstall: UNINSTALL_SYM PLUGIN_SYM opt_if_exists ident */
-#line 18025 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3645: /* uninstall: UNINSTALL_SYM PLUGIN_SYM opt_if_exists ident */
+#line 18281 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_uninstall_plugin_by_name((yyvsp[-1].object_ddl_options), (yyvsp[0].ident_sys)))
MYSQL_YYABORT;
}
-#line 50879 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51168 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3618: /* uninstall: UNINSTALL_SYM SONAME_SYM opt_if_exists TEXT_STRING_sys */
-#line 18030 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3646: /* uninstall: UNINSTALL_SYM SONAME_SYM opt_if_exists TEXT_STRING_sys */
+#line 18286 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_uninstall_plugin_by_soname((yyvsp[-1].object_ddl_options), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 50888 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51177 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3619: /* keep_gcc_happy: IMPOSSIBLE_ACTION */
-#line 18039 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3647: /* keep_gcc_happy: IMPOSSIBLE_ACTION */
+#line 18295 "/home/buildbot/git/sql/sql_yacc.yy"
{
YYERROR;
}
-#line 50896 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51185 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3624: /* $@256: %empty */
-#line 18480 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3652: /* $@259: %empty */
+#line 18748 "/home/buildbot/git/sql/sql_yacc.yy"
{
// Direct procedure call (without the CALL keyword)
Lex_ident_sys tmp(thd, &(yyvsp[0].ident_cli));
@@ -50904,245 +51193,262 @@ yyreduce:
unlikely(Lex->call_statement_start(thd, &tmp)))
MYSQL_YYABORT;
}
-#line 50908 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51197 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3625: /* sp_statement: ident_cli_directly_assignable $@256 opt_sp_cparam_list */
-#line 18488 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3653: /* sp_statement: ident_cli_directly_assignable $@259 opt_sp_cparam_list */
+#line 18756 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 50917 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51206 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3626: /* $@257: %empty */
-#line 18493 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3654: /* $@260: %empty */
+#line 18761 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-2].ident_cli));
if (unlikely(!tmp.str) ||
unlikely(Lex->call_statement_start(thd, &tmp, &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 50928 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51217 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3627: /* sp_statement: ident_cli_directly_assignable '.' ident $@257 opt_sp_cparam_list */
-#line 18500 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3655: /* sp_statement: ident_cli_directly_assignable '.' ident $@260 opt_sp_cparam_list */
+#line 18768 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 50937 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51226 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3628: /* $@258: %empty */
-#line 18505 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3656: /* $@261: %empty */
+#line 18773 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-4].ident_cli));
if (unlikely(Lex->call_statement_start(thd, &tmp, &(yyvsp[-2].ident_sys), &(yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 50947 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51236 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3629: /* sp_statement: ident_cli_directly_assignable '.' ident '.' ident $@258 opt_sp_cparam_list */
-#line 18511 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3657: /* sp_statement: ident_cli_directly_assignable '.' ident '.' ident $@261 opt_sp_cparam_list */
+#line 18779 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->check_cte_dependencies_and_resolve_references())
MYSQL_YYABORT;
}
-#line 50956 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51245 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3630: /* sp_if_then_statements: sp_proc_stmts1_implicit_block */
-#line 18518 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3658: /* sp_if_then_statements: sp_proc_stmts1_implicit_block */
+#line 18786 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 50962 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51251 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3631: /* sp_case_then_statements: sp_proc_stmts1_implicit_block */
-#line 18522 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3659: /* sp_case_then_statements: sp_proc_stmts1_implicit_block */
+#line 18790 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 50968 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51257 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3664: /* sp_package_function_body: sp_body */
+#line 18810 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 51263 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3655: /* row_field_name: ident_directly_assignable */
-#line 18572 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3665: /* sp_package_procedure_body: sp_body */
+#line 18814 "/home/buildbot/git/sql/sql_yacc.yy"
+ { }
+#line 51269 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3689: /* row_field_name: ident_directly_assignable */
+#line 18864 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (!((yyval.spvar_definition)= Lex->row_field_name(thd, (yyvsp[0].ident_sys))))
MYSQL_YYABORT;
}
-#line 50977 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51278 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3656: /* $@259: %empty */
-#line 18580 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3690: /* $@262: %empty */
+#line 18872 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyvsp[-1].expr_lex)->sp_while_loop_expression(thd)))
MYSQL_YYABORT;
}
-#line 50986 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51287 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3657: /* while_body: expr_lex LOOP_SYM $@259 sp_proc_stmts1 END LOOP_SYM */
-#line 18585 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3691: /* while_body: expr_lex LOOP_SYM $@262 sp_proc_stmts1 END LOOP_SYM */
+#line 18877 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_while_loop_finalize(thd)))
MYSQL_YYABORT;
}
-#line 50995 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51296 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3658: /* for_loop_statements: LOOP_SYM sp_proc_stmts1 END LOOP_SYM */
-#line 18593 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3692: /* for_loop_statements: LOOP_SYM sp_proc_stmts1 END LOOP_SYM */
+#line 18885 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 51001 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3660: /* sp_block_label: labels_declaration_oracle */
-#line 18603 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3694: /* sp_block_label: labels_declaration_oracle */
+#line 18895 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->spcont->block_label_declare(&(yyvsp[0].lex_str))))
MYSQL_YYABORT;
(yyval.lex_str)= (yyvsp[0].lex_str);
}
-#line 51011 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ break;
+
+ case 3695: /* sp_opt_default: _empty */
+#line 18904 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.expr_and_query_str)= { nullptr, empty_clex_str}; }
+#line 51318 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3661: /* remember_end_opt: %empty */
-#line 18612 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3696: /* sp_opt_default: DEFAULT remember_cpp_ptr expr remember_end */
+#line 18906 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (yychar == YYEMPTY)
- (yyval.simple_string)= (char*) YYLIP->get_cpp_ptr_rtrim();
- else
- (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_end_rtrim();
+ LEX_CSTRING expr_str= empty_clex_str;
+
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string));
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
+
+ (yyval.expr_and_query_str)= { (yyvsp[-1].item), expr_str };
}
-#line 51022 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51335 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3662: /* sp_opt_default: _empty */
-#line 18621 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item) = NULL; }
-#line 51028 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
+ case 3697: /* sp_opt_default: SET_VAR remember_cpp_ptr expr remember_end */
+#line 18919 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ LEX_CSTRING expr_str= empty_clex_str;
- case 3663: /* sp_opt_default: DEFAULT expr */
-#line 18622 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item) = (yyvsp[0].item); }
-#line 51034 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
+ if (Lex->is_metadata_used())
+ {
+ expr_str= make_string(thd, (yyvsp[-2].simple_string), (yyvsp[0].simple_string) );
+ if (expr_str.str == nullptr)
+ MYSQL_YYABORT;
+ }
- case 3664: /* sp_opt_default: SET_VAR expr */
-#line 18623 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.item) = (yyvsp[0].item); }
-#line 51040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ (yyval.expr_and_query_str)= { (yyvsp[-1].item), expr_str };
+ }
+#line 51352 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3665: /* sp_opt_inout: _empty */
-#line 18627 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3698: /* sp_opt_inout: _empty */
+#line 18934 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_IN; }
-#line 51046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3667: /* sp_opt_inout: IN_SYM OUT_SYM */
-#line 18629 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3700: /* sp_opt_inout: IN_SYM OUT_SYM */
+#line 18936 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spvar_mode)= sp_variable::MODE_INOUT; }
-#line 51052 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51364 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3668: /* $@260: %empty */
-#line 18633 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3701: /* $@263: %empty */
+#line 18940 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_block_init(thd);
}
-#line 51060 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51372 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3669: /* sp_proc_stmts1_implicit_block: $@260 sp_proc_stmts1 */
-#line 18637 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3702: /* sp_proc_stmts1_implicit_block: $@263 sp_proc_stmts1 */
+#line 18944 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_finalize(thd)))
MYSQL_YYABORT;
}
-#line 51069 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3670: /* remember_lex: %empty */
-#line 18645 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- (yyval.lex)= thd->lex;
- }
-#line 51077 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51381 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3680: /* ident_directly_assignable: keyword_directly_assignable */
-#line 18664 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3712: /* ident_directly_assignable: keyword_directly_assignable */
+#line 18965 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely((yyval.ident_sys).copy_keyword(thd, &(yyvsp[0].kwd))))
MYSQL_YYABORT;
}
-#line 51086 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51390 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3682: /* ident_cli_directly_assignable: keyword_directly_assignable */
-#line 18672 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3714: /* ident_cli_directly_assignable: keyword_directly_assignable */
+#line 18973 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.ident_cli)= (yyvsp[0].kwd); }
-#line 51092 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51396 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3683: /* $@261: %empty */
-#line 18678 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3715: /* $@264: %empty */
+#line 18979 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_stmt_init();
if (sp_create_assignment_lex(thd, (yyvsp[-1].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 51103 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51407 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3684: /* set_assign: ident_cli_directly_assignable SET_VAR $@261 set_expr_or_default */
-#line 18685 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3716: /* set_assign: ident_cli_directly_assignable SET_VAR $@264 set_expr_or_default */
+#line 18986 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex_ident_sys tmp(thd, &(yyvsp[-3].ident_cli));
+
if (unlikely(!tmp.str) ||
- unlikely(Lex->set_variable(&tmp, (yyvsp[0].item))) ||
+ unlikely(Lex->set_variable(&tmp, (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY,
false)))
MYSQL_YYABORT;
}
-#line 51116 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51421 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3685: /* $@262: %empty */
-#line 18694 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3717: /* $@265: %empty */
+#line 18996 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex=Lex;
lex->set_stmt_init();
if (sp_create_assignment_lex(thd, (yyvsp[-3].ident_cli).pos()))
MYSQL_YYABORT;
}
-#line 51127 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51432 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3686: /* set_assign: ident_cli_directly_assignable '.' ident SET_VAR $@262 set_expr_or_default */
-#line 18701 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3718: /* set_assign: ident_cli_directly_assignable '.' ident SET_VAR $@265 set_expr_or_default */
+#line 19003 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
DBUG_ASSERT(lex->var_list.is_empty());
Lex_ident_sys tmp(thd, &(yyvsp[-5].ident_cli));
+
if (unlikely(!tmp.str) ||
- unlikely(lex->set_variable(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ unlikely(lex->set_variable(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY,
false)))
MYSQL_YYABORT;
}
-#line 51142 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51448 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3687: /* $@263: %empty */
-#line 18712 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3719: /* $@266: %empty */
+#line 19015 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= Lex;
if (unlikely(!lex->is_trigger_new_or_old_reference(&(yyvsp[-3].ident_sys))))
@@ -51154,293 +51460,253 @@ yyreduce:
if (sp_create_assignment_lex(thd, (yyvsp[-4].kwd).pos()))
MYSQL_YYABORT;
}
-#line 51158 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3688: /* set_assign: COLON_ORACLE_SYM ident '.' ident SET_VAR $@263 set_expr_or_default */
-#line 18724 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3720: /* set_assign: COLON_ORACLE_SYM ident '.' ident SET_VAR $@266 set_expr_or_default */
+#line 19027 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX_CSTRING tmp= { (yyvsp[-5].ident_sys).str, (yyvsp[-5].ident_sys).length };
- if (unlikely(Lex->set_trigger_field(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].item))) ||
+ if (unlikely(Lex->set_trigger_field(&tmp, &(yyvsp[-3].ident_sys), (yyvsp[0].expr_and_query_str).expr,
+ (yyvsp[0].expr_and_query_str).expr_str)) ||
unlikely(sp_create_assignment_instr(thd, yychar == YYEMPTY,
false)))
MYSQL_YYABORT;
}
-#line 51170 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51477 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3689: /* labels_declaration_oracle: label_declaration_oracle */
-#line 18735 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3721: /* labels_declaration_oracle: label_declaration_oracle */
+#line 19039 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].lex_str); }
-#line 51176 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3690: /* labels_declaration_oracle: labels_declaration_oracle label_declaration_oracle */
-#line 18736 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3722: /* labels_declaration_oracle: labels_declaration_oracle label_declaration_oracle */
+#line 19040 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].lex_str); }
-#line 51182 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51489 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3691: /* label_declaration_oracle: SHIFT_LEFT label_ident SHIFT_RIGHT */
-#line 18741 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3723: /* label_declaration_oracle: SHIFT_LEFT label_ident SHIFT_RIGHT */
+#line 19045 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_push_goto_label(thd, &(yyvsp[-1].ident_sys))))
MYSQL_YYABORT;
(yyval.lex_str)= (yyvsp[-1].ident_sys);
}
-#line 51192 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51499 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3692: /* opt_exception_clause: _empty */
-#line 18749 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3724: /* opt_exception_clause: _empty */
+#line 19053 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 0; }
-#line 51198 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51505 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3693: /* opt_exception_clause: EXCEPTION_ORACLE_SYM exception_handlers */
-#line 18750 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3725: /* opt_exception_clause: EXCEPTION_ORACLE_SYM exception_handlers */
+#line 19054 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[0].num); }
-#line 51204 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51511 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3694: /* exception_handlers: exception_handler */
-#line 18754 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3726: /* exception_handlers: exception_handler */
+#line 19058 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= 1; }
-#line 51210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51517 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3695: /* exception_handlers: exception_handlers exception_handler */
-#line 18755 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3727: /* exception_handlers: exception_handlers exception_handler */
+#line 19059 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.num)= (yyvsp[-1].num) + 1; }
-#line 51216 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51523 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3696: /* $@264: %empty */
-#line 18760 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3728: /* $@267: %empty */
+#line 19064 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_handler_declaration_init(thd, sp_handler::EXIT)))
MYSQL_YYABORT;
}
-#line 51225 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51532 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3697: /* exception_handler: WHEN_SYM $@264 sp_hcond_list THEN_SYM sp_proc_stmts1_implicit_block */
-#line 18767 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3729: /* exception_handler: WHEN_SYM $@267 sp_hcond_list THEN_SYM sp_proc_stmts1_implicit_block */
+#line 19071 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_handler_declaration_finalize(thd, sp_handler::EXIT)))
MYSQL_YYABORT;
}
-#line 51234 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51541 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3698: /* sp_no_param: _empty */
-#line 18775 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3730: /* sp_no_param: _empty */
+#line 19079 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->m_param_begin= Lex->sphead->m_param_end=
YYLIP->get_cpp_tok_start() + 1;
}
-#line 51243 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51550 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3703: /* opt_sp_name: _empty */
-#line 18793 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3735: /* opt_trailing_sp_name: _empty */
+#line 19097 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spname)= NULL; }
-#line 51249 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51556 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3704: /* opt_sp_name: sp_name */
-#line 18794 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3736: /* opt_trailing_sp_name: sp_name */
+#line 19098 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spname)= (yyvsp[0].spname); }
-#line 51255 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51562 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3705: /* opt_package_routine_end_name: _empty */
-#line 18799 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3737: /* opt_package_routine_end_name: _empty */
+#line 19103 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= null_clex_str; }
-#line 51261 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51568 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3706: /* opt_package_routine_end_name: ident */
-#line 18800 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3738: /* opt_package_routine_end_name: ident */
+#line 19104 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.lex_str)= (yyvsp[0].ident_sys); }
-#line 51267 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51574 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3709: /* sp_instr_addr: %empty */
-#line 18809 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3741: /* sp_instr_addr: %empty */
+#line 19113 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.sp_instr_addr)= Lex->sphead->instructions(); }
-#line 51273 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51580 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3710: /* $@265: %empty */
-#line 18813 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3742: /* $@268: %empty */
+#line 19117 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_block_init(thd);
}
-#line 51281 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51588 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3711: /* $@266: %empty */
-#line 18817 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3743: /* $@269: %empty */
+#line 19121 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
MYSQL_YYABORT;
}
-#line 51290 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51597 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3712: /* $@267: %empty */
-#line 18823 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3744: /* $@270: %empty */
+#line 19127 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-3].spblock).hndlrs+= (yyvsp[0].spblock_handlers).hndlrs;
if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-3].spblock))))
MYSQL_YYABORT;
}
-#line 51300 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3714: /* create_package_chistic: COMMENT_SYM TEXT_STRING_sys */
-#line 18833 "/home/buildbot/git/sql/sql_yacc.yy"
- { Lex->sp_chistics.comment= (yyvsp[0].lex_str); }
-#line 51306 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3715: /* create_package_chistic: sp_suid */
-#line 18835 "/home/buildbot/git/sql/sql_yacc.yy"
- { Lex->sp_chistics.suid= (yyvsp[0].sp_suid); }
-#line 51312 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51607 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3716: /* create_package_chistics: create_package_chistic */
-#line 18839 "/home/buildbot/git/sql/sql_yacc.yy"
- {}
-#line 51318 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3717: /* create_package_chistics: create_package_chistics create_package_chistic */
-#line 18840 "/home/buildbot/git/sql/sql_yacc.yy"
- { }
-#line 51324 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3719: /* opt_create_package_chistics: create_package_chistics */
-#line 18845 "/home/buildbot/git/sql/sql_yacc.yy"
- { }
-#line 51330 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ case 3748: /* package_implementation_declare_section_list: package_implementation_declare_section_list1 package_implementation_declare_section_list2 */
+#line 19143 "/home/buildbot/git/sql/sql_yacc.yy"
+ { (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
+#line 51613 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3720: /* $@268: %empty */
-#line 18849 "/home/buildbot/git/sql/sql_yacc.yy"
- { Lex->sp_chistics.init(); }
-#line 51336 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+ case 3749: /* package_implementation_declare_section: package_implementation_declare_section_list */
+#line 19148 "/home/buildbot/git/sql/sql_yacc.yy"
+ {
+ /*
+ Add a jump "end of declarations -> start of exceptions"
+ (over the executable sectition).
+ */
+ if (Lex->sp_block_with_exceptions_finalize_declarations(thd))
+ MYSQL_YYABORT;
+ }
+#line 51626 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3722: /* package_implementation_executable_section: END */
-#line 18856 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3750: /* package_implementation_executable_section: END */
+#line 19160 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ /*
+ Backpatch the jump generated in
+ package_implementation_declare_section
+ and generate a backward jump:
+ "end of exceptions -> start of the executable section".
+ */
if (unlikely(Lex->sp_block_with_exceptions_add_empty(thd)))
MYSQL_YYABORT;
(yyval.spblock_handlers).init(0);
}
-#line 51346 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3723: /* package_implementation_executable_section: BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END */
-#line 18861 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3751: /* package_implementation_executable_section: BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END */
+#line 19171 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock_handlers)= (yyvsp[-1].spblock_handlers); }
-#line 51352 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51648 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3726: /* package_implementation_declare_section: package_implementation_declare_section_list1 package_implementation_declare_section_list2 */
-#line 18873 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3753: /* package_implementation_declare_section_list1: package_implementation_declare_section_list1 package_implementation_item_declaration */
+#line 19181 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
-#line 51358 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3728: /* package_implementation_declare_section_list1: package_implementation_declare_section_list1 package_implementation_item_declaration */
-#line 18880 "/home/buildbot/git/sql/sql_yacc.yy"
- { (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
-#line 51364 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51654 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3730: /* package_implementation_declare_section_list2: package_implementation_declare_section_list2 package_implementation_routine_definition */
-#line 18887 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3755: /* package_implementation_declare_section_list2: package_implementation_declare_section_list2 package_implementation_routine_definition */
+#line 19188 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock).join((yyvsp[-1].spblock), (yyvsp[0].spblock)); }
-#line 51370 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51660 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3731: /* package_routine_lex: %empty */
-#line 18891 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3756: /* $@271: %empty */
+#line 19194 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(!((yyval.lex)= new (thd->mem_root)
- sp_lex_local(thd, thd->lex))))
+ LEX *lex= thd->lex->package_routine_start(thd,
+ &sp_handler_package_function, (yyvsp[0].ident_sys));
+ if (!lex)
MYSQL_YYABORT;
- thd->m_parser_state->m_yacc.reset_before_substatement();
+ thd->lex= lex;
}
-#line 51381 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3732: /* $@269: %empty */
-#line 18902 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- DBUG_ASSERT((yyvsp[-2].lex)->sphead->get_package());
- (yyvsp[-1].lex)->sql_command= SQLCOM_CREATE_FUNCTION;
- sp_name *spname= (yyvsp[-2].lex)->make_sp_name_package_routine(thd, &(yyvsp[0].ident_sys));
- if (unlikely(!spname))
- MYSQL_YYABORT;
- thd->lex= (yyvsp[-1].lex);
- if (unlikely(!(yyvsp[-1].lex)->make_sp_head_no_recursive(thd, spname,
- &sp_handler_package_function,
- NOT_AGGREGATE)))
- MYSQL_YYABORT;
- (yyvsp[-2].lex)->sphead->get_package()->m_current_routine= (yyvsp[-1].lex);
- (void) is_native_function_with_warn(thd, &(yyvsp[0].ident_sys));
- }
-#line 51400 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51672 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3733: /* package_specification_function: remember_lex package_routine_lex ident $@269 opt_sp_parenthesized_fdparam_list RETURN_ORACLE_SYM sf_return_type sp_c_chistics */
-#line 18919 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3757: /* package_specification_function: remember_lex ident $@271 sf_parameters sf_returned_type_clause sp_c_chistics */
+#line 19204 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyval.lex)= thd->lex;
sp_head *sp= thd->lex->sphead;
sp->restore_thd_mem_root(thd);
- thd->lex= (yyvsp[-7].lex);
- (yyval.lex)= (yyvsp[-6].lex);
+ thd->lex= (yyvsp[-5].lex);
}
-#line 51411 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51683 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3734: /* $@270: %empty */
-#line 18929 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3758: /* $@272: %empty */
+#line 19214 "/home/buildbot/git/sql/sql_yacc.yy"
{
- DBUG_ASSERT((yyvsp[-2].lex)->sphead->get_package());
- (yyvsp[-1].lex)->sql_command= SQLCOM_CREATE_PROCEDURE;
- sp_name *spname= (yyvsp[-2].lex)->make_sp_name_package_routine(thd, &(yyvsp[0].ident_sys));
- if (unlikely(!spname))
+ LEX *lex= thd->lex->package_routine_start(thd,
+ &sp_handler_package_procedure, (yyvsp[0].ident_sys));
+ if (!lex)
MYSQL_YYABORT;
- thd->lex= (yyvsp[-1].lex);
- if (unlikely(!(yyvsp[-1].lex)->make_sp_head_no_recursive(thd, spname,
- &sp_handler_package_procedure,
- DEFAULT_AGGREGATE)))
- MYSQL_YYABORT;
- (yyvsp[-2].lex)->sphead->get_package()->m_current_routine= (yyvsp[-1].lex);
+ thd->lex= lex;
}
-#line 51429 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51695 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3735: /* package_specification_procedure: remember_lex package_routine_lex ident $@270 opt_sp_parenthesized_pdparam_list sp_c_chistics */
-#line 18944 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3759: /* package_specification_procedure: remember_lex ident $@272 sp_parameters sp_c_chistics */
+#line 19223 "/home/buildbot/git/sql/sql_yacc.yy"
{
+ (yyval.lex)= thd->lex;
sp_head *sp= thd->lex->sphead;
sp->restore_thd_mem_root(thd);
- thd->lex= (yyvsp[-5].lex);
- (yyval.lex)= (yyvsp[-4].lex);
+ thd->lex= (yyvsp[-4].lex);
}
-#line 51440 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51706 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3736: /* package_implementation_routine_definition: FUNCTION_SYM package_specification_function package_implementation_function_body ';' */
-#line 18956 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3760: /* package_implementation_routine_definition: FUNCTION_SYM package_specification_function package_implementation_function_body ';' */
+#line 19235 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg= Lex->get_sp_package();
if (unlikely(pkg->add_routine_implementation((yyvsp[-2].lex))))
@@ -51448,11 +51714,11 @@ yyreduce:
pkg->m_current_routine= NULL;
(yyval.spblock).init();
}
-#line 51452 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51718 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3737: /* package_implementation_routine_definition: PROCEDURE_SYM package_specification_procedure package_implementation_procedure_body ';' */
-#line 18965 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3761: /* package_implementation_routine_definition: PROCEDURE_SYM package_specification_procedure package_implementation_procedure_body ';' */
+#line 19244 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg= Lex->get_sp_package();
if (unlikely(pkg->add_routine_implementation((yyvsp[-2].lex))))
@@ -51460,17 +51726,17 @@ yyreduce:
pkg->m_current_routine= NULL;
(yyval.spblock).init();
}
-#line 51464 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51730 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3738: /* package_implementation_routine_definition: package_specification_element */
-#line 18972 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3762: /* package_implementation_routine_definition: package_specification_element */
+#line 19251 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock).init(); }
-#line 51470 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51736 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3739: /* $@271: %empty */
-#line 18978 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3763: /* $@273: %empty */
+#line 19257 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg= Lex->get_sp_package();
sp_head *sp= pkg->m_current_routine->sphead;
@@ -51479,22 +51745,22 @@ yyreduce:
sp->set_c_chistics(thd->lex->sp_chistics);
sp->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51483 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51749 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3740: /* package_implementation_function_body: sp_tail_is remember_lex $@271 sp_body opt_package_routine_end_name */
-#line 18987 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3764: /* package_implementation_function_body: sp_tail_is remember_lex $@273 sp_package_function_body opt_package_routine_end_name */
+#line 19266 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(thd->lex->sp_body_finalize_function(thd) ||
thd->lex->sphead->check_package_routine_end_name((yyvsp[0].lex_str))))
MYSQL_YYABORT;
thd->lex= (yyvsp[-3].lex);
}
-#line 51494 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51760 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3741: /* $@272: %empty */
-#line 18997 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3765: /* $@274: %empty */
+#line 19276 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg= Lex->get_sp_package();
sp_head *sp= pkg->m_current_routine->sphead;
@@ -51503,435 +51769,373 @@ yyreduce:
sp->set_c_chistics(thd->lex->sp_chistics);
sp->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51507 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51773 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3742: /* package_implementation_procedure_body: sp_tail_is remember_lex $@272 sp_body opt_package_routine_end_name */
-#line 19006 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3766: /* package_implementation_procedure_body: sp_tail_is remember_lex $@274 sp_package_procedure_body opt_package_routine_end_name */
+#line 19285 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(thd->lex->sp_body_finalize_procedure(thd) ||
thd->lex->sphead->check_package_routine_end_name((yyvsp[0].lex_str))))
MYSQL_YYABORT;
thd->lex= (yyvsp[-3].lex);
}
-#line 51518 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51784 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3748: /* package_specification_element: FUNCTION_SYM package_specification_function ';' */
-#line 19031 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3771: /* package_specification_element: FUNCTION_SYM package_specification_function ';' */
+#line 19306 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg= Lex->get_sp_package();
if (unlikely(pkg->add_routine_declaration((yyvsp[-1].lex))))
MYSQL_YYABORT;
pkg->m_current_routine= NULL;
}
-#line 51529 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51795 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3749: /* package_specification_element: PROCEDURE_SYM package_specification_procedure ';' */
-#line 19038 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3772: /* package_specification_element: PROCEDURE_SYM package_specification_procedure ';' */
+#line 19313 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg= Lex->get_sp_package();
if (unlikely(pkg->add_routine_declaration((yyvsp[-1].lex))))
MYSQL_YYABORT;
pkg->m_current_routine= NULL;
}
-#line 51540 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51806 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3750: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars optionally_qualified_column_ident PERCENT_ORACLE_SYM TYPE_SYM sp_opt_default */
-#line 19050 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3773: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars optionally_qualified_column_ident PERCENT_ORACLE_SYM TYPE_SYM sp_opt_default */
+#line 19328 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(thd, (yyvsp[-4].num), (yyvsp[-3].qualified_column_ident), (yyvsp[0].item))))
+ if (unlikely(Lex->sp_variable_declarations_with_ref_finalize(thd, (yyvsp[-4].num), (yyvsp[-3].qualified_column_ident),
+ (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-4].num));
}
-#line 51550 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51817 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3751: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars optionally_qualified_column_ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM sp_opt_default */
-#line 19058 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3774: /* sp_decl_variable_list_anchored: sp_decl_idents_init_vars optionally_qualified_column_ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM sp_opt_default */
+#line 19337 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(thd, (yyvsp[-4].num), (yyvsp[-3].qualified_column_ident), (yyvsp[0].item))))
+ if (unlikely(Lex->sp_variable_declarations_rowtype_finalize(thd, (yyvsp[-4].num),
+ (yyvsp[-3].qualified_column_ident), (yyvsp[0].expr_and_query_str).expr, (yyvsp[0].expr_and_query_str).expr_str)))
MYSQL_YYABORT;
(yyval.spblock).init_using_vars((yyvsp[-4].num));
}
-#line 51560 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51828 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3752: /* sp_param_name_and_mode: sp_param_name sp_opt_inout */
-#line 19067 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3775: /* sp_param_name_and_mode: sp_param_name sp_opt_inout */
+#line 19347 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-1].spvar)->mode= (yyvsp[0].spvar_mode);
(yyval.spvar)= (yyvsp[-1].spvar);
}
-#line 51569 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51837 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3753: /* sp_param: sp_param_name_and_mode field_type */
-#line 19075 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3776: /* sp_param: sp_param_name_and_mode field_type */
+#line 19355 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_param_fill_definition((yyval.spvar)= (yyvsp[-1].spvar), (yyvsp[0].Lex_field_type))))
MYSQL_YYABORT;
}
-#line 51578 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3754: /* sp_param: sp_param_name_and_mode ROW_SYM row_type_body */
-#line 19080 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3777: /* sp_param: sp_param_name_and_mode ROW_SYM row_type_body */
+#line 19360 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_row(thd, (yyval.spvar)= (yyvsp[-2].spvar), (yyvsp[0].spvar_definition_list))))
MYSQL_YYABORT;
}
-#line 51587 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51855 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3756: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident '.' ident PERCENT_ORACLE_SYM TYPE_SYM */
-#line 19089 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3779: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident '.' ident PERCENT_ORACLE_SYM TYPE_SYM */
+#line 19369 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_type_reference(thd, (yyval.spvar)= (yyvsp[-5].spvar), (yyvsp[-4].ident_sys), (yyvsp[-2].ident_sys))))
MYSQL_YYABORT;
}
-#line 51596 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51864 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3757: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident '.' ident '.' ident PERCENT_ORACLE_SYM TYPE_SYM */
-#line 19094 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3780: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident '.' ident '.' ident PERCENT_ORACLE_SYM TYPE_SYM */
+#line 19374 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_type_reference(thd, (yyval.spvar)= (yyvsp[-7].spvar), (yyvsp[-6].ident_sys), (yyvsp[-4].ident_sys), (yyvsp[-2].ident_sys))))
MYSQL_YYABORT;
}
-#line 51605 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51873 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3758: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM */
-#line 19099 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3781: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM */
+#line 19379 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_table_rowtype_reference(thd, (yyval.spvar)= (yyvsp[-3].spvar), (yyvsp[-2].ident_sys))))
MYSQL_YYABORT;
}
-#line 51614 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51882 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3759: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident '.' ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM */
-#line 19104 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3782: /* sp_param_anchored: sp_param_name_and_mode sp_decl_ident '.' ident PERCENT_ORACLE_SYM ROWTYPE_ORACLE_SYM */
+#line 19384 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->spvar_fill_table_rowtype_reference(thd, (yyval.spvar)= (yyvsp[-5].spvar), (yyvsp[-4].ident_sys), (yyvsp[-2].ident_sys))))
MYSQL_YYABORT;
}
-#line 51623 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51891 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3760: /* $@273: %empty */
-#line 19113 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3783: /* $@275: %empty */
+#line 19393 "/home/buildbot/git/sql/sql_yacc.yy"
{
LEX *lex= thd->lex;
lex->sphead->set_c_chistics(lex->sp_chistics);
lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51633 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51901 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3761: /* sf_c_chistics_and_body_standalone: sp_c_chistics $@273 sp_tail_is sp_body force_lookahead */
-#line 19119 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3784: /* sf_c_chistics_and_body_standalone: sp_c_chistics $@275 sp_tail_is sp_body force_lookahead */
+#line 19399 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_body_finalize_function(thd)))
MYSQL_YYABORT;
}
-#line 51642 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51910 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3762: /* $@274: %empty */
-#line 19127 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3785: /* $@276: %empty */
+#line 19407 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(!Lex->make_sp_head_no_recursive(thd, (yyvsp[0].spname),
&sp_handler_procedure,
DEFAULT_AGGREGATE)))
MYSQL_YYABORT;
}
-#line 51653 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51921 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3763: /* $@275: %empty */
-#line 19135 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3786: /* $@277: %empty */
+#line 19415 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sphead->set_c_chistics(Lex->sp_chistics);
Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51662 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51930 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3764: /* sp_tail_standalone: sp_name $@274 opt_sp_parenthesized_pdparam_list sp_c_chistics $@275 sp_tail_is sp_body opt_sp_name */
-#line 19142 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3787: /* sp_tail_standalone: sp_name $@276 opt_sp_parenthesized_pdparam_list sp_c_chistics $@277 sp_tail_is sp_body opt_trailing_sp_name */
+#line 19422 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_body_finalize_procedure_standalone(thd, (yyvsp[0].spname))))
MYSQL_YYABORT;
}
-#line 51671 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3765: /* drop_routine: DROP FUNCTION_SYM opt_if_exists ident '.' ident */
-#line 19150 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- if (Lex->stmt_drop_function((yyvsp[-3].object_ddl_options), (yyvsp[-2].ident_sys), (yyvsp[0].ident_sys)))
- MYSQL_YYABORT;
- }
-#line 51680 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3766: /* drop_routine: DROP FUNCTION_SYM opt_if_exists ident */
-#line 19155 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- if (Lex->stmt_drop_function((yyvsp[-1].object_ddl_options), (yyvsp[0].ident_sys)))
- MYSQL_YYABORT;
- }
-#line 51689 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3767: /* drop_routine: DROP PROCEDURE_SYM opt_if_exists sp_name */
-#line 19160 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- if (Lex->stmt_drop_procedure((yyvsp[-1].object_ddl_options), (yyvsp[0].spname)))
- MYSQL_YYABORT;
- }
-#line 51698 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3768: /* drop_routine: DROP PACKAGE_ORACLE_SYM opt_if_exists sp_name */
-#line 19165 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- LEX *lex= Lex;
- lex->set_command(SQLCOM_DROP_PACKAGE, (yyvsp[-1].object_ddl_options));
- if (unlikely(lex->sphead))
- my_yyabort_error((ER_SP_NO_DROP_SP, MYF(0), "PACKAGE"));
- lex->spname= (yyvsp[0].spname);
- }
-#line 51710 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51939 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3769: /* drop_routine: DROP PACKAGE_ORACLE_SYM BODY_ORACLE_SYM opt_if_exists sp_name */
-#line 19173 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- LEX *lex= Lex;
- lex->set_command(SQLCOM_DROP_PACKAGE_BODY, (yyvsp[-1].object_ddl_options));
- if (unlikely(lex->sphead))
- my_yyabort_error((ER_SP_NO_DROP_SP, MYF(0), "PACKAGE BODY"));
- lex->spname= (yyvsp[0].spname);
- }
-#line 51722 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3770: /* $@276: %empty */
-#line 19185 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3788: /* $@278: %empty */
+#line 19433 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_create_procedure_start((yyvsp[-3].object_ddl_options) | (yyvsp[0].object_ddl_options)))
MYSQL_YYABORT;
}
-#line 51731 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51948 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3771: /* create_routine: create_or_replace definer_opt PROCEDURE_SYM opt_if_not_exists $@276 sp_tail_standalone */
-#line 19190 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3789: /* create_routine: create_or_replace definer_opt PROCEDURE_SYM opt_if_not_exists $@278 sp_tail_standalone */
+#line 19438 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->stmt_create_routine_finalize();
}
-#line 51739 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51956 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3772: /* $@277: %empty */
-#line 19195 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3790: /* $@279: %empty */
+#line 19443 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_create_stored_function_start((yyvsp[-5].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-3].sp_aggregate_type), (yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 51748 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51965 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3773: /* create_routine: create_or_replace definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@277 opt_sp_parenthesized_fdparam_list RETURN_ORACLE_SYM sf_return_type sf_c_chistics_and_body_standalone opt_sp_name */
-#line 19203 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3791: /* create_routine: create_or_replace definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@279 sf_parameters sf_returned_type_clause sf_c_chistics_and_body_standalone opt_trailing_sp_name */
+#line 19451 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_create_stored_function_finalize_standalone((yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 51757 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51974 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3774: /* $@278: %empty */
-#line 19209 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3792: /* $@280: %empty */
+#line 19457 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_create_stored_function_start((yyvsp[-5].object_ddl_options) | (yyvsp[-1].object_ddl_options), (yyvsp[-3].sp_aggregate_type), (yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 51766 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51983 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3775: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@278 opt_sp_parenthesized_fdparam_list RETURN_ORACLE_SYM sf_return_type sf_c_chistics_and_body_standalone opt_sp_name */
-#line 19217 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3793: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists sp_name $@280 sf_parameters sf_returned_type_clause sf_c_chistics_and_body_standalone opt_trailing_sp_name */
+#line 19465 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_create_stored_function_finalize_standalone((yyvsp[0].spname)))
MYSQL_YYABORT;
}
-#line 51775 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 51992 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3776: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists ident RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys */
-#line 19223 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3794: /* create_routine: create_or_replace no_definer opt_aggregate FUNCTION_SYM opt_if_not_exists ident RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys */
+#line 19471 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (Lex->stmt_create_udf_function((yyvsp[-9].object_ddl_options) | (yyvsp[-5].object_ddl_options), (yyvsp[-7].sp_aggregate_type), (yyvsp[-4].ident_sys),
(Item_result) (yyvsp[-2].num), (yyvsp[0].lex_str)))
MYSQL_YYABORT;
}
-#line 51785 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52002 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3777: /* $@279: %empty */
-#line 19230 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3795: /* $@281: %empty */
+#line 19478 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg;
if (unlikely(!(pkg= Lex->
- create_package_start(thd,
- SQLCOM_CREATE_PACKAGE,
- &sp_handler_package_spec,
- (yyvsp[-1].spname), (yyvsp[-5].object_ddl_options) | (yyvsp[-2].object_ddl_options)))))
+ create_package_start(thd, &sp_handler_package_spec,
+ (yyvsp[-1].spname), (yyvsp[-5].object_ddl_options) | (yyvsp[-2].object_ddl_options),
+ Lex->sp_chistics))))
MYSQL_YYABORT;
- pkg->set_c_chistics(Lex->sp_chistics);
Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
}
-#line 51801 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52016 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3778: /* create_routine: create_or_replace definer_opt PACKAGE_ORACLE_SYM opt_if_not_exists sp_name opt_create_package_chistics_init $@279 sp_tail_is opt_package_specification_element_list END remember_end_opt opt_sp_name */
-#line 19244 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3796: /* create_routine: create_or_replace definer_opt sp_handler_package_spec opt_if_not_exists sp_name opt_create_package_chistics_init $@281 sp_tail_is opt_package_specification_element_list END remember_end_opt opt_trailing_sp_name */
+#line 19490 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->create_package_finalize(thd, (yyvsp[-7].spname), (yyvsp[0].spname), (yyvsp[-1].simple_string))))
MYSQL_YYABORT;
}
-#line 51810 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52025 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3779: /* $@280: %empty */
-#line 19250 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3797: /* $@282: %empty */
+#line 19496 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_package *pkg;
if (unlikely(!(pkg= Lex->
- create_package_start(thd,
- SQLCOM_CREATE_PACKAGE_BODY,
- &sp_handler_package_body,
- (yyvsp[-1].spname), (yyvsp[-6].object_ddl_options) | (yyvsp[-2].object_ddl_options)))))
+ create_package_start(thd, &sp_handler_package_body,
+ (yyvsp[-1].spname), (yyvsp[-5].object_ddl_options) | (yyvsp[-2].object_ddl_options),
+ Lex->sp_chistics))))
MYSQL_YYABORT;
- pkg->set_c_chistics(Lex->sp_chistics);
Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start());
Lex->sp_block_init(thd);
}
-#line 51827 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52040 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3780: /* $@281: %empty */
-#line 19264 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3798: /* $@283: %empty */
+#line 19509 "/home/buildbot/git/sql/sql_yacc.yy"
{
- if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
+ (yyvsp[-1].spblock).hndlrs+= (yyvsp[0].spblock_handlers).hndlrs;
+ if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-1].spblock))))
MYSQL_YYABORT;
}
-#line 51836 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52050 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3781: /* $@282: %empty */
-#line 19269 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3799: /* create_routine: create_or_replace definer_opt sp_handler_package_body opt_if_not_exists sp_name opt_create_package_chistics_init $@282 sp_tail_is package_implementation_declare_section package_implementation_executable_section $@283 remember_end_opt opt_trailing_sp_name */
+#line 19515 "/home/buildbot/git/sql/sql_yacc.yy"
{
- (yyvsp[-2].spblock).hndlrs+= (yyvsp[0].spblock_handlers).hndlrs;
- if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-2].spblock))))
+ if (unlikely(Lex->create_package_finalize(thd, (yyvsp[-8].spname), (yyvsp[0].spname), (yyvsp[-1].simple_string))))
MYSQL_YYABORT;
}
-#line 51846 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52059 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3782: /* create_routine: create_or_replace definer_opt PACKAGE_ORACLE_SYM BODY_ORACLE_SYM opt_if_not_exists sp_name opt_create_package_chistics_init $@280 sp_tail_is package_implementation_declare_section $@281 package_implementation_executable_section $@282 remember_end_opt opt_sp_name */
-#line 19275 "/home/buildbot/git/sql/sql_yacc.yy"
- {
- if (unlikely(Lex->create_package_finalize(thd, (yyvsp[-9].spname), (yyvsp[0].spname), (yyvsp[-1].simple_string))))
- MYSQL_YYABORT;
- }
-#line 51855 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
- break;
-
- case 3783: /* opt_sp_decl_body_list: _empty */
-#line 19283 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3800: /* opt_sp_decl_body_list: _empty */
+#line 19526 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spblock).init();
}
-#line 51863 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52067 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3784: /* opt_sp_decl_body_list: sp_decl_body_list */
-#line 19286 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3801: /* opt_sp_decl_body_list: sp_decl_body_list */
+#line 19529 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock)= (yyvsp[0].spblock); }
-#line 51869 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52073 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3785: /* $@283: %empty */
-#line 19291 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3802: /* $@284: %empty */
+#line 19534 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sphead->sp_add_instr_cpush_for_cursors(thd, Lex->spcont)))
MYSQL_YYABORT;
}
-#line 51878 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52082 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3786: /* sp_decl_body_list: sp_decl_non_handler_list $@283 opt_sp_decl_handler_list */
-#line 19296 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3803: /* sp_decl_body_list: sp_decl_non_handler_list $@284 opt_sp_decl_handler_list */
+#line 19539 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spblock).join((yyvsp[-2].spblock), (yyvsp[0].spblock));
}
-#line 51886 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52090 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3788: /* sp_decl_non_handler_list: sp_decl_non_handler ';' */
-#line 19303 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3805: /* sp_decl_non_handler_list: sp_decl_non_handler ';' */
+#line 19546 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock)= (yyvsp[-1].spblock); }
-#line 51892 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52096 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3789: /* sp_decl_non_handler_list: sp_decl_non_handler_list sp_decl_non_handler ';' */
-#line 19305 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3806: /* sp_decl_non_handler_list: sp_decl_non_handler_list sp_decl_non_handler ';' */
+#line 19548 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spblock).join((yyvsp[-2].spblock), (yyvsp[-1].spblock));
}
-#line 51900 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52104 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3790: /* sp_decl_handler_list: sp_decl_handler ';' */
-#line 19311 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3807: /* sp_decl_handler_list: sp_decl_handler ';' */
+#line 19554 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock)= (yyvsp[-1].spblock); }
-#line 51906 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52110 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3791: /* sp_decl_handler_list: sp_decl_handler_list sp_decl_handler ';' */
-#line 19313 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3808: /* sp_decl_handler_list: sp_decl_handler_list sp_decl_handler ';' */
+#line 19556 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyval.spblock).join((yyvsp[-2].spblock), (yyvsp[-1].spblock));
}
-#line 51914 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52118 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3792: /* opt_sp_decl_handler_list: _empty */
-#line 19319 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3809: /* opt_sp_decl_handler_list: _empty */
+#line 19562 "/home/buildbot/git/sql/sql_yacc.yy"
{ (yyval.spblock).init(); }
-#line 51920 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52124 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3795: /* sp_decl_non_handler: ident_directly_assignable CONDITION_SYM FOR_SYM sp_cond */
-#line 19326 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3812: /* sp_decl_non_handler: ident_directly_assignable CONDITION_SYM FOR_SYM sp_cond */
+#line 19569 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->spcont->declare_condition(thd, &(yyvsp[-3].ident_sys), (yyvsp[0].spcondvalue))))
MYSQL_YYABORT;
(yyval.spblock).vars= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0;
(yyval.spblock).conds= 1;
}
-#line 51931 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52135 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3796: /* sp_decl_non_handler: ident_directly_assignable EXCEPTION_ORACLE_SYM */
-#line 19333 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3813: /* sp_decl_non_handler: ident_directly_assignable EXCEPTION_ORACLE_SYM */
+#line 19576 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_condition_value *spcond= new (thd->mem_root)
sp_condition_value_user_defined();
@@ -51941,19 +52145,19 @@ yyreduce:
(yyval.spblock).vars= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0;
(yyval.spblock).conds= 1;
}
-#line 51945 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52149 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3797: /* $@284: %empty */
-#line 19343 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3814: /* $@285: %empty */
+#line 19586 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_block_init(thd);
}
-#line 51953 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52157 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3798: /* sp_decl_non_handler: CURSOR_SYM ident_directly_assignable $@284 opt_parenthesized_cursor_formal_parameters IS sp_cursor_stmt */
-#line 19348 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3815: /* sp_decl_non_handler: CURSOR_SYM ident_directly_assignable $@285 opt_parenthesized_cursor_formal_parameters IS sp_cursor_stmt */
+#line 19591 "/home/buildbot/git/sql/sql_yacc.yy"
{
sp_pcontext *param_ctx= Lex->spcont;
if (unlikely(Lex->sp_block_finalize(thd)))
@@ -51963,69 +52167,69 @@ yyreduce:
(yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).hndlrs= 0;
(yyval.spblock).curs= 1;
}
-#line 51967 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52171 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3804: /* sp_proc_stmt: labels_declaration_oracle sp_labelable_stmt */
-#line 19366 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3821: /* sp_proc_stmt: labels_declaration_oracle sp_labelable_stmt */
+#line 19609 "/home/buildbot/git/sql/sql_yacc.yy"
{}
-#line 51973 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52177 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3815: /* sp_labelable_stmt: NULL_SYM */
-#line 19380 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3832: /* sp_labelable_stmt: NULL_SYM */
+#line 19623 "/home/buildbot/git/sql/sql_yacc.yy"
{ }
-#line 51979 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52183 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3820: /* $@285: %empty */
-#line 19394 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3837: /* $@286: %empty */
+#line 19637 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_block_init(thd, &(yyvsp[-1].lex_str));
if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
MYSQL_YYABORT;
}
-#line 51989 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52193 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3821: /* sp_labeled_block: sp_block_label BEGIN_ORACLE_SYM $@285 sp_block_statements_and_exceptions END sp_opt_label */
-#line 19402 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3838: /* sp_labeled_block: sp_block_label BEGIN_ORACLE_SYM $@286 sp_block_statements_and_exceptions END sp_opt_label */
+#line 19645 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_finalize(thd, Lex_spblock((yyvsp[-2].spblock_handlers)), &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 51998 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52202 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3822: /* $@286: %empty */
-#line 19408 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3839: /* $@287: %empty */
+#line 19651 "/home/buildbot/git/sql/sql_yacc.yy"
{
Lex->sp_block_init(thd, &(yyvsp[-1].lex_str));
}
-#line 52006 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52210 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3823: /* $@287: %empty */
-#line 19412 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3840: /* $@288: %empty */
+#line 19655 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
MYSQL_YYABORT;
}
-#line 52015 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52219 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3824: /* sp_labeled_block: sp_block_label DECLARE_ORACLE_SYM $@286 opt_sp_decl_body_list $@287 BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END sp_opt_label */
-#line 19420 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3841: /* sp_labeled_block: sp_block_label DECLARE_ORACLE_SYM $@287 opt_sp_decl_body_list $@288 BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END sp_opt_label */
+#line 19663 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-5].spblock).hndlrs+= (yyvsp[-2].spblock_handlers).hndlrs;
if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-5].spblock), &(yyvsp[0].lex_str))))
MYSQL_YYABORT;
}
-#line 52025 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52229 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3827: /* $@288: %empty */
-#line 19434 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3844: /* $@289: %empty */
+#line 19677 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
@@ -52033,68 +52237,68 @@ yyreduce:
if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
MYSQL_YYABORT;
}
-#line 52037 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52241 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3828: /* sp_unlabeled_block: BEGIN_ORACLE_SYM opt_not_atomic $@288 sp_block_statements_and_exceptions END */
-#line 19443 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3845: /* sp_unlabeled_block: BEGIN_ORACLE_SYM opt_not_atomic $@289 sp_block_statements_and_exceptions END */
+#line 19686 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_finalize(thd, Lex_spblock((yyvsp[-1].spblock_handlers)))))
MYSQL_YYABORT;
}
-#line 52046 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52250 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3829: /* $@289: %empty */
-#line 19448 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3846: /* $@290: %empty */
+#line 19691 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->maybe_start_compound_statement(thd)))
MYSQL_YYABORT;
Lex->sp_block_init(thd);
}
-#line 52056 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52260 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3830: /* $@290: %empty */
-#line 19454 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3847: /* $@291: %empty */
+#line 19697 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_with_exceptions_finalize_declarations(thd)))
MYSQL_YYABORT;
}
-#line 52065 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52269 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3831: /* sp_unlabeled_block: DECLARE_ORACLE_SYM $@289 opt_sp_decl_body_list $@290 BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END */
-#line 19461 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3848: /* sp_unlabeled_block: DECLARE_ORACLE_SYM $@290 opt_sp_decl_body_list $@291 BEGIN_ORACLE_SYM sp_block_statements_and_exceptions END */
+#line 19704 "/home/buildbot/git/sql/sql_yacc.yy"
{
(yyvsp[-4].spblock).hndlrs+= (yyvsp[-1].spblock_handlers).hndlrs;
if (unlikely(Lex->sp_block_finalize(thd, (yyvsp[-4].spblock))))
MYSQL_YYABORT;
}
-#line 52075 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52279 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3832: /* $@291: %empty */
-#line 19471 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3849: /* $@292: %empty */
+#line 19714 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_with_exceptions_finalize_executable_section(thd, (yyvsp[-1].sp_instr_addr))))
MYSQL_YYABORT;
}
-#line 52084 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52288 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
- case 3833: /* sp_block_statements_and_exceptions: sp_instr_addr sp_proc_stmts $@291 opt_exception_clause */
-#line 19476 "/home/buildbot/git/sql/sql_yacc.yy"
+ case 3850: /* sp_block_statements_and_exceptions: sp_instr_addr sp_proc_stmts $@292 opt_exception_clause */
+#line 19719 "/home/buildbot/git/sql/sql_yacc.yy"
{
if (unlikely(Lex->sp_block_with_exceptions_finalize_exceptions(thd, (yyvsp[-3].sp_instr_addr), (yyvsp[0].num))))
MYSQL_YYABORT;
(yyval.spblock_handlers).init((yyvsp[0].num));
}
-#line 52094 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52298 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
break;
-#line 52098 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
+#line 52302 "/home/buildbot/git/mkdist/sql/yy_oracle.cc"
default: break;
}
diff --git a/sql/yy_oracle.hh b/sql/yy_oracle.hh
index 9c7af745..61d5561e 100644
--- a/sql/yy_oracle.hh
+++ b/sql/yy_oracle.hh
@@ -729,95 +729,99 @@ extern int ORAdebug;
SONAME_SYM = 930, /* SONAME_SYM */
SOUNDS_SYM = 931, /* SOUNDS_SYM */
SOURCE_SYM = 932, /* SOURCE_SYM */
- SQL_BUFFER_RESULT = 933, /* SQL_BUFFER_RESULT */
- SQL_CACHE_SYM = 934, /* SQL_CACHE_SYM */
- SQL_CALC_FOUND_ROWS = 935, /* SQL_CALC_FOUND_ROWS */
- SQL_NO_CACHE_SYM = 936, /* SQL_NO_CACHE_SYM */
- SQL_THREAD = 937, /* SQL_THREAD */
- STAGE_SYM = 938, /* STAGE_SYM */
- STARTS_SYM = 939, /* STARTS_SYM */
- START_SYM = 940, /* START_SYM */
- STATEMENT_SYM = 941, /* STATEMENT_SYM */
- STATUS_SYM = 942, /* STATUS_SYM */
- STOP_SYM = 943, /* STOP_SYM */
- STORAGE_SYM = 944, /* STORAGE_SYM */
- STORED_SYM = 945, /* STORED_SYM */
- STRING_SYM = 946, /* STRING_SYM */
- SUBCLASS_ORIGIN_SYM = 947, /* SUBCLASS_ORIGIN_SYM */
- SUBDATE_SYM = 948, /* SUBDATE_SYM */
- SUBJECT_SYM = 949, /* SUBJECT_SYM */
- SUBPARTITIONS_SYM = 950, /* SUBPARTITIONS_SYM */
- SUBPARTITION_SYM = 951, /* SUBPARTITION_SYM */
- SUPER_SYM = 952, /* SUPER_SYM */
- SUSPEND_SYM = 953, /* SUSPEND_SYM */
- SWAPS_SYM = 954, /* SWAPS_SYM */
- SWITCHES_SYM = 955, /* SWITCHES_SYM */
- SYSTEM = 956, /* SYSTEM */
- SYSTEM_TIME_SYM = 957, /* SYSTEM_TIME_SYM */
- TABLES = 958, /* TABLES */
- TABLESPACE = 959, /* TABLESPACE */
- TABLE_CHECKSUM_SYM = 960, /* TABLE_CHECKSUM_SYM */
- TABLE_NAME_SYM = 961, /* TABLE_NAME_SYM */
- TEMPORARY = 962, /* TEMPORARY */
- TEMPTABLE_SYM = 963, /* TEMPTABLE_SYM */
- TEXT_SYM = 964, /* TEXT_SYM */
- THAN_SYM = 965, /* THAN_SYM */
- TIES_SYM = 966, /* TIES_SYM */
- TIMESTAMP = 967, /* TIMESTAMP */
- TIMESTAMP_ADD = 968, /* TIMESTAMP_ADD */
- TIMESTAMP_DIFF = 969, /* TIMESTAMP_DIFF */
- TIME_SYM = 970, /* TIME_SYM */
- TRANSACTION_SYM = 971, /* TRANSACTION_SYM */
- TRANSACTIONAL_SYM = 972, /* TRANSACTIONAL_SYM */
- THREADS_SYM = 973, /* THREADS_SYM */
- TRIGGERS_SYM = 974, /* TRIGGERS_SYM */
- TRIM_ORACLE = 975, /* TRIM_ORACLE */
- TRUNCATE_SYM = 976, /* TRUNCATE_SYM */
- TYPE_SYM = 977, /* TYPE_SYM */
- UDF_RETURNS_SYM = 978, /* UDF_RETURNS_SYM */
- UNBOUNDED_SYM = 979, /* UNBOUNDED_SYM */
- UNCOMMITTED_SYM = 980, /* UNCOMMITTED_SYM */
- UNDEFINED_SYM = 981, /* UNDEFINED_SYM */
- UNDOFILE_SYM = 982, /* UNDOFILE_SYM */
- UNDO_BUFFER_SIZE_SYM = 983, /* UNDO_BUFFER_SIZE_SYM */
- UNICODE_SYM = 984, /* UNICODE_SYM */
- UNINSTALL_SYM = 985, /* UNINSTALL_SYM */
- UNKNOWN_SYM = 986, /* UNKNOWN_SYM */
- UNTIL_SYM = 987, /* UNTIL_SYM */
- UPGRADE_SYM = 988, /* UPGRADE_SYM */
- USER_SYM = 989, /* USER_SYM */
- USE_FRM = 990, /* USE_FRM */
- VALUE_SYM = 991, /* VALUE_SYM */
- VARCHAR2_MARIADB_SYM = 992, /* VARCHAR2_MARIADB_SYM */
- VARCHAR2_ORACLE_SYM = 993, /* VARCHAR2_ORACLE_SYM */
- VARIABLES = 994, /* VARIABLES */
- VERSIONING_SYM = 995, /* VERSIONING_SYM */
- VIA_SYM = 996, /* VIA_SYM */
- VIEW_SYM = 997, /* VIEW_SYM */
- VISIBLE_SYM = 998, /* VISIBLE_SYM */
- VIRTUAL_SYM = 999, /* VIRTUAL_SYM */
- WAIT_SYM = 1000, /* WAIT_SYM */
- WARNINGS = 1001, /* WARNINGS */
- WEEK_SYM = 1002, /* WEEK_SYM */
- WEIGHT_STRING_SYM = 1003, /* WEIGHT_STRING_SYM */
- WINDOW_SYM = 1004, /* WINDOW_SYM */
- WITHIN = 1005, /* WITHIN */
- WITHOUT = 1006, /* WITHOUT */
- WORK_SYM = 1007, /* WORK_SYM */
- WRAPPER_SYM = 1008, /* WRAPPER_SYM */
- WRITE_SYM = 1009, /* WRITE_SYM */
- X509_SYM = 1010, /* X509_SYM */
- XA_SYM = 1011, /* XA_SYM */
- XML_SYM = 1012, /* XML_SYM */
- YEAR_SYM = 1013, /* YEAR_SYM */
- CONDITIONLESS_JOIN = 1014, /* CONDITIONLESS_JOIN */
- ON_SYM = 1015, /* ON_SYM */
- PREC_BELOW_NOT = 1016, /* PREC_BELOW_NOT */
- SUBQUERY_AS_EXPR = 1017, /* SUBQUERY_AS_EXPR */
- PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 1018, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
- USER = 1019, /* USER */
- PREC_BELOW_CONTRACTION_TOKEN2 = 1020, /* PREC_BELOW_CONTRACTION_TOKEN2 */
- EMPTY_FROM_CLAUSE = 1021 /* EMPTY_FROM_CLAUSE */
+ SQL_AFTER_GTIDS_SYM = 933, /* SQL_AFTER_GTIDS_SYM */
+ SQL_BEFORE_GTIDS_SYM = 934, /* SQL_BEFORE_GTIDS_SYM */
+ SQL_BUFFER_RESULT = 935, /* SQL_BUFFER_RESULT */
+ SQL_CACHE_SYM = 936, /* SQL_CACHE_SYM */
+ SQL_CALC_FOUND_ROWS = 937, /* SQL_CALC_FOUND_ROWS */
+ SQL_NO_CACHE_SYM = 938, /* SQL_NO_CACHE_SYM */
+ SQL_THREAD = 939, /* SQL_THREAD */
+ STAGE_SYM = 940, /* STAGE_SYM */
+ STARTS_SYM = 941, /* STARTS_SYM */
+ START_SYM = 942, /* START_SYM */
+ STATEMENT_SYM = 943, /* STATEMENT_SYM */
+ STATUS_SYM = 944, /* STATUS_SYM */
+ STOP_SYM = 945, /* STOP_SYM */
+ STORAGE_SYM = 946, /* STORAGE_SYM */
+ STORED_SYM = 947, /* STORED_SYM */
+ STRING_SYM = 948, /* STRING_SYM */
+ SUBCLASS_ORIGIN_SYM = 949, /* SUBCLASS_ORIGIN_SYM */
+ SUBDATE_SYM = 950, /* SUBDATE_SYM */
+ SUBJECT_SYM = 951, /* SUBJECT_SYM */
+ SUBPARTITIONS_SYM = 952, /* SUBPARTITIONS_SYM */
+ SUBPARTITION_SYM = 953, /* SUBPARTITION_SYM */
+ SUPER_SYM = 954, /* SUPER_SYM */
+ SUSPEND_SYM = 955, /* SUSPEND_SYM */
+ SWAPS_SYM = 956, /* SWAPS_SYM */
+ SWITCHES_SYM = 957, /* SWITCHES_SYM */
+ SYSTEM = 958, /* SYSTEM */
+ SYSTEM_TIME_SYM = 959, /* SYSTEM_TIME_SYM */
+ TABLES = 960, /* TABLES */
+ TABLESPACE = 961, /* TABLESPACE */
+ TABLE_CHECKSUM_SYM = 962, /* TABLE_CHECKSUM_SYM */
+ TABLE_NAME_SYM = 963, /* TABLE_NAME_SYM */
+ TEMPORARY = 964, /* TEMPORARY */
+ TEMPTABLE_SYM = 965, /* TEMPTABLE_SYM */
+ TEXT_SYM = 966, /* TEXT_SYM */
+ THAN_SYM = 967, /* THAN_SYM */
+ TIES_SYM = 968, /* TIES_SYM */
+ TIMESTAMP = 969, /* TIMESTAMP */
+ TIMESTAMP_ADD = 970, /* TIMESTAMP_ADD */
+ TIMESTAMP_DIFF = 971, /* TIMESTAMP_DIFF */
+ TIME_SYM = 972, /* TIME_SYM */
+ TRANSACTION_SYM = 973, /* TRANSACTION_SYM */
+ TRANSACTIONAL_SYM = 974, /* TRANSACTIONAL_SYM */
+ THREADS_SYM = 975, /* THREADS_SYM */
+ TRIGGERS_SYM = 976, /* TRIGGERS_SYM */
+ TRIM_ORACLE = 977, /* TRIM_ORACLE */
+ TRUNCATE_SYM = 978, /* TRUNCATE_SYM */
+ TYPE_SYM = 979, /* TYPE_SYM */
+ UDF_RETURNS_SYM = 980, /* UDF_RETURNS_SYM */
+ UNBOUNDED_SYM = 981, /* UNBOUNDED_SYM */
+ UNCOMMITTED_SYM = 982, /* UNCOMMITTED_SYM */
+ UNDEFINED_SYM = 983, /* UNDEFINED_SYM */
+ UNDOFILE_SYM = 984, /* UNDOFILE_SYM */
+ UNDO_BUFFER_SIZE_SYM = 985, /* UNDO_BUFFER_SIZE_SYM */
+ UNICODE_SYM = 986, /* UNICODE_SYM */
+ UNINSTALL_SYM = 987, /* UNINSTALL_SYM */
+ UNKNOWN_SYM = 988, /* UNKNOWN_SYM */
+ UNTIL_SYM = 989, /* UNTIL_SYM */
+ UPGRADE_SYM = 990, /* UPGRADE_SYM */
+ USER_SYM = 991, /* USER_SYM */
+ USE_FRM = 992, /* USE_FRM */
+ VALIDATION_SYM = 993, /* VALIDATION_SYM */
+ VALUE_SYM = 994, /* VALUE_SYM */
+ VARCHAR2_MARIADB_SYM = 995, /* VARCHAR2_MARIADB_SYM */
+ VARCHAR2_ORACLE_SYM = 996, /* VARCHAR2_ORACLE_SYM */
+ VARIABLES = 997, /* VARIABLES */
+ VERSIONING_SYM = 998, /* VERSIONING_SYM */
+ VIA_SYM = 999, /* VIA_SYM */
+ VIEW_SYM = 1000, /* VIEW_SYM */
+ VISIBLE_SYM = 1001, /* VISIBLE_SYM */
+ VIRTUAL_SYM = 1002, /* VIRTUAL_SYM */
+ WAIT_SYM = 1003, /* WAIT_SYM */
+ WARNINGS = 1004, /* WARNINGS */
+ WEEK_SYM = 1005, /* WEEK_SYM */
+ WEIGHT_STRING_SYM = 1006, /* WEIGHT_STRING_SYM */
+ WINDOW_SYM = 1007, /* WINDOW_SYM */
+ WITHIN = 1008, /* WITHIN */
+ WITHOUT = 1009, /* WITHOUT */
+ WORK_SYM = 1010, /* WORK_SYM */
+ WRAPPER_SYM = 1011, /* WRAPPER_SYM */
+ WRITE_SYM = 1012, /* WRITE_SYM */
+ X509_SYM = 1013, /* X509_SYM */
+ XA_SYM = 1014, /* XA_SYM */
+ XML_SYM = 1015, /* XML_SYM */
+ YEAR_SYM = 1016, /* YEAR_SYM */
+ CONDITIONLESS_JOIN = 1017, /* CONDITIONLESS_JOIN */
+ ON_SYM = 1018, /* ON_SYM */
+ PREC_BELOW_NOT = 1019, /* PREC_BELOW_NOT */
+ SUBQUERY_AS_EXPR = 1020, /* SUBQUERY_AS_EXPR */
+ PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE = 1021, /* PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE */
+ USER = 1022, /* USER */
+ PREC_BELOW_SP_OBJECT_TYPE = 1023, /* PREC_BELOW_SP_OBJECT_TYPE */
+ PREC_BELOW_CONTRACTION_TOKEN2 = 1024, /* PREC_BELOW_CONTRACTION_TOKEN2 */
+ EMPTY_FROM_CLAUSE = 1025 /* EMPTY_FROM_CLAUSE */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -826,7 +830,7 @@ extern int ORAdebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 192 "/home/buildbot/git/sql/sql_yacc.yy"
+#line 195 "/home/buildbot/git/sql/sql_yacc.yy"
int num;
ulong ulong_num;
@@ -963,8 +967,13 @@ union YYSTYPE
enum Column_definition::enum_column_versioning vers_column_versioning;
enum plsql_cursor_attr_t plsql_cursor_attr;
privilege_t privilege;
+ struct
+ {
+ Item *expr;
+ LEX_CSTRING expr_str;
+ } expr_and_query_str;
-#line 968 "/home/buildbot/git/mkdist/sql/yy_oracle.hh"
+#line 977 "/home/buildbot/git/mkdist/sql/yy_oracle.hh"
};
typedef union YYSTYPE YYSTYPE;